diff --git a/templates/js/_externalSitesInTopMenu.js b/templates/js/_externalSitesInTopMenu.js new file mode 100644 index 0000000..c2b7224 --- /dev/null +++ b/templates/js/_externalSitesInTopMenu.js @@ -0,0 +1,117 @@ +sideMenuContainer.attr('data-externalsitesintopmenu', '1') + +var menuCache = null + +var updateTopMenu = function() { + var breakpointMobileWidth = 1024 + var menu = $('#appmenu') + var apps = menu.find('li') + var minAppsDesktop = 8 + var usePercentualAppMenuLimit = 0.9 + var isMobile = $(window).width() < breakpointMobileWidth + var lastShownApp = null + var appShown = [] + var moreApps = $('#more-apps') + var navigation = $('#navigation') + var navigationApps = $('#apps ul') + var appCount = null + + var currentMenuCache = menu.html() + menu.next().html() + + if (currentMenuCache === menuCache) { + return + } + + navigationApps.html('') + + apps.each(function(i, app) { + var dataId = app.getAttribute('data-id') + + if (dataId === null) { + return + } + + if (dataId.indexOf('external_index') === -1) { + app.classList.add('hidden') + app.classList.add('app-hidden') + } else { + app.classList.remove('hidden') + app.classList.add('app-external-site') + appShown.push(app) + navigationApps.append(app.outerHTML) + } + }) + + var rightHeaderWidth = $('.header-right').outerWidth() + var headerWidth = $('header').outerWidth() + var availableWidth = headerWidth - $('#nextcloud').outerWidth() - $('#header .side-menu-opener').outerWidth() - (rightHeaderWidth > 210 ? rightHeaderWidth : 210) + + if (!isMobile) { + availableWidth = availableWidth * usePercentualAppMenuLimit + } + + if (isMobile && appCount > minAppsDesktop) { + appCount = minAppsDesktop + } else if (!isMobile && appCount < minAppsDesktop) { + appCount = minAppsDesktop + } else { + appCount = Math.floor(availableWidth / $('#appmenu li').width()) + } + + if (appCount === 0) { + menu.addClass('hidden') + } + + menu.removeClass('hidden') + menu.css('opacity', 1) + + if (appShown.length - 1 - appCount >= 1) { + appCount-- + } + + moreApps.find('a').removeClass('active') + + var k = 0 + var notInHeader = 0 + var name + + $(appShown).each(function(i, app) { + app = $(app) + name = app.data('id') + + if (k < appCount && appCount > 0) { + app.removeClass('hidden') + lastShownApp = app + + $('#apps li[data-id=' + name + '].app-external-site').addClass('in-header') + } else { + app.addClass('hidden') + notInHeader++ + + $('#apps li[data-id=' + name + '].app-external-site').removeClass('in-header') + + if (appCount > 0 && app.children('a').hasClass('active')) { + lastShownApp.addClass('hidden') + app.removeClass('hidden') + notInHeader++ + + $('#apps li[data-id=' + name + '].app-external-site') + .removeClass('in-header') + .addClass('in-header') + } + } + + k++ + }) + + if (notInHeader === 0) { + moreApps.hide() + navigation.hide() + } else { + moreApps.show() + } + + menuCache = menu.html() + menu.next().html() +} + +setInterval(updateTopMenu, 50) diff --git a/templates/js/_loaderEnabled.js b/templates/js/_loaderEnabled.js new file mode 100644 index 0000000..6d1a4e8 --- /dev/null +++ b/templates/js/_loaderEnabled.js @@ -0,0 +1,15 @@ +var pageLoader = $('