wrapper_element.inc 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <?php
  2. /**
  3. * @file
  4. * 'Wrapper: Element' style.
  5. */
  6. // Plugin definition.
  7. $plugin = array(
  8. 'title' => t('Wrapper: Element'),
  9. 'description' => t('Wrap regions and panes with HTML elements.'),
  10. 'render region' => 'panels_extra_styles_wrapper_render_region',
  11. 'render pane' => 'panels_extra_styles_wrapper_render_pane',
  12. 'settings form' => 'panels_extra_styles_wrapper_element_region_settings_form',
  13. 'pane settings form' => 'panels_extra_styles_wrapper_element_pane_settings_form',
  14. );
  15. /**
  16. * Region settings form callback.
  17. */
  18. function panels_extra_styles_wrapper_element_region_settings_form($style_settings) {
  19. // Content.
  20. $element_default_value = isset($style_settings['content']['element']) ? $style_settings['content']['element'] : '';
  21. $form['content']['element'] = array(
  22. '#title' => t('Content'),
  23. '#description' => t('HTML element to wrap around the content.'),
  24. ) + _panels_extra_styles_wrapper_element_options($element_default_value);
  25. // Content attributes.
  26. $attributes_default_value = isset($style_settings['content']['attributes']) ? $style_settings['content']['attributes'] : array();
  27. $form['content']['attributes'] = array(
  28. '#title' => t('Content Attributes'),
  29. ) + _panels_extra_styles_wrapper_attribute_options($attributes_default_value);
  30. // Theming.
  31. $theme_default_value = !empty($style_settings['theme']) ? $style_settings['theme'] : FALSE;
  32. $form += _panels_extra_styles_wrapper_element_theme_options($theme_default_value);
  33. return $form;
  34. }
  35. /**
  36. * Pane settings form callback.
  37. */
  38. function panels_extra_styles_wrapper_element_pane_settings_form($style_settings) {
  39. // Title.
  40. $element_default_value = isset($style_settings['title']['element']) ? $style_settings['title']['element'] : '';
  41. $form['title']['element'] = array(
  42. '#title' => t('Title'),
  43. '#description' => t('HTML element to wrap around the title.'),
  44. ) + _panels_extra_styles_wrapper_element_options($element_default_value);
  45. // Title attributes.
  46. $attributes_default_value = isset($style_settings['title']['attributes']) ? $style_settings['title']['attributes'] : array();
  47. $form['title']['attributes'] = array(
  48. '#title' => t('Title Attributes'),
  49. ) + _panels_extra_styles_wrapper_attribute_options($attributes_default_value);
  50. // Content form items, grabbed from the region settings.
  51. $form += panels_extra_styles_wrapper_element_region_settings_form($style_settings);
  52. // Theming.
  53. $theme_default_value = !empty($style_settings['theme']) ? $style_settings['theme'] : FALSE;
  54. $form += _panels_extra_styles_wrapper_element_theme_options($theme_default_value);
  55. return $form;
  56. }
  57. /**
  58. * Element options for settings forms.
  59. */
  60. function _panels_extra_styles_wrapper_element_options($default_value = '') {
  61. $options = array(
  62. '#type' => 'select',
  63. '#default_value' => $default_value,
  64. );
  65. if (module_exists('fences') && function_exists('fences_get_fences_options')) {
  66. // Element options, grabbed from the fences module.
  67. $options['#options'] = fences_get_fences_options('field');
  68. }
  69. else {
  70. // Notify user of fences awesomenss.
  71. drupal_set_message(t('Install the <a href="@fences_link">fences</a> module for a <em>plethora</em> of options!',
  72. array('@fences_link' => url('http://drupal.org/project/fences'))),
  73. 'warning', FALSE);
  74. // Fallback element options, grabbed from View's defaults.
  75. $options['#options'] = variable_get('views_field_rewrite_elements', array(
  76. '' => t('- Use default -'),
  77. '0' => t('- None -'),
  78. 'div' => 'DIV',
  79. 'span' => 'SPAN',
  80. 'h1' => 'H1',
  81. 'h2' => 'H2',
  82. 'h3' => 'H3',
  83. 'h4' => 'H4',
  84. 'h5' => 'H5',
  85. 'h6' => 'H6',
  86. 'p' => 'P',
  87. 'strong' => 'STRONG',
  88. 'em' => 'EM',
  89. ));
  90. }
  91. return $options;
  92. }
  93. /**
  94. * Attribute options for settings forms.
  95. */
  96. function _panels_extra_styles_wrapper_attribute_options($default_value = array()) {
  97. $options = array(
  98. '#type' => 'fieldset',
  99. '#collapsible' => TRUE,
  100. '#collapsed' => TRUE,
  101. );
  102. $options['id'] = array(
  103. '#type' => 'textfield',
  104. '#title' => t('id'),
  105. '#description' => t('CSS id to apply to the element, without the hash.'),
  106. '#default_value' => isset($default_value['id']) ? $default_value['id'] : '',
  107. );
  108. $options['class'] = array(
  109. '#type' => 'textfield',
  110. '#title' => t('class'),
  111. '#description' => t('CSS classes to apply to the element, separated by spaces.'),
  112. '#default_value' => isset($default_value['class']) ? $default_value['class'] : '',
  113. );
  114. return $options;
  115. }
  116. /**
  117. * Theme options for settings forms.
  118. */
  119. function _panels_extra_styles_wrapper_element_theme_options($default_value = FALSE) {
  120. $options['theme'] = array(
  121. '#type' => 'checkbox',
  122. '#title' => t('Additionally, wrap the content with Panels theming layer.'),
  123. '#default_value' => $default_value,
  124. );
  125. return $options;
  126. }