Example #1
0
 public static function render($input, $args, $parser, $frame)
 {
     // Disable cache so that CSS will get loaded.
     $parser->disableCache();
     // If this call is contained in a transcluded page or template,
     // or if the input is empty, display nothing.
     if (!$frame->title->equals($parser->getTitle()) || $input == '') {
         return;
     }
     // TODO: Do processing here, like parse to an array
     $error_msg = null;
     // Recreate the top-level <PageSchema> tag, with whatever
     // attributes it contained, because that was actually a tag-
     // function call, as opposed to a real XML tag.
     $input = Xml::tags('PageSchema', $args, $input);
     if ($xml_object = PageSchemas::validateXML($input, $error_msg)) {
         // Store the XML in the page_props table
         $parser->getOutput()->setProperty('PageSchema', $input);
         // Display the schema on the screen
         global $wgOut, $wgScriptPath;
         $wgOut->addStyle($wgScriptPath . '/extensions/PageSchemas/PageSchemas.css');
         $text = PageSchemas::displaySchema($xml_object);
     } else {
         // Store error message in the page_props table
         $parser->getOutput()->setProperty('PageSchema', $error_msg);
         $text = Html::element('p', null, "The (incorrect) XML definition for this template is:") . "\n";
         $text .= Html::element('pre', null, $input);
     }
     return $text;
 }