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 = $('
') +var pageLoaderBar = $('
') + +body.append(pageLoader) +pageLoader.append(pageLoaderBar) + +var pageLoaderValue = 0 + +$(window).on('beforeunload', function() { + setInterval(function() { + pageLoaderBar.width(pageLoaderValue.toString() + '%') + + pageLoaderValue = Math.min(pageLoaderValue + .2, 100) + }, 25) +}) diff --git a/templates/js/script.php b/templates/js/script.php index 66695e2..acc730d 100644 --- a/templates/js/script.php +++ b/templates/js/script.php @@ -91,21 +91,7 @@ sideMenuContainer.append(sideMenu) - var pageLoader = $('
') - var pageLoaderBar = $('
') - - body.append(pageLoader) - pageLoader.append(pageLoaderBar) - - var pageLoaderValue = 0 - - $(window).on('beforeunload', function() { - setInterval(function() { - pageLoaderBar.width(pageLoaderValue.toString() + '%') - - pageLoaderValue = Math.min(pageLoaderValue + .2, 100) - }, 25) - }) + @@ -115,122 +101,6 @@ - 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) + })();