diff options
author | Devlin Junker <devlin.junker@gmail.com> | 2022-11-09 21:52:11 -0800 |
---|---|---|
committer | Benjamin Brahmer <info@b-brahmer.de> | 2022-11-17 14:50:53 +0100 |
commit | c6b4bcc00e5202e85388a0624d149e8b1df386f8 (patch) | |
tree | 7063a29710dfd0a363f3462fee8a0e8185488e15 /js-old | |
parent | 760c44288256b104b662ade7a892a6ec0b898851 (diff) |
upmerging master into vue-rewrite
Signed-off-by: Devlin Junker <devlin.junker@gmail.com>
Diffstat (limited to 'js-old')
-rw-r--r-- | js-old/app/Config.js | 6 | ||||
-rw-r--r-- | js-old/controller/ContentController.js | 13 | ||||
-rw-r--r-- | js-old/directive/NewsScroll.js | 18 | ||||
-rw-r--r-- | js-old/gui/KeyboardShortcuts.js | 56 |
4 files changed, 56 insertions, 37 deletions
diff --git a/js-old/app/Config.js b/js-old/app/Config.js index f7c62e7ae..441c6e54d 100644 --- a/js-old/app/Config.js +++ b/js-old/app/Config.js @@ -34,6 +34,10 @@ app.config(function ($routeProvider, $provide, $httpProvider, $locationProvider) $provide.constant('MARK_READ_TIMEOUT', 0.5); $provide.constant('SCROLL_TIMEOUT', 0.1); + const majorVersion = parseInt($('#app-content').data('nc-major-version') || 0, 10); + $provide.constant('NC_MAJOR_VERSION', majorVersion); + window.NEWS_NC_MAJOR_VERSION = majorVersion; + // make sure that the CSRF header is only sent to the Nextcloud domain $provide.factory('CSRFInterceptor', function ($q, BASE_URL, $window) { return { @@ -55,7 +59,7 @@ app.config(function ($routeProvider, $provide, $httpProvider, $locationProvider) var errorMessages = { 0: t('news', 'Request failed, network connection unavailable!'), 401: t('news', 'Request unauthorized. Are you logged in?'), - 403: t('news', 'Request forbidden. Are you an admin?'), + 403: t('news', 'Request forbidden. Are you an administrator?'), 412: t('news', 'Token expired or app not enabled! Reload the page!'), 500: t('news', 'Internal server error! Please check your ' + 'data/nextcloud.log file for additional ' + diff --git a/js-old/controller/ContentController.js b/js-old/controller/ContentController.js index ed8d0be55..d35cc1c96 100644 --- a/js-old/controller/ContentController.js +++ b/js-old/controller/ContentController.js @@ -18,7 +18,7 @@ app.controller('ContentController', function (Publisher, FeedResource, ItemResou // distribute data to models based on key Publisher.publishAll(data); - var getOrdering = function () { + var isOldestFirst = function () { var ordering = SettingsResource.get('oldestFirst'); if (self.isFeed()) { @@ -35,14 +35,7 @@ app.controller('ContentController', function (Publisher, FeedResource, ItemResou this.getFirstItem = function () { var orderedItems = this.getItems(); - var item = orderedItems[orderedItems.length - 1]; - var firstItem = orderedItems[0]; - // If getOrdering == 1, then the sorting is set to - // newest first. So, item should be the first item - // - if (getOrdering()) { - item = firstItem; - } + var item = orderedItems[0]; if (item === undefined) { return undefined; } @@ -152,7 +145,7 @@ app.controller('ContentController', function (Publisher, FeedResource, ItemResou return $route.current.$$route.type === FEED_TYPE.FEED; }; - this.oldestFirst = getOrdering(); + this.oldestFirst = isOldestFirst(); this.autoPage = function () { if (this.isNothingMoreToAutoPage) { diff --git a/js-old/directive/NewsScroll.js b/js-old/directive/NewsScroll.js index 44271b72b..a5e620b80 100644 --- a/js-old/directive/NewsScroll.js +++ b/js-old/directive/NewsScroll.js @@ -8,10 +8,19 @@ * @copyright Bernhard Posselt 2014 */ app.directive('newsScroll', function ($timeout, ITEM_AUTO_PAGE_SIZE, - MARK_READ_TIMEOUT, SCROLL_TIMEOUT) { + MARK_READ_TIMEOUT, SCROLL_TIMEOUT, NC_MAJOR_VERSION) { 'use strict'; var timer; + + var scrollElement = function() { + // This should be in sync with the same function in js/gui/KeyboardShortcuts.js + if (NC_MAJOR_VERSION >= 25) { + return $('#app-content'); + } + return $(window); + }; + // autopaging var autoPage = function (limit, elem, scope) { var counter = 0; @@ -49,8 +58,7 @@ app.directive('newsScroll', function ($timeout, ITEM_AUTO_PAGE_SIZE, articles.forEach(function(article) { // distance to top + height var distTop = article.offsetTop + article.offsetHeight; - var scrollTop = window.pageYOffset || - document.documentElement.scrollTop; + var scrollTop = window.pageYOffset || scrollElement().scrollTop(); if (distTop < scrollTop) { ids.push(parseInt(article.dataset.id, 10)); } else { @@ -100,11 +108,11 @@ app.directive('newsScroll', function ($timeout, ITEM_AUTO_PAGE_SIZE, } }; - $(document).on('scroll', scrollHandler); + scrollElement().on('scroll', scrollHandler); // remove scroll handler if element is destroyed scope.$on('$destroy', function () { - $(document).off('scroll', scrollHandler); + scrollElement().off('scroll', scrollHandler); }); } }; diff --git a/js-old/gui/KeyboardShortcuts.js b/js-old/gui/KeyboardShortcuts.js index b6310fef5..9ddcb582d 100644 --- a/js-old/gui/KeyboardShortcuts.js +++ b/js-old/gui/KeyboardShortcuts.js @@ -16,6 +16,14 @@ (function (window, document, $) { 'use strict'; + var scrollElement = function() { + // This should be in sync with the same function in js/directive/NewsScroll.js + if (window.NEWS_NC_MAJOR_VERSION >= 25) { + return $('#app-content'); + } + return $(window); + }; + var noInputFocused = function (element) { return !( element.is('input') || @@ -223,34 +231,34 @@ } }; - var getActiveElement = function (scrollArea) { - return scrollArea.find('.item.active:first'); + var getActiveElement = function () { + return $('#app-content').find('.item.active:first'); }; - var onActiveItem = function (scrollArea, callback) { - callback(getActiveElement(scrollArea)); + var onActiveItem = function (callback) { + callback(getActiveElement()); }; - var toggleUnread = function (scrollArea) { - onActiveItem(scrollArea, function (item) { + var toggleUnread = function () { + onActiveItem(function (item) { item.find('.toggle-keep-unread').trigger('click'); }); }; - var toggleStar = function (scrollArea) { - onActiveItem(scrollArea, function (item) { + var toggleStar = function () { + onActiveItem(function (item) { item.find('.star').trigger('click'); }); }; - var expandItem = function (scrollArea) { - onActiveItem(scrollArea, function (item) { + var expandItem = function () { + onActiveItem(function (item) { item.find('.utils').trigger('click'); }); }; - var openLink = function (scrollArea) { - onActiveItem(scrollArea, function (item) { + var openLink = function () { + onActiveItem(function (item) { item.trigger('click'); // mark read var url = item.find('.external:visible').attr('href'); var newWindow = window.open(url, '_blank'); @@ -265,9 +273,14 @@ var scrollToItem = function (scrollArea, item, expandItemInCompact) { // if you go to the next article in compact view, it should // expand the current one - scrollArea.scrollTop( - item.offset().top - 50 - ); + + if (window.NEWS_NC_MAJOR_VERSION >= 25) { + scrollArea.scrollTop(scrollArea.scrollTop() + item.offset().top - 50); + } else { + scrollArea.scrollTop( + item.offset().top - 50 + ); + } setItemActive(item[0]); @@ -279,7 +292,7 @@ }; var scrollToNextItem = function (scrollArea, expandItemInCompact) { - var activeElement = getActiveElement(scrollArea); + var activeElement = getActiveElement(); // in expand in compact mode, jumping to the next item should open // the current one if it's not open yet if (expandItemInCompact && !activeElement.hasClass('open')) { @@ -300,7 +313,7 @@ var scrollToPreviousItem = function (scrollArea, expandItemInCompact) { - var activeElement = getActiveElement(scrollArea); + var activeElement = getActiveElement(); var previousElement = activeElement.prev(); // if the active element has been scrolled, the previous element @@ -321,18 +334,19 @@ items.each(function (index, item) { var $item = $(item); var bottom = $item.position().top + $item.outerHeight(true); - if ((bottom - 20) >= 0) { + var scrollBottom = scrollElement().scrollTop(); + if (bottom - 20 >= scrollBottom) { setItemActive(item); - return false; + return false; } }); }; - $('#app-content').scroll(_.debounce(detectAndSetActiveItem, 250)); + scrollElement().scroll(_.debounce(detectAndSetActiveItem, 250)); }); $(document).keyup(function (event) { var keyCode = event.keyCode; - var scrollArea = $(document); + var scrollArea = scrollElement(); var navigationArea = $('#app-navigation'); var isCompactView = $('#articles.compact').length > 0; var isExpandItem = $('#articles') |