| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411 | 
							- <?php
 
- /**
 
-  * @file
 
-  * Theme functions.
 
-  */
 
- /**
 
-  * @addtogroup themeable
 
-  * @{
 
-  *
 
-  * Formatter themes
 
-  */
 
- /**
 
-  * Returns HTML for a date element formatted as a Start/End combination.
 
-  *
 
-  *  $entity->date_id
 
-  *    If set, this will show only an individual date on a field with
 
-  *    multiple dates. The value should be a string that contains
 
-  *    the following values, separated with periods:
 
-  *    - module name of the module adding the item
 
-  *    - node nid
 
-  *    - field name
 
-  *    - delta value of the field to be displayed
 
-  *    - other information the module's custom theme might need
 
-  *
 
-  *    Used by the calendar module and available for other uses.
 
-  *    example: 'date.217.field_date.3.test'
 
-  *
 
-  *  $entity->date_repeat_show
 
-  *    If true, tells the theme to show all the computed values of a repeating
 
-  *    date. If not true or not set, only the start date and the repeat rule
 
-  *    will be displayed.
 
-  *
 
-  *  $dates['format']
 
-  *    The format string used on these dates
 
-  *  $dates['value']['local']['object']
 
-  *    The local date object for the Start date
 
-  *  $dates['value2']['local']['object']
 
-  *    The local date object for the End date
 
-  *  $dates['value']['local']['datetime']
 
-  *    The datetime value of the Start date database (GMT) value
 
-  *  $dates['value2']['local']['datetime']
 
-  *    The datetime value of the End date database (GMT) value
 
-  *  $dates['value']['formatted']
 
-  *    Formatted Start date, i.e. 'February 15, 2007 2:00 pm';
 
-  *  $dates['value']['formatted_date']
 
-  *    Only the date part of the formatted Start date
 
-  *  $dates['value']['formatted_time']
 
-  *    Only the time part of the formatted Start date
 
-  *  $dates['value2']['formatted']
 
-  *    Formatted End date, i.e. 'February 15, 2007 6:00 pm';
 
-  *  $dates['value2']['formatted_date']
 
-  *    Only the date part of the formatted End date
 
-  *  $dates['value2']['formatted_time']
 
-  *    Only the time part of the formatted End date
 
-  */
 
