diff --git a/reservation.inc b/reservation.inc
index 0db3e7c..11e8e22 100644
--- a/reservation.inc
+++ b/reservation.inc
@@ -18,7 +18,7 @@ function reserve_form_reserve_reservation_form_alter(array &$form, FormStateInte
// Retrieve an array which contains the path pieces.
$current_path = \Drupal::service('path.current')->getPath();
$path_args = explode('/', $current_path);
-
+
// for case of std reservation add form - this should likely be blocked; but leave for development
if (count($path_args) <= 3) return;
@@ -28,6 +28,22 @@ function reserve_form_reserve_reservation_form_alter(array &$form, FormStateInte
$path_args = explode('/', $_GET['path'] );
$length = 30 * $_GET['count'];
};
+ $user = \Drupal::currentUser();
+ $user_roles = $user->getRoles();
+ //Allow users with the 'add reservation extended' to book unlimited number
+ //of reservations.'
+ $book_extended = FALSE;
+ //Allow administrators to create as many reservations as needed.
+ if (in_array('administrator', $user_roles)) {
+ $book_extended = TRUE;
+ }
+ //Allow perm 'add reservations extended' to add as many as needed.
+ $roles_permissions = user_role_permissions($user_roles);
+ foreach ($roles_permissions as $role_key => $permissions) {
+ if (in_array('add reservations extended', $permissions)) {
+ $book_extended = TRUE;
+ }
+ }
//if (user_access('administer site configuration') && isset($_GET['edit']) && $_GET['edit'] == 'standard') {
// return;
@@ -61,9 +77,38 @@ function reserve_form_reserve_reservation_form_alter(array &$form, FormStateInte
$year = reserve_which_year($month, $day);
$yyyymmdd = date('Y-m-d', strtotime($year . '-' . $month . '-' . $day));
$d = $yyyymmdd . ' 00:00:00';
- }
- $entity = entity_load($entity_type, $eid);
+ if (reserve_daily_max_exceeded($yyyymmdd) && !$book_extended) {
+ $form = array();
+ $form['message'] = [
+ '#type' => 'markup',
+ '#weight' => -25,
+ '#markup' => '
+
+
' .
+ t('You have exceeded the max number of daily bookings. Unable to add reservation.') .
+ '
',
+ ];
+ return;
+ }
+ $config = \Drupal::config('reserve.settings');
+ $max_per_user = $config->get('reservations_per_user');
+ if (count(reserve_user_reservations()) > $max_per_user
+ && !$book_extended) {
+ $form = array();
+ $form['message'] = [
+ '#type' => 'markup',
+ '#weight' => -25,
+ '#markup' => '
+
+
' .
+ t('You have exceeded your max number of open bookings. Unable to add reservation.') .
+ '
',
+ ];
+ return;
+ }
+ }
+ $entity = \Drupal::entityTypeManager()->getStorage($entity_type)->load($eid);
$bundle = $entity->bundle();
$date = date('l, M d, Y', strtotime($d));
$time = reserve_display_time($t);
@@ -96,12 +141,17 @@ function reserve_form_reserve_reservation_form_alter(array &$form, FormStateInte
$form['reservable_content_type']['#access'] = false;
// in prep for having better lockout of having slot taken by another user; let's also hide Length
- $form['reservation_length']['#access'] = false;
+ // Lets not hide the length so mobile users can pick a length.
+ //$form['reservation_length']['#access'] = false;
// hide other fields we don't want to show
$form['user_id']['#access'] = false;
$form['reservation_series_id']['#access'] = false;
$form['reservation_ebundle']['#access'] = false;
+ if(!$book_extended){
+ $form['reservation_repeat_type']['#access'] = FALSE;
+ $form['reservation_repeat_until']['#access'] = FALSE;
+ }
}
// if we are editing; let's do some extra things:
@@ -222,7 +272,7 @@ function reserve_form_reserve_reservation_form_alter(array &$form, FormStateInte
*/
function reserve_form_reserve_reservation_delete_form_alter(array &$form, FormStateInterface $form_state) {
// Retrieve an array which contains the path pieces.
- $refer_path = $_SERVER[HTTP_REFERER];
+ $refer_path = $_SERVER['HTTP_REFERER'];
$path_args = explode('/', $refer_path);
$month = $path_args[6];
@@ -231,12 +281,18 @@ function reserve_form_reserve_reservation_delete_form_alter(array &$form, FormSt
$year = reserve_which_year($month, $day);
$yyyymmdd = date('Y-m-d', strtotime($year . '-' . $month . '-' . $day));
-
$form['ebundle'] = ['#type' => 'hidden', '#value' => $ebundle];
$form['month'] = ['#type' => 'hidden', '#value' => date('m', strtotime($yyyymmdd))];
$form['day'] = ['#type' => 'hidden', '#value' => date('d', strtotime($yyyymmdd))];
+ $form['actions']['submit']['#submit'][] = 'reserve_return_to_home_page';
+}
- $form['actions']['submit']['#submit'][] = 'reserve_return_to_reservations_page';
+/**
+ * Custom submit handler for login form.
+ */
+function reserve_return_to_home_page($form, FormStateInterface $form_state) {
+ $url = Url::fromRoute('');
+ $form_state->setRedirectUrl($url);
}
/**
diff --git a/reserve.inc b/reserve.inc
index 4fc9059..a90f132 100644
--- a/reserve.inc
+++ b/reserve.inc
@@ -25,11 +25,9 @@ function reserve_categories($ebundle = null) {
$ids = array_filter($fconfig['categories']);
}
else {
- $ids = Drupal::service('entity.query')
- ->get('reserve_category')
- ->condition('status', TRUE)
- //->sort('reserve_display_order', 'ASC')
- ->execute();
+ $query = \Drupal::service('entity_type.manager')
+ ->getStorage('reserve_category')->getQuery();
+ $ids = $query->condition('status', TRUE)->execute();
}
$cats = \Drupal::entityTypeManager()->getStorage('reserve_category')->loadMultiple($ids);
@@ -59,9 +57,9 @@ function reserve_categories($ebundle = null) {
function reserve_entities($ebundle) {
$entity_type = ebundle_split($ebundle, 'type');
$bundle = ebundle_split($ebundle, 'bundle');
- $query = Drupal::service('entity.query')
- ->get($entity_type)
- ->condition('status', TRUE);
+ $query = \Drupal::service('entity_type.manager')
+ ->getStorage($entity_type)->getQuery();
+ $query->condition('status', TRUE);
if ($entity_type != $bundle) {
$query->condition('type', $bundle);
@@ -805,9 +803,8 @@ function reserve_valid_lengths($rid, $ebundle, $yyyy_mmdd, $time, $id = NULL, $a
$start_time = $search_item['start_time'];
$conflicts_found = false;
-
- $query = Drupal::service('entity.query')
- ->get('reserve_reservation')
+ $query = \Drupal::service('entity_type.manager')
+ ->getStorage('reserve_reservation')->getQuery()
->condition('reservation_date', $date . '%', 'LIKE')
->condition('reservation_time', $start_time)
->condition('reservable_id', $rid)
@@ -926,24 +923,21 @@ function reserve_valid_lengths($rid, $ebundle, $yyyy_mmdd, $time, $id = NULL, $a
* FALSE - the maximum has not been exceeded.
*/
function reserve_daily_max_exceeded($yyyy_mmdd) {
- global $user;
+ $user = \Drupal::currentUser();
$config = \Drupal::config('reserve.settings');
-
$max = $config->get('reservations_per_day');
if (!$max) {
return FALSE;
}
-
$record_count = 0;
- if ($user->uid) {
- $ids = \Drupal::service('entity.query')
- ->get('reserve_reservation')
- ->condition('user_id', $user->id)
- ->condition('reservation_date', 'value', $yyyy_mmdd . '%', 'like')
+ if ($user->id()) {
+ $ids = \Drupal::service('entity_type.manager')
+ ->getStorage('reserve_reservation')->getQuery()
+ ->condition('user_id', $user->id())
+ ->condition('reservation_date', $yyyy_mmdd . '%', 'like')
->execute();
$record_count = count($ids);
}
-
if ($record_count < $max) {
return FALSE;
}
@@ -970,9 +964,8 @@ function reserve_user_reservations() {
if ($user->id()) {
$earliest_date = date('Y-m-d', strtotime(date('Y-m-d')));
$latest_date = date('Y-m-d', strtotime("now +13 days"));
-
- $ids = \Drupal::service('entity.query')
- ->get('reserve_reservation')
+ $ids = \Drupal::service('entity_type.manager')
+ ->getStorage('reserve_reservation')->getQuery()
->condition('user_id', $user->id())
->condition('reservation_date', $earliest_date, '>=')
->condition('reservation_date', $latest_date, '<=')
@@ -1032,7 +1025,7 @@ function reserve_yyyymmdd($month, $day) {
*/
function reserve_get_reserve_bundles() {
$bundles = array();
- $fieldmap = \Drupal::entityManager()->getFieldMap();
+ $fieldmap = \Drupal::service('entity_field.manager')->getFieldMap();
foreach ($fieldmap as $entity_type => $typedef) {
foreach ($typedef as $field) {
if ($field['type'] == 'reserve_category') {
@@ -1050,7 +1043,7 @@ function reserve_get_reserve_bundles() {
* OR specific field name if $ebundle is provided (e.g. node.room)
*/
function reserve_category_fields($ebundle = NULL) {
- $fieldmap = \Drupal::entityManager()->getFieldMap();
+ $fieldmap = \Drupal::service('entity_field.manager')->getFieldMap();
$fields = [];
foreach ($fieldmap as $entity_type => $typedef) {
foreach ($typedef as $name => $field) {
@@ -1071,8 +1064,9 @@ function reserve_category_fields($ebundle = NULL) {
function ebundle_split($ebundle, $part) {
$ebits = explode('.', $ebundle);
- if ($part == 'type') return $ebits[0];
- if ($part == 'bundle') return $ebits[1];
+ if ($part == 'type' && isset($ebits[0])) return $ebits[0];
+ if ($part == 'bundle' && isset($ebits[1])) return $ebits[1];
+ return NULL;
}
/*
@@ -1112,7 +1106,7 @@ function reserve_which_year($month, $day) {
* used for Allowed Values for Reservation.reservable_content_type field
*/
function reserve_site_entity_types() {
- $types = \Drupal::entityManager()->getEntityTypeLabels(TRUE);
+ $types = \Drupal::service('entity_type.repository')->getEntityTypeLabels(TRUE);
return $types['Content'];
}
diff --git a/reserve.info.yml b/reserve.info.yml
index b112d65..6975375 100644
--- a/reserve.info.yml
+++ b/reserve.info.yml
@@ -1,8 +1,8 @@
name: Reserve
type: module
description: Reservation system.
-core: 8.x
package: Reserve
+core_version_requirement: ^8 || ^9
dependencies:
- drupal:views
- drupal:options
diff --git a/reserve.series.inc b/reserve.series.inc
index ecdb5a5..bf075ac 100644
--- a/reserve.series.inc
+++ b/reserve.series.inc
@@ -36,7 +36,8 @@ function reserve_reserve_reservation_insert($entity) {
$length = $entity->reservation_length->getString();
$rid = $entity->reservable_id->getString();
$rtype = $entity->reservable_content_type->getString();
- $ebundle = $rtype . '.' . entity_load($rtype, $rid)->bundle();
+ $ebundle = $rtype . '.' . \Drupal::entityTypeManager()
+ ->getStorage($rtype)->load($rid)->bundle();
$day = date('l', strtotime($start));
$msg = '';
@@ -85,12 +86,12 @@ function reserve_reserve_reservation_insert($entity) {
// lets spit out some useful msgs
// first clear the msg stating we just created the reservation entity
- drupal_get_messages('status');
- drupal_set_message(t('Your reservation series has been booked.'));
- drupal_set_message($msg);
+ \Drupal::messenger()->addStatus('status');
+ \Drupal::messenger()->addStatus(t('Your reservation series has been booked.'));
+ \Drupal::messenger()->addStatus($msg);
if (count($failed)) {
$dates = Markup::create('
' . implode('
', $failed));
- drupal_set_message(t('The following dates were not booked due to scheduling conflicts: %dates', array('%dates' => $dates)), 'warning');
+ \Drupal::messenger()->addWarning(t('The following dates were not booked due to scheduling conflicts: %dates', array('%dates' => $dates)));
}
}
@@ -122,12 +123,13 @@ function reserve_reserve_reservation_update($entity) {
$length = $entity->reservation_length->getString();
$rid = $entity->reservable_id->getString();
$rtype = $entity->reservable_content_type->getString();
- $ebundle = $rtype . '.' . entity_load($rtype, $rid)->bundle();
+ $ebundle = $rtype . '.' . \Drupal::entityTypeManager()
+ ->getStorage($rtype)->load($rid)->bundle();
$private = $entity->reservation_private->getString();
// grab all reservations in this series except the one being submitted
- $ids = \Drupal::service('entity.query')
- ->get('reserve_reservation')
+ $ids = \Drupal::service('entity_type.manager')
+ ->getStorage('reserve_reservation')->getQuery()
->condition('status', TRUE)
->condition('reservation_series_id', $sid)
->condition('id', $entity->id(), '!=')
@@ -156,10 +158,10 @@ function reserve_reserve_reservation_update($entity) {
}
// lets spit out some useful msgs
- drupal_set_message(t('Your reservation series has been modified.'));
+ \Drupal::messenger()->addStatus(t('Your reservation series has been modified.'));
if (count($failed)) {
$dates = Markup::create('
' . implode('
', $failed));
- drupal_set_message(t('NOTE: The following dates did not have their length changed due to scheduling conflicts: %dates', array('%dates' => $dates)), 'warning');
+ \Drupal::messenger()->addStatus(t('NOTE: The following dates did not have their length changed due to scheduling conflicts: %dates', array('%dates' => $dates)));
}
}
@@ -179,8 +181,8 @@ function reserve_reserve_reservation_delete($entity) {
function _reserve_series_delete($entity) {
$sid = $entity->get('reservation_series_id')->getString();
// grab all reservations in this series
- $ids = \Drupal::service('entity.query')
- ->get('reserve_reservation')
+ $ids = \Drupal::service('entity_type.manager')
+ ->getStorage('reserve_reservation')->getQuery()
->condition('reservation_series_id', $sid)
->execute();
$results = \Drupal::entityTypeManager()->getStorage('reserve_reservation')->loadMultiple($ids);
@@ -188,5 +190,5 @@ function _reserve_series_delete($entity) {
$result->delete();
}
$title = $entity->get('name')->getString();
- drupal_set_message(t('The reservation series @title was deleted.', array('@title' => $title)));
+ \Drupal::messenger()->addStatus(t('The reservation series @title was deleted.', array('@title' => $title)));
}
diff --git a/src/Controller/CalendarController.php b/src/Controller/CalendarController.php
index 1724719..8570f11 100644
--- a/src/Controller/CalendarController.php
+++ b/src/Controller/CalendarController.php
@@ -36,13 +36,17 @@ class CalendarController extends ControllerBase {
public function calendarTitle($ebundle) {
$bundle = ebundle_split($ebundle, 'bundle');
- return t('@bundle Calendar', array('@bundle' => ucwords($bundle)));
+ $type = ebundle_split($ebundle, 'type');
+ $bundles = \Drupal::service('entity_type.bundle.info')->getBundleInfo($type);
+ $titlePrefix = isset($bundles[$bundle]) ? $bundles[$bundle]['label'] : $bundle;
+ return t('@bundle Calendar', array('@bundle' => ucwords($titlePrefix)));
}
private function getBundleCalendar($ebundle, $selected_month = null, $selected_day = null) {
$config = \Drupal::config('reserve.settings');
// likely no need for this as not used anywhere else; but maybe for external modules
global $yyyy_mmdd;
+
//$entity_type = ebundle_split($ebundle, 'type');
//$bundle = ebundle_split($ebundle, 'bundle');
@@ -57,7 +61,7 @@ class CalendarController extends ControllerBase {
// if no Categories left; we should not bother with the rest of this
if (!count($categories)) {
- drupal_set_message(t('There are no configured Reserve Categories. Please contact the System Administrator'), 'warning');
+ \Drupal::messenger()->addWarning(t('There are no configured Reserve Categories. Please contact the System Administrator'));
return '';
}
@@ -67,15 +71,22 @@ class CalendarController extends ControllerBase {
// Determine which day has been selected by the user. If the user has entered a url that specifies a day outside of the
// allowable reservation window, then set the current day as the selected day.
$yyyy_mmdd = $dates[0]['yyyymmdd'];
+ $day_selected = false;
foreach ($dates as $day) {
if ($day['selected']) {
$yyyy_mmdd = $day['yyyymmdd'];
+ $day_selected = TRUE;
}
}
if ($yyyy_mmdd == $dates[0]['yyyymmdd']) {
$dates[0]['selected'] = TRUE;
$dates[0]['today'] = TRUE;
}
+ if(!$day_selected) {
+ \Drupal::messenger()->addWarning(t('You have chosen a date to far in the '
+ . 'future. Please choose a date within 14 days of today. The Calendar'
+ . ' view below has defaulted to todays date.'));
+ }
// a bit hacky; but we need to store what the calendar is using for its date so we can use this in theme functions later
//$_SESSION['reservations_current_day'] = $yyyy_mmdd;
@@ -171,8 +182,8 @@ class CalendarController extends ControllerBase {
}
$results = array();
- $ids = \Drupal::service('entity.query')
- ->get('reserve_reservation')
+ $ids = \Drupal::service('entity_type.manager')
+ ->getStorage('reserve_reservation')->getQuery()
->condition('status', TRUE)
->condition('reservation_date', $yyyy_mmdd . '%', 'like')
->condition('reservation_ebundle', $ebundle)
@@ -357,7 +368,7 @@ class CalendarController extends ControllerBase {
$variables['#reserve_room_instructions_text'] = $config->get('reserve_instructions') ? $config->get('reserve_instructions') :
t('To make a reservation, click on the desired time/day in the calendar below. You will be asked to login.');
$variables['#arrow'] = base_path() . drupal_get_path('module', 'reserve') . '/images/arrow-icon.png';
- $variables['#date'] = format_date(strtotime($month . ' ' . $xday . ', ' . $year), 'custom', 'l, F d, Y');
+ $variables['#date'] = \Drupal::service('date.formatter')->format(strtotime($month . ' ' . $xday . ', ' . $year), 'custom', 'l, F d, Y');
$variables['#date_picker'] = \Drupal::formBuilder()->getForm('Drupal\reserve\Form\CalendarDatePicker');
$field = reserve_category_fields($ebundle);
@@ -494,7 +505,8 @@ class CalendarController extends ControllerBase {
// The time slot has a reservation that can be edited by the current user.
if ($id = $reservations[$rid][$time]['id']) {
- $reservation = entity_load('reserve_reservation', $id);
+ $reservation = \Drupal::entityTypeManager()
+ ->getStorage('reserve_reservation')->load($id);
$viewable_class = $reservation->access('update') ? 'viewable' : '';
if ($viewable_class == 'viewable') {
$options = array_merge_recursive($modal, array(
diff --git a/src/Controller/ReservePermissions.php b/src/Controller/ReservePermissions.php
index 5a23065..b2e14fe 100644
--- a/src/Controller/ReservePermissions.php
+++ b/src/Controller/ReservePermissions.php
@@ -4,7 +4,7 @@
namespace Drupal\reserve\Controller;
use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
-use Drupal\Core\Entity\EntityManagerInterface;
+use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Symfony\Component\DependencyInjection\ContainerInterface;
@@ -13,19 +13,19 @@ class ReservePermissions implements ContainerInjectionInterface {
use StringTranslationTrait;
/**
- * The entity manager.
+ * The entity type manager.
*
- * @var \Drupal\Core\Entity\EntityManagerInterface
+ * @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityManager;
/**
* Constructs a TaxonomyViewsIntegratorPermissions instance.
*
- * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
+ * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_manager
* The entity manager.
*/
- public function __construct(EntityManagerInterface $entity_manager) {
+ public function __construct(EntityTypeManagerInterface $entity_manager) {
$this->entityManager = $entity_manager;
}
@@ -33,7 +33,7 @@ class ReservePermissions implements ContainerInjectionInterface {
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
- return new static($container->get('entity.manager'));
+ return new static($container->get('entity_type.manager'));
}
/**
diff --git a/src/Form/CalendarDatePicker.php b/src/Form/CalendarDatePicker.php
index 9cd892b..0015cee 100644
--- a/src/Form/CalendarDatePicker.php
+++ b/src/Form/CalendarDatePicker.php
@@ -49,7 +49,7 @@ class CalendarDatePicker extends FormBase {
public function submitForm(array &$form, FormStateInterface $form_state) {
// Display result.
foreach ($form_state->getValues() as $key => $value) {
- drupal_set_message($key . ': ' . $value);
+ \Drupal::messenger()->addStatus($key . ': ' . $value);
}
}
diff --git a/src/Form/ReserveCategoryForm.php b/src/Form/ReserveCategoryForm.php
index 557c971..749bfaa 100644
--- a/src/Form/ReserveCategoryForm.php
+++ b/src/Form/ReserveCategoryForm.php
@@ -34,13 +34,13 @@ class ReserveCategoryForm extends ContentEntityForm {
switch ($status) {
case SAVED_NEW:
- drupal_set_message($this->t('Created the %label Reservation Category.', [
+ \Drupal::messenger()->addStatus($this->t('Created the %label Reservation Category.', [
'%label' => $entity->label(),
]));
break;
default:
- drupal_set_message($this->t('Saved the %label Reservation Category.', [
+ \Drupal::messenger()->addStatus($this->t('Saved the %label Reservation Category.', [
'%label' => $entity->label(),
]));
}
diff --git a/src/Form/ReserveDailyHoursForm.php b/src/Form/ReserveDailyHoursForm.php
index 54e8e5f..a380586 100644
--- a/src/Form/ReserveDailyHoursForm.php
+++ b/src/Form/ReserveDailyHoursForm.php
@@ -245,6 +245,6 @@ class ReserveDailyHoursForm extends ConfigFormBase {
$this->config('reserve.monthly_hours')
->set($yyyy_mm, $updated_mo_hours)
->save();
- drupal_set_message($confirmation);
+ \Drupal::messenger()->addStatus($confirmation);
}
}
diff --git a/src/Form/ReserveDefaultHoursForm.php b/src/Form/ReserveDefaultHoursForm.php
index a539aa1..98b744c 100644
--- a/src/Form/ReserveDefaultHoursForm.php
+++ b/src/Form/ReserveDefaultHoursForm.php
@@ -296,13 +296,13 @@ class ReserveDefaultHoursForm extends ConfigFormBase {
$this->config('reserve.default_hours')
->set('data', $default_hours)
->save();
- drupal_set_message($confirmation);
+ \Drupal::messenger()->addStatus ($confirmation);
// save updated monthly override hours
$this->config('reserve.monthly_hours')
->set('data', $monthly_hours)
->save();
- drupal_set_message(t('Daily overrides updated with new defaults.'));
+ \Drupal::messenger()->addStatus(t('Daily overrides updated with new defaults.'));
}
}
diff --git a/src/Form/ReserveReservationForm.php b/src/Form/ReserveReservationForm.php
index 7194384..e137cbd 100644
--- a/src/Form/ReserveReservationForm.php
+++ b/src/Form/ReserveReservationForm.php
@@ -34,13 +34,13 @@ class ReserveReservationForm extends ContentEntityForm {
switch ($status) {
case SAVED_NEW:
- drupal_set_message($this->t('Created the %label Reservation.', [
+ \Drupal::messenger()->addStatus ($this->t('Created the %label Reservation.', [
'%label' => $entity->label(),
]));
break;
default:
- drupal_set_message($this->t('Saved the %label Reservation.', [
+ \Drupal::messenger()->addStatus($this->t('Saved the %label Reservation.', [
'%label' => $entity->label(),
]));
}
diff --git a/src/Form/ReserveSettingsForm.php b/src/Form/ReserveSettingsForm.php
index ce3242e..701523b 100644
--- a/src/Form/ReserveSettingsForm.php
+++ b/src/Form/ReserveSettingsForm.php
@@ -177,7 +177,7 @@ class ReserveSettingsForm extends ConfigFormBase {
$this->config('reserve.settings')->set($key, $value);
}
$this->config('reserve.settings')->save();
- drupal_set_message(RESERVE_SAVE_CONFIRMATION_MSG);
+ \Drupal::messenger()->addStatus(RESERVE_SAVE_CONFIRMATION_MSG);
}
}
diff --git a/src/ReserveCategoryListBuilder.php b/src/ReserveCategoryListBuilder.php
index 4a8a917..7e5d8bf 100644
--- a/src/ReserveCategoryListBuilder.php
+++ b/src/ReserveCategoryListBuilder.php
@@ -6,6 +6,7 @@ use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityListBuilder;
use Drupal\Core\Routing\LinkGeneratorTrait;
use Drupal\Core\Url;
+use Drupal\Core\Link;
/**
* Defines a class to build a listing of reservation categories.
@@ -14,7 +15,6 @@ use Drupal\Core\Url;
*/
class ReserveCategoryListBuilder extends EntityListBuilder {
- use LinkGeneratorTrait;
/**
* {@inheritdoc}
@@ -31,14 +31,14 @@ class ReserveCategoryListBuilder extends EntityListBuilder {
public function buildRow(EntityInterface $entity) {
/* @var $entity \Drupal\reserve\Entity\ReserveCategory */
$row['id'] = $entity->id();
- $row['name'] = $this->l(
+ $row['name'] = Link::fromTextAndUrl(
$entity->label(),
new Url(
'entity.reserve_category.edit_form', array(
'reserve_category' => $entity->id(),
)
)
- );
+ )->toString();
return $row + parent::buildRow($entity);
}
diff --git a/src/ReserveReservationAccessControlHandler.php b/src/ReserveReservationAccessControlHandler.php
index 7aab60e..fc01557 100644
--- a/src/ReserveReservationAccessControlHandler.php
+++ b/src/ReserveReservationAccessControlHandler.php
@@ -36,6 +36,9 @@ class ReserveReservationAccessControlHandler extends EntityAccessControlHandler
case 'delete':
$access = AccessResult::allowedIfHasPermission($account, 'delete any reservation');
+ if (!$access->isAllowed() && $account->hasPermission('delete own reservation')) {
+ $access = $access->orIf(AccessResult::allowedIf($account->id() == $entity->getOwnerId())->cachePerUser()->addCacheableDependency($entity));
+ }
break;
// Unknown operation, no opinion.
diff --git a/src/ReserveReservationListBuilder.php b/src/ReserveReservationListBuilder.php
index b2af230..68a91d7 100644
--- a/src/ReserveReservationListBuilder.php
+++ b/src/ReserveReservationListBuilder.php
@@ -6,6 +6,7 @@ use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityListBuilder;
use Drupal\Core\Routing\LinkGeneratorTrait;
use Drupal\Core\Url;
+use Drupal\Core\Link;
/**
* Defines a class to build a listing of reservations.
@@ -14,7 +15,6 @@ use Drupal\Core\Url;
*/
class ReserveReservationListBuilder extends EntityListBuilder {
- use LinkGeneratorTrait;
/**
* {@inheritdoc}
@@ -31,14 +31,14 @@ class ReserveReservationListBuilder extends EntityListBuilder {
public function buildRow(EntityInterface $entity) {
/* @var $entity \Drupal\reserve\Entity\ReserveReservation */
$row['id'] = $entity->id();
- $row['name'] = $this->l(
+ $row['name'] = Link::fromTextAndUrl(
$entity->label(),
new Url(
'entity.reserve_reservation.edit_form', array(
'reserve_reservation' => $entity->id(),
)
)
- );
+ )->toString();
return $row + parent::buildRow($entity);
}