/**
  * @see SugarView::display()
  */
 public function display()
 {
     global $mod_strings;
     global $app_list_strings;
     global $app_strings;
     require_once "modules/MySettings/TabController.php";
     $controller = new TabController();
     $tabs = $controller->get_tabs_system();
     $enabled = [];
     foreach ($tabs[0] as $key => $value) {
         $enabled[] = ["module" => $key, 'label' => translate($key)];
     }
     $disabled = [];
     foreach ($tabs[1] as $key => $value) {
         $disabled[] = ["module" => $key, 'label' => translate($key)];
     }
     $user_can_edit = $controller->get_users_can_edit();
     $this->ss->assign('APP', $GLOBALS['app_strings']);
     $this->ss->assign('MOD', $GLOBALS['mod_strings']);
     $this->ss->assign('user_can_edit', $user_can_edit);
     $this->ss->assign('enabled_tabs', json_encode($enabled));
     $this->ss->assign('disabled_tabs', json_encode($disabled));
     $this->ss->assign('title', $this->getModuleTitle(false));
     //get list of all subpanels and panels to hide
     $mod_list_strings_key_to_lower = array_change_key_case($app_list_strings['moduleList']);
     $panels_arr = SubPanelDefinitions::get_all_subpanels();
     $hidpanels_arr = SubPanelDefinitions::get_hidden_subpanels();
     if (!$hidpanels_arr || !is_array($hidpanels_arr)) {
         $hidpanels_arr = [];
     }
     //create array of subpanels to show, used to create Drag and Drop widget
     $enabled = [];
     foreach ($panels_arr as $key) {
         if (empty($key)) {
             continue;
         }
         $key = strtolower($key);
         $enabled[] = ["module" => $key, "label" => $mod_list_strings_key_to_lower[$key]];
     }
     //now create array of subpanels to hide for use in Drag and Drop widget
     $disabled = [];
     foreach ($hidpanels_arr as $key) {
         if (empty($key)) {
             continue;
         }
         $key = strtolower($key);
         $disabled[] = ["module" => $key, "label" => $mod_list_strings_key_to_lower[$key]];
     }
     $this->ss->assign('enabled_panels', json_encode($enabled));
     $this->ss->assign('disabled_panels', json_encode($disabled));
     echo $this->ss->fetch('modules/Administration/templates/ConfigureTabs.tpl');
 }
Exemplo n.º 2
0
 /**
  * Gets the list of hidden subpanels
  *
  * @return array
  */
 public function getHiddenSubpanels()
 {
     // BR-29 Handle hidden subpanels - SubPanelDefinitons needs a bean at
     // construct time, so hand it an admin bean. This returns a list of
     // hidden subpanels in lowercase module name form:
     // array('accounts', 'bugs', 'contacts');
     $spd = new SubPanelDefinitions(BeanFactory::getBean('Administration'));
     return array_values($spd->get_hidden_subpanels());
 }
