v1.18.x
Baris Usakli 6 years ago
parent 94e10c8c32
commit 1454fdceff

@ -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();
}

Loading…
Cancel
Save