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 = "