]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
restructure doc.php for new use
authorEvan Prodromou <evan@status.net>
Wed, 7 Oct 2009 09:14:25 +0000 (05:14 -0400)
committerEvan Prodromou <evan@status.net>
Fri, 22 Jan 2010 18:53:53 +0000 (13:53 -0500)
actions/doc.php

index 5df18a859f932d4d2f3544b1d3e28c5d9bf8a249..99c2c796653590c943607fbc13b8f5df63783da3 100644 (file)
@@ -45,8 +45,18 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
  */
 class DocAction extends Action
 {
-    var $filename;
-    var $title;
+    var $output   = null;
+    var $filename = null;
+    var $title    = null;
+
+    function prepare($args)
+    {
+        $this->title  = $this->trimmed('title');
+        $this->output = null;
+
+        $this->loadDoc();
+        return true;
+    }
 
     /**
      * Handle a request
@@ -58,25 +68,6 @@ class DocAction extends Action
     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();
     }
 
@@ -151,4 +142,46 @@ class DocAction extends Action
     {
         return true;
     }
+
+    function loadDoc()
+    {
+        if (Event::handle('StartLoadDoc', array(&$this->title, &$this->output))) {
+
+            $this->filename = $this->getFilename();
+
+            if (empty($this->filename)) {
+                throw new ClientException(sprintf(_('No such document "%s"'), $this->title), 404);
+            }
+
+            $c = file_get_contents($this->filename);
+
+            $this->output = common_markup_to_html($c);
+
+            Event::handle('EndLoadDoc', array($this->title, &$this->output));
+        }
+    }
+
+    function getFilename()
+    {
+        $local = array_merge(glob(INSTALLDIR.'/local/doc-src/'.$this->title),
+                             glob(INSTALLDIR.'/local/doc-src/'.$this->title.'.*'));
+
+        if (count($local)) {
+            return $this->negotiateLanguage($local);
+        }
+
+        $dist = array_merge(glob(INSTALLDIR.'/doc-src/'.$this->title),
+                            glob(INSTALLDIR.'/doc-src/'.$this->title.'.*'));
+
+        if (count($dist)) {
+            return $this->negotiateLanguage($dist);
+        }
+
+        return null;
+    }
+
+    function negotiateLanguage($files)
+    {
+        // FIXME: write this
+    }
 }