' . t('Overview') . ''; $output .= '
' . t('The Reserve module allows for the "booking" of entities. It provides a calendar for each bundle which is set up to be bookable. From this calendar you can see what time slots have been booked as well as select a time slot to book. Many options are provided to make a very flexible booking system.') . '
'; $output .= '' . t('A few things must be set up before you may use the booking system:') . '
' . t('The booking calendar will now be available at /reserve/{entitytype.bundle}/calendar. E.g. /reserve/node.room/calendar') . '
'; return $output; default: } } /** * Implements hook_form_alter(). */ function reserve_form_alter(array &$form, FormStateInterface $form_state, $form_id) { if ($form_state->getFormObject() instanceof BundleEntityFormBase) { (new BundleFormAlter($form_state->getFormObject()->getEntity())) ->formAlter($form, $form_state); } return; } /** * Implements hook_entity_insert(). */ function reserve_entity_insert(EntityInterface $entity) { reserve_entity_type_save($entity); } /** * Implements hook_entity_update(). */ function reserve_entity_update(EntityInterface $entity) { reserve_entity_type_save($entity); } /** * Helper to save group information. * * @param \Drupal\Core\Entity\EntityInterface $entity * The entity object. */ function reserve_entity_type_save(EntityInterface $entity) { $bundle = $entity->id(); $definition = \Drupal::entityTypeManager()->getDefinition($entity->getEntityTypeId()); $entity_type_id = $definition->getBundleOf(); } /** * Implements hook_theme(). */ function reserve_theme($existing, $type, $theme, $path) { return array( 'calendar_template' => array( 'variables' => array( 'date_picker' => NULL, 'arrow' => NULL, 'date' => NULL, 'calendar_text' => NULL, 'dates' => NULL, 'categories' => NULL, 'calendar_header' => NULL, 'reservation_instructions' => NULL, 'building_hours_display' => NULL, ), ), ); }