list_predefined_options.module in List field predefined options 7
File
list_predefined_options.module
View source
<?php
function list_predefined_options_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'field_ui_field_edit_form') {
if ($form['#field']['module'] == 'list') {
_list_predefined_options_add_options($form['field']['settings']);
}
}
elseif ($form_id == 'field_ui_field_settings_form') {
if ($form['field']['module']['#value'] == 'list') {
_list_predefined_options_add_options($form['field']['settings']);
}
}
}
function _list_predefined_options_add_options(&$field_settings) {
$field_settings['allowed_values_function'] = array(
'#type' => 'select',
'#title' => t('Allowed values'),
'#options' => list_predefined_options_get_callback_options() + array(
'' => t('Custom'),
),
'#default_value' => $field_settings['allowed_values_function']['#value'],
'#weight' => -10,
);
$field_settings['allowed_values']['#states']['visible'][':input[name="field[settings][allowed_values_function]"]'] = array(
'value' => '',
);
$field_settings['allowed_values']['#access'] = TRUE;
$field_settings['allowed_values_function_display']['#access'] = FALSE;
}
function list_predefined_options_webform_select_options_info() {
$options = list_predefined_options_get_list_option_info();
foreach ($options as $key => $option_info) {
$options[$key]['title'] = $option_info['label'];
unset($options[$key]['label']);
$options[$key]['options callback'] = $option_info['callback'];
unset($options[$key]['callback']);
}
return $options;
}
function list_predefined_options_get_list_option_info() {
$info =& drupal_static(__FUNCTION__);
if (!isset($options)) {
$cid = "list:predefined-option:info:" . $GLOBALS['language']->language;
if ($cache = cache_get($cid)) {
$info = $cache->data;
}
else {
$info = module_invoke_all('list_option_info');
drupal_alter('list_option_info', $info);
cache_set($cid, $info);
}
}
return $info;
}
function list_predefined_options_get_callback_options() {
$info = list_predefined_options_get_list_option_info();
$options = array();
foreach ($info as $option) {
$options[$option['callback']] = $option['label'];
}
return $options;
}
function list_predefined_options_list_option_info() {
$info['us_states'] = array(
'label' => t('US states'),
'callback' => 'list_predefined_options_list_option_us_states',
);
$info['countries'] = array(
'label' => t('Countries'),
'callback' => 'list_predefined_options_list_option_countries',
);
$info['timezones'] = array(
'label' => t('Time zones'),
'callback' => 'list_predefined_options_list_option_timezones',
);
$info['languages'] = array(
'label' => t('Languages (all)'),
'callback' => 'list_predefined_options_list_option_languages',
);
if (module_exists('locale')) {
$info['locale_languages'] = array(
'label' => t('Languages (enabled)'),
'callback' => 'list_predefined_options_list_option_languages_enabled',
);
}
return $info;
}
function list_predefined_options_list_option_us_states() {
$options['AL'] = t('Alabama');
$options['AK'] = t('Alaska');
$options['AZ'] = t('Arizona');
$options['AR'] = t('Arkansas');
$options['CA'] = t('California');
$options['CO'] = t('Colorado');
$options['CT'] = t('Connecticut');
$options['DE'] = t('Delaware');
$options['DC'] = t('District Of Columbia');
$options['FL'] = t('Florida');
$options['GA'] = t('Georgia');
$options['HI'] = t('Hawaii');
$options['ID'] = t('Idaho');
$options['IL'] = t('Illinois');
$options['IN'] = t('Indiana');
$options['IA'] = t('Iowa');
$options['KS'] = t('Kansas');
$options['KY'] = t('Kentucky');
$options['LA'] = t('Louisiana');
$options['ME'] = t('Maine');
$options['MD'] = t('Maryland');
$options['MA'] = t('Massachusetts');
$options['MI'] = t('Michigan');
$options['MN'] = t('Minnesota');
$options['MS'] = t('Mississippi');
$options['MO'] = t('Missouri');
$options['MT'] = t('Montana');
$options['NE'] = t('Nebraska');
$options['NV'] = t('Nevada');
$options['NH'] = t('New Hampshire');
$options['NJ'] = t('New Jersey');
$options['NM'] = t('New Mexico');
$options['NY'] = t('New York');
$options['NC'] = t('North Carolina');
$options['ND'] = t('North Dakota');
$options['OH'] = t('Ohio');
$options['OK'] = t('Oklahoma');
$options['OR'] = t('Oregon');
$options['PA'] = t('Pennsylvania');
$options['RI'] = t('Rhode Island');
$options['SC'] = t('South Carolina');
$options['SD'] = t('South Dakota');
$options['TN'] = t('Tennessee');
$options['TX'] = t('Texas');
$options['UT'] = t('Utah');
$options['VT'] = t('Vermont');
$options['VA'] = t('Virginia');
$options['WA'] = t('Washington');
$options['WV'] = t('West Virginia');
$options['WI'] = t('Wisconsin');
$options['WY'] = t('Wyoming');
return $options;
}
function list_predefined_options_list_option_countries() {
include_once DRUPAL_ROOT . '/includes/locale.inc';
return country_get_list();
}
function list_predefined_options_list_option_timezones() {
return system_time_zones();
}
function list_predefined_options_list_option_languages() {
include_once DRUPAL_ROOT . '/includes/iso.inc';
$options = _locale_get_predefined_list();
foreach ($options as $key => $value) {
if (count($value) > 1) {
$tname = t($value[0]);
$options[$key] = $tname == $value[1] ? $tname : "{$tname} ({$value[1]})";
}
else {
$options[$key] = t($value[0]);
}
}
asort($options);
$options = array(
LANGUAGE_NONE => t('Language neutral'),
) + $options;
return $options;
}
function list_predefined_options_list_option_languages_enabled() {
$options = array(
LANGUAGE_NONE => t('Language neutral'),
) + locale_language_list();
return $options;
}