aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Zotlabs/Lib/Apps.php9
-rw-r--r--app/channel.apd4
-rw-r--r--app/connections.apd4
-rw-r--r--app/directory.apd4
-rw-r--r--app/events.apd4
-rw-r--r--app/firefoxshare.apd4
-rw-r--r--app/grid.apd4
-rw-r--r--app/help.apd4
-rw-r--r--app/login.apd3
-rw-r--r--app/mail.apd6
-rw-r--r--app/photos.apd4
-rw-r--r--app/pphoto.apd4
-rw-r--r--app/profile.apd4
-rw-r--r--app/storage.apd4
-rw-r--r--app/wiki.apd4
-rw-r--r--include/nav.php63
-rw-r--r--view/css/bootstrap-red.css49
-rw-r--r--view/js/main.js30
-rw-r--r--view/theme/redbasic/css/style.css29
-rw-r--r--view/tpl/app.tpl7
-rwxr-xr-xview/tpl/nav.tpl360
-rw-r--r--view/tpl/navapps.tpl17
22 files changed, 286 insertions, 335 deletions
diff --git a/Zotlabs/Lib/Apps.php b/Zotlabs/Lib/Apps.php
index 595cf33ee..c8345e351 100644
--- a/Zotlabs/Lib/Apps.php
+++ b/Zotlabs/Lib/Apps.php
@@ -339,12 +339,9 @@ class Apps {
}
$install_action = (($installed) ? t('Update') : t('Install'));
- $icon = ((strpos($papp['photo'],'icon:') === 0) ? substr($papp['photo'],5) : '');
-
return replace_macros(get_markup_template('app.tpl'),array(
'$app' => $papp,
- '$icon' => $icon,
'$hosturl' => $hosturl,
'$purchase' => (($papp['page'] && (! $installed)) ? t('Purchase') : ''),
'$install' => (($hosturl && $mode == 'view') ? $install_action : ''),
@@ -512,8 +509,11 @@ class Apps {
intval(TERM_OBJ_APP),
intval($r[$x]['id'])
);
+
+ $r[$x]['app_icon'] = ((strpos($r[$x]['app_photo'],'icon:') === 0) ? substr($r[$x]['app_photo'],5) : '');
}
}
+
return($r);
}
@@ -719,6 +719,9 @@ class Apps {
if($app['app_photo'])
$ret['photo'] = $app['app_photo'];
+ if($app['app_icon'])
+ $ret['icon'] = $app['app_icon'];
+
if($app['app_version'])
$ret['version'] = $app['app_version'];
diff --git a/app/channel.apd b/app/channel.apd
index 0b5400ae4..a13f9fd8b 100644
--- a/app/channel.apd
+++ b/app/channel.apd
@@ -1,4 +1,6 @@
+version: 1
url: $baseurl/channel/$nick
requires: local_channel
name: Channel Home
-photo: $baseurl/app/home.png
+photo: icon:home
+categories: nav_featured_app, Conversation, Personal
diff --git a/app/connections.apd b/app/connections.apd
index f4b5ad87a..63bc1ef1f 100644
--- a/app/connections.apd
+++ b/app/connections.apd
@@ -1,4 +1,6 @@
+version: 1
url: $baseurl/connections
requires: local_channel
name: Connections
-photo: $baseurl/app/connections.png
+photo: icon:users
+categories: nav_featured_app, Social
diff --git a/app/directory.apd b/app/directory.apd
index c4a6f12d9..a4efa1831 100644
--- a/app/directory.apd
+++ b/app/directory.apd
@@ -1,3 +1,5 @@
+version: 1
url: $baseurl/directory
name: Directory
-photo: $baseurl/app/directory.png
+photo: icon:sitemap
+categories: nav_featured_app, Social
diff --git a/app/events.apd b/app/events.apd
index dd725e177..dc3257d77 100644
--- a/app/events.apd
+++ b/app/events.apd
@@ -1,4 +1,6 @@
+version: 1
url: $baseurl/events
requires: local_channel
name: Events
-photo: $baseurl/app/events.png
+photo: icon:calendar
+categories: nav_featured_app, Productivity
diff --git a/app/firefoxshare.apd b/app/firefoxshare.apd
deleted file mode 100644
index 5e0f38b4e..000000000
--- a/app/firefoxshare.apd
+++ /dev/null
@@ -1,4 +0,0 @@
-url: $baseurl/ffsapi
-requires: local_channel
-name: Firefox Share
-photo: $baseurl/app/firefoxshare.png
diff --git a/app/grid.apd b/app/grid.apd
index bc77aa6f1..e152c33d0 100644
--- a/app/grid.apd
+++ b/app/grid.apd
@@ -1,4 +1,6 @@
+version: 1
url: $baseurl/network
requires: local_channel
name: Grid
-photo: $baseurl/images/hubzilla_logo_6.png
+photo: icon:th
+categories: nav_featured_app, Conversation, Social
diff --git a/app/help.apd b/app/help.apd
index ca7208e6a..8c7d2ea83 100644
--- a/app/help.apd
+++ b/app/help.apd
@@ -1,3 +1,5 @@
+version: 1
url: $baseurl/help
name: Help
-photo: $baseurl/app/help.png
+photo: icon:question
+categories: nav_featured_app
diff --git a/app/login.apd b/app/login.apd
index e4cccbc7e..1cbb44f1b 100644
--- a/app/login.apd
+++ b/app/login.apd
@@ -1,4 +1,5 @@
+version: 1
url: $baseurl/login
requires: nologin
name: Login
-photo: $baseurl/app/login.png
+photo: icon:sign-in
diff --git a/app/mail.apd b/app/mail.apd
index b9fdb9967..cc427500e 100644
--- a/app/mail.apd
+++ b/app/mail.apd
@@ -1,4 +1,6 @@
-url: $baseurl/message
+version: 1
+url: $baseurl/mail/combined
requires: local_channel
name: Mail
-photo: $baseurl/app/mail.png
+photo: icon:envelope
+categories: nav_featured_app, Conversation
diff --git a/app/photos.apd b/app/photos.apd
index 3422d5205..7a7a4b7b6 100644
--- a/app/photos.apd
+++ b/app/photos.apd
@@ -1,4 +1,6 @@
+version: 1
url: $baseurl/photos/$nick
requires: local_channel
name: Photos
-photo: $baseurl/app/photos.png
+photo: icon:photo
+categories: Multimedia
diff --git a/app/pphoto.apd b/app/pphoto.apd
deleted file mode 100644
index 302b85d9e..000000000
--- a/app/pphoto.apd
+++ /dev/null
@@ -1,4 +0,0 @@
-url: $baseurl/profile_photo
-requires: local_channel
-name: Profile Photo
-photo: $baseurl/app/pphoto.png
diff --git a/app/profile.apd b/app/profile.apd
deleted file mode 100644
index 48e5d5814..000000000
--- a/app/profile.apd
+++ /dev/null
@@ -1,4 +0,0 @@
-url: $baseurl/profile/$nick
-requires: local_channel
-name: View Profile
-photo: $baseurl/app/profile.png
diff --git a/app/storage.apd b/app/storage.apd
index c959a3cd4..7dcbcc089 100644
--- a/app/storage.apd
+++ b/app/storage.apd
@@ -1,4 +1,6 @@
+version: 1
url: $baseurl/cloud/$nick
requires: local_channel
name: Files
-photo: $baseurl/app/storage.png
+photo: icon:folder-open
+categories: Productivity
diff --git a/app/wiki.apd b/app/wiki.apd
index 95245055c..94a3e6741 100644
--- a/app/wiki.apd
+++ b/app/wiki.apd
@@ -1,4 +1,6 @@
+version: 1
url: $baseurl/wiki/$nick
requires: local_channel
name: Wiki
-photo: $baseurl/app/wiki.png
+photo: icon:pencil-square-o
+categories: Productivity
diff --git a/include/nav.php b/include/nav.php
index 846ede717..3c97d42da 100644
--- a/include/nav.php
+++ b/include/nav.php
@@ -99,30 +99,30 @@ EOT;
$nav['logout'] = Array('logout',t('Logout'), "", t('End this session'),'logout_nav_btn');
// user menu
- $nav['usermenu'][] = Array('channel/' . $channel['channel_address'], t('Home'), "", t('Your posts and conversations'),'channel_nav_btn');
+ //$nav['usermenu'][] = Array('channel/' . $channel['channel_address'], t('Home'), "", t('Your posts and conversations'),'channel_nav_btn');
$nav['usermenu'][] = Array('profile/' . $channel['channel_address'], t('View Profile'), "", t('Your profile page'),'profile_nav_btn');
if(feature_enabled(local_channel(),'multi_profiles') && (! $basic))
$nav['usermenu'][] = Array('profiles', t('Edit Profiles'),"", t('Manage/Edit profiles'),'profiles_nav_btn');
else
$nav['usermenu'][] = Array('profiles/' . $prof[0]['id'], t('Edit Profile'),"", t('Edit your profile'),'profiles_nav_btn');
- $nav['usermenu'][] = Array('photos/' . $channel['channel_address'], t('Photos'), "", t('Your photos'),'photos_nav_btn');
- $nav['usermenu'][] = Array('cloud/' . $channel['channel_address'],t('Files'),"",t('Your files'),'cloud_nav_btn');
+ //$nav['usermenu'][] = Array('photos/' . $channel['channel_address'], t('Photos'), "", t('Your photos'),'photos_nav_btn');
+ //$nav['usermenu'][] = Array('cloud/' . $channel['channel_address'],t('Files'),"",t('Your files'),'cloud_nav_btn');
- if((! $basic) && feature_enabled(local_channel(),'ajaxchat'))
- $nav['usermenu'][] = Array('chat/' . $channel['channel_address'], t('Chat'),"",t('Your chatrooms'),'chat_nav_btn');
+ //if((! $basic) && feature_enabled(local_channel(),'ajaxchat'))
+ // $nav['usermenu'][] = Array('chat/' . $channel['channel_address'], t('Chat'),"",t('Your chatrooms'),'chat_nav_btn');
- require_once('include/menu.php');
- $has_bookmarks = menu_list_count(local_channel(),'',MENU_BOOKMARK) + menu_list_count(local_channel(),'',MENU_SYSTEM|MENU_BOOKMARK);
- if(($has_bookmarks) && (! $basic)) {
- $nav['usermenu'][] = Array('bookmarks', t('Bookmarks'), "", t('Your bookmarks'),'bookmarks_nav_btn');
- }
+ //require_once('include/menu.php');
+ //$has_bookmarks = menu_list_count(local_channel(),'',MENU_BOOKMARK) + menu_list_count(local_channel(),'',MENU_SYSTEM|MENU_BOOKMARK);
+ //if(($has_bookmarks) && (! $basic)) {
+ // $nav['usermenu'][] = Array('bookmarks', t('Bookmarks'), "", t('Your bookmarks'),'bookmarks_nav_btn');
+ //}
- if(feature_enabled($channel['channel_id'],'webpages') && (! $basic))
- $nav['usermenu'][] = Array('webpages/' . $channel['channel_address'],t('Webpages'),"",t('Your webpages'),'webpages_nav_btn');
- if(feature_enabled($channel['channel_id'],'wiki') && (! $basic))
- $nav['usermenu'][] = Array('wiki/' . $channel['channel_address'],t('Wikis'),"",t('Your wikis'),'wiki_nav_btn');
+ //if(feature_enabled($channel['channel_id'],'webpages') && (! $basic))
+ // $nav['usermenu'][] = Array('webpages/' . $channel['channel_address'],t('Webpages'),"",t('Your webpages'),'webpages_nav_btn');
+ //if(feature_enabled($channel['channel_id'],'wiki') && (! $basic))
+ // $nav['usermenu'][] = Array('wiki/' . $channel['channel_address'],t('Wikis'),"",t('Your wikis'),'wiki_nav_btn');
}
else {
if(! get_account_id()) {
@@ -254,28 +254,25 @@ EOT;
//app bin
- $navapps = '';
- if(get_config('system','experimental_app_bin')) {
- if(local_channel()) {
- //Zlib\Apps::import_system_apps();
- $syslist = array();
- $list = Zlib\Apps::app_list(local_channel(), false, 'nav_featured_app');
- if($list) {
- foreach($list as $li) {
- $syslist[] = Zlib\Apps::app_encode($li);
- }
+ if(local_channel()) {
+ //Zlib\Apps::import_system_apps();
+ $syslist = array();
+ $list = Zlib\Apps::app_list(local_channel(), false, 'nav_featured_app');
+ if($list) {
+ foreach($list as $li) {
+ $syslist[] = Zlib\Apps::app_encode($li);
}
- Zlib\Apps::translate_system_apps($syslist);
- }
- else {
- $syslist = Zlib\Apps::get_system_apps(true);
}
-
- $navapps = replace_macros(get_markup_template('navapps.tpl'), array(
- '$apps' => $syslist,
- '$localuser' => local_channel(),
- ));
+ Zlib\Apps::translate_system_apps($syslist);
}
+ else {
+ $syslist = Zlib\Apps::get_system_apps(true);
+ }
+
+ $navapps = replace_macros(get_markup_template('navapps.tpl'), array(
+ '$apps' => $syslist,
+ '$localuser' => local_channel(),
+ ));
$tpl = get_markup_template('nav.tpl');
diff --git a/view/css/bootstrap-red.css b/view/css/bootstrap-red.css
index cea911440..f1ebb204e 100644
--- a/view/css/bootstrap-red.css
+++ b/view/css/bootstrap-red.css
@@ -3,23 +3,15 @@
/* nav overrides */
nav .badge {
- position: relative;
- top: -49px;
- left: 2px;
- float: left;
+ position: absolute;
+ top: 1px;
+ left: 1px;
font-size: 10px;
line-height: 20px;
padding: 0px 5px;
height: 20px;
min-width: 20px;
border-radius: 10px;
- cursor: pointer;
-}
-
-@media screen and (max-width: 767px) {
- nav .badge {
- top: -46px;
- }
}
#navbar-collapse-1 i,
@@ -27,31 +19,12 @@ nav .badge {
font-size: 14px;
}
-nav ul li {
- max-height: 50px;
-}
-
nav .navbar-header img {
height: 49px;
width: 49px;
margin-top: 1px;
}
-nav .dropdown-menu {
- max-height: 450px;
- width: 270px;
- overflow-y: auto;
- margin-top: 0px;
-}
-
-nav .navbar-collapse .navbar-left {
- float: left;
-}
-
-nav .navbar-collapse .navbar-right {
- float: right;
-}
-
/* nav overrides end */
@@ -60,13 +33,19 @@ aside .nav-pills > li > a,
padding: 6px 10px;
}
-.wall-item-tools .dropdown-menu {
- min-width: auto;
+nav .dropdown-menu {
+ margin-top: 0px;
+ max-height: 70vh;
+ overflow: auto;
+}
+
+nav .navbar-collapse.in .dropdown-menu {
+ max-height: none;
+ overflow: none;
}
-.dropdown-menu li a {
- overflow: hidden;
- text-overflow: ellipsis;
+.wall-item-tools .dropdown-menu {
+ min-width: auto;
}
.nav-tabs.nav-justified > li {
diff --git a/view/js/main.js b/view/js/main.js
index 2fc912093..db37925e5 100644
--- a/view/js/main.js
+++ b/view/js/main.js
@@ -308,12 +308,6 @@ $(function() {
}
}
- // fancyboxes
- // Is this actually used anywhere?
- $("a.popupbox").colorbox({
- 'transition' : 'elastic'
- });
-
NavUpdate();
// Allow folks to stop the ajax page updates with the pause/break key
$(document).keydown(function(event) {
@@ -374,30 +368,38 @@ function NavUpdate() {
updateCountsOnly = false;
+ if(data.network || data.home || data.intros || data.mail || data.all_events || data.notify) {
+ $('#notifications-btn').css('color', 'white').prop('disabled', false);
+ }
+ else {
+ $('#notifications-btn').css('color', 'grey').prop('disabled', true);
+ $('#navbar-collapse-1').removeClass('in');
+ }
+
if(data.network == 0) {
data.network = '';
- $('.net-update').removeClass('show');
+ $('.net-update, .net-button').hide();
} else {
- $('.net-update').addClass('show');
+ $('.net-update, .net-button').show();
}
$('.net-update').html(data.network);
- if(data.home == 0) { data.home = ''; $('.home-update').removeClass('show'); } else { $('.home-update').addClass('show'); }
+ if(data.home == 0) { data.home = ''; $('.home-update, .home-button').hide(); } else { $('.home-update, .home-button').show(); }
$('.home-update').html(data.home);
- if(data.intros == 0) { data.intros = ''; $('.intro-update').removeClass('show'); } else { $('.intro-update').addClass('show'); }
+ if(data.intros == 0) { data.intros = ''; $('.intro-update, .intro-button').hide(); } else { $('.intro-update, .intro-button').show(); }
$('.intro-update').html(data.intros);
- if(data.mail == 0) { data.mail = ''; $('.mail-update').removeClass('show'); } else { $('.mail-update').addClass('show'); }
+ if(data.mail == 0) { data.mail = ''; $('.mail-update, .mail-button').hide(); } else { $('.mail-update, .mail-button').show(); }
$('.mail-update').html(data.mail);
- if(data.notify == 0) { data.notify = ''; $('.notify-update').removeClass('show'); } else { $('.notify-update').addClass('show'); }
+ if(data.notify == 0) { data.notify = ''; $('.notify-update, .notify-button').hide(); } else { $('.notify-update, .notify-button').show(); }
$('.notify-update').html(data.notify);
if(data.register == 0) { data.register = ''; $('.register-update').removeClass('show'); } else { $('.register-update').addClass('show'); }
$('.register-update').html(data.register);
- if(data.events == 0) { data.events = ''; $('.events-update').removeClass('show'); } else { $('.events-update').addClass('show'); }
+ if(data.events == 0) { data.events = ''; $('.events-update, .events-button').hide(); } else { $('.events-update, .events-button').show(); }
$('.events-update').html(data.events);
if(data.events_today == 0) { data.events_today = ''; $('.events-today-update').removeClass('show'); } else { $('.events-today-update').addClass('show'); $('.events-update').html(data.events + '*'); }
@@ -409,7 +411,7 @@ function NavUpdate() {
if(data.birthdays_today == 0) { data.birthdays_today = ''; $('.birthdays-today-update').removeClass('show'); } else { $('.birthdays-today-update').addClass('show'); $('.birthdays-update').html(data.birthdays + '*'); }
$('.birthdays-today-update').html(data.birthdays_today);
- if(data.all_events == 0) { data.all_events = ''; $('.all_events-update').removeClass('show'); } else { $('.all_events-update').addClass('show'); }
+ if(data.all_events == 0) { data.all_events = ''; $('.all_events-update, .all_events-button').hide(); } else { $('.all_events-update, .all_events-button').show(); }
$('.all_events-update').html(data.all_events);
if(data.all_events_today == 0) { data.all_events_today = ''; $('.all_events-today-update').removeClass('show'); } else { $('.all_events-today-update').addClass('show'); $('.all_events-update').html(data.all_events + '*'); }
diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css
index f5da8a222..02ee689ce 100644
--- a/view/theme/redbasic/css/style.css
+++ b/view/theme/redbasic/css/style.css
@@ -1188,6 +1188,16 @@ margin-right: 50px;
color: $toolicon_colour;
}
+.generic-icons-nav {
+ font-size: 1.2em;
+ margin-right: 7px;
+}
+
+nav .navbar-collapse.in .generic-icons,
+nav .navbar-collapse.collapsing .generic-icons {
+ color: $nav_active_icon_colour;
+}
+
.admin-icons {
font-size: 1.2em;
color: $toolicon_colour;
@@ -1524,7 +1534,6 @@ img.mail-conv-sender-photo {
/* nav bootstrap */
-
nav img {
border-radius: $radiuspx;
}
@@ -1747,22 +1756,11 @@ blockquote {
border-radius: $radiuspx;
}
-nav .badge:hover {
- background-color: #999;
-}
-
nav .badge.home-update,
nav .badge.notify-update,
nav .badge.intro-update,
nav .badge.mail-update {
- background-color:#C9302C;
-}
-
-nav .badge.home-update:hover,
-nav .badge.notify-update:hover,
-nav .badge.intro-update:hover,
-nav .badge.mail-update:hover {
- background-color:#D9534F;
+ background-color: #C9302C;
}
.dropdown-menu {
@@ -1830,7 +1828,8 @@ nav .badge.mail-update:hover {
#expand-aside,
#expand-tabs,
#doco-return-to-top-btn,
-#context-help-btn {
+#context-help-btn,
+#notifications-btn {
color: $nav_active_icon_colour;
padding: 7px 10px;
}
@@ -2103,6 +2102,8 @@ dl.bb-dl > dd > li {
.app-icon {
font-size: 80px;
+ color: $toolicon_colour;
+ text-shadow: 3px 3px 3px lightgrey;
text-align: center;
}
diff --git a/view/tpl/app.tpl b/view/tpl/app.tpl
index 434653e1e..d4b4c19e8 100644
--- a/view/tpl/app.tpl
+++ b/view/tpl/app.tpl
@@ -1,6 +1,6 @@
<div class="app-container">
<div class="app-detail{{if $deleted}} app-deleted{{/if}}">
- <a href="{{$app.url}}" {{if $ap.target}}target="{{$ap.target}}" {{/if}}{{if $app.desc}}title="{{$app.desc}}{{if $app.price}} ({{$app.price}}){{/if}}"{{else}}title="{{$app.name}}"{{/if}}>{{if $icon}}<i class="app-icon fa fa-fw fa-{{$icon}}"></i>{{else}}<img src="{{$app.photo}}" width="80" height="80" />{{/if}}
+ <a href="{{$app.url}}" {{if $ap.target}}target="{{$app.target}}" {{/if}}{{if $app.desc}}title="{{$app.desc}}{{if $app.price}} ({{$app.price}}){{/if}}"{{else}}title="{{$app.name}}"{{/if}}>{{if $app.icon}}<i class="app-icon fa fa-fw fa-{{$app.icon}}"></i>{{else}}<img src="{{$app.photo}}" width="80" height="80" />{{/if}}
<div class="app-name" style="text-align:center;">{{$app.name}}</div>
</a>
</div>
@@ -10,17 +10,18 @@
<a href="{{$app.page}}" class="btn btn-default" title="{{$purchase}}" ><i class="fa fa-external"></i></a>
</div>
{{/if}}
- {{if $install || $update || $delete }}
+
<div class="app-tools">
<form action="{{$hosturl}}appman" method="post">
<input type="hidden" name="papp" value="{{$app.papp}}" />
+ {{if $install || $update || $delete }}
{{if $install}}<button type="submit" name="install" value="{{$install}}" class="btn btn-default btn-xs" title="{{$install}}" ><i class="fa fa-arrow-circle-o-down" ></i></button>{{/if}}
{{if $edit}}<input type="hidden" name="appid" value="{{$app.guid}}" /><button type="submit" name="edit" value="{{$edit}}" class="btn btn-default btn-xs" title="{{$edit}}" ><i class="fa fa-pencil" ></i></button>{{/if}}
{{if $delete}}<button type="submit" name="delete" value="{{if $deleted}}{{$undelete}}{{else}}{{$delete}}{{/if}}" class="btn btn-default btn-xs" title="{{if $deleted}}{{$undelete}}{{else}}{{$delete}}{{/if}}" ><i class="fa fa-trash-o drop-icons"></i></button>{{/if}}
+ {{/if}}
<button type="submit" name="feature" value="feature" class="btn btn-default btn-xs" ><i class="fa fa-star"{{if $featured}} style="color: gold"{{/if}}></i></button>
</form>
</div>
{{/if}}
- {{/if}}
</div>
diff --git a/view/tpl/nav.tpl b/view/tpl/nav.tpl
index c504e5515..8f8165ba1 100755
--- a/view/tpl/nav.tpl
+++ b/view/tpl/nav.tpl
@@ -1,225 +1,184 @@
- <div class="container-fluid">
- <div class="navbar-header">
- <div>
- <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse-1">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </button>
- <button id="expand-tabs" type="button" class="navbar-toggle" data-toggle="collapse" data-target="#tabs-collapse-1">
- <i class="fa fa-arrow-circle-down" id="expand-tabs-icon"></i>
- </button>
- <button id="expand-aside" type="button" class="navbar-toggle" data-toggle="offcanvas" data-target="#region_1">
- <i class="fa fa-arrow-circle-right" id="expand-aside-icon"></i>
- </button>
- {{if $nav.help.6}}
- <button id="context-help-btn" class="navbar-toggle" type="button" onclick="contextualHelp(); return false;">
- <i class="fa fa-question-circle"></i>
- </button>
- {{/if}}
- </div>
- {{if $userinfo}}
- <div class="usermenu-head dropdown-toggle fakelink" data-toggle="dropdown">
- <img id="avatar" src="{{$userinfo.icon}}" alt="{{$userinfo.name}}">
- <span class="caret" id="usermenu-caret"></span>
- </div>
- {{if $localuser}}
- <ul class="dropdown-menu" role="menu" aria-labelledby="avatar">
- {{foreach $nav.usermenu as $usermenu}}
- <li role="presentation"><a href="{{$usermenu.0}}" title="{{$usermenu.3}}" role="menuitem" id="{{$usermenu.4}}">{{$usermenu.1}}</a></li>
- {{/foreach}}
- <li role="presentation" class="divider"></li>
- {{if $nav.profiles}}<li role="presentation"><a href="{{$nav.profiles.0}}" title="{{$nav.profiles.3}}" role="menuitem" id="{{$nav.profiles.4}}">{{$nav.profiles.1}}</a></li>{{/if}}
- {{if $nav.settings}}<li role="presentation"><a href="{{$nav.settings.0}}" title="{{$nav.settings.3}}" role="menuitem" id="{{$nav.settings.4}}">{{$nav.settings.1}}</a></li>{{/if}}
- {{if $nav.manage}}<li role="presentation"><a href="{{$nav.manage.0}}" title="{{$nav.manage.3}}" role="menuitem" id="{{$nav.manage.4}}">{{$nav.manage.1}}</a></li>{{/if}}
- {{if $nav.channels}}
- {{foreach $nav.channels as $chan}}
- <li role="presentation" class="nav-channel-select"><a href="manage/{{$chan.channel_id}}" title="{{$chan.channel_name}}" role="menuitem">{{$chan.channel_name}}</a></li>
- {{/foreach}}
- {{/if}}
- {{if $nav.admin}}
- <li role="presentation" class="divider"></li>
- <li role="presentation"><a href="{{$nav.admin.0}}" title="{{$nav.admin.3}}" role="menuitem" id="{{$nav.admin.4}}">{{$nav.admin.1}}</a></li>
- {{/if}}
- {{if $nav.logout}}
- <li role="presentation" class="divider"></li>
- <li role="presentation"><a href="{{$nav.logout.0}}" title="{{$nav.logout.3}}" role="menuitem" id="{{$nav.logout.4}}">{{$nav.logout.1}}</a></li>
- {{/if}}
- </ul>
- {{else}}
- {{if $nav.rusermenu}}
- <ul class="dropdown-menu" role="menu" aria-labelledby="avatar">
- <li role="presentation"><a href="{{$nav.rusermenu.0}}" role="menuitem">{{$nav.rusermenu.1}}</a></li>
- <li role="presentation"><a href="{{$nav.rusermenu.2}}" role="menuitem">{{$nav.rusermenu.3}}</a></li>
- </ul>
- {{/if}}
- {{/if}}
- {{/if}}
+<div class="container-fluid">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse-2">
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ {{if $localuser}}
+ <button id="notifications-btn" type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse-1" style="color: grey;">
+ <i class="fa fa-exclamation-circle"></i>
+ </button>
+ {{/if}}
+ <button id="expand-tabs" type="button" class="navbar-toggle" data-toggle="collapse" data-target="#tabs-collapse-1">
+ <i class="fa fa-arrow-circle-down" id="expand-tabs-icon"></i>
+ </button>
+ <button id="expand-aside" type="button" class="navbar-toggle" data-toggle="offcanvas" data-target="#region_1">
+ <i class="fa fa-arrow-circle-right" id="expand-aside-icon"></i>
+ </button>
+ {{if $nav.help.6}}
+ <button id="context-help-btn" class="navbar-toggle" type="button" onclick="contextualHelp(); return false;">
+ <i class="fa fa-question-circle"></i>
+ </button>
+ {{/if}}
+ {{if $userinfo}}
+ <div class="usermenu-head dropdown-toggle fakelink" data-toggle="dropdown">
+ <img id="avatar" src="{{$userinfo.icon}}" alt="{{$userinfo.name}}">
+ <span class="caret" id="usermenu-caret"></span>
</div>
- <div class="collapse navbar-collapse" id="navbar-collapse-1">
- <ul class="nav navbar-nav navbar-left">
-
+ {{if $localuser}}
+ <ul class="dropdown-menu" role="menu" aria-labelledby="avatar">
+ {{foreach $nav.usermenu as $usermenu}}
+ <li role="presentation"><a href="{{$usermenu.0}}" title="{{$usermenu.3}}" role="menuitem" id="{{$usermenu.4}}">{{$usermenu.1}}</a></li>
+ {{/foreach}}
+ {{if $nav.manage}}
+ <li role="presentation"><a href="{{$nav.manage.0}}" title="{{$nav.manage.3}}" role="menuitem" id="{{$nav.manage.4}}">{{$nav.manage.1}}</a></li>
+ {{/if}}
+ {{if $nav.channels}}
+ {{foreach $nav.channels as $chan}}
+ <li role="presentation" class="nav-channel-select"><a href="manage/{{$chan.channel_id}}" title="{{$chan.channel_name}}" role="menuitem">{{$chan.channel_name}}</a></li>
+ {{/foreach}}
+ {{/if}}
+ <li role="presentation" class="divider"></li>
+ {{if $nav.profiles}}
+ <li role="presentation"><a href="{{$nav.profiles.0}}" title="{{$nav.profiles.3}}" role="menuitem" id="{{$nav.profiles.4}}">{{$nav.profiles.1}}</a></li>
+ {{/if}}
+ {{if $nav.settings}}
+ <li role="presentation"><a href="{{$nav.settings.0}}" title="{{$nav.settings.3}}" role="menuitem" id="{{$nav.settings.4}}">{{$nav.settings.1}}</a></li>
+ {{/if}}
+ {{if $nav.admin}}
+ <li role="presentation" class="divider"></li>
+ <li role="presentation"><a href="{{$nav.admin.0}}" title="{{$nav.admin.3}}" role="menuitem" id="{{$nav.admin.4}}">{{$nav.admin.1}}</a></li>
+ {{/if}}
+ {{if $nav.logout}}
+ <li role="presentation" class="divider"></li>
+ <li role="presentation"><a href="{{$nav.logout.0}}" title="{{$nav.logout.3}}" role="menuitem" id="{{$nav.logout.4}}">{{$nav.logout.1}}</a></li>
+ {{/if}}
+ </ul>
+ {{else}}
+ {{if $nav.rusermenu}}
+ <ul class="dropdown-menu" role="menu" aria-labelledby="avatar">
+ <li role="presentation"><a href="{{$nav.rusermenu.0}}" role="menuitem">{{$nav.rusermenu.1}}</a></li>
+ <li role="presentation"><a href="{{$nav.rusermenu.2}}" role="menuitem">{{$nav.rusermenu.3}}</a></li>
+ </ul>
+ {{/if}}
+ {{/if}}
+ {{/if}}
+ </div>
+ <div class="collapse navbar-collapse" id="navbar-collapse-1">
+ <ul class="nav navbar-nav navbar-left">
{{if $nav.network}}
- <li class="{{$sel.network}} hidden-xs">
- <a href="{{$nav.network.0}}" title="{{$nav.network.3}}" id="{{$nav.network.4}}"><i class="fa fa-th"></i></a>
- <span class="net-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-network-menu"></span>
- <ul id="nav-network-menu" role="menu" class="dropdown-menu" rel="network">
- {{* <li id="nav-network-see-all"><a href="{{$nav.network.all.0}}">{{$nav.network.all.1}}</a></li> *}}
- <li id="nav-network-mark-all"><a href="#" onclick="markRead('network'); return false;">{{$nav.network.mark.1}}</a></li>
- <li class="empty">{{$emptynotifications}}</li>
- </ul>
- </li>
- <li class="{{$sel.network}} visible-xs">
- <a href="{{$nav.network.0}}" title="{{$nav.network.3}}" ><i class="fa fa-th"></i></a>
- <span class="net-update badge" rel="#nav-network-menu"></span>
- </li>
+ <li class="{{$sel.network}} net-button" style="display: none;">
+ <a href="#" title="{{$nav.network.3}}" id="{{$nav.network.4}}" data-toggle="dropdown" rel="#nav-network-menu">
+ <i class="fa fa-fw fa-th"></i>
+ <span class="net-update badge"></span>
+ </a>
+ <ul id="nav-network-menu" role="menu" class="dropdown-menu" rel="network">
+ {{* <li id="nav-network-see-all"><a href="{{$nav.network.all.0}}">{{$nav.network.all.1}}</a></li> *}}
+ <li id="nav-network-mark-all"><a href="#" onclick="markRead('network'); return false;">{{$nav.network.mark.1}}</a></li>
+ <li class="empty">{{$emptynotifications}}</li>
+ </ul>
+ </li>
{{/if}}
-
{{if $nav.home}}
- <li class="{{$sel.home}} hidden-xs">
- <a class="{{$nav.home.2}}" href="{{$nav.home.0}}" title="{{$nav.home.3}}" id="{{$nav.home.4}}"><i class="fa fa-home"></i></a>
- <span class="home-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-home-menu"></span>
- <ul id="nav-home-menu" class="dropdown-menu" rel="home">
- {{* <li id="nav-home-see-all"><a href="{{$nav.home.all.0}}">{{$nav.home.all.1}}</a></li> *}}
- <li id="nav-home-mark-all"><a href="#" onclick="markRead('home'); return false;">{{$nav.home.mark.1}}</a></li>
- <li class="empty">{{$emptynotifications}}</li>
- </ul>
- </li>
- <li class="{{$sel.home}} visible-xs">
- <a class="{{$nav.home.2}}" href="{{$nav.home.0}}" title="{{$nav.home.3}}" ><i class="fa fa-home"></i></a>
- <span class="home-update badge" rel="#nav-home-menu"></span>
- </li>
+ <li class="{{$sel.home}} home-button" style="display: none;">
+ <a class="{{$nav.home.2}}" href="#" title="{{$nav.home.3}}" id="{{$nav.home.4}}" data-toggle="dropdown" rel="#nav-home-menu">
+ <i class="fa fa-fw fa-home"></i>
+ <span class="home-update badge"></span>
+ </a>
+ <ul id="nav-home-menu" class="dropdown-menu" rel="home">
+ {{* <li id="nav-home-see-all"><a href="{{$nav.home.all.0}}">{{$nav.home.all.1}}</a></li> *}}
+ <li id="nav-home-mark-all"><a href="#" onclick="markRead('home'); return false;">{{$nav.home.mark.1}}</a></li>
+ <li class="empty">{{$emptynotifications}}</li>
+ </ul>
+ </li>
{{/if}}
-
{{if $nav.messages}}
- <li class="{{$sel.messages}} hidden-xs">
- <a class="{{$nav.messages.2}}" href="{{$nav.messages.0}}" title="{{$nav.messages.3}}" id="{{$nav.messages.4}}"><i class="fa fa-envelope"></i></a>
- <span class="mail-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-messages-menu"></span>
- <ul id="nav-messages-menu" class="dropdown-menu" rel="messages">
- <li id="nav-messages-see-all"><a href="{{$nav.messages.all.0}}">{{$nav.messages.all.1}}</a></li>
- <li id="nav-messages-mark-all"><a href="#" onclick="markRead('messages'); return false;">{{$nav.messages.mark.1}}</a></li>
- <li class="empty">{{$emptynotifications}}</li>
- </ul>
- </li>
- <li class="{{$sel.messages}} visible-xs">
- <a class="{{$nav.messages.2}}" href="{{$nav.messages.0}}" title="{{$nav.messages.3}}" ><i class="fa fa-envelope"></i></a>
- <span class="mail-update badge" rel="#nav-messages-menu"></span>
- </li>
+ <li class="{{$sel.messages}} mail-button" style="display: none;">
+ <a class="{{$nav.messages.2}}" href="#" title="{{$nav.messages.3}}" id="{{$nav.messages.4}}" data-toggle="dropdown" rel="#nav-messages-menu">
+ <i class="fa fa-fw fa-envelope"></i>
+ <span class="mail-update badge"></span>
+ </a>
+ <ul id="nav-messages-menu" class="dropdown-menu" rel="messages">
+ <li id="nav-messages-see-all"><a href="{{$nav.messages.all.0}}">{{$nav.messages.all.1}}</a></li>
+ <li id="nav-messages-mark-all"><a href="#" onclick="markRead('messages'); return false;">{{$nav.messages.mark.1}}</a></li>
+ <li class="empty">{{$emptynotifications}}</li>
+ </ul>
+ </li>
{{/if}}
-
{{if $nav.all_events}}
- <li class="{{$sel.all_events}} hidden-xs">
- <a class="{{$nav.all_events.2}}" href="{{$nav.all_events.0}}" title="{{$nav.all_events.3}}" id='{{$nav.all_events.4}}'><i class="fa fa-calendar"></i></a>
- <span class="all_events-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-all_events-menu"></span>
- <ul id="nav-all_events-menu" class="dropdown-menu" rel="all_events">
- <li id="nav-all_events-see-all"><a href="{{$nav.all_events.all.0}}">{{$nav.all_events.all.1}}</a></li>
- <li id="nav-all_events-mark-all"><a href="#" onclick="markRead('all_events'); return false;">{{$nav.all_events.mark.1}}</a></li>
- <li class="empty">{{$emptynotifications}}</li>
- </ul>
- </li>
- <li class="{{$sel.all_events}} visible-xs">
- <a class="{{$nav.all_events.2}}" href="{{$nav.all_events.0}}" title="{{$nav.all_events.3}}" ><i class="fa fa-calendar"></i></a>
- <span class="all_events-update badge" rel="#nav-all_events-menu"></span>
- </li>
+ <li class="{{$sel.all_events}} all_events-button" style="display: none;">
+ <a class="{{$nav.all_events.2}}" href="#" title="{{$nav.all_events.3}}" id="{{$nav.all_events.4}}" data-toggle="dropdown" rel="#nav-all_events-menu">
+ <i class="fa fa-fw fa-calendar"></i>
+ <span class="all_events-update badge"></span>
+ </a>
+ <ul id="nav-all_events-menu" class="dropdown-menu" rel="all_events">
+ <li id="nav-all_events-see-all"><a href="{{$nav.all_events.all.0}}">{{$nav.all_events.all.1}}</a></li>
+ <li id="nav-all_events-mark-all"><a href="#" onclick="markRead('all_events'); return false;">{{$nav.all_events.mark.1}}</a></li>
+ <li class="empty">{{$emptynotifications}}</li>
+ </ul>
+ </li>
{{/if}}
-
{{if $nav.intros}}
- <li class="{{$sel.intros}} hidden-xs">
- <a class="{{$nav.intros.2}}" href="{{$nav.intros.0}}" title="{{$nav.intros.3}}" id="{{$nav.intros.4}}"><i class="fa fa-user"></i></a>
- <span class="intro-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-intros-menu"></span>
- <ul id="nav-intros-menu" class="dropdown-menu" rel="intros">
- <li id="nav-intros-see-all"><a href="{{$nav.intros.all.0}}">{{$nav.intros.all.1}}</a></li>
- <li class="empty">{{$emptynotifications}}</li>
- </ul>
- </li>
- <li class="{{$sel.intros}} visible-xs">
- <a class="{{$nav.intros.2}}" href="{{$nav.intros.0}}" title="{{$nav.intros.3}}" ><i class="fa fa-user"></i></a>
- <span class="intro-update badge" rel="#nav-intros-menu"></span>
- </li>
+ <li class="{{$sel.intros}} intro-button" style="display: none;">
+ <a class="{{$nav.intros.2}}" href="{{$nav.intros.0}}" title="{{$nav.intros.3}}" id="{{$nav.intros.4}}" data-toggle="dropdown" rel="#nav-intros-menu">
+ <i class="fa fa-fw fa-user"></i>
+ <span class="intro-update badge"></span>
+ </a>
+ <ul id="nav-intros-menu" class="dropdown-menu" rel="intros">
+ <li id="nav-intros-see-all"><a href="{{$nav.intros.all.0}}">{{$nav.intros.all.1}}</a></li>
+ <li class="empty">{{$emptynotifications}}</li>
+ </ul>
+ </li>
{{/if}}
-
{{if $nav.notifications}}
- <li class="{{$sel.notifications}} hidden-xs">
- <a href="{{$nav.notifications.0}}" title="{{$nav.notifications.1}}" id="{{$nav.notifications.4}}"><i class="fa fa-exclamation"></i></a>
- <span class="notify-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-notify-menu"></span>
- <ul id="nav-notify-menu" class="dropdown-menu" rel="notify">
- <li id="nav-notify-see-all"><a href="{{$nav.notifications.all.0}}">{{$nav.notifications.all.1}}</a></li>
- <li id="nav-notify-mark-all"><a href="#" onclick="markRead('notify'); return false;">{{$nav.notifications.mark.1}}</a></li>
- <li class="empty">{{$emptynotifications}}</li>
- </ul>
- </li>
- <li class="{{$sel.notifications}} visible-xs">
- <a href="{{$nav.notifications.0}}" title="{{$nav.notifications.1}}"><i class="fa fa-exclamation"></i></a>
- <span class="notify-update badge" rel="#nav-notify-menu"></span>
- </li>
+ <li class="{{$sel.notifications}} notify-button" style="display: none;">
+ <a href="{{$nav.notifications.0}}" title="{{$nav.notifications.1}}" id="{{$nav.notifications.4}}" data-toggle="dropdown" rel="#nav-notify-menu">
+ <i class="fa fa-fw fa-exclamation"></i>
+ <span class="notify-update badge"></span>
+ </a>
+ <ul id="nav-notify-menu" class="dropdown-menu" rel="notify">
+ <li id="nav-notify-see-all"><a href="{{$nav.notifications.all.0}}">{{$nav.notifications.all.1}}</a></li>
+ <li id="nav-notify-mark-all"><a href="#" onclick="markRead('notify'); return false;">{{$nav.notifications.mark.1}}</a></li>
+ <li class="empty">{{$emptynotifications}}</li>
+ </ul>
+ </li>
{{/if}}
-
{{if $nav.login && !$userinfo}}
- <li class="">
- <a href="#" title="{{$nav.loginmenu.1.3}}" id="{{$nav.loginmenu.1.4}}" data-toggle="modal" data-target="#nav-login">{{$nav.loginmenu.1.1}}</a>
- </li>
+ <li class="">
+ <a href="#" title="{{$nav.loginmenu.1.3}}" id="{{$nav.loginmenu.1.4}}" data-toggle="modal" data-target="#nav-login">{{$nav.loginmenu.1.1}}</a>
+ </li>
{{/if}}
-
{{if $nav.register}}
- <li class="{{$nav.register.2}}"><a href="{{$nav.register.0}}" title="{{$nav.register.3}}" id="{{$nav.register.4}}">{{$nav.register.1}}</a></li>
+ <li class="{{$nav.register.2}} hidden-xs"><a href="{{$nav.register.0}}" title="{{$nav.register.3}}" id="{{$nav.register.4}}">{{$nav.register.1}}</a></li>
{{/if}}
-
{{if $nav.alogout}}
- <li class="{{$nav}}-alogout.2"><a href="{{$nav.alogout.0}}" title="{{$nav.alogout.3}}" id="{{$nav.alogout.4}}">{{$nav.alogout.1}}</a></li>
+ <li class="{{$nav}}-alogout.2 hidden-xs"><a href="{{$nav.alogout.0}}" title="{{$nav.alogout.3}}" id="{{$nav.alogout.4}}">{{$nav.alogout.1}}</a></li>
{{/if}}
- </ul>
-
- <ul class="nav navbar-nav navbar-right">
- <li class="hidden-xs">
- <form method="get" action="search" role="search">
- <div id="nav-search-spinner"></div><input class="fa-search" id="nav-search-text" type="text" value="" placeholder="&#xf002; {{$help}}" name="search" title="{{$nav.search.3}}" onclick="this.submit();"/>
- </form>
- </li>
- <li class="visible-xs">
- <a href="/search" title="{{$nav.search.3}}"><i class="fa fa-search"></i></a>
- </li>
-
- {{if $powered_by}}
- <div id="powered-by">{{$powered_by}}</div>
- {{/if}}
-{{if ! $navapps}}
- {{if $nav.directory}}
- <li class="{{$sel.directory}}">
- <a class="{{$nav.directory.2}}" href="{{$nav.directory.0}}" title="{{$nav.directory.3}}" id="{{$nav.directory.4}}"><i class="fa fa-sitemap"></i></a>
- </li>
- {{/if}}
-
- {{if $nav.apps}}
- <li class="{{$sel.apps}}">
- <a class="{{$nav.apps.2}}" href="{{$nav.apps.0}}" title="{{$nav.apps.3}}" id="{{$nav.apps.4}}"><i class="fa fa-cogs"></i></a>
- </li>
- {{/if}}
-
- {{if $nav.help}}
- <li class="{{$sel.help}}{{if $nav.help.6}} hidden-xs{{/if}}">
- <a class="{{$nav.help.2}}" target="hubzilla-help" href="{{$nav.help.0}}" title="{{$nav.help.3}}" id="{{$nav.help.4}}"{{if $nav.help.6}} onclick="contextualHelp(); return false;"{{/if}}>{{if $nav.help.6}}<i class="fa fa-question-circle"></i>{{else}}<i class="fa fa-question"></i>{{/if}}</a>
- </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-right">
+ <li class="hidden-xs">
+ <form method="get" action="search" role="search">
+ <div id="nav-search-spinner"></div><input class="fa-search" id="nav-search-text" type="text" value="" placeholder="&#xf002; {{$help}}" name="search" title="{{$nav.search.3}}" onclick="this.submit();"/>
+ </form>
+ </li>
+ {{if $nav.help.6}}
+ <li class="{{$sel.help}} hidden-xs">
+ <a class="{{$nav.help.2}}" target="hubzilla-help" href="{{$nav.help.0}}" title="{{$nav.help.3}}" id="{{$nav.help.4}}" onclick="contextualHelp(); return false;"><i class="fa fa-question-circle"></i></a>
+ </li>
{{/if}}
-{{/if}}
-
- {{if $navapps}}
- {{if $nav.help.6}}
- <li class="{{$sel.help}} hidden-xs">
- <a class="{{$nav.help.2}}" target="hubzilla-help" href="{{$nav.help.0}}" title="{{$nav.help.3}}" id="{{$nav.help.4}}" onclick="contextualHelp(); return false;"><i class="fa fa-question-circle"></i></a>
- </li>
- {{/if}}
- <li class="dropdown-toggle" data-toggle="dropdown">
- <a href="#"><i class="fa fa-bars"></i></a>
- </li>
+ <li class="hidden-xs">
+ <a href="#" data-toggle="dropdown"><i class="fa fa-bars"></i></a>
+ <ul class="dropdown-menu">
{{$navapps}}
- {{/if}}
-
- </ul>
-
- </div>
- <div class="collapse navbar-collapse" id="navbar-collapse-2">
+ </ul>
+ </li>
+ </ul>
+ </div>
+ <div class="collapse navbar-collapse" id="navbar-collapse-2">
+ <ul class="nav navbar-nav navbar-left hidden-sm hidden-md hidden-lg">
{{$navapps}}
- </div>
+ </ul>
</div>
{{if $nav.help.6}}
@@ -231,3 +190,4 @@
</div>
</div>
{{/if}}
+</div>
diff --git a/view/tpl/navapps.tpl b/view/tpl/navapps.tpl
index de4a6223c..735c322e5 100644
--- a/view/tpl/navapps.tpl
+++ b/view/tpl/navapps.tpl
@@ -1,9 +1,8 @@
-<ul class="dropdown-menu" style="max-height: 80vh">
- {{foreach $apps as $app}}
- <li><a href="{{$app.url}}">{{if $icon}}<i class="app-icon fa fa-{{$icon}}"></i>{{else}}<img src="{{$app.photo}}" width="16" height="16" />{{/if}}&nbsp;{{$app.name}}</a></li>
- {{/foreach}}
- {{if $localuser}}
- <li class="divider"></li>
- <li><a href="/apps/edit"><i class="app-icon fa fa-plus-circle"></i>&nbsp;Add Apps</a></li>
- {{/if}}
-</ul>
+{{foreach $apps as $app}}
+<li><a href="{{$app.url}}">{{if $app.icon}}<i class="generic-icons-nav fa fa-fw fa-{{$app.icon}}"></i>{{else}}<img src="{{$app.photo}}" width="16" height="16" style="margin-right:9px;"/>{{/if}}{{$app.name}}</a></li>
+{{/foreach}}
+{{if $localuser}}
+<li class="divider"></li>
+<li><a href="/apps"><i class="generic-icons-nav fa fa-fw fa-plus-circle"></i>Add Apps</a></li>
+{{/if}}
+