function custom_formatters_export_ui_form_js_preview in Custom Formatters 7.2
AJAX callback form Custom formatters preview form.
Parameters
array $form: The form api array.
array $form_state: The form state array.
null|object $object: The Custom formatter object if supplied, else NULL.
Return value
array A fapi array.
1 call to custom_formatters_export_ui_form_js_preview()
- custom_formatters_export_ui_form_js_preview_devel_generate in includes/
devel_generate.inc - Submit callback for Custom Formatters live preview via Devel Generate.
1 string reference to 'custom_formatters_export_ui_form_js_preview'
- custom_formatters_export_ui_form in plugins/
export_ui/ custom_formatters.inc - Custom Formatters settings form.
File
- plugins/
export_ui/ custom_formatters.inc, line 338 - CTools Export UI plugin for SexyBookmarks profiles.
Code
function custom_formatters_export_ui_form_js_preview($form, $form_state, $object = NULL) {
// Clear messages.
drupal_get_messages(NULL, TRUE);
// Build preview elements.
$elements['obj_type'] = $form_state['values']['preview']['entity_type'];
$elements['object'] = $object;
if (is_null($elements['object'])) {
$objects = entity_load($elements['obj_type'], array(
$form_state['values']['preview']['entity'],
));
$elements['object'] = $objects[$form_state['values']['preview']['entity']];
}
if (strstr($form_state['values']['preview']['field'], 'field_')) {
$elements['field'] = field_info_field($form_state['values']['preview']['field']);
$elements['instance'] = field_info_instance($elements['obj_type'], $elements['field']['field_name'], $form_state['values']['preview']['bundle']);
$elements['langcode'] = field_language($elements['obj_type'], $elements['object'], $elements['field']['field_name']);
$elements['items'] = field_get_items($elements['obj_type'], $elements['object'], $elements['instance']['field_name'], $elements['langcode']);
// Prepare field view.
$functions = array(
"{$elements['field']['module']}_field_prepare_view",
"{$elements['field']['module']}_field_load",
);
foreach ($functions as $function) {
if (function_exists($function)) {
$elements['items'] = array(
$elements['items'],
);
$function($elements['obj_type'], array(
$elements['object'],
), $elements['field'], array(
$elements['instance'],
), $elements['langcode'], $elements['items'], FIELD_LOAD_CURRENT);
$elements['items'] = $elements['items'][0];
}
}
$elements['display'] = $elements['instance']['display']['default'];
}
drupal_alter('custom_formatters_preview_elements', $elements, $form_state['values']);
extract($elements);
// @TODO - Allow this to be done via form_builder.inc or any other Foramtter
// Settings integration modules.
$display['settings'] = isset($form_state['input']['settings']['preview']) ? $form_state['input']['settings']['preview'] : $display['settings'];
// Disable contextual links in preview.
$display['#cf_options'] = array(
'#contextual_links' => FALSE,
);
$formatter = (object) $form_state['values'];
// Build the preview html.
$element = custom_formatters_field_formatter_view($obj_type, $object, $field, $instance, $langcode, $items, $display, $formatter);
$variables = array(
'element' => array_merge($element, array(
'#label_display' => 'hidden',
'#title' => NULL,
'#items' => $element,
'#field_name' => $field['field_name'],
'#field_type' => $field['type'],
)),
);
foreach (array_keys($element) as $delta) {
$variables['item_attributes'][$delta] = NULL;
}
$js = drupal_add_js();
$form['engine']['preview']['preview']['content'] = array(
'#markup' => theme('field', $variables),
);
$js = array_diff_assoc(drupal_add_js(), $js);
$form['engine']['preview']['preview']['content']['#markup'] .= drupal_get_js('header', $js);
// Preview debugging; Show the output HTML.
if (module_exists('devel') && isset($formatter->preview) && $formatter->preview['options']['dpm']['html']) {
dpm(theme('field', $variables));
}
return $form['engine']['preview']['preview'];
}