]> git.mxchange.org Git - friendica.git/blobdiff - doc/Addons.md
Moving UPDATE defines/constants out of boot
[friendica.git] / doc / Addons.md
index b8364d9353225ac57bb2adfa38889cf92dbc08b7..f7dfcc870c72ca56a877df3503969ec37e743694 100644 (file)
@@ -67,47 +67,67 @@ $b can be called anything you like.
 This is information specific to the hook currently being processed, and generally contains information that is being immediately processed or acted on that you can use, display, or alter.
 Remember to declare it with `&` if you wish to alter it.
 
-## JavaScript addon hooks
+## Global stylesheets
 
-### PHP part
+If your addon requires adding a stylesheet on all pages of Friendica, add the following hook:
 
-Make sure your JavaScript addon file (addon/*addon_name*/*addon_name*.js) is listed in the document response.
+```php
+function <addon>_install()
+{
+       Addon::registerHook('head', __FILE__, '<addon>_head');
+       ...
+}
 
-In your addon install function, add:
 
-```php
-Addon::registerHook('template_vars', __FILE__, '<addon_name>_template_vars');
+function <addon>_head(App $a)
+{
+       $a->registerStylesheet(__DIR__ . '/relative/path/to/addon/stylesheet.css');
+}
 ```
 
-In your addon uninstall function, add:
+`__DIR__` is the folder path of your addon.
 
-```php
-Addon::unregisterHook('template_vars', __FILE__, '<addon_name>_template_vars');
-```
+## JavaScript
+
+### Global scripts
+
+If your addon requires adding a script on all pages of Friendica, add the following hook:
 
-Then, add your addon name to the *addon_hooks* template variable array:
 
 ```php
-function <addon_name>_template_vars($a, &$arr)
+function <addon>_install()
+{
+       Addon::registerHook('footer', __FILE__, '<addon>_footer');
+       ...
+}
+
+function <addon>_footer(App $a)
 {
-       if (!array_key_exists('addon_hooks', $arr['vars']))
-       {
-               $arr['vars']['addon_hooks'] = array();
-       }
-       $arr['vars']['addon_hooks'][] = "<addon_name>";
+       $a->registerFooterScript(__DIR__ . '/relative/path/to/addon/script.js');
 }
 ```
 
-### JavaScript part
+`__DIR__` is the folder path of your addon.
 
-Register your addon hooks in file `addon/*addon_name*/*addon_name*.js`.
+### JavaScript hooks
+
+The main Friendica script provides hooks via events dispatched on the `document` property.
+In your Javascript file included as described above, add your event listener like this:
 
 ```js
 document.addEventListener(name, callback);
 ```
 
-*name* is the name of the hook and corresponds to a known Friendica JavaScript hook.
-*callback* is a JavaScript function to execute.
+- *name* is the name of the hook and corresponds to a known Friendica JavaScript hook.
+- *callback* is a JavaScript anonymous function to execute.
+
+More info about Javascript event listeners: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
+
+#### Current JavaScript hooks
+
+##### postprocess_liveupdate
+Called at the end of the live update process (XmlHttpRequest) and on a post preview.
+No additional data is provided.
 
 ## Modules
 
@@ -391,14 +411,9 @@ Hook data:
     visitor => array with the contact record of the visitor
     url => the query string
 
-## Current JavaScript hooks
-
-### postprocess_liveupdate
-Called at the end of the live update process (XmlHttpRequest)
-
 ## Complete list of hook callbacks
 
-Here is a complete list of all hook callbacks with file locations (as of 01-Apr-2018). Please see the source for details of any hooks not documented above.
+Here is a complete list of all hook callbacks with file locations (as of 24-Sep-2018). Please see the source for details of any hooks not documented above.
 
 ### index.php
 
@@ -435,10 +450,6 @@ Here is a complete list of all hook callbacks with file locations (as of 01-Apr-
     Addon::callHooks('item_photo_menu', $args);
     Addon::callHooks('jot_tool', $jotplugins);
 
-### include/security.php
-
-    Addon::callHooks('logged_in', $a->user);
-
 ### include/text.php
 
     Addon::callHooks('contact_block_end', $arr);
@@ -573,7 +584,7 @@ Here is a complete list of all hook callbacks with file locations (as of 01-Apr-
 ### src/App.php
 
     Addon::callHooks('load_config');
-       Addon::callHooks('head');
+    Addon::callHooks('head');
     Addon::callHooks('footer');
 
 ### src/Model/Item.php
@@ -678,6 +689,11 @@ Here is a complete list of all hook callbacks with file locations (as of 01-Apr-
     Addon::callHooks($a->module.'_post_'.$selname, $o);
     Addon::callHooks('jot_networks', $jotnets);
 
+### src/Core/Authentication.php
+
+    Addon::callHooks('logged_in', $a->user);
+
+
 ### src/Core/Worker.php
 
     Addon::callHooks("proc_run", $arr);