From 90736df4f20711650e778b8168bb515bf0233894 Mon Sep 17 00:00:00 2001 From: oliver Date: Fri, 22 Jan 2016 20:51:23 +0100 Subject: [PATCH] display icons for Character groups Quest Stations --- configs/AppConfig.inc | 4 + .../CharactergroupsquestsController.inc | 20 +++-- ...CharactergroupsqueststationsController.inc | 3 - controllers/MediaController.inc | 77 +++++++++++++++---- models/CharactergroupsqueststationsModel.inc | 27 +++++++ .../media/charactergroupsqueststation.tpl | 1 + views/html/charactergroupsquests/quest.tpl | 37 ++++++--- .../charactergroupsqueststations/station.tpl | 8 +- www/css/desktop.css | 3 + 9 files changed, 144 insertions(+), 36 deletions(-) create mode 100644 views/binary/media/charactergroupsqueststation.tpl diff --git a/configs/AppConfig.inc b/configs/AppConfig.inc index 585f6723..fc5233b3 100644 --- a/configs/AppConfig.inc +++ b/configs/AppConfig.inc @@ -104,6 +104,10 @@ 'charactergroupsquest' => array( 'width' => 80, 'height' => 80 + ), + 'charactergroupsqueststation' => array( + 'width' => 100, + 'height' => 100 ) ); diff --git a/controllers/CharactergroupsquestsController.inc b/controllers/CharactergroupsquestsController.inc index 24fdeafc..23e18f5c 100644 --- a/controllers/CharactergroupsquestsController.inc +++ b/controllers/CharactergroupsquestsController.inc @@ -89,12 +89,20 @@ // Get Stations $stations = null; - if(count(array_intersect(array('admin', 'moderator'), \hhu\z\controllers\SeminaryController::$character['characterroles'])) > 0) { - $stations = $this->Charactergroupsqueststations->getStationsForQuest($quest['id']); - } - elseif(!is_null($charactergroup)) { - $stations = $this->Charactergroupsqueststations->getStationsForQuestAndGroup($quest['id'], $charactergroup['id']); - foreach($stations as &$station) { + $stations = $this->Charactergroupsqueststations->getStationsForQuest($quest['id']); + foreach($stations as &$station) + { + // Icon + if(!is_null($station['stationpicture_id'])) { + $station['picture'] = $this->Media->getSeminaryMediaById($station['stationpicture_id']); + } + + // Entered state + if(!is_null($charactergroup)) { + $station['entered'] = $this->Charactergroupsqueststations->hasCharactergroupEnteredStation( + $station['id'], + $charactergroup['id'] + ); $station['solved'] = $this->Charactergroupsqueststations->hasCharactergroupSolvedStation( $station['id'], $charactergroup['id'] diff --git a/controllers/CharactergroupsqueststationsController.inc b/controllers/CharactergroupsqueststationsController.inc index 6000f874..6a6da2e3 100644 --- a/controllers/CharactergroupsqueststationsController.inc +++ b/controllers/CharactergroupsqueststationsController.inc @@ -124,9 +124,6 @@ // Get Station $station = $this->Charactergroupsqueststations->getStationByUrl($quest['id'], $stationUrl); - if(!is_null($station['stationpicture_id'])) { - $station['picture'] = $this->Media->getSeminaryMediaById($station['stationpicture_id']); - } // Get Character group $charactergroup = null; diff --git a/controllers/MediaController.inc b/controllers/MediaController.inc index 84818c0c..2670c69d 100644 --- a/controllers/MediaController.inc +++ b/controllers/MediaController.inc @@ -25,14 +25,15 @@ * @var array */ public $permissions = array( - 'index' => array('admin', 'moderator', 'user', 'guest'), - 'seminarymoodpic' => array('admin', 'moderator', 'user'), - 'seminarymap' => array('admin', 'moderator', 'user'), - 'seminary' => array('admin', 'moderator', 'user'), - 'avatar' => array('admin', 'moderator', 'user'), - 'achievement' => array('admin', 'moderator', 'user'), - 'charactergroup' => array('admin', 'moderator', 'user'), - 'charactergroupsquest' => array('admin', 'moderator', 'user') + 'index' => array('admin', 'moderator', 'user', 'guest'), + 'seminarymoodpic' => array('admin', 'moderator', 'user'), + 'seminarymap' => array('admin', 'moderator', 'user'), + 'seminary' => array('admin', 'moderator', 'user'), + 'avatar' => array('admin', 'moderator', 'user'), + 'achievement' => array('admin', 'moderator', 'user'), + 'charactergroup' => array('admin', 'moderator', 'user'), + 'charactergroupsquest' => array('admin', 'moderator', 'user'), + 'charactergroupsqueststation' => array('admin', 'moderator', 'user') ); /** * User seminary permissions @@ -40,17 +41,18 @@ * @var array */ public $seminaryPermissions = array( - 'seminary' => array('admin', 'moderator', 'user', 'guest'), - 'achievement' => array('admin', 'moderator', 'user', 'guest'), - 'charactergroup' => array('admin', 'moderator', 'user', 'guest'), - 'charactergroupsquest' => array('admin', 'moderator', 'user', 'guest') + 'seminary' => array('admin', 'moderator', 'user', 'guest'), + 'achievement' => array('admin', 'moderator', 'user', 'guest'), + 'charactergroup' => array('admin', 'moderator', 'user', 'guest'), + 'charactergroupsquest' => array('admin', 'moderator', 'user', 'guest'), + 'charactergroupsqueststation' => array('admin', 'moderator', 'user', 'guest') ); /** * Required models * * @var array */ - public $models = array('seminaries', 'achievements', 'media', 'avatars', 'charactergroups', 'charactergroupsquests', 'map'); + public $models = array('seminaries', 'achievements', 'media', 'avatars', 'charactergroups', 'charactergroupsquests', 'charactergroupsqueststations', 'map'); @@ -403,6 +405,47 @@ } + /** + * Action: charactergroupsqueststation + * + * Display the icon for a Character groups Quest Station. + * + * @throws \nre\exceptions\IdNotFoundException + * @param string $seminaryUrl URL-Title of a Seminary + * @param string $groupsgroupUrl URL-Title of a Character groups-group + * @param string $questUrl URL-Title of a Character groups Quest + * @param string $stationUrl URL-title of Station + */ + public function charactergroupsqueststation($seminaryUrl, $groupsgroupUrl, $questUrl, $stationUrl) + { + // Get seminary + $seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl); + + // Get Character groups-group + $groupsgroup = $this->Charactergroups->getGroupsgroupByUrl($seminary['id'], $groupsgroupUrl); + + // Get Character groups Quests + $quest = $this->Charactergroupsquests->getQuestByUrl($groupsgroup['id'], $questUrl); + + // Get Station + $station = $this->Charactergroupsqueststations->getStationByUrl($quest['id'], $stationUrl); + + // Get media + $media = $this->Media->getSeminaryMediaById($station['stationpicture_id']); + + // Get file + $file = $this->getMediaFile($media, 'charactergroupsqueststation'); + if(is_null($file)) { + return; + } + + + // Pass data to view + $this->set('media', $media); + $this->set('file', $file); + } + + /** @@ -495,6 +538,14 @@ \nre\configs\AppConfig::$media[$action]['height'] ); break; + case 'charactergroupsqueststation': + $file = self::resizeImage( + $media['filename'], + $format, + \nre\configs\AppConfig::$media[$action]['width'], + \nre\configs\AppConfig::$media[$action]['height'] + ); + break; default: throw new ParamsNotValidException($action); break; diff --git a/models/CharactergroupsqueststationsModel.inc b/models/CharactergroupsqueststationsModel.inc index 9169b5b0..8c28865a 100644 --- a/models/CharactergroupsqueststationsModel.inc +++ b/models/CharactergroupsqueststationsModel.inc @@ -184,6 +184,33 @@ } + /** + * Check if a Character group has entered a Station. + * + * @param int $stationId ID of Station to check + * @param int $groupId ID of Character group to check + * @return bool Whether the group has tried the station or not + */ + public function hasCharactergroupEnteredStation($stationId, $groupId) + { + $data = $this->db->query( + 'SELECT created '. + 'FROM charactergroupsqueststations_charactergroups '. + 'WHERE charactergroupsqueststation_id = ? AND charactergroup_id = ? AND status >= ?', + 'iii', + $stationId, + $groupId, + self::STATUS_ENTERED + ); + if(!empty($data)) { + return $data[0]['created']; + } + + + return false; + } + + /** * Check if a Character group has tried to solve a Station. * diff --git a/views/binary/media/charactergroupsqueststation.tpl b/views/binary/media/charactergroupsqueststation.tpl new file mode 100644 index 00000000..0d6fb0df --- /dev/null +++ b/views/binary/media/charactergroupsqueststation.tpl @@ -0,0 +1 @@ + diff --git a/views/html/charactergroupsquests/quest.tpl b/views/html/charactergroupsquests/quest.tpl index 85f4d48d..be47e89f 100644 --- a/views/html/charactergroupsquests/quest.tpl +++ b/views/html/charactergroupsquests/quest.tpl @@ -78,27 +78,42 @@ -
  1. - - - format(new \DateTime($station['created']))?> - format(new \DateTime($station['created']))?> - - + + + + + + + + -
- -

.

- + +
    + +
  1. + + + + + + + + + + + +
  2. + +
diff --git a/views/html/charactergroupsqueststations/station.tpl b/views/html/charactergroupsqueststations/station.tpl index 80c2a5ab..03bf37db 100644 --- a/views/html/charactergroupsqueststations/station.tpl +++ b/views/html/charactergroupsqueststations/station.tpl @@ -13,9 +13,7 @@ -

- @@ -94,8 +96,8 @@ - format(new \DateTime($group['solved']))))?> + diff --git a/www/css/desktop.css b/www/css/desktop.css index 1bc60fc0..ab08792a 100644 --- a/www/css/desktop.css +++ b/www/css/desktop.css @@ -298,6 +298,9 @@ input[type="submit"][disabled]{text-shadow:1px 2px #d48c4e;background:#f9ac69;bo .grpqlist .date{padding:0 15px 0 0;display:block} .grpqlist .xp{display:block} .gqgllry li{display:inline-block} +.grpqslist li{display:inline-block;width:100px;height:100px} +.grpqslist li a{color:#5e5c58} +.grpqslist li i{font-size:100px;padding:0} /** Achievements **/