vamtam-booked.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <?php
  2. /**
  3. * @class VamtamBookedModule
  4. */
  5. class VamtamBookedModule extends FLBuilderModule {
  6. /**
  7. * @method __construct
  8. */
  9. public function __construct() {
  10. $path = trailingslashit( 'modules/' . basename( dirname( __FILE__ ) ) );
  11. parent::__construct(array(
  12. 'name' => __( 'Booked', 'vamtam-elements-b' ),
  13. 'description' => __( 'Display a Booked Calendar.', '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. 'enabled' => shortcode_exists( 'booked-calendar' ),
  19. ));
  20. }
  21. public static function get_booked_calendars() {
  22. if ( ! is_plugin_active( 'booked/booked.php' ) ) return array();
  23. $calendars = get_terms( 'booked_custom_calendars', array(
  24. 'orderby' => 'name',
  25. 'order' => 'ASC',
  26. 'hide_empty' => false,
  27. ) );
  28. $result = array();
  29. foreach ( $calendars as $calendar ) {
  30. if ( is_object( $calendar ) ) {
  31. $result[ $calendar->term_id ] = $calendar->name;
  32. }
  33. }
  34. return $result;
  35. }
  36. }
  37. /**
  38. * Register the module and its form settings.
  39. */
  40. FLBuilder::register_module( 'VamtamBookedModule', array(
  41. 'layout' => array(
  42. 'title' => __( 'General', 'vamtam-elements-b' ),
  43. 'sections' => array(
  44. 'general' => array(
  45. 'title' => '',
  46. 'fields' => array(
  47. 'shortcode' => array(
  48. 'label' => esc_html__( 'Type', 'vamtam-elements-b' ),
  49. 'default' => 'booked-calendar',
  50. 'type' => 'select',
  51. 'options' => array(
  52. 'booked-calendar' => esc_html__( 'Calendar', 'vamtam-elements-b' ),
  53. 'booked-login' => esc_html__( 'Login form', 'vamtam-elements-b' ),
  54. 'booked-profile' => esc_html__( 'User Profile', 'vamtam-elements-b' ),
  55. 'booked-appointments' => esc_html__( 'User Appointments', 'vamtam-elements-b' ),
  56. ),
  57. 'toggle' => array(
  58. 'booked-calendar' => array(
  59. 'sections' => array( 'calendar_options' ),
  60. ),
  61. ),
  62. ),
  63. ),
  64. ),
  65. 'calendar_options' => array(
  66. 'title' => esc_html__( 'Calendar Options', 'vamtam-elements-b' ),
  67. 'fields' => array(
  68. 'year' => array(
  69. 'label' => esc_html__( 'Year', 'vamtam-elements-b' ),
  70. 'desc' => esc_html__( 'Leave blank for default', 'vamtam-elements-b' ),
  71. 'default' => '',
  72. 'type' => 'text',
  73. ),
  74. 'month' => array(
  75. 'label' => esc_html__( 'Month', 'vamtam-elements-b' ),
  76. 'desc' => esc_html__( 'Leave blank for default', 'vamtam-elements-b' ),
  77. 'default' => '',
  78. 'type' => 'text',
  79. ),
  80. 'day' => array(
  81. 'label' => esc_html__( 'Day', 'vamtam-elements-b' ),
  82. 'desc' => esc_html__( 'Leave blank for default', 'vamtam-elements-b' ),
  83. 'default' => '',
  84. 'type' => 'text',
  85. ),
  86. 'switcher' => array(
  87. 'label' => esc_html__( 'Switcher', 'vamtam-elements-b' ),
  88. 'default' => '0',
  89. 'type' => 'select',
  90. 'options' => array(
  91. '1' => esc_html__( 'On', 'vamtam-elements-b' ),
  92. '0' => esc_html__( 'Off', 'vamtam-elements-b' ),
  93. ),
  94. ),
  95. 'style' => array(
  96. 'label' => esc_html__( 'Style', 'vamtam-elements-b' ),
  97. 'default' => 'calendar',
  98. 'type' => 'select',
  99. 'options' => array(
  100. 'list' => esc_html__( 'List', 'vamtam-elements-b' ),
  101. 'calendar' => esc_html__( 'Calendar', 'vamtam-elements-b' ),
  102. ),
  103. ),
  104. 'calendar' => array(
  105. 'label' => esc_html__( 'Calendar', 'vamtam-elements-b' ),
  106. 'default' => '',
  107. 'prompt' => '',
  108. 'options' => VamtamBookedModule::get_booked_calendars(),
  109. 'type' => 'select',
  110. ),
  111. 'size' => array(
  112. 'label' => esc_html__( 'Size', 'vamtam-elements-b' ),
  113. 'default' => 'large',
  114. 'type' => 'select',
  115. 'options' => array(
  116. 'small' => esc_html__( 'Small', 'vamtam-elements-b' ),
  117. 'large' => esc_html__( 'Large', 'vamtam-elements-b' ),
  118. ),
  119. ),
  120. 'members_only' => array(
  121. 'label' => esc_html__( 'Visibility', 'vamtam-elements-b' ),
  122. 'default' => '0',
  123. 'type' => 'select',
  124. 'options' => array(
  125. '1' => esc_html__( 'Logged in users only', 'vamtam-elements-b' ),
  126. '0' => esc_html__( 'All users', 'vamtam-elements-b' ),
  127. ),
  128. ),
  129. ),
  130. ),
  131. ),
  132. ),
  133. ) );