Skip to content
Snippets Groups Projects
Verified Commit e510a6c6 authored by Till Glöggler's avatar Till Glöggler Committed by Till Glöggler
Browse files

working on tickets

parent 5749880c
No related branches found
No related tags found
No related merge requests found
...@@ -1241,6 +1241,7 @@ class Resources_RoomRequestController extends AuthenticatedController ...@@ -1241,6 +1241,7 @@ class Resources_RoomRequestController extends AuthenticatedController
//Get dates grouped by metadates. //Get dates grouped by metadates.
$this->request_time_intervals = $this->request->getGroupedTimeIntervals(true); $this->request_time_intervals = $this->request->getGroupedTimeIntervals(true);
} }
$this->request_semester_string = ''; $this->request_semester_string = '';
$request_start_semester = $this->request->getStartSemester(); $request_start_semester = $this->request->getStartSemester();
$request_end_semester = $this->request->getEndSemester(); $request_end_semester = $this->request->getEndSemester();
...@@ -1519,7 +1520,9 @@ class Resources_RoomRequestController extends AuthenticatedController ...@@ -1519,7 +1520,9 @@ class Resources_RoomRequestController extends AuthenticatedController
$resolve = Request::submitted('resolve') || $force_resolve; $resolve = Request::submitted('resolve') || $force_resolve;
$this->show_force_resolve_button = false; $this->show_force_resolve_button = false;
if ($resolve) { $save_only = Request::submitted('save_only');
if ($resolve || $save_only) {
CSRFProtection::verifyUnsafeRequest(); CSRFProtection::verifyUnsafeRequest();
$this->selected_rooms = array_filter(Request::getArray('selected_rooms')); $this->selected_rooms = array_filter(Request::getArray('selected_rooms'));
$this->notification_settings = Request::get('notification_settings'); $this->notification_settings = Request::get('notification_settings');
...@@ -1536,7 +1539,7 @@ class Resources_RoomRequestController extends AuthenticatedController ...@@ -1536,7 +1539,7 @@ class Resources_RoomRequestController extends AuthenticatedController
return; return;
} }
if (count($this->selected_rooms) < $this->visible_dates && !$force_resolve) { if (count($this->selected_rooms) < $this->visible_dates && !$force_resolve && !$save_only) {
PageLayout::postWarning( PageLayout::postWarning(
_('Es wurden nicht für alle Termine der Anfrage Räume ausgewählt! Soll die Anfrage wirklich aufgelöst werden?') _('Es wurden nicht für alle Termine der Anfrage Räume ausgewählt! Soll die Anfrage wirklich aufgelöst werden?')
); );
...@@ -1595,6 +1598,7 @@ class Resources_RoomRequestController extends AuthenticatedController ...@@ -1595,6 +1598,7 @@ class Resources_RoomRequestController extends AuthenticatedController
return; return;
} }
if ($course_date->room_booking->resource_id != $room_id) {
try { try {
$booking = $room->createBooking( $booking = $room->createBooking(
$this->current_user, $this->current_user,
...@@ -1617,6 +1621,7 @@ class Resources_RoomRequestController extends AuthenticatedController ...@@ -1617,6 +1621,7 @@ class Resources_RoomRequestController extends AuthenticatedController
$errors[] = $e->getMessage(); $errors[] = $e->getMessage();
continue; continue;
} }
}
} elseif ($range_data[0] == 'SeminarCycleDate') { } elseif ($range_data[0] == 'SeminarCycleDate') {
//Get the dates of the metadate and create a booking for //Get the dates of the metadate and create a booking for
//each of them. //each of them.
...@@ -1632,6 +1637,7 @@ class Resources_RoomRequestController extends AuthenticatedController ...@@ -1632,6 +1637,7 @@ class Resources_RoomRequestController extends AuthenticatedController
} }
if ($metadate->dates) { if ($metadate->dates) {
foreach ($metadate->dates as $date) { foreach ($metadate->dates as $date) {
if ($date->room_booking->resource_id != $room_id) {
try { try {
$booking = $room->createBooking( $booking = $room->createBooking(
$this->current_user, $this->current_user,
...@@ -1656,6 +1662,7 @@ class Resources_RoomRequestController extends AuthenticatedController ...@@ -1656,6 +1662,7 @@ class Resources_RoomRequestController extends AuthenticatedController
} }
} }
} }
}
} elseif ($range_data[0] == 'User') { } elseif ($range_data[0] == 'User') {
$user = User::find($range_data[1]); $user = User::find($range_data[1]);
if (!($user instanceof User)) { if (!($user instanceof User)) {
...@@ -1709,8 +1716,9 @@ class Resources_RoomRequestController extends AuthenticatedController ...@@ -1709,8 +1716,9 @@ class Resources_RoomRequestController extends AuthenticatedController
_('Es traten Fehler beim Auflösen der Anfrage auf!'), _('Es traten Fehler beim Auflösen der Anfrage auf!'),
$errors $errors
); );
} else { } else if (!$save_only) {
//No errors: We can close the request. //No errors: We can close the request.
$success = $this->request->closeRequest( $success = $this->request->closeRequest(
$this->notification_settings == 'creator_and_lecturers', $this->notification_settings == 'creator_and_lecturers',
$bookings $bookings
......
...@@ -259,7 +259,7 @@ ...@@ -259,7 +259,7 @@
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td><?= _('Keine Auswahl') ?></td> <td><?= _('Keine Auswahl / keine Änderung') ?></td>
<? if (count($request_time_intervals) > 1) : ?> <? if (count($request_time_intervals) > 1) : ?>
<td> <td>
<input type="checkbox" data-proxyfor="input.radio-null" <input type="checkbox" data-proxyfor="input.radio-null"
...@@ -346,6 +346,7 @@ ...@@ -346,6 +346,7 @@
<? else: ?> <? else: ?>
<?= \Studip\Button::create(_('Anfrage auflösen'), 'resolve') ?> <?= \Studip\Button::create(_('Anfrage auflösen'), 'resolve') ?>
<? endif ?> <? endif ?>
<?= \Studip\Button::create(_('Anfrage zwischenspeichern'), 'save_only') ?>
<? if ($request->isSimpleRequest() <? if ($request->isSimpleRequest()
&& !$request->isReadOnlyForUser($current_user)): ?> && !$request->isReadOnlyForUser($current_user)): ?>
<?= \Studip\LinkButton::create( <?= \Studip\LinkButton::create(
......
...@@ -71,11 +71,12 @@ ...@@ -71,11 +71,12 @@
$room_radio_name = 'selected_rooms[' . $range_index . ']'; $room_radio_name = 'selected_rooms[' . $range_index . ']';
?> ?>
<td> <td>
<? if ($available): ?> <? if ($available || $interval['booked_room'] == $room->id): ?>
<input type="radio" name="<?= htmlReady($room_radio_name) ?>" <input type="radio" name="<?= htmlReady($room_radio_name) ?>"
class="text-bottom radio-<?= htmlReady($room->id) ?>" class="text-bottom radio-<?= htmlReady($room->id) ?>"
value="<?= htmlReady($room->id) ?>" value="<?= htmlReady($room->id) ?>"
<?= $selected_dates[$range_index] == $room->id <?= ($selected_dates[$range_index] == $room->id
|| $interval['booked_room'] == $room->id)
? 'checked="checked"' ? 'checked="checked"'
: ''?>> : ''?>>
<?= Icon::create('check-circle', Icon::ROLE_STATUS_GREEN)->asImg(['class' => 'text-bottom']) ?> <?= Icon::create('check-circle', Icon::ROLE_STATUS_GREEN)->asImg(['class' => 'text-bottom']) ?>
......
...@@ -928,9 +928,15 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen ...@@ -928,9 +928,15 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen
} }
$interval['range'] = 'CourseDate'; $interval['range'] = 'CourseDate';
$interval['range_id'] = $appointment->appointment_id; $interval['range_id'] = $appointment->appointment_id;
$interval['booked_room'] = CourseDate::find($appointment->appointment_id)->room_booking->resource_id;
$time_intervals['']['intervals'][] = $interval; $time_intervals['']['intervals'][] = $interval;
} }
if (empty($time_intervals['']['intervals'])) {
return [];
} else {
return $time_intervals; return $time_intervals;
}
} elseif ($this->termin_id) { } elseif ($this->termin_id) {
if ($with_preparation_time) { if ($with_preparation_time) {
$interval = [ $interval = [
...@@ -945,12 +951,18 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen ...@@ -945,12 +951,18 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen
} }
$interval['range'] = 'CourseDate'; $interval['range'] = 'CourseDate';
$interval['range_id'] = $this->termin_id; $interval['range_id'] = $this->termin_id;
$interval['booked_room'] = CourseDate::find($this->termin_id)->room_booking->resource_id;
if (!empty($interval)) {
return [ return [
'' => [ '' => [
'metadate' => null, 'metadate' => null,
'intervals' => [$interval] 'intervals' => [$interval]
] ]
]; ];
} else {
return [];
}
} elseif ($this->metadate_id) { } elseif ($this->metadate_id) {
$time_intervals = [ $time_intervals = [
$this->metadate_id => [ $this->metadate_id => [
...@@ -972,6 +984,7 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen ...@@ -972,6 +984,7 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen
} }
$interval['range'] = 'CourseDate'; $interval['range'] = 'CourseDate';
$interval['range_id'] = $date->id; $interval['range_id'] = $date->id;
$interval['booked_room'] = $date->room_booking->resource_id;
$time_intervals[$this->metadate_id]['intervals'][] = $interval; $time_intervals[$this->metadate_id]['intervals'][] = $interval;
} }
return $time_intervals; return $time_intervals;
...@@ -998,6 +1011,7 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen ...@@ -998,6 +1011,7 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen
} }
$interval['range'] = 'CourseDate'; $interval['range'] = 'CourseDate';
$interval['range_id'] = $date->id; $interval['range_id'] = $date->id;
$interval['booked_room'] = $date->room_booking->resource_id;
$time_intervals[$cycle->id]['intervals'][] = $interval; $time_intervals[$cycle->id]['intervals'][] = $interval;
} }
} }
...@@ -1026,8 +1040,13 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen ...@@ -1026,8 +1040,13 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen
} }
$interval['range'] = 'CourseDate'; $interval['range'] = 'CourseDate';
$interval['range_id'] = $date->id; $interval['range_id'] = $date->id;
$interval['booked_room'] = $date->room_booking->resource_id;
$time_intervals['']['intervals'][] = $interval; $time_intervals['']['intervals'][] = $interval;
} }
if (empty($time_intervals['']['intervals'])) {
unset($time_intervals['']);
}
} }
return $time_intervals; return $time_intervals;
} elseif ($this->begin && $this->end) { } elseif ($this->begin && $this->end) {
...@@ -1044,6 +1063,7 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen ...@@ -1044,6 +1063,7 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen
} }
$interval['range'] = 'User'; $interval['range'] = 'User';
$interval['range_id'] = $this->user_id; $interval['range_id'] = $this->user_id;
return [ return [
'' => [ '' => [
'metadate' => null, 'metadate' => null,
...@@ -1336,10 +1356,10 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen ...@@ -1336,10 +1356,10 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen
} elseif ($this->course_id) { } elseif ($this->course_id) {
$course = new Seminar($this->course_id); $course = new Seminar($this->course_id);
if ($course) { if ($course) {
$strings[] = $course->getDatesExport( $strings[] = 'ct';
$strings[] = $course->getDatesTemplate('dates/seminar_html_roomplanning',
[ [
'short' => true, 'shrink' => false,
'shrink' => true,
'show_room' => true 'show_room' => true
] ]
); );
......
...@@ -54,6 +54,17 @@ if (!empty($dates['regular']['turnus_data']) || !empty($dates['irregular'])) : ...@@ -54,6 +54,17 @@ if (!empty($dates['regular']['turnus_data']) || !empty($dates['irregular'])) :
$rooms = array_merge(getPlainRooms($irregular_rooms, false), array_keys($freetext_rooms)); $rooms = array_merge(getPlainRooms($irregular_rooms, false), array_keys($freetext_rooms));
if (is_array($irregular) && sizeof($irregular)) : if (is_array($irregular) && sizeof($irregular)) :
if (isset($shrink) && !$shrink && sizeof($irregular < 20)) :
foreach ($irregular as $date) :
echo $date['tostring'];
if ($show_room && $date['resource_id']) :
echo ', '. _('Ort:') . ' ';
echo Room::find($date['resource_id']);
endif;
echo "\n";
endforeach;
else :
echo _("Termine am") . implode(', ', shrink_dates($irregular)); echo _("Termine am") . implode(', ', shrink_dates($irregular));
if (is_array($rooms) && sizeof($rooms) > 0) : if (is_array($rooms) && sizeof($rooms) > 0) :
if (sizeof($rooms) > 3) : if (sizeof($rooms) > 3) :
...@@ -68,3 +79,4 @@ if (!empty($dates['regular']['turnus_data']) || !empty($dates['irregular'])) : ...@@ -68,3 +79,4 @@ if (!empty($dates['regular']['turnus_data']) || !empty($dates['irregular'])) :
endif; endif;
endif; endif;
endif; endif;
endif;
<?
if (!isset($show_room)) :
// show rooms only if there is more than one
if (empty($dates['rooms']) || sizeof($dates['rooms']) === 1) :
$show_room = false;
else :
$show_room = true;
endif;
endif;
if (!empty($dates['regular']['turnus_data']) || !empty($dates['irregular'])) :
$output = [];
if (is_array($dates['regular']['turnus_data'])) foreach ($dates['regular']['turnus_data'] as $cycle) :
$first_date = sprintf(_("ab %s"), strftime('%x', $cycle['first_date']['date']));
if ($cycle['cycle'] == 1) :
$cycle_output = $cycle['tostring_short'] . ' (' . sprintf(_("zweiwöchentlich, %s"), $first_date) . ')';
elseif ($cycle['cycle'] == 2) :
$cycle_output = $cycle['tostring_short'] . ' (' . sprintf(_("dreiwöchentlich, %s"), $first_date) . ')';
else :
$cycle_output = $cycle['tostring_short'] . ' (' . _("wöchentlich") . ')';
endif;
if ($cycle['desc'])
$cycle_output .= ' - '. $cycle['desc'];
if ($show_room) :
$cycle_output .= $this->render_partial('dates/_seminar_rooms',
[
'assigned' => $cycle['assigned_rooms'],
'freetext' => $cycle['freetext_rooms'],
'plain' => true]
);
endif;
$output[] = $cycle_output;
endforeach;
echo implode(", <br>", $output);
$freetext_rooms = [];
if (is_array($dates['irregular'])):
foreach ($dates['irregular'] as $date) :
$irregular[] = $date;
$irregular_strings[] = $date['tostring'];
if ($date['resource_id']) :
$irregular_rooms[$date['resource_id']]++;
elseif ($date['raum']) :
$freetext_rooms['('. $date['raum'] .')']++;
endif;
endforeach;
unset($irregular_rooms['']);
echo sizeof($output) ? ", <br>" : '';
$rooms = array_merge(getPlainRooms($irregular_rooms, false), array_keys($freetext_rooms));
if (is_array($irregular) && sizeof($irregular)) :
if (isset($shrink) && !$shrink && sizeof($irregular < 20)) :
foreach ($irregular as $date) :
echo $date['tostring'];
if ($show_room && $date['resource_id']) :
echo ', '. _('Ort:') . ' ';
$room_obj = Room::find($date['resource_id']);
echo '<a href="' . $room_obj->getActionLink('show') . '" target="_blank">'
. htmlReady($room_obj->name) . '</a>';
endif;
echo "<br>";
endforeach;
else :
echo _("Termine am") . implode(', ', shrink_dates($irregular));
if (is_array($rooms) && sizeof($rooms) > 0) :
if (sizeof($rooms) > 3) :
$rooms = array_slice($rooms, sizeof($rooms) - 3, sizeof($rooms));
endif;
if ($show_room) :
echo ', ' . _("Ort:") . ' ';
echo implode(', ', $rooms);
endif;
endif;
echo "<br>";
endif;
endif;
endif;
endif;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment