Merge remote-tracking branch 'origin/develop' into activitypub

This commit is contained in:
Julian Lam
2024-02-20 12:08:53 -05:00
111 changed files with 750 additions and 382 deletions

View File

@@ -238,6 +238,12 @@ program
.action(() => {
require('./manage').info();
});
program
.command('maintenance <toggle>')
.description('Toggle maintenance mode true/false')
.action((toggle) => {
require('./manage').maintenance(toggle);
});
// reset
const resetCommand = program.command('reset');

View File

@@ -191,6 +191,14 @@ async function info() {
process.exit();
}
async function maintenance(toggle) {
const turnOnMaintenance = toggle === 'true';
await db.init();
await db.setObjectField('config', 'maintenanceMode', turnOnMaintenance ? 1 : 0);
console.log(`Maintenance mode turned ${turnOnMaintenance ? 'on' : 'off'}`);
process.exit();
}
async function buildWrapper(targets, options) {
try {
await build.build(targets, options);
@@ -207,3 +215,4 @@ exports.activate = activate;
exports.listPlugins = listPlugins;
exports.listEvents = listEvents;
exports.info = info;
exports.maintenance = maintenance;

View File

@@ -20,6 +20,7 @@ const categoryController = module.exports;
const url = nconf.get('url');
const relative_path = nconf.get('relative_path');
const validSorts = ['newest_to_oldest', 'oldest_to_newest', 'most_posts', 'most_votes', 'most_views'];
categoryController.get = async function (req, res, next) {
const cid = req.params.category_id;
@@ -72,12 +73,14 @@ categoryController.get = async function (req, res, next) {
const start = ((currentPage - 1) * userSettings.topicsPerPage) + topicIndex;
const stop = start + userSettings.topicsPerPage - 1;
const sort = validSorts.includes(req.query.sort) ? req.query.sort : userSettings.categoryTopicSort;
const categoryData = await categories.getCategoryById({
uid: req.uid,
cid: cid,
start: start,
stop: stop,
sort: req.query.sort || userSettings.categoryTopicSort,
sort: sort,
settings: userSettings,
query: req.query,
tag: req.query.tag,
@@ -129,6 +132,7 @@ categoryController.get = async function (req, res, next) {
categoryData.topicIndex = topicIndex;
categoryData.selectedTag = tagData.selectedTag;
categoryData.selectedTags = tagData.selectedTags;
categoryData.sortOptionLabel = `[[topic:${validator.escape(String(sort)).replace(/_/g, '-')}]]`;
if (!meta.config['feeds:disableRSS']) {
categoryData.rssFeedUrl = `${url}/category/${categoryData.cid}.rss`;

View File

@@ -20,6 +20,7 @@ const topicsController = module.exports;
const url = nconf.get('url');
const relative_path = nconf.get('relative_path');
const upload_url = nconf.get('upload_url');
const validSorts = ['oldest_to_newest', 'newest_to_oldest', 'most_votes'];
topicsController.get = async function getTopic(req, res, next) {
const tid = req.params.topic_id;
@@ -70,7 +71,7 @@ topicsController.get = async function getTopic(req, res, next) {
return helpers.redirect(res, `/topic/${tid}/${req.params.slug}${postIndex > topicData.postcount ? `/${topicData.postcount}` : ''}${generateQueryString(req.query)}`);
}
postIndex = Math.max(1, postIndex);
const sort = req.query.sort || settings.topicPostSort;
const sort = validSorts.includes(req.query.sort) ? req.query.sort : settings.topicPostSort;
const set = sort === 'most_votes' ? `tid:${tid}:posts:votes` : `tid:${tid}:posts`;
const reverse = sort === 'newest_to_oldest' || sort === 'most_votes';
@@ -106,6 +107,7 @@ topicsController.get = async function getTopic(req, res, next) {
topicData.allowMultipleBadges = meta.config.allowMultipleBadges === 1;
topicData.privateUploads = meta.config.privateUploads === 1;
topicData.showPostPreviewsOnHover = meta.config.showPostPreviewsOnHover === 1;
topicData.sortOptionLabel = `[[topic:${validator.escape(String(sort)).replace(/_/g, '-')}]]`;
if (!meta.config['feeds:disableRSS']) {
topicData.rssFeedUrl = `${relative_path}/topic/${topicData.tid}.rss`;
if (req.loggedIn) {