t('Wrapper: Element'), 'description' => t('Wrap regions and panes with HTML elements.'), 'render region' => 'panels_extra_styles_wrapper_render_region', 'render pane' => 'panels_extra_styles_wrapper_render_pane', 'settings form' => 'panels_extra_styles_wrapper_element_region_settings_form', 'pane settings form' => 'panels_extra_styles_wrapper_element_pane_settings_form', ); /** * Region settings form callback. */ function panels_extra_styles_wrapper_element_region_settings_form($style_settings) { // Content. $element_default_value = isset($style_settings['content']['element']) ? $style_settings['content']['element'] : ''; $form['content']['element'] = array( '#title' => t('Content'), '#description' => t('HTML element to wrap around the content.'), ) + _panels_extra_styles_wrapper_element_options($element_default_value); // Content attributes. $attributes_default_value = isset($style_settings['content']['attributes']) ? $style_settings['content']['attributes'] : array(); $form['content']['attributes'] = array( '#title' => t('Content Attributes'), ) + _panels_extra_styles_wrapper_attribute_options($attributes_default_value); // Theming. $theme_default_value = !empty($style_settings['theme']) ? $style_settings['theme'] : FALSE; $form += _panels_extra_styles_wrapper_element_theme_options($theme_default_value); return $form; } /** * Pane settings form callback. */ function panels_extra_styles_wrapper_element_pane_settings_form($style_settings) { // Title. $element_default_value = isset($style_settings['title']['element']) ? $style_settings['title']['element'] : ''; $form['title']['element'] = array( '#title' => t('Title'), '#description' => t('HTML element to wrap around the title.'), ) + _panels_extra_styles_wrapper_element_options($element_default_value); // Title attributes. $attributes_default_value = isset($style_settings['title']['attributes']) ? $style_settings['title']['attributes'] : array(); $form['title']['attributes'] = array( '#title' => t('Title Attributes'), ) + _panels_extra_styles_wrapper_attribute_options($attributes_default_value); // Content form items, grabbed from the region settings. $form += panels_extra_styles_wrapper_element_region_settings_form($style_settings); // Theming. $theme_default_value = !empty($style_settings['theme']) ? $style_settings['theme'] : FALSE; $form += _panels_extra_styles_wrapper_element_theme_options($theme_default_value); return $form; } /** * Element options for settings forms. */ function _panels_extra_styles_wrapper_element_options($default_value = '') { $options = array( '#type' => 'select', '#default_value' => $default_value, ); if (module_exists('fences') && function_exists('fences_get_fences_options')) { // Element options, grabbed from the fences module. $options['#options'] = fences_get_fences_options('field'); } else { // Notify user of fences awesomenss. drupal_set_message(t('Install the fences module for a plethora of options!', array('@fences_link' => url('http://drupal.org/project/fences'))), 'warning', FALSE); // Fallback element options, grabbed from View's defaults. $options['#options'] = variable_get('views_field_rewrite_elements', array( '' => t('- Use default -'), '0' => t('- None -'), 'div' => 'DIV', 'span' => 'SPAN', 'h1' => 'H1', 'h2' => 'H2', 'h3' => 'H3', 'h4' => 'H4', 'h5' => 'H5', 'h6' => 'H6', 'p' => 'P', 'strong' => 'STRONG', 'em' => 'EM', )); } return $options; } /** * Attribute options for settings forms. */ function _panels_extra_styles_wrapper_attribute_options($default_value = array()) { $options = array( '#type' => 'fieldset', '#collapsible' => TRUE, '#collapsed' => TRUE, ); $options['id'] = array( '#type' => 'textfield', '#title' => t('id'), '#description' => t('CSS id to apply to the element, without the hash.'), '#default_value' => isset($default_value['id']) ? $default_value['id'] : '', ); $options['class'] = array( '#type' => 'textfield', '#title' => t('class'), '#description' => t('CSS classes to apply to the element, separated by spaces.'), '#default_value' => isset($default_value['class']) ? $default_value['class'] : '', ); return $options; } /** * Theme options for settings forms. */ function _panels_extra_styles_wrapper_element_theme_options($default_value = FALSE) { $options['theme'] = array( '#type' => 'checkbox', '#title' => t('Additionally, wrap the content with Panels theming layer.'), '#default_value' => $default_value, ); return $options; }