mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-02-26 16:41:21 +01:00
feat: convert "All Votes Are Public" toggle to vote visibility
closes #12597
This commit is contained in:
@@ -137,7 +137,7 @@
|
|||||||
"sitemapTopics": 500,
|
"sitemapTopics": 500,
|
||||||
"maintenanceMode": 0,
|
"maintenanceMode": 0,
|
||||||
"maintenanceModeStatus": 503,
|
"maintenanceModeStatus": 503,
|
||||||
"votesArePublic": 0,
|
"voteVisibility": "privileged",
|
||||||
"maximumInvites": 0,
|
"maximumInvites": 0,
|
||||||
"username:disableEdit": 0,
|
"username:disableEdit": 0,
|
||||||
"email:disableEdit": 0,
|
"email:disableEdit": 0,
|
||||||
|
|||||||
@@ -2,7 +2,10 @@
|
|||||||
"reputation": "Reputation Settings",
|
"reputation": "Reputation Settings",
|
||||||
"disable": "Disable Reputation System",
|
"disable": "Disable Reputation System",
|
||||||
"disable-down-voting": "Disable Down Voting",
|
"disable-down-voting": "Disable Down Voting",
|
||||||
"votes-are-public": "All Votes Are Public",
|
"vote-visibility": "Vote visibility",
|
||||||
|
"vote-visibility-all": "Everyone can see votes",
|
||||||
|
"vote-visibility-loggedin": "Only logged in users can see votes",
|
||||||
|
"vote-visibility-privileged": "Only privileged users like admins & moderators can see votes",
|
||||||
"thresholds": "Activity Thresholds",
|
"thresholds": "Activity Thresholds",
|
||||||
"min-rep-upvote": "Minimum reputation to upvote posts",
|
"min-rep-upvote": "Minimum reputation to upvote posts",
|
||||||
"upvotes-per-day": "Upvotes per day (set to 0 for unlimited upvotes)",
|
"upvotes-per-day": "Upvotes per day (set to 0 for unlimited upvotes)",
|
||||||
|
|||||||
@@ -91,7 +91,14 @@ module.exports = function (SocketPosts) {
|
|||||||
]);
|
]);
|
||||||
const cidToAllowed = _.zipObject(uniqCids, canRead);
|
const cidToAllowed = _.zipObject(uniqCids, canRead);
|
||||||
const checks = cids.map(
|
const checks = cids.map(
|
||||||
(cid, index) => isAdmin || isMod[index] || (cidToAllowed[cid] && !!meta.config.votesArePublic)
|
(cid, index) => isAdmin || isMod[index] ||
|
||||||
|
(
|
||||||
|
cidToAllowed[cid] &&
|
||||||
|
(
|
||||||
|
meta.config.voteVisibility === 'all' ||
|
||||||
|
(meta.config.voteVisibility === 'loggedin' && parseInt(uid, 10) > 0)
|
||||||
|
)
|
||||||
|
)
|
||||||
);
|
);
|
||||||
return isArray ? checks : checks[0];
|
return isArray ? checks : checks[0];
|
||||||
}
|
}
|
||||||
|
|||||||
16
src/upgrades/3.8.2/vote-visibility-config.js
Normal file
16
src/upgrades/3.8.2/vote-visibility-config.js
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
/* eslint-disable no-await-in-loop */
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const db = require('../../database');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: 'Add vote visibility config field',
|
||||||
|
timestamp: Date.UTC(2024, 4, 24),
|
||||||
|
method: async function () {
|
||||||
|
const current = await db.getObjectField('config', 'votesArePublic');
|
||||||
|
const isPublic = parseInt(current, 10) === 1;
|
||||||
|
await db.setObjectField('config', 'voteVisibility', isPublic ? 'all' : 'privileged');
|
||||||
|
await db.deleteObjectField('config', 'votesArePublic');
|
||||||
|
},
|
||||||
|
};
|
||||||
@@ -14,9 +14,13 @@
|
|||||||
<input type="checkbox" class="form-check-input" id="downvote:disabled" data-field="downvote:disabled">
|
<input type="checkbox" class="form-check-input" id="downvote:disabled" data-field="downvote:disabled">
|
||||||
<label for="downvote:disabled" class="form-check-label">[[admin/settings/reputation:disable-down-voting]]</label>
|
<label for="downvote:disabled" class="form-check-label">[[admin/settings/reputation:disable-down-voting]]</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check form-switch mb-3">
|
<div>
|
||||||
<input type="checkbox" class="form-check-input" id="votesArePublic" data-field="votesArePublic">
|
<label for="voteVisibility" class="form-check-label">[[admin/settings/reputation:vote-visibility]]</label>
|
||||||
<label for="votesArePublic" class="form-check-label">[[admin/settings/reputation:votes-are-public]]</label>
|
<select id="voteVisibility" data-field="voteVisibility" class="form-select">
|
||||||
|
<option value="all">[[admin/settings/reputation:vote-visibility-all]]</option>
|
||||||
|
<option value="loggedin">[[admin/settings/reputation:vote-visibility-loggedin]]</option>
|
||||||
|
<option value="privileged">[[admin/settings/reputation:vote-visibility-privileged]]</option>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user