]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/doc.php
add hooks to allow loading custom help documentation
[quix0rs-gnu-social.git] / actions / doc.php
index 3d14b25b8a194e6d5a2563e31b727dc907c7eb82..7387c162075195b19e6f719234a1ffa84e3fa440 100644 (file)
@@ -1,7 +1,19 @@
 <?php
-/*
+
+/**
+ * Documentation action.
+ *
+ * PHP version 5
+ *
+ * @category Action
+ * @package  Laconica
+ * @author   Evan Prodromou <evan@controlyourself.ca>
+ * @author   Robin Millette <millette@controlyourself.ca>
+ * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link     http://laconi.ca/
+ *
  * Laconica - a distributed open-source microblogging tool
- * Copyright (C) 2008, Controlez-Vous, Inc.
+ * Copyright (C) 2008, 2009, Control Yourself, Inc.
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as published by
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-if (!defined('LACONICA')) { exit(1); }
+if (!defined('LACONICA')) {
+    exit(1);
+}
 
+/**
+ * Documentation class.
+ *
+ * @category Action
+ * @package  Laconica
+ * @author   Evan Prodromou <evan@controlyourself.ca>
+ * @author   Robin Millette <millette@controlyourself.ca>
+ * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link     http://laconi.ca/
+ */
 class DocAction extends Action
 {
+    var $filename;
+    var $title;
 
+    /**
+     * Class handler.
+     *
+     * @param array $args array of arguments
+     *
+     * @return nothing
+     */
     function handle($args)
     {
         parent::handle($args);
-        $title = $this->trimmed('title');
-        $filename = INSTALLDIR.'/doc/'.$title;
-        if (!file_exists($filename)) {
-            $this->clientError(_('No such document.'));
-            return;
+
+        $this->title  = $this->trimmed('title');
+        $this->output = null;
+
+        if (Event::handle('StartLoadDoc', &$this->title, &$this->output)) {
+
+            $this->filename = INSTALLDIR.'/doc-src/'.$this->title;
+            if (!file_exists($this->filename)) {
+                $this->clientError(_('No such document.'));
+                return;
+            }
+
+            $c = file_get_contents($this->filename);
+            $this->output = common_markup_to_html($c);
+
+            Event::handle('EndLoadDoc', $this->title, &$this->output);
         }
-        $c = file_get_contents($filename);
-        $output = common_markup_to_html($c);
-        common_show_header(_(ucfirst($title)));
-        $this->raw($output);
-        common_show_footer();
+
+        $this->showPage();
+    }
+
+    // overrrided to add entry-title class
+    function showPageTitle() {
+        $this->element('h1', array('class' => 'entry-title'), $this->title());
+    }
+
+    // overrided to add hentry, and content-inner classes
+    function showContentBlock()
+     {
+         $this->elementStart('div', array('id' => 'content', 'class' => 'hentry'));
+         $this->showPageTitle();
+         $this->showPageNoticeBlock();
+         $this->elementStart('div', array('id' => 'content_inner',
+             'class' => 'entry-content'));
+         // show the actual content (forms, lists, whatever)
+         $this->showContent();
+         $this->elementEnd('div');
+         $this->elementEnd('div');
+     }
+
+    /**
+     * Display content.
+     *
+     * @return nothing
+     */
+    function showContent()
+    {
+        $this->raw($this->output);
+    }
+
+    /**
+     * Page title.
+     *
+     * @return page title
+     */
+    function title()
+    {
+        return ucfirst($this->title);
+    }
+
+    function isReadOnly($args)
+    {
+        return true;
     }
 }