mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-02-26 16:41:21 +01:00
closes #6874
This commit is contained in:
@@ -50,10 +50,10 @@ define('handleBack', [
|
||||
var page = Math.ceil((parseInt(bookmarkIndex, 10) + 1) / config.topicsPerPage);
|
||||
if (parseInt(page, 10) !== ajaxify.data.pagination.currentPage) {
|
||||
pagination.loadPage(page, function () {
|
||||
handleBack.scrollToTopic(bookmarkIndex, clickedIndex, 0);
|
||||
handleBack.scrollToTopic(bookmarkIndex, clickedIndex);
|
||||
});
|
||||
} else {
|
||||
handleBack.scrollToTopic(bookmarkIndex, clickedIndex, 0);
|
||||
handleBack.scrollToTopic(bookmarkIndex, clickedIndex);
|
||||
}
|
||||
} else {
|
||||
if (bookmarkIndex === 0) {
|
||||
@@ -63,9 +63,7 @@ define('handleBack', [
|
||||
|
||||
$('[component="category"]').empty();
|
||||
loadTopicsMethod(Math.max(0, bookmarkIndex - 1) + 1, function () {
|
||||
$(window).one('action:topics.loaded', function () {
|
||||
handleBack.scrollToTopic(bookmarkIndex, clickedIndex, 0);
|
||||
});
|
||||
handleBack.scrollToTopic(bookmarkIndex, clickedIndex);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -82,24 +80,17 @@ define('handleBack', [
|
||||
}
|
||||
};
|
||||
|
||||
handleBack.scrollToTopic = function (bookmarkIndex, clickedIndex, duration, offset) {
|
||||
handleBack.scrollToTopic = function (bookmarkIndex, clickedIndex) {
|
||||
if (!utils.isNumber(bookmarkIndex)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!offset) {
|
||||
offset = 0;
|
||||
}
|
||||
|
||||
var scrollTo = components.get('category/topic', 'index', bookmarkIndex);
|
||||
|
||||
if (scrollTo.length) {
|
||||
$('html, body').animate({
|
||||
scrollTop: (scrollTo.offset().top - offset) + 'px',
|
||||
}, duration !== undefined ? duration : 400, function () {
|
||||
handleBack.highlightTopic(clickedIndex);
|
||||
navigator.update();
|
||||
});
|
||||
$(window).scrollTop(scrollTo.offset().top);
|
||||
handleBack.highlightTopic(clickedIndex);
|
||||
navigator.update();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -18,12 +18,11 @@ define('topicList', ['forum/infinitescroll', 'handleBack', 'topicSelect'], funct
|
||||
|
||||
$(window).on('action:ajaxify.start', function () {
|
||||
TopicList.removeListeners();
|
||||
loadTopicsCallback = null;
|
||||
});
|
||||
|
||||
TopicList.init = function (template, cb) {
|
||||
templateName = template;
|
||||
loadTopicsCallback = cb;
|
||||
loadTopicsCallback = cb || loadTopicsAfter;
|
||||
|
||||
TopicList.watchForNewPosts();
|
||||
|
||||
@@ -33,8 +32,13 @@ define('topicList', ['forum/infinitescroll', 'handleBack', 'topicSelect'], funct
|
||||
infinitescroll.init(TopicList.loadMoreTopics);
|
||||
}
|
||||
|
||||
handleBack.init(function (after, cb) {
|
||||
loadTopicsAfter(after, 1, cb);
|
||||
handleBack.init(function (after, handleBackCallback) {
|
||||
loadTopicsCallback(after, 1, function (data, loadCallback) {
|
||||
TopicList.onTopicsLoaded(templateName, data.topics, ajaxify.data.showSelect, 1, function () {
|
||||
handleBackCallback();
|
||||
loadCallback();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
if ($('body').height() <= $(window).height() && $('[component="category"]').children().length >= 20) {
|
||||
@@ -202,14 +206,8 @@ define('topicList', ['forum/infinitescroll', 'handleBack', 'topicSelect'], funct
|
||||
return;
|
||||
}
|
||||
|
||||
var loadFn = loadTopicsCallback || loadTopicsAfter;
|
||||
loadFn(after, direction, function (data, done) {
|
||||
if (data.topics && data.topics.length) {
|
||||
TopicList.onTopicsLoaded(templateName, data.topics, ajaxify.data.showSelect, direction, done);
|
||||
} else {
|
||||
done();
|
||||
$('#load-more-btn').hide();
|
||||
}
|
||||
loadTopicsCallback(after, direction, function (data, done) {
|
||||
TopicList.onTopicsLoaded(templateName, data.topics, ajaxify.data.showSelect, direction, done);
|
||||
});
|
||||
};
|
||||
|
||||
@@ -229,12 +227,21 @@ define('topicList', ['forum/infinitescroll', 'handleBack', 'topicSelect'], funct
|
||||
}, callback);
|
||||
}
|
||||
|
||||
TopicList.onTopicsLoaded = function (templateName, topics, showSelect, direction, callback) {
|
||||
topics = topics.filter(function (topic) {
|
||||
function filterTopicsOnDom(topics) {
|
||||
return topics.filter(function (topic) {
|
||||
return !$('[component="category/topic"][data-tid="' + topic.tid + '"]').length;
|
||||
});
|
||||
}
|
||||
|
||||
TopicList.onTopicsLoaded = function (templateName, topics, showSelect, direction, callback) {
|
||||
if (!topics || !topics.length) {
|
||||
$('#load-more-btn').hide();
|
||||
return callback();
|
||||
}
|
||||
topics = filterTopicsOnDom(topics);
|
||||
|
||||
if (!topics.length) {
|
||||
$('#load-more-btn').hide();
|
||||
return callback();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user