support for a documentation tag

This commit is contained in:
Shish 2009-01-15 21:41:59 -08:00
parent 2ba285a005
commit ab64f4721f
2 changed files with 24 additions and 1 deletions

View file

@ -8,7 +8,7 @@
*/
class ExtensionInfo { // {{{
var $ext_name, $name, $link, $author, $email, $description;
var $ext_name, $name, $link, $author, $email, $description, $documentation;
function ExtensionInfo($main) {
$matches = array();
@ -45,6 +45,15 @@ class ExtensionInfo { // {{{
$i++;
}
}
if(preg_match("/(.*)Documentation: (.*)/", $line, $matches)) {
$this->documentation = $matches[2];
$start = $matches[1]." ";
$start_len = strlen($start);
while(substr($lines[$i+1], 0, $start_len) == $start) {
$this->documentation .= substr($lines[$i+1], $start_len);
$i++;
}
}
if(preg_match("/\*\//", $line, $matches)) {
break;
}
@ -84,6 +93,12 @@ class ExtManager implements Extension {
}
}
if(($event instanceof PageRequestEvent) && $event->page_matches("ext_doc")) {
$ext = $event->get_arg(0);
$info = new ExtensionInfo("contrib/$ext/main.php");
$this->theme->display_doc($event->page, $info);
}
if($event instanceof UserBlockBuildingEvent) {
if($event->user->is_admin()) {
$event->add_link("Extension Manager", make_link("ext_manager"));

View file

@ -43,5 +43,13 @@ class ExtManagerTheme extends Themelet {
$page->add_block(new NavBlock());
$page->add_block(new Block("Extension Manager", $html));
}
public function display_doc(Page $page, ExtensionInfo $info) {
$html = "<div style='align: left'>".$info->documentation."</div>";
$page->set_title("Documentation for ".html_escape($info->name));
$page->set_heading(html_escape($info->name));
$page->add_block(new NavBlock());
$page->add_block(new Block("Documentation", $html));
}
}
?>