nodebb-plugin-poll 4.0.11 → 4.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/config.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const meta = require.main.require('./src/meta');
3
+ const meta = nodebb.require('./src/meta');
4
4
 
5
5
  const packageInfo = require('../package.json');
6
6
  const pluginInfo = require('../plugin.json');
package/lib/hooks.js CHANGED
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- const db = require.main.require('./src/database');
4
- const topics = require.main.require('./src/topics');
5
- const posts = require.main.require('./src/posts');
6
- const privileges = require.main.require('./src/privileges');
3
+ const db = nodebb.require('./src/database');
4
+ const topics = nodebb.require('./src/topics');
5
+ const posts = nodebb.require('./src/posts');
6
+ const privileges = nodebb.require('./src/privileges');
7
7
 
8
8
 
9
9
  const Config = require('./config');
package/lib/nodebb.js CHANGED
@@ -1,17 +1,17 @@
1
1
  'use strict';
2
2
 
3
3
  module.exports = {
4
- db: require.main.require('./src/database'),
5
- Settings: require.main.require('./src/settings'),
6
- Meta: require.main.require('./src/meta'),
7
- User: require.main.require('./src/user'),
8
- Posts: require.main.require('./src/posts'),
9
- Topics: require.main.require('./src/topics'),
10
- Privileges: require.main.require('./src/privileges'),
11
- Plugins: require.main.require('./src/plugins'),
12
- PluginSockets: require.main.require('./src/socket.io/plugins'),
13
- SocketIndex: require.main.require('./src/socket.io/index'),
14
- Translator: require.main.require('./src/translator'),
15
- winston: require.main.require('winston'),
4
+ db: nodebb.require('./src/database'),
5
+ Settings: nodebb.require('./src/settings'),
6
+ Meta: nodebb.require('./src/meta'),
7
+ User: nodebb.require('./src/user'),
8
+ Posts: nodebb.require('./src/posts'),
9
+ Topics: nodebb.require('./src/topics'),
10
+ Privileges: nodebb.require('./src/privileges'),
11
+ Plugins: nodebb.require('./src/plugins'),
12
+ PluginSockets: nodebb.require('./src/socket.io/plugins'),
13
+ SocketIndex: nodebb.require('./src/socket.io/index'),
14
+ Translator: nodebb.require('./src/translator'),
15
+ winston: nodebb.require('winston'),
16
16
  app: null,
17
17
  };
package/lib/poll.js CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- const db = require.main.require('./src/database');
4
- const privileges = require.main.require('./src/privileges');
3
+ const db = nodebb.require('./src/database');
4
+ const privileges = nodebb.require('./src/privileges');
5
5
 
6
6
  const Vote = require('./vote');
7
7
 
package/lib/sockets.js CHANGED
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- const _ = require.main.require('lodash');
4
- const db = require.main.require('./src/database');
5
- const posts = require.main.require('./src/posts');
6
- const topics = require.main.require('./src/topics');
7
- const privileges = require.main.require('./src/privileges');
3
+ const _ = nodebb.require('lodash');
4
+ const db = nodebb.require('./src/database');
5
+ const posts = nodebb.require('./src/posts');
6
+ const topics = nodebb.require('./src/topics');
7
+ const privileges = nodebb.require('./src/privileges');
8
8
 
9
9
  const NodeBB = require('./nodebb');
10
10
  const Config = require('./config');
@@ -27,7 +27,8 @@ Sockets.get = async function (socket, data) {
27
27
  return [];
28
28
  }
