aboutsummaryrefslogtreecommitdiffstats
path: root/settings
diff options
context:
space:
mode:
authorJulius Haertl <jus@bitgrid.net>2017-03-03 15:09:08 +0100
committerJulius Härtl <jus@bitgrid.net>2017-03-16 11:55:10 +0100
commit780400302cc0d2fac77ae5640e4f572707c36665 (patch)
tree9d400969aa39b4d3457e07fa643dee5b595c7e21 /settings
parent25e18b840ba305762e489baa4138229261acd549 (diff)
downloadnextcloud-server-780400302cc0d2fac77ae5640e4f572707c36665.tar.gz
nextcloud-server-780400302cc0d2fac77ae5640e4f572707c36665.zip
Rebuild menu to keep order of icons correct
Signed-off-by: Julius Haertl <jus@bitgrid.net>
Diffstat (limited to 'settings')
-rw-r--r--settings/js/apps.js63
1 files changed, 35 insertions, 28 deletions
diff --git a/settings/js/apps.js b/settings/js/apps.js
index 3a00152aab2..8be18c4e9c0 100644
--- a/settings/js/apps.js
+++ b/settings/js/apps.js
@@ -452,26 +452,27 @@ OC.Settings.Apps = OC.Settings.Apps || {
rebuildNavigation: function() {
$.getJSON(OC.filePath('settings', 'ajax', 'navigationdetect.php')).done(function(response){
if(response.status === 'success') {
- var idsToKeep = {};
+ var addedApps = {};
var navEntries = response.nav_entries;
var container = $('#apps ul');
// remove disabled apps
for (var i = 0; i < navEntries.length; i++) {
var entry = navEntries[i];
- idsToKeep[entry.id] = true;
+ if(container.children('li[data-id="' + entry.id + '"]').length === 0) {
+ addedApps[entry.id] = true;
+ }
}
container.children('li[data-id]').each(function (index, el) {
- if (!idsToKeep[$(el).data('id')]) {
- $(el).remove();
- }
- });
- $('#appmenu ul').children('li[data-id]').each(function (index, el) {
- if (!idsToKeep[$(el).data('id')]) {
+ var id = $(el).data('id');
+ // remove all apps that are not in the correct order
+ if ((navEntries[index] && navEntries[index].id !== $(el).data('id'))) {
$(el).remove();
+ $('#appmenu li[data-id='+id+']').remove();
}
});
+ var previousEntry;
// add enabled apps to #navigation and #appmenu
for (var i = 0; i < navEntries.length; i++) {
var entry = navEntries[i];
@@ -490,25 +491,21 @@ OC.Settings.Apps = OC.Settings.Apps || {
a.prepend(img);
li.append(a);
- // append the new app as last item in the list
- // which is the "add apps" entry with the id
- // #apps-management
- $('#navigation #apps-management').before(li);
+ $('#navigation li[data-id=' + previousEntry.id + ']').after(li);
// draw attention to the newly added app entry
// by flashing it twice
- $('#header .menutoggle')
- .animate({opacity: 0.5})
- .animate({opacity: 1})
- .animate({opacity: 0.5})
- .animate({opacity: 1})
- .animate({opacity: 0.75});
-
- // do not show apps from #appmenu in #navigation
- if(i < 7) {
- $('#navigation li').eq(i).addClass('in-header');
+ if(addedApps[entry.id]) {
+ $('#header .menutoggle')
+ .animate({opacity: 0.5})
+ .animate({opacity: 1})
+ .animate({opacity: 0.5})
+ .animate({opacity: 1})
+ .animate({opacity: 0.75});
}
+ }
+ if ($('#appmenu ul').children('li[data-id="' + entry.id + '"]').length === 0) {
// add apps to #appmenu until it is full
if ($('#appmenu li').not('.hidden').length < 8) {
var li = $('<li></li>');
@@ -522,16 +519,26 @@ OC.Settings.Apps = OC.Settings.Apps || {
a.prepend(loading);
a.prepend(img);
li.append(a);
- $('#appmenu li#more-apps').before(li);
- li.animate({opacity: 0.5})
- .animate({opacity: 1})
- .animate({opacity: 0.5})
- .animate({opacity: 1})
- .animate({opacity: 0.75});
+ $('#appmenu li[data-id='+ previousEntry.id+']').after(li);
+ if(addedApps[entry.id]) {
+ li.animate({opacity: 0.5})
+ .animate({opacity: 1})
+ .animate({opacity: 0.5})
+ .animate({opacity: 1});
+ }
}
}
+ previousEntry = entry;
+ // do not show apps from #appmenu in #navigation
+ if(i < 7) {
+ $('#navigation li').eq(i).addClass('in-header');
+ } else {
+ $('#navigation li').eq(i).removeClass('in-header');
+ }
}
+
+
if (navEntries.length > 7) {
$('#more-apps').show();
$('#apps-management').hide();