function get_rendered_member_selectors()
 {
     $object_members = array();
     $objectId = 0;
     if (get_id()) {
         $object = Objects::findObject(get_id());
         $object_type_id = $object->manager()->getObjectTypeId();
         $object_members = $object->getMemberIds();
         $objectId = get_id();
     } else {
         $object_type_id = array_var($_GET, 'objtypeid');
         if (array_var($_GET, 'members')) {
             $object_members = explode(',', array_var($_GET, 'members'));
         }
     }
     if (count($object_members) == 0) {
         $object_members = active_context_members(false);
     }
     $genid = array_var($_GET, 'genid');
     $listeners = array();
     //ob_start — Turn on output buffering
     //no output is sent from the script (other than headers), instead the output is stored in an internal buffer.
     ob_start();
     //get skipped dimensions for this view
     $view_name = array_var($_GET, 'view_name');
     $dimensions_to_show = explode(",", user_config_option($view_name . "_view_dimensions_combos"));
     $dimensions_to_skip = array_diff(get_user_dimensions_ids(), $dimensions_to_show);
     render_member_selectors($object_type_id, $genid, $object_members, array('listeners' => $listeners), $dimensions_to_skip, null, false);
     ajx_current("empty");
     //Gets the current buffer contents and delete current output buffer.
     //ob_get_clean() essentially executes both ob_get_contents() and ob_end_clean().
     ajx_extra_data(array("htmlToAdd" => ob_get_clean()));
     ajx_extra_data(array("objectId" => $objectId));
 }
示例#2
0
/**
 * @param unknown_type $content_object_type_id
 * @param unknown_type $genid
 * @param unknown_type $selected_members
 * @param unknown_type $options
 * @param unknown_type $skipped_dimensions
 * @param unknown_type $simulate_required
 */
function render_dimension_trees($content_object_type_id, $genid = null, $selected_members = null, $options = array(), $skipped_dimensions = null, $simulate_required = null) { 
		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() ;
			if ( $all_dimensions = Dimensions::getAllowedDimensions($content_object_type_id) ) { // Diemsions for this content type
				foreach ($all_dimensions as $dimension){ // A kind of intersection...
					if ( isset($user_dimensions[$dimension['dimension_id']] ) ){
						if( $dimension_options = json_decode($dimension['dimension_options'])){
							if (isset($dimension_options->useLangs) && $dimension_options->useLangs ) {
								$dimension['dimension_name'] = lang($dimension['dimension_code']);
							}
						}
						$dimensions[] = $dimension ;
					}
				}
			}
			
			$object_is_new = is_null($selected_members);
			
			if ($dimensions!= null && count($dimensions)) {
				if (is_null($selected_members) && array_var($options, 'select_current_context')) {
					$context = active_context();
					$selected_members = array();
					foreach ($context as $selection) {
						if ($selection instanceof Member) $selected_members[] = $selection->getId(); 
					}
				}
				
				$selected_members_json = json_encode($selected_members);
				$component_id  = "$genid-member-chooser-panel-$content_object_type_id" ;
				
				if (isset($options['layout']) && in_array($options['layout'], array('horizontal', 'column'))) {
					$layout = $options['layout'];
				} else {
					//$layout = count($dimensions) > 5 ? "horizontal" : "column";
					$layout = "column";
				}
				?>
				
				<?php if (!$object_is_new) : ?> 
				<input id='<?php echo $genid; ?>trees_not_loaded' name='trees_not_loaded' type='hidden' value="1"></input>
				<?php endif;?>
				
				<input id='<?php echo $genid; ?>members' name='members' type='hidden' value="<?php echo str_replace('"', "'", $selected_members_json); ?>"></input>
				<div id='<?php echo $component_id ?>-container' class="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: '<?php echo $layout; ?>'
					}) ;
					
					<?php  
					foreach ($dimensions as $dimension) : 
						$dimension_id = $dimension['dimension_id'];
						if (is_array($skipped_dimensions) && in_array($dimension_id, $skipped_dimensions)) continue;
						
						if ( is_array(array_var($options, 'allowedDimensions')) && array_search($dimension_id, $options['allowedDimensions']) === false ){
							continue;	 
						}

						if (!$dimension['is_manageable']) continue;
						
						$is_required = $dimension['is_required'];				
						$dimension_name = $dimension['dimension_name'] ;				
						if ($is_required) $dimension_name.= " *" ;
						
						if (is_array($simulate_required) && in_array($dimension_id, $simulate_required))
							$is_required = true;
						
						if (!isset($id)) $id = gen_id();
					?>
					var config = {
							title: '<?php echo $dimension_name ?>',
							dimensionId: <?php echo $dimension_id ?>,
							objectTypeId: <?php echo $content_object_type_id ?>,
							required: <?php echo $is_required ?>,
							reloadDimensions: <?php echo json_encode( DimensionMemberAssociations::instance()->getDimensionsToReload($dimension_id) ) ; ?>,
							isMultiple: <?php echo $dimension['is_multiple'] ?>,
							selModel: <?php echo ($dimension['is_multiple'])?
								'new Ext.tree.MultiSelectionModel()':
								'new Ext.tree.DefaultSelectionModel()'?>
													
					};

					
					<?php if( isset ($options['allowedMemberTypes'])) : ?>
						config.allowedMemberTypes = <?php  echo json_encode($options['allowedMemberTypes']) ?> ;
					<?php endif; ?>
					<?php if( isset ($options['collapsible'])) : ?>
						config.collapsible = <?php  echo (int)$options['collapsible'] ?> ;
					<?php endif; ?>
					<?php if( isset ($options['collapsed'])) : ?>
						config.collapsed = <?php  echo (int) $options['collapsed'] ?> ;
					<?php endif; ?>

					config.listeners = {
						'tree rendered': function(tree) {
							if (!tree.ownerCt.rendered_trees) tree.ownerCt.rendered_trees = 0;
							tree.ownerCt.rendered_trees++;
							if (tree.ownerCt.rendered_trees == tree.ownerCt.items.length) tree.ownerCt.fireEvent('all trees rendered', tree.ownerCt);
						}
					};

					var tree = new og.MemberChooserTree ( config );
					
					memberChooserPanel.add(tree);
					<?php endforeach; ?>

					og.can_submit_members = false;
					memberChooserPanel.on('all trees rendered', function(panel) {
						og.can_submit_members = true;
						var trees_to_reload = [];
						panel.items.each(function(item, index, length) {
							var checked = item.getLastChecked();
							if (checked != 0 && item.filterOnChange) trees_to_reload.push(item);
						});
						
						if (trees_to_reload.length > 0) {
							for (var i=0; i<trees_to_reload.length; i++) {
								trees_to_reload[i].dont_update_form = true;
								tree = trees_to_reload[i];
								setTimeout(function() { tree.dont_update_form = false; }, 2500);
							}
							
							for (var i=1; i<trees_to_reload.length; i++) {
								var next = trees_to_reload[i];
								trees_to_reload[i-1].on('all trees updated', function(){
									next.fireEvent('checkchange', next.getNodeById(next.getLastChecked()), true);
									next.expand();
								});
							}

							var t = trees_to_reload[0];
							t.fireEvent('checkchange', t.getNodeById(t.getLastChecked()), true);
							t.expand();
						}
					}); 
					
					memberChooserPanel.doLayout();

				</script>

