mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-27 09:06:15 +01:00
feat: restore action:script.load, allow modifying loaded module via static:script.init
This commit is contained in:
@@ -319,26 +319,9 @@ ajaxify = window.ajaxify || {};
|
|||||||
if (tpl_url.startsWith('admin')) {
|
if (tpl_url.startsWith('admin')) {
|
||||||
location = '';
|
location = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
const proceed = (hooks, module) => {
|
|
||||||
if (module && module.init) {
|
|
||||||
module.init();
|
|
||||||
}
|
|
||||||
|
|
||||||
hooks.fire('static:script.init', { tpl_url }).then(ajaxify.loadExtraScripts.bind(null, tpl_url, callback));
|
|
||||||
};
|
|
||||||
|
|
||||||
require(['hooks', location + tpl_url], proceed, () => {
|
|
||||||
// Module doesn't exist or didn't load, proceed without it
|
|
||||||
require(['hooks'], proceed);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
// TODO: Deprecate in v1.18.0
|
|
||||||
ajaxify.loadExtraScripts = (tpl_url, callback) => {
|
|
||||||
var data = {
|
var data = {
|
||||||
tpl_url: tpl_url,
|
tpl_url: tpl_url,
|
||||||
scripts: [],
|
scripts: [location + tpl_url],
|
||||||
};
|
};
|
||||||
|
|
||||||
$(window).trigger('action:script.load', data);
|
$(window).trigger('action:script.load', data);
|
||||||
@@ -346,20 +329,6 @@ ajaxify = window.ajaxify || {};
|
|||||||
// Require and parse modules
|
// Require and parse modules
|
||||||
var outstanding = data.scripts.length;
|
var outstanding = data.scripts.length;
|
||||||
|
|
||||||
if (!outstanding) {
|
|
||||||
return callback();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (outstanding && !app.flags.actionScriptLoadDeprecation) {
|
|
||||||
console.group('Deprecation Notice');
|
|
||||||
console.warn('The "action:script.load" event has been deprecated and will be removed in NodeBB v1.18.0. Please attach a listener to the "static:script.init" client-side hook instead');
|
|
||||||
data.scripts.forEach((script) => {
|
|
||||||
console.info(`Affected script: ${typeof script === 'function' ? script.name || 'anonymous ' + script.toString() : script}`);
|
|
||||||
});
|
|
||||||
console.groupEnd();
|
|
||||||
app.flags.actionScriptLoadDeprecation = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
data.scripts.map(function (script) {
|
data.scripts.map(function (script) {
|
||||||
if (typeof script === 'function') {
|
if (typeof script === 'function') {
|
||||||
return function (next) {
|
return function (next) {
|
||||||
@@ -370,6 +339,7 @@ ajaxify = window.ajaxify || {};
|
|||||||
if (typeof script === 'string') {
|
if (typeof script === 'string') {
|
||||||
return function (next) {
|
return function (next) {
|
||||||
require([script], function (script) {
|
require([script], function (script) {
|
||||||
|
$(window).trigger('static:script.init', { tpl_url, module: script });
|
||||||
if (script && script.init) {
|
if (script && script.init) {
|
||||||
script.init();
|
script.init();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user