-if (!defined('LACONICA')) { exit(1); }
-
-require_once('markdown.php');
-
-class DocAction extends Action {
-
- function handle($args) {
- parent::handle($args);
- $title = $this->trimmed('title');
- $filename = INSTALLDIR.'/doc/'.$title;
- if (!file_exists()) {
- common_user_error(_t('No such document.'));
- return;
- }
- $output = Markdown(file_get_contents($filename));
- common_show_header(_t(ucfirst($title)));
- common_raw($output);
- common_show_footer();
- }
-}
\ No newline at end of file
+if (!defined('STATUSNET') && !defined('LACONICA')) {
+ exit(1);
+}
+
+/**
+ * Documentation class.
+ *
+ * @category Action
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @author Robin Millette <millette@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link http://status.net/
+ */
+class DocAction extends Action
+{
+ var $filename;
+ var $title;
+
+ /**
+ * Class handler.
+ *
+ * @param array $args array of arguments
+ *
+ * @return nothing
+ */
+ function handle($args)
+ {
+ parent::handle($args);
+
+ $this->title = $this->trimmed('title');
+ $this->output = null;
+
+ if (Event::handle('StartLoadDoc', array(&$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', array($this->title, &$this->output));
+ }
+
+ $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;
+ }
+}