/**
  * Return manager instance
  *
  * @access protected
  * @param void
  * @return DimensionOptions 
  */
 function manager()
 {
     if (!$this->manager instanceof DimensionOptions) {
         $this->manager = DimensionOptions::instance();
     }
     return $this->manager;
 }
$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();
Beispiel #3
0
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");
        }
    }
}
 /**
  * This function will return paginated result. Result is an array where first element is 
  * array of returned object and second populated pagination object that can be used for 
  * obtaining and rendering pagination data using various helpers.
  * 
  * Items and pagination array vars are indexed with 0 for items and 1 for pagination
  * because you can't use associative indexing with list() construct
  *
  * @access public
  * @param array $arguments Query argumens (@see find()) Limit and offset are ignored!
  * @param integer $items_per_page Number of items per page
  * @param integer $current_page Current page number
  * @return array
  */
 function paginate($arguments = null, $items_per_page = 10, $current_page = 1)
 {
     if (isset($this) && instance_of($this, 'DimensionOptions')) {
         return parent::paginate($arguments, $items_per_page, $current_page);
     } else {
         return DimensionOptions::instance()->paginate($arguments, $items_per_page, $current_page);
     }
     // if
 }
Beispiel #5
0
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 setOptionValue($name, $value)
 {
     DimensionOptions::setOptionValue($this->getId(), $name, $value);
     $this->options_cache[$name] = $value;
 }