mirror of
https://github.com/humhub/humhub.git
synced 2025-02-19 23:54:54 +01:00
Changed menu/base stack max/default sort order; Make sure space ;5CAbout is on last position
This commit is contained in:
parent
03531aa61d
commit
e6aa7cb9e9
@ -10,11 +10,11 @@ namespace humhub\libs;
|
||||
|
||||
class Sort
|
||||
{
|
||||
public static function sort(&$arr, $field = 'sortOrder')
|
||||
public static function sort(&$arr, $field = 'sortOrder', $default = PHP_INT_MAX)
|
||||
{
|
||||
usort($arr, function($a, $b) use ($field) {
|
||||
$sortA = static::getSortValue($a, $field);
|
||||
$sortB = static::getSortValue($b, $field);
|
||||
usort($arr, function ($a, $b) use ($field, $default) {
|
||||
$sortA = static::getSortValue($a, $field, $default);
|
||||
$sortB = static::getSortValue($b, $field, $default);
|
||||
|
||||
if ($sortA == $sortB) {
|
||||
return 0;
|
||||
@ -28,14 +28,14 @@ class Sort
|
||||
return $arr;
|
||||
}
|
||||
|
||||
private static function getSortValue($obj, $field)
|
||||
private static function getSortValue($obj, $field, $default)
|
||||
{
|
||||
if(is_array($obj) && isset($obj[$field])) {
|
||||
return $obj[$field] === null ? PHP_INT_MAX : $obj[$field];
|
||||
if (is_array($obj) && isset($obj[$field])) {
|
||||
return $obj[$field] === null ? $default : $obj[$field];
|
||||
}
|
||||
|
||||
if(property_exists($obj, $field)) {
|
||||
return $obj->$field === null ? PHP_INT_MAX : $obj->$field;
|
||||
if (property_exists($obj, $field)) {
|
||||
return $obj->$field === null ? $default : $obj->$field;
|
||||
}
|
||||
|
||||
return PHP_INT_MAX;
|
||||
|
@ -68,7 +68,7 @@ class Menu extends LeftNavigation
|
||||
'label' => Yii::t('SpaceModule.base', 'About'),
|
||||
'url' => $this->space->createUrl('/space/space/about'),
|
||||
'icon' => 'info-circle',
|
||||
'sortOrder' => 100,
|
||||
'sortOrder' => 10000,
|
||||
'isActive' => MenuLink::isActiveState('space', 'space', ['about']),
|
||||
]));
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ abstract class MenuEntry extends BaseObject
|
||||
protected $id;
|
||||
|
||||
/**
|
||||
* @var int the sort order
|
||||
* @var int the sort order. a value between 0 and 10000
|
||||
*/
|
||||
protected $sortOrder;
|
||||
|
||||
|
@ -87,7 +87,6 @@ abstract class Menu extends JsWidget
|
||||
}
|
||||
|
||||
|
||||
|
||||
return $this->render($this->template, $this->getViewParams());
|
||||
}
|
||||
|
||||
@ -115,7 +114,7 @@ abstract class Menu extends JsWidget
|
||||
*/
|
||||
public function getSortedEntries()
|
||||
{
|
||||
return Sort::sort($this->entries);
|
||||
return Sort::sort($this->entries, 'sortOrder', 9000);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -141,7 +140,7 @@ abstract class Menu extends JsWidget
|
||||
}
|
||||
|
||||
foreach ($this->entries as $entry) {
|
||||
if(!$entry instanceof MenuLink) {
|
||||
if (!$entry instanceof MenuLink) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -162,7 +161,7 @@ abstract class Menu extends JsWidget
|
||||
public function getEntryById($id)
|
||||
{
|
||||
foreach ($this->entries as $entry) {
|
||||
if(!$entry instanceof MenuEntry) {
|
||||
if (!$entry instanceof MenuEntry) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -207,8 +206,8 @@ abstract class Menu extends JsWidget
|
||||
*/
|
||||
|
||||
/**
|
||||
* @deprecated since 1.4
|
||||
* @param array $entryArray
|
||||
* @deprecated since 1.4
|
||||
*/
|
||||
public function addItem($entryArray)
|
||||
{
|
||||
@ -217,8 +216,8 @@ abstract class Menu extends JsWidget
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 1.4 not longer supported!
|
||||
* @return array item group
|
||||
* @deprecated since 1.4 not longer supported!
|
||||
*/
|
||||
public function addItemGroup($itemGroup)
|
||||
{
|
||||
@ -226,8 +225,8 @@ abstract class Menu extends JsWidget
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 1.4
|
||||
* @return array the item group
|
||||
* @deprecated since 1.4
|
||||
*/
|
||||
public function getItemGroups()
|
||||
{
|
||||
@ -237,14 +236,14 @@ abstract class Menu extends JsWidget
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 1.4
|
||||
* @return array the menu items as array list
|
||||
* @deprecated since 1.4
|
||||
*/
|
||||
public function getItems($group = '')
|
||||
{
|
||||
$items = [];
|
||||
foreach ($this->entries as $entry) {
|
||||
if($entry instanceof MenuLink) {
|
||||
if ($entry instanceof MenuLink) {
|
||||
$items[] = $entry->toArray();
|
||||
}
|
||||
}
|
||||
@ -265,7 +264,7 @@ abstract class Menu extends JsWidget
|
||||
{
|
||||
$result = [];
|
||||
foreach ($this->getSortedEntries() as $entry) {
|
||||
if((!$filterVisible || $entry->isVisible()) && (!$type || get_class($entry) === $type || is_subclass_of($entry, $type))) {
|
||||
if ((!$filterVisible || $entry->isVisible()) && (!$type || get_class($entry) === $type || is_subclass_of($entry, $type))) {
|
||||
$result[] = $entry;
|
||||
}
|
||||
}
|
||||
@ -281,7 +280,7 @@ abstract class Menu extends JsWidget
|
||||
public function getFirstEntry($type = null, $filterVisible = false)
|
||||
{
|
||||
$entries = $this->getEntries($type, $filterVisible);
|
||||
if(count($entries)) {
|
||||
if (count($entries)) {
|
||||
return $entries[0];
|
||||
}
|
||||
|
||||
@ -354,8 +353,8 @@ abstract class Menu extends JsWidget
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 1.4
|
||||
* @return array the menu entry as array
|
||||
* @deprecated since 1.4
|
||||
*/
|
||||
public function getActive()
|
||||
{
|
||||
@ -368,8 +367,8 @@ abstract class Menu extends JsWidget
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 1.4
|
||||
* @param $url string the URL or route
|
||||
* @deprecated since 1.4
|
||||
*/
|
||||
public function deleteItemByUrl($url)
|
||||
{
|
||||
|
@ -27,13 +27,15 @@ class BaseStack extends Widget
|
||||
const EVENT_INIT = 'init';
|
||||
const EVENT_RUN = 'run';
|
||||
|
||||
const DEFAULT_SORT_ORDER = 9000;
|
||||
|
||||
/**
|
||||
* Holds all added widgets
|
||||
*
|
||||
* Array
|
||||
* [0] Classname
|
||||
* [1] Params Arrays
|
||||
* [2] Additional Options
|
||||
* [2] Additional Options e.g. sortOrder (0-10000)
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
@ -118,8 +120,8 @@ class BaseStack extends Widget
|
||||
{
|
||||
|
||||
usort($this->widgets, function($a, $b) {
|
||||
$sortA = (isset($a[2]['sortOrder'])) ? $a[2]['sortOrder'] : 100;
|
||||
$sortB = (isset($b[2]['sortOrder'])) ? $b[2]['sortOrder'] : 100;
|
||||
$sortA = (isset($a[2]['sortOrder'])) ? $a[2]['sortOrder'] : static::DEFAULT_SORT_ORDER;
|
||||
$sortB = (isset($b[2]['sortOrder'])) ? $b[2]['sortOrder'] : static::DEFAULT_SORT_ORDER;
|
||||
|
||||
if ($sortA == $sortB) {
|
||||
return 0;
|
||||
@ -143,7 +145,7 @@ class BaseStack extends Widget
|
||||
public function addWidget($className, $params = [], $options = [])
|
||||
{
|
||||
if (!isset($options['sortOrder'])) {
|
||||
$options['sortOrder'] = 100;
|
||||
$options['sortOrder'] = static::DEFAULT_SORT_ORDER;
|
||||
}
|
||||
|
||||
$this->widgets[] = [
|
||||
|
Loading…
x
Reference in New Issue
Block a user