array());
// Add (cosmetic) user options.
$options['fieldset']['contains'] = array();
$options['fieldset']['contains']['type'] = array('default' => 'fieldset');
$options['fieldset']['contains']['classes'] = array('default' => '');
$options['fieldset']['contains']['id'] = array('default' => '');
$options['fieldset']['contains']['collapsible'] = array('default' => 0);
$options['fieldset']['contains']['collapsed'] = array('default' => 0);
drupal_alter('views_fieldsets_views_field_options', $options['fieldset']['contains'], $this);
return $options;
}
function options_form(&$form, &$form_state) {
// These options are required by Views.
$keep_form_elements = element_children($form);
// These options are useful for a fieldset.
$keep_form_elements[] = 'custom_label';
$keep_form_elements[] = 'label';
$keep_form_elements[] = 'alter';
// These options are useful 'alter' options. Most aren't.
$keep_rewrite_elements = array(
'alter_text',
'text',
'help',
'trim_whitespace',
'nl2br',
);
// Get the plentiful usual suspects.
parent::options_form($form, $form_state);
// Remove options that aren't relevant.
foreach (element_children($form) as $name) {
if (!in_array($name, $keep_form_elements)) {
$form[$name]['#access'] = FALSE;
}
}
// Alter custom_label (always ON).
$element = &$form['custom_label'];
$element['#default_value'] = $element['#value'] = TRUE;
$element['#type'] = 'hidden';
// Alter label to make it fit our needs.
$element = &$form['label'];
unset($element['#dependency']);
$element['#title'] = t('Fieldset title');
$element['#required'] = TRUE;
$element['#description'] = t('The back-end admin label and default front-end fieldset legend/details summary. You can override it by rewriting below. Will be translated either way.');
// Open 'alter' fieldset.
$form['alter']['#collapsed'] = $form['alter']['#collapsible'] = FALSE;
$form['alter']['#description'] = t('This will alter the fieldset <legend>
or details <summary>
. Default would be the above Fieldset title.');
// Hide most 'alter' stuff.
foreach (element_children($form['alter']) as $name) {
if (!in_array($name, $keep_rewrite_elements)) {
$form['alter'][$name]['#access'] = FALSE;
}
}
// Don't hide 'hide_empty', because it's useful for empty fieldsets (due to empty fields).
unset($form['hide_empty']['#access'], $form['hide_empty']['#fieldset']);
$form['hide_empty']['#weight'] = 200;
// Add 'fieldset' tree with the usual fieldset stuff.
$form['fieldset'] = array(
'#tree' => TRUE,
);
$fieldset_types = _views_fieldsets_types();
$form['fieldset']['type'] = array(
'#type' => 'select',
'#title' => t('Display type'),
'#options' => $fieldset_types,
'#default_value' => $this->options['fieldset']['type'],
'#description' => t('A <fieldset>
will always show its title as <legend>
. A <div>
will never show the title.'),
);
$form['fieldset']['classes'] = array(
'#type' => 'textfield',
'#title' => t('HTML classes'),
'#default_value' => $this->options['fieldset']['classes'],
'#description' => t('The usual Views row tokens are available. If you leave this empty, the untranslated Fieldset title will be added.'),
);
$form['fieldset']['id'] = array(
'#type' => 'textfield',
'#title' => t('HTML ID'),
'#default_value' => $this->options['fieldset']['id'],
'#description' => t('The usual Views row tokens are available.') . ' ' . t('You want to make sure this ID is very unique by using tokens.'),
);
$form['fieldset']['collapsible'] = array(
'#type' => 'checkbox',
'#title' => t('Collapsible'),
'#default_value' => $this->options['fieldset']['collapsible'],
);
$form['fieldset']['collapsed'] = array(
'#type' => 'checkbox',
'#title' => t('Collapsed'),
'#default_value' => $this->options['fieldset']['collapsed'],
);
drupal_alter('views_fieldsets_views_field_form', $form['fieldset'], $this);
}
/**
* This is a dummy that has to return a truthy value. Otherwise the No
* Results Behavior will kick in.
*/
function render($values) {
if (isset($this->options['children'])) {
return '[' . implode(', ', $this->options['children']) . ']';
}
}
}