feat: #11949, show alert if posts is going to be queued

isekai-main
Barış Soner Uşaklı 1 year ago
parent 415c0b9cec
commit 731466e572

@ -90,6 +90,7 @@
"composer.zen_mode": "Zen Mode",
"composer.select_category": "Select a category",
"composer.textarea.placeholder": "Enter your post content here, drag and drop images",
"composer.post-queue-alert": "Hello👋!<br/>This forum uses a post queue system, since you are a new user your post will be hidden until it is approved by our moderation team.",
"composer.schedule-for": "Schedule topic for",
"composer.schedule-date": "Date",
"composer.schedule-time": "Time",

@ -29,6 +29,8 @@ get:
type: boolean
maintenanceMode:
type: boolean
postQueue:
type: number
minimumTitleLength:
type: number
maximumTitleLength:

@ -35,6 +35,7 @@ apiController.loadConfig = async function (req) {
titleLayout: (meta.config.titleLayout || '{pageTitle} | {browserTitle}').replace(/{/g, '&#123;').replace(/}/g, '&#125;'),
showSiteTitle: meta.config.showSiteTitle === 1,
maintenanceMode: meta.config.maintenanceMode === 1,
postQueue: meta.config.postQueue,
minimumTitleLength: meta.config.minimumTitleLength,
maximumTitleLength: meta.config.maximumTitleLength,
minimumPostLength: meta.config.minimumPostLength,

@ -87,7 +87,7 @@ module.exports = function (Posts) {
Posts.canUserPostContentWithLinks = async function (uid, content) {
if (!content) {
return false;
return true;
}
const [reputation, isPrivileged] = await Promise.all([
user.getUserField(uid, 'reputation'),
@ -104,20 +104,25 @@ module.exports = function (Posts) {
};
Posts.shouldQueue = async function (uid, data) {
const [userData, isMemberOfExempt, categoryQueueEnabled] = await Promise.all([
user.getUserFields(uid, ['uid', 'reputation', 'postcount']),
groups.isMemberOfAny(uid, meta.config.groupsExemptFromPostQueue),
isCategoryQueueEnabled(data),
]);
let shouldQueue = meta.config.postQueue;
if (shouldQueue) {
const [userData, isPrivileged, isMemberOfExempt, categoryQueueEnabled] = await Promise.all([
user.getUserFields(uid, ['uid', 'reputation', 'postcount']),
user.isPrivileged(uid),
groups.isMemberOfAny(uid, meta.config.groupsExemptFromPostQueue),
isCategoryQueueEnabled(data),
]);
shouldQueue = categoryQueueEnabled &&
!isPrivileged &&
!isMemberOfExempt &&
(
!userData.uid ||
userData.reputation < meta.config.postQueueReputationThreshold ||
userData.postcount <= 0 ||
!await Posts.canUserPostContentWithLinks(uid, data.content)
);
}
const shouldQueue = meta.config.postQueue && categoryQueueEnabled &&
!isMemberOfExempt &&
(
!userData.uid ||
userData.reputation < meta.config.postQueueReputationThreshold ||
userData.postcount <= 0 ||
!await Posts.canUserPostContentWithLinks(uid, data.content)
);
const result = await plugins.hooks.fire('filter:post.shouldQueue', {
shouldQueue: !!shouldQueue,
uid: uid,
@ -130,7 +135,7 @@ module.exports = function (Posts) {
const type = getType(data);
const cid = await getCid(type, data);
if (!cid) {
throw new Error('[[error:invalid-cid]]');
return true;
}
return await categories.getCategoryField(cid, 'postQueue');
}

Loading…
Cancel
Save