aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgit-marijus <mario@mariovavti.com>2017-05-17 10:06:14 +0200
committerGitHub <noreply@github.com>2017-05-17 10:06:14 +0200
commited4d5890770febc994f55b8eb1b9b3f6a380e664 (patch)
tree92956525aed778f630af821988a9bb0c0d14e88f
parent47a080d79c6e685f3f99c01eb7df0747066d76d5 (diff)
parenta1ba44db720abab58d8b6b13035daa25710acd03 (diff)
downloadvolse-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.php44
-rw-r--r--include/nav.php2
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');
}