Rewrite JS hooks
- Use event listeners instead of homebrew hooks - Remove view/js/addon-hooks.js and its references - Update Addon docs
This commit is contained in:
parent
68c6895e1a
commit
7dd6fb3b3c
5 changed files with 8 additions and 59 deletions
|
@ -103,19 +103,11 @@ function <addon_name>_template_vars($a, &$arr)
|
||||||
Register your addon hooks in file `addon/*addon_name*/*addon_name*.js`.
|
Register your addon hooks in file `addon/*addon_name*/*addon_name*.js`.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
Addon_registerHook(type, hookfnstr);
|
document.addEventListener(name, callback);
|
||||||
```
|
```
|
||||||
|
|
||||||
*type* is the name of the hook and corresponds to a known Friendica JavaScript hook.
|
*name* is the name of the hook and corresponds to a known Friendica JavaScript hook.
|
||||||
*hookfnstr* is the name of your JavaScript function to execute.
|
*callback* is a JavaScript function to execute.
|
||||||
|
|
||||||
No arguments are provided to your JavaScript callback function. Example:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
function myhook_function() {
|
|
||||||
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Modules
|
## Modules
|
||||||
|
|
||||||
|
@ -704,4 +696,4 @@ Here is a complete list of all hook callbacks with file locations (as of 01-Apr-
|
||||||
|
|
||||||
### view/js/main.js
|
### view/js/main.js
|
||||||
|
|
||||||
callAddonHooks("postprocess_liveupdate");
|
document.dispatchEvent(new Event('postprocess_liveupdate'));
|
||||||
|
|
|
@ -1,41 +0,0 @@
|
||||||
/**
|
|
||||||
* @file addon-hooks.js
|
|
||||||
* @brief Provide a way for add-ons to register a JavaScript hook
|
|
||||||
*/
|
|
||||||
|
|
||||||
var addon_hooks = {};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Register a JavaScript hook to be called from other Javascript files
|
|
||||||
* @pre the .js file from which the hook will be called is included in the document response
|
|
||||||
* @param type which type of hook i.e. where should it be called along with other hooks of the same type
|
|
||||||
* @param hookfnstr name of the JavaScript function name that needs to be called
|
|
||||||
*/
|
|
||||||
function Addon_registerHook(type, hookfnstr)
|
|
||||||
{
|
|
||||||
if (!addon_hooks.hasOwnProperty(type)) {
|
|
||||||
addon_hooks[type] = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
addon_hooks[type].push(hookfnstr);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Call all registered hooks of a certain type, i.e. at the same point of the JavaScript code execution
|
|
||||||
* @param typeOfHook string indicating which type of hooks to be called among the registered hooks
|
|
||||||
*/
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -478,14 +478,12 @@ function liveUpdate(src) {
|
||||||
$('.wall-item-body', data).imagesLoaded(function() {
|
$('.wall-item-body', data).imagesLoaded(function() {
|
||||||
updateConvItems(data);
|
updateConvItems(data);
|
||||||
|
|
||||||
|
document.dispatchEvent(new Event('postprocess_liveupdate'));
|
||||||
|
|
||||||
// Update the scroll position.
|
// Update the scroll position.
|
||||||
$(window).scrollTop($(window).scrollTop() + $("section").height() - orgHeight);
|
$(window).scrollTop($(window).scrollTop() + $("section").height() - orgHeight);
|
||||||
});
|
});
|
||||||
|
|
||||||
callAddonHooks("postprocess_liveupdate");
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function imgbright(node) {
|
function imgbright(node) {
|
||||||
|
@ -735,6 +733,8 @@ function loadScrollContent() {
|
||||||
} else {
|
} else {
|
||||||
$("#scroll-end").fadeIn('normal');
|
$("#scroll-end").fadeIn('normal');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
document.dispatchEvent(new Event('postprocess_liveupdate'));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,6 @@
|
||||||
<script type="text/javascript" src="view/asset/imagesloaded/imagesloaded.pkgd.min.js"></script>
|
<script type="text/javascript" src="view/asset/imagesloaded/imagesloaded.pkgd.min.js"></script>
|
||||||
<script type="text/javascript" src="view/js/acl.js" ></script>
|
<script type="text/javascript" src="view/js/acl.js" ></script>
|
||||||
<script type="text/javascript" src="view/asset/base64/base64.min.js" ></script>
|
<script type="text/javascript" src="view/asset/base64/base64.min.js" ></script>
|
||||||
<script type="text/javascript" src="view/js/addon-hooks.js" ></script>
|
|
||||||
{{if is_array($addon_hooks)}}
|
{{if is_array($addon_hooks)}}
|
||||||
{{foreach $addon_hooks as $addon_hook}}
|
{{foreach $addon_hooks as $addon_hook}}
|
||||||
<script type="text/javascript" src="addon/{{$addon_hook}}/{{$addon_hook}}.js"></script>
|
<script type="text/javascript" src="addon/{{$addon_hook}}/{{$addon_hook}}.js"></script>
|
||||||
|
|
|
@ -69,7 +69,6 @@
|
||||||
<script type="text/javascript" src="view/asset/imagesloaded/imagesloaded.pkgd.min.js"></script>
|
<script type="text/javascript" src="view/asset/imagesloaded/imagesloaded.pkgd.min.js"></script>
|
||||||
<script type="text/javascript" src="view/js/acl.js"></script>
|
<script type="text/javascript" src="view/js/acl.js"></script>
|
||||||
<script type="text/javascript" src="view/asset/base64/base64.min.js"></script>
|
<script type="text/javascript" src="view/asset/base64/base64.min.js"></script>
|
||||||
<script type="text/javascript" src="view/js/addon-hooks.js" ></script>
|
|
||||||
{{if is_array($addon_hooks)}}
|
{{if is_array($addon_hooks)}}
|
||||||
{{foreach $addon_hooks as $addon_hook}}
|
{{foreach $addon_hooks as $addon_hook}}
|
||||||
<script type="text/javascript" src="addon/{{$addon_hook}}/{{$addon_hook}}.js"></script>
|
<script type="text/javascript" src="addon/{{$addon_hook}}/{{$addon_hook}}.js"></script>
|
||||||
|
|
Loading…
Reference in a new issue