diff --git a/application/config/fhcomplete.php b/application/config/fhcomplete.php index 5192a4e8e..dfb690278 100644 --- a/application/config/fhcomplete.php +++ b/application/config/fhcomplete.php @@ -235,10 +235,13 @@ $config['fhc_acl'] = array 'wawi.tbl_rechnungsbetrag' => 'basis/rechnungsbetrag', 'wawi.tbl_rechnungstyp' => 'basis/rechnungstyp', 'wawi.tbl_zahlungstyp' => 'basis/zahlungstyp', + + // Temporary 'extension.tbl_budgetantrag' => 'basis/kostenstelle', 'extension.tbl_budgetposition' => 'basis/kostenstelle', 'extension.tbl_budgetstatus' => 'basis/kostenstelle', 'extension.tbl_budgetantrag_status' => 'basis/kostenstelle', + 'extension.tbl_dsms_anonymisierung' => 'dsms/export', DMS_PATH => 'fs/dms', diff --git a/application/config/navigation.php b/application/config/navigation.php index 6f7cd65f0..abb5338b6 100644 --- a/application/config/navigation.php +++ b/application/config/navigation.php @@ -1,18 +1,8 @@ array( - 'FH-Complete' => base_url('index.ci.php/'), - 'Vilesci' => base_url('/vilesci'), - 'CIS' => CIS_ROOT - ), - 'system/infocenter/InfoCenter/index' => array( - 'FH-Complete' => base_url('index.ci.php/'), - 'Vilesci' => base_url('/vilesci'), - 'CIS' => CIS_ROOT - ), - 'system/infocenter/InfoCenter/showDetails' => array( - 'FH-Complete' => base_url('index.ci.php/'), + '*' => array( + 'FH-Complete' => site_url(''), 'Vilesci' => base_url('/vilesci'), 'CIS' => CIS_ROOT ) @@ -39,7 +29,7 @@ $config['navigation_menu']['Vilesci/index'] = array( 'expand' => true ), 'Infocenter' => array( - 'link' => base_url('index.ci.php/system/infocenter/InfoCenter'), + 'link' => site_url('/system/infocenter/InfoCenter'), 'icon' => 'info', 'description' => 'Infocenter', 'expand' => true @@ -59,7 +49,7 @@ $config['navigation_menu']['Vilesci/index'] = array( 'expand' => true ), 'Extensions' => array( - 'link' => base_url('index.ci.php/system/extensions/Manager'), + 'link' => site_url('/system/extensions/Manager'), 'icon' => 'cubes', 'description' => 'Extensions Manager', 'expand' => true diff --git a/application/controllers/system/Navigation.php b/application/controllers/system/Navigation.php index 9e16580b0..65f311c66 100644 --- a/application/controllers/system/Navigation.php +++ b/application/controllers/system/Navigation.php @@ -10,7 +10,7 @@ class Navigation extends VileSci_Controller const SESSION_NAME = 'NAVIGATION_MENU'; /** - * + * Constructor */ public function __construct() { @@ -24,7 +24,9 @@ class Navigation extends VileSci_Controller } /** - * + * This function creates the left Menu for each Page + * @param navigation_widget_called GET Parameter witch holds the currently called Page + * @return JSON object with the Menu Entries */ public function menu() { @@ -33,12 +35,15 @@ class Navigation extends VileSci_Controller if (isset($navigation_widget_called)) { + // Get Menu Entries of the Core $navigationMenuArray = $this->config->item('navigation_menu'); + $json = $this->wildcardsearch($navigationMenuArray, $navigation_widget_called); // Load Menu Entries of Extensions $extensions = $this->extensionslib->getInstalledExtensions(); if(hasData($extensions)) { + $json_extension = array(); foreach($extensions->retval as $ext) { $filename = APPPATH.'config/'.ExtensionsLib::EXTENSIONS_DIR_NAME.'/'.$ext->name.'/navigation.php'; @@ -48,19 +53,15 @@ class Navigation extends VileSci_Controller include($filename); if(isset($config['navigation_menu']) && is_array($config['navigation_menu'])) { - $navigationMenuArray = array_merge_recursive($navigationMenuArray, $config['navigation_menu']); + $json_extension = array_merge_recursive($json_extension, $this->wildcardsearch($config['navigation_menu'], $navigation_widget_called)); } } } - } - if (isset($navigationMenuArray) && is_array($navigationMenuArray)) - { - if (isset($navigationMenuArray[$navigation_widget_called])) - { - $json = $navigationMenuArray[$navigation_widget_called]; - } + // Merge Extension Menuentries with the Core Entries + $json = array_merge_recursive($json, $json_extension); } + // Load dynamic Menu Entries from Session if (isset($_SESSION['navigation_menu'])) { $navigationMenuSessionArray = $_SESSION['navigation_menu']; @@ -69,7 +70,7 @@ class Navigation extends VileSci_Controller { if (isset($navigationMenuSessionArray[$navigation_widget_called])) { - $json = array_merge($json, $navigationMenuSessionArray[$navigation_widget_called]); + $json = array_merge_recursive($json, $navigationMenuSessionArray[$navigation_widget_called]); } } } @@ -79,7 +80,9 @@ class Navigation extends VileSci_Controller } /** - * + * This function creates the Top Menu for each Page + * @param navigation_widget_called GET Parameter witch holds the currently called Page + * @return JSON object with the Menu Entries */ public function header() { @@ -88,12 +91,15 @@ class Navigation extends VileSci_Controller if (isset($navigation_widget_called)) { + // Load Header Entries of Core $navigationHeaderArray = $this->config->item('navigation_header'); + $json = $this->wildcardsearch($navigationHeaderArray, $navigation_widget_called); // Load Header Entries of Extensions $extensions = $this->extensionslib->getInstalledExtensions(); if(hasData($extensions)) { + $json_extension = array(); foreach($extensions->retval as $ext) { $filename = APPPATH.'config/'.ExtensionsLib::EXTENSIONS_DIR_NAME.'/'.$ext->name.'/navigation.php'; @@ -103,20 +109,14 @@ class Navigation extends VileSci_Controller include($filename); if(isset($config['navigation_header']) && is_array($config['navigation_header'])) { - $navigationHeaderArray = array_merge_recursive($navigationHeaderArray, $config['navigation_header']); + $json_extension = array_merge_recursive($json_extension, $this->wildcardsearch($config['navigation_header'], $navigation_widget_called)); } } } + $json = array_merge_recursive($json, $json_extension); } - if (isset($navigationHeaderArray) && is_array($navigationHeaderArray)) - { - if (isset($navigationHeaderArray[$navigation_widget_called])) - { - $json = $navigationHeaderArray[$navigation_widget_called]; - } - } - + // Load dynamic Header Entries from Session if (isset($_SESSION['navigation_header'])) { $navigationHeaderSessionArray = $_SESSION['navigation_header']; @@ -125,7 +125,8 @@ class Navigation extends VileSci_Controller { if (isset($navigationHeaderSessionArray[$navigation_widget_called])) { - $json = array_merge($json, $navigationHeaderSessionArray[$navigation_widget_called]); + $jsontmp = $this->wildcardsearch($navigationHeaderSessionArray, $navigation_widget_called); + $json = array_merge_recursive($json, $jsontmp); } } } @@ -133,4 +134,47 @@ class Navigation extends VileSci_Controller $this->output->set_content_type('application/json')->set_output(json_encode($json)); } + + /** + * Searches a Menuentry. If there is no exact entry it searches for Wildcard Entries with a Star + * Example: + * Searching for /system/foo/index will Match the following Menuentries: + * /system/foo/index + * /system/foo/* + * /system/* + * * + * + * @param $navigationArray Array to Search in. + * @param $navigation_widget_called Navigation to search for. + * @return Navigation Array if found, empty array otherwise + */ + private function wildcardsearch($navigationArray, $navigation_widget_called) + { + // Sort Navigation to have them in correct order + krsort($navigationArray); + + // 100% match found + if(isset($navigationArray[$navigation_widget_called])) + { + return $navigationArray[$navigation_widget_called]; + } + else + { + foreach($navigationArray as $key=>$row) + { + // Search for * Entries + if(mb_strpos($key, '*') === 0 || mb_strpos($key, '*') === mb_strlen($key) - 1) + { + // Take * Entry if Matches + $search = mb_substr($key, 0, -1); + if($search == '' || mb_strpos($navigation_widget_called, $search) === 0) + { + return $row; + } + } + } + } + + return array(); + } } diff --git a/application/libraries/ExtensionsLib.php b/application/libraries/ExtensionsLib.php index 25e9c666a..26f1c5247 100644 --- a/application/libraries/ExtensionsLib.php +++ b/application/libraries/ExtensionsLib.php @@ -723,6 +723,7 @@ class ExtensionsLib ); if (!$_addSoftLinks) { + log_message('error','Failed to create Symlink to '.$extensionPath.$targetDirectory); break; } }