MDL-22112, push wiki 2.0 into head
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Parser utils and default callbacks.
|
||||
*
|
||||
* @author Josep Arús
|
||||
*
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU Public License
|
||||
* @package wiki
|
||||
*/
|
||||
|
||||
require_once($CFG->dirroot . "/lib/outputcomponents.php");
|
||||
|
||||
class parser_utils {
|
||||
|
||||
public static function h($tag, $text = null, $options = array(), $escape_text = false) {
|
||||
$tag = htmlentities($tag);
|
||||
if(!empty($text) && $escape_text) {
|
||||
$text = htmlentities($text);
|
||||
}
|
||||
return html_writer::tag($tag, $text, $options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Default link generator
|
||||
*/
|
||||
|
||||
public static function wiki_parser_link_callback($link, $options) {
|
||||
$l = urlencode($link);
|
||||
if(!empty($options['anchor'])) {
|
||||
$l .= "#".urlencode($options['anchor']);
|
||||
}
|
||||
return array('content' => $link, 'url' => "http://".$l);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Default table generator
|
||||
*/
|
||||
|
||||
public static function wiki_parser_table_callback($table) {
|
||||
$html = "";
|
||||
$headers = $table[0];
|
||||
$columncount = count($headers);
|
||||
$headerhtml = "";
|
||||
foreach($headers as $h) {
|
||||
$text = trim($h[1]);
|
||||
if($h[0] == 'header') {
|
||||
$headerhtml .= "\n".parser_utils::h('th', $text)."\n";
|
||||
$hasheaders = true;
|
||||
}
|
||||
else if($h[0] == 'normal'){
|
||||
$headerhtml .= "\n".parser_utils::h("td", $text)."\n";
|
||||
}
|
||||
}
|
||||
$headerhtml = "\n".parser_utils::h('tr', $headerhtml)."\n";
|
||||
$bodyhtml = "";
|
||||
if(isset($hasheaders)) {
|
||||
$html = "\n".parser_utils::h('thead', $headerhtml)."\n";
|
||||
}
|
||||
else {
|
||||
$bodyhtml .= $headerhtml;
|
||||
}
|
||||
|
||||
array_shift($table);
|
||||
foreach($table as $row) {
|
||||
$htmlrow = "";
|
||||
for($i = 0; $i < $columncount; $i++) {
|
||||
$text = "";
|
||||
if(!isset($row[$i])) {
|
||||
$htmlrow .= "\n".parser_utils::h('td', $text)."\n";
|
||||
}
|
||||
else {
|
||||
$text = trim($row[$i][1]);
|
||||
if($row[$i][0] == 'header') {
|
||||
$htmlrow .= "\n".parser_utils::h('th', $text)."\n";
|
||||
}
|
||||
else if($row[$i][0] == 'normal'){
|
||||
$htmlrow .= "\n".parser_utils::h('td', $text)."\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
$bodyhtml .= "\n".parser_utils::h('tr', $htmlrow)."\n";
|
||||
}
|
||||
|
||||
$html .= "\n".parser_utils::h('tbody', $bodyhtml)."\n";
|
||||
return "\n".parser_utils::h('table', $html)."\n";
|
||||
}
|
||||
|
||||
/**
|
||||
* Default path converter
|
||||
*/
|
||||
|
||||
public static function wiki_parser_real_path($url) {
|
||||
return $url;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user