Version 5.0.13
This commit is contained in:
1 parent
b89858b2ff
commit
5efe744c5f
1407 files changed
+69690
-30177
No files matched your search
+65
-44
@@ -278,6 +278,11 @@ class Admin extends Standard
|
||||
{
|
||||
foreach ( Db::i()->select( '*', 'core_acp_search_index' ) as $word )
|
||||
{
|
||||
if( !empty( $word['callback'] ) and !eval( $word['callback'] ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$this->searchKeywords[ $word['url'] ]['lang_key'] = $word['lang_key'];
|
||||
$this->searchKeywords[ $word['url'] ]['restriction'] = $word['restriction'];
|
||||
$this->searchKeywords[ $word['url'] ]['keywords'][] = $word['keyword'];
|
||||
@@ -422,10 +427,11 @@ class Admin extends Standard
|
||||
public function buildMenu(bool $rebuild=FALSE ): ?array
|
||||
{
|
||||
$acpTabOrder = $this->_getAcpTabOrder();
|
||||
$alwaysFirst = [];
|
||||
|
||||
if ( $this->menu === NULL or $rebuild === TRUE )
|
||||
if ( $this->menu === null or $rebuild === true )
|
||||
{
|
||||
$this->menu = array( 'tabs' => array(), 'defaults' => array(), 'badges' );
|
||||
$this->menu = ['tabs' => [], 'defaults' => [], 'badges'];
|
||||
|
||||
foreach ( Application::applications() as $app )
|
||||
{
|
||||
@@ -433,11 +439,15 @@ class Admin extends Standard
|
||||
{
|
||||
$appMenu = $app->acpMenu();
|
||||
|
||||
if ( $acpTabOrder !== NULL and isset( $acpTabOrder[ $app->directory ] ) and $app->directory == 'nexus' )
|
||||
if ( $appItemsFirst = $app->acpMenuItemsAlwayFirst() and count( $appItemsFirst ) )
|
||||
{
|
||||
uksort( $appMenu, function( $a, $b ) use ( $acpTabOrder, $app )
|
||||
{
|
||||
return array_search( "{$app->directory}_{$a}", $acpTabOrder[ $app->directory ] ) - array_search( "{$app->directory}_{$b}", $acpTabOrder[ $app->directory ] );
|
||||
$alwaysFirst = array_merge( $alwaysFirst, $appItemsFirst );
|
||||
}
|
||||
|
||||
if ( $acpTabOrder !== null and isset( $acpTabOrder[$app->directory] ) and $app->directory == 'nexus' )
|
||||
{
|
||||
uksort( $appMenu, function ( $a, $b ) use ( $acpTabOrder, $app ) {
|
||||
return array_search( "{$app->directory}_{$a}", $acpTabOrder[$app->directory] ) - array_search( "{$app->directory}_{$b}", $acpTabOrder[$app->directory] );
|
||||
} );
|
||||
}
|
||||
|
||||
@@ -455,34 +465,34 @@ class Admin extends Standard
|
||||
|
||||
if ( Member::loggedIn()->hasAcpRestriction( $app, $moduleToCheck ) )
|
||||
{
|
||||
if( !$item['restriction'] )
|
||||
if ( !$item['restriction'] )
|
||||
{
|
||||
$canAccess = TRUE;
|
||||
$canAccess = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if( mb_strpos( $item['restriction'], ',' ) )
|
||||
if ( mb_strpos( $item['restriction'], ',' ) )
|
||||
{
|
||||
$restrictions = explode( ',', $item['restriction'] );
|
||||
}
|
||||
else
|
||||
{
|
||||
$restrictions = array( $item['restriction'] );
|
||||
$restrictions = [$item['restriction']];
|
||||
}
|
||||
|
||||
$canAccess = FALSE;
|
||||
$canAccess = false;
|
||||
|
||||
foreach( $restrictions as $restrictionKey )
|
||||
foreach ( $restrictions as $restrictionKey )
|
||||
{
|
||||
if( Member::loggedIn()->hasAcpRestriction( $app, $moduleToCheck, $restrictionKey ) )
|
||||
if ( Member::loggedIn()->hasAcpRestriction( $app, $moduleToCheck, $restrictionKey ) )
|
||||
{
|
||||
$canAccess = TRUE;
|
||||
$canAccess = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( isset( $item['activemenuitem'] ) and $item['activemenuitem'] )
|
||||
if ( isset( $item['activemenuitem'] ) and $item['activemenuitem'] )
|
||||
{
|
||||
$groupKey = substr( $item['activemenuitem'], 0, strrpos( $item['activemenuitem'], '_' ) );
|
||||
$itemKey = substr( $item['activemenuitem'], strrpos( $item['activemenuitem'], '_' ) + 1 );
|
||||
@@ -494,13 +504,13 @@ class Admin extends Standard
|
||||
|
||||
if ( $canAccess )
|
||||
{
|
||||
$this->menu['tabs'][ $item['tab'] ][ "{$groupKey}" ][ $itemKey ] = "app={$app->directory}&module={$moduleUrl}&controller={$item['controller']}" . ( $item['do'] ? "&do={$item['do']}" : '' );
|
||||
$this->menu['tabs'][$item['tab']]["{$groupKey}"][$itemKey] = "app={$app->directory}&module={$moduleUrl}&controller={$item['controller']}" . ( $item['do'] ? "&do={$item['do']}" : '' );
|
||||
}
|
||||
|
||||
/* Custom badge */
|
||||
if( isset( $item['badge'] ) and $item['badge'] )
|
||||
if ( isset( $item['badge'] ) and $item['badge'] )
|
||||
{
|
||||
$this->menu['badges'][ "{$groupKey}_{$itemKey}" ] = $item['badge'];
|
||||
$this->menu['badges']["{$groupKey}_{$itemKey}"] = $item['badge'];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -510,53 +520,51 @@ class Admin extends Standard
|
||||
}
|
||||
|
||||
/* Developer Center */
|
||||
if( \IPS\IN_DEV )
|
||||
if ( \IPS\IN_DEV )
|
||||
{
|
||||
$currentApp = Request::i()->appKey ?? 'core';
|
||||
foreach( $this->menu['tabs']['developer'] as $module => $controllers )
|
||||
foreach ( $this->menu['tabs']['developer'] as $module => $controllers )
|
||||
{
|
||||
foreach( $controllers as $key => $url )
|
||||
foreach ( $controllers as $key => $url )
|
||||
{
|
||||
parse_str( $url, $params );
|
||||
$params['module'] = 'developer';
|
||||
$params['appKey'] = $currentApp;
|
||||
$this->menu['tabs']['developer'][ $module ][ $key ] = http_build_query( $params );
|
||||
$this->menu['tabs']['developer'][$module][$key] = http_build_query( $params );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( $acpTabOrder !== NULL )
|
||||
|
||||
if ( $acpTabOrder !== null )
|
||||
{
|
||||
$_apps = array_keys( $acpTabOrder );
|
||||
uksort( $this->menu['tabs'], function($a, $b) use ( $_apps )
|
||||
{
|
||||
if( !in_array( $a, $_apps ) )
|
||||
$_apps = array_keys( $acpTabOrder );
|
||||
uksort( $this->menu['tabs'], function ( $a, $b ) use ( $_apps ) {
|
||||
if ( !in_array( $a, $_apps ) )
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
if( !in_array( $b, $_apps ) )
|
||||
if ( !in_array( $b, $_apps ) )
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
return array_search( $a, $_apps ) - array_search( $b, $_apps );
|
||||
} );
|
||||
|
||||
foreach( $acpTabOrder as $app => $submenu )
|
||||
|
||||
foreach ( $acpTabOrder as $app => $submenu )
|
||||
{
|
||||
if ( !empty( $submenu ) )
|
||||
{
|
||||
if( isset( $this->menu['tabs'][ $app ] ) )
|
||||
if ( isset( $this->menu['tabs'][$app] ) )
|
||||
{
|
||||
uksort( $this->menu['tabs'][ $app ], function($a, $b) use ( $submenu )
|
||||
{
|
||||
if( !in_array( $a, $submenu ) )
|
||||
uksort( $this->menu['tabs'][$app], function ( $a, $b ) use ( $submenu ) {
|
||||
if ( !in_array( $a, $submenu ) )
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
if( !in_array( $b, $submenu ) )
|
||||
if ( !in_array( $b, $submenu ) )
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
@@ -564,11 +572,10 @@ class Admin extends Standard
|
||||
return array_search( $a, $submenu ) - array_search( $b, $submenu );
|
||||
} );
|
||||
}
|
||||
|
||||
|
||||
if ( isset( $this->menu['defaults'] ) )
|
||||
{
|
||||
uksort( $this->menu['defaults'], function($a, $b) use ( $acpTabOrder )
|
||||
{
|
||||
uksort( $this->menu['defaults'], function ( $a, $b ) use ( $acpTabOrder ) {
|
||||
return array_search( $a, $acpTabOrder );
|
||||
} );
|
||||
}
|
||||
@@ -577,15 +584,29 @@ class Admin extends Standard
|
||||
}
|
||||
|
||||
/* Now set the tab defaults */
|
||||
foreach( $this->menu['tabs'] as $tab => $menu )
|
||||
foreach ( $this->menu['tabs'] as $tab => $menu )
|
||||
{
|
||||
if ( !isset( $this->menu['defaults'][ $tab ] ) )
|
||||
if ( !isset( $this->menu['defaults'][$tab] ) )
|
||||
{
|
||||
foreach( $menu as $group => $submenu )
|
||||
foreach ( $menu as $group => $submenu )
|
||||
{
|
||||
$this->menu['defaults'][ $tab ] = array_values($submenu)[0];
|
||||
$this->menu['defaults'][$tab] = array_values( $submenu )[0];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Set any items to be first */
|
||||
foreach ( $alwaysFirst as $entry )
|
||||
{
|
||||
foreach ( $entry as $key => $menuItem )
|
||||
{
|
||||
if ( isset( $this->menu['tabs'][$key] ) and isset( $this->menu['tabs'][$key][$menuItem] ) )
|
||||
{
|
||||
$first = $this->menu['tabs'][$key][$menuItem];
|
||||
unset( $this->menu['tabs'][$key][$menuItem] );
|
||||
$this->menu['tabs'][$key] = array_merge( [$menuItem => $first], $this->menu['tabs'][$key] );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user