Exemplo n.º 3
0
 /**
  * Load the Sub-Panel objects if it can from the metadata files.
  *
  * call this function for sub-panels that have unions.
  *
  * @todo Decide whether to make all activities modules exempt from visibility
  *       checking or not. As of 6.4.5, Notes was no longer exempt but the
  *       other activities modules were which is causing causing rendering of
  *       subpanels for these modules even when these modules should not be shown.
  *
  * @return bool         True by default if the subpanel was loaded.  Will return false if none in the collection are
  *                      allowed by the current user.
  */
 function load_sub_subpanels()
 {
     //by default all the activities modules are exempt, so hiding them won't
     //affect their appearance unless the 'activity' subpanel itself is hidden.
     //add email to the list temporarily so it is not affected in activities subpanel
     global $modules_exempt_from_availability_check;
     $modules_exempt_from_availability_check['Emails'] = 'Emails';
     $listFieldMap = array();
     if (empty($this->sub_subpanels)) {
         // Bug 57699 - Notes subpanel missing from Calls module after upgrade
         // Originally caused by the fix for Bug 49439
         // Get the shown subpanel module list
         $subPanelDefinitions = new SubPanelDefinitions($this->parent_bean);
         // Bug 58089 - History sub panel doesn't show any record.
         // Rather than check ALL subpanels, we only need to really check to
         // see if the module(s) we are checking are not hidden.
         $hiddenSubPanels = $subPanelDefinitions->get_hidden_subpanels();
         $panels = $this->get_inst_prop_value('collection_list');
         foreach ($panels as $panel => $properties) {
             // Lowercase the collection module to check against the subpanel list
             $lcModule = strtolower($properties['module']);
             // Add a check for module subpanel visibility. If hidden, but exempt, pass it
             if (is_array($hiddenSubPanels) && !in_array($lcModule, $hiddenSubPanels) || isset($modules_exempt_from_availability_check[$properties['module']])) {
                 $this->sub_subpanels[$panel] = new aSubPanel($panel, $properties, $this->parent_bean);
             }
         }
         // if it's empty just dump out as there is nothing to process.
         if (empty($this->sub_subpanels)) {
             return false;
         }
         //Sync displayed list fields across the subpanels
         $display_fields = $this->getDisplayFieldsFromCollection($this->sub_subpanels);
         $query_fields = array();
         foreach ($this->sub_subpanels as $key => $subpanel) {
             $list_fields = $subpanel->get_list_fields();
             $listFieldMap[$key] = array();
             $index = 0;
             foreach ($list_fields as $field => $def) {
                 if (isset($def['vname']) && isset($def['width'])) {
                     $index++;
                     if (!empty($def['alias'])) {
                         $listFieldMap[$key][$def['alias']] = $field;
                     } else {
                         $listFieldMap[$key][$field] = $field;
                     }
                     if (!isset($display_fields[$def['vname']])) {
                         if (sizeof($display_fields) > $index) {
                             //Try to insert the new field in an order that makes sense
                             $start = array_slice($display_fields, 0, $index);
                             $end = array_slice($display_fields, $index);
                             $display_fields = array_merge($start, array($def['vname'] => array('name' => $field, 'vname' => $def['vname'], 'width' => $def['width'])), $end);
                         } else {
                             $display_fields[$def['vname']] = array('name' => empty($def['alias']) ? $field : $def['alias'], 'vname' => $def['vname'], 'width' => $def['width']);
                         }
                     }
                 } else {
                     $query_fields[$field] = $def;
                 }
             }
         }
         foreach ($this->sub_subpanels as $key => $subpanel) {
             $list_fields = array();
             foreach ($display_fields as $vname => $def) {
                 $field = $def['name'];
                 $list_key = isset($listFieldMap[$key][$field]) ? $listFieldMap[$key][$field] : $field;
                 if (isset($subpanel->panel_definition['list_fields'][$field])) {
                     $list_fields[$field] = $subpanel->panel_definition['list_fields'][$field];
                 } else {
                     if ($list_key != $field && isset($subpanel->panel_definition['list_fields'][$list_key])) {
                         $list_fields[$list_key] = $subpanel->panel_definition['list_fields'][$list_key];
                     } else {
                         $list_fields[$field] = $display_fields[$vname];
                     }
                 }
             }
             foreach ($query_fields as $field => $def) {
                 if (isset($subpanel->panel_definition['list_fields'][$field])) {
                     $list_fields[$field] = $subpanel->panel_definition['list_fields'][$field];
                 } else {
                     $list_fields[$field] = $def;
                 }
             }
             $subpanel->panel_definition['list_fields'] = $list_fields;
         }
     }
     return true;
 }
Exemplo n.º 4
0
        $panels_to_hide = $_REQUEST['disabled_panels'];
    }
    //turn list  into array
    $hidpanels_arr = split(',', $panels_to_hide);
    $hidpanels_arr = TabController::get_key_array($hidpanels_arr);
    //save list of subpanels to hide
    SubPanelDefinitions::set_hidden_subpanels($hidpanels_arr);
    //redirect to same page to refresh panel list
    header("Location: index.php?module=Administration&action=ConfigureSubPanels");
}
//////////////////  Processing UI
//create title for form
$title = get_module_title($mod_strings['LBL_MODULE_NAME'], $mod_strings['LBL_CONFIGURE_SUBPANELS'] . ":", true);
//get list of all subpanels and panels to hide
$panels_arr = SubPanelDefinitions::get_all_subpanels();
$hidpanels_arr = SubPanelDefinitions::get_hidden_subpanels();
if (!$hidpanels_arr || !is_array($hidpanels_arr)) {
    $hidpanels_arr = array();
}
//create array of subpanels to show, used to create Drag and Drop widget
$groups = array();
$groups[$mod_strings['LBL_VISIBLE_PANELS']] = array();
foreach ($panels_arr as $key) {
    if (empty($key)) {
        continue;
    }
    $panels_arr[$key] = $mod_list_strings_key_to_lower[$key];
}
$groups[$mod_strings['LBL_HIDDEN_PANELS']] = array();
//now create array of panels to hide for use in Drag and Drop widget
foreach ($hidpanels_arr as $key) {
Exemplo n.º 5
0
 /**
  * @see SugarView::display()
  */
 public function display()
 {
     global $mod_strings;
     global $app_list_strings;
     global $app_strings;
     require_once "modules/MySettings/TabController.php";
     $controller = new TabController();
     $tabs = $controller->get_tabs_system();
     // Remove Home module from UI.  We add it back to front of display tab list on save.
     if (isset($tabs[0]['Home'])) {
         unset($tabs[0]['Home']);
     }
     if (isset($tabs[1]['Home'])) {
         unset($tabs[1]['Home']);
     }
     $enabled = array();
     foreach ($tabs[0] as $key => $value) {
         $enabled[] = array("module" => $key, 'label' => translate($key));
     }
     $disabled = array();
     foreach ($tabs[1] as $key => $value) {
         $disabled[] = array("module" => $key, 'label' => translate($key));
     }
     $user_can_edit = $controller->get_users_can_edit();
     $this->ss->assign('APP', $GLOBALS['app_strings']);
     $this->ss->assign('MOD', $GLOBALS['mod_strings']);
     $this->ss->assign('user_can_edit', $user_can_edit);
     $this->ss->assign('enabled_tabs', json_encode($enabled));
     $this->ss->assign('disabled_tabs', json_encode($disabled));
     $this->ss->assign('title', $this->getModuleTitle(false));
     //get list of all subpanels and panels to hide
     $mod_list_strings_key_to_lower = array_change_key_case($app_list_strings['moduleList']);
     $panels_arr = SubPanelDefinitions::get_all_subpanels();
     $hidpanels_arr = SubPanelDefinitions::get_hidden_subpanels();
     if (!$hidpanels_arr || !is_array($hidpanels_arr)) {
         $hidpanels_arr = array();
     }
     //create array of subpanels to show, used to create Drag and Drop widget
     $enabled = array();
     foreach ($panels_arr as $key) {
         if (empty($key)) {
             continue;
         }
         $key = strtolower($key);
         $enabled[] = array("module" => $key, "label" => $mod_list_strings_key_to_lower[$key]);
     }
     //now create array of subpanels to hide for use in Drag and Drop widget
     $disabled = array();
     foreach ($hidpanels_arr as $key) {
         if (empty($key)) {
             continue;
         }
         $key = strtolower($key);
         // we need this here for with RLI's are disabled as they shouldn't be seen in the list
         if ($key == 'revenuelineitems' && in_array('RevenueLineItems', $GLOBALS['modInvisList'])) {
             continue;
         }
         $disabled[] = array("module" => $key, "label" => $mod_list_strings_key_to_lower[$key]);
     }
     $this->ss->assign('enabled_panels', json_encode($enabled));
     $this->ss->assign('disabled_panels', json_encode($disabled));
     echo $this->ss->fetch('modules/Administration/templates/ConfigureTabs.tpl');
 }
Exemplo n.º 6
0
 /**
  * check was module hidden in the top navigation bar or as subpanels
  * @param string moduleName - name of module to chaeck e.g. Notes, Tasks
  * @return bool
  * @see Bug #55632 : Hiding Notes Module does not prevent creation of notes.
  */
 public static function isModuleHidden($moduleName)
 {
     global $modules_exempt_from_availability_check;
     if (isset($modules_exempt_from_availability_check[$moduleName])) {
         return false;
     }
     require_once 'modules/MySettings/TabController.php';
     require_once 'include/SubPanel/SubPanelDefinitions.php';
     $tabs = new TabController();
     if (in_array(strtolower($moduleName), SubPanelDefinitions::get_hidden_subpanels())) {
         return true;
     }
     return false;
 }