mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-21 08:52:21 +00:00
Modified Site Navigation to Support Wildcard Entries
This commit is contained in:
@@ -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',
|
||||
|
||||
|
||||
@@ -1,18 +1,8 @@
|
||||
<?php
|
||||
|
||||
$config['navigation_header'] = array(
|
||||
'Vilesci/index' => 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
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -723,6 +723,7 @@ class ExtensionsLib
|
||||
);
|
||||
if (!$_addSoftLinks)
|
||||
{
|
||||
log_message('error','Failed to create Symlink to '.$extensionPath.$targetDirectory);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user