]> git.proxmox.com Git - pve-docs.git/blob - debian/tree/pve-docs-mediawiki/PVEDocs/include/PVEDocs.php
fix #5429: network: override device names: include Type=ether
[pve-docs.git] / debian / tree / pve-docs-mediawiki / PVEDocs / include / PVEDocs.php
1 <?php
2 // see http://www.mediawiki.org/wiki/Manual:Parser_functions
3
4 class PVEDocs {
5 public static function onParserFirstCallInit(Parser $parser ) {
6 $parser->setFunctionHook('pvedocs', [ self::class, 'efPvedocsParserFunction_Render' ]);
7 $parser->setHook('pvehide', [ self::class, 'renderTagPveHideContent' ]);
8
9 return true;
10 }
11
12 // similar code as in <htmlet> tag...
13 public static function efPvedocsPostProcessFunction($parser, &$text) {
14 $text = preg_replace_callback(
15 '/<!--- @PVEDOCS_BASE64@ ([0-9a-zA-Z\\+\\/]+=*) @PVEDOCS_BASE64@ -->/sm',
16 function ($m) { return base64_decode("$m[1]"); },
17 $text
18 );
19 return true;
20 }
21
22 // "Render" <pvehide>
23 public static function renderTagPveHideContent($input, array $args, Parser $parser, PPFrame $frame ) {
24 return ''; // simply return nothing
25 }
26
27
28 # Render the output of {{#pvedocs:chapter}}.
29 public static function efPvedocsParserFunction_Render(Parser $parser, $doc = '') {
30 $parser->getOutput()->updateCacheExpiry(0); // disableCache() was dropped in MW 1.34
31
32 // only allow simple names, so that jist files from within "/usr/share/pve-docs/" can be included
33 if (!preg_match("/[a-z0-9.-]+\.html/i", $doc)) {
34 die("no such manual page");
35 }
36
37 // load JS helper for TOC/footnote generation and load actual HTML content fom docs
38 $content = "\n<script type=\"text/javascript\">\n".file_get_contents("/usr/lib/pve-docs/PVEDocs/mw-asciidoc.js") ."</script>";
39
40 $content .= file_get_contents("/usr/share/pve-docs/$doc");
41
42 // from https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions/HTMLets/+/11e5ef1ea2820319458dc67174ca76d6e00b10cc/HTMLets.php#140
43 $output = '<!--- @PVEDOCS_BASE64@ '.base64_encode($content).' @PVEDOCS_BASE64@ -->';
44 return array($output, 'noparse' => true, 'isHTML' => true);
45 }
46 }