public function SearchApiMultiRowEntityView::options_form in Search API Multi-Index Searches 7
Provide a form for setting options.
Overrides views_plugin_row::options_form
File
- views/
row_entity_view.inc, line 72 - Contains the SearchApiMultiRowEntityView class.
Class
- SearchApiMultiRowEntityView
- Plugin class for displaying Views results with entity_view.
Code
public function options_form(&$form, &$form_state) {
parent::options_form($form, $form_state);
$entity_info = entity_get_info();
$options = array();
foreach ($this->indexes['entity_types'] as $type => $indexes) {
foreach ($entity_info[$type]['view modes'] as $view_mode => $view_mode_info) {
$options[$type][$view_mode] = $view_mode_info['label'];
}
}
$form['view_mode'] = array(
'#tree' => TRUE,
);
foreach ($options as $entity_type => $modes) {
if (count($modes) > 1) {
$form['view_mode'][$entity_type] = array(
'#type' => 'select',
'#options' => $modes,
'#title' => t('View mode for @entity_name entities', array(
'@entity_name' => $entity_info[$entity_type]['label'],
)),
'#description' => format_plural(count($this->indexes['entity_types'][$entity_type]), 'This view mode will be used to render entities from the following index: %indexes', 'This view mode will be used to render entities from the following indexes: %indexes', array(
'%indexes' => implode(', ', $this->indexes['entity_types'][$entity_type]),
)),
);
if (!empty($this->options['view_mode'][$entity_type])) {
$form['view_mode'][$entity_type]['#default_value'] = $this->options['view_mode'][$entity_type];
}
}
else {
// For entity types that only have one view mode, there's no meaningful
// choice to make, so just expose it to let the user know about it.
$form['view_mode']["{$entity_type}__description"] = array(
'#type' => 'item',
'#title' => t('View mode for @entity_name entities', array(
'@entity_name' => $entity_info[$entity_type]['label'],
)),
'#description' => reset($modes),
);
$form['view_mode'][$entity_type] = array(
'#type' => 'value',
'#value' => key($modes),
);
}
}
if (count($this->indexes['incompatibles'])) {
$form['incompatibles'] = array(
'#type' => 'item',
'#title' => 'Incompatible indexes',
'#description' => t("The following indexes are not based on entities, and can't be used with this row style: %indexes. Items from those indexes will be skipped during rendering.", array(
'%indexes' => implode(', ', $this->indexes['incompatibles']),
)),
);
}
return $form;
}