aboutsummaryrefslogtreecommitdiff
path: root/app/views
diff options
context:
space:
mode:
authorMichaela Brückner <brueckner@data-quest.de>2023-05-25 14:05:36 +0000
committerDavid Siegfried <david.siegfried@uni-vechta.de>2023-05-25 14:05:36 +0000
commit04ad36e3a9845a401d95d35880deda5ea390e9dd (patch)
treea7db552eb2883ec973575ffb535f9b99deb1cf73 /app/views
parent6254b44ac006c19bc571d3c411784fef6829a9aa (diff)
closes #1327biest-1310
Closes #1327 Merge request studip/studip!1147
Diffstat (limited to 'app/views')
-rw-r--r--app/views/course/room_requests/_new_request_form_footer.php41
-rw-r--r--app/views/course/room_requests/_new_request_header.php18
-rw-r--r--app/views/course/room_requests/_request_edit_header.php30
-rw-r--r--app/views/course/room_requests/_request_form_footer.php28
-rw-r--r--app/views/course/room_requests/_request_form_header.php4
-rw-r--r--app/views/course/room_requests/_room_with_properties.php10
-rw-r--r--app/views/course/room_requests/index.php12
-rw-r--r--app/views/course/room_requests/new.php47
-rw-r--r--app/views/course/room_requests/new_request.php (renamed from app/views/course/room_requests/request_start.php)101
-rw-r--r--app/views/course/room_requests/request_find_available_properties.php124
-rw-r--r--app/views/course/room_requests/request_find_matching_rooms.php134
-rw-r--r--app/views/course/room_requests/request_select_properties.php65
-rw-r--r--app/views/course/room_requests/request_select_room.php66
-rw-r--r--app/views/course/room_requests/request_show_summary.php88
-rw-r--r--app/views/course/room_requests/request_summary.php100
-rw-r--r--app/views/course/timesrooms/_cancel_form.php1
-rw-r--r--app/views/course/timesrooms/_regularEvents.php11
-rw-r--r--app/views/course/timesrooms/_roomRequest.php114
-rw-r--r--app/views/course/timesrooms/_roomRequestInfo.php4
-rw-r--r--app/views/course/timesrooms/editDate.php4
-rw-r--r--app/views/course/timesrooms/index.php10
21 files changed, 584 insertions, 428 deletions
diff --git a/app/views/course/room_requests/_new_request_form_footer.php b/app/views/course/room_requests/_new_request_form_footer.php
new file mode 100644
index 0000000..4b84790
--- /dev/null
+++ b/app/views/course/room_requests/_new_request_form_footer.php
@@ -0,0 +1,41 @@
+ <br>
+ <footer data-dialog-button>
+ <? if ($step !== 3) : ?>
+ <?= \Studip\LinkButton::create(
+ _('Zurück auf Anfang'),
+ $controller->url_for('course/room_requests/new_request/' . $request_id),
+ ['data-dialog' => 'size=big']
+ ) ?>
+ <? else: ?>
+ <?= \Studip\LinkButton::create(
+ _('Angaben bearbeiten'),
+ $controller->url_for('course/room_requests/request_find_available_properties/' . $request_id . '/1'),
+ ['data-dialog' => 'size=big']
+ ) ?>
+
+ <? endif ?>
+
+ <? if ($step === 1 || $step === 2) : ?>
+ <? if ($_SESSION[$request_id]['search_by'] !== 'category') : ?>
+ <? \Studip\Button::create(_('Raum auswählen'), 'select_room') ?>
+ <? endif ?>
+ <? endif ?>
+
+ <? if (($step === 1 && $_SESSION[$request_id]['room_category_id'] !== '0')
+ || $step === 2) : ?>
+ <?= \Studip\Button::create(_('Weiter'), 'show_summary') ?>
+ <? endif ?>
+
+ <? if ($step === 3) : ?>
+ <?= \Studip\Button::create(_('Raumanfrage speichern'), 'save_request') ?>
+ <? endif ?>
+
+ <?= \Studip\LinkButton::createCancel(
+ _('Abbrechen'),
+ $controller->url_for('course/room_requests/index/' . $course_id),
+ [
+ 'title' => _('Abbrechen')
+ ]
+ ) ?>
+ </footer>
+</form>
diff --git a/app/views/course/room_requests/_new_request_header.php b/app/views/course/room_requests/_new_request_header.php
new file mode 100644
index 0000000..cd0d381
--- /dev/null
+++ b/app/views/course/room_requests/_new_request_header.php
@@ -0,0 +1,18 @@
+<section class="resources-grid">
+ <section class="contentbox">
+ <header><h1><?= _('Anfrage') ?></h1></header>
+ <section>
+ <?= htmlready($request->getTypeString(), 1, 1) ?>
+ <? if ($request->getType() == 'course'): ?>
+ <?
+ $dates = $request->getDateString(true);
+ ?>
+ <?= tooltipHtmlIcon(implode('<br>', $dates)) ?>
+ <? endif ?>
+ </section>
+ </section>
+ <section class="contentbox">
+ <header><h1><?= _('Bearbeitungsstatus') ?></h1></header>
+ <section><?= htmlReady($request->getStatusText()) ?></section>
+ </section>
+</section>
diff --git a/app/views/course/room_requests/_request_edit_header.php b/app/views/course/room_requests/_request_edit_header.php
deleted file mode 100644
index 89790d6..0000000
--- a/app/views/course/room_requests/_request_edit_header.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<? if ($direct_room_requests_only): ?>
- <?= MessageBox::info(
- _('Geben Sie bitte den gewünschten Raum an. Ihre Raumanfrage wird von der zuständigen Raumvergabe bearbeitet.'),
- [_('<strong>Achtung:</strong> Geben Sie bitte immer die notwendige Sitzplatzanzahl mit an!')]
- )?>
-<? else: ?>
- <?= MessageBox::info(
- _('Geben Sie den gewünschten Raum und/oder Raumeigenschaften an. Ihre Raumanfrage wird von der zuständigen Raumvergabe bearbeitet.'),
- [_('<strong>Achtung:</strong> Um später einen passenden Raum für Ihre Veranstaltung zu bekommen, geben Sie bitte immer die gewünschten Eigenschaften mit an!')]
- )?>
-<? endif ?>
-<section class="resources-grid">
- <section class="contentbox">
- <header><h1><?= _('Anfrage') ?></h1></header>
- <section>
- <?= htmlready($request->getTypeString(), 1, 1) ?>
- <? if ($request->getType() == 'course'): ?>
- <?
- $dates = $request->getDateString(true);
- ?>
- <?= tooltipHtmlIcon(implode('<br>', $dates)) ?>
- <? endif ?>
- </section>
- </section>
- <section class="contentbox">
- <header><h1><?= _('Bearbeitungsstatus') ?></h1></header>
- <section><?= htmlReady($request->getStatusText()) ?></section>
- </section>
-</section>
-
diff --git a/app/views/course/room_requests/_request_form_footer.php b/app/views/course/room_requests/_request_form_footer.php
deleted file mode 100644
index bfcd3e9..0000000
--- a/app/views/course/room_requests/_request_form_footer.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<footer data-dialog-button>
- <? if ($room_search_button) : ?>
- <?= \Studip\Button::create(
- _('Räume suchen'),
- 'search_rooms',
- [
- 'title' => _('Startet die Suche von Räumen anhand der gewählten Eigenschaften.')
- ]
- ) ?>
- <? endif ?>
- <? if ($room_select_button) : ?>
- <?= \Studip\Button::create(_('Raum auswählen'), 'select_room') ?>
- <? endif ?>
- <? if ($save_buttons) : ?>
- <?= \Studip\Button::create(_('Speichern'), 'save_and_close') ?>
- <? endif ?>
- <? if ($select_properties_button) : ?>
- <?= \Studip\Button::create(_('Eigenschaften wählen'), 'select_properties') ?>
- <? endif ?>
- <?= \Studip\LinkButton::createCancel(
- _('Abbrechen'),
- $controller->link_for('course/room_requests/index/' . $course_id),
- [
- 'title' => _('Abbrechen')
- ]
- ) ?>
-</footer>
-</form>
diff --git a/app/views/course/room_requests/_request_form_header.php b/app/views/course/room_requests/_request_form_header.php
deleted file mode 100644
index cdfe7bc..0000000
--- a/app/views/course/room_requests/_request_form_header.php
+++ /dev/null
@@ -1,4 +0,0 @@
-<form method="post" name="room_request" class="default"
- action="<?= $action ?>" <?= Request::isXhr() ? 'data-dialog="size=big"' : ''?>>
- <input type="hidden" name="request_id" value="<?= htmlReady($request_id) ?>">
- <?= CSRFProtection::tokenTag() ?>
diff --git a/app/views/course/room_requests/_room_with_properties.php b/app/views/course/room_requests/_room_with_properties.php
new file mode 100644
index 0000000..13ec336
--- /dev/null
+++ b/app/views/course/room_requests/_room_with_properties.php
@@ -0,0 +1,10 @@
+<? if ($selected_room): ?>
+ <label>
+ <?= _('Ausgewählter Raum') ?>
+ <input type="hidden" name="selected_room_id"
+ value="<?= htmlReady($selected_room->id) ?>">
+ <br>
+
+ <strong><?= htmlReady($selected_room->name) ?></strong>
+ </label>
+<? endif ?>
diff --git a/app/views/course/room_requests/index.php b/app/views/course/room_requests/index.php
index 3f13b05..0f746b8 100644
--- a/app/views/course/room_requests/index.php
+++ b/app/views/course/room_requests/index.php
@@ -14,12 +14,12 @@ echo $flash['message'];
<col style="width: 50px">
</colgroup>
<thead>
- <tr>
- <th><?= _('Art der Anfrage') ?></th>
- <th><?= _('Anfragender') ?></th>
- <th><?= _('Bearbeitungsstatus') ?></th>
- <th></th>
- </tr>
+ <tr>
+ <th><?= _('Art der Anfrage') ?></th>
+ <th><?= _('Anfragender') ?></th>
+ <th><?= _('Bearbeitungsstatus') ?></th>
+ <th></th>
+ </tr>
</thead>
<tbody>
<? foreach ($room_requests as $rr): ?>
diff --git a/app/views/course/room_requests/new.php b/app/views/course/room_requests/new.php
deleted file mode 100644
index 18edbdc..0000000
--- a/app/views/course/room_requests/new.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<form method="POST" class="default" name="new_room_request"
- action="<?= $this->controller->link_for('course/room_requests/request_start') ?>"
- <?= Request::isXhr() ? 'data-dialog="size=big"' : '' ?>>
- <?= CSRFProtection::tokenTag() ?>
-
- <fieldset>
- <legend><?= _("Raumanfrage erstellen") ?></legend>
- <? if (count($options)): ?>
- <label>
- <?= _("Art der Raumanfrage:") ?>
- <select id="new_room_request_type" name="range_str">
- <? foreach ($options as $one) : ?>
- <option value="<?= $one['value'] ?>">
- <?= htmlReady($one['name']) ?>
- </option>
- <? endforeach ?>
- </select>
- </label>
-
- <div class="text-center" data-dialog-button>
- </div>
- <? else : ?>
- <?= MessageBox::info(
- _("In dieser Veranstaltung können keine weiteren Raumanfragen gestellt werden.")
- ) ?>
- <? endif ?>
- </fieldset>
-
- <footer data-dialog-button>
- <? if (count($options)): ?>
- <?= Studip\Button::create(
- _('Erstellen'),
- 'create_room_request'
- ) ?>
- <?= Studip\LinkButton::createCancel(
- _('Abbrechen'),
- $controller->link_for('course/room_requests/index/' . $course_id)
- ) ?>
- <? else: ?>
- <?= Studip\LinkButton::create(
- _('Zurück zur Übersicht'),
- $controller->link_for('course/room_requests/index/' . $course_id),
- ['data-dialog' => 'size=big']
- ) ?>
- <? endif ?>
- </footer>
-</form>
diff --git a/app/views/course/room_requests/request_start.php b/app/views/course/room_requests/new_request.php
index 763ef5a..948db05 100644
--- a/app/views/course/room_requests/request_start.php
+++ b/app/views/course/room_requests/new_request.php
@@ -1,45 +1,17 @@
-<? if (!$embedded) : ?>
- <?= $this->render_partial(
- 'course/room_requests/_request_form_header',
- [
- 'action' => $this->controller->link_for('course/room_requests/request_start/' . $request_id),
- 'request_id' => $request_id
- ]
- ) ?>
- <?= $this->render_partial(
- 'course/room_requests/_request_edit_header',
- ['request' => $request]
- ) ?>
-<? endif ?>
-<section class="resources-grid">
- <div>
- <fieldset>
- <legend><?= _('Raum suchen') ?></legend>
- <label>
- <?= _('Raumname') ?>
- <span class="flex-row">
- <input type="text" name="room_name" value="<?= htmlReady($room_name) ?>">
- <?= Icon::create('search', Icon::ROLE_CLICKABLE)->asInput(
- [
- 'name' => 'search_by_name',
- 'class' => 'text-bottom',
- 'style' => 'margin-left: 0.2em; margin-top: 0.6em;'
- ]
- ) ?>
- <? if ($room_name) : ?>
- <?= Icon::create('refresh', Icon::ROLE_CLICKABLE, ['title' => _('alle Angaben zurücksetzen')])->asInput(
- [
- 'type' => 'image',
- 'class' => 'text-bottom',
- 'name' => 'reset_category',
- 'style' => 'margin-left: 0.2em; margin-top: 0.6em;'
- ]
- ) ?>
- <? endif?>
- </span>
- </label>
+<form method="post" name="room_request" class="default"
+ action="<?= $controller->link_for('course/room_requests/request_first_step/' . $request_id) ?>"
+ <?= Request::isXhr() ? 'data-dialog="size=big"' : ''?>>
+ <input type="hidden" name="request_id" value="<?= htmlReady($request_id) ?>">
+ <?= CSRFProtection::tokenTag() ?>
+
+ <?= $this->render_partial('course/room_requests/_new_request_header') ?>
+
+ <section class="resources-grid">
+ <div>
+ <fieldset>
+ <legend><?= _('Suche nach Raumkategorie und Eigenschaften') ?></legend>
+
<? if ($available_room_categories): ?>
- <strong><p><?= _('Wünschbare Eigenschaften') ?></p></strong>
<label>
<?= _('Raumkategorie') ?>
<span class="flex-row">
@@ -47,16 +19,17 @@
<option value=""><?= _('bitte auswählen') ?></option>
<? foreach ($available_room_categories as $rc): ?>
<option value="<?= htmlReady($rc->id) ?>"
- <?= ($category_id == $rc->id)
- ? 'selected="selected"'
+ <?= $_SESSION[$request_id]['room_category'] === $rc->id
+ ? 'selected'
: '' ?>>
<?= htmlReady($rc->name) ?>
</option>
<? endforeach ?>
</select>
<? if ($category) : ?>
- <?= Icon::create('refresh', Icon::ROLE_CLICKABLE, ['title' => _('alle Angaben zurücksetzen')])->asInput(
+ <?= Icon::create('decline')->asInput(
[
+ 'title' => _('alle Angaben zurücksetzen'),
'type' => 'image',
'class' => 'text-bottom',
'name' => 'reset_category',
@@ -64,11 +37,12 @@
]
) ?>
<? else : ?>
- <?= Icon::create('accept', Icon::ROLE_CLICKABLE, ['title' => _('Raumtyp auswählen')])->asInput(
+ <?= Icon::create('accept')->asInput(
[
+ 'title' => _('Raumtyp auswählen'),
'type' => 'image',
'class' => 'text-bottom',
- 'name' => 'select_properties',
+ 'name' => 'search_by_category',
'value' => _('Raumtyp auswählen'),
'style' => 'margin-left: 0.2em; margin-top: 0.6em;'
]
@@ -80,6 +54,39 @@
<? if (!$embedded) : ?>
</fieldset>
</div>
+
+ <div>
+ <fieldset>
+ <legend><?= _('Raumsuche') ?></legend>
+ <label>
+ <?= _('Raumname') ?>
+ <span class="flex-row">
+ <input type="text" name="room_name" value="<?= htmlReady($_SESSION[$request_id]['room_name']) ?>">
+ <?= Icon::create('search')->asInput(
+ [
+ 'title' => _('Räume suchen'),
+ 'name' => 'search_by_name',
+ 'class' => 'text-bottom',
+ 'style' => 'margin-left: 0.2em; margin-top: 0.6em;'
+ ]
+ ) ?>
+ <? if ($room_name) : ?>
+ <?= Icon::create('decline')->asInput(
+ [
+ 'title' => _('alle Angaben zurücksetzen'),
+ 'type' => 'image',
+ 'class' => 'text-bottom',
+ 'name' => 'reset_name',
+ 'style' => 'margin-left: 0.2em; margin-top: 0.6em;'
+ ]
+ ) ?>
+ <? endif?>
+ </span>
+ </label>
+
+ </fieldset>
+
+ </div>
</section>
-<?= $this->render_partial('course/room_requests/_request_form_footer') ?>
+<?= $this->render_partial('course/room_requests/_new_request_form_footer', ['step' => $step]) ?>
<? endif ?>
diff --git a/app/views/course/room_requests/request_find_available_properties.php b/app/views/course/room_requests/request_find_available_properties.php
new file mode 100644
index 0000000..ea0767f
--- /dev/null
+++ b/app/views/course/room_requests/request_find_available_properties.php
@@ -0,0 +1,124 @@
+<form method="post" name="room_request" class="default"
+ action="<?= $controller->link_for('course/room_requests/request_check_properties/' . $request_id . '/' . $this->step) ?>"
+ <?= Request::isXhr() ? 'data-dialog="size=big"' : ''?>>
+ <input type="hidden" name="request_id" value="<?= htmlReady($request_id) ?>">
+ <?= CSRFProtection::tokenTag() ?>
+
+ <?= $this->render_partial('course/room_requests/_new_request_header') ?>
+
+ <section class="resources-grid">
+ <div>
+ <fieldset class="request-fieldset">
+ <legend><?= _('Wünschbare Eigenschaften') ?></legend>
+
+ <? if ($step === 1 || $step === 2) : ?>
+ <?= $this->render_partial('course/room_requests/_room_with_properties') ?>
+ <? endif ?>
+
+ <? if ($available_room_categories): ?>
+ <label>
+ <?= _('Raumkategorie') ?>
+ <span class="flex-row">
+ <select name="category_id" >
+ <option value="0"><?= _('bitte auswählen') ?></option>
+ <? foreach ($available_room_categories as $rc): ?>
+ <option value="<?= htmlReady($rc->id) ?>"
+ <?= $room_category_id === $rc->id
+ ? 'selected'
+ : '' ?>>
+ <?= htmlReady($rc->name) ?>
+ </option>
+ <? endforeach ?>
+ </select>
+ <?= Icon::create('accept')->asInput(
+ [
+ 'title' => _('Raumtyp auswählen'),
+ 'type' => 'image',
+ 'class' => 'text-bottom',
+ 'name' => 'search_by_category',
+ 'value' => _('Raumtyp auswählen'),
+ 'style' => 'margin-left: 0.2em; margin-top: 0.6em;'
+ ]
+ ) ?>
+ <? if ($category) : ?>
+ <?= Icon::create('decline')->asInput(
+ [
+ 'title' => _('alle Angaben zurücksetzen'),
+ 'type' => 'image',
+ 'class' => 'text-bottom',
+ 'name' => 'reset_category',
+ 'style' => 'margin-left: 0.2em; margin-top: 0.6em;'
+ ]
+ ) ?>
+ <? endif ?>
+ </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 ?>
+
+ <div>
+ <?= \Studip\Button::create(_('Räume suchen'), 'search_rooms') ?>
+ </div>
+ <? endif ?>
+
+ </fieldset>
+ </div>
+
+ <div>
+ <fieldset class="request-fieldset">
+ <legend><?= _('Raumsuche') ?></legend>
+ <label>
+ <?= _('Raumname') ?>
+ <span class="flex-row">
+ <input type="text" name="room_name" value="<?= htmlReady($room_name) ?>" >
+ <?= Icon::create('search')->asInput(
+ [
+ 'title' => _('Räume suchen'),
+ 'name' => 'search_by_name',
+ 'class' => 'text-bottom',
+ 'style' => 'margin-left: 0.2em; margin-top: 0.6em;'
+ ]
+ ) ?>
+ </span>
+ </label>
+ <? if ($available_rooms) : ?>
+ <label><strong><?= _('Passende Räume') ?></strong>
+ <section class="selectbox" id="room_select">
+ <? foreach ($available_rooms as $room): ?>
+ <div class="flex-row">
+ <label class="horizontal">
+ <?= $available_room_icons[$room->id] ?>
+ <input type="radio" name="selected_room_id"
+ data-activates="button[type='submit'][name='select_room']"
+ value="<?= htmlReady($room->id) ?>"
+ <? if ($_SESSION[$request_id]['room_id'] === $room->id) echo 'checked' ?>>
+ <?= htmlReady(mila($room->name, 50)) . ' (' . $room['category']->name . ')'?>
+ <? if ($room->properties): ?>
+ <? $property_names = $room->getInfolabelProperties()
+ ->pluck('fullname') ?>
+ <?= tooltipIcon(implode("\n", $property_names)) ?>
+ <? endif ?>
+ </label>
+ </div>
+ <? endforeach ?>
+ </section>
+ </label>
+ <?= \Studip\Button::create(_('Raum auswählen'), 'select_room') ?>
+ <? else : ?>
+ <? endif ?>
+ </fieldset>
+
+ </div>
+ </section>
+
+<?= $this->render_partial('course/room_requests/_new_request_form_footer', ['step' => $step, 'search_by' => 'category']) ?>
diff --git a/app/views/course/room_requests/request_find_matching_rooms.php b/app/views/course/room_requests/request_find_matching_rooms.php
new file mode 100644
index 0000000..a474ab2
--- /dev/null
+++ b/app/views/course/room_requests/request_find_matching_rooms.php
@@ -0,0 +1,134 @@
+<form method="post" name="room_request" class="default"
+ action="<?= $controller->link_for('course/room_requests/request_find_matching_rooms/' . $request_id . '/' . $this->step) ?>"
+ <?= Request::isXhr() ? 'data-dialog="size=big"' : ''?>>
+ <input type="hidden" name="request_id" value="<?= htmlReady($request_id) ?>">
+ <?= CSRFProtection::tokenTag() ?>
+
+ <?= $this->render_partial('course/room_requests/_new_request_header') ?>
+
+ <section class="resources-grid">
+ <div>
+ <fieldset class="request-fieldset">
+ <legend><?= _('Wünschbare Eigenschaften') ?></legend>
+
+ <? if ($step === 1 || $step === 2) : ?>
+ <?= $this->render_partial('course/room_requests/_room_with_properties') ?>
+ <? endif ?>
+
+ <? if ($available_room_categories): ?>
+ <label>
+ <?= _('Raumkategorie') ?>
+ <span class="flex-row">
+ <select name="category_id" >
+ <option value="0"><?= _('bitte auswählen') ?></option>
+ <? foreach ($available_room_categories as $rc): ?>
+ <option value="<?= htmlReady($rc->id) ?>"
+ <?= $_SESSION[$request_id]['room_category_id'] === $rc->id
+ ? 'selected'
+ : '' ?>>
+ <?= htmlReady($rc->name) ?>
+ </option>
+ <? endforeach ?>
+ </select>
+ <?= Icon::create('accept')->asInput(
+ [
+ 'title' => _('Raumtyp auswählen'),
+ 'type' => 'image',
+ 'class' => 'text-bottom',
+ 'name' => 'select_properties',
+ 'value' => _('Raumtyp auswählen'),
+ 'style' => 'margin-left: 0.2em; margin-top: 0.6em;'
+ ]
+ ) ?>
+
+ <? if ($category) : ?>
+ <?= Icon::create('decline')->asInput(
+ [
+ 'title' => _('alle Angaben zurücksetzen'),
+ 'type' => 'image',
+ 'class' => 'text-bottom',
+ 'name' => 'reset_category',
+ 'style' => 'margin-left: 0.2em; margin-top: 0.6em;'
+ ]
+ ) ?>
+ <? endif ?>
+ </span>
+ </label>
+ <? 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,
+ false
+ ) ?>
+ <? endforeach ?>
+ <? endif ?>
+
+ <?= \Studip\Button::create(_('Räume suchen'), 'search_rooms') ?>
+
+ <? endif ?>
+
+ <? if (!$embedded) : ?>
+ </fieldset>
+
+ </div>
+
+ <div>
+ <fieldset class="request-fieldset">
+ <legend><?= _('Raumsuche') ?></legend>
+ <label>
+ <?= _('Raumname') ?>
+ <span class="flex-row">
+ <input type="text" name="room_name" value="<?= htmlReady($_SESSION[$request_id]['room_name']) ?>">
+ <?= Icon::create('search')->asInput(
+ [
+ 'title' => _('Räume suchen'),
+ 'name' => 'search_by_name',
+ 'class' => 'text-bottom',
+ 'style' => 'margin-left: 0.2em; margin-top: 0.6em;'
+ ]
+ ) ?>
+ </span>
+ </label>
+ <? if ($available_rooms) : ?>
+ <label>
+ <strong><?= _('Passende Räume') ?></strong>
+ <section class="selectbox" id="room_selection">
+ <? foreach ($available_rooms as $room): ?>
+ <div class="flex-row">
+ <label class="horizontal">
+ <?= $available_room_icons[$room->id] ?>
+ <input type="radio" name="selected_room_id"
+ data-activates="button[type='submit'][name='select_room']"
+ value="<?= htmlReady($room->id) ?>"
+ <? if ($_SESSION[$request_id]['room_id'] === $room->id) echo 'checked' ?>>
+ <?= htmlReady(mila($room->name, 60)) . ' (' . $room['category']->name . ')'?>
+ <? if ($room->properties): ?>
+ <? $property_names = $room->getInfolabelProperties()
+ ->pluck('fullname') ?>
+ <?= tooltipIcon(implode("\n", $property_names)) ?>
+ <? endif ?>
+ </label>
+ </div>
+ <? endforeach ?>
+ </section>
+ </label>
+ <?= \Studip\Button::create(_('Raum auswählen'), 'select_room') ?>
+
+ <? else : ?>
+ <?= MessageBox::info(_('Es wurden keine passenden Räume gefunden!')) ?>
+ <? endif ?>
+
+ </fieldset>
+
+ </div>
+ </section>
+
+ <?= $this->render_partial('course/room_requests/_new_request_form_footer', ['step' => $step, 'search_by' => 'roomname']) ?>
+<? endif ?>
diff --git a/app/views/course/room_requests/request_select_properties.php b/app/views/course/room_requests/request_select_properties.php
deleted file mode 100644
index de45b11..0000000
--- a/app/views/course/room_requests/request_select_properties.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<? if (empty($embedded)) : ?>
- <?= $this->render_partial(
- 'course/room_requests/_request_form_header',
- [
- 'action' => $this->controller->link_for('course/room_requests/request_select_properties/' . $request_id),
- 'request_id' => $request_id
- ]
- ) ?>
- <?= $this->render_partial(
- 'course/room_requests/_request_edit_header',
- ['request' => $request]
- ) ?>
- <?= $this->render_partial(
- 'course/room_requests/request_start',
- ['embedded' => true]
- ) ?>
-<? endif ?>
-
-<? 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>
-
-<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>
-
-
- <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>
-
-<? if (empty($embedded)) : ?>
- </div>
- </section>
- <?= $this->render_partial(
- 'course/room_requests/_request_form_footer',
- [
- 'room_search_button' => true,
- 'save_buttons' => true,
- 'room_select_button' => false,
- 'select_properties_button' => false
- ]
- ) ?>
-<? endif ?>
diff --git a/app/views/course/room_requests/request_select_room.php b/app/views/course/room_requests/request_select_room.php
deleted file mode 100644
index 752ad98..0000000
--- a/app/views/course/room_requests/request_select_room.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<? if (empty($embedded)) : ?>
- <?= $this->render_partial(
- 'course/room_requests/_request_form_header',
- [
- 'action' => $this->controller->link_for('course/room_requests/request_select_room/' . $request_id),
- 'request_id' => $request_id
- ]
- ) ?>
- <?= $this->render_partial(
- 'course/room_requests/_request_edit_header',
- ['request' => $request]
- ) ?>
- <?= $this->render_partial(
- 'course/room_requests/request_start',
- ['embedded' => true]
- ) ?>
- <? if (($category instanceof ResourceCategory) && !$direct_room_requests_only): ?>
- <?= $this->render_partial(
- 'course/room_requests/request_select_properties',
- ['embedded' => true]
- ) ?>
- <? endif ?>
-<? endif ?>
-</div>
-
-<div>
-<? if ($available_rooms) : ?>
- <section class="contentbox">
- <header><h1><?= _('Passende Räume') ?></h1></header>
- <section class="selectbox">
- <fieldset>
- <? foreach ($available_rooms as $room): ?>
- <div class="flex-row">
- <label class="horizontal">
- <?= $available_room_icons[$room->id] ?>
- <input type="radio" name="selected_room_id"
- data-activates="button[type='submit'][name='select_room']"
- value="<?= htmlReady($room->id) ?>">
- <?= htmlReady(mb_substr($room->name, 0, 50)); ?>
- <? if ($room->properties): ?>
- <? $property_names = $room->getInfolabelProperties()
- ->pluck('fullname') ?>
- <?= tooltipIcon(implode("\n", $property_names)) ?>
- <? endif ?>
- </label>
- </div>
- <? endforeach ?>
- </fieldset>
- </section>
- </section>
- <? else : ?>
- <?= MessageBox::info(_('Es wurden keine passenden Räume gefunden!')) ?>
- <? endif ?>
- </div>
-</section>
-<? if (empty($embedded)) : ?>
- <?= $this->render_partial(
- 'course/room_requests/_request_form_footer',
- [
- 'room_search_button' => true,
- 'room_select_button' => true,
- 'save_buttons' => true,
- 'select_properties_button' => false
- ]
- ) ?>
-<? endif ?>
diff --git a/app/views/course/room_requests/request_show_summary.php b/app/views/course/room_requests/request_show_summary.php
new file mode 100644
index 0000000..732e2a4
--- /dev/null
+++ b/app/views/course/room_requests/request_show_summary.php
@@ -0,0 +1,88 @@
+<form method="post" name="room_request" class="default"
+ action="<?= $controller->link_for('course/room_requests/store_request/' . $request_id) ?>"
+ <?= Request::isXhr() ? 'data-dialog="size=big"' : ''?>>
+ <input type="hidden" name="request_id" value="<?= htmlReady($request_id) ?>">
+ <?= CSRFProtection::tokenTag() ?>
+
+
+ <?= $this->render_partial('course/room_requests/_new_request_header') ?>
+ <section class="resources-grid">
+ <div>
+ <fieldset>
+ <legend>
+ <?= _('Zusammenfassung') ?>
+ </legend>
+ <label>
+ <?= _('Ausgewählte Raumkategorie') ?>
+ <input type="hidden" name="selected_room_id"
+ value="<?= htmlReady($selected_room->id) ?>">
+ <br>
+
+ <strong><?= htmlReady($selected_room_category->name) ?></strong>
+ </label>
+
+ <label>
+ <?= _('Ausgewählter Raum') ?>
+ <? if ($selected_room): ?>
+ <input type="hidden" name="selected_room_id"
+ value="<?= htmlReady($selected_room->id) ?>">
+ <br>
+
+ <strong><?= htmlReady($selected_room->name) ?></strong>
+ <? else : ?>
+ <br>
+
+ <strong><?= _('Es wurde kein spezifischer Raum gewählt.') ?></strong>
+ <? endif ?>
+ </label>
+
+ <? foreach ($available_properties as $property) : ?>
+ <? foreach ($selected_properties as $key => $value) : ?>
+ <? if ($property->name === $key) : ?>
+ <?= $property->toHtmlInput(
+ $selected_properties[$property->name],
+ 'selected_properties[' . htmlReady($property->name) . ']',
+ true,
+ false,
+ true
+ ) ?>
+ <? endif ?>
+ <? endforeach ?>
+ <? endforeach ?>
+
+ </fieldset>
+ </div>
+ <div>
+ <fieldset>
+ <legend>
+ <?= _('Sonstiges') ?>
+ </legend>
+ <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'
+ : ''
+ ?>>
+ <?= _('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>
+
+ </fieldset>
+ </div>
+
+ </section>
+ <?= $this->render_partial('course/room_requests/_new_request_form_footer', ['step' => $step, 'search_by' => 'roomname']) ?>
diff --git a/app/views/course/room_requests/request_summary.php b/app/views/course/room_requests/request_summary.php
deleted file mode 100644
index 4108deb..0000000
--- a/app/views/course/room_requests/request_summary.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<form method="post" name="room_request" class="default"
- action="<?= $this->controller->link_for('course/room_requests/request_summary/' . $request_id) ?>">
- <input type="hidden" name="request_id" value="<?= htmlReady($request_id) ?>">
- <?= $this->render_partial(
- 'course/room_requests/_request_edit_header',
- ['request' => $request]
- ) ?>
- <?= CSRFProtection::tokenTag() ?>
- <section class="resources-grid">
- <div>
- <fieldset>
- <legend><?= _('Ausgewählter Raum') ?></legend>
- <? if (!empty($selected_room)): ?>
- <input type="hidden" name="selected_room_id"
- value="<?= htmlReady($selected_room->id) ?>">
- <input type="hidden" name="confirmed_selected_room_id"
- value="<?= htmlReady($selected_room->id) ?>">
- <?= htmlReady($selected_room->name) ?>
- <? if ($selected_room->properties): ?>
- <? $property_names = $selected_room->properties
- ->findBy('info_label', 1)
- ->findBy('state', '', '!=')
- ->pluck('fullname') ?>
- <?= tooltipIcon(
- implode("\n", $property_names)
- ) ?>
- <? endif ?>
- <?= Studip\Button::create(
- _('Anderen Raum wählen'),
- 'select_other_room'
- ) ?>
- <? else: ?>
- <?= MessageBox::info(
- _('Es wurde kein konkreter Raum ausgewählt!')
- ) ?>
- <?= Studip\Button::create(
- _('Eigenschaften neu wählen'),
- 'select_properties'
- ) ?>
- <? endif ?>
- <? if ($request->properties): ?>
- <? foreach ($request->properties as $property): ?>
- <? if (!in_array($property->name, ['seats'])): ?>
- <dt><?= htmlReady($property->display_name) ?></dt>
- <dd><?= htmlReady($property->__toString()) ?></dd>
- <? endif ?>
- <? endforeach ?>
- <? endif ?>
- <? if ($request->category): ?>
- <dt><?= _('Gewünschter Raumtyp') ?>:</dt>
- <dd><?= htmlReady($request->category->name) ?></dd>
- <? endif ?>
- <label>
- <?= _('Erwartete Anzahl an Teilnehmenden') ?>:
- <input type="number" name="seats"
- value="<?= htmlReady($seats) ?>"
- min="1">
- </label>
- <label>
- <?= _('Rüstzeit (in Minuten)') ?>
- <input type="number" name="preparation_time"
- value="<?= htmlReady($preparation_time) ?>"
- min="0" max="<?= htmlReady($max_preparation_time) ?>">
- </label>
- <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>
- </fieldset>
- </div>
- <div>
- <fieldset>
- <legend><?= _('Nachricht an die Raumvergabe') ?></legend>
- <textarea name="comment" cols="58" rows="4"
- placeholder="<?= _('Weitere Wünsche oder Bemerkungen zur angefragten Raumbelegung') ?>"><?= htmlReady($comment) ?></textarea>
- </fieldset>
- </div>
- </section>
- <footer data-dialog-button>
- <?= \Studip\Button::create(
- _('Speichern'),
- 'save'
- ) ?>
- <?= \Studip\Button::create(
- _('Speichern und zurück zur Übersicht'),
- 'save_and_close'
- ) ?>
- <?= \Studip\LinkButton::createCancel(
- _('Abbrechen'),
- $controller->link_for('course/room_requests/index/' . $course_id),
- [
- 'title' => _('Abbrechen')
- ]
- ) ?>
- </footer>
-</form>
diff --git a/app/views/course/timesrooms/_cancel_form.php b/app/views/course/timesrooms/_cancel_form.php
index 8a2b706..eaadaf1 100644
--- a/app/views/course/timesrooms/_cancel_form.php
+++ b/app/views/course/timesrooms/_cancel_form.php
@@ -17,3 +17,4 @@ if (isset($termin) && $termin instanceof CourseExDate) {
<input type="checkbox" id="cancel_send_message" name="cancel_send_message" value="1">
<?= _('Benachrichtigung über ausfallende Termine an alle Teilnehmenden verschicken') ?>
</label>
+
diff --git a/app/views/course/timesrooms/_regularEvents.php b/app/views/course/timesrooms/_regularEvents.php
index f2b1829..baaa2d8 100644
--- a/app/views/course/timesrooms/_regularEvents.php
+++ b/app/views/course/timesrooms/_regularEvents.php
@@ -89,18 +89,19 @@
<? if (Config::get()->RESOURCES_ALLOW_ROOM_REQUESTS) : ?>
<? $actionMenu->addLink(
$controller->url_for(
- 'course/room_requests/request_start/',
+ 'course/room_requests/new_request/',
[
- 'range' => 'cycle',
- 'range_id' => $metadate_id
+ 'cid' => $course->id,
+ 'range_str' => 'cycle',
+ 'range_id' => $metadate_id
]
),
- _('Raumanfrage erstellen'),
+ _('Neue Raumanfrage'),
Icon::create(
'room-request',
Icon::ROLE_CLICKABLE,
[
- 'title' => _('Raumanfrage erstellen'),
+ 'title' => _('Neue Raumanfrage'),
'style' => 'vertical-align: middle;'
]
),
diff --git a/app/views/course/timesrooms/_roomRequest.php b/app/views/course/timesrooms/_roomRequest.php
index 3eecb3c..9f80e96 100644
--- a/app/views/course/timesrooms/_roomRequest.php
+++ b/app/views/course/timesrooms/_roomRequest.php
@@ -1,12 +1,7 @@
-<?php
-$global_requests = $course->room_requests->filter(function (RoomRequest $request) {
- return $request->closed < 2 && !$request->termin_id;
-});
-?>
-<section class="contentbox">
+<section class="contentbox" id="request">
<header>
<h1>
- <?= _('Raumanfrage für die gesamte Veranstaltung') ?>
+ <?= _('Raumanfragen für die gesamte Veranstaltung') ?>
</h1>
<nav>
@@ -14,7 +9,7 @@ $global_requests = $course->room_requests->filter(function (RoomRequest $request
_('Hier können Sie für die gesamte Veranstaltung, also für alle regelmäßigen und unregelmäßigen Termine, '
. 'eine Raumanfrage erstellen.')
) ?>
- <a class="link-add" href="<?= $controller->url_for('course/room_requests/request_start',
+ <a class="link-add" href="<?= $controller->link_for('course/room_requests/new_request',
[
'cid' => $course->id,
'range_str' => 'course',
@@ -29,13 +24,102 @@ $global_requests = $course->room_requests->filter(function (RoomRequest $request
</nav>
</header>
+ <?= $flash['message'] ?>
+
+ <? if (count($room_requests)) : ?>
<section>
- <? if (count($global_requests) > 0): ?>
- <p><?= _('Für diese Veranstaltung liegt eine offene Raumanfrage vor') ?></p>
- <?= Studip\LinkButton::create(_('Raumanfragen anzeigen'),
- URLHelper::getURL('dispatch.php/course/room_requests/index/' . $course->getId())) ?>
- <? else: ?>
- <p><?= _('Keine Raumanfrage vorhanden') ?></p>
- <? endif ?>
+ <table class="default sortable-table">
+ <colgroup>
+ <col style="width: 40%">
+ <col style="width: 20%">
+ <col>
+ <col style="width: 50px">
+ </colgroup>
+ <thead>
+ <tr class="sortable">
+ <th data-sort="text"><?= _('Art der Anfrage') ?></th>
+ <th data-sort="text"><?= _('Anfragender') ?></th>
+ <th data-sort="text"><?= _('Bearbeitungsstatus') ?></th>
+ <th></th>
+ </tr>
+ </thead>
+ <tbody>
+ <? foreach ($room_requests as $rr): ?>
+ <tr>
+ <td>
+ <?= htmlReady($rr->getTypeString(), 1, 1) ?>
+ </td>
+ <td>
+ <?= htmlReady($rr->user ? $rr->user->getFullName() : '') ?>
+ </td>
+ <td>
+ <?= htmlReady($rr->getStatusText()) ?>
+ </td>
+ <td class="actions">
+ <a class="load-in-new-row"
+ href="<?= $controller->link_for('course/room_requests/info/' . $rr->id) ?>"
+ aria-expanded="false">
+ <?= Icon::create('info')->asImg(['title' => _('Weitere Informationen einblenden')]) ?>
+ </a>
+ <? $params = [] ?>
+ <? $dialog = []; ?>
+ <? if (Request::isXhr()) : ?>
+ <? $params['asDialog'] = true; ?>
+ <? $dialog['data-dialog'] = 'size=big' ?>
+ <? endif ?>
+
+ <? $actionMenu = ActionMenu::get()->setContext($rr->getTypeString()) ?>
+ <? $actionMenu->addLink(
+ $controller->url_for('course/room_requests/request_show_summary/' . $rr->id, ['clear_cache' => 1]),
+ _('Diese Anfrage bearbeiten'),
+ Icon::create('edit'),
+ ['title' => _('Diese Anfrage bearbeiten'), 'data-dialog' => 'size=big']
+ ) ?>
+
+ <?php
+ if ($rr->room && !$user_has_permissions) {
+ $user_has_permissions = $rr->room->userHasPermission($current_user, 'admin');
+ }
+ ?>
+
+ <? if ($user_has_permissions && !$rr->closed): ?>
+ <? $actionMenu->addLink(
+ URLHelper::getURL(
+ 'dispatch.php/resources/room_request/resolve/' . $rr->id,
+ [
+ 'reload-on-close' => 1,
+ 'single-request' => 1
+ ]
+ ),
+ _('Diese Anfrage selbst auflösen'),
+ Icon::create('admin'),
+ ['title' => _('Diese Anfrage selbst auflösen')],
+ ['data-dialog' => '1']
+ ) ?>
+ <? endif ?>
+ <? $actionMenu->addLink(
+ $controller->url_for('course/room_requests/delete/' . $rr->id),
+ _('Diese Anfrage löschen'),
+ Icon::create('trash'),
+ ['title' => _('Diese Anfrage löschen')]
+ ) ?>
+ <?= $actionMenu->render() ?>
+ </td>
+ </tr>
+ <? endforeach ?>
+ <? if ($request_id === $rr->id) : ?>
+ <tr>
+ <td colspan="4">
+ <?= $this->render_partial('course/room_requests/_request.php', ['request' => $rr]); ?>
+ </td>
+ </tr>
+ <? endif ?>
+ </tbody>
+ </table>
</section>
+ <? else : ?>
+ <?= MessageBox::info(_('Zu dieser Veranstaltung sind noch keine Raumanfragen vorhanden.')) ?>
+ <? endif ?>
+
+
</section>
diff --git a/app/views/course/timesrooms/_roomRequestInfo.php b/app/views/course/timesrooms/_roomRequestInfo.php
index 7bc3660..6b3315b 100644
--- a/app/views/course/timesrooms/_roomRequestInfo.php
+++ b/app/views/course/timesrooms/_roomRequestInfo.php
@@ -8,7 +8,5 @@ $open_requests = $course->room_requests->filter(function (RoomRequest $request)
'Für diese Veranstaltung liegt eine offene Raumanfrage vor.',
'Für diese Veranstaltung liegen %u offene Raumanfragen vor',
count($open_requests)
- ), count($open_requests)) . '<br>'
- . Studip\LinkButton::create(_('Raumanfragen anzeigen'),
- URLHelper::getURL('dispatch.php/course/room_requests/index/' . $course->getId()))) ?>
+ ), count($open_requests))) ?>
<? endif; ?>
diff --git a/app/views/course/timesrooms/editDate.php b/app/views/course/timesrooms/editDate.php
index 3be5e7c..a8dea31 100644
--- a/app/views/course/timesrooms/editDate.php
+++ b/app/views/course/timesrooms/editDate.php
@@ -228,8 +228,8 @@
'course/room_requests/request_summary/' . $request_id
)
: $controller->url_for(
- 'course/room_requests/request_start/' . $request_id,
- array_merge($params, ['range_str' => 'date_' . $date->id,'origin' => 'course_timesrooms'])
+ 'course/room_requests/new_request/' . $request_id,
+ array_merge($params, ['range_str' => 'date', 'range_id' => $date->id])
)
),
['data-dialog' => 'size=big']) ?>
diff --git a/app/views/course/timesrooms/index.php b/app/views/course/timesrooms/index.php
index 8636ebb..e82409d 100644
--- a/app/views/course/timesrooms/index.php
+++ b/app/views/course/timesrooms/index.php
@@ -22,13 +22,3 @@
<?= $this->render_partial('course/timesrooms/_roomRequest.php') ?>
<? endif ?>
-<? if (Request::isXhr() && !$locked && Config::get()->RESOURCES_ENABLE && Config::get()->RESOURCES_ALLOW_ROOM_REQUESTS): ?>
- <div data-dialog-button>
- <?= Studip\LinkButton::create(
- _('Raumanfrage erstellen'),
- $controller->url_for('course/room_requests/request_start',
- ['cid' => $course->id, 'range_str' => 'course', 'origin' => 'admin_courses']),
- ['data-dialog' => 'size=big']
- ) ?>
- </div>
-<? endif ?>