* 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'); } 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_template_vars($a, &$arr) { if (!array_key_exists('addon_hooks',$arr['vars'])) { $arr['vars']['addon_hooks'] = array(); } $arr['vars']['addon_hooks'][] = "mathjax"; } 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/" ); 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'); } $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'] ]); }