From 70a27d4a472f989fef64b9cf76e2bed0c1a2765c Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Sun, 26 Mar 2017 09:56:34 +0200 Subject: [PATCH] First dashboard draft (test) --- Admin/Installer.php | 1 + Admin/Routes/Web/Backend.php | 2 +- Controller.php | 24 ++++++++++++++++++++++++ Models/QAAnswer.php | 13 +++++++++++++ Models/QAAnswerMapper.php | 1 + Models/QAQuestion.php | 11 +++++++++++ Theme/Backend/qa-dashboard.tpl.php | 16 ++++++++++++++++ 7 files changed, 67 insertions(+), 1 deletion(-) diff --git a/Admin/Installer.php b/Admin/Installer.php index fe6f2bd..8295054 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -110,6 +110,7 @@ class Installer extends InstallerAbstract 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'qa_answer` ( `qa_answer_id` int(11) NOT NULL AUTO_INCREMENT, `qa_answer_status` int(11) NOT NULL, + `qa_answer_accepted` tinyint(1) NOT NULL, `qa_answer_answer` text NOT NULL, `qa_answer_created_by` int(11) NOT NULL, `qa_answer_created_at` datetime NOT NULL, diff --git a/Admin/Routes/Web/Backend.php b/Admin/Routes/Web/Backend.php index 7c467bc..d653b4e 100644 --- a/Admin/Routes/Web/Backend.php +++ b/Admin/Routes/Web/Backend.php @@ -5,7 +5,7 @@ use phpOMS\Router\RouteVerb; return [ '^.*/backend/qa/dashboard.*$' => [ [ - 'dest' => '\Modules\Knowledgebase\Controller:viewQADashboard', + 'dest' => '\Modules\QA\Controller:viewQADashboard', 'verb' => RouteVerb::GET, ], ], diff --git a/Controller.php b/Controller.php index 11188dc..c1d59d7 100644 --- a/Controller.php +++ b/Controller.php @@ -22,6 +22,8 @@ use phpOMS\Module\ModuleAbstract; use phpOMS\Module\WebInterface; use phpOMS\Views\View; +use Modules\QA\Models\QAQuestionMapper; + /** * Task class. * @@ -77,4 +79,26 @@ class Controller extends ModuleAbstract implements WebInterface protected static $dependencies = [ ]; + /** + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public function viewQADashboard(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new View($this->app, $request, $response); + $view->setTemplate('/Modules/QA/Theme/Backend/qa-dashboard'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1006001001, $request, $response)); + + $list = QAQuestionMapper::getNewest(50); + $view->setData('questions', $list); + + return $view; + } + } diff --git a/Models/QAAnswer.php b/Models/QAAnswer.php index 6782488..a5cea60 100644 --- a/Models/QAAnswer.php +++ b/Models/QAAnswer.php @@ -37,6 +37,8 @@ class QAAnswer implements \JsonSerializable private $question = 0; + private $isAccepted = false; + private $createdBy = 0; private $createdAt = null; @@ -80,6 +82,17 @@ class QAAnswer implements \JsonSerializable { $this->status = $status; } + + public function setAccepted(bool $accepted) /* : void */ + { + $this->isAccepted = $accepted; + } + + public function isAccepted() : bool + { + return $this->isAccepted; + } + public function getCreatedBy() : int { return $this->createdBy; diff --git a/Models/QAAnswerMapper.php b/Models/QAAnswerMapper.php index a32aee0..5371463 100644 --- a/Models/QAAnswerMapper.php +++ b/Models/QAAnswerMapper.php @@ -46,6 +46,7 @@ class QAAnswerMapper extends DataMapperAbstract 'qa_answer_answer' => ['name' => 'qa_answer_answer', 'type' => 'string', 'internal' => 'answer'], 'qa_answer_question' => ['name' => 'qa_answer_question', 'type' => 'int', 'internal' => 'question'], 'qa_answer_status' => ['name' => 'qa_answer_status', 'type' => 'int', 'internal' => 'status'], + 'qa_answer_accepted' => ['name' => 'qa_answer_accepted', 'type' => 'int', 'internal' => 'isAccepted'], 'qa_answer_created_by' => ['name' => 'qa_answer_created_by', 'type' => 'int', 'internal' => 'createdBy'], 'qa_answer_created_at' => ['name' => 'qa_answer_created_at', 'type' => 'DateTime', 'internal' => 'createdAt'], ]; diff --git a/Models/QAQuestion.php b/Models/QAQuestion.php index 32ac044..363293b 100644 --- a/Models/QAQuestion.php +++ b/Models/QAQuestion.php @@ -69,6 +69,17 @@ class QAQuestion implements \JsonSerializable $this->language = $language; } + public function isAnswered() : bool + { + foreach($this->answers as $answer) { + if($answer->isAccepted()) { + return true; + } + } + + return false; + } + public function getName() : string { return $this->name; diff --git a/Theme/Backend/qa-dashboard.tpl.php b/Theme/Backend/qa-dashboard.tpl.php index e69de29..2953e70 100644 --- a/Theme/Backend/qa-dashboard.tpl.php +++ b/Theme/Backend/qa-dashboard.tpl.php @@ -0,0 +1,16 @@ +getData('questions'); +?> + +
+
+ +
+ getAnswers()); ?> getName(); ?> + getBadges(); foreach($badges as $badge) : ?> + getName(); ?> + +
+ +
+