- function theme_date_display_combination($variables) {
 
-   static $repeating_ids = array();
 
-   $entity_type = $variables['entity_type'];
 
-   $entity      = $variables['entity'];
 
-   $field       = $variables['field'];
 
-   $instance    = $variables['instance'];
 
-   $langcode    = $variables['langcode'];
 
-   $item        = $variables['item'];
 
-   $delta       = $variables['delta'];
 
-   $display     = $variables['display'];
 
-   $field_name  = $field['field_name'];
 
-   $formatter   = $display['type'];
 
-   $options     = $display['settings'];
 
-   $dates       = $variables['dates'];
 
-   $attributes  = $variables['attributes'];
 
-   $rdf_mapping = $variables['rdf_mapping'];
 
-   $add_rdf     = $variables['add_rdf'];
 
-   $microdata   = $variables['microdata'];
 
-   $add_microdata = $variables['add_microdata'];
 
-   $precision   = date_granularity_precision($field['settings']['granularity']);
 
-   $output = '';
 
-   // If date_id is set for this field and delta doesn't match, don't display it.
 
-   if (!empty($entity->date_id)) {
 
-     foreach ((array) $entity->date_id as $key => $id) {
 
-       list($module, $nid, $field_name, $item_delta, $other) = explode('.', $id . '.');
 
-       if ($field_name == $field['field_name'] && isset($delta) && $item_delta != $delta) {
 
-         return $output;
 
-       }
 
-     }
 
-   }
 
-   // Check the formatter settings to see if the repeat rule should be displayed.
 
-   // Show it only with the first multiple value date.
 
-   list($id) = entity_extract_ids($entity_type, $entity);
 
-   if (!in_array($id, $repeating_ids) && module_exists('date_repeat_field') && !empty($item['rrule']) && $options['show_repeat_rule'] == 'show') {
 
-     $repeat_vars = array(
 
-       'field' => $field,
 
-       'item' => $item,
 
-       'entity_type' => $entity_type,
 
-       'entity' => $entity,
 
-     );
 
-     $output .= theme('date_repeat_display', $repeat_vars);
 
-     $repeating_ids[] = $id;
 
-   }
 
-   // If this is a full node or a pseudo node created by grouping multiple
 
-   // values, see exactly which values are supposed to be visible.
 
-   if (isset($entity->$field_name)) {
 
-     $entity = date_prepare_entity($formatter, $entity_type, $entity, $field, $instance, $langcode, $item, $display);
 
-     // Did the current value get removed by formatter settings?
 
-     if (empty($entity->{$field_name}[$langcode][$delta])) {
 
-       return $output;
 
-     }
 
-     // Adjust the $element values to match the changes.
 
-     $element['#entity'] = $entity;
 
-   }
 
-   switch ($options['fromto']) {
 
-     case 'value':
 
-       $date1 = $dates['value']['formatted'];
 
-       $date2 = $date1;
 
-       break;
 
-     case 'value2':
 
-       $date2 = $dates['value2']['formatted'];
 
-       $date1 = $date2;
 
-       break;
 
-     default:
 
-       $date1 = $dates['value']['formatted'];
 
-       $date2 = $dates['value2']['formatted'];
 
-       break;
 
-   }
 
-   // Pull the timezone, if any, out of the formatted result and tack it back on
 
-   // at the end, if it is in the current formatted date.
 
-   $timezone = $dates['value']['formatted_timezone'];
 
-   if ($timezone) {
 
-     $timezone = ' ' . $timezone;
 
-   }
 
-   $date1 = str_replace($timezone, '', $date1);
 
-   $date2 = str_replace($timezone, '', $date2);
 
-   $time1 = preg_replace('`^([\(\[])`', '', $dates['value']['formatted_time']);
 
-   $time1 = preg_replace('([\)\]]$)', '', $time1);
 
-   $time2 = preg_replace('`^([\(\[])`', '', $dates['value2']['formatted_time']);
 
-   $time2 = preg_replace('([\)\]]$)', '', $time2);
 
-   // A date with a granularity of 'hour' has a time string that is an integer
 
-   // value. We can't use that to replace time strings in formatted dates.
 
-   $has_time_string = date_has_time($field['settings']['granularity']);
 
-   if ($precision == 'hour') {
 
-     $has_time_string = FALSE;
 
-   }
 
-   // No date values, display nothing.
 
-   if (empty($date1) && empty($date2)) {
 
-     $output .= '';
 
-   }
 
-   // Start and End dates match or there is no End date, display a complete
 
-   // single date.
 
-   elseif ($date1 == $date2 || empty($date2)) {
 
-     $output .= theme('date_display_single', array(
 
-       'date' => $date1,
 
-       'timezone' => $timezone,
 
-       'attributes' => $attributes,
 
-       'rdf_mapping' => $rdf_mapping,
 
-       'add_rdf' => $add_rdf,
 
-       'microdata' => $microdata,
 
-       'add_microdata' => $add_microdata,
 
-       'dates' => $dates,
 
-     ));
 
-   }
 
-   // Same day, different times, don't repeat the date but show both Start and
 
-   // End times. We can NOT do this if the replacement value is an integer
 
-   // instead of a time string.
 
-   elseif ($has_time_string && $dates['value']['formatted_date'] == $dates['value2']['formatted_date']) {
 
-     // Replace the original time with the start/end time in the formatted start
 
-     // date. Make sure that parentheses or brackets wrapping the time will be
 
-     // retained in the final result.
 
-     $time = theme('date_display_range', array(
 
-       'date1' => $time1,
 
-       'date2' => $time2,
 
-       'timezone' => $timezone,
 
-       'attributes' => $attributes,
 
-       'rdf_mapping' => $rdf_mapping,
 
-       'add_rdf' => $add_rdf,
 
-       'microdata' => $microdata,
 
-       'add_microdata' => $add_microdata,
 
-       'dates' => $dates,
 
-     ));
 
-     $replaced = str_replace($time1, $time, $date1);
 
-     $output .= theme('date_display_single', array(
 
-       'date' => $replaced,
 
-       'timezone' => $timezone,
 
-       'attributes' => array(),
 
-       'rdf_mapping' => array(),
 
-       'add_rdf' => FALSE,
 
-       'dates' => $dates,
 
-     ));
 
-   }
 
-   // Different days, display both in their entirety.
 
-   else {
 
-     $output .= theme('date_display_range', array(
 
-       'date1' => $date1,
 
-       'date2' => $date2,
 
-       'timezone' => $timezone,
 
-       'attributes' => $attributes,
 
-       'rdf_mapping' => $rdf_mapping,
 
-       'add_rdf' => $add_rdf,
 
-       'microdata' => $microdata,
 
-       'add_microdata' => $add_microdata,
 
-       'dates' => $dates,
 
-     ));
 
-   }
 
-   return $output;
 
- }
 