<?php 
			}
		}
}
示例#3
0
function render_member_selectors($content_object_type_id, $genid = null, $selected_member_ids = null, $options = array(), $skipped_dimensions = null, $simulate_required = null) {
	
	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']] ) ){
					if( $dimension_options = json_decode($dimension['dimension_options'])){
						if (isset($dimension_options->useLangs) && $dimension_options->useLangs ) {
							$dimension['dimension_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();
			
			// Set view variables
			$selected_members = count($selected_member_ids) > 0 ? Members::findAll(array('conditions' => 'id IN ('.implode(',', $selected_member_ids).')')) : array();
			$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");
			
		}
	}
}
示例#4
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");
        }
    }
}
示例#5
0
TMTimespanAddNew" class="TMTimespanAddNew" <?php 
echo $draw_inputs ? "" : 'style="display:none;"';
?>
>
		<input type="hidden" id="<?php 
echo $genid;
?>
tsId" name="timeslot[id]" value=""/>
		<div style="padding:7px;">
			
			<div class="context-body" style="float: left; margin-bottom: 5px;">
				<?php 
//get skipped dimensions for this view
$dimensions_to_show = explode(",", user_config_option("add_timeslot_view_dimensions_combos"));
$dimensions_to_show = is_array($dimensions_to_show) ? array_filter($dimensions_to_show) : array();
$dimensions_to_skip = array_diff(get_user_dimensions_ids(), $dimensions_to_show);
$listeners = array();
$listeners = array('on_selection_change' => 'ogTimeManager.renderUserCombo("' . $genid . '")');
if (!empty($dimensions_to_show)) {
    render_member_selectors(Timeslots::instance()->getObjectTypeId(), $genid, null, array('select_current_context' => true, 'listeners' => $listeners, 'horizontal' => true, 'width' => '270'), $dimensions_to_skip, null, true);
}
?>
					
			</div>
						
			<div class="small-member-selector TMTimespanSelectorHeight" style="<?php 
echo can_manage_time(logged_user()) ? '' : 'display: none;';
?>
">
				<?php 
echo label_tag(lang('user'));
';
og.config.use_milestones = <?php 
echo config_option('use_milestones') ? 'true' : 'false';
?>
;
og.config.show_notify_checkbox_in_quick_add = <?php 
echo user_config_option('show_notify_checkbox_in_quick_add') ? 'true' : 'false';
?>
;
og.config.tasks_show_description_on_time_forms = <?php 
echo user_config_option('tasksShowDescriptionOnTimeForms') ? 'true' : 'false';
?>
;
og.config.quick_add_task_combos = <?php 
$object = "";
$dimensions_user = get_user_dimensions_ids();
$dimensions_to_show = explode(",", user_config_option("quick_add_task_view_dimensions_combos"));
$dimensions_to_skip = array_diff($dimensions_user, $dimensions_to_show);
//sort combos
function cmp($a, $b)
{
    return $a < $b ? -1 : 1;
}
usort($dimensions_to_show, "cmp");
foreach ($dimensions_to_show as $key => $dimension_id) {
    if (in_array($dimension_id, $dimensions_to_skip)) {
        continue;
    }
    $dim = Dimensions::instance()->getDimensionById($dimension_id);
    if ($dim instanceof Dimension) {
        if ($key != 0) {