function addtocalendar_preprocess_setting_fields in Add To Calendar Button (AddEvent.com) 7.2
Process setting form fields.
Parameters
string $entity_type: Contains Entity type.
object $entity: Contains entity array.
array $settings: Conatains settings array.
array $formatter_settings: Contains formatter settings.
Return value
mixed Returns build form array.
2 calls to addtocalendar_preprocess_setting_fields()
- addtocalendar_field_formatter_view in ./
addtocalendar.module - Implements hook_field_formatter_view().
- addtocalendar_preprocess_field in ./
addtocalendar.module - Implements hook_preprocess_field().
File
- includes/
addtocalendar.inc, line 167 - Includes settings form and addtocalendar build processor.
Code
function addtocalendar_preprocess_setting_fields($entity_type, $entity, array $settings, array $formatter_settings) {
$build['addtocalendar'] = array();
if ($formatter_settings['addtocalendar_show']) {
$timezone = variable_get('date_default_timezone', '');
$build['addtocalendar_button_text'] = array(
'#type' => 'html_tag',
'#tag' => 'a',
'#value' => $settings['display_text'],
'#attributes' => array(
'class' => 'atcb-link',
),
);
$info = array(
'atc_title',
'atc_description',
'atc_location',
'atc_organizer',
'atc_date_start',
'atc_date_end',
);
// Process fields.
foreach ($info as $value) {
$class_value = $value;
if ($settings[$value]['field'] == 'token') {
$class_value = $settings[$value]['tokenized'];
}
elseif ($settings[$value]['field'] == 'title') {
$class_value = entity_label($entity_type, $entity);
}
elseif (isset($entity->{$settings[$value]['field']})) {
$class_value = isset($entity->{$settings[$value]['field']}[LANGUAGE_NONE][0]['value']) ? $entity->{$settings[$value]['field']}[LANGUAGE_NONE][0]['value'] : '';
}
if ($value == 'atc_date_start' || $value == 'atc_date_end') {
$field_info = field_info_field($settings[$value]['field']);
$class_value = _addtocalendar_convert_to_local_time($settings[$value]['tokenized'], $timezone);
if (!empty($field_info) && $field_info['type'] == 'datetime') {
if (isset($entity->{$settings[$value]['field']}[LANGUAGE_NONE][0]['value2'])) {
if ($value == 'atc_date_end') {
$class_value = _addtocalendar_convert_to_local_time($entity->{$settings[$value]['field']}[LANGUAGE_NONE][0]['value2'], $timezone);
}
else {
$class_value = _addtocalendar_convert_to_local_time($entity->{$settings[$value]['field']}[LANGUAGE_NONE][0]['value'], $timezone);
}
}
else {
$class_value = _addtocalendar_convert_to_local_time($entity->{$settings[$value]['field']}[LANGUAGE_NONE][0]['value'], $timezone);
}
}
}
$build['addtocalendar'][$value] = array(
'#type' => 'html_tag',
'#tag' => 'var',
'#value' => $class_value,
'#attributes' => array(
'class' => $value,
),
);
}
$build['addtocalendar']['atc_organizer_email'] = array(
'#type' => 'html_tag',
'#tag' => 'var',
'#value' => variable_get('site_mail', ''),
'#attributes' => array(
'class' => 'atc_organizer_email',
),
);
$build['addtocalendar']['atc_timezone'] = array(
'#type' => 'html_tag',
'#tag' => 'var',
'#value' => $timezone,
'#attributes' => array(
'class' => 'atc_timezone',
),
);
$build['addtocalendar']['atc_privacy'] = array(
'#type' => 'html_tag',
'#tag' => 'var',
'#value' => $settings['atc_privacy'],
'#attributes' => array(
'class' => 'atc_privacy',
),
);
$build['addtocalendar'] = array(
'#type' => 'html_tag',
'#tag' => 'span',
'#value' => render($build['addtocalendar_button_text']) . '<var class="atc_event">' . render($build['addtocalendar']) . '</var>',
'#attributes' => array(
'class' => array(
'addtocalendar',
),
),
);
if ($settings['data_calendars']) {
$value = '';
foreach ($settings['data_calendars'] as $key => $set) {
if ($set) {
$value .= $key . ', ';
}
}
if ($value) {
$build['addtocalendar']['#attributes']['data-calendars'] = $value;
}
}
$build['addtocalendar']['#attributes']['data-secure'] = $settings['data_secure'];
// Styling.
switch ($settings['style']) {
case 'blue':
$style['class'] = 'atc-style-blue';
$build['addtocalendar']['#attached'] = array(
'css' => array(
'//addtocalendar.com/atc/1.5/atc-style-blue.css' => array(
'type' => 'external',
),
),
);
break;
case 'glow_orange':
$style['class'] = 'atc-style-glow-orange';
$build['addtocalendar']['#attached'] = array(
'css' => array(
'//addtocalendar.com/atc/1.5/atc-style-glow-orange.css' => array(
'type' => 'external',
),
),
);
break;
default:
$build['addtocalendar']['#attached'] = array(
'css' => array(
'//addtocalendar.com/atc/1.5/atc-base.css' => array(
'type' => 'external',
),
),
);
break;
}
$build['addtocalendar']['#attached']['js'] = array(
'https://addtocalendar.com/atc/1.5/atc.min.js' => array(
'external',
),
);
if (!empty($style)) {
$build['addtocalendar']['#attributes']['class'][] = $style['class'];
}
}
else {
$disable_text = isset($settings['disable_text']) ? $settings['disable_text'] : '';
$build['addtocalendar'] = array(
'#prefix' => '<div class="wrapper">',
'#suffix' => '<div>' . $disable_text . '</div></div>',
);
}
return $build;
}