From 7b27b6ab26c01f5a2330898c2242e373077aa4e7 Mon Sep 17 00:00:00 2001 From: oliver Date: Fri, 15 Jan 2016 12:29:32 +0100 Subject: [PATCH] implement task editing for Stationtype ?keyword? --- .../keyword/KeywordStationtypeController.inc | 84 +++++++++++++++++-- .../keyword/KeywordStationtypeModel.inc | 23 +++++ stationtypes/keyword/html/edittask.tpl | 29 +++++++ 3 files changed, 129 insertions(+), 7 deletions(-) create mode 100644 stationtypes/keyword/html/edittask.tpl diff --git a/stationtypes/keyword/KeywordStationtypeController.inc b/stationtypes/keyword/KeywordStationtypeController.inc index c2c0736a..cf219885 100644 --- a/stationtypes/keyword/KeywordStationtypeController.inc +++ b/stationtypes/keyword/KeywordStationtypeController.inc @@ -19,6 +19,12 @@ */ class KeywordStationtypeController extends \hhu\z\controllers\StationtypeController { + /** + * Required components + * + * @var array + */ + public $components = array('validation', 'questtypedata'); @@ -27,7 +33,7 @@ * Save the answer of a Character group for a Station. * * @param array $seminary Current Seminary data - * @param array $questgroup Current Questgroup data + * @param array $groupsgroup Current Groups group data * @param array $quest Current Quest data * @param array $station Current Station data * @param array $charactergroup Current Character group data @@ -43,7 +49,7 @@ * Check if answer of a Character group for a Station matches the correct one. * * @param array $seminary Current Seminary data - * @param array $questgroup Current Questgroup data + * @param array $groupsgroup Current Groups group data * @param array $quest Current Quest data * @param array $station Current Station data * @param array $charactergroup Current Character group data @@ -65,17 +71,81 @@ * * Show the task of a Station. * - * @param array $seminary Current Seminary data - * @param array $questgroup Current Questgroup data - * @param array $quest Current Quest data - * @param array $station Current Station data - * @param array $charactergroup Current Character group data + * @param array $seminary Current Seminary data + * @param array $groupsgroup Current Groups group data + * @param array $quest Current Quest data + * @param array $station Current Station data + * @param array $charactergroup Current Character group data */ public function quest($seminary, $groupsgroup, $quest, $station, $charactergroup) { } + /** + * Action: edittask. + * + * Edit the task of a Station. + * + * @param array $seminary Current Seminary data + * @param array $groupsgroup Current Groups group data + * @param array $quest Current Quest data + * @param array $station Current Station data + */ + public function edittask($seminary, $groupsgroup, $quest, $station) + { + // Get right answers + $task = $this->Keyword->getKeywordTask($station['id']); + + // Values + $keyword = $task['keyword_regex']; + $validations = array(); + + // Save data + if($this->request->getRequestMethod() == 'POST' && !is_null($this->request->getPostParam('save'))) + { + // Get params and validate them + $keyword = $this->request->getPostParam('keyword'); + + // Validate regex + $keywordValidation = @preg_match($keyword, '') !== false; + if($keywordValidation !== true) { + $validations = $this->Validation->addValidationResult($validations, 'keyword', 'regex', $keywordValidation); + } + + // Save and redirect + if(empty($validations)) + { + // Save keyword + $this->Keyword->setKeywordForStation( + $this->Auth->getUserId(), + $station['id'], + $keyword + ); + + // Redirect + $this->redirect( + $this->linker->link( + array( + 'station', + $seminary['url'], + $groupsgroup['url'], + $quest['url'], + $station['url'] + ), + 1 + ) + ); + } + } + + + // Pass data to view + $this->set('keyword', $keyword); + $this->set('validations', $validations); + } + + /** diff --git a/stationtypes/keyword/KeywordStationtypeModel.inc b/stationtypes/keyword/KeywordStationtypeModel.inc index 5038c80c..8ba39749 100644 --- a/stationtypes/keyword/KeywordStationtypeModel.inc +++ b/stationtypes/keyword/KeywordStationtypeModel.inc @@ -47,6 +47,29 @@ } + /** + * Set the keyword (regex) for a Station. + * + * @param int $userId ID of creating user + * @param int $stationId ID ot Station to set keyword for + * @param string $keyword Keyword (regex) + */ + public function setKeywordForStation($userId, $stationId, $keyword) + { + $this->db->query( + 'INSERT INTO stationtypes_keyword '. + '(station_id, created_user_id, keyword_regex) '. + 'VALUES '. + '(?, ?, ?) '. + 'ON DUPLICATE KEY UPDATE '. + 'created_user_id = ?, keyword_regex = ?', + 'iisis', + $stationId, $userId, $keyword, + $userId, $keyword + ); + } + + /** * Save Character group’s submitted answer for a station. * diff --git a/stationtypes/keyword/html/edittask.tpl b/stationtypes/keyword/html/edittask.tpl new file mode 100644 index 00000000..5097eb0f --- /dev/null +++ b/stationtypes/keyword/html/edittask.tpl @@ -0,0 +1,29 @@ + + + + +
+
+ + +
+ +