From ab64f4721fb1174edc41ba4ca5e5f855d145c8a9 Mon Sep 17 00:00:00 2001 From: Shish Date: Thu, 15 Jan 2009 21:41:59 -0800 Subject: [PATCH] support for a documentation tag --- ext/ext_manager/main.php | 17 ++++++++++++++++- ext/ext_manager/theme.php | 8 ++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/ext/ext_manager/main.php b/ext/ext_manager/main.php index d1db1ae2..245ca4bc 100644 --- a/ext/ext_manager/main.php +++ b/ext/ext_manager/main.php @@ -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")); diff --git a/ext/ext_manager/theme.php b/ext/ext_manager/theme.php index f8292c12..303bc41d 100644 --- a/ext/ext_manager/theme.php +++ b/ext/ext_manager/theme.php @@ -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 = "
".$info->documentation."
"; + $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)); + } } ?>