]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Make new answers work
authorZach Copley <zach@status.net>
Thu, 31 Mar 2011 16:58:26 +0000 (09:58 -0700)
committerZach Copley <zach@status.net>
Thu, 31 Mar 2011 16:58:26 +0000 (09:58 -0700)
plugins/QnA/QnAPlugin.php
plugins/QnA/actions/qnanewanswer.php
plugins/QnA/actions/qnashowanswer.php
plugins/QnA/classes/QnA_Answer.php
plugins/QnA/lib/qnaansweredform.php
plugins/QnA/lib/qnaanswerform.php

index 992641b18e13684be5f888eda972e697a8e68041..228b571a6e07666e7232a39fb214e60fc247cf2f 100644 (file)
@@ -120,9 +120,8 @@ class QnAPlugin extends MicroAppPlugin
             array('action' => 'qnanewquestion')
         );
         $m->connect(
-            'main/qna/newanswer/:id',
-            array('action' => 'qnanewanswer'),
-            array('id' => $UUIDregex)
+            'main/qna/newanswer',
+            array('action' => 'qnanewanswer')
         );
         $m->connect(
             'question/vote/:id',
@@ -304,13 +303,13 @@ class QnAPlugin extends MicroAppPlugin
             // TRANS: %s is the unpexpected object type.
             throw new Exception(
                 sprintf(
-                    _m('Unexpected type for QnA plugin: %s.'), 
+                    _m('Unexpected type for QnA plugin: %s.'),
                     $notice->object_type
                 )
             );
         }
     }
-    
+
     function showNoticeQuestion($notice, $out)
     {
         $user = common_current_user();
@@ -321,7 +320,7 @@ class QnAPlugin extends MicroAppPlugin
 
         $out->elementStart('div', array('class' => 'entry-content question-content'));
         $question = QnA_Question::getByNotice($notice);
-        
+
         if ($question) {
             if ($user) {
                 $profile = $user->getProfile();
index 781ded36e6b96427c972b1b35e89114519f268ab..d2558380e96189e9da24c47b063f3e70d0a502b8 100644 (file)
@@ -45,12 +45,12 @@ if (!defined('STATUSNET')) {
  */
 class QnanewanswerAction extends Action
 {
-    protected $user        = null;
-    protected $error       = null;
-    protected $complete    = null;
+    protected $user     = null;
+    protected $error    = null;
+    protected $complete = null;
 
-    protected $question    = null;
-    protected $content     = null;
+    protected $question = null;
+    protected $content  = null;
 
     /**
      * Returns the title of the action
@@ -91,19 +91,22 @@ class QnanewanswerAction extends Action
             $this->checkSessionToken();
         }
 
-        $id = $this->trimmed('id');
+        $id = substr($this->trimmed('id'), 9);
+
+        common_debug("XXXXXXXXXXXXXXXXXX id = " . $id);
+
         $this->question = QnA_Question::staticGet('id', $id);
-        
+
         if (empty($this->question)) {
             // TRANS: Client exception thrown trying to respond to a non-existing question.
             throw new ClientException(
-                _m('Invalid or missing question.'), 
+                _m('Invalid or missing question.'),
                 404
             );
         }
 
         $this->answerText = $this->trimmed('answer');
-        
+
         return true;
     }
 
@@ -145,8 +148,8 @@ class QnanewanswerAction extends Action
             $this->showPage();
             return;
         }
-
         if ($this->boolean('ajax')) {
+            common_debug("ajaxy part");
             header('Content-Type: text/xml;charset=utf-8');
             $this->xw->startDocument('1.0', 'UTF-8');
             $this->elementStart('html');
@@ -176,7 +179,6 @@ class QnanewanswerAction extends Action
         }
 
         $form = new QnaanswerForm($this->question, $this);
-
         $form->show();
 
         return;
index d90b5c7ac68ee0be9ea5719cc97db77ac96c71f4..5f3bc2eed961001b756f6e43c692b08fb38d1987 100644 (file)
@@ -69,6 +69,12 @@ class QnashowanswerAction extends ShownoticeAction
             throw new ClientException(_('No such answer.'), 404);
         }
 
+        $this->question = $this->answer->getQuestion();
+
+        if (empty($this->question)) {
+            throw new ClientException(_('No question for this answer.'), 404);
+        }
+
         $this->notice = Notice::staticGet('uri', $this->answer->uri);
 
         if (empty($this->notice)) {
@@ -105,9 +111,11 @@ class QnashowanswerAction extends ShownoticeAction
     {
         $question = $this->answer->getQuestion();
 
-        return sprintf(_('%s\'s answer to "%s"'),
-                       $this->user->nickname,
-                       $question->title);
+        return sprintf(
+            _('%s\'s answer to "%s"'),
+            $this->user->nickname,
+            $question->title
+        );
     }
 
     /**
@@ -121,9 +129,14 @@ class QnashowanswerAction extends ShownoticeAction
         $this->elementStart('h1');
         $this->element(
             'a',
-            array('href' => $this->answer->url),
-            $this->answer->title
+            array('href' => $this->answer->uri),
+            $this->question->title
         );
         $this->elementEnd('h1');
     }
+
+    function showContent()
+    {
+        $this->raw($this->answer->asHTML());
+    }
 }
index 349bbb0196dc92548268a5ed924e65592411c8bf..06e88354c9e71681a421ba779a2ac59661adbb5b 100644 (file)
@@ -167,11 +167,11 @@ class QnA_Answer extends Managed_DataObject
      */
     function getQuestion()
     {
-        $question = self::staticGet('id', $this->question_id);
+        $question = QnA_Question::staticGet('id', $this->question_id);
         if (empty($question)) {
             throw new Exception("No question with ID {$this->question_id}");
         }
-        return question;
+        return $question;
     }
 
     function getProfile()
index a229e7f87049a2c3dfd44e823b1163af2c8e1b76..b1500140f348c981b76d5eaf65fc46d61ae1105a 100644 (file)
@@ -60,7 +60,7 @@ class QnaansweredForm extends Form
     function __construct(QnA_Answer $answer, HTMLOutputter $out)
     {
         parent::__construct($out);
-        $this->question = $answer->getQuestion(); 
+        $this->question = $answer->getQuestion();
         $this->answer   = $answer;
     }
 
index f89f6c78896498b69eef436e8ed471867016ac9b..8d78213d7cbd1ae9cf551d237fd1c6920403d6a9 100644 (file)
@@ -89,7 +89,7 @@ class QnaanswerForm extends Form
      */
     function action()
     {
-        return common_local_url('qnanewanswer', array('id' => $this->question->id));
+        return common_local_url('qnanewanswer');
     }
 
     /**
@@ -104,6 +104,7 @@ class QnaanswerForm extends Form
         $id       = "question-" . $question->id;
 
         $out->element('p', 'answer', $question->title);
+        $out->hidden('id', $id);
         $out->element('input', array('type' => 'text', 'name' => 'answer'));
     }