68 lines
2 KiB
PHP
68 lines
2 KiB
PHP
<?php
|
|
/**
|
|
* DokuWiki Plugin mathjax (Action Component)
|
|
*
|
|
* @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
|
|
* @author Mark Liffiton <liffiton@gmail.com>
|
|
*/
|
|
|
|
// must be run within Dokuwiki
|
|
if (!defined('DOKU_INC')) die();
|
|
|
|
/**
|
|
* Add scripts via an event handler
|
|
*/
|
|
class action_plugin_mathjax_enable extends DokuWiki_Action_Plugin {
|
|
|
|
/**
|
|
* Registers our handler for the TPL_METAHEADER_OUTPUT event
|
|
*/
|
|
public function register(Doku_Event_Handler $controller) {
|
|
$controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'handle_tpl_metaheader_output');
|
|
}
|
|
|
|
/**
|
|
* Add <script> blocks to the headers:
|
|
* - One to load MathJax and one to configure it
|
|
* - Also add one block per configfile, if any are specified
|
|
* See https://docs.mathjax.org/en/latest/configuration.html#using-in-line-configuration-options
|
|
*
|
|
* @param Doku_Event $event
|
|
* @param $param
|
|
*/
|
|
public function handle_tpl_metaheader_output(Doku_Event &$event, $param) {
|
|
// Create main config block
|
|
$event->data['script'][] = array(
|
|
'type' => 'text/x-mathjax-config',
|
|
'_data' => $this->getConf('config'),
|
|
);
|
|
|
|
// Include config files, if any specified
|
|
$configfiles = $this->getConf('configfile');
|
|
$files = explode(';', $configfiles);
|
|
foreach ($files as $f) {
|
|
$f = trim($f);
|
|
if ($f == "" or !is_readable($f)) {
|
|
continue;
|
|
}
|
|
$contents = file_get_contents(DOKU_INC . $f);
|
|
if ($contents) {
|
|
$event->data['script'][] = array(
|
|
'type' => 'text/x-mathjax-config',
|
|
'_data' => "\n// " . $f . "\n" . $contents,
|
|
);
|
|
}
|
|
}
|
|
|
|
// Load MathJax itself
|
|
$event->data['script'][] = array(
|
|
'type' => 'text/javascript',
|
|
'charset' => 'utf-8',
|
|
'src' => $this->getConf('url'),
|
|
'_data' => '',
|
|
);
|
|
}
|
|
|
|
}
|
|
|
|
// vim:ts=4:sw=4:et:
|