From aad38b5375a5491d5032bc14235525005e3f619d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michaela=20Br=C3=BCckner?= <brueckner@data-quest.de> Date: Mon, 22 Aug 2022 15:07:06 +0200 Subject: [PATCH] check for seats, re #1327 --- app/controllers/course/room_requests.php | 33 +++++++++++- .../_new_request_form_footer.php | 40 ++++++++------- .../course/room_requests/find_by_category.php | 1 + .../course/room_requests/find_by_roomname.php | 50 +++++++++++++------ .../course/room_requests/new_request.php | 2 +- .../room_requests/request_first_step.php | 1 - .../room_requests/request_second_step.php | 1 - 7 files changed, 90 insertions(+), 38 deletions(-) delete mode 100644 app/views/course/room_requests/request_first_step.php delete mode 100644 app/views/course/room_requests/request_second_step.php diff --git a/app/controllers/course/room_requests.php b/app/controllers/course/room_requests.php index 4a2849bf9b3..12141cbdc30 100644 --- a/app/controllers/course/room_requests.php +++ b/app/controllers/course/room_requests.php @@ -292,11 +292,12 @@ class Course_RoomRequestsController extends AuthenticatedController { $this->request_id = $request_id; $this->step = 1; + $_SESSION[$request_id]['search_by'] = ''; if (Request::isPost()) { CSRFProtection::verifyUnsafeRequest(); - // either search by room (name) or room category, then go to next step + // either search by room name or room category, then go to next step $this->room_name = Request::get('room_name'); $_SESSION[$request_id]['room_name'] = $this->room_name; $this->search_by_roomname = Request::submitted('search_by_name'); @@ -306,10 +307,13 @@ class Course_RoomRequestsController extends AuthenticatedController // user looks for a special room OR for room within a selected category if ($this->room_name != null && $this->search_by_roomname != null) { + $_SESSION[$request_id]['search_by'] = 'roomname'; $this->redirect( 'course/room_requests/find_by_roomname/' . $this->request_id . '/' . $this->step ); } else if ($this->category_id != null && $this->search_by_category != null ) { + $_SESSION[$request_id]['search_by'] = 'category'; + $this->redirect( 'course/room_requests/find_by_category/' . $this->request_id . '/' . $this->step ); @@ -345,7 +349,6 @@ class Course_RoomRequestsController extends AuthenticatedController // for step 2 after choosing a room if ($step == 2) { - echo"Hallo"; $this->category = ResourceCategory::find($this->selected_room_category_id); $this->available_properties = $this->category->getRequestableProperties(); } @@ -369,6 +372,25 @@ class Course_RoomRequestsController extends AuthenticatedController 'course/room_requests/find_by_roomname/' . $this->request_id . '/' . $this->step ); } + $this->selected_properties = Request::getArray('selected_properties'); + $_SESSION[$request_id]['seats'] = $this->selected_properties['seats']; + + if (Request::submitted('save_request')) { + // we need the seats property with at least one seat, else we get an error + if ($_SESSION[$request_id]['seats'] < 1) { + PageLayout::postError( + _('Es wurde keine Anzahl an gewünschten Sitzplätzen angegeben!') + ); + $this->redirect( + 'course/room_requests/find_by_roomname/' . $this->request_id . '/' . $this->step + ); + } else { + // TODO actually save the request + PageLayout::postSuccess(_('Die Anfrage wurde gespeichert!')); + $this->relocate('course/timesrooms/'); + } + + } } @@ -399,6 +421,13 @@ class Course_RoomRequestsController extends AuthenticatedController 'course/room_requests/find_by_roomname/' . $this->request_id . '/' . $this->step ); + } + + public function save_request_action($request_id) { + $this->request_id = $request_id; + + + } private function getRoomBookingIcons($available_rooms, $request_id) diff --git a/app/views/course/room_requests/_new_request_form_footer.php b/app/views/course/room_requests/_new_request_form_footer.php index c32c567f8a6..68b82db5105 100644 --- a/app/views/course/room_requests/_new_request_form_footer.php +++ b/app/views/course/room_requests/_new_request_form_footer.php @@ -1,25 +1,27 @@ -<footer data-dialog-button> - <? if ($step >= 1) : ?> - <?= \Studip\LinkButton::create( - _('Zurück'), - $controller->link_for('course/room_requests/new_request/' . $request_id), - [ - 'data-dialog' => 'size=big' - ] + <footer data-dialog-button> + <? if ($step >= 1) : ?> + <?= \Studip\LinkButton::create( + _('Zurück'), + $controller->link_for('course/room_requests/new_request/' . $request_id), + ['data-dialog' => 'size=big'] + ) ?> - ) ?> - <?= \Studip\Button::create(_('Weiter'), 'request_second_step') ?> + <? endif ?> - <? endif ?> + <? if ($step == 1 && $_SESSION[$request_id]['search_by'] == 'roomname') : ?> + <?= \Studip\Button::create(_('Weiter'), 'request_second_step') ?> + <? elseif (($step == 1 && $_SESSION[$request_id]['search_by'] == 'category') || ($step == 2 && $_SESSION[$request_id]['search_by'] == 'roomname')) : ?> + <?= \Studip\Button::create(_('Speichern'), 'save_request') ?> + <? endif ?> - <?= \Studip\LinkButton::createCancel( - _('Abbrechen'), - $controller->link_for('course/room_requests/index/' . $course_id), - [ - 'title' => _('Abbrechen') - ] - ) ?> -</footer> + <?= \Studip\LinkButton::createCancel( + _('Abbrechen'), + $controller->link_for('course/room_requests/index/' . $course_id), + [ + 'title' => _('Abbrechen') + ] + ) ?> + </footer> </form> Step: <?= $step ?> diff --git a/app/views/course/room_requests/find_by_category.php b/app/views/course/room_requests/find_by_category.php index c2fdfd61bbf..5eade46fffe 100644 --- a/app/views/course/room_requests/find_by_category.php +++ b/app/views/course/room_requests/find_by_category.php @@ -56,6 +56,7 @@ <!-- ROOM CATEGORY PROPERTIES --> <? if ($available_properties) : ?> <? foreach ($available_properties as $property) : ?> + <?= var_dump($property) ?> <?= $property->toHtmlInput( $selected_properties[$property->name], 'selected_properties[' . htmlReady($property->name) . ']', diff --git a/app/views/course/room_requests/find_by_roomname.php b/app/views/course/room_requests/find_by_roomname.php index 6ffbd57d4d8..eadb0347dc5 100644 --- a/app/views/course/room_requests/find_by_roomname.php +++ b/app/views/course/room_requests/find_by_roomname.php @@ -56,32 +56,54 @@ </span> </label> <? endif ?> - <!-- ROOM CATEGORY PROPERTIES --> - <? if ($available_properties) : ?> - <? foreach ($available_properties as $property) : ?> - <?= $property->toHtmlInput( - $selected_properties[$property->name], - 'selected_properties[' . htmlReady($property->name) . ']', - true, - false - ) ?> - <? endforeach ?> - <? endif ?> + <? if ($step == 2) : ?> + <!-- After choosing a category or room --> + <? if ($available_properties) : ?> + <? foreach ($available_properties as $property) : ?> + <?= $property->toHtmlInput( + $selected_properties[$property->name], + 'selected_properties[' . htmlReady($property->name) . ']', + true, + false + ) ?> + <? endforeach ?> + <? endif ?> + <label> + <?= _('Rüstzeit (in Minuten)') ?> + <input type="number" name="preparation_time" + value="<?= htmlReady($preparation_time) ?>" + min="0" max="<?= htmlReady($max_preparation_time) ?>"> + </label> + <? if ($user_is_global_resource_admin) : ?> + <label> + <input type="checkbox" name="reply_lecturers" value="1" + <?= $reply_lecturers + ? 'checked="checked"' + : '' + ?>> + <?= _('Benachrichtigung bei Ablehnung der Raumanfrage auch an alle Lehrenden der Veranstaltung senden') ?> + </label> + <? endif ?> + <label> + <?= _('Nachricht an die Raumvergabe') ?> + <textarea name="comment" cols="58" rows="4" + placeholder="<?= _('Weitere Wünsche oder Bemerkungen zur angefragten Raumbelegung') ?>"><?= htmlReady($comment) ?></textarea> + </label> + <? endif ?> <? if (!$embedded) : ?> </fieldset> </div> - <div> <fieldset> <legend><?= _('Raumsuche') ?></legend> <label> <?= _('Raumname') ?> <span class="flex-row"> - <input type="text" name="room_name" value="<?= htmlReady($room_name) ?>"> + <input type="text" name="room_name" value="<?= htmlReady($_SESSION[$request_id]['room_name']) ?>"> <?= Icon::create('search', Icon::ROLE_CLICKABLE)->asInput( [ 'name' => 'search_by_name', @@ -89,7 +111,7 @@ 'style' => 'margin-left: 0.2em; margin-top: 0.6em;' ] ) ?> - <? if ($room_name) : ?> + <? if ($_SESSION[$request_id]['room_name']) : ?> <?= Icon::create('refresh', Icon::ROLE_CLICKABLE, ['title' => _('alle Angaben zurücksetzen')])->asInput( [ 'type' => 'image', diff --git a/app/views/course/room_requests/new_request.php b/app/views/course/room_requests/new_request.php index bd10d45a036..9a47c87dc0e 100644 --- a/app/views/course/room_requests/new_request.php +++ b/app/views/course/room_requests/new_request.php @@ -63,7 +63,7 @@ <label> <?= _('Raumname') ?> <span class="flex-row"> - <input type="text" name="room_name" value="<?= htmlReady($room_name) ?>"> + <input type="text" name="room_name" value="<?= htmlReady($_SESSION[$request_id]['room_name']) ?>"> <?= Icon::create('search', Icon::ROLE_CLICKABLE)->asInput( [ 'name' => 'search_by_name', diff --git a/app/views/course/room_requests/request_first_step.php b/app/views/course/room_requests/request_first_step.php deleted file mode 100644 index b3d9bbc7f37..00000000000 --- a/app/views/course/room_requests/request_first_step.php +++ /dev/null @@ -1 +0,0 @@ -<?php diff --git a/app/views/course/room_requests/request_second_step.php b/app/views/course/room_requests/request_second_step.php deleted file mode 100644 index b3d9bbc7f37..00000000000 --- a/app/views/course/room_requests/request_second_step.php +++ /dev/null @@ -1 +0,0 @@ -<?php -- GitLab