From dd610c83d98da7c695a3bc9831878e19327b18ae Mon Sep 17 00:00:00 2001 From: Paolo Date: Fri, 9 Mar 2018 15:14:16 +0100 Subject: [PATCH] - Added navigation.php in application/config to configure menus used by NavigationWidget - Addded controller system/Navigation to retrive menus via ajax - Renamed method _setNavigationMenuArray to setNavigationMenuArray and set as public in system/infocenter/InfoCenter - Now the InfoCenter menu is stored in the session - The menu is generated by the widget NavigationWidget via JS - No need anymore to give as parameters to the views the menu arrays --- application/config/navigation.php | 75 +++++++++ application/controllers/system/Navigation.php | 98 +++++++++++ .../system/infocenter/InfoCenter.php | 53 +++--- application/views/home.php | 28 +--- .../views/system/infocenter/infocenter.php | 12 +- .../system/infocenter/infocenterDetails.php | 12 +- application/views/widgets/filter/filter.php | 29 +++- .../views/widgets/filter/saveFilter.php | 6 +- application/views/widgets/navigation.php | 4 +- .../views/widgets/navigationHeader.php | 44 ++++- application/views/widgets/navigationMenu.php | 157 ++++++++++++++---- .../widgets/NavigationHeaderWidget.php | 4 +- application/widgets/NavigationMenuWidget.php | 76 --------- application/widgets/NavigationWidget.php | 5 +- 14 files changed, 405 insertions(+), 198 deletions(-) create mode 100644 application/config/navigation.php create mode 100644 application/controllers/system/Navigation.php diff --git a/application/config/navigation.php b/application/config/navigation.php new file mode 100644 index 000000000..6e1c711ed --- /dev/null +++ b/application/config/navigation.php @@ -0,0 +1,75 @@ + 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/'), + 'Vilesci' => base_url('/vilesci'), + 'CIS' => CIS_ROOT + ) +); + +$config['navigation_menu'] = array(); + +$config['navigation_menu']['Vilesci/index'] = array( + 'Dashboard' => array( + 'link' => '#', + 'description' => 'Dashboard', + 'icon' => 'dashboard' + ), + 'Lehre' => array( + 'link' => '#', + 'icon' => 'graduation-cap', + 'description' => 'Lehre', + 'expand' => true, + 'children'=> array( + 'CIS' => array( + 'link' => CIS_ROOT, + 'icon' => '', + 'description' => 'CIS', + 'expand' => true + ), + 'Infocenter' => array( + 'link' => base_url('index.ci.php/system/infocenter/InfoCenter'), + 'icon' => 'info', + 'description' => 'Infocenter', + 'expand' => true + ), + ) + ), + 'Administration' => array( + 'link' => '#', + 'icon' => 'gear', + 'description' => 'Administration', + 'expand' => false, + 'children'=> array( + 'Vilesci' => array( + 'link' => base_url('vilesci/'), + 'icon' => '', + 'description' => 'Vilesci', + 'expand' => true + ), + 'Extensions' => array( + 'link' => base_url('index.ci.php/system/extensions/Manager'), + 'icon' => 'cubes', + 'description' => 'Extensions Manager', + 'expand' => true + ), + 'Datenschutz' => array( + 'link' => base_url('index.ci.php/extensions/FHC-Core-DSMS/export'), + 'description' => 'Datenschutz', + 'icon' => 'legal', + 'expand' => true + ) + ) + ) +); diff --git a/application/controllers/system/Navigation.php b/application/controllers/system/Navigation.php new file mode 100644 index 000000000..037a7d0f4 --- /dev/null +++ b/application/controllers/system/Navigation.php @@ -0,0 +1,98 @@ +config->load('navigation'); + + // Load session library + $this->load->library('session'); + } + + /** + * + */ + public function menu() + { + $navigation_widget_called = $this->input->get('navigation_widget_called'); + $json = array(); + + if (isset($navigation_widget_called)) + { + $navigationMenuArray = $this->config->item('navigation_menu'); + + if (isset($navigationMenuArray) && is_array($navigationMenuArray)) + { + if (isset($navigationMenuArray[$navigation_widget_called])) + { + $json = $navigationMenuArray[$navigation_widget_called]; + } + } + + if (isset($_SESSION['navigation_menu'])) + { + $navigationMenuSessionArray = $_SESSION['navigation_menu']; + + if (isset($navigationMenuSessionArray) && is_array($navigationMenuSessionArray)) + { + if (isset($navigationMenuSessionArray[$navigation_widget_called])) + { + $json = array_merge($json, $navigationMenuSessionArray[$navigation_widget_called]); + } + } + } + } + + $this->output->set_content_type('application/json')->set_output(json_encode($json)); + } + + /** + * + */ + public function header() + { + $navigation_widget_called = $this->input->get('navigation_widget_called'); + $json = array(); + + if (isset($navigation_widget_called)) + { + $navigationHeaderArray = $this->config->item('navigation_header'); + + if (isset($navigationHeaderArray) && is_array($navigationHeaderArray)) + { + if (isset($navigationHeaderArray[$navigation_widget_called])) + { + $json = $navigationHeaderArray[$navigation_widget_called]; + } + } + + if (isset($_SESSION['navigation_header'])) + { + $navigationHeaderSessionArray = $_SESSION['navigation_header']; + + if (isset($navigationHeaderSessionArray) && is_array($navigationHeaderSessionArray)) + { + if (isset($navigationHeaderSessionArray[$navigation_widget_called])) + { + $json = array_merge($json, $navigationHeaderSessionArray[$navigation_widget_called]); + } + } + } + } + + $this->output->set_content_type('application/json')->set_output(json_encode($json)); + } +} diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index 216aa0619..24c90c908 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -45,8 +45,6 @@ class InfoCenter extends VileSci_Controller ) ); private $uid; // contains the UID of the logged user - private $navigationMenuArray; // contains all the voices for the navigation menu - private $navigationHeaderArray; /** * Constructor @@ -77,12 +75,7 @@ class InfoCenter extends VileSci_Controller if(!$this->permissionlib->isBerechtigt('basis/person')) show_error('You have no Permission! You need Infocenter Role'); - $this->_setNavigationMenuArray(); // sets property navigationMenuArray - - $this->navigationHeaderArray = array( - 'headertext' => 'Infocenter', - 'headertextlink' => base_url('index.ci.php/system/infocenter/InfoCenter') - ); + $this->setNavigationMenuArray(); // sets property navigationMenuArray } // ----------------------------------------------------------------------------------------------------------------- @@ -93,13 +86,7 @@ class InfoCenter extends VileSci_Controller */ public function index() { - $this->load->view( - 'system/infocenter/infocenter.php', - array( - 'navigationHeaderArray' => $this->navigationHeaderArray, - 'navigationMenuArray' => $this->navigationMenuArray - ) - ); + $this->load->view('system/infocenter/infocenter.php'); } /** @@ -131,11 +118,7 @@ class InfoCenter extends VileSci_Controller 'system/infocenter/infocenterDetails.php', array_merge( $persondata, - $prestudentdata, - array( - 'navigationHeaderArray' => $this->navigationHeaderArray, - 'navigationMenuArray' => $this->navigationMenuArray - ) + $prestudentdata ) ); } @@ -464,7 +447,7 @@ class InfoCenter extends VileSci_Controller /** * */ - private function _setNavigationMenuArray() + public function setNavigationMenuArray() { $listFiltersSent = array(); $listFiltersNotSent = array(); @@ -532,12 +515,22 @@ class InfoCenter extends VileSci_Controller $this->_fillCustomFilters($listCustomFilters, $filtersarray['personal']); } - $this->navigationMenuArray = array( - 'dashboard' => array( + if (!isset($_SESSION['navigation_menu'])) + { + $_SESSION['navigation_menu'] = array(); + } + + $_SESSION['navigation_menu']['system/infocenter/InfoCenter/index'] = array( + 'filters' => array( 'link' => '#', - 'description' => 'Dashboard', - 'icon' => 'dashboard' - ), + 'description' => 'Filter', + 'icon' => 'filter', + 'expand' => true, + 'children' => $filtersarray + ) + ); + + $_SESSION['navigation_menu']['system/infocenter/InfoCenter/showDetails'] = array( 'filters' => array( 'link' => '#', 'description' => 'Filter', @@ -565,11 +558,17 @@ class InfoCenter extends VileSci_Controller foreach ($filters as $filterId => $description) { $toPrint = "%s=%s"; + + if ($this->router->method != 'index') + { + + } + $tofill['children'][] = array( 'link' => sprintf($toPrint, base_url('index.ci.php/system/infocenter/InfoCenter?filter_id'), $filterId), 'description' => $description, 'subscriptDescription' => 'Remove', - 'subscriptLinkId' => 'removeFilterById', + 'subscriptLinkClass' => 'remove-filter', 'subscriptLinkValue' => $filterId ); } diff --git a/application/views/home.php b/application/views/home.php index 5e7deddb0..cd032bc71 100644 --- a/application/views/home.php +++ b/application/views/home.php @@ -11,35 +11,9 @@ $this->load->view('templates/FHC-Header', ?>
- 'FH-Complete', 'headertextlink' => base_url('index.ci.php/')); - $navigationMenuArray = array( - 'Dashboard' => array('link' => '#', 'description' => 'Dashboard', 'icon' => 'dashboard'), - 'Lehre' => array('link' => '#', 'icon' => 'graduation-cap', 'description' => 'Lehre', 'expand' => true, - 'children'=> array( - 'CIS' => array('link' => CIS_ROOT, 'icon' => '', 'description' => 'CIS', 'expand' => true), - 'Infocenter' => array('link' => base_url('index.ci.php/system/infocenter/InfoCenter'), 'icon' => 'info', 'description' => 'Infocenter', 'expand' => true), - ) - ), - 'Administration' => array('link' => '#', 'icon' => 'gear', 'description' => 'Administration', 'expand' => false, - 'children'=> array( - 'Vilesci' => array('link' => base_url('vilesci/'), 'icon' => '', 'description' => 'Vilesci', 'expand' => true), - 'Extensions' => array('link' => base_url('index.ci.php/system/extensions/Manager'), 'icon' => 'cubes', 'description' => 'Extensions Manager', 'expand' => true), - 'Datenschutz' => array('link' => base_url('index.ci.php/extensions/FHC-Core-DSMS/export'), 'description' => 'Datenschutz', 'icon' => 'legal','expand' => true) - ) - ), - ); + widgetlib->widget('NavigationWidget'); ?> - echo $this->widgetlib->widget( - 'NavigationWidget', - array( - 'navigationHeader' => $navigationHeaderArray, - 'navigationMenu' => $navigationMenuArray - ) - ); - - ?>
diff --git a/application/views/system/infocenter/infocenter.php b/application/views/system/infocenter/infocenter.php index 3ceaf1fa1..5963f77ca 100644 --- a/application/views/system/infocenter/infocenter.php +++ b/application/views/system/infocenter/infocenter.php @@ -17,15 +17,9 @@
- widgetlib->widget( - 'NavigationWidget', - array( - 'navigationHeader' => $navigationHeaderArray, - 'navigationMenu' => $navigationMenuArray - ) - ); - ?> + + widgetlib->widget('NavigationWidget'); ?> +
diff --git a/application/views/system/infocenter/infocenterDetails.php b/application/views/system/infocenter/infocenterDetails.php index 6ebf5494b..147f5d981 100755 --- a/application/views/system/infocenter/infocenterDetails.php +++ b/application/views/system/infocenter/infocenterDetails.php @@ -26,15 +26,9 @@ ?>
- widgetlib->widget( - 'NavigationWidget', - array( - 'navigationHeader' => $navigationHeaderArray, - 'navigationMenu' => $navigationMenuArray - ) - ); - ?> + + widgetlib->widget('NavigationWidget'); ?> +
diff --git a/application/views/widgets/filter/filter.php b/application/views/widgets/filter/filter.php index 15b9b4b26..606d19b60 100644 --- a/application/views/widgets/filter/filter.php +++ b/application/views/widgets/filter/filter.php @@ -94,9 +94,26 @@ + diff --git a/application/views/widgets/navigationMenu.php b/application/views/widgets/navigationMenu.php index 46905204f..f231bc67e 100644 --- a/application/views/widgets/navigationMenu.php +++ b/application/views/widgets/navigationMenu.php @@ -1,14 +1,3 @@ - - + + diff --git a/application/widgets/NavigationHeaderWidget.php b/application/widgets/NavigationHeaderWidget.php index 95daf33e1..9a1b48d5a 100644 --- a/application/widgets/NavigationHeaderWidget.php +++ b/application/widgets/NavigationHeaderWidget.php @@ -8,8 +8,8 @@ class NavigationHeaderWidget extends Widget /** * */ - public function display($data) + public function display($widgetData) { - $this->view('widgets/navigationHeader', $data); + $this->view('widgets/navigationHeader'); } } diff --git a/application/widgets/NavigationMenuWidget.php b/application/widgets/NavigationMenuWidget.php index b23054706..cabdeeb3f 100644 --- a/application/widgets/NavigationMenuWidget.php +++ b/application/widgets/NavigationMenuWidget.php @@ -5,87 +5,11 @@ */ class NavigationMenuWidget extends Widget { - private $navigationMenu; - - private static $navigationMenuWidgetInstance; - /** * */ public function display($widgetData) { - $this->navigationMenu = $widgetData; - - self::$navigationMenuWidgetInstance = $this; - $this->view('widgets/navigationMenu'); } - - /** - * - */ - public static function printNavigationMenu() - { - foreach (self::$navigationMenuWidgetInstance->navigationMenu as $item) - { - self::printNavItem($item); - } - } - - /** - * - */ - public static function printNavItem($item, $depth = 1) - { - $expanded = isset($item['expand']) && $item['expand'] === true ? ' active' : ''; - - echo '
  • '; - - if (isset($item['subscriptLinkId']) && isset($item['subscriptDescription'])) - { - echo ''; - } - - echo ''; - - if (isset($item['icon'])) - { - echo ' '; - } - - echo $item['description']; - - if (!empty($item['children'])) - { - echo ''; - } - - echo ''; - - if (isset($item['subscriptLinkId']) && isset($item['subscriptDescription'])) - { - echo ''.$item['subscriptDescription'].''; - } - - if (isset($item['subscriptLinkId']) && isset($item['subscriptDescription'])) - { - echo ''; - } - - if (!empty($item['children'])) - { - $level = ''; - if ($depth === 1) - $level = 'second'; - elseif ($depth > 1) - $level = 'third'; - - echo ''; - } - - echo '
  • '; - } } diff --git a/application/widgets/NavigationWidget.php b/application/widgets/NavigationWidget.php index 7835032ce..5ce5e95b5 100644 --- a/application/widgets/NavigationWidget.php +++ b/application/widgets/NavigationWidget.php @@ -5,14 +5,11 @@ */ class NavigationWidget extends Widget { - const NAVIGATION_HEADER = 'navigationHeader'; // - const NAVIGATION_MENU = 'navigationMenu'; // - /** * */ public function display($widgetData) { - $this->view('widgets/navigation', array('widgetData' => $widgetData)); + $this->view('widgets/navigation'); } }