mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-12-16 21:40:23 +01:00
Compare commits
7 Commits
custom-use
...
v1.15.3-be
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a526fd860b | ||
|
|
05a50abdd4 | ||
|
|
79696abfd1 | ||
|
|
8b7b6d5e82 | ||
|
|
075f57e728 | ||
|
|
de0a7dccea | ||
|
|
69b1ab7009 |
@@ -30,12 +30,18 @@ define('forum/topic/move-post', [
|
|||||||
postSelect.togglePostSelection(postEl, postEl.attr('data-pid'));
|
postSelect.togglePostSelection(postEl, postEl.attr('data-pid'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$(window).off('action:axajify.end', checkMoveButtonEnable)
|
$(window).off('action:ajaxify.end', checkMoveButtonEnable)
|
||||||
.on('action:ajaxify.end', checkMoveButtonEnable);
|
.on('action:ajaxify.end', checkMoveButtonEnable);
|
||||||
|
|
||||||
moveCommit.on('click', function () {
|
moveCommit.on('click', function () {
|
||||||
|
if (!ajaxify.data.template.topic || !ajaxify.data.tid) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
moveCommit.attr('disabled', true);
|
moveCommit.attr('disabled', true);
|
||||||
|
var data = {
|
||||||
|
pids: postSelect.pids.slice(),
|
||||||
|
tid: ajaxify.data.tid,
|
||||||
|
};
|
||||||
alerts.alert({
|
alerts.alert({
|
||||||
alert_id: 'pids_move_' + postSelect.pids.join('-'),
|
alert_id: 'pids_move_' + postSelect.pids.join('-'),
|
||||||
title: '[[topic:thread_tools.move-posts]]',
|
title: '[[topic:thread_tools.move-posts]]',
|
||||||
@@ -43,7 +49,7 @@ define('forum/topic/move-post', [
|
|||||||
type: 'success',
|
type: 'success',
|
||||||
timeout: 10000,
|
timeout: 10000,
|
||||||
timeoutfn: function () {
|
timeoutfn: function () {
|
||||||
movePosts();
|
movePosts(data);
|
||||||
},
|
},
|
||||||
clickfn: function (alert, params) {
|
clickfn: function (alert, params) {
|
||||||
delete params.timeoutfn;
|
delete params.timeoutfn;
|
||||||
@@ -90,15 +96,15 @@ define('forum/topic/move-post', [
|
|||||||
checkMoveButtonEnable();
|
checkMoveButtonEnable();
|
||||||
}
|
}
|
||||||
|
|
||||||
function movePosts() {
|
function movePosts(data) {
|
||||||
if (!ajaxify.data.template.topic || !ajaxify.data.tid) {
|
if (!ajaxify.data.template.topic || !data.tid) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
socket.emit('posts.movePosts', { pids: postSelect.pids, tid: ajaxify.data.tid }, function (err) {
|
socket.emit('posts.movePosts', { pids: data.pids, tid: data.tid }, function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return app.alertError(err.message);
|
return app.alertError(err.message);
|
||||||
}
|
}
|
||||||
postSelect.pids.forEach(function (pid) {
|
data.pids.forEach(function (pid) {
|
||||||
components.get('post', 'pid', pid).fadeOut(500, function () {
|
components.get('post', 'pid', pid).fadeOut(500, function () {
|
||||||
$(this).remove();
|
$(this).remove();
|
||||||
});
|
});
|
||||||
@@ -116,6 +122,5 @@ define('forum/topic/move-post', [
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return MovePost;
|
return MovePost;
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -60,6 +60,12 @@ define('forum/topic/move', ['categorySelector', 'alerts'], function (categorySel
|
|||||||
} else if (!Move.tids) {
|
} else if (!Move.tids) {
|
||||||
message = '[[topic:topic_move_all_success, ' + selectedCategory.name + ']]';
|
message = '[[topic:topic_move_all_success, ' + selectedCategory.name + ']]';
|
||||||
}
|
}
|
||||||
|
var data = {
|
||||||
|
tids: Move.tids ? Move.tids.slice() : null,
|
||||||
|
cid: selectedCategory.cid,
|
||||||
|
currentCid: Move.currentCid,
|
||||||
|
onComplete: Move.onComplete,
|
||||||
|
};
|
||||||
alerts.alert({
|
alerts.alert({
|
||||||
alert_id: 'tids_move_' + (Move.tids ? Move.tids.join('-') : 'all'),
|
alert_id: 'tids_move_' + (Move.tids ? Move.tids.join('-') : 'all'),
|
||||||
title: '[[topic:thread_tools.move]]',
|
title: '[[topic:thread_tools.move]]',
|
||||||
@@ -67,7 +73,7 @@ define('forum/topic/move', ['categorySelector', 'alerts'], function (categorySel
|
|||||||
type: 'success',
|
type: 'success',
|
||||||
timeout: 10000,
|
timeout: 10000,
|
||||||
timeoutfn: function () {
|
timeoutfn: function () {
|
||||||
moveTopics();
|
moveTopics(data);
|
||||||
},
|
},
|
||||||
clickfn: function (alert, params) {
|
clickfn: function (alert, params) {
|
||||||
delete params.timeoutfn;
|
delete params.timeoutfn;
|
||||||
@@ -77,26 +83,19 @@ define('forum/topic/move', ['categorySelector', 'alerts'], function (categorySel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function moveTopics() {
|
function moveTopics(data) {
|
||||||
var data = {
|
|
||||||
tids: Move.tids,
|
|
||||||
cid: selectedCategory.cid,
|
|
||||||
currentCid: Move.currentCid,
|
|
||||||
};
|
|
||||||
|
|
||||||
$(window).trigger('action:topic.move', data);
|
$(window).trigger('action:topic.move', data);
|
||||||
|
|
||||||
socket.emit(Move.moveAll ? 'topics.moveAll' : 'topics.move', data, function (err) {
|
socket.emit(!data.tids ? 'topics.moveAll' : 'topics.move', data, function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return app.alertError(err.message);
|
return app.alertError(err.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof Move.onComplete === 'function') {
|
if (typeof data.onComplete === 'function') {
|
||||||
Move.onComplete();
|
data.onComplete();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return Move;
|
return Move;
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -338,7 +338,13 @@ define('forum/topic/postTools', [
|
|||||||
function bookmarkPost(button, pid) {
|
function bookmarkPost(button, pid) {
|
||||||
var method = button.attr('data-bookmarked') === 'false' ? 'put' : 'del';
|
var method = button.attr('data-bookmarked') === 'false' ? 'put' : 'del';
|
||||||
|
|
||||||
api[method](`/posts/${pid}/bookmark`, undefined, undefined, 'default');
|
api[method](`/posts/${pid}/bookmark`, undefined, function (err) {
|
||||||
|
if (err) {
|
||||||
|
return app.alertError(err);
|
||||||
|
}
|
||||||
|
var type = method === 'put' ? 'bookmark' : 'unbookmark';
|
||||||
|
$(window).trigger('action:post.' + type, { pid: pid });
|
||||||
|
});
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -429,6 +435,7 @@ define('forum/topic/postTools', [
|
|||||||
$(window).trigger('action:composer.topic.new', {
|
$(window).trigger('action:composer.topic.new', {
|
||||||
cid: ajaxify.data.cid,
|
cid: ajaxify.data.cid,
|
||||||
body: body,
|
body: body,
|
||||||
|
fromStaleTopic: true,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -56,14 +56,22 @@ define('forum/topic/votes', [
|
|||||||
var currentState = post.find(className).length;
|
var currentState = post.find(className).length;
|
||||||
|
|
||||||
const method = currentState ? 'del' : 'put';
|
const method = currentState ? 'del' : 'put';
|
||||||
api[method](`/posts/${post.attr('data-pid')}/vote`, {
|
var pid = post.attr('data-pid');
|
||||||
|
api[method](`/posts/${pid}/vote`, {
|
||||||
delta: delta,
|
delta: delta,
|
||||||
}).catch((err) => {
|
}, function (err) {
|
||||||
app.alertError(err.message);
|
if (err) {
|
||||||
|
if (err.message === '[[error:not-logged-in]]') {
|
||||||
if (err.message === '[[error:not-logged-in]]') {
|
ajaxify.go('login');
|
||||||
ajaxify.go('login');
|
return;
|
||||||
|
}
|
||||||
|
return app.alertError(err.message);
|
||||||
}
|
}
|
||||||
|
$(window).trigger('action:post.toggleVote', {
|
||||||
|
pid: pid,
|
||||||
|
delta: delta,
|
||||||
|
unvote: method === 'del',
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -9,6 +9,10 @@ define('share', function () {
|
|||||||
|
|
||||||
function openShare(url, urlToPost, width, height) {
|
function openShare(url, urlToPost, width, height) {
|
||||||
window.open(url + encodeURIComponent(baseUrl + config.relative_path + urlToPost), '_blank', 'width=' + width + ',height=' + height + ',scrollbars=no,status=no');
|
window.open(url + encodeURIComponent(baseUrl + config.relative_path + urlToPost), '_blank', 'width=' + width + ',height=' + height + ',scrollbars=no,status=no');
|
||||||
|
$(window).trigger('action:share.open', {
|
||||||
|
url: url,
|
||||||
|
urlToPost: urlToPost,
|
||||||
|
});
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -109,8 +109,16 @@ usersAPI.updateSettings = async function (caller, data) {
|
|||||||
throw new Error('[[error:no-privileges]]');
|
throw new Error('[[error:no-privileges]]');
|
||||||
}
|
}
|
||||||
|
|
||||||
const current = await user.getSettings(data.uid);
|
let defaults = await user.getSettings(0);
|
||||||
const payload = { ...current, ...data.settings };
|
defaults = {
|
||||||
|
postsPerPage: defaults.postsPerPage,
|
||||||
|
topicsPerPage: defaults.topicsPerPage,
|
||||||
|
userLang: defaults.userLang,
|
||||||
|
acpLang: defaults.acpLang,
|
||||||
|
};
|
||||||
|
// load raw settings without parsing values to booleans
|
||||||
|
const current = await db.getObject('user:' + data.uid + ':settings');
|
||||||
|
const payload = { ...defaults, ...current, ...data.settings };
|
||||||
delete payload.uid;
|
delete payload.uid;
|
||||||
|
|
||||||
return await user.saveSettings(data.uid, payload);
|
return await user.saveSettings(data.uid, payload);
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ usersController.search = async function (req, res) {
|
|||||||
if (!query || query.length < 2) {
|
if (!query || query.length < 2) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
hardCap = hardCap || resultsPerPage * 10;
|
query = String(query).toLowerCase();
|
||||||
if (!query.endsWith('*')) {
|
if (!query.endsWith('*')) {
|
||||||
query += '*';
|
query += '*';
|
||||||
}
|
}
|
||||||
@@ -156,7 +156,7 @@ usersController.search = async function (req, res) {
|
|||||||
const data = await db.getSortedSetScan({
|
const data = await db.getSortedSetScan({
|
||||||
key: searchBy + ':sorted',
|
key: searchBy + ':sorted',
|
||||||
match: query,
|
match: query,
|
||||||
limit: hardCap,
|
limit: hardCap || (resultsPerPage * 10),
|
||||||
});
|
});
|
||||||
return data.map(data => data.split(':').pop());
|
return data.map(data => data.split(':').pop());
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -79,6 +79,9 @@ middleware.renderHeader = async (req, res, data) => {
|
|||||||
templateValues.template = { name: res.locals.template };
|
templateValues.template = { name: res.locals.template };
|
||||||
templateValues.template[res.locals.template] = true;
|
templateValues.template[res.locals.template] = true;
|
||||||
|
|
||||||
|
// Normally this should hook be automatically added by middleware.processRender(), but it seems to only be fired for page hooks, and not when called internally.
|
||||||
|
({ templateData: templateValues } = await plugins.hooks.fire('filter:admin/header.build', { req, res, templateData: templateValues }));
|
||||||
|
|
||||||
return await req.app.renderAsync('admin/header', templateValues);
|
return await req.app.renderAsync('admin/header', templateValues);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -47,8 +47,16 @@ module.exports = function (User) {
|
|||||||
settings.openOutgoingLinksInNewTab = parseInt(getSetting(settings, 'openOutgoingLinksInNewTab', 0), 10) === 1;
|
settings.openOutgoingLinksInNewTab = parseInt(getSetting(settings, 'openOutgoingLinksInNewTab', 0), 10) === 1;
|
||||||
settings.dailyDigestFreq = getSetting(settings, 'dailyDigestFreq', 'off');
|
settings.dailyDigestFreq = getSetting(settings, 'dailyDigestFreq', 'off');
|
||||||
settings.usePagination = parseInt(getSetting(settings, 'usePagination', 0), 10) === 1;
|
settings.usePagination = parseInt(getSetting(settings, 'usePagination', 0), 10) === 1;
|
||||||
settings.topicsPerPage = Math.min(settings.topicsPerPage ? parseInt(settings.topicsPerPage, 10) : defaultTopicsPerPage, defaultTopicsPerPage);
|
settings.topicsPerPage =
|
||||||
settings.postsPerPage = Math.min(settings.postsPerPage ? parseInt(settings.postsPerPage, 10) : defaultPostsPerPage, defaultPostsPerPage);
|
Math.min(
|
||||||
|
meta.config.maxTopicsPerPage,
|
||||||
|
Math.min(settings.topicsPerPage ? parseInt(settings.topicsPerPage, 10) : defaultTopicsPerPage, defaultTopicsPerPage)
|
||||||
|
);
|
||||||
|
settings.postsPerPage =
|
||||||
|
Math.min(
|
||||||
|
meta.config.maxPostsPerPage,
|
||||||
|
Math.min(settings.postsPerPage ? parseInt(settings.postsPerPage, 10) : defaultPostsPerPage, defaultPostsPerPage)
|
||||||
|
);
|
||||||
settings.userLang = settings.userLang || meta.config.defaultLang || 'en-GB';
|
settings.userLang = settings.userLang || meta.config.defaultLang || 'en-GB';
|
||||||
settings.acpLang = settings.acpLang || settings.userLang;
|
settings.acpLang = settings.acpLang || settings.userLang;
|
||||||
settings.topicPostSort = getSetting(settings, 'topicPostSort', 'oldest_to_newest');
|
settings.topicPostSort = getSetting(settings, 'topicPostSort', 'oldest_to_newest');
|
||||||
|
|||||||
Reference in New Issue
Block a user