diff --git a/app/controllers/room_management/overview.php b/app/controllers/room_management/overview.php index d98ba9f09c2e6d98eb0728994bb5e3f6957a5098..b4f1d63ee01859d07b0e5d754c7aed2b0a4d5f4b 100644 --- a/app/controllers/room_management/overview.php +++ b/app/controllers/room_management/overview.php @@ -36,31 +36,19 @@ class RoomManagement_OverviewController extends AuthenticatedController } } parent::before_filter($action, $args); - $this->user = User::findCurrent(); - $this->show_resource_actions = ( - ResourceManager::userHasGlobalPermission($this->user, 'autor') - || - ResourceManager::userHasResourcePermissions($this->user, 'autor') - ); - $this->show_admin_actions = ( - $this->user_is_global_resource_admin - || - ResourceManager::userHasResourcePermissions($this->user) - || - $GLOBALS['perm']->have_perm('root') - ); + if ($action == 'public_booking_plans') { + //Nothing else to be done in that case. + return; + } + + $this->user = User::findCurrent(); $this->user_is_global_resource_user = ResourceManager::userHasGlobalPermission($this->user); $this->user_is_root = $GLOBALS['perm']->have_perm('root'); $this->user_is_global_resource_admin = ResourceManager::userHasGlobalPermission( $this->user, 'admin' ) || $this->user_is_root; - $this->show_global_admin_actions = $this->user_is_global_resource_admin - && ResourceManager::userHasGlobalPermission( - $this->user, - 'admin' - ); } public function index_action() @@ -77,6 +65,20 @@ class RoomManagement_OverviewController extends AuthenticatedController throw new AccessDeniedException(); } + $this->show_resource_actions = ( + ResourceManager::userHasGlobalPermission($this->user, 'autor') + || + ResourceManager::userHasResourcePermissions($this->user, 'autor') + ); + + $this->show_admin_actions = ( + $this->user_is_global_resource_admin + || + ResourceManager::userHasResourcePermissions($this->user) + || + $GLOBALS['perm']->have_perm('root') + ); + if (!$this->show_admin_actions) { $this->redirect($this->url_for('/rooms')); return; @@ -383,6 +385,11 @@ class RoomManagement_OverviewController extends AuthenticatedController } else { $this->rooms = Room::findAll(); } + + $this->show_global_admin_actions = ResourceManager::userHasGlobalPermission( + $this->user, + 'admin' + ); } else { //Get only the locations for which //the user has at least user permissions: @@ -410,6 +417,11 @@ class RoomManagement_OverviewController extends AuthenticatedController ORDER BY sort_position DESC, name ASC, mkdate ASC"; $this->rooms = Room::findBySql($rooms_sql, $rooms_parameter); + + $this->show_global_admin_actions = ResourceManager::userHasGlobalPermission( + $this->user, + 'admin' + ); } if (!$this->rooms) { @@ -467,4 +479,4 @@ class RoomManagement_OverviewController extends AuthenticatedController ); } } -} +} \ No newline at end of file diff --git a/app/views/resources/_common/_action_menu.php b/app/views/resources/_common/_action_menu.php deleted file mode 100644 index cdd63c9a08542e20a0e5b5660f12bf8589c8b308..0000000000000000000000000000000000000000 --- a/app/views/resources/_common/_action_menu.php +++ /dev/null @@ -1,118 +0,0 @@ -<?php -//Build the actions as array. Ordering is done by array indexes. - -$actions = []; -if ($show_user_actions) { - $actions['0010'] = [ - $resource->getActionLink('show'), - _('Details'), - Icon::create('info-circle'), - ['data-dialog' => 'size=auto'] - ]; - - $actions['0020'] = [ - $resource->getActionLink('booking_plan'), - _('Belegungsplan'), - Icon::create('timetable') - ]; - - $actions['0030'] = [ - $resource->getActionLink('semester_plan'), - _('Semester-Belegungsplan'), - Icon::create('timetable'), - ['target' => '_blank'] - ]; - if ($show_admin_actions) { - $actions['0040'] = [ - $resource->getActionLink('permissions'), - _('Berechtigungen verwalten'), - Icon::create('roles2'), - ['data-dialog' => 'size=auto'] - ]; - $actions['0050'] = [ - $resource->getActionLink('temporary_permissions'), - _('Temporäre Berechtigungen verwalten'), - Icon::create('roles2'), - ['data-dialog' => 'size=auto'] - ]; - $actions['0060'] = [ - $resource->getActionLink('edit'), - _('Bearbeiten'), - Icon::create('edit'), - ['data-dialog' => 'size=auto'] - ]; - } - if ($show_autor_actions) { - $actions['0070'] = [ - $resource->getActionLink( - 'assign-undecided', - ['no_reload' => 1] - ), - _('Buchen'), - Icon::create('lock-locked'), - ['data-dialog' => 'size=big'] - ]; - if ($show_global_admin_actions) { - $actions['0080'] = [ - $resource->getActionLink( - 'delete_bookings', - ['no_reload' => 1] - ), - _('Buchungen löschen'), - Icon::create('trash'), - ['data-dialog' => 'size=auto'] - ]; - } - } - if ($show_user_actions) { - $actions['0090'] = [ - $resource->getActionLink('export_bookings'), - _('Buchungen exportieren'), - Icon::create('file-excel'), - ['data-dialog' => 'size=auto'] - ]; - } - $actions['0100'] = [ - $resource->getActionLink('files'), - _('Dateien anzeigen'), - Icon::create($resource->hasFiles() ? 'folder-full' : 'folder-empty') - ]; - if ($show_global_admin_actions) { - $actions['0110'] = [ - $resource->getActionLink('delete'), - _('Löschen'), - Icon::create('trash'), - ['data-dialog' => ''] - ]; - } -} else { - if ($resource->propertyExists('booking_plan_is_public')) { - if ($resource->getProperty('booking_plan_is_public')) { - $actions['0020'] = [ - $resource->getActionLink('booking_plan'), - _('Belegungsplan anzeigen'), - Icon::create('timetable'), - ['target' => '_blank'] - ]; - } - } -} -//Add additional actions for the action menu, if set: -if (isset($additional_actions) && is_array($additional_actions)) { - $actions = array_merge($actions, $additional_actions); -} -//Now we filter and sort the actions by key: -$actions = array_filter($actions, 'is_array'); -ksort($actions); -$action_menu = ActionMenu::get()->setContext($resource); -//And finally we add the actions to the action menu: -foreach ($actions as $action) { - $action_menu->addLink( - $action[0], - $action[1], - $action[2], - (isset($action[3]) && is_array($action[3])) ? $action[3] : [] - ); -} -?> -<?= $action_menu->render() ?> diff --git a/app/views/resources/_common/_grouped_room_list.php b/app/views/resources/_common/_grouped_room_list.php index d31fd31efbb4aebbd1c487b3e9084c17a4e5c2cf..c9a1237fdfd1f8c9e967bc5f710c8277726f27df 100644 --- a/app/views/resources/_common/_grouped_room_list.php +++ b/app/views/resources/_common/_grouped_room_list.php @@ -1,15 +1,15 @@ <? /** - * Template parameters: - * - $title: The list title - * - $grouped_rooms: The rooms, grouped by RoomManager::groupRooms - * - $link_template: An optional link template where the room-ID is - * represented by the only "%s" placeholder. - * If $link_template is not set, the link to the booking plan - * of the room is generated. - * - $show_in_dialog: Whether to show the room link in a dialog (true) - * or not (false). - */ +Template parameters: +- $title: The list title +- $grouped_rooms: The rooms, grouped by RoomManager::groupRooms +- $link_template: An optional link template where the room-ID is + represented by the only "%s" placeholder. + If $link_template is not set, the link to the booking plan + of the room is generated. +- $show_in_dialog: Whether to show the room link in a dialog (true) + or not (false). +*/ ?> <? if ($grouped_rooms) : ?> <? if ($title) : ?> @@ -17,63 +17,46 @@ <? endif ?> <? foreach ($grouped_rooms as $group) : ?> <? - $location = $group['location']; + $location = $group['location']; $buildings = $group['buildings']; ?> <div class="studip-widget-wrapper"> <article class="studip"> <header><h1><?= htmlReady($location->name) ?></h1></header> <? foreach ($buildings as $building_group) : ?> + <? + $building = $building_group['building']; + $rooms = $building_group['rooms']; + ?> <article class="studip toggle"> - <header><h1><a href="#"><?= htmlReady($building_group['building']->name) ?></a></h1></header> + <header><h1><a href="#"><?= htmlReady($building->name) ?></a></h1></header> <section> <table class="default"> <thead> - <tr> - <th> - <?= _('Raum') ?> - </th> - <th class="actions"> - <?= _('Aktionen') ?> - </th> - </tr> + <tr><th><?= _('Raum') ?></th></tr> </thead> <tbody> - <? foreach ($building_group['rooms'] as $resource) : ?> + <? foreach ($rooms as $room) : ?> <? $room_link = ''; if ($link_template) { $room_link = $controller->link_for( sprintf( $link_template, - $resource->id + $room->id ) ); } else { - $room_link = $resource->getActionLink('booking_plan'); + $room_link = $room->getActionLink('booking_plan'); } ?> <tr> <td> <a href="<?= $room_link ?>" - <?= $show_in_dialog ? 'data-dialog="size=big"' : '' ?>> - <?= htmlReady($resource->name) ?> + <?= $show_in_dialog ? 'data-dialog="size=big"' : '' ?>> + <?= htmlReady($room->name) ?> </a> </td> - <td class="actions"> - <? - $perms = [ - 'show_global_admin_actions' => $show_global_admin_actions, - 'show_admin_actions' => $resource->userHasPermission($user, 'admin'), - 'show_tutor_actions' => $resource->userHasPermission($user, 'tutor'), - 'show_autor_actions' => $resource->userHasPermission($user, 'autor'), - 'show_user_actions' => $resource->userHasPermission($user, 'user'), - 'user_has_booking_rights' => $resource->userHasBookingRights($user)]; - ?> - <?= $this->render_partial('resources/_common/_action_menu.php', - compact('resource') + $perms - );?> - </td> </tr> <? endforeach ?> </tbody> diff --git a/app/views/resources/_common/_resource_tr.php b/app/views/resources/_common/_resource_tr.php index 7201d230fdf1603c42f1c39a5db872fc77b80fc6..4210e395bebdd306160e3b91545d760cb7aa2e6f 100644 --- a/app/views/resources/_common/_resource_tr.php +++ b/app/views/resources/_common/_resource_tr.php @@ -153,17 +153,139 @@ || $show_tutor_actions || $show_admin_actions || $show_global_admin_actions || $additional_actions): ?> <td class="actions"> - <?= $this->render_partial('resources/_common/_action_menu.php', - compact( - 'show_user_actions', - 'show_autor_actions', - 'show_autor_actions', - 'show_admin_actions', - 'show_global_admin_actions', - 'additional_actions', - 'resource' - ) - );?> + <? + //Build the actions as array. Ordering is done by array indexes. + + $actions = []; + $action_menu = ActionMenu::get(); + if ($show_user_actions) { + $actions['0010'] = [ + $resource->getActionLink('show'), + _('Details'), + Icon::create('info-circle'), + ['data-dialog' => 'size=auto'] + ]; + + $actions['0020'] = [ + $resource->getActionLink('booking_plan'), + _('Belegungsplan'), + Icon::create('timetable') + ]; + + $actions['0030'] = [ + $resource->getActionLink('semester_plan'), + _('Semester-Belegungsplan'), + Icon::create('timetable'), + ['target' => '_blank'] + ]; + if ($show_admin_actions) { + $actions['0040'] = [ + $resource->getActionLink('permissions'), + _('Berechtigungen verwalten'), + Icon::create('roles2'), + ['data-dialog' => 'size=auto'] + ]; + $actions['0050'] = [ + $resource->getActionLink('temporary_permissions'), + _('Temporäre Berechtigungen verwalten'), + Icon::create('roles2'), + ['data-dialog' => 'size=auto'] + ]; + $actions['0060'] = [ + $resource->getActionLink('edit'), + _('Bearbeiten'), + Icon::create('edit'), + ['data-dialog' => 'size=auto'] + ]; + } + if ($show_autor_actions) { + $actions['0070'] = [ + $resource->getActionLink( + 'assign-undecided', + [ + 'no_reload' => '1' + ] + ), + _('Buchen'), + Icon::create('lock-locked'), + [ + 'data-dialog' => 'size=big' + ] + ]; + if ($show_global_admin_actions) { + $actions['0080'] = [ + $resource->getActionLink( + 'delete_bookings', + [ + 'no_reload' => '1' + ] + ), + _('Buchungen löschen'), + Icon::create('trash'), + ['data-dialog' => 'size=auto'] + ]; + } + } + if ($show_user_actions) { + $actions['0090'] = [ + $resource->getActionLink('export_bookings'), + _('Buchungen exportieren'), + Icon::create('file-excel'), + ['data-dialog' => 'size=auto'] + ]; + } + $actions['0100'] = [ + $resource->getActionLink('files'), + _('Dateien anzeigen'), + Icon::create( + $resource->hasFiles() + ? 'folder-full' + : 'folder-empty' + ), + [] + ]; + if ($show_global_admin_actions) { + $actions['0110'] = [ + $resource->getActionLink('delete'), + _('Löschen'), + Icon::create('trash'), + ['data-dialog' => ''] + ]; + } + } else { + if ($resource->propertyExists('booking_plan_is_public')) { + if ($resource->getProperty('booking_plan_is_public')) { + $actions['0020'] = [ + $resource->getActionLink('booking_plan'), + _('Belegungsplan anzeigen'), + Icon::create('timetable'), + [ + 'target' => '_blank' + ] + ]; + } + } + } + //Add additional actions for the action menu, if set: + if (is_array($additional_actions)) { + $actions = array_merge($actions, $additional_actions); + } + //Now we sort the actions by key: + ksort($actions); + + //And finally we add the actions to the action menu: + foreach ($actions as $action) { + if (is_array($action)) { + $action_menu->addLink( + $action[0], + $action[1], + $action[2], + is_array($action[3]) ? $action[3] : [] + ); + } + } + ?> + <?= $action_menu->render() ?> </td> <? endif ?> </tr>