mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-02 03:55:55 +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,
|
||||
"maintenanceMode": 0,
|
||||
"maintenanceModeStatus": 503,
|
||||
"votesArePublic": 0,
|
||||
"voteVisibility": "privileged",
|
||||
"maximumInvites": 0,
|
||||
"username:disableEdit": 0,
|
||||
"email:disableEdit": 0,
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
"reputation": "Reputation Settings",
|
||||
"disable": "Disable Reputation System",
|
||||
"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",
|
||||
"min-rep-upvote": "Minimum reputation to upvote posts",
|
||||
"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 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];
|
||||
}
|
||||
|
||||
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">
|
||||
<label for="downvote:disabled" class="form-check-label">[[admin/settings/reputation:disable-down-voting]]</label>
|
||||
</div>
|
||||
<div class="form-check form-switch mb-3">
|
||||
<input type="checkbox" class="form-check-input" id="votesArePublic" data-field="votesArePublic">
|
||||
<label for="votesArePublic" class="form-check-label">[[admin/settings/reputation:votes-are-public]]</label>
|
||||
<div>
|
||||
<label for="voteVisibility" class="form-check-label">[[admin/settings/reputation:vote-visibility]]</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>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user