2012-04-15 16:25:23 -04:00
< ? php
/**
* Name : MathJax
* Description : Addon for Friendika to include MathJax ( LaTeX math syntax )
* Version : 1.0
2013-06-14 13:40:10 -04:00
* Author : Tobias Diekershoff < https :// f . diekershoff . de / profile / tobias >
2012-04-15 16:25:23 -04:00
* License : 3 - clause BSD license
*/
2018-01-16 19:51:12 -05:00
use Friendica\Core\Addon ;
2017-11-06 18:55:24 -05:00
use Friendica\Core\Config ;
use Friendica\Core\PConfig ;
2012-04-15 16:25:23 -04:00
function mathjax_install () {
2018-01-16 19:51:12 -05:00
Addon :: registerHook ( 'page_header' , 'addon/mathjax/mathjax.php' , 'mathjax_page_header' );
2018-01-20 08:57:41 -05:00
Addon :: registerHook ( 'addon_settings' , 'addon/mathjax/mathjax.php' , 'mathjax_settings' );
Addon :: registerHook ( 'addon_settings_post' , 'addon/mathjax/mathjax.php' , 'mathjax_settings_post' );
logger ( 'installed js_math addon' );
2012-04-15 16:25:23 -04:00
}
function mathjax_uninstall () {
2018-01-16 19:51:12 -05:00
Addon :: unregisterHook ( 'page_header' , 'addon/mathjax/mathjax.php' , 'mathjax_page_header' );
2018-01-20 08:57:41 -05:00
Addon :: unregisterHook ( 'addon_settings' , 'addon/mathjax/mathjax.php' , 'mathjax_settings' );
Addon :: unregisterHook ( 'addon_settings_post' , 'addon/mathjax/mathjax.php' , 'mathjax_settings_post' );
2012-04-15 16:25:23 -04:00
}
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 ;
2017-11-06 18:55:24 -05:00
PConfig :: set ( local_user (), 'mathjax' , 'use' , intval ( $_POST [ 'mathjax_use' ]));
2012-04-15 16:25:23 -04:00
}
function mathjax_settings ( & $a , & $s ) {
if ( ! local_user ())
return ;
2017-11-06 18:55:24 -05:00
$use = PConfig :: get ( local_user (), 'mathjax' , 'use' );
2012-04-15 16:25:23 -04:00
$usetext = (( $use ) ? ' checked="checked" ' : '' );
2013-12-01 05:37:51 -05:00
$s .= '<span id="settings_mathjax_inflated" class="settings-block fakelink" style="display: block;" onclick="openClose(\'settings_mathjax_expanded\'); openClose(\'settings_mathjax_inflated\');">' ;
2012-04-15 16:25:23 -04:00
$s .= '<h3>MathJax ' . t ( 'Settings' ) . '</h3>' ;
2013-12-01 05:37:51 -05:00
$s .= '</span>' ;
$s .= '<div id="settings_mathjax_expanded" class="settings-block" style="display: none;">' ;
$s .= '<span class="fakelink" onclick="openClose(\'settings_mathjax_expanded\'); openClose(\'settings_mathjax_inflated\');">' ;
$s .= '<h3>MathJax ' . t ( 'Settings' ) . '</h3>' ;
$s .= '</span>' ;
2012-04-15 16:25:23 -04:00
$s .= '<p>' . 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.' ) . '</p>' ;
$s .= '<label id="mathjax_label" for="mathjax_use">' . t ( 'Use the MathJax renderer' ) . '</label>' ;
$s .= '<input id="mathjax_use" type="checkbox" name="mathjax_use" value="1"' . $usetext . ' />' ;
$s .= '<div class="clear"></div>' ;
2013-11-19 08:10:27 -05:00
$s .= '<div class="settings-submit-wrapper" ><input type="submit" id="mathjax-submit" name="mathjax-submit" class="settings-submit" value="' . t ( 'Save Settings' ) . '" /></div>' ;
2012-04-15 16:25:23 -04:00
$s .= '</div>' ;
}
/* 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.
2017-11-06 18:55:24 -05:00
$url = Config :: get ( 'mathjax' , 'baseurl' );
2012-04-17 01:57:34 -04:00
if ( ! $url )
$url = 'http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML' ;
2012-04-15 16:25:23 -04:00
if ( ! local_user ()) {
$b .= '<script type="text/javascript" src="' . $url . '"></script>' ;
} else {
2017-11-06 18:55:24 -05:00
$use = PConfig :: get ( local_user (), 'mathjax' , 'use' );
2018-01-15 08:15:33 -05:00
if ( $use ) {
2012-04-15 16:25:23 -04:00
$b .= '<script type="text/javascript" src="' . $url . '"></script>' ;
}
}
}
2018-01-20 08:57:41 -05:00
function mathjax_addon_admin_post ( & $a ) {
2012-04-15 16:25:23 -04:00
$baseurl = (( x ( $_POST , 'baseurl' )) ? trim ( $_POST [ 'baseurl' ]) : 'http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML' );
2017-11-06 18:55:24 -05:00
Config :: set ( 'mathjax' , 'baseurl' , $baseurl );
2012-04-15 16:25:23 -04:00
info ( t ( 'Settings updated.' ) . EOL );
}
2018-01-20 08:57:41 -05:00
function mathjax_addon_admin ( & $a , & $o ) {
2012-12-22 15:36:35 -05:00
$t = get_markup_template ( " admin.tpl " , " addon/mathjax/ " );
2017-11-06 18:55:24 -05:00
if ( Config :: get ( 'mathjax' , 'baseurl' , '' ) == '' ) {
Config :: set ( 'mathjax' , 'baseurl' , 'http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML' );
2012-12-22 15:36:35 -05:00
}
2018-01-15 08:15:33 -05:00
$o = replace_macros ( $t , [
2013-11-19 08:10:27 -05:00
'$submit' => t ( 'Save Settings' ),
2018-01-15 08:15:33 -05:00
'$baseurl' => [ 'baseurl' , t ( 'MathJax Base URL' ), Config :: get ( '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.' )],
]);
2012-04-15 16:25:23 -04:00
}