X-Git-Url: https://reisub.nsupdate.info/git/?a=blobdiff_plain;f=mathjax%2Fmathjax.php;h=3cc42c47f5da64cc33065395ca682307249a2767;hb=47cb5d0b14f3c92d69218c6f143bf574374e319d;hp=91a6a066d803f9da0b02720b412d208d7967ccbd;hpb=194d1d167d4f7410aa690be2649ffa8a0d536608;p=friendica-addons.git%2F.git diff --git a/mathjax/mathjax.php b/mathjax/mathjax.php index 91a6a066..3cc42c47 100644 --- a/mathjax/mathjax.php +++ b/mathjax/mathjax.php @@ -1,101 +1,69 @@ + * 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('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'); -} +use Friendica\App; +use Friendica\Core\Hook; +use Friendica\Core\Renderer; +use Friendica\DI; -function mathjax_uninstall() { - 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_install() +{ + Hook::register('footer' , __FILE__, 'mathjax_footer'); + Hook::register('addon_settings' , __FILE__, 'mathjax_settings'); + Hook::register('addon_settings_post', __FILE__, 'mathjax_settings_post'); } -function mathjax_template_vars($a, &$arr) +function mathjax_uninstall() { - if (!array_key_exists('addon_hooks',$arr['vars'])) - { - $arr['vars']['addon_hooks'] = array(); - } - $arr['vars']['addon_hooks'][] = "mathjax"; -} + Hook::unregister('footer' , __FILE__, 'mathjax_footer'); + Hook::unregister('addon_settings' , __FILE__, 'mathjax_settings'); + Hook::unregister('addon_settings_post', __FILE__, 'mathjax_settings_post'); -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'])); + // Legacy hooks + Hook::unregister('load_config' , __FILE__, 'mathjax_load_config'); + Hook::unregister('page_header' , __FILE__, 'mathjax_page_header'); + Hook::unregister('template_vars' , __FILE__, 'mathjax_template_vars'); } -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_settings_post($a) +{ + if (!local_user() || empty($_POST['mathjax-submit'])) { + return; + } + + DI::pConfig()->set(local_user(), 'mathjax', 'use', intval($_POST['mathjax_use'])); } -function mathjax_addon_admin (App $a, &$o) { - $t = get_markup_template( "admin.tpl", "addon/mathjax/" ); - 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'); +function mathjax_settings(App $a, &$s) +{ + if (!local_user()) { + return; } - $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'] + $use = DI::pConfig()->get(local_user(), 'mathjax', 'use', false); + + $tpl = Renderer::getMarkupTemplate('settings.tpl', 'addon/mathjax'); + $s .= Renderer::replaceMacros($tpl, [ + '$title' => 'MathJax', + '$description' => DI::l10n()->t('The MathJax addon renders mathematical formulae written using the LaTeX syntax surrounded by the usual $$ or an eqnarray block in the postings of your wall,network tab and private mail.'), + '$mathjax_use' => ['mathjax_use', DI::l10n()->t('Use the MathJax renderer'), $use, ''], + '$savesettings' => DI::l10n()->t('Save Settings'), ]); } + +function mathjax_footer(App $a, &$b) +{ + // if the visitor of the page is not a local_user, use MathJax + // otherwise check the users settings. + if (!local_user() || DI::pConfig()->get(local_user(), 'mathjax', 'use', false)) { + DI::page()->registerFooterScript(__DIR__ . '/asset/MathJax.js?config=TeX-MML-AM_CHTML'); + DI::page()->registerFooterScript(__DIR__ . '/mathjax.js'); + } +}