vamtam-button.php 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. <?php
  2. /**
  3. * @class VamtamButtonModule
  4. */
  5. class VamtamButtonModule extends FLBuilderModule {
  6. /**
  7. * @method __construct
  8. */
  9. public function __construct() {
  10. $path = trailingslashit( 'modules/' . basename( dirname( __FILE__ ) ) );
  11. parent::__construct(array(
  12. 'name' => __( 'Button', 'vamtam-elements-b' ),
  13. 'description' => __( 'A simple call to action button.', '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. }
  20. /**
  21. * @method update
  22. */
  23. public function update( $settings ) {
  24. // Remove the old three_d setting.
  25. if ( isset( $settings->three_d ) ) {
  26. unset( $settings->three_d );
  27. }
  28. return $settings;
  29. }
  30. /**
  31. * @method get_classname
  32. */
  33. public function get_classname() {
  34. $classname = 'vamtam-button-wrap';
  35. if ( ! empty( $this->settings->width ) ) {
  36. $classname .= ' vamtam-button-width-' . $this->settings->width;
  37. }
  38. if ( ! empty( $this->settings->icon ) ) {
  39. $classname .= ' vamtam-button-has-icon';
  40. }
  41. return $classname;
  42. }
  43. }
  44. /**
  45. * Register the module and its form settings.
  46. */
  47. FLBuilder::register_module('VamtamButtonModule', array(
  48. 'general' => array(
  49. 'title' => __( 'General', 'vamtam-elements-b' ),
  50. 'sections' => array(
  51. 'general' => array(
  52. 'title' => '',
  53. 'fields' => array(
  54. 'text' => array(
  55. 'type' => 'text',
  56. 'label' => __( 'Text', 'vamtam-elements-b' ),
  57. 'default' => __( 'Click Here', 'vamtam-elements-b' ),
  58. 'preview' => array(
  59. 'type' => 'text',
  60. 'selector' => '.vamtam-button-text',
  61. ),
  62. ),
  63. 'icon' => array(
  64. 'type' => 'icon',
  65. 'label' => __( 'Icon', 'vamtam-elements-b' ),
  66. 'show_remove' => true,
  67. ),
  68. 'icon_position' => array(
  69. 'type' => 'select',
  70. 'label' => __( 'Icon Position', 'vamtam-elements-b' ),
  71. 'default' => 'before',
  72. 'options' => array(
  73. 'before' => __( 'Before Text', 'vamtam-elements-b' ),
  74. 'after' => __( 'After Text', 'vamtam-elements-b' ),
  75. ),
  76. ),
  77. 'icon_animation' => array(
  78. 'type' => 'select',
  79. 'label' => __( 'Icon Visibility', 'vamtam-elements-b' ),
  80. 'default' => 'disable',
  81. 'options' => array(
  82. 'disable' => __( 'Always Visible', 'vamtam-elements-b' ),
  83. 'enable' => __( 'Fade In On Hover', 'vamtam-elements-b' ),
  84. ),
  85. ),
  86. ),
  87. ),
  88. 'link' => array(
  89. 'title' => __( 'Link', 'vamtam-elements-b' ),
  90. 'fields' => array(
  91. 'link' => array(
  92. 'type' => 'link',
  93. 'label' => __( 'Link', 'vamtam-elements-b' ),
  94. 'placeholder' => __( 'http://www.example.com', 'vamtam-elements-b' ),
  95. 'preview' => array(
  96. 'type' => 'none',
  97. ),
  98. ),
  99. 'lightbox_embed' => array(
  100. 'type' => 'select',
  101. 'label' => __( 'Display contents in a lightbox (oEmbed required)', 'vamtam-elements-b' ),
  102. 'default' => 'false',
  103. 'options' => array(
  104. 'false' => __( 'No, treat as regular link', 'vamtam-elements-b' ),
  105. 'true' => __( 'Use lightbox', 'vamtam-elements-b' ),
  106. ),
  107. 'preview' => array(
  108. 'type' => 'none',
  109. ),
  110. 'toggle' => array(
  111. 'false' => array(
  112. 'fields' => array( 'link_target' ),
  113. ),
  114. ),
  115. ),
  116. 'link_target' => array(
  117. 'type' => 'select',
  118. 'label' => __( 'Link Target', 'vamtam-elements-b' ),
  119. 'default' => '_self',
  120. 'options' => array(
  121. '_self' => __( 'Same Window', 'vamtam-elements-b' ),
  122. '_blank' => __( 'New Window', 'vamtam-elements-b' ),
  123. ),
  124. 'preview' => array(
  125. 'type' => 'none',
  126. ),
  127. ),
  128. ),
  129. ),
  130. ),
  131. ),
  132. 'style' => array(
  133. 'title' => __( 'Style', 'vamtam-elements-b' ),
  134. 'sections' => array(
  135. 'layout' => array(
  136. 'title' => '',
  137. 'fields' => array(
  138. 'layout_type' => array(
  139. 'type' => 'select',
  140. 'label' => __( 'Type', 'vamtam-elements-b' ),
  141. 'default' => 'solid',
  142. 'options' => array(
  143. 'solid' => esc_html__( 'Solid', 'vamtam-elements-b' ),
  144. 'border' => esc_html__( 'Border', 'vamtam-elements-b' ),
  145. 'underline' => esc_html__( 'Underline', 'vamtam-elements-b' ),
  146. ),
  147. ),
  148. ),
  149. ),
  150. 'colors' => array(
  151. 'title' => __( 'Colors', 'vamtam-elements-b' ),
  152. 'fields' => array(
  153. 'color' => array(
  154. 'type' => 'select',
  155. 'label' => __( 'Normal Color', 'vamtam-elements-b' ),
  156. 'default' => 'accent1',
  157. 'options' => array(
  158. 'accent1' => esc_html__( 'Accent 1', 'vamtam-elements-b' ),
  159. 'accent2' => esc_html__( 'Accent 2', 'vamtam-elements-b' ),
  160. 'accent3' => esc_html__( 'Accent 3', 'vamtam-elements-b' ),
  161. 'accent4' => esc_html__( 'Accent 4', 'vamtam-elements-b' ),
  162. 'accent5' => esc_html__( 'Accent 5', 'vamtam-elements-b' ),
  163. 'accent6' => esc_html__( 'Accent 6', 'vamtam-elements-b' ),
  164. 'accent7' => esc_html__( 'Accent 7', 'vamtam-elements-b' ),
  165. 'accent8' => esc_html__( 'Accent 8', 'vamtam-elements-b' ),
  166. ),
  167. ),
  168. 'hover_color' => array(
  169. 'type' => 'select',
  170. 'label' => __( 'Hover Color', 'vamtam-elements-b' ),
  171. 'default' => 'accent6',
  172. 'options' => array(
  173. 'accent1' => esc_html__( 'Accent 1', 'vamtam-elements-b' ),
  174. 'accent2' => esc_html__( 'Accent 2', 'vamtam-elements-b' ),
  175. 'accent3' => esc_html__( 'Accent 3', 'vamtam-elements-b' ),
  176. 'accent4' => esc_html__( 'Accent 4', 'vamtam-elements-b' ),
  177. 'accent5' => esc_html__( 'Accent 5', 'vamtam-elements-b' ),
  178. 'accent6' => esc_html__( 'Accent 6', 'vamtam-elements-b' ),
  179. 'accent7' => esc_html__( 'Accent 7', 'vamtam-elements-b' ),
  180. 'accent8' => esc_html__( 'Accent 8', 'vamtam-elements-b' ),
  181. ),
  182. ),
  183. ),
  184. ),
  185. 'formatting' => array(
  186. 'title' => __( 'Structure', 'vamtam-elements-b' ),
  187. 'fields' => array(
  188. 'width' => array(
  189. 'type' => 'select',
  190. 'label' => __( 'Width', 'vamtam-elements-b' ),
  191. 'default' => 'auto',
  192. 'options' => array(
  193. 'auto' => _x( 'Auto', 'Width.', 'vamtam-elements-b' ),
  194. 'full' => __( 'Full Width', 'vamtam-elements-b' ),
  195. 'custom' => __( 'Custom', 'vamtam-elements-b' ),
  196. ),
  197. 'toggle' => array(
  198. 'auto' => array(
  199. 'fields' => array( 'align' ),
  200. ),
  201. 'full' => array(),
  202. 'custom' => array(
  203. 'fields' => array( 'align', 'custom_width' ),
  204. ),
  205. ),
  206. ),
  207. 'custom_width' => array(
  208. 'type' => 'text',
  209. 'label' => __( 'Custom Width', 'vamtam-elements-b' ),
  210. 'default' => '200',
  211. 'maxlength' => '3',
  212. 'size' => '4',
  213. 'description' => 'px',
  214. ),
  215. 'align' => array(
  216. 'type' => 'select',
  217. 'label' => __( 'Alignment', 'vamtam-elements-b' ),
  218. 'default' => 'left',
  219. 'options' => array(
  220. 'center' => __( 'Center', 'vamtam-elements-b' ),
  221. 'left' => __( 'Left', 'vamtam-elements-b' ),
  222. 'right' => __( 'Right', 'vamtam-elements-b' ),
  223. ),
  224. ),
  225. 'font_size' => array(
  226. 'type' => 'text',
  227. 'label' => __( 'Font Size', 'vamtam-elements-b' ),
  228. 'default' => '14',
  229. 'maxlength' => '3',
  230. 'size' => '4',
  231. 'description' => 'px',
  232. ),
  233. 'padding' => array(
  234. 'type' => 'text',
  235. 'label' => __( 'Padding', 'vamtam-elements-b' ),
  236. 'default' => '16',
  237. 'maxlength' => '3',
  238. 'size' => '4',
  239. 'description' => 'px',
  240. ),
  241. ),
  242. ),
  243. ),
  244. ),
  245. ));