diff --git a/Admin/Routes/Web/Backend.php b/Admin/Routes/Web/Backend.php index dde0b78..33dc475 100755 --- a/Admin/Routes/Web/Backend.php +++ b/Admin/Routes/Web/Backend.php @@ -51,7 +51,7 @@ return [ ], ], ], - '^.*/qa/question.*$' => [ + '^.*/qa/question(\?.*|$)$' => [ [ 'dest' => '\Modules\QA\Controller\BackendController:viewQADoc', 'verb' => RouteVerb::GET, diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 3e32e38..12adc63 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -361,16 +361,18 @@ final class ApiController extends Controller ->where('isAccepted', true) ->execute(); - if ($oldNewAccepted->id !== $oldAccepted->id) { + if ($oldAccepted->id !== 0 && + $oldNewAccepted->id !== $oldAccepted->id + ) { $oldUnaccepted = clone $oldAccepted; $oldUnaccepted->isAccepted = !$oldUnaccepted->isAccepted; $this->updateModel($request->header->account, $oldAccepted, $oldUnaccepted, QAAnswerMapper::class, 'answer', $request->getOrigin()); } - $new = $this->updateAnsweredStatusFromRequest($request); + $newAccepted = $this->updateAnsweredStatusFromRequest($request, $newAccepted); $this->updateModel($request->header->account, $oldNewAccepted, $newAccepted, QAAnswerMapper::class, 'answer', $request->getOrigin()); - $this->createStandardUpdateResponse($request, $response, $new); + $this->createStandardUpdateResponse($request, $response, $newAccepted); } /** @@ -401,10 +403,8 @@ final class ApiController extends Controller * * @since 1.0.0 */ - public function updateAnsweredStatusFromRequest(RequestAbstract $request) : QAAnswer + public function updateAnsweredStatusFromRequest(RequestAbstract $request, QAAnswer $answer) : QAAnswer { - /** @var \Modules\QA\Models\QAAnswer $answer */ - $answer = QAAnswerMapper::get()->where('id', (int) $request->getData('id'))->execute(); $answer->isAccepted = !$answer->isAccepted; return $answer; diff --git a/Controller/BackendController.php b/Controller/BackendController.php index be1e90d..9029c8a 100755 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -15,8 +15,11 @@ declare(strict_types=1); namespace Modules\QA\Controller; use Model\SettingMapper; +use Modules\Admin\Models\AccountMapper; +use Modules\Profile\Models\ProfileMapper; use Modules\QA\Models\QAAppMapper; use Modules\QA\Models\QAHelperMapper; +use Modules\QA\Models\QAQuestion; use Modules\QA\Models\QAQuestionMapper; use phpOMS\Asset\AssetType; use phpOMS\Contract\RenderableInterface; @@ -156,8 +159,22 @@ final class BackendController extends Controller $view->setTemplate('/Modules/QA/Theme/Backend/qa-question-create'); $view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1006001001, $request, $response); - /** @var \Modules\QA\Models\QAQuestion $question */ - $question = QAQuestionMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $question = new QAQuestion(); + + $question->createdBy = ProfileMapper::get() + ->with('account') + ->with('image') + ->where('account', $request->header->account) + ->execute(); + + if ($question->createdBy->account->id === 0) { + $question->createdBy->account = AccountMapper::get() + ->where('id', $request->header->account) + ->execute(); + } + + $scores = QAHelperMapper::getAccountScore($question->getAccounts()); + $view->data['scores'] = $scores; $view->data['question'] = $question; return $view; diff --git a/Theme/Backend/Lang/de.lang.php b/Theme/Backend/Lang/de.lang.php index f2b91b4..fc76b3c 100755 --- a/Theme/Backend/Lang/de.lang.php +++ b/Theme/Backend/Lang/de.lang.php @@ -14,8 +14,14 @@ declare(strict_types=1); return ['QA' => [ 'All' => 'Alle', + 'Answer' => 'Antwort', + 'Question' => 'Frage', + 'Vote' => 'Bewerten', + 'Score' => 'Bewertung', + 'Accept' => 'Akzeptieren', 'Badges' => 'Abzeichen', 'List' => 'Liste', + 'Title' => 'Titel', 'Name' => 'Name', 'QA' => 'Q&A', ]]; diff --git a/Theme/Backend/Lang/en.lang.php b/Theme/Backend/Lang/en.lang.php index 3c91f99..c78a33f 100755 --- a/Theme/Backend/Lang/en.lang.php +++ b/Theme/Backend/Lang/en.lang.php @@ -14,8 +14,14 @@ declare(strict_types=1); return ['QA' => [ 'All' => 'All', + 'Answer' => 'Answer', + 'Question' => 'Question', + 'Vote' => 'Vote', + 'Score' => 'Score', + 'Accept' => 'Accept', 'Badges' => 'Badges', 'List' => 'List', + 'Title' => 'Title', 'Name' => 'Name', 'QA' => 'QA', ]]; diff --git a/Theme/Backend/qa-question-create.tpl.php b/Theme/Backend/qa-question-create.tpl.php index e69de29..8aeb471 100755 --- a/Theme/Backend/qa-question-create.tpl.php +++ b/Theme/Backend/qa-question-create.tpl.php @@ -0,0 +1,78 @@ +data['question']; + +/** @var \Modules\QA\Models\QAAnswer[] $answers */ +$answers = $question->getAnswersByScore(); + +/** @var array $scores */ +$scores = $this->data['scores']; + +echo $this->data['nav']->render(); +?> + +