29
29
  return await Promise.all(data.pollIds.map(async (pollId) => {
30
- const pollData = await Poll.get(pollId, socket.uid, !!socket.uid);
30
+ const withVotes = allowAnon || socket.uid > 0;
31
+ const pollData = await Poll.get(pollId, socket.uid, withVotes);
31
32
  if (!pollData) {
32
33
  return null;
33
34
  }
@@ -144,18 +145,20 @@ Sockets.removeVote = async function (socket, data) {
144
145
  };
145
146
 
146
147
  Sockets.getOptionDetails = async function (socket, data) {
147
- if (!socket.uid || !data || isNaN(parseInt(data.pollId, 10)) || isNaN(parseInt(data.optionId, 10))) {
148
+ if (!data || isNaN(parseInt(data.pollId, 10)) || isNaN(parseInt(data.optionId, 10))) {
148
149
  throw new Error('Invalid request');
149
150
  }
150
- const [poll, option] = await Promise.all([
151
+ const [poll, option, settings] = await Promise.all([
151
152
  Poll.getInfo(data.pollId),
152
153
  Poll.getOption(data.pollId, data.optionId, true),
154
+ Config.getSettings(),
153
155
  ]);
154
156
  if (!poll) {
155
157
  throw new Error('[[error:invalid-data]]');
156
158
  }
159
+ const allowAnon = settings.allowGuestsToViewResults === 'on';
157
160
  const canRead = await privileges.posts.can('topics:read', poll.pid, socket.uid);
158
- if (!canRead) {
161
+ if (!canRead || (!allowAnon && socket.uid <= 0)) {
159
162
  throw new Error('[[error:no-privileges]]');
160
163
  }
161
164
  if (!option || !option.votes || !option.votes.length) {
package/lib/vote.js CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- const db = require.main.require('./src/database');
4
- const privileges = require.main.require('./src/privileges');
3
+ const db = nodebb.require('./src/database');
4
+ const privileges = nodebb.require('./src/privileges');
5
5
 
6
6
  const Poll = require('./poll');
7
7
 
package/library.js CHANGED
@@ -5,16 +5,16 @@ const Config = require('./lib/config');
5
5
  const Sockets = require('./lib/sockets');
6
6
  const Hooks = require('./lib/hooks');
7
7
  const Poll = require('./lib/poll');
8
- const db = require.main.require('./src/database');
9
- const pagination = require.main.require('./src/pagination');
10
- const utils = require.main.require('./src/utils');
8
+ const db = nodebb.require('./src/database');
9
+ const pagination = nodebb.require('./src/pagination');
10
+ const utils = nodebb.require('./src/utils');
11
11
 
12
12
  const Plugin = module.exports;
13
13
 
14
14
  Plugin.hooks = Hooks;
15
15
 
16
16
  Plugin.load = async function (params) {
17
- const routeHelpers = require.main.require('./src/routes/helpers');
17
+ const routeHelpers = nodebb.require('./src/routes/helpers');
18
18
  const { router } = params;
19
19
 
20
20
  routeHelpers.setupAdminPageRoute(router, `/admin/plugins/${Config.plugin.id}`, async (req, res) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-plugin-poll",
3
- "version": "4.0.11",
3
+ "version": "4.0.13",
4
4
  "description": "NodeBB Poll Plugin",
5
5
  "main": "library.js",
6
6
  "scripts": {
@@ -29,7 +29,7 @@
29
29
  "compatibility": "^4.14.0"
30
30
  },
31
31
  "devDependencies": {
32
- "eslint": "10.0.3",
33
- "eslint-config-nodebb": "^2.0.0"
32
+ "eslint": "10.6.0",
33
+ "eslint-config-nodebb": "^2.0.3"
34
34
  }
35
35
  }
@@ -64,6 +64,7 @@
64
64
  // used to identify the poll in the manage modal after creation
65
65
  // so we can edit/delete
66
66
  pollId: Date.now(),
67
+ title: config.poll.defaultTitle,
67
68
  maximumVotesPerUser: config.poll.maximumVotesPerUser,
68
69
  }, config.poll).then((newPoll) => {
69
70
  if (newPoll) {
@@ -258,9 +258,9 @@
258
258
  };
259
259
 
260
260
  View.prototype.showOptionDetails = function (details) {
261
- require(['bootbox'], function (bootbox) {
262
- app.parseAndTranslate('poll/view/details', details, function (html) {
263
- bootbox.dialog({
261
+ require(['benchpress', 'modals'], function (benchpress, modals) {
262
+ benchpress.render('poll/view/details', details).then(function (html) {
263
+ modals.dialog({
264
264
  title: `[[poll:x-users-voted-for-this-option, ${details.voteCount}]]`,
265
265
  message: html,
266
266
  backdrop: true,
@@ -301,7 +301,7 @@
301
301
  }
302
302
  } else {
303
303
  this.showVoteButton();
304
- if (this.pollData.allowAnonVoting) {
304
+ if (this.pollData?.info?.allowAnonVoting) {
305
305
  this.showVoteAnonButton();
306
306
  }
307
307
  }
@@ -1,7 +1,7 @@
1
1
  <div class="d-flex flex-wrap gap-2">
2
2
  {{{ each votes }}}
3
3
  <a href="{config.relative_path}/user/{votes.userslug}" class="poll-result-details">
4
- {buildAvatar(votes, "24px", true)}
4
+ {{buildAvatar(votes, "24px", true)}}
5
5
  </a>
6
6
  {{{ end }}}
7
7
  </div>
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const async = require.main.require('async');
3
+ const async = nodebb.require('async');
4
4
  const NodeBB = require('../lib/nodebb');
5
5
 
6
6
  const timestamp = Date.UTC(2019, 3, 1);
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- const db = require.main.require('./src/database');
4
- const privileges = require.main.require('./src/privileges');
3
+ const db = nodebb.require('./src/database');
4
+ const privileges = nodebb.require('./src/privileges');
5
5
 
6
6
  module.exports = {
7
7
  name: 'Fix incorrectly given poll privilege',
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const async = require.main.require('async');
3
+ const async = nodebb.require('async');
4
4
  const NodeBB = require('../lib/nodebb');
5
5
 
6
6
  module.exports = {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- const db = require.main.require('./src/database');
4
- const batch = require.main.require('./src/batch');
3
+ const db = nodebb.require('./src/database');
4
+ const batch = nodebb.require('./src/batch');
5
5
 
6
6
  module.exports = {
7
7
  name: 'Convert data structures for v4.0',