$sel_mem_ids = array(); foreach ($dimensions as $dimension) { $dimension_id = $dimension['dimension_id']; if (isset($skipped_dimensions) && is_array($skipped_dimensions) && in_array($dimension_id, $skipped_dimensions) || !in_array($dimension_id, $enabled_dimensions)) { continue; } if (is_array(array_var($options, 'allowedDimensions')) && array_search($dimension_id, $options['allowedDimensions']) === false) { continue; } if (!array_var($options, 'allow_non_manageable') && !$dimension['is_manageable']) { continue; } $is_required = array_var($dimension, 'is_required'); $dimension_name = array_var($dimension, 'dimension_name'); Hook::fire("edit_dimension_name", array('dimension' => $dimension_id), $dimension_name); $custom_name = DimensionOptions::getOptionValue($dimension_id, 'custom_dimension_name'); $dimension_name = $custom_name && trim($custom_name) != "" ? $custom_name : $dimension_name; if ($is_required) { $dimension_name .= " *"; } if (isset($simulate_required) && is_array($simulate_required) && in_array($dimension_id, $simulate_required)) { $is_required = true; } $dimension_selected_members = array(); foreach ($selected_members as $selected_member) { if ($selected_member->getDimensionId() == $dimension_id) { $dimension_selected_members[] = $selected_member; } } $autocomplete_options = array(); $expgenid = gen_id();
function render_single_dimension_tree($dimension, $genid = null, $selected_members = array(), $options = array()) { if ($dimension instanceof Dimension) { $dimension_info = array('dimension_id' => $dimension->getId(), 'dimension_name' => $dimension->getName(), 'is_multiple' => $dimension->getAllowsMultipleSelection()); } else { $dimension_info = $dimension; } $custom_name = DimensionOptions::getOptionValue($dimension_info['dimension_id'], 'custom_dimension_name'); $dimension_info['dimension_name'] = $custom_name && trim($custom_name) != "" ? $custom_name : $dimension_info['dimension_name']; $dimension_id = $dimension_info['dimension_id']; if (is_null($genid)) { $genid = gen_id(); } $selected_members_json = json_encode($selected_members); if (!isset($options['component_id'])) { $component_id = "{$genid}-member-chooser-panel-{$dimension_id}"; } else { $component_id = $options['component_id']; } ?> <?php if (isset($options['use_ajax_member_tree']) && $options['use_ajax_member_tree']) { ?> <?php } else { ?> <input id='<?php echo $genid . array_var($options, 'pre_hf_id', ''); ?> members' name='<?php echo array_var($options, 'pre_hf_id', ''); ?> members' type='hidden' ></input> <?php } ?> <div id='<?php echo $component_id; ?> -container' class="<?php echo array_var($options, 'pre_class', ''); ?> single-tree member-chooser-container" ></div> <script> var memberChooserPanel = new og.MemberChooserPanel({ renderTo: '<?php echo $component_id; ?> -container', id: '<?php echo $component_id; ?> ', selectedMembers: <?php echo $selected_members_json; ?> , layout: 'column' }) ; <?php if (is_array(array_var($options, 'allowedDimensions')) && array_search($dimension_id, $options['allowedDimensions']) === false) { continue; } $dimension_name = escape_character($dimension_info['dimension_name']); if (!isset($id)) { $id = gen_id(); } ?> var select_root = <?php echo array_var($options, 'select_root') ? '1' : '0'; ?> ; var config = { id: '<?php echo $component_id; ?> -tree', genid: '<?php echo $genid; ?> ', title: '<?php echo $dimension_name; ?> ', dimensionId: <?php echo $dimension_id; ?> , search_placeholder: '<?php echo array_var($options, 'search_placeholder', lang('search')); ?> ', filterContentType: '<?php echo array_var($options, 'filterContentType', 1); ?> ', collapsed: <?php echo array_var($options, 'collapsed') ? 'true' : 'false'; ?> , collapsible: <?php echo array_var($options, 'collapsible') ? 'true' : 'false'; ?> , all_members: <?php echo array_var($options, 'all_members') ? 'true' : 'false'; ?> , objectTypeId: '<?php echo array_var($options, 'object_type_id', 0); ?> ', isMultiple: '<?php echo array_var($options, 'is_multiple', 0); ?> ', selModel: <?php echo array_var($dimension_info, 'is_multiple') ? 'new Ext.tree.MultiSelectionModel()' : 'new Ext.tree.DefaultSelectionModel()'; ?> , height: <?php echo array_var($options, 'height', '270'); ?> , width: <?php echo array_var($options, 'width', '385'); ?> , listeners: {'tree rendered': function (t) {if (select_root) t.root.select();}} }; <?php if (isset($options['root_lang'])) { ?> config.root_lang = <?php echo json_encode($options['root_lang']); ?> ; <?php } ?> <?php if (isset($options['allowedMemberTypes'])) { ?> config.allowedMemberTypes = <?php echo json_encode($options['allowedMemberTypes']); ?> ; <?php } ?> <?php if (isset($options['checkBoxes']) && !$options['checkBoxes']) { ?> config.checkBoxes = false; <?php } ?> <?php if (isset($options['loadUrl'])) { ?> config.loadUrl = '<?php echo $options['loadUrl']; ?> '; <?php } ?> <?php if (array_var($options, 'enableDD')) { ?> config.enableDD = true; config.dropConfig = { ddGroup: '<?php echo array_var($options, 'ddGroup'); ?> ', allowContainerDrop: true }; config.dragConfig = { ddGroup: '<?php echo array_var($options, 'ddGroup'); ?> ', containerScroll: true }; <?php } ?> <?php if (isset($options['loadUrl'])) { ?> config.loadUrl = '<?php echo $options['loadUrl']; ?> '; <?php } ?> <?php if (isset($options['use_ajax_member_tree']) && $options['use_ajax_member_tree']) { ?> <?php if (isset($options['select_function'])) { ?> config.selectFunction = '<?php echo $options['select_function']; ?> '; <?php } else { ?> config.selectFunction = '<?php echo ""; ?> '; <?php } ?> var tree = new og.MemberTreeAjax ( config ); <?php } else { ?> var tree = new og.MemberChooserTree ( config ); <?php } ?> <?php if (array_var($options, 'enableDD') && array_var($options, 'enddrag_function')) { ?> tree.on('enddrag', <?php echo array_var($options, 'enddrag_function'); ?> ); <?php } ?> <?php if (array_var($options, 'enableDD') && array_var($options, 'beforenodedrop_function')) { ?> tree.on('beforenodedrop', <?php echo array_var($options, 'beforenodedrop_function'); ?> ); <?php } ?> <?php if (array_var($options, 'enableDD') && array_var($options, 'startdrag_function')) { ?> tree.on('startdrag', <?php echo array_var($options, 'startdrag_function'); ?> ); <?php } ?> memberChooserPanel.add(tree); og.can_submit_members = true; <?php if (!isset($options['dont_load']) || !$options['dont_load']) { ?> memberChooserPanel.initialized = true; memberChooserPanel.doLayout(); <?php } ?> </script> <?php }
function render_member_selectors($content_object_type_id, $genid = null, $selected_member_ids = null, $options = array(), $skipped_dimensions = null, $simulate_required = null, $default_view = true) { if (is_numeric($content_object_type_id)) { if (is_null($genid)) { $genid = gen_id(); } $user_dimensions = get_user_dimensions_ids(); // User allowed dimensions $dimensions = array(); // Diemsions for this content type if ($all_dimensions = Dimensions::getAllowedDimensions($content_object_type_id)) { foreach ($all_dimensions as $dimension) { if (isset($user_dimensions[$dimension['dimension_id']])) { $custom_name = DimensionOptions::getOptionValue($dimension['dimension_id'], 'custom_dimension_name'); $dimension['dimension_name'] = $custom_name && trim($custom_name) != "" ? $custom_name : lang($dimension['dimension_code']); $dimensions[] = $dimension; } } } if ($dimensions != null && count($dimensions)) { if (is_null($selected_member_ids) && array_var($options, 'select_current_context')) { $context = active_context(); $selected_member_ids = array(); foreach ($context as $selection) { if ($selection instanceof Member) { $selected_member_ids[] = $selection->getId(); } } } if (is_null($selected_member_ids)) { $selected_member_ids = array(); } $skipped_dimensions_cond = ""; if (is_array($skipped_dimensions) && count($skipped_dimensions) > 0) { $skipped_dimensions_cond = " AND dimension_id NOT IN (" . implode(',', $skipped_dimensions) . ")"; } // Set view variables $manageable_conds = ' AND dimension_id IN (SELECT id from ' . TABLE_PREFIX . 'dimensions WHERE is_manageable=1)' . $skipped_dimensions_cond; $selected_members = count($selected_member_ids) > 0 ? Members::findAll(array('conditions' => 'id IN (' . implode(',', $selected_member_ids) . ') ' . $manageable_conds)) : array(); $selected_member_ids = array(); foreach ($selected_members as $sm) { $selected_member_ids[] = $sm->getId(); } $selected_members_json = "[" . implode(',', $selected_member_ids) . "]"; $component_id = "{$genid}-member-selectors-panel-{$content_object_type_id}"; $object_is_new = is_null($selected_members); $listeners = array_var($options, 'listeners', array()); $allowed_member_type_ids = array_var($options, 'allowedMemberTypes', null); $initial_selected_members = $selected_members; if (count($initial_selected_members) == 0) { $selected_context_member_ids = active_context_members(false); if (count($selected_context_member_ids) > 0) { $initial_selected_members = Members::findAll(array('conditions' => 'id IN (' . implode(',', $selected_context_member_ids) . ')')); } } $tmp = array(); foreach ($initial_selected_members as $ism) { if ($ism->getDimension()->getIsManageable()) { $tmp[] = $ism; } } $initial_selected_members = $tmp; // Render view include get_template_path("components/multiple_dimension_selector", "dimension"); } } }
function getOptionValue($name) { if (!isset($this->options_cache[$name])) { $value = DimensionOptions::getOptionValue($this->getId(), $name); $this->options_cache[$name] = $value; } return $this->options_cache[$name]; }