function rooms_availability_reference_field_formatter_view in Rooms - Drupal Booking for Hotels, B&Bs and Vacation Rentals 7
Implements hook_field_formatter_view().
@todo parametrize date range
File
- modules/
rooms_availability_reference/ rooms_availability_reference.module, line 86 - Defines a field type for referencing availability information
Code
function rooms_availability_reference_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$result = array();
$element = array();
$js_settings = array();
switch ($display['type']) {
case 'rooms_availability_reference_default':
if ($field['type'] == 'entityreference' && $field['settings']['target_type'] != 'rooms_unit') {
return $element;
}
rooms_fullcalendar_loaded();
// Full day events on calendar.
if (variable_get('rooms_calendar_events_view', '0') == '1') {
drupal_add_js(drupal_get_path('module', 'rooms_availability_reference') . '/js/rooms_availability_reference_full_day.js');
}
else {
drupal_add_js(drupal_get_path('module', 'rooms_availability_reference') . '/js/rooms_availability_reference.js');
}
drupal_add_css(drupal_get_path('module', 'rooms_availability') . '/css/fullcalendar.theme.css');
drupal_add_css(drupal_get_path('module', 'rooms_availability_reference') . '/css/rooms_availability_reference_calendar.css');
$unit_names = array();
$unit_ids = array();
$id = drupal_html_id($field['field_name'] . '-availability-formatter');
foreach ($items as $delta => $item) {
if ($field['type'] == 'entityreference') {
if (empty($item['access'])) {
continue;
}
$unit = $item['entity'];
}
else {
$unit = rooms_unit_load($item['unit_id']);
}
if ($unit) {
$unit_names[] = $unit->name;
$unit_ids[] = $unit->unit_id;
}
}
if (!empty($unit_ids)) {
$result[] = array(
'#prefix' => '<div id="' . $id . '" class="availability-title">',
'#markup' => '<h2>' . implode(', ', $unit_names) . '</h2>',
'#suffix' => '</div>',
);
// Inject settings in javascript that we will use.
$js_settings[$id] = array(
'unitID' => $unit_ids,
'style' => ROOMS_AVAILABILITY_GENERIC_STYLE,
'firstDay' => intval(variable_get('date_first_day', 0)),
);
}
break;
}
if (!empty($result)) {
$element[] = array(
'#theme' => 'rooms_availability_field_calendar',
'calendar' => $result,
'#attached' => array(
'js' => array(
array(
'data' => array(
'roomsAvailabilityRef' => $js_settings,
),
'type' => 'setting',
),
),
),
);
}
return $element;
}