feat: return to previous page and/or category after marking topic unread

... also return to category if pagination is active and previous page was another page in the thread
v1.18.x
psychobunny 4 years ago
parent 6ebd2c80e7
commit 48a8ec4ab2

@ -4,7 +4,8 @@
define('forum/topic/threadTools', [ define('forum/topic/threadTools', [
'components', 'components',
'translator', 'translator',
], function (components, translator) { 'handleBack',
], function (components, translator, handleBack) {
var ThreadTools = {}; var ThreadTools = {};
ThreadTools.init = function (tid, topicContainer) { ThreadTools.init = function (tid, topicContainer) {
@ -50,6 +51,13 @@ define('forum/topic/threadTools', [
if (err) { if (err) {
return app.alertError(err); return app.alertError(err);
} }
if (app.previousUrl && !app.previousUrl.match('^/topic')) {
ajaxify.go(app.previousUrl, handleBack.onBackClicked);
} else if (ajaxify.data.category) {
ajaxify.go('category/' + ajaxify.data.category.slug, handleBack.onBackClicked);
}
app.alertSuccess('[[topic:mark_unread.success]]'); app.alertSuccess('[[topic:mark_unread.success]]');
}); });
return false; return false;

@ -15,6 +15,8 @@ define('handleBack', [
$(window).off('action:popstate', onBackClicked).on('action:popstate', onBackClicked); $(window).off('action:popstate', onBackClicked).on('action:popstate', onBackClicked);
}; };
handleBack.onBackClicked = onBackClicked;
function saveClickedIndex() { function saveClickedIndex() {
$('[component="category"]').on('click', '[component="topic/header"]', function () { $('[component="category"]').on('click', '[component="topic/header"]', function () {
var clickedIndex = $(this).parents('[data-index]').attr('data-index'); var clickedIndex = $(this).parents('[data-index]').attr('data-index');

Loading…
Cancel
Save