' . 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('Setup') . '

'; $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_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, ), ), ); }