- /**
 
-  * Template preprocess function for displaying a single date.
 
-  */
 
- function template_preprocess_date_display_single(&$variables) {
 
-   if ($variables['add_rdf'] || !empty($variables['add_microdata'])) {
 
-     // Pass along the rdf mapping for this field, if any. Add some default rdf
 
-     // attributes that will be used if not overridden by attributes passed in.
 
-     $rdf_mapping = $variables['rdf_mapping'];
 
-     $base_attributes = array(
 
-       'property' => array('dc:date'),
 
-       'datatype' => 'xsd:dateTime',
 
-       'content' => $variables['dates']['value']['formatted_iso'],
 
-     );
 
-     $variables['attributes'] = $variables['attributes'] + $base_attributes;
 
-   }
 
-   // Pass along microdata attributes, or set display to false if none are set.
 
-   if (!empty($variables['add_microdata'])) {
 
-     // Because the Entity API integration for Date has a variable data
 
-     // structure depending on whether there is an end value, the attributes
 
-     // could be attached to the field or to the value property.
 
-     if(!empty($variables['microdata']['#attributes']['itemprop'])) {
 
-       $variables['microdata']['value']['#attributes'] = $variables['microdata']['#attributes'];
 
-     }
 
-     // Add the machine readable time using the content attribute.
 
-     if(!empty($variables['microdata']['value']['#attributes'])) {
 
-       $variables['microdata']['value']['#attributes']['content'] = $variables['dates']['value']['formatted_iso'];
 
-     }
 
-     else {
 
-       $variables['add_microdata'] = FALSE;
 
-     }
 
-   }
 
- }
 
- /**
 
-  * Returns HTML for a date element formatted as a single date.
 
-  */
 
- function theme_date_display_single($variables) {
 
-   $date = $variables['date'];
 
-   $timezone = $variables['timezone'];
 
-   $attributes = $variables['attributes'];
 
-   // Wrap the result with the attributes.
 
-   $output = '<span class="date-display-single"' . drupal_attributes($attributes) . '>' . $date . $timezone . '</span>';
 
-   if (!empty($variables['add_microdata'])) {
 
-     $output .= '<meta' . drupal_attributes($variables['microdata']['value']['#attributes']) . '/>';
 
-   }
 
-   return $output;
 
- }
 
- /**
 
-  * Template preprocess function for displaying a range of dates.
 
-  */
 
- function template_preprocess_date_display_range(&$variables) {
 
-   // Merge in the shared attributes for themes to use.
 
-   $variables['attributes_start'] += $variables['attributes'];
 
-   $variables['attributes_end'] += $variables['attributes'];
 
-   if ($variables['add_rdf']) {
 
-     // Pass along the rdf mapping for this field, if any. Add some default rdf
 
-     // attributes that will be used if not overridden by attributes passed in.
 
-     $dates = $variables['dates'];
 
-     $base_attributes = array(
 
-       'property' => array('dc:date'),
 
-       'datatype' => 'xsd:dateTime',
 
-       'content' => $dates['value']['formatted_iso'],
 
-     );
 
-     $variables['attributes_start'] += $base_attributes;
 
-     $variables['attributes_end'] += $base_attributes;
 
-     $variables['attributes_end']['content'] = $dates['value2']['formatted_iso'];
 
-     foreach ($variables['attributes_end']['property'] as $delta => $property) {
 
-       $variables['attributes_end']['property'][$delta] = str_replace('start', 'end', $property);
 
-     }
 
-   }
 
-   // Pass along microdata attributes, or set display to false if none are set.
 
-   if ($variables['add_microdata']) {
 
-     if (!empty($variables['microdata']['value']['#attributes'])) {
 
-       $variables['microdata']['value']['#attributes']['content'] = $variables['dates']['value']['formatted_iso'];
 
-       $variables['microdata']['value2']['#attributes']['content'] = $variables['dates']['value2']['formatted_iso'];
 
-     }
 
-     else {
 
-       $variables['add_microdata'] = FALSE;
 
-     }
 
-   }
 
- }
 
- /**
 
-  * Returns HTML for a date element formatted as a range.
 
-  */
 
