summaryrefslogtreecommitdiffstats
path: root/js-old
diff options
context:
space:
mode:
authorDevlin Junker <devlin.junker@gmail.com>2022-11-09 21:52:11 -0800
committerBenjamin Brahmer <info@b-brahmer.de>2022-11-17 14:50:53 +0100
commitc6b4bcc00e5202e85388a0624d149e8b1df386f8 (patch)
tree7063a29710dfd0a363f3462fee8a0e8185488e15 /js-old
parent760c44288256b104b662ade7a892a6ec0b898851 (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.js6
-rw-r--r--js-old/controller/ContentController.js13
-rw-r--r--js-old/directive/NewsScroll.js18
-rw-r--r--js-old/gui/KeyboardShortcuts.js56
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')