nodebb-plugin-dbsearch 6.0.0 → 6.1.0

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/dbsearch.js CHANGED
@@ -60,10 +60,11 @@ function convertLanguageName(name) {
60
60
  }
61
61
 
62
62
  search.init = async function (params) {
63
- params.router.get('/admin/plugins/dbsearch', params.middleware.applyCSRF, params.middleware.admin.buildHeader, renderAdmin);
64
- params.router.get('/api/admin/plugins/dbsearch', params.middleware.applyCSRF, renderAdmin);
63
+ const { router } = params;
64
+ const routeHelpers = require.main.require('./src/routes/helpers');
65
+ routeHelpers.setupAdminPageRoute(router, '/admin/plugins/dbsearch', renderAdmin);
65
66
 
66
- params.router.post('/api/admin/plugins/dbsearch/save', params.middleware.applyCSRF, save);
67
+ router.post('/api/admin/plugins/dbsearch/save', params.middleware.applyCSRF, save);
67
68
 
68
69
  pluginConfig = await getPluginData();
69
70
  await searchModule.createIndices(convertLanguageName(pluginConfig ? pluginConfig.indexLanguage || 'en' : 'en'));
@@ -366,6 +367,7 @@ async function reIndexPids(pids, topic) {
366
367
  async function renderAdmin(req, res) {
367
368
  const results = await getGlobalAndPluginData();
368
369
  results.plugin.progressData = await getProgress();
370
+ results.plugin.title = 'DB Search';
369
371
  res.render('admin/plugins/dbsearch', results.plugin);
370
372
  }
371
373
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-plugin-dbsearch",
3
- "version": "6.0.0",
3
+ "version": "6.1.0",
4
4
  "description": "A Plugin that lets users search posts and topics",
5
5
  "main": "index.js",
6
6
  "repository": {
@@ -19,7 +19,7 @@
19
19
  "license": "BSD-2-Clause",
20
20
  "dependencies": {
21
21
  "lodash": "4.17.21",
22
- "redisearch": "^1.0.0"
22
+ "redisearch": "^1.0.1"
23
23
  },
24
24
  "devDependencies": {
25
25
  "eslint": "7.32.0",
package/public/admin.js CHANGED
@@ -1,6 +1,8 @@
1
1
  'use strict';
2
2
 
3
- define('admin/plugins/dbsearch', ['alerts'], function (alerts) {
3
+ define('admin/plugins/dbsearch', [
4
+ 'alerts', 'admin/settings',
5
+ ], function (alerts, settings) {
4
6
  var dbsearch = {};
5
7
  var intervalId = 0;
6
8
 
@@ -21,7 +23,7 @@ define('admin/plugins/dbsearch', ['alerts'], function (alerts) {
21
23
  excludeCategories: $('#exclude-categories').val(),
22
24
  }, function (data) {
23
25
  if (typeof data === 'string') {
24
- alerts.success('Settings saved');
26
+ settings.toggleSaveSuccess($('#save'));
25
27
  }
26
28
  });
27
29
 
@@ -1,73 +1,73 @@
1
- <div class="row">
2
- <div class="col-12">
3
- <div class="card">
4
- <div class="card-header">DB Search</div>
5
- <div class="card-body row">
6
- <div class="col-6">
7
- <div class="mb-3">
8
- <div class="alert alert-info">
9
- Topics Indexed: <strong id="topics-indexed">{topicsIndexed}</strong> / <strong>{topicCount}</strong>
10
- </div>
1
+ <div class="acp-page-container">
2
+ <!-- IMPORT admin/partials/settings/header.tpl -->
11
3
 
12
- <div class="progress" style="height:24px;">
13
- <div class="topic-progress progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:{progressData.topicsPercent}%;min-width: 2em;">{progressData.topicsPercent}%</div>
14
- </div>
15
- </div>
16
- <div class="mb-3">
17
- <div class="alert alert-info">
18
- Posts Indexed: <strong id="posts-indexed">{postsIndexed}</strong> / <strong>{postCount}</strong>
4
+ <div class="row m-0">
5
+ <div id="spy-container" class="col-12 px-0 mb-4" tabindex="0">
6
+ <div class="card">
7
+ <div class="card-header">DB Search</div>
8
+ <div class="card-body row">
9
+ <div class="col-6">
10
+ <div class="mb-3">
11
+ <div class="alert alert-info">
12
+ Topics Indexed: <strong id="topics-indexed">{topicsIndexed}</strong> / <strong>{topicCount}</strong>
13
+ </div>
14
+
15
+ <div class="progress" style="height:24px;">
16
+ <div class="topic-progress progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:{progressData.topicsPercent}%;min-width: 2em;">{progressData.topicsPercent}%</div>
17
+ </div>
19
18
  </div>
20
- <div class="progress" style="height:24px;">
21
- <div class="post-progress progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:{progressData.postsPercent}%;min-width: 2em;">{progressData.postsPercent}%</div>
19
+ <div class="mb-3">
20
+ <div class="alert alert-info">
21
+ Posts Indexed: <strong id="posts-indexed">{postsIndexed}</strong> / <strong>{postCount}</strong>
22
+ </div>
23
+ <div class="progress" style="height:24px;">
24
+ <div class="post-progress progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:{progressData.postsPercent}%;min-width: 2em;">{progressData.postsPercent}%</div>
25
+ </div>
22
26
  </div>
23
- </div>
24
27
 
25
- <button class="btn btn-warning" id="reindex" <!-- IF working -->disabled<!-- ENDIF working -->>Re Index</button>
26
- <button class="btn btn-danger" id="clear-index">Clear Index</button>
27
- <span id="work-in-progress" class="<!-- IF !working -->hidden<!-- ENDIF !working -->">
28
- <i class="fa fa-gear fa-spin"></i> Working...
29
- </span>
28
+ <button class="btn btn-warning" id="reindex" <!-- IF working -->disabled<!-- ENDIF working -->>Re Index</button>
29
+ <button class="btn btn-danger" id="clear-index">Clear Index</button>
30
+ <span id="work-in-progress" class="<!-- IF !working -->hidden<!-- ENDIF !working -->">
31
+ <i class="fa fa-gear fa-spin"></i> Working...
32
+ </span>
30
33
 
31
- <hr/>
34
+ <hr/>
32
35
 
33
- <!-- IF languageSupported -->
34
- <div class="mb-3">
35
- <label class="form-label">Index Language</label>
36
- <select class="form-select" id="indexLanguage">
37
- <!-- BEGIN languages -->
38
- <option value="{languages.value}" <!-- IF languages.selected -->selected<!-- ENDIF languages.selected -->>{languages.name}</option>
39
- <!-- END languages -->
40
- </select>
41
- </div>
42
- <button class="btn btn-primary" id="changeLanguage">Change Language</button>
43
- <hr/>
44
- <!-- ENDIF languageSupported -->
36
+ <!-- IF languageSupported -->
37
+ <div class="mb-3">
38
+ <label class="form-label">Index Language</label>
39
+ <select class="form-select" id="indexLanguage">
40
+ <!-- BEGIN languages -->
41
+ <option value="{languages.value}" <!-- IF languages.selected -->selected<!-- ENDIF languages.selected -->>{languages.name}</option>
42
+ <!-- END languages -->
43
+ </select>
44
+ </div>
45
+ <button class="btn btn-primary" id="changeLanguage">Change Language</button>
46
+ <hr/>
47
+ <!-- ENDIF languageSupported -->
45
48
 
46
- <div class="mb-3">
47
- <label class="form-label">Topic Limit</label>
48
- <input id="topicLimit" type="text" class="form-control" placeholder="Number of topics to return" value="{topicLimit}">
49
- </div>
50
- <div class="mb-3">
51
- <label class="form-label">Post Limit</label>
52
- <input id="postLimit" type="text" class="form-control" placeholder="Number of posts to return" value="{postLimit}">
49
+ <div class="mb-3">
50
+ <label class="form-label">Topic Limit</label>
51
+ <input id="topicLimit" type="text" class="form-control" placeholder="Number of topics to return" value="{topicLimit}">
52
+ </div>
53
+ <div class="mb-3">
54
+ <label class="form-label">Post Limit</label>
55
+ <input id="postLimit" type="text" class="form-control" placeholder="Number of posts to return" value="{postLimit}">
56
+ </div>
53
57
  </div>
54
- </div>
55
58
 
56
- <div class="col-6">
57
- <div class="post-search-item">
58
- <label class="form-label">Select categories to exclude from indexing</label>
59
- <select multiple class="form-select" id="exclude-categories" size="30">
60
- <!-- BEGIN allCategories -->
61
- <option value="{allCategories.value}" <!-- IF allCategories.selected -->selected<!-- ENDIF allCategories.selected -->>{allCategories.text}</option>
62
- <!-- END allCategories -->
63
- </select>
59
+ <div class="col-6">
60
+ <div class="post-search-item">
61
+ <label class="form-label">Select categories to exclude from indexing</label>
62
+ <select multiple class="form-select" id="exclude-categories" size="30">
63
+ <!-- BEGIN allCategories -->
64
+ <option value="{allCategories.value}" <!-- IF allCategories.selected -->selected<!-- ENDIF allCategories.selected -->>{allCategories.text}</option>
65
+ <!-- END allCategories -->
66
+ </select>
67
+ </div>
64
68
  </div>
65
69
  </div>
66
70
  </div>
67
71
  </div>
68
72
  </div>
69
73
  </div>
70
-
71
- <button id="save" class="floating-button mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored">
72
- <i class="material-icons">save</i>
73
- </button>
@@ -1,28 +1,28 @@
1
- 'use strict';
2
-
3
-
4
- const winston = require.main.require('winston');
5
- const db = module.parent.require('./database');
6
-
7
- module.exports = {
8
- name: 'Changing dbsearch mongodb search schema to use _id',
9
- timestamp: Date.UTC(2018, 10, 26),
10
- method: async function () {
11
- const nconf = require.main.require('nconf');
12
- const isMongo = nconf.get('database') === 'mongo';
13
- if (!isMongo) {
14
- return;
15
- }
16
-
17
- const plugin = require('../lib/dbsearch');
18
- await db.client.collection('searchtopic').deleteMany({});
19
- await db.client.collection('searchpost').deleteMany({});
20
- try {
21
- await db.client.collection('searchtopic').dropIndex({ id: 1 });
22
- await db.client.collection('searchpost').dropIndex({ id: 1 });
23
- } catch (err) {
24
- winston.error(err.stack);
25
- }
26
- await plugin.reindex();
27
- },
1
+ 'use strict';
2
+
3
+
4
+ const winston = require.main.require('winston');
5
+ const db = module.parent.require('./database');
6
+
7
+ module.exports = {
8
+ name: 'Changing dbsearch mongodb search schema to use _id',
9
+ timestamp: Date.UTC(2018, 10, 26),
10
+ method: async function () {
11
+ const nconf = require.main.require('nconf');
12
+ const isMongo = nconf.get('database') === 'mongo';
13
+ if (!isMongo) {
14
+ return;
15
+ }
16
+
17
+ const plugin = require('../lib/dbsearch');
18
+ await db.client.collection('searchtopic').deleteMany({});
19
+ await db.client.collection('searchpost').deleteMany({});
20
+ try {
21
+ await db.client.collection('searchtopic').dropIndex({ id: 1 });
22
+ await db.client.collection('searchpost').dropIndex({ id: 1 });
23
+ } catch (err) {
24
+ winston.error(err.stack);
25
+ }
26
+ await plugin.reindex();
27
+ },
28
28
  };