You are here

function calendar_view_plugin_style::options_form in Calendar 6.2

Same name and namespace in other branches
  1. 7 includes/calendar_view_plugin_style.inc \calendar_view_plugin_style::options_form()
  2. 7.2 includes/calendar_view_plugin_style.inc \calendar_view_plugin_style::options_form()

Style options.

File

includes/calendar_view_plugin_style.inc, line 71

Class

calendar_view_plugin_style
Style plugin to render the year, month, week, or day calendar view.

Code

function options_form(&$form, &$form_state) {
  $calendar_type = $this->display->handler
    ->get_option('calendar_type');
  $form['name_size'] = array(
    '#title' => t('Calendar day of week names'),
    '#default_value' => $this->options['name_size'],
    '#type' => in_array($calendar_type, array(
      'year',
      'month',
      'week',
    )) ? 'radios' : 'value',
    '#options' => array(
      1 => t('First letter of name'),
      2 => t('First two letters of name'),
      3 => t('Abbreviated name'),
      99 => t('Full name'),
    ),
    '#description' => t('The way day of week names should be displayed in a calendar.'),
  );
  $form['with_weekno'] = array(
    '#title' => t('Show week numbers'),
    '#default_value' => $this->options['with_weekno'],
    '#type' => in_array($calendar_type, array(
      'month',
    )) ? 'radios' : 'value',
    '#options' => array(
      0 => t('No'),
      1 => t('Yes'),
    ),
    '#description' => t('Whether or not to show week numbers in the left column of calendar weeks and months.'),
  );
  $form['max_items'] = array(
    '#title' => t('Maximum items'),
    '#type' => in_array($calendar_type, array(
      'month',
    )) ? 'select' : 'value',
    '#options' => array(
      CALENDAR_SHOW_ALL => t('Unlimited'),
      CALENDAR_HIDE_ALL => t('No items'),
      1 => format_plural(1, '1 item', '@count items'),
      3 => format_plural(3, '1 item', '@count items'),
      5 => format_plural(5, '1 item', '@count items'),
      10 => format_plural(10, '1 item', '@count items'),
    ),
    '#default_value' => $calendar_type != 'day' ? $this->options['max_items'] : 0,
    '#description' => t('Maximum number of items to show in calendar cells, used to keep the calendar from expanding to a huge size when there are lots of items in one day. '),
  );
  $form['max_items_behavior'] = array(
    '#title' => t('Too many items'),
    '#type' => in_array($calendar_type, array(
      'month',
    )) ? 'select' : 'value',
    '#options' => array(
      'more' => t("Show maximum, add 'more' link"),
      'hide' => t('Hide all, add link to day'),
    ),
    '#default_value' => $calendar_type != 'day' ? $this->options['max_items_behavior'] : 'more',
    '#description' => t('Behavior when there are more than the above number of items in a single day. When there more items than this limit, a link to the day view will be displayed.'),
  );
  $form['groupby_times'] = array(
    '#title' => t('Time grouping'),
    '#type' => in_array($calendar_type, array(
      'day',
      'week',
    )) ? 'select' : 'value',
    '#default_value' => $this->options['groupby_times'],
    '#description' => t("Group items together into time periods based on their start time."),
    '#options' => array(
      '' => t('None'),
      'hour' => t('Hour'),
      'half' => t('Half hour'),
      'custom' => t('Custom'),
    ),
  );
  $form['groupby_times_custom'] = array(
    '#title' => t('Custom time grouping'),
    '#type' => in_array($calendar_type, array(
      'day',
      'week',
    )) ? 'textarea' : 'value',
    '#default_value' => $this->options['groupby_times_custom'],
    '#description' => t("When choosing the 'custom' Time grouping option above, create custom time period groupings as a comma-separated list of 24-hour times in the format HH:MM:SS, like '00:00:00,08:00:00,18:00:00'. Be sure to start with '00:00:00'. All items after the last time will go in the final group."),
  );

  // Create a list of fields that are available for grouping and truncation,
  // excluding the date fields in the view from the grouping options.
  $field_options = array();
  $date_field_options = array();
  $fields = $this->display->handler
    ->get_option('fields');
  $date_fields = array_keys($this
    ->date_fields());
  foreach ($fields as $field_name => $field) {
    $handler = views_get_handler($field['table'], $field['field'], 'field');
    if (!in_array($field['table'] . '.' . $field['field'], $date_fields)) {
      $field_options[$field['table'] . '_' . $field['field']] = $handler
        ->ui_name();
    }
    else {
      $date_field_options[$field['table'] . '_' . $field['field']] = $handler
        ->ui_name();
    }
  }
  $form['groupby_field'] = array(
    '#title' => t('Field grouping'),
    '#type' => in_array($calendar_type, array(
      'day',
    )) ? 'select' : 'value',
    '#default_value' => $this->options['groupby_field'],
    '#description' => t("Optionally group items into columns by a field value, for instance select the content type to show items for each content type in their own column, or use a location field to organize items into columns by location."),
    '#options' => array(
      '' => '',
    ) + $field_options,
  );
  if (module_exists('calendar_multiday')) {
    $form['multiday_theme'] = array(
      '#title' => t('Multi-day style'),
      '#default_value' => $this->options['multiday_theme'],
      '#type' => in_array($calendar_type, array(
        'month',
        'week',
      )) ? 'select' : 'value',
      '#options' => array(
        0 => t('Display multi-day item as a single column'),
        1 => t('Display multi-day item as a multiple column row'),
      ),
      '#description' => t('If selected, items which span multiple days will displayed as a multi-column row.  If not selected, items will be displayed as an individual column.'),
    );
    $form['theme_style'] = array(
      '#title' => t('Overlapping time style'),
      '#default_value' => $this->options['theme_style'],
      '#type' => in_array($calendar_type, array(
        'day',
        'week',
      )) ? 'select' : 'value',
      '#options' => array(
        0 => t('Do not display overlapping items'),
        1 => t('Display overlapping items'),
      ),
      '#description' => t('Select whether calendar items are displayed as overlapping items.'),
    );
  }
  foreach ($form as $key => $value) {
    if ($value['#type'] == 'value') {
      $form[$key]['#value'] = $value['#default_value'];
    }
  }
}