Skip to content
Snippets Groups Projects
Commit 94fd9842 authored by Moritz Strohm's avatar Moritz Strohm
Browse files

StEP 1352, closes #1352

Closes #1352

Merge request studip/studip!1110
parent a37af469
No related branches found
No related tags found
No related merge requests found
......@@ -66,11 +66,11 @@ class Resources_RoomGroupController extends AuthenticatedController
if (!is_array($user_permissions[$permission->user_id])) {
$user_permissions[$permission->user_id] = [];
}
if (!is_array($user_permissions[$permission->user_id][$permission->perms])) {
$user_permissions[$permission->user_id][$permission->perms] = [];
}
$user_permissions[$permission->user_id][$permission->perms][] = $permission;
}
}
......@@ -121,35 +121,38 @@ class Resources_RoomGroupController extends AuthenticatedController
}
}
if (!$selected_clipboard_id) {
//Check if a clipboard is selected:
$selected_clipboard_id = $_SESSION['selected_clipboard_id'];
} else {
$_SESSION['selected_clipboard_id'] = $selected_clipboard_id;
}
$clipboard = Clipboard::find($selected_clipboard_id);
if (!$clipboard) {
PageLayout::postError(
_('Die gewählte Raumgruppe wurde nicht gefunden!')
);
return;
}
if ($clipboard->user_id != $GLOBALS['user']->id) {
throw new AccessDeniedException();
}
PageLayout::setTitle(
$clipboard->name . ': ' . _('Berechtigungen setzen')
);
$clipboard = null;
$this->room_ids = Request::optionArray('room_ids');
$this->room_ids = $clipboard->getAllRangeIds('Room');
if (!$this->room_ids) {
PageLayout::postInfo(
_('Die Raumgruppe enthält keine Räume!')
if (!$selected_clipboard_id) {
//Check if a clipboard is selected:
$selected_clipboard_id = $_SESSION['selected_clipboard_id'];
} else {
$_SESSION['selected_clipboard_id'] = $selected_clipboard_id;
}
$clipboard = Clipboard::find($selected_clipboard_id);
if (!$clipboard) {
PageLayout::postError(
_('Die gewählte Raumgruppe wurde nicht gefunden!')
);
return;
}
if ($clipboard->user_id != $GLOBALS['user']->id) {
throw new AccessDeniedException();
}
PageLayout::setTitle(
$clipboard->name . ': ' . _('Berechtigungen setzen')
);
return;
$this->room_ids = $clipboard->getAllRangeIds('Room');
if (!$this->room_ids) {
PageLayout::postInfo(
_('Die Raumgruppe enthält keine Räume!')
);
return;
}
}
$this->rooms = Room::findMany($this->room_ids);
......
......@@ -300,6 +300,27 @@ class RoomManagement_OverviewController extends AuthenticatedController
)
);
}
} elseif (Request::submitted('room_permissions')) {
$this->building_ids = Request::optionArray('building_ids');
$room_ids = [];
Building::findEachMany(
function (Building $building) use (&$room_ids) {
foreach ($building->rooms as $room) {
$room_ids[] = $room->id;
}
},
$this->building_ids
);
if ($room_ids) {
//Redirect to the permissions dialog:
$this->redirect(
'resources/room_group/permissions',
['room_ids' => $room_ids]
);
}
}
}
......
......@@ -32,7 +32,7 @@
'custom_save_button_text' => _('Zuweisen'),
'custom_form_action_link' => URLHelper::getLink('dispatch.php/resources/room_group/permissions/' . $clipboard->id),
'custom_hidden_fields' => [
'resource_ids[]' => $room_ids
'room_ids[]' => $room_ids
],
'permissions' => $common_permissions,
'table_caption' => _('Gemeinsame Rechte'),
......
<? if ($buildings): ?>
<form class="default" method="post"
<form class="default building-list" method="post"
action="<?= URLHelper::getLink('dispatch.php/room_management/overview/buildings') ?>">
<table class="default building-list">
<colgroup>
......@@ -14,7 +14,7 @@
<th>
<input type="checkbox" class="proxy"
data-proxyfor="input[name='building_ids[]']"
data-activates="table.building-list button.bulk-action">
data-activates="form.building-list button.bulk-action">
</th>
<th><?= _('Name') ?></th>
<th><?= _('Nummer') ?></th>
......@@ -22,26 +22,7 @@
<th class="actions"><?= _('Aktionen') ?></th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="5">
<?
$button_attrs = [
'class' => 'bulk-action',
'data-activates-condition' => 'table.building-list :checkbox:checked'
];
if (!$building_ids) {
$button_attrs['disabled'] = 'disabled';
}
?>
<?= \Studip\Button::create(
_('Raumgruppen für Gebäude erstellen'),
'create_clipboards',
$button_attrs
) ?>
</td>
</tr>
</tfoot>
<tbody>
<? foreach ($buildings as $building): ?>
<?= $this->render_partial(
......@@ -90,5 +71,32 @@
<? endforeach ?>
</tbody>
</table>
<footer>
<?
$button_attrs = [
'class' => 'bulk-action',
'data-activates-condition' => 'table.building-list :checkbox:checked'
];
if (!$building_ids) {
$button_attrs['disabled'] = 'disabled';
}
?>
<?= \Studip\Button::create(
_('Raumgruppen für Gebäude erstellen'),
'create_clipboards',
array_merge($button_attrs, ['aria-title' => _('Raumgruppen für Gebäude erstellen')])
) ?>
<?= \Studip\Button::create(
_('Berechtigungen für alle Räume setzen'),
'room_permissions',
array_merge(
$button_attrs,
[
'data-dialog' => 'size=big',
'aria-title' => _('Berechtigungen für alle Räume setzen')
]
)
) ?>
</footer>
</form>
<? endif ?>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment