Application->ConfigValue('AdminConsoleInterface'); define('SYSTEM_PRESET_PATH', FULL_PATH . ADMIN_PRESETS_DIRECTORY . DIRECTORY_SEPARATOR . 'system_presets' . DIRECTORY_SEPARATOR . $preset_name); } /** * Returns settings for current admin console preset * * @return Array */ function getSettings() { static $settings = null; if (isset($settings)) { return $settings; } $default_settings = $this->_getDefaultSettings(); $preset_name = $this->Application->ConfigValue('AdminConsoleInterface'); $base_path = FULL_PATH . ADMIN_DIRECTORY . '/system_presets/' . $preset_name; if (file_exists($base_path . DIRECTORY_SEPARATOR . 'settings.php')) { include_once $base_path . DIRECTORY_SEPARATOR . 'settings.php'; // will get $settings array foreach ($default_settings as $setting_name => $setting_value) { if (!array_key_exists($setting_name, $settings)) { $settings[$setting_name] = $setting_value; } } return $settings; } else { $settings = $default_settings; } return $settings; } /** * Returns default settings for admin console presets * * @return Array */ function _getDefaultSettings() { $settings = Array ( 'default_editing_mode' => EDITING_MODE_BROWSE, 'visible_editing_modes' => Array ( EDITING_MODE_BROWSE, EDITING_MODE_CONTENT, EDITING_MODE_DESIGN, ), ); return $settings; } /** * Applies given changes to given prefix unit config * * @param string $prefix * @param Array $changes */ function processConfigChanges($prefix, $changes) { extract($changes, EXTR_SKIP); $config = $this->Application->getUnitConfig($prefix); $core_config = $this->Application->getUnitConfig('core-sections'); $section_adjustments = $core_config->getSectionAdjustments(Array ()); $title_presets = $config->getTitlePresets(Array ()); $fields = $config->getFields(Array ()); $virtual_fields = $config->getVirtualFields(Array ()); $edit_tab_presets = $config->getEditTabPresets(Array ()); $grids = $config->getGrids(Array ()); $field_names = array_keys($fields); $virtual_field_names = array_keys($virtual_fields); if (isset($remove_sections)) { // process sections foreach ($remove_sections as $remove_section) { $section_adjustments[$remove_section]['show_mode'] = smHIDE; } } if (isset($debug_only_sections)) { // process sections foreach ($debug_only_sections as $debug_only_section) { $section_adjustments[$debug_only_section]['show_mode'] = smDEBUG; } } if (isset($remove_buttons)) { // process toolbar buttons foreach ($remove_buttons as $title_preset => $toolbar_buttons) { $title_presets[$title_preset]['toolbar_buttons'] = array_diff($title_presets[$title_preset]['toolbar_buttons'], $toolbar_buttons); } } $reset_fields = true; $reset_virtual_fields = true; // process hidden fields if (isset($hidden_fields)) { $fields = $this->_setFieldOption($fields, $hidden_fields, 'show_mode', false, $reset_fields); $reset_fields = false; } if (isset($virtual_hidden_fields)) { $virtual_fields = $this->_setFieldOption($virtual_fields, $virtual_hidden_fields, 'show_mode', false, $reset_virtual_fields); $reset_virtual_fields = false; } // process debug only fields if (isset($debug_only_fields)) { $fields = $this->_setFieldOption($fields, $debug_only_fields, 'show_mode', smDEBUG, $reset_fields); $reset_fields = false; } if (isset($debug_only_virtual_fields)) { $virtual_fields = $this->_setFieldOption($virtual_fields, $debug_only_virtual_fields, 'show_mode', smDEBUG, $reset_virtual_fields); $reset_virtual_fields = false; } // process required fields if (isset($required_fields)) { $fields = $this->_setFieldOption($fields, $required_fields, 'required', 1); } if (isset($virtual_required_fields)) { $virtual_fields = $this->_setFieldOption($virtual_fields, $virtual_required_fields, 'required', 1); } if (isset($hide_edit_tabs)) { // hide edit tabs foreach ($hide_edit_tabs as $preset_name => $edit_tabs) { foreach ($edit_tabs as $edit_tab) { unset($edit_tab_presets[$preset_name][$edit_tab]); } } } if (isset($hide_columns)) { // hide columns in grids foreach ($hide_columns as $grid_name => $columns) { foreach ($columns as $column) { unset($grids[$grid_name]['Fields'][$column]); } } } // save changes $core_config->setSectionAdjustments($section_adjustments); $config->setTitlePresets($title_presets); $config->setFields($fields); $config->setVirtualFields($virtual_fields); $config->setEditTabPresets($edit_tab_presets); $config->setGrids($grids); } /** * Sets given option for given fields and unsets it for all other fields * * @param Array $fields * @param Array $set_fields * @param string $option_name * @param mixed $option_value * @param bool $reset */ function _setFieldOption($fields, $set_fields, $option_name, $option_value, $reset = true) { if ($reset) { // unset given option for rest of fields (all except $set_fields) $unset_fields = array_diff(array_keys($fields), $set_fields); foreach ($unset_fields as $unset_field) { if (array_key_exists($option_name, $fields[$unset_field])) { unset($fields[$unset_field][$option_name]); } } } // set given option to given fields foreach ($set_fields as $set_field) { $fields[$set_field][$option_name] = $option_value; } return $fields; } }