41 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * @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();
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| }
 |