- function theme_date_display_range($variables) {
 
-   $date1 = $variables['date1'];
 
-   $date2 = $variables['date2'];
 
-   $timezone = $variables['timezone'];
 
-   $attributes_start = $variables['attributes_start'];
 
-   $attributes_end = $variables['attributes_end'];
 
-   $start_date = '<span class="date-display-start"' . drupal_attributes($attributes_start) . '>' . $date1 . '</span>';
 
-   $end_date = '<span class="date-display-end"' . drupal_attributes($attributes_end) . '>' . $date2 . $timezone . '</span>';
 
-   // If microdata attributes for the start date property have been passed in,
 
-   // add the microdata in meta tags.
 
-   if (!empty($variables['add_microdata'])) {
 
-     $start_date .= '<meta' . drupal_attributes($variables['microdata']['value']['#attributes']) . '/>';
 
-     $end_date .= '<meta' . drupal_attributes($variables['microdata']['value2']['#attributes']) . '/>';
 
-   }
 
-   // Wrap the result with the attributes.
 
-   return t('!start-date to !end-date', array(
 
-     '!start-date' => $start_date,
 
-     '!end-date' => $end_date,
 
-   ));
 
- }
 
- /**
 
-  * Returns HTML for a date element formatted as an interval.
 
-  */
 
- function theme_date_display_interval($variables) {
 
-   $entity = $variables['entity'];
 
-   $options = $variables['display']['settings'];
 
-   $dates = $variables['dates'];
 
-   $attributes = $variables['attributes'];
 
-   // Get the formatter settings, either the default settings for this node type
 
-   // or the View settings stored in $entity->date_info.
 
-   if (!empty($entity->date_info) && !empty($entity->date_info->formatter_settings)) {
 
-     $options = $entity->date_info->formatter_settings;
 
-   }
 
-   $time_ago_vars = array(
 
-     'start_date' => $dates['value']['local']['object'],
 
-     'end_date' => $dates['value2']['local']['object'],
 
-     'interval' => $options['interval'],
 
-     'interval_display' => $options['interval_display'],
 
-   );
 
-   if ($return = theme('date_time_ago', $time_ago_vars)) {
 
-     return '<span class="date-display-interval"' . drupal_attributes($attributes) . ">$return</span>";
 
-   }
 
-   else {
 
-     return '';
 
-   }
 
- }
 
- /**
 
-  * Returns HTML for a start/end date combination on form.
 
-  */
 
- function theme_date_combo($variables) {
 
-   $element = $variables['element'];
 
-   $field = field_info_field($element['#field_name']);
 
-   $instance = field_info_instance($element['#entity_type'], $element['#field_name'], $element['#bundle']);
 
-   // Group start/end items together in fieldset.
 
-   $fieldset = array(
 
-     '#title' => field_filter_xss(t($element['#title'])) . ' ' . ($element['#delta'] > 0 ? intval($element['#delta'] + 1) : ''),
 
-     '#value' => '',
 
-     '#description' => !empty($element['#fieldset_description']) ? $element['#fieldset_description'] : '',
 
-     '#attributes' => array(),
 
-     '#children' => $element['#children'],
 
-   );
 
-   // Add marker to required date fields.
 
-   if ($element['#required']) {
 
-     $fieldset['#title'] .= " " . theme('form_required_marker');
 
-   }
 
-   return theme('fieldset', array('element' => $fieldset));
 
- }
 
- /**
 
-  * Returns HTML for the text/select options for date parts in a table.
 
-  */
 
- function theme_date_text_parts($variables) {
 
-   $element = $variables['element'];
 
-   $rows = array();
 
-   foreach (date_granularity_names() as $key => $part) {
 
-     if ($element[$key]['#type'] == 'hidden') {
 
-       $rows[] = drupal_render($element[$key]);
 
-     }
 
-     else {
 
-       $rows[] = array($part, drupal_render($element[$key][0]), drupal_render($element[$key][1]));
 
-     }
 
-   }
 
-   if ($element['year']['#type'] == 'hidden') {
 
-     return implode($rows) . drupal_render_children($element);
 
-   }
 
-   else {
 
-     $header = array(t('Date part'), t('Select list'), t('Text field'));
 
-     return theme('table', array('header' => $header, 'rows' => $rows)) . drupal_render_children($element);
 
-   }
 
- }
 
- /** @} End of addtogroup themeable */
 
 
  |