You are here

function system_date_time_settings in Drupal 6

Same name and namespace in other branches
  1. 5 modules/system/system.module \system_date_time_settings()
  2. 7 modules/system/system.admin.inc \system_date_time_settings()

Form builder; Configure the site date and time settings.

See also

system_settings_form()

system_date_time_settings_submit()

Related topics

1 string reference to 'system_date_time_settings'
system_menu in modules/system/system.module
Implementation of hook_menu().

File

modules/system/system.admin.inc, line 1488
Admin page callbacks for the system module.

Code

function system_date_time_settings() {
  drupal_add_js(drupal_get_path('module', 'system') . '/system.js', 'module');
  $ajax_path = 'admin/settings/date-time/lookup';
  drupal_add_js(array(
    'dateTime' => array(
      'lookup' => url($ajax_path, array(
        'query' => array(
          'token' => drupal_get_token($ajax_path),
        ),
      )),
    ),
  ), 'setting');

  // Date settings:
  $zones = _system_zonelist();

  // Date settings: possible date formats
  $date_short = array(
    'Y-m-d H:i',
    'm/d/Y - H:i',
    'd/m/Y - H:i',
    'Y/m/d - H:i',
    'd.m.Y - H:i',
    'm/d/Y - g:ia',
    'd/m/Y - g:ia',
    'Y/m/d - g:ia',
    'M j Y - H:i',
    'j M Y - H:i',
    'Y M j - H:i',
    'M j Y - g:ia',
    'j M Y - g:ia',
    'Y M j - g:ia',
  );
  $date_medium = array(
    'D, Y-m-d H:i',
    'D, m/d/Y - H:i',
    'D, d/m/Y - H:i',
    'D, Y/m/d - H:i',
    'F j, Y - H:i',
    'j F, Y - H:i',
    'Y, F j - H:i',
    'D, m/d/Y - g:ia',
    'D, d/m/Y - g:ia',
    'D, Y/m/d - g:ia',
    'F j, Y - g:ia',
    'j F Y - g:ia',
    'Y, F j - g:ia',
    'j. F Y - G:i',
  );
  $date_long = array(
    'l, F j, Y - H:i',
    'l, j F, Y - H:i',
    'l, Y, F j - H:i',
    'l, F j, Y - g:ia',
    'l, j F Y - g:ia',
    'l, Y, F j - g:ia',
    'l, j. F Y - G:i',
  );

  // Date settings: construct choices for user
  foreach ($date_short as $f) {
    $date_short_choices[$f] = format_date(time(), 'custom', $f);
  }
  foreach ($date_medium as $f) {
    $date_medium_choices[$f] = format_date(time(), 'custom', $f);
  }
  foreach ($date_long as $f) {
    $date_long_choices[$f] = format_date(time(), 'custom', $f);
  }
  $date_long_choices['custom'] = $date_medium_choices['custom'] = $date_short_choices['custom'] = t('Custom format');
  $form['locale'] = array(
    '#type' => 'fieldset',
    '#title' => t('Locale settings'),
  );
  $form['locale']['date_default_timezone'] = array(
    '#type' => 'select',
    '#title' => t('Default time zone'),
    '#default_value' => variable_get('date_default_timezone', 0),
    '#options' => $zones,
    '#description' => t('Select the default site time zone.'),
  );
  $form['locale']['configurable_timezones'] = array(
    '#type' => 'radios',
    '#title' => t('User-configurable time zones'),
    '#default_value' => variable_get('configurable_timezones', 1),
    '#options' => array(
      t('Disabled'),
      t('Enabled'),
    ),
    '#description' => t('When enabled, users can set their own time zone and dates will be displayed accordingly.'),
  );
  $form['locale']['date_first_day'] = array(
    '#type' => 'select',
    '#title' => t('First day of week'),
    '#default_value' => variable_get('date_first_day', 0),
    '#options' => array(
      0 => t('Sunday'),
      1 => t('Monday'),
      2 => t('Tuesday'),
      3 => t('Wednesday'),
      4 => t('Thursday'),
      5 => t('Friday'),
      6 => t('Saturday'),
    ),
    '#description' => t('The first day of the week for calendar views.'),
  );
  $form['date_formats'] = array(
    '#type' => 'fieldset',
    '#title' => t('Formatting'),
  );
  $date_format_short = variable_get('date_format_short', $date_short[1]);
  $form['date_formats']['date_format_short'] = array(
    '#prefix' => '<div class="date-container"><div class="select-container">',
    '#suffix' => '</div>',
    '#type' => 'select',
    '#title' => t('Short date format'),
    '#attributes' => array(
      'class' => 'date-format',
    ),
    '#default_value' => isset($date_short_choices[$date_format_short]) ? $date_format_short : 'custom',
    '#options' => $date_short_choices,
    '#description' => t('The short format of date display.'),
  );
  $default_short_custom = variable_get('date_format_short_custom', isset($date_short_choices[$date_format_short]) ? $date_format_short : '');
  $form['date_formats']['date_format_short_custom'] = array(
    '#prefix' => '<div class="custom-container">',
    '#suffix' => '</div></div>',
    '#type' => 'textfield',
    '#title' => t('Custom short date format'),
    '#attributes' => array(
      'class' => 'custom-format',
    ),
    '#default_value' => $default_short_custom,
    '#description' => t('A user-defined short date format. See the <a href="@url">PHP manual</a> for available options. This format is currently set to display as <span>%date</span>.', array(
      '@url' => 'http://php.net/manual/function.date.php',
      '%date' => format_date(time(), 'custom', $default_short_custom),
    )),
  );
  $date_format_medium = variable_get('date_format_medium', $date_medium[1]);
  $form['date_formats']['date_format_medium'] = array(
    '#prefix' => '<div class="date-container"><div class="select-container">',
    '#suffix' => '</div>',
    '#type' => 'select',
    '#title' => t('Medium date format'),
    '#attributes' => array(
      'class' => 'date-format',
    ),
    '#default_value' => isset($date_medium_choices[$date_format_medium]) ? $date_format_medium : 'custom',
    '#options' => $date_medium_choices,
    '#description' => t('The medium sized date display.'),
  );
  $default_medium_custom = variable_get('date_format_medium_custom', isset($date_medium_choices[$date_format_medium]) ? $date_format_medium : '');
  $form['date_formats']['date_format_medium_custom'] = array(
    '#prefix' => '<div class="custom-container">',
    '#suffix' => '</div></div>',
    '#type' => 'textfield',
    '#title' => t('Custom medium date format'),
    '#attributes' => array(
      'class' => 'custom-format',
    ),
    '#default_value' => $default_medium_custom,
    '#description' => t('A user-defined medium date format. See the <a href="@url">PHP manual</a> for available options. This format is currently set to display as <span>%date</span>.', array(
      '@url' => 'http://php.net/manual/function.date.php',
      '%date' => format_date(time(), 'custom', $default_medium_custom),
    )),
  );
  $date_format_long = variable_get('date_format_long', $date_long[0]);
  $form['date_formats']['date_format_long'] = array(
    '#prefix' => '<div class="date-container"><div class="select-container">',
    '#suffix' => '</div>',
    '#type' => 'select',
    '#title' => t('Long date format'),
    '#attributes' => array(
      'class' => 'date-format',
    ),
    '#default_value' => isset($date_long_choices[$date_format_long]) ? $date_format_long : 'custom',
    '#options' => $date_long_choices,
    '#description' => t('Longer date format used for detailed display.'),
  );
  $default_long_custom = variable_get('date_format_long_custom', isset($date_long_choices[$date_format_long]) ? $date_format_long : '');
  $form['date_formats']['date_format_long_custom'] = array(
    '#prefix' => '<div class="custom-container">',
    '#suffix' => '</div></div>',
    '#type' => 'textfield',
    '#title' => t('Custom long date format'),
    '#attributes' => array(
      'class' => 'custom-format',
    ),
    '#default_value' => $default_long_custom,
    '#description' => t('A user-defined long date format. See the <a href="@url">PHP manual</a> for available options. This format is currently set to display as <span>%date</span>.', array(
      '@url' => 'http://php.net/manual/function.date.php',
      '%date' => format_date(time(), 'custom', $default_long_custom),
    )),
  );
  $form = system_settings_form($form);

  // We will call system_settings_form_submit() manually, so remove it for now.
  unset($form['#submit']);
  return $form;
}