nodebb-plugin-customize 4.1.1 → 5.0.1

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.
@@ -6,17 +6,14 @@ const util_1 = require("util");
6
6
  const fs_extra_1 = require("fs-extra");
7
7
  const pubsub_1 = require("./pubsub");
8
8
  const db = require("./database");
9
- if (!require.main) {
10
- throw Error('[plugin-customize] `require.main` is undefined');
11
- }
12
- const nconf = require.main.require('nconf');
13
- const User = require.main.require('./src/user');
14
- const Languages = require.main.require('./src/languages');
15
- const File = require.main.require('./src/file');
16
- const Translator = require.main.require('./src/translator');
17
- const Utils = require.main.require('./src/utils');
18
- const { setupApiRoute, setupAdminPageRoute } = require.main.require('./src/routes/helpers');
19
- const { formatApiResponse } = require.main.require('./src/controllers/helpers');
9
+ const nconf = nodebb.require('nconf');
10
+ const User = nodebb.require('./src/user');
11
+ const Languages = nodebb.require('./src/languages');
12
+ const File = nodebb.require('./src/file');
13
+ const Translator = nodebb.require('./src/translator');
14
+ const Utils = nodebb.require('./src/utils');
15
+ const { setupApiRoute, setupAdminPageRoute } = nodebb.require('./src/routes/helpers');
16
+ const { formatApiResponse } = nodebb.require('./src/controllers/helpers');
20
17
  const escape = (dirty) => Translator.escape(Utils.escapeHTML(dirty));
21
18
  const listLanguages = (0, util_1.promisify)(Languages.list);
22
19
  const getSettings = (0, util_1.promisify)(User.getSettings);
