Add 'template_vars' hook
This commit is contained in:
parent
a687999d42
commit
545a7a80e4
2 changed files with 29 additions and 19 deletions
|
@ -3,7 +3,7 @@ Friendica Addon/Plugin development
|
||||||
|
|
||||||
Please see the sample addon 'randplace' for a working example of using some of these features.
|
Please see the sample addon 'randplace' for a working example of using some of these features.
|
||||||
Addons work by intercepting event hooks - which must be registered.
|
Addons work by intercepting event hooks - which must be registered.
|
||||||
Modules work by intercepting specific page requests (by URL path).
|
Modules work by intercepting specific page requests (by URL path).
|
||||||
|
|
||||||
Plugin names cannot contain spaces or other punctuation and are used as filenames and function names.
|
Plugin names cannot contain spaces or other punctuation and are used as filenames and function names.
|
||||||
You may supply a "friendly" name within the comment block.
|
You may supply a "friendly" name within the comment block.
|
||||||
|
@ -12,12 +12,12 @@ For instance "plugin1name_install()".
|
||||||
These two functions take no arguments and are usually responsible for registering (and unregistering) event hooks that your plugin will require.
|
These two functions take no arguments and are usually responsible for registering (and unregistering) event hooks that your plugin will require.
|
||||||
The install and uninstall functions will also be called (i.e. re-installed) if the plugin changes after installation.
|
The install and uninstall functions will also be called (i.e. re-installed) if the plugin changes after installation.
|
||||||
Therefore your uninstall should not destroy data and install should consider that data may already exist.
|
Therefore your uninstall should not destroy data and install should consider that data may already exist.
|
||||||
Future extensions may provide for "setup" amd "remove".
|
Future extensions may provide for "setup" amd "remove".
|
||||||
|
|
||||||
Plugins should contain a comment block with the four following parameters:
|
Plugins should contain a comment block with the four following parameters:
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Name: My Great Plugin
|
* Name: My Great Plugin
|
||||||
* Description: This is what my plugin does. It's really cool
|
* Description: This is what my plugin does. It's really cool
|
||||||
* Version: 1.0
|
* Version: 1.0
|
||||||
* Author: John Q. Public <john@myfriendicasite.com>
|
* Author: John Q. Public <john@myfriendicasite.com>
|
||||||
|
@ -52,7 +52,7 @@ It contains a wealth of information about the current state of Friendica:
|
||||||
* which module has been called,
|
* which module has been called,
|
||||||
* configuration information,
|
* configuration information,
|
||||||
* the page contents at the point the hook was invoked,
|
* the page contents at the point the hook was invoked,
|
||||||
* profile and user information, etc.
|
* profile and user information, etc.
|
||||||
|
|
||||||
It is recommeded you call this '$a' to match its usage elsewhere.
|
It is recommeded you call this '$a' to match its usage elsewhere.
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ This will include:
|
||||||
|
|
||||||
Your module functions will often contain the function plugin_name_content(&$a), which defines and returns the page body content.
|
Your module functions will often contain the function plugin_name_content(&$a), which defines and returns the page body content.
|
||||||
They may also contain plugin_name_post(&$a) which is called before the _content function and typically handles the results of POST forms.
|
They may also contain plugin_name_post(&$a) which is called before the _content function and typically handles the results of POST forms.
|
||||||
You may also have plugin_name_init(&$a) which is called very early on and often does module initialisation.
|
You may also have plugin_name_init(&$a) which is called very early on and often does module initialisation.
|
||||||
|
|
||||||
Templates
|
Templates
|
||||||
----------
|
----------
|
||||||
|
@ -89,11 +89,11 @@ Put your tpl files in the *templates/* subfolder of your plugin.
|
||||||
|
|
||||||
In your code, like in the function plugin_name_content(), load the template file and execute it passing needed values:
|
In your code, like in the function plugin_name_content(), load the template file and execute it passing needed values:
|
||||||
|
|
||||||
# load template file. first argument is the template name,
|
# load template file. first argument is the template name,
|
||||||
# second is the plugin path relative to friendica top folder
|
# second is the plugin path relative to friendica top folder
|
||||||
$tpl = get_markup_template('mytemplate.tpl', 'addon/plugin_name/');
|
$tpl = get_markup_template('mytemplate.tpl', 'addon/plugin_name/');
|
||||||
|
|
||||||
# apply template. first argument is the loaded template,
|
# apply template. first argument is the loaded template,
|
||||||
# second an array of 'name'=>'values' to pass to template
|
# second an array of 'name'=>'values' to pass to template
|
||||||
$output = replace_macros($tpl,array(
|
$output = replace_macros($tpl,array(
|
||||||
'title' => 'My beautiful plugin',
|
'title' => 'My beautiful plugin',
|
||||||
|
@ -271,6 +271,12 @@ $b is an array, params to mail()
|
||||||
is called after the navigational menu is build in include/nav.php.
|
is called after the navigational menu is build in include/nav.php.
|
||||||
$b is an array containing $nav from nav.php.
|
$b is an array containing $nav from nav.php.
|
||||||
|
|
||||||
|
###'template_vars'
|
||||||
|
is called before vars are passed to the template engine to render the page.
|
||||||
|
The registered function can add,change or remove variables passed to template.
|
||||||
|
$b is the array of vars pased to 'replace_macros()' function.
|
||||||
|
|
||||||
|
|
||||||
Complete list of hook callbacks
|
Complete list of hook callbacks
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -298,7 +304,7 @@ include/text.php: call_hooks('contact_block_end', $arr);
|
||||||
|
|
||||||
include/text.php: call_hooks('smilie', $s);
|
include/text.php: call_hooks('smilie', $s);
|
||||||
|
|
||||||
include/text.php: call_hooks('prepare_body_init', $item);
|
include/text.php: call_hooks('prepare_body_init', $item);
|
||||||
|
|
||||||
include/text.php: call_hooks('prepare_body', $prep_arr);
|
include/text.php: call_hooks('prepare_body', $prep_arr);
|
||||||
|
|
||||||
|
@ -310,7 +316,7 @@ include/auth.php: call_hooks('authenticate', $addon_auth);
|
||||||
|
|
||||||
include/bbcode.php: call_hooks('bbcode',$Text);
|
include/bbcode.php: call_hooks('bbcode',$Text);
|
||||||
|
|
||||||
include/oauth.php: call_hooks('logged_in', $a->user);
|
include/oauth.php: call_hooks('logged_in', $a->user);
|
||||||
|
|
||||||
include/acl_selectors.php: call_hooks($a->module . '_pre_' . $selname, $arr);
|
include/acl_selectors.php: call_hooks($a->module . '_pre_' . $selname, $arr);
|
||||||
|
|
||||||
|
@ -396,7 +402,7 @@ mod/photos.php: call_hooks('photo_post_end',intval($item_id));
|
||||||
|
|
||||||
mod/photos.php: call_hooks('photo_upload_form',$ret);
|
mod/photos.php: call_hooks('photo_upload_form',$ret);
|
||||||
|
|
||||||
mod/friendica.php: call_hooks('about_hook', $o);
|
mod/friendica.php: call_hooks('about_hook', $o);
|
||||||
|
|
||||||
mod/editpost.php: call_hooks('jot_tool', $jotplugins);
|
mod/editpost.php: call_hooks('jot_tool', $jotplugins);
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,10 @@ function replace_macros($s,$r) {
|
||||||
|
|
||||||
$stamp1 = microtime(true);
|
$stamp1 = microtime(true);
|
||||||
|
|
||||||
|
// "middleware": inject variables into templates
|
||||||
|
call_hooks("template_vars", $r);
|
||||||
|
|
||||||
|
|
||||||
$a = get_app();
|
$a = get_app();
|
||||||
|
|
||||||
$t = $a->template_engine();
|
$t = $a->template_engine();
|
||||||
|
@ -1502,7 +1506,7 @@ function prepare_body(&$item,$attach = false, $preview = false) {
|
||||||
if($x) {
|
if($x) {
|
||||||
$s = preg_replace('/\<div class\=\"map\"\>/','$0' . $x,$s);
|
$s = preg_replace('/\<div class\=\"map\"\>/','$0' . $x,$s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Look for spoiler
|
// Look for spoiler
|
||||||
|
@ -2314,14 +2318,14 @@ function deindent($text, $chr="[\t ]", $count=NULL) {
|
||||||
return implode("\n", $lines);
|
return implode("\n", $lines);
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatBytes($bytes, $precision = 2) {
|
function formatBytes($bytes, $precision = 2) {
|
||||||
$units = array('B', 'KB', 'MB', 'GB', 'TB');
|
$units = array('B', 'KB', 'MB', 'GB', 'TB');
|
||||||
|
|
||||||
$bytes = max($bytes, 0);
|
$bytes = max($bytes, 0);
|
||||||
$pow = floor(($bytes ? log($bytes) : 0) / log(1024));
|
$pow = floor(($bytes ? log($bytes) : 0) / log(1024));
|
||||||
$pow = min($pow, count($units) - 1);
|
$pow = min($pow, count($units) - 1);
|
||||||
|
|
||||||
$bytes /= pow(1024, $pow);
|
$bytes /= pow(1024, $pow);
|
||||||
|
|
||||||
return round($bytes, $precision) . ' ' . $units[$pow];
|
return round($bytes, $precision) . ' ' . $units[$pow];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue