vamtam-accordion.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <?php
  2. /**
  3. * @class VamtamAccordionModule
  4. */
  5. class VamtamAccordionModule extends FLBuilderModule {
  6. /**
  7. * @method __construct
  8. */
  9. public function __construct() {
  10. $path = trailingslashit( 'modules/' . basename( dirname( __FILE__ ) ) );
  11. parent::__construct(array(
  12. 'name' => __( 'Accordion', 'vamtam-elements-b' ),
  13. 'description' => __( 'Display a collapsible accordion of items.', 'vamtam-elements-b' ),
  14. 'category' => __( 'VamTam Modules', 'vamtam-elements-b' ),
  15. 'partial_refresh' => true,
  16. 'dir' => VAMTAMEL_B_DIR . $path,
  17. 'url' => VAMTAMEL_B_URL . $path,
  18. ));
  19. $this->add_css( 'font-awesome' );
  20. }
  21. }
  22. /**
  23. * Register the module and its form settings.
  24. */
  25. FLBuilder::register_module('VamtamAccordionModule', array(
  26. 'items' => array(
  27. 'title' => __( 'Items', 'vamtam-elements-b' ),
  28. 'sections' => array(
  29. 'general' => array(
  30. 'title' => '',
  31. 'fields' => array(
  32. 'items' => array(
  33. 'type' => 'form',
  34. 'label' => __( 'Item', 'vamtam-elements-b' ),
  35. 'form' => 'accordion_items_form', // ID from registered form below
  36. 'preview_text' => 'label', // Name of a field to use for the preview text
  37. 'multiple' => true,
  38. ),
  39. ),
  40. ),
  41. ),
  42. ),
  43. 'style' => array(
  44. 'title' => __( 'Style', 'vamtam-elements-b' ),
  45. 'sections' => array(
  46. 'general' => array(
  47. 'title' => '',
  48. 'fields' => array(
  49. 'border_color' => array(
  50. 'type' => 'vamtam-color',
  51. 'label' => __( 'Border Color', 'vamtam-elements-b' ),
  52. 'default' => 'accent7',
  53. ),
  54. 'label_size' => array(
  55. 'type' => 'select',
  56. 'label' => __( 'Label Size', 'vamtam-elements-b' ),
  57. 'default' => 'small',
  58. 'options' => array(
  59. 'small' => _x( 'Small', 'Label size.', 'vamtam-elements-b' ),
  60. 'medium' => _x( 'Medium', 'Label size.', 'vamtam-elements-b' ),
  61. 'large' => _x( 'Large', 'Label size.', 'vamtam-elements-b' ),
  62. ),
  63. 'preview' => array(
  64. 'type' => 'none',
  65. ),
  66. ),
  67. 'item_spacing' => array(
  68. 'type' => 'text',
  69. 'label' => __( 'Item Spacing', 'vamtam-elements-b' ),
  70. 'default' => '10',
  71. 'maxlength' => '2',
  72. 'size' => '3',
  73. 'description' => 'px',
  74. 'preview' => array(
  75. 'type' => 'none',
  76. ),
  77. ),
  78. 'collapse' => array(
  79. 'type' => 'select',
  80. 'label' => __( 'Collapse Inactive', 'vamtam-elements-b' ),
  81. 'default' => '1',
  82. 'options' => array(
  83. '1' => __( 'Yes', 'vamtam-elements-b' ),
  84. '0' => __( 'No', 'vamtam-elements-b' ),
  85. ),
  86. 'help' => __( 'Choosing yes will keep only one item open at a time. Choosing no will allow multiple items to be open at the same time.', 'vamtam-elements-b' ),
  87. 'preview' => array(
  88. 'type' => 'none',
  89. ),
  90. ),
  91. 'open_first' => array(
  92. 'type' => 'select',
  93. 'label' => __( 'Expand First Item', 'vamtam-elements-b' ),
  94. 'default' => '0',
  95. 'options' => array(
  96. '0' => __( 'No', 'vamtam-elements-b' ),
  97. '1' => __( 'Yes', 'vamtam-elements-b' ),
  98. ),
  99. 'help' => __( 'Choosing yes will expand the first item by default.', 'vamtam-elements-b' ),
  100. ),
  101. ),
  102. ),
  103. ),
  104. ),
  105. ));
  106. /**
  107. * Register a settings form to use in the "form" field type above.
  108. */
  109. FLBuilder::register_settings_form('accordion_items_form', array(
  110. 'title' => __( 'Add Item', 'vamtam-elements-b' ),
  111. 'tabs' => array(
  112. 'general' => array(
  113. 'title' => __( 'General', 'vamtam-elements-b' ),
  114. 'sections' => array(
  115. 'general' => array(
  116. 'title' => '',
  117. 'fields' => array(
  118. 'label' => array(
  119. 'type' => 'text',
  120. 'label' => __( 'Label', 'vamtam-elements-b' ),
  121. ),
  122. ),
  123. ),
  124. 'content' => array(
  125. 'title' => __( 'Content', 'vamtam-elements-b' ),
  126. 'fields' => array(
  127. 'content' => array(
  128. 'type' => 'editor',
  129. 'label' => '',
  130. ),
  131. ),
  132. ),
  133. ),
  134. ),
  135. ),
  136. ));