diff --git a/app/controllers/resources/room_request.php b/app/controllers/resources/room_request.php index b6568a4f4eaaa5c8daf11eaef2b9fbaef2515956..c54b6683dc849d206ae05f89083dd77b322a86b1 100644 --- a/app/controllers/resources/room_request.php +++ b/app/controllers/resources/room_request.php @@ -53,7 +53,8 @@ class Resources_RoomRequestController extends AuthenticatedController if (Request::get('reset_filter')) { $this->filter = [ 'marked' => -1, - 'own_requests' => 1 + 'own_requests' => 1, + 'request_status' => 'open' ]; } else { if (Request::option('institut_id')) { @@ -62,6 +63,9 @@ class Resources_RoomRequestController extends AuthenticatedController if (Request::option('semester_id')) { $GLOBALS['user']->cfg->store('MY_COURSES_SELECTED_CYCLE', Request::option('semester_id')); } + if (Request::option('request_status')) { + $this->filter['request_status'] = Request::get('request_status'); + } if (!Semester::find($GLOBALS['user']->cfg->MY_COURSES_SELECTED_CYCLE)) { $GLOBALS['user']->cfg->MY_COURSES_SELECTED_CYCLE = Semester::findCurrent()->id; } @@ -183,7 +187,15 @@ class Resources_RoomRequestController extends AuthenticatedController */ protected function getFilteredRoomRequests() { - $sql = "resource_requests.closed < '1' AND (resource_id IN ( :room_ids) "; + $sql = ''; + if ($this->filter['request_status'] == 'closed') { + $sql .= "resource_requests.closed IN ('1', '2') "; + } elseif ($this->filter['request_status'] == 'denied') { + $sql .= "resource_requests.closed = '3' "; + } else { + $sql .= "resource_requests.closed < '1' "; + } + $sql .= "AND (resource_id IN ( :room_ids) "; $sql_params = [ 'room_ids' => $this->selected_room_ids ]; @@ -408,6 +420,20 @@ class Resources_RoomRequestController extends AuthenticatedController $semester_selector->setSelection($this->filter['semester']); $sidebar->addWidget($semester_selector); + $request_status_selector = new SelectWidget( + _('Status der Anfrage'), + $this->overviewURL(), + 'request_status' + ); + $request_status_selector->setOptions( + [ + 'open' => _('offen'), + 'closed' => _('bearbeitet'), + 'denied' => _('abgelehnt') + ] + ); + $sidebar->addWidget($request_status_selector); + $list = new SelectWidget( _('Veranstaltungstypfilter'), $this->overviewURL(), @@ -608,6 +634,8 @@ class Resources_RoomRequestController extends AuthenticatedController $this->entries_per_page ); $this->requests = $requests; + + $this->request_status = $this->filter['request_status']; } public function index_action($request_id = null) diff --git a/app/views/resources/room_request/overview.php b/app/views/resources/room_request/overview.php index 4a92208d0a53e7f849ee10623b7daf5e81736b42..7e089af3373010ad8ddb4fd041cfc05a068174d6 100644 --- a/app/views/resources/room_request/overview.php +++ b/app/views/resources/room_request/overview.php @@ -3,14 +3,34 @@ action="<?= $controller->link_for('room_request/assign') ?>"> <table class="default sortable-table request-list" data-sortlist="[[8, 0]]"> <caption> - <?= sprintf( - ngettext( - 'Anfragenliste (%d Anfrage)', - 'Anfragenliste (%d Anfragen)', + <? if ($request_status == 'closed') : ?> + <?= sprintf( + ngettext( + 'Anfragenliste (%d bearbeitete Anfrage)', + 'Anfragenliste (%d bearbeitete Anfragen)', + $count_requests + ), $count_requests - ), - $count_requests - ) ?> + ) ?> + <? elseif ($request_status == 'denied') : ?> + <?= sprintf( + ngettext( + 'Anfragenliste (%d abgelehnte Anfrage)', + 'Anfragenliste (%d abgelehnte Anfragen)', + $count_requests + ), + $count_requests + ) ?> + <? else : ?> + <?= sprintf( + ngettext( + 'Anfragenliste (%d Anfrage)', + 'Anfragenliste (%d Anfragen)', + $count_requests + ), + $count_requests + ) ?> + <? endif ?> </caption> <thead> <tr>