@@ -1 +1 @@
1
- {"version":3,"file":"controllers.js","sourceRoot":"","sources":["../../lib/controllers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controllers.js","sourceRoot":"","sources":["../../lib/controllers.ts"],"names":[],"mappings":";;AA0IA,8BAUC;AAnJD,+BAAsC;AACtC,+BAAiC;AACjC,uCAAoC;AAEpC,qCAAiC;AACjC,iCAAiC;AAEjC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACtC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AACpD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACtD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAC5C,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;AACtF,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;AAE1E,MAAM,MAAM,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAErF,MAAM,aAAa,GAGZ,IAAA,gBAAS,EAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACjC,MAAM,WAAW,GAAmD,IAAA,gBAAS,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAChG,MAAM,IAAI,GAA+B,IAAA,gBAAS,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE9D,yFAAyF;AACzF,MAAM,OAAO,GAAW,OAAO,CAAC,IAAA,WAAI,EAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC;AAE/E,IAAI,cAAc,GAAa,EAAE,CAAC;AAClC,KAAK,UAAU,cAAc;IAC3B,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;QAC1B,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,YAAY,GAAG,IAAA,WAAI,EAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,qCAAqC,CAAC,CAAC;IACxF,MAAM,QAAQ,GAEV,MAAM,IAAA,mBAAQ,EAAC,YAAY,CAAC,CAAC;IAEjC,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC;IACrC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,IAAI,aAAa,GAAa,EAAE,CAAC;AACjC,KAAK,UAAU,aAAa;IAC1B,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEvC,aAAa,GAAG,SAAS;SACtB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACvC,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,eAAQ,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAC3D,CAAC;IACJ,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,WAAW,GAAmB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACrD,MAAM,CACJ,SAAS,EACT,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,UAAU,EACV,aAAa,EACd,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpB,EAAE,CAAC,YAAY,EAAE;QACjB,EAAE,CAAC,eAAe,EAAE;QACpB,aAAa,EAAE;QACf,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;QAClD,cAAc,EAAE;QAChB,aAAa,EAAE;KAChB,CAAC,CAAC;IACH,GAAG,CAAC,MAAM,CAAC,yBAAyB,EAAE;QACpC,KAAK,EAAE,WAAW;QAClB,OAAO;QACP,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;SACrB,CAAC,CAAC;QACH,YAAY;QACZ,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI;YACJ,IAAI;YACJ,QAAQ,EAAE,IAAI,KAAK,QAAQ;SAC5B,CAAC,CAAC;QACH,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,aAAa;KACd,CAAC,CAAC;AACL,CAAC,CAAC;AACF,MAAM,UAAU,GAAmB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACpD,MAAM,IAAA,cAAK,GAAE,CAAC;IACd,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAmB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IAC9D,MAAM,WAAW,GAAgB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;IAEtD,MAAM,EAAE,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,eAAe,EAAE,CAAC;IAChD,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;AAChD,CAAC,CAAC;AACF,MAAM,sBAAsB,GAAmB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IAChE,MAAM,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,eAAe,EAAE,CAAC;IAChD,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAmB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IAC3D,MAAM,QAAQ,GAAa,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;IAE7C,MAAM,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,YAAY,EAAE,CAAC;IAC1C,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE;QAC1B,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;SACrB,CAAC,CAAC;KACJ,CAAC,CAAC;AACL,CAAC,CAAC;AACF,MAAM,mBAAmB,GAAmB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IAC7D,MAAM,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,YAAY,EAAE,CAAC;IAC1C,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE;QAC1B,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;SACrB,CAAC,CAAC;KACJ,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,SAAwB,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,EAAa;IACnE,mBAAmB,CAAC,MAAM,EAAE,0BAA0B,EAAE,WAAW,CAAC,CAAC;IAErE,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,+CAA+C,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACrI,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,iDAAiD,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAE5I,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,kDAAkD,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,oBAAoB,CAAC,CAAC;IAC3I,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,oDAAoD,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,sBAAsB,CAAC,CAAC;IAElJ,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC,CAAC;AACxH,CAAC"}
@@ -11,11 +11,8 @@ const util_1 = require("util");
11
11
  const path_1 = require("path");
12
12
  const fs_extra_1 = require("fs-extra");
13
13
  const diff_1 = require("diff");
14
- if (!require.main) {
15
- throw Error('[plugin-customize] `require.main` is undefined');
16
- }
17
- const db = require.main.require('./src/database');
18
- const nconf = require.main.require('nconf');
14
+ const db = nodebb.require('./src/database');
15
+ const nconf = nodebb.require('nconf');
19
16
  const getSortedSetRange = (0, util_1.promisify)(db.getSortedSetRange);
20
17
  const getObjects = (0, util_1.promisify)(db.getObjects);
21
18
  const sortedSetAdd = (0, util_1.promisify)(db.sortedSetAdd);
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../../lib/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../lib/database.ts"],"names":[],"mappings":"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"}
@@ -3,30 +3,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.build = build;
4
4
  const os_1 = require("os");
5
5
  const build_1 = require("./build");
6
- if (!require.main) {
7
- throw Error('[plugin-customize] `require.main` is undefined');
8
- }
9
- const nconf = require.main.require('nconf');
10
- const winston = require.main.require('winston');
11
- const pubsub = require.main.require('./src/pubsub');
6
+ const nconf = nodebb.require('nconf');
7
+ const winston = nodebb.require('winston');
8
+ const pubsub = nodebb.require('./src/pubsub');
12
9
  const primary = nconf.get('isPrimary') === 'true' || nconf.get('isPrimary') === true;
13
10
  async function build() {
11
+ await (0, build_1.build)();
14
12
  pubsub.publish('customize:build', {
15
- hostname: `${(0, os_1.hostname)()}:${nconf.get('port')}`,
13
+ hostname: (0, os_1.hostname)(),
16
14
  });
17
- if (primary) {
18
- await (0, build_1.build)();
19
- }
20
15
  }
21
- const logErrors = (err) => {
22
- if (err) {
23
- winston.error(err);
24
- }
25
- };
26
16
  if (primary) {
27
17
  pubsub.on('customize:build', (data) => {
28
- if (data.hostname !== `${(0, os_1.hostname)()}:${nconf.get('port')}`) {
29
- (0, build_1.build)().catch(logErrors);
18
+ if (data.hostname !== (0, os_1.hostname)()) {
19
+ (0, build_1.build)().catch((err) => {
20
+ winston.error(err);
21
+ });
30
22
  }
31
23
  });
32
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../../lib/pubsub.ts"],"names":[],"mappings":";;AAUA,sBAQC;AAlBD,2BAA8B;AAC9B,mCAA+C;AAE/C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAAC,MAAM,KAAK,CAAC,gDAAgD,CAAC,CAAC;AAAC,CAAC;AACrF,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAChD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAEpD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;AAE9E,KAAK,UAAU,KAAK;IACzB,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE;QAChC,QAAQ,EAAE,GAAG,IAAA,aAAQ,GAAE,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;KAC/C,CAAC,CAAC;IAEH,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAA,aAAW,GAAE,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,GAAU,EAAQ,EAAE;IACrC,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;AACH,CAAC,CAAC;AAEF,IAAI,OAAO,EAAE,CAAC;IACZ,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,IAA0B,EAAE,EAAE;QAC1D,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,IAAA,aAAQ,GAAE,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YAC3D,IAAA,aAAW,GAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../../lib/pubsub.ts"],"names":[],"mappings":";;AASA,sBAMC;AAfD,2BAA8B;AAC9B,mCAA+C;AAE/C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACtC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAE9C,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;AAE9E,KAAK,UAAU,KAAK;IACzB,MAAM,IAAA,aAAW,GAAE,CAAC;IAEpB,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE;QAChC,QAAQ,EAAE,IAAA,aAAQ,GAAE;KACrB,CAAC,CAAC;AACL,CAAC;AAED,IAAI,OAAO,EAAE,CAAC;IACZ,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,IAA0B,EAAE,EAAE;QAC1D,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAA,aAAQ,GAAE,EAAE,CAAC;YACjC,IAAA,aAAW,GAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC1B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,16 @@
1
+ 404 cuastom 1
2
+ <div class="flex-fill">
3
+ 404 cuastom
4
+ <h2 class="fw-semibold tracking-tight text-center">{{tx("global:404.title")}}</h2>
5
+
6
+ <div class="mx-auto">
7
+ <div class="d-flex flex-column gap-3 justify-content-center text-center">
8
+ <div class="mx-auto p-4">
9
+ <i class="text-secondary fa fa-fw fa-4x {{{ if icon }}}{icon}{{{ else }}}fa-otter{{{ end }}}"></i>
10
+ </div>
11
+ {{{ if error }}}{{tx(error)}}{{{ else }}}{{tx("global:404.message", config.relative_path)}}{{{ end }}}
12
+ </div>
13
+ </div>
14
+ {{tx("global:posts")}} wow
15
+ </div>
16
+
@@ -4,124 +4,163 @@
4
4
  <h4 class="fw-bold tracking-tight mb-0">{title}</h4>
5
5
  </div>
6
6
  <div class="col-12 col-md-4 px-0 px-md-3">
7
- <button id="build" class="btn btn-primary btn-sm fw-semibold ff-secondary w-100 text-center text-nowrap">[[admin/admin:save-changes]]</button>
7
+ <button id="build" class="btn btn-primary btn-sm fw-semibold ff-secondary w-100 text-center text-nowrap">{{tx("admin/admin:save-changes")}}</button>
8
8
  </div>
9
9
  </div>
10
10
 
11
11
  <div class="row m-0">
12
12
  <div id="spy-container" class="col-12 px-0 mb-4" tabindex="0">
13
- <div class="card">
14
- <div class="card-header">
15
- <h4 class="card-title">Translation Customizations</h4>
16
- </div>
17
- <table class="table">
18
- <thead>
19
- <tr>
20
- <th>Language</th>
21
- <th>Namespace</th>
22
- <th>Key</th>
23
- <th>Original</th>
24
- <th>Replacement</th>
25
- <th></th>
26
- </tr>
27
- </thead>
28
- <tbody id="translations-list">
29
- <!-- IMPORT partials/admin/plugins/customize/translations-list.tpl -->
30
- </tbody>
31
- <tfoot>
32
- <tr id="translation-edit" class="translation">
33
- <td>
34
- <select id="translation-edit-language" class="form-select">
35
- <option value="">---</option>
36
- {{{each languages}}}
37
- <option value="{./code}" {{{if ./selected}}}selected{{{end}}}>{./name} ({./code})</option>
38
- {{{end}}}
39
- </select>
40
- </td>
41
- <td>
42
- <select id="translation-edit-namespace" class="form-select">
43
- <option value="">---</option>
44
- {{{each namespaces}}}
45
- <option value="{./name}">{./name}</option>
46
- {{{end}}}
47
- </select>
48
- </td>
49
- <td>
50
- <select id="translation-edit-key" class="form-select">
51
- <!-- automatically fetch possible keys and autopopulate this -->
52
- </select>
53
- </td>
54
- <td>
55
- <span id="translation-edit-original"><!-- original goes here --></span>
56
- </td>
57
- <td>
58
- <!-- set to original value at first -->
59
- <textarea id="translation-edit-value" class="form-control"></textarea>
60
- </td>
61
- <td>
62
- <button class="btn btn-ghost" id="translation-edit-submit"><i class="fa fa-fw fa-check text-success"></i></button>
63
- </td>
64
- </tr>
65
- </tfoot>
66
- </table>
67
- </div>
13
+ <ul class="nav nav-tabs mb-3" role="tablist">
14
+ <li class="nav-item" role="presentation">
15
+ <button
16
+ class="nav-link active fw-semibold"
17
+ id="template-customize-tab"
18
+ data-bs-toggle="tab"
19
+ data-bs-target="#template-customize-pane"
20
+ type="button"
21
+ role="tab"
22
+ aria-controls="template-customize-pane"
23
+ aria-selected="true"
24
+ >
25
+ Template Customizations
26
+ </button>
27
+ </li>
68
28
 
69
- <div class="card">
70
- <div class="card-header">
71
- <h4 class="card-title">Template Customizations</h4>
72
- </div>
73
- <table class="table">
74
- <thead>
75
- <tr>
76
- <th>Template</th>
77
- <th>Diff</th>
78
- <th></th>
79
- </tr>
80
- </thead>
81
- <tbody id="templates-list">
82
- <!-- IMPORT partials/admin/plugins/customize/templates-list.tpl -->
83
- </tbody>
84
- <tfoot>
85
- <tr id="template-edit" class="template">
86
- <td>
87
- <select id="template-edit-path" class="form-select">
88
- <option value="">---</option>
89
- {{{each templatePaths}}}
90
- <option value="{@value}">{@value}</option>
91
- {{{end}}}
92
- </select>
93
- </td>
94
- <td>
95
- <pre class="diff-preview"><code id="template-edit-diff"><!-- diff goes here --></code></pre>
96
- </td>
97
- <td>
98
- <div class="d-flex gap-2">
99
- <button class="btn btn-sm btn-primary" id="template-edit-open" data-bs-toggle="modal" data-bs-target="#template-edit-modal"><i class="fa fa-fw fa-pencil"></i></a>
100
- <button class="btn btn-sm btn-success" id="template-edit-submit"><i class="fa fa-fw fa-check"></i></button>
29
+ <li class="nav-item" role="presentation">
30
+ <button
31
+ class="nav-link fw-semibold"
32
+ id="translations-customize-tab"
33
+ data-bs-toggle="tab"
34
+ data-bs-target="#translations-customize-pane"
35
+ type="button"
36
+ role="tab"
37
+ aria-controls="translations-customize-pane"
38
+ aria-selected="false"
39
+ >
40
+ Translation Customizations
41
+ </button>
42
+ </li>
43
+ </ul>
44
+
45
+ <div class="tab-content">
46
+ <div class="tab-pane fade show active"
47
+ id="template-customize-pane"
48
+ role="tabpanel"
49
+ aria-labelledby="template-customize-tab"
50
+ tabindex="0">
51
+ <div class="card">
52
+ <table class="table">
53
+ <thead>
54
+ <tr>
55
+ <th>Template</th>
56
+ <th>Diff</th>
57
+ <th></th>
58
+ </tr>
59
+ </thead>
60
+ <tbody id="templates-list">
61
+ <!-- IMPORT partials/admin/plugins/customize/templates-list.tpl -->
62
+ </tbody>
63
+ <tfoot>
64
+ <tr id="template-edit" class="template">
65
+ <td>
66
+ <select id="template-edit-path" class="form-select">
67
+ <option value="">---</option>
68
+ {{{each templatePaths}}}
69
+ <option value="{@value}">{@value}</option>
70
+ {{{end}}}
71
+ </select>
72
+ </td>
73
+ <td>
74
+ <pre class="diff-preview"><code id="template-edit-diff"><!-- diff goes here --></code></pre>
75
+ </td>
76
+ <td>
77
+ <div class="d-flex gap-2">
78
+ <button class="btn btn-sm btn-primary" id="template-edit-open" data-bs-toggle="modal" data-bs-target="#template-edit-modal"><i class="fa fa-fw fa-pencil"></i></a>
79
+ <button class="btn btn-sm btn-success" id="template-edit-submit"><i class="fa fa-fw fa-check"></i></button>
80
+ </div>
81
+ </td>
82
+ </tr>
83
+ </tfoot>
84
+ </table>
101
85
  </div>
102
- </td>
103
- </tr>
104
- </tfoot>
105
- </table>
86
+ </div>
87
+ <div class="tab-pane fade"
88
+ id="translations-customize-pane"
89
+ role="tabpanel"
90
+ aria-labelledby="translations-customize-tab"
91
+ tabindex="0">
92
+ <div class="card">
93
+ <table class="table">
94
+ <thead>
95
+ <tr>
96
+ <th>Language</th>
97
+ <th>Namespace</th>
98
+ <th>Key</th>
99
+ <th>Original</th>
100
+ <th>Replacement</th>
101
+ <th></th>
102
+ </tr>
103
+ </thead>
104
+ <tbody id="translations-list">
105
+ <!-- IMPORT partials/admin/plugins/customize/translations-list.tpl -->
106
+ </tbody>
107
+ <tfoot>
108
+ <tr id="translation-edit" class="translation">
109
+ <td>
110
+ <select id="translation-edit-language" class="form-select">
111
+ <option value="">---</option>
112
+ {{{each languages}}}
113
+ <option value="{./code}" {{{if ./selected}}}selected{{{end}}}>{./name} ({./code})</option>
114
+ {{{end}}}
115
+ </select>
116
+ </td>
117
+ <td>
118
+ <select id="translation-edit-namespace" class="form-select">
119
+ <option value="">---</option>
120
+ {{{each namespaces}}}
121
+ <option value="{./name}">{./name}</option>
122
+ {{{end}}}
123
+ </select>
124
+ </td>
125
+ <td>
126
+ <select id="translation-edit-key" class="form-select">
127
+ <!-- automatically fetch possible keys and autopopulate this -->
128
+ </select>
129
+ </td>
130
+ <td>
131
+ <span id="translation-edit-original"><!-- original goes here --></span>
132
+ </td>
133
+ <td>
134
+ <!-- set to original value at first -->
135
+ <textarea id="translation-edit-value" class="form-control"></textarea>
136
+ </td>
137
+ <td>
138
+ <button class="btn btn-ghost" id="translation-edit-submit"><i class="fa fa-fw fa-check text-success"></i></button>
139
+ </td>
140
+ </tr>
141
+ </tfoot>
142
+ </table>
143
+ </div>
144
+ </div>
106
145
  </div>
107
146
 
108
147
  <div class="modal fade" id="template-edit-modal" tabindex="-1" role="dialog" aria-labelledby="template-edit-modal-label">
109
- <div class="modal-dialog modal-fullscreen" role="document">
110
- <div class="modal-content">
111
- <div class="modal-header">
112
- <h4 class="modal-title" id="template-edit-modal-label">Edit Template Customization</h4>
113
- <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"><span aria-hidden="true"></span></button>
114
- </div>
115
- <div class="modal-body row">
116
- <div class="col-md" id="template-edit-old"></div>
117
- <div class="col-md" id="template-edit-value"></div>
118
- </div>
119
- <div class="modal-footer">
120
- <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Done</button>
121
- </div>
148
+ <div class="modal-dialog modal-fullscreen" role="document">
149
+ <div class="modal-content">
150
+ <div class="modal-header">
151
+ <h4 class="modal-title" id="template-edit-modal-label">Edit Template Customization</h4>
152
+ <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"><span aria-hidden="true"></span></button>
153
+ </div>
154
+ <div class="modal-body row">
155
+ <div class="col-md" id="template-edit-old"></div>
156
+ <div class="col-md" id="template-edit-value"></div>
157
+ </div>
158
+ <div class="modal-footer">
159
+ <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Done</button>
160
+ </div>
161
+ </div>
122
162
  </div>
123
163
  </div>
124
- </div>
125
164
  </div>
126
165
  </div>
127
166
  </div>
@@ -6,15 +6,14 @@ import { readJson } from 'fs-extra';
6
6
  import { build } from './pubsub';
7
7
  import * as db from './database';
8
8
 
9
- if (!require.main) { throw Error('[plugin-customize] `require.main` is undefined'); }
10
- const nconf = require.main.require('nconf');
11
- const User = require.main.require('./src/user');
12
- const Languages = require.main.require('./src/languages');
13
- const File = require.main.require('./src/file');
14
- const Translator = require.main.require('./src/translator');
15
- const Utils = require.main.require('./src/utils');
16
- const { setupApiRoute, setupAdminPageRoute } = require.main.require('./src/routes/helpers');
17
- const { formatApiResponse } = require.main.require('./src/controllers/helpers');
9
+ const nconf = nodebb.require('nconf');
10
+ const User = nodebb.require('./src/user');
11
+ const Languages = nodebb.require('./src/languages');
12
+ const File = nodebb.require('./src/file');
13
+ const Translator = nodebb.require('./src/translator');
14
+ const Utils = nodebb.require('./src/utils');
15
+ const { setupApiRoute, setupAdminPageRoute } = nodebb.require('./src/routes/helpers');
16
+ const { formatApiResponse } = nodebb.require('./src/controllers/helpers');
18
17
 
19
18
  const escape = (dirty: string): string => Translator.escape(Utils.escapeHTML(dirty));
20
19
 
package/lib/database.ts CHANGED
@@ -1,13 +1,12 @@
1
1
  // types and helper functions for database
2
2
 
3
3
  import { promisify } from 'util';
4
- import { join } from 'path';
4
+ import { join, resolve, sep } from 'path';
5
5
  import { readJson, readFile } from 'fs-extra';
6
6
  import { applyPatch } from 'diff';
7
7
 
8
- if (!require.main) { throw Error('[plugin-customize] `require.main` is undefined'); }
9
- const db = require.main.require('./src/database');
10
- const nconf = require.main.require('nconf');
8
+ const db = nodebb.require('./src/database');
9
+ const nconf = nodebb.require('nconf');
11
10
 
12
11
  const getSortedSetRange: (
13
12
  key: string,
@@ -133,11 +132,19 @@ export async function getTemplates(): Promise<Template[]> {
133
132
  });
134
133
  }
135
134
 
135
+ function assertPathWithinViews(path: string): void {
136
+ const resolved = resolve(viewsDir, path);
137
+ if (resolved !== viewsDir && !resolved.startsWith(viewsDir + sep)) {
138
+ throw new Error('[[error:invalid-path]]');
139
+ }
140
+ }
141
+
136
142
  export async function editTemplate({
137
143
  path,
138
144
  diff,
139
145
  old,
140
146
  }: Template): Promise<void> {
147
+ assertPathWithinViews(path);
141
148
  await Promise.all([
142
149
  setObject<TemplateHash>(templateHashKey(path), {
143
150
  path,
package/lib/pubsub.ts CHANGED
@@ -1,33 +1,26 @@
1
1
  import { hostname } from 'os';
2
2
  import { build as buildAssets } from './build';
3
3
 
4
- if (!require.main) { throw Error('[plugin-customize] `require.main` is undefined'); }
5
- const nconf = require.main.require('nconf');
6
- const winston = require.main.require('winston');
7
- const pubsub = require.main.require('./src/pubsub');
4
+ const nconf = nodebb.require('nconf');
5
+ const winston = nodebb.require('winston');
6
+ const pubsub = nodebb.require('./src/pubsub');
8
7
 
9
8
  const primary = nconf.get('isPrimary') === 'true' || nconf.get('isPrimary') === true;
10
9
 
11
10
  export async function build(): Promise<void> {
11
+ await buildAssets();
12
+
12
13
  pubsub.publish('customize:build', {
13
- hostname: `${hostname()}:${nconf.get('port')}`,
14
+ hostname: hostname(),
14
15
  });
15
-
16
- if (primary) {
17
- await buildAssets();
18
- }
19
16
  }
20
17
 
21
- const logErrors = (err: Error): void => {
22
- if (err) {
23
- winston.error(err);
24
- }
25
- };
26
-
27
18
  if (primary) {
28
19
  pubsub.on('customize:build', (data: { hostname: string }) => {
29
- if (data.hostname !== `${hostname()}:${nconf.get('port')}`) {
30
- buildAssets().catch(logErrors);
20
+ if (data.hostname !== hostname()) {
21
+ buildAssets().catch((err) => {
22
+ winston.error(err);
23
+ });
31
24
  }
32
25
  });
33
26
  }
package/lib/types.d.ts CHANGED
@@ -1,6 +1,12 @@
1
1
  import { Router, RequestHandler } from 'express';
2
2
 
3
3
  declare global {
4
+ interface NodeBBGlobal {
5
+ require<T = any>(request: string): T;
6
+ }
7
+
8
+ const nodebb: NodeBBGlobal;
9
+
4
10
  type NodeBack<T> = (err?: Error | null, ...args: T[]) => void;
5
11
 
6
12
  namespace Express {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-plugin-customize",
3
- "version": "4.1.1",
3
+ "version": "5.0.1",
4
4
  "description": "Customize NodeBB translations and templates",
5
5
  "main": "build/lib",
6
6
  "author": "Peter Jaszkowiak <p.jaszkow@gmail.com> (https://github.com/pitaj)",
@@ -10,7 +10,7 @@
10
10
  "url": "https://github.com/NodeBB/nodebb-plugin-customize.git"
11
11
  },
12
12
  "nbbpm": {
13
- "compatibility": "^3.2.0 || ^4.0.0"
13
+ "compatibility": "^4.14.0"
14
14
  },
15
15
  "keywords": [
16
16
  "nodebb",
@@ -4,124 +4,163 @@
4
4
  <h4 class="fw-bold tracking-tight mb-0">{title}</h4>
5
5
  </div>
6
6
  <div class="col-12 col-md-4 px-0 px-md-3">
7
- <button id="build" class="btn btn-primary btn-sm fw-semibold ff-secondary w-100 text-center text-nowrap">[[admin/admin:save-changes]]</button>
7
+ <button id="build" class="btn btn-primary btn-sm fw-semibold ff-secondary w-100 text-center text-nowrap">{{tx("admin/admin:save-changes")}}</button>
8
8
  </div>
9
9
  </div>
10
10
 
11
11
  <div class="row m-0">
12
12
  <div id="spy-container" class="col-12 px-0 mb-4" tabindex="0">
13
- <div class="card">
14
- <div class="card-header">
15
- <h4 class="card-title">Translation Customizations</h4>
16
- </div>
17
- <table class="table">
18
- <thead>
19
- <tr>
20
- <th>Language</th>
21
- <th>Namespace</th>
22
- <th>Key</th>
23
- <th>Original</th>
24
- <th>Replacement</th>
25
- <th></th>
26
- </tr>
27
- </thead>
28
- <tbody id="translations-list">
29
- <!-- IMPORT partials/admin/plugins/customize/translations-list.tpl -->
30
- </tbody>
31
- <tfoot>
32
- <tr id="translation-edit" class="translation">
33
- <td>
34
- <select id="translation-edit-language" class="form-select">
35
- <option value="">---</option>
36
- {{{each languages}}}
37
- <option value="{./code}" {{{if ./selected}}}selected{{{end}}}>{./name} ({./code})</option>
38
- {{{end}}}
39
- </select>
40
- </td>
41
- <td>
42
- <select id="translation-edit-namespace" class="form-select">
43
- <option value="">---</option>
44
- {{{each namespaces}}}
45
- <option value="{./name}">{./name}</option>
46
- {{{end}}}
47
- </select>
48
- </td>
49
- <td>
50
- <select id="translation-edit-key" class="form-select">
51
- <!-- automatically fetch possible keys and autopopulate this -->
52
- </select>
53
- </td>
54
- <td>
55
- <span id="translation-edit-original"><!-- original goes here --></span>
56
- </td>
57
- <td>
58
- <!-- set to original value at first -->
59
- <textarea id="translation-edit-value" class="form-control"></textarea>
60
- </td>
61
- <td>
62
- <button class="btn btn-ghost" id="translation-edit-submit"><i class="fa fa-fw fa-check text-success"></i></button>
63
- </td>
64
- </tr>
65
- </tfoot>
66
- </table>
67
- </div>
13
+ <ul class="nav nav-tabs mb-3" role="tablist">
14
+ <li class="nav-item" role="presentation">
15
+ <button
16
+ class="nav-link active fw-semibold"
17
+ id="template-customize-tab"
18
+ data-bs-toggle="tab"
19
+ data-bs-target="#template-customize-pane"
20
+ type="button"
21
+ role="tab"
22
+ aria-controls="template-customize-pane"
23
+ aria-selected="true"
24
+ >
25
+ Template Customizations
26
+ </button>
27
+ </li>
68
28
 
69
- <div class="card">
70
- <div class="card-header">
71
- <h4 class="card-title">Template Customizations</h4>
72
- </div>
73
- <table class="table">
74
- <thead>
75
- <tr>
76
- <th>Template</th>
77
- <th>Diff</th>
78
- <th></th>
79
- </tr>
80
- </thead>
81
- <tbody id="templates-list">
82
- <!-- IMPORT partials/admin/plugins/customize/templates-list.tpl -->
83
- </tbody>
84
- <tfoot>
85
- <tr id="template-edit" class="template">
86
- <td>
87
- <select id="template-edit-path" class="form-select">
88
- <option value="">---</option>
89
- {{{each templatePaths}}}
90
- <option value="{@value}">{@value}</option>
91
- {{{end}}}
92
- </select>
93
- </td>
94
- <td>
95
- <pre class="diff-preview"><code id="template-edit-diff"><!-- diff goes here --></code></pre>
96
- </td>
97
- <td>
98
- <div class="d-flex gap-2">
99
- <button class="btn btn-sm btn-primary" id="template-edit-open" data-bs-toggle="modal" data-bs-target="#template-edit-modal"><i class="fa fa-fw fa-pencil"></i></a>
100
- <button class="btn btn-sm btn-success" id="template-edit-submit"><i class="fa fa-fw fa-check"></i></button>
29
+ <li class="nav-item" role="presentation">
30
+ <button
31
+ class="nav-link fw-semibold"
32
+ id="translations-customize-tab"
33
+ data-bs-toggle="tab"
34
+ data-bs-target="#translations-customize-pane"
35
+ type="button"
36
+ role="tab"
37
+ aria-controls="translations-customize-pane"
38
+ aria-selected="false"
39
+ >
40
+ Translation Customizations
41
+ </button>
42
+ </li>
43
+ </ul>
44
+
45
+ <div class="tab-content">
46
+ <div class="tab-pane fade show active"
47
+ id="template-customize-pane"
48
+ role="tabpanel"
49
+ aria-labelledby="template-customize-tab"
50
+ tabindex="0">
51
+ <div class="card">
52
+ <table class="table">
53
+ <thead>
54
+ <tr>
55
+ <th>Template</th>
56
+ <th>Diff</th>
57
+ <th></th>
58
+ </tr>
59
+ </thead>
60
+ <tbody id="templates-list">
61
+ <!-- IMPORT partials/admin/plugins/customize/templates-list.tpl -->
62
+ </tbody>
63
+ <tfoot>
64
+ <tr id="template-edit" class="template">
65
+ <td>
66
+ <select id="template-edit-path" class="form-select">
67
+ <option value="">---</option>
68
+ {{{each templatePaths}}}
69
+ <option value="{@value}">{@value}</option>
70
+ {{{end}}}
71
+ </select>
72
+ </td>
73
+ <td>
74
+ <pre class="diff-preview"><code id="template-edit-diff"><!-- diff goes here --></code></pre>
75
+ </td>
76
+ <td>
77
+ <div class="d-flex gap-2">
78
+ <button class="btn btn-sm btn-primary" id="template-edit-open" data-bs-toggle="modal" data-bs-target="#template-edit-modal"><i class="fa fa-fw fa-pencil"></i></a>
79
+ <button class="btn btn-sm btn-success" id="template-edit-submit"><i class="fa fa-fw fa-check"></i></button>
80
+ </div>
81
+ </td>
82
+ </tr>
83
+ </tfoot>
84
+ </table>
101
85
  </div>
102
- </td>
103
- </tr>
104
- </tfoot>
105
- </table>
86
+ </div>
87
+ <div class="tab-pane fade"
88
+ id="translations-customize-pane"
89
+ role="tabpanel"
90
+ aria-labelledby="translations-customize-tab"
91
+ tabindex="0">
92
+ <div class="card">
93
+ <table class="table">
94
+ <thead>
95
+ <tr>
96
+ <th>Language</th>
97
+ <th>Namespace</th>
98
+ <th>Key</th>
99
+ <th>Original</th>
100
+ <th>Replacement</th>
101
+ <th></th>
102
+ </tr>
103
+ </thead>
104
+ <tbody id="translations-list">
105
+ <!-- IMPORT partials/admin/plugins/customize/translations-list.tpl -->
106
+ </tbody>
107
+ <tfoot>
108
+ <tr id="translation-edit" class="translation">
109
+ <td>
110
+ <select id="translation-edit-language" class="form-select">
111
+ <option value="">---</option>
112
+ {{{each languages}}}
113
+ <option value="{./code}" {{{if ./selected}}}selected{{{end}}}>{./name} ({./code})</option>
114
+ {{{end}}}
115
+ </select>
116
+ </td>
117
+ <td>
118
+ <select id="translation-edit-namespace" class="form-select">
119
+ <option value="">---</option>
120
+ {{{each namespaces}}}
121
+ <option value="{./name}">{./name}</option>
122
+ {{{end}}}
123
+ </select>
124
+ </td>
125
+ <td>
126
+ <select id="translation-edit-key" class="form-select">
127
+ <!-- automatically fetch possible keys and autopopulate this -->
128
+ </select>
129
+ </td>
130
+ <td>
131
+ <span id="translation-edit-original"><!-- original goes here --></span>
132
+ </td>
133
+ <td>
134
+ <!-- set to original value at first -->
135
+ <textarea id="translation-edit-value" class="form-control"></textarea>
136
+ </td>
137
+ <td>
138
+ <button class="btn btn-ghost" id="translation-edit-submit"><i class="fa fa-fw fa-check text-success"></i></button>
139
+ </td>
140
+ </tr>
141
+ </tfoot>
142
+ </table>
143
+ </div>
144
+ </div>
106
145
  </div>
107
146
 
108
147
  <div class="modal fade" id="template-edit-modal" tabindex="-1" role="dialog" aria-labelledby="template-edit-modal-label">
109
- <div class="modal-dialog modal-fullscreen" role="document">
110
- <div class="modal-content">
111
- <div class="modal-header">
112
- <h4 class="modal-title" id="template-edit-modal-label">Edit Template Customization</h4>
113
- <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"><span aria-hidden="true"></span></button>
114
- </div>
115
- <div class="modal-body row">
116
- <div class="col-md" id="template-edit-old"></div>
117
- <div class="col-md" id="template-edit-value"></div>
118
- </div>
119
- <div class="modal-footer">
120
- <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Done</button>
121
- </div>
148
+ <div class="modal-dialog modal-fullscreen" role="document">
149
+ <div class="modal-content">
150
+ <div class="modal-header">
151
+ <h4 class="modal-title" id="template-edit-modal-label">Edit Template Customization</h4>
152
+ <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"><span aria-hidden="true"></span></button>
153
+ </div>
154
+ <div class="modal-body row">
155
+ <div class="col-md" id="template-edit-old"></div>
156
+ <div class="col-md" id="template-edit-value"></div>
157
+ </div>
158
+ <div class="modal-footer">
159
+ <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Done</button>
160
+ </div>
161
+ </div>
122
162
  </div>
123
163
  </div>
124
- </div>
125
164
  </div>
126
165
  </div>
127
166
  </div>
package/tsconfig.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "include": [
3
- "./lib/*.ts"
3
+ "./lib/**/*.ts",
4
+ "./lib/**/*.d.ts"
4
5
  ],
5
6
  "compilerOptions": {
6
7
  "outDir": "build/lib",