diff options
author | git-marijus <mario@mariovavti.com> | 2017-05-17 10:06:14 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-17 10:06:14 +0200 |
commit | ed4d5890770febc994f55b8eb1b9b3f6a380e664 (patch) | |
tree | 92956525aed778f630af821988a9bb0c0d14e88f | |
parent | 47a080d79c6e685f3f99c01eb7df0747066d76d5 (diff) | |
parent | a1ba44db720abab58d8b6b13035daa25710acd03 (diff) | |
download | volse-hubzilla-ed4d5890770febc994f55b8eb1b9b3f6a380e664.tar.gz volse-hubzilla-ed4d5890770febc994f55b8eb1b9b3f6a380e664.tar.bz2 volse-hubzilla-ed4d5890770febc994f55b8eb1b9b3f6a380e664.zip |
Merge pull request #783 from zotlabs/app_order
provide mechanism to arbitrarily sort the nav tray apps, currently th…
-rw-r--r-- | Zotlabs/Lib/Apps.php | 44 | ||||
-rw-r--r-- | include/nav.php | 2 |
2 files changed, 46 insertions, 0 deletions
diff --git a/Zotlabs/Lib/Apps.php b/Zotlabs/Lib/Apps.php index 2ace361ca..102ed8bd1 100644 --- a/Zotlabs/Lib/Apps.php +++ b/Zotlabs/Lib/Apps.php @@ -539,6 +539,50 @@ class Apps { return($r); } + static public function app_order($uid,$apps) { + + if(! $apps) + return $apps; + + $x = (($uid) ? get_pconfig($uid,'system','app_order') : get_config('system','app_order')); + if(($x) && (! is_array($x))) { + $y = explode(',',$x); + $y = array_map('trim',$y); + $x = $y; + } + + if(! (is_array($x) && ($x))) + return $apps; + + $ret = []; + foreach($x as $xx) { + $y = self::find_app_in_array($xx,$apps); + if($y) { + $ret[] = $y; + } + } + foreach($apps as $ap) { + if(! self::find_app_in_array($ap['name'],$ret)) { + $ret[] = $ap; + } + } + return $ret; + + } + + static function find_app_in_array($name,$arr) { + if(! $arr) + return false; + foreach($arr as $x) { + if($x['name'] === $name) { + return $x; + } + } + return false; + } + + + static public function app_decode($s) { $x = base64_decode(str_replace(array('<br />',"\r","\n",' '),array('','','',''),$s)); diff --git a/include/nav.php b/include/nav.php index 849e19d9a..0fd555abf 100644 --- a/include/nav.php +++ b/include/nav.php @@ -257,6 +257,8 @@ EOT; usort($syslist,'Zotlabs\\Lib\\Apps::app_name_compare'); + $syslist = Zlib\Apps::app_order(local_channel(),$syslist); + foreach($syslist as $app) { $nav_apps[] = Zlib\Apps::app_render($app,'nav'); } |