Add new footer hook
- Add new App->footerScripts array - Add footer.tpl template - Add documentation - Rework App->init_page_end to App->initFooter
This commit is contained in:
parent
7dd6fb3b3c
commit
55f1d7b90e
|
@ -286,6 +286,11 @@ No hook data.
|
||||||
Called after HTML content functions have completed.
|
Called after HTML content functions have completed.
|
||||||
`$b` is (string) HTML of content div.
|
`$b` is (string) HTML of content div.
|
||||||
|
|
||||||
|
### footer
|
||||||
|
Called after HTML content functions have completed.
|
||||||
|
`$b` is (string) HTML of footer div/element.
|
||||||
|
Used to load deferred Javascript files.
|
||||||
|
|
||||||
### avatar_lookup
|
### avatar_lookup
|
||||||
Called when looking up the avatar. `$b` is an array:
|
Called when looking up the avatar. `$b` is an array:
|
||||||
|
|
||||||
|
@ -563,6 +568,7 @@ Here is a complete list of all hook callbacks with file locations (as of 01-Apr-
|
||||||
### src/App.php
|
### src/App.php
|
||||||
|
|
||||||
Addon::callHooks('load_config');
|
Addon::callHooks('load_config');
|
||||||
|
Addon::callHooks('footer');
|
||||||
|
|
||||||
### src/Model/Item.php
|
### src/Model/Item.php
|
||||||
|
|
||||||
|
|
38
index.php
38
index.php
|
@ -153,10 +153,6 @@ if (! x($_SESSION, 'authenticated')) {
|
||||||
header('X-Account-Management-Status: none');
|
header('X-Account-Management-Status: none');
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set up page['htmlhead'] and page['end'] for the modules to use */
|
|
||||||
$a->page['htmlhead'] = '';
|
|
||||||
$a->page['end'] = '';
|
|
||||||
|
|
||||||
$_SESSION['sysmsg'] = defaults($_SESSION, 'sysmsg' , []);
|
$_SESSION['sysmsg'] = defaults($_SESSION, 'sysmsg' , []);
|
||||||
$_SESSION['sysmsg_info'] = defaults($_SESSION, 'sysmsg_info' , []);
|
$_SESSION['sysmsg_info'] = defaults($_SESSION, 'sysmsg_info' , []);
|
||||||
$_SESSION['last_updated'] = defaults($_SESSION, 'last_updated', []);
|
$_SESSION['last_updated'] = defaults($_SESSION, 'last_updated', []);
|
||||||
|
@ -326,10 +322,6 @@ if (file_exists($theme_info_file)) {
|
||||||
|
|
||||||
/* initialise content region */
|
/* initialise content region */
|
||||||
|
|
||||||
if (! x($a->page, 'content')) {
|
|
||||||
$a->page['content'] = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($a->mode == App::MODE_NORMAL) {
|
if ($a->mode == App::MODE_NORMAL) {
|
||||||
Addon::callHooks('page_content_top', $a->page['content']);
|
Addon::callHooks('page_content_top', $a->page['content']);
|
||||||
}
|
}
|
||||||
|
@ -411,18 +403,7 @@ $a->init_pagehead();
|
||||||
* Build the page ending -- this is stuff that goes right before
|
* Build the page ending -- this is stuff that goes right before
|
||||||
* the closing </body> tag
|
* the closing </body> tag
|
||||||
*/
|
*/
|
||||||
$a->init_page_end();
|
$a->initFooter();
|
||||||
|
|
||||||
// If you're just visiting, let javascript take you home
|
|
||||||
if (x($_SESSION, 'visitor_home')) {
|
|
||||||
$homebase = $_SESSION['visitor_home'];
|
|
||||||
} elseif (local_user()) {
|
|
||||||
$homebase = 'profile/' . $a->user['nickname'];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($homebase)) {
|
|
||||||
$a->page['content'] .= '<script>var homebase="' . $homebase . '" ; </script>';
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* now that we've been through the module content, see if the page reported
|
* now that we've been through the module content, see if the page reported
|
||||||
|
@ -444,23 +425,6 @@ if ($a->module != 'install' && $a->module != 'maintenance') {
|
||||||
Nav::build($a);
|
Nav::build($a);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Add a "toggle mobile" link if we're using a mobile device
|
|
||||||
*/
|
|
||||||
if ($a->is_mobile || $a->is_tablet) {
|
|
||||||
if (isset($_SESSION['show-mobile']) && !$_SESSION['show-mobile']) {
|
|
||||||
$link = 'toggle_mobile?address=' . curPageURL();
|
|
||||||
} else {
|
|
||||||
$link = 'toggle_mobile?off=1&address=' . curPageURL();
|
|
||||||
}
|
|
||||||
$a->page['footer'] = replace_macros(
|
|
||||||
get_markup_template("toggle_mobile_footer.tpl"),
|
|
||||||
[
|
|
||||||
'$toggle_link' => $link,
|
|
||||||
'$toggle_text' => L10n::t('toggle mobile')]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Build the page - now that we have all the components
|
* Build the page - now that we have all the components
|
||||||
*/
|
*/
|
||||||
|
|
53
src/App.php
53
src/App.php
|
@ -96,6 +96,15 @@ class App
|
||||||
public $force_max_items = 0;
|
public $force_max_items = 0;
|
||||||
public $theme_events_in_profile = true;
|
public $theme_events_in_profile = true;
|
||||||
|
|
||||||
|
public $footerScripts = [];
|
||||||
|
|
||||||
|
public function registerFooterScript($path)
|
||||||
|
{
|
||||||
|
$url = str_replace($this->get_basepath() . DIRECTORY_SEPARATOR, '', $path);
|
||||||
|
|
||||||
|
$this->footerScripts[] = $this->get_baseurl() . '/' . trim($url, '/');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief An array for all theme-controllable parameters
|
* @brief An array for all theme-controllable parameters
|
||||||
*
|
*
|
||||||
|
@ -802,15 +811,45 @@ class App
|
||||||
]) . $this->page['htmlhead'];
|
]) . $this->page['htmlhead'];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function init_page_end()
|
public function initFooter()
|
||||||
{
|
{
|
||||||
if (!isset($this->page['end'])) {
|
if (!isset($this->page['footer'])) {
|
||||||
$this->page['end'] = '';
|
$this->page['footer'] = '';
|
||||||
}
|
}
|
||||||
$tpl = get_markup_template('end.tpl');
|
|
||||||
$this->page['end'] = replace_macros($tpl, [
|
// If you're just visiting, let javascript take you home
|
||||||
'$baseurl' => $this->get_baseurl()
|
if (!empty($_SESSION['visitor_home'])) {
|
||||||
]) . $this->page['end'];
|
$homebase = $_SESSION['visitor_home'];
|
||||||
|
} elseif (local_user()) {
|
||||||
|
$homebase = 'profile/' . $a->user['nickname'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($homebase)) {
|
||||||
|
$this->page['footer'] .= '<script>var homebase="' . $homebase . '";</script>' . "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add a "toggle mobile" link if we're using a mobile device
|
||||||
|
*/
|
||||||
|
if ($this->is_mobile || $this->is_tablet) {
|
||||||
|
if (isset($_SESSION['show-mobile']) && !$_SESSION['show-mobile']) {
|
||||||
|
$link = 'toggle_mobile?address=' . curPageURL();
|
||||||
|
} else {
|
||||||
|
$link = 'toggle_mobile?off=1&address=' . curPageURL();
|
||||||
|
}
|
||||||
|
$this->page['footer'] .= replace_macros(get_markup_template("toggle_mobile_footer.tpl"), [
|
||||||
|
'$toggle_link' => $link,
|
||||||
|
'$toggle_text' => Core\L10n::t('toggle mobile')
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
Core\Addon::callHooks('footer', $this->page['footer']);
|
||||||
|
|
||||||
|
$tpl = get_markup_template('footer.tpl');
|
||||||
|
$this->page['footer'] .= replace_macros($tpl, [
|
||||||
|
'$baseurl' => $this->get_baseurl(),
|
||||||
|
'$footerScripts' => $this->footerScripts,
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function set_curl_code($code)
|
public function set_curl_code($code)
|
||||||
|
|
3
view/templates/footer.tpl
Normal file
3
view/templates/footer.tpl
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{{foreach $footerScripts as $scriptUrl}}
|
||||||
|
<script type="text/javascript" src="{{$scriptUrl}}"></script>
|
||||||
|
{{/foreach}}
|
Loading…
Reference in a new issue