X-Git-Url: https://reisub.nsupdate.info/git/?a=blobdiff_plain;f=mathjax%2Fmathjax.php;h=3cc42c47f5da64cc33065395ca682307249a2767;hb=47cb5d0b14f3c92d69218c6f143bf574374e319d;hp=ccc6ca0c05b0180e00c9c26c8cf86279b4fadae2;hpb=0a683452c2752d0022c80d633717143dbab275dc;p=friendica-addons.git%2F.git diff --git a/mathjax/mathjax.php b/mathjax/mathjax.php index ccc6ca0c..3cc42c47 100644 --- a/mathjax/mathjax.php +++ b/mathjax/mathjax.php @@ -1,78 +1,69 @@ + * Description: Addon for Friendica to include MathJax (LaTeX math syntax) + * Version: 2.0 + * Author: Tobias Diekershoff + * Author: Hypolite Petovan * License: 3-clause BSD license */ -function mathjax_install() { - register_hook('page_header', 'addon/mathjax/mathjax.php', 'mathjax_page_header'); - register_hook('plugin_settings', 'addon/mathjax/mathjax.php', 'mathjax_settings'); - register_hook('plugin_settings_post', 'addon/mathjax/mathjax.php', 'mathjax_settings_post'); - logger('installed js_math plugin'); -} -function mathjax_uninstall() { - unregister_hook('page_header', 'addon/mathjax/mathjax.php', 'mathjax_page_header'); - unregister_hook('plugin_settings', 'addon/mathjax/mathjax.php', 'mathjax_settings'); - unregister_hook('plugin_settings_post', 'addon/mathjax/mathjax.php', 'mathjax_settings_post'); -} -function mathjax_settings_post ($a, $post) { - if (! local_user()) - return; - // don't check statusnet settings if statusnet submit button is not clicked - if (!x($_POST,'mathjax-submit')) - return; - set_pconfig(local_user(),'mathjax','use',intval($_POST['mathjax_use'])); -} -function mathjax_settings (&$a, &$s) { - if (! local_user()) - return; - $use = get_pconfig(local_user(),'mathjax','use'); - $usetext = (($use) ? ' checked="checked" ' : ''); - $s .= '
'; - $s .= '

MathJax '.t('Settings').'

'; - $s .= '

'.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.').'

'; - $s .= ''; - $s .= ''; - $s .= '
'; +use Friendica\App; +use Friendica\Core\Hook; +use Friendica\Core\Renderer; +use Friendica\DI; - $s .= '
'; - $s .= '
'; +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'); } -/* 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 = get_config ('mathjax','baseurl'); - if(! $url) - $url = 'http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'; - if (! local_user()) { - $b .= ''; - } else { - $use = get_pconfig(local_user(),'mathjax','use'); - if ($use) { - $b .= ''; - } - } + +function mathjax_uninstall() +{ + Hook::unregister('footer' , __FILE__, 'mathjax_footer'); + Hook::unregister('addon_settings' , __FILE__, 'mathjax_settings'); + Hook::unregister('addon_settings_post', __FILE__, 'mathjax_settings_post'); + + // 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_plugin_admin_post (&$a) { - $baseurl = ((x($_POST, 'baseurl')) ? trim($_POST['baseurl']) : 'http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'); - set_config('mathjax','baseurl',$baseurl); - info( 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_plugin_admin (&$a, &$o) { - $t = get_markup_template( "admin.tpl", "addon/mathjax/" ); - if (get_config('mathjax','baseurl','') == '') { - set_config('mathjax','baseurl','http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'); + +function mathjax_settings(App $a, &$s) +{ + if (!local_user()) { + return; } - $o = replace_macros( $t, array( - '$submit' => t('Submit'), - '$baseurl' => array('baseurl', t('MathJax Base URL'), get_config('mathjax','baseurl' ), 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.')), - )); + $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'); + } }