mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-12-22 16:30:34 +01:00
refactor: deprecate action:script.load, use filter:script.load instead
This commit is contained in:
@@ -320,19 +320,20 @@ ajaxify = window.ajaxify || {};
|
||||
};
|
||||
|
||||
ajaxify.loadScript = function (tpl_url, callback) {
|
||||
require(['hooks'], (hooks) => {
|
||||
var location = !app.inAdmin ? 'forum/' : '';
|
||||
|
||||
if (tpl_url.startsWith('admin')) {
|
||||
location = '';
|
||||
}
|
||||
var data = {
|
||||
const data = {
|
||||
tpl_url: tpl_url,
|
||||
scripts: [location + tpl_url],
|
||||
};
|
||||
|
||||
// Hint: useful if you want to load a module on a specific page (append module name to `scripts`)
|
||||
$(window).trigger('action:script.load', data);
|
||||
|
||||
hooks.fire('action:script.load', data);
|
||||
hooks.fire('filter:script.load', data).then((data) => {
|
||||
// Require and parse modules
|
||||
var outstanding = data.scripts.length;
|
||||
|
||||
@@ -345,7 +346,7 @@ ajaxify = window.ajaxify || {};
|
||||
}
|
||||
if (typeof script === 'string') {
|
||||
return function (next) {
|
||||
require(['hooks', script], function (hooks, module) {
|
||||
require([script], function (module) {
|
||||
// Hint: useful if you want to override a loaded library (e.g. replace core client-side logic),
|
||||
// or call a method other than .init()
|
||||
hooks.fire('static:script.init', { tpl_url, name: script, module }).then(() => {
|
||||
@@ -369,6 +370,8 @@ ajaxify = window.ajaxify || {};
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
ajaxify.loadData = function (url, callback) {
|
||||
|
||||
@@ -4,11 +4,28 @@ define('hooks', [], () => {
|
||||
const Hooks = {
|
||||
loaded: {},
|
||||
temporary: new Set(),
|
||||
deprecated: {
|
||||
'action:script.load': 'filter:script.load', // 👋 @ 1.18.0
|
||||
},
|
||||
};
|
||||
|
||||
Hooks.register = (hookName, method) => {
|
||||
Hooks.loaded[hookName] = Hooks.loaded[hookName] || new Set();
|
||||
Hooks.loaded[hookName].add(method);
|
||||
|
||||
if (Hooks.deprecated.hasOwnProperty(hookName)) {
|
||||
const deprecated = Hooks.deprecated[hookName];
|
||||
|
||||
if (deprecated) {
|
||||
console.groupCollapsed(`[hooks] Hook "${hookName}" is deprecated, please use "${deprecated}" instead.`);
|
||||
} else {
|
||||
console.groupCollapsed(`[hooks] Hook "${hookName}" is deprecated, there is no alternative.`);
|
||||
}
|
||||
|
||||
console.info(method);
|
||||
console.groupEnd();
|
||||
}
|
||||
|
||||
console.debug(`[hooks] Registered ${hookName}`, method);
|
||||
};
|
||||
Hooks.on = Hooks.register;
|
||||
|
||||
Reference in New Issue
Block a user