From 049abe9176de407977d98ee5f0bde154cf098da7 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Wed, 19 Sep 2018 22:49:08 -0400 Subject: [PATCH] [mathjax] Rewrite addon - Remove baseurl admin config - Move script to page end - Add new postprocess_liveupdate event listener - Fix formatting of mathjax.php --- mathjax/config/mathjax.ini.php | 12 --- mathjax/mathjax.js | 5 -- mathjax/mathjax.php | 141 +++++++++++++++------------------ mathjax/templates/admin.tpl | 2 - 4 files changed, 62 insertions(+), 98 deletions(-) delete mode 100644 mathjax/config/mathjax.ini.php delete mode 100644 mathjax/mathjax.js delete mode 100644 mathjax/templates/admin.tpl diff --git a/mathjax/config/mathjax.ini.php b/mathjax/config/mathjax.ini.php deleted file mode 100644 index 261a7327..00000000 --- a/mathjax/config/mathjax.ini.php +++ /dev/null @@ -1,12 +0,0 @@ - + * Author: Hypolite Petovan * License: 3-clause BSD license */ + use Friendica\App; use Friendica\Core\Addon; -use Friendica\Core\Config; use Friendica\Core\L10n; use Friendica\Core\PConfig; -function mathjax_install() { - Addon::registerHook('load_config', 'addon/mathjax/mathjax.php', 'mathjax_load_config'); - Addon::registerHook('page_header', 'addon/mathjax/mathjax.php', 'mathjax_page_header'); - Addon::registerHook('addon_settings', 'addon/mathjax/mathjax.php', 'mathjax_settings'); - Addon::registerHook('addon_settings_post', 'addon/mathjax/mathjax.php', 'mathjax_settings_post'); - Addon::registerHook('template_vars', 'addon/mathjax/mathjax.php', 'mathjax_template_vars'); - logger('installed js_math addon'); +function mathjax_install() +{ + Addon::registerHook('page_end' , __FILE__, 'mathjax_page_end'); + Addon::registerHook('addon_settings' , __FILE__, 'mathjax_settings'); + Addon::registerHook('addon_settings_post', __FILE__, 'mathjax_settings_post'); } -function mathjax_uninstall() { - Addon::unregisterHook('load_config', 'addon/mathjax/mathjax.php', 'mathjax_load_config'); - Addon::unregisterHook('page_header', 'addon/mathjax/mathjax.php', 'mathjax_page_header'); - Addon::unregisterHook('addon_settings', 'addon/mathjax/mathjax.php', 'mathjax_settings'); - Addon::unregisterHook('addon_settings_post', 'addon/mathjax/mathjax.php', 'mathjax_settings_post'); - Addon::unregisterHook('template_vars', 'addon/mathjax/mathjax.php', 'mathjax_template_vars'); +function mathjax_uninstall() +{ + Addon::unregisterHook('page_end' , __FILE__, 'mathjax_page_end'); + Addon::unregisterHook('addon_settings' , __FILE__, 'mathjax_settings'); + Addon::unregisterHook('addon_settings_post', __FILE__, 'mathjax_settings_post'); + + // Legacy hooks + Addon::unregisterHook('load_config' , __FILE__, 'mathjax_load_config'); + Addon::unregisterHook('page_header' , __FILE__, 'mathjax_page_header'); + Addon::unregisterHook('template_vars' , __FILE__, 'mathjax_template_vars'); } -function mathjax_load_config(\Friendica\App $a) +function mathjax_settings_post($a) { - $a->loadConfigFile(__DIR__. '/config/mathjax.ini.php'); + if (!local_user()) { + return; + } + + if (empty($_POST['mathjax-submit'])) { + return; + } + + PConfig::set(local_user(), 'mathjax', 'use', intval($_POST['mathjax_use'])); } -function mathjax_template_vars($a, &$arr) +function mathjax_settings(App $a, &$s) { - if (!array_key_exists('addon_hooks',$arr['vars'])) - { - $arr['vars']['addon_hooks'] = array(); - } - $arr['vars']['addon_hooks'][] = "mathjax"; -} + if (!local_user()) { + return; + } -function mathjax_settings_post ($a, $post) { - if (! local_user()) - return; - if (!x($_POST,'mathjax-submit')) - return; - PConfig::set(local_user(),'mathjax','use',intval($_POST['mathjax_use'])); -} -function mathjax_settings (&$a, &$s) { - if (! local_user()) - return; - $use = PConfig::get(local_user(),'mathjax','use'); - $usetext = (($use) ? ' checked="checked" ' : ''); - $s .= ''; - $s .= '

MathJax '.L10n::t('Settings').'

'; - $s .= '
'; - $s .= ''; } + /* we need to add one JavaScript include command to the html output * note that you have to check the jsmath/easy/load.js too. */ -function mathjax_page_header($a, &$b) { - // if the visitor of the page is not a local_user, use MathJax - // otherwise check the users settings. - $url = Config::get ('mathjax','baseurl'); - if(! $url) { - $url = 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/MathJax.js?config=TeX-MML-AM_CHTML'; - } - if (! local_user()) { - $b .= ''; - } else { - $use = PConfig::get(local_user(),'mathjax','use'); - if ($use) { - $b .= ''; - } - } -} -function mathjax_addon_admin_post (&$a) { - $baseurl = ((x($_POST, 'mjbaseurl')) ? trim($_POST['mjbaseurl']) : 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/MathJax.js?config=TeX-MML-AM_CHTML'); - Config::set('mathjax','baseurl',$baseurl); - info(L10n::t('Settings updated.'). EOL); -} -function mathjax_addon_admin (App $a, &$o) { - $t = get_markup_template( "admin.tpl", "addon/mathjax/" ); +function mathjax_page_end(App $a, &$b) +{ + // if the visitor of the page is not a local_user, use MathJax + // otherwise check the users settings. + $url = $a->get_baseurl() . '/addon/mathjax/asset/MathJax.js?config=TeX-MML-AM_CHTML'; - if (Config::get('mathjax','baseurl','') == '') { - Config::set('mathjax','baseurl','https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/MathJax.js?config=TeX-MML-AM_CHTML'); + if (!local_user() || PConfig::get(local_user(), 'mathjax', 'use', false)) { + $b .= << + +HTML; } - - $o = replace_macros( $t, [ - '$submit' => L10n::t('Save Settings'), - '$mjbaseurl' => ['mjbaseurl', L10n::t('MathJax Base URL'), Config::get('mathjax','baseurl' ), L10n::t('The URL for the javascript file that should be included to use MathJax. Can be either the MathJax CDN or another installation of MathJax.'), 'required'] - ]); } diff --git a/mathjax/templates/admin.tpl b/mathjax/templates/admin.tpl deleted file mode 100644 index e4b89380..00000000 --- a/mathjax/templates/admin.tpl +++ /dev/null @@ -1,2 +0,0 @@ -{{include file="field_input.tpl" field=$mjbaseurl}} -
-- 2.39.5