diff --git a/view/js/addon-hooks.js b/view/js/addon-hooks.js new file mode 100644 index 0000000000..b00285cb3a --- /dev/null +++ b/view/js/addon-hooks.js @@ -0,0 +1,12 @@ +var addon_hooks={}; + +function Addon_registerHook( type, hookfnstr ) +{ + if (!addon_hooks.hasOwnProperty(type)) { + addon_hooks[type]=[]; + } + + addon_hooks[type].push( hookfnstr ); + + console.log("addon_hooks type "+type+" has "+addon_hooks[type].length+" hooks registered"); +} diff --git a/view/js/main.js b/view/js/main.js index 475e810870..f0bab12806 100644 --- a/view/js/main.js +++ b/view/js/main.js @@ -395,6 +395,19 @@ function NavUpdate() { timer = setTimeout(NavUpdate, updateInterval); } +function callAddonHooks(typeOfHook) { + if (typeof addon_hooks !== 'undefined') { + var myTypeOfHooks = addon_hooks[typeOfHook]; + if (typeof myTypeOfHooks !== 'undefined') { + for (addon_hook_idx = 0; addon_hook_idx < myTypeOfHooks.length; addon_hook_idx++) { + var hookfnstr = myTypeOfHooks[addon_hook_idx]; + var hookfn = window[hookfnstr]; + if (typeof hookfn === "function") hookfn(); + } + } + } +} + function liveUpdate(src) { if ((src == null) || stopped || !profile_uid) { $('.like-rotator').hide(); return; @@ -460,6 +473,8 @@ function liveUpdate(src) { prev = ident; }); + callAddonHooks("postprocess"); + $('.like-rotator').hide(); if (commentBusy) { commentBusy = false; @@ -469,7 +484,9 @@ function liveUpdate(src) { $(".comment-edit-form textarea").editor_autocomplete(baseurl+"/acl"); /* autocomplete bbcode */ $(".comment-edit-form textarea").bbco_autocomplete('bbcode'); + }); + } function imgbright(node) { diff --git a/view/templates/head.tpl b/view/templates/head.tpl index c58b2b8290..75a676a91e 100644 --- a/view/templates/head.tpl +++ b/view/templates/head.tpl @@ -44,6 +44,10 @@ + +{{foreach $addon_hooks as $addon_hook}} + +{{/foreach}}