PluginProbe
Timetics – Appointment Booking Calendar & Scheduling / 1.0.64
Timetics – Appointment Booking Calendar & Scheduling v1.0.64
1.0.64 1.0.62 1.0.63 1.0.61 1.0.60 1.0.59 1.0.58 1.0.57 1.0.56 trunk 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.2 1.0.20 1.0.21 All 65 releases
← All changes | core/enqueue-inline/enqueue-inline.php +37 -79 1.0.12 → 1.0.64 View file →
@@ -7,10 +7,11 @@
7 7 */
8 8
9 9 namespace Timetics\Core\EnqueueInline;
10 10
11 +defined( 'ABSPATH' ) || exit;
12 +
11 13 use Timetics\Utils\Singleton;
12 -use Timetics;
13 14
14 15 /**
15 16 * Class Enqueue_Inline
16 17 */
@@ -18,8 +19,13 @@
18 19 {
19 20 use Singleton;
20 21
21 22 /**
23 + * Template path for dynamic color CSS.
24 + */
25 + const COLOR_TEMPLATE = __DIR__ . '/templates/dynamic-colors.php';
26 +
27 + /**
22 28 * Initialize the shortcode class
23 29 *
24 30 * @return void
25 31 */
@@ -24,100 +30,52 @@
24 30 * @return void
25 31 */
26 32 public function init()
27 33 {
28 - add_action('wp_head', array($this, 'custom_inline_css'));
34 + add_action( 'wp_enqueue_scripts', array( $this, 'custom_inline_css' ), 20 );
29 35 }
30 36
31 37 /**
32 - * Custom inline css
38 + * Build and attach the dynamic color CSS to the frontend stylesheet.
33 39 */
34 40 public function custom_inline_css()
35 41 {
36 - $custom_css = '';
37 - $primary_color = timetics_get_option('primary_color');
38 - $secondary_color = timetics_get_option('secondary_color');
42 + $primary_color = timetics_get_option( 'primary_color' );
43 + $secondary_color = timetics_get_option( 'secondary_color' );
39 44
40 - $custom_css .= "
41 - .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn,
42 - .ant-btn-background-ghost.ant-btn-primary,
43 - .ant-spin,
44 - .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled),
45 - .ant-radio-button-wrapper:hover {
46 - color: {$primary_color};
45 + if ( empty( $primary_color ) && empty( $secondary_color ) ) {
46 + return;
47 47 }
48 48
49 - .flatpickr-day.selected, .flatpickr-day.startRange, .flatpickr-day.endRange,
50 - .ant-spin .ant-spin-dot-item,
51 - .flatpickr-day.selected.inRange, .flatpickr-day.startRange.inRange, .flatpickr-day.endRange.inRange, .flatpickr-day.selected:focus, .flatpickr-day.startRange:focus, .flatpickr-day.endRange:focus, .flatpickr-day.selected:hover, .flatpickr-day.startRange:hover, .flatpickr-day.endRange:hover, .flatpickr-day.selected.prevMonthDay, .flatpickr-day.startRange.prevMonthDay, .flatpickr-day.endRange.prevMonthDay, .flatpickr-day.selected.nextMonthDay, .flatpickr-day.startRange.nextMonthDay, .flatpickr-day.endRange.nextMonthDay,
52 - .ant-btn-primary{
53 - background-color: {$primary_color};
54 - }
49 + $custom_css = $this->render_color_css( $primary_color, $secondary_color );
55 50
56 -
57 - .ant-btn-background-ghost.ant-btn-primary,
58 - .ant-btn-primary,
59 - .ant-input-focused, .ant-input:focus,
60 - .ant-input:hover,
61 - .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled),
62 - .flatpickr-day.selected, .flatpickr-day.startRange, .flatpickr-day.endRange, .flatpickr-day.selected.inRange, .flatpickr-day.startRange.inRange, .flatpickr-day.endRange.inRange, .flatpickr-day.selected:focus, .flatpickr-day.startRange:focus, .flatpickr-day.endRange:focus, .flatpickr-day.selected:hover, .flatpickr-day.startRange:hover, .flatpickr-day.endRange:hover, .flatpickr-day.selected.prevMonthDay, .flatpickr-day.startRange.prevMonthDay, .flatpickr-day.endRange.prevMonthDay, .flatpickr-day.selected.nextMonthDay, .flatpickr-day.startRange.nextMonthDay, .flatpickr-day.endRange.nextMonthDay{
63 - border-color: {$primary_color};
51 + if ( '' === trim( $custom_css ) ) {
52 + return;
64 53 }
65 54
66 - .tt-form-left-sidebar .ant-space-item svg,
67 - .anticon svg,
68 - .meeting-info-list li svg,
69 - .tt-form-left-sidebar .tt-meeting-location-list .anticon svg {
70 - fill: {$primary_color};
71 - }
55 + wp_register_style( 'timetics-custom-css', false, array(), TIMETICS_VERSION );
56 + wp_enqueue_style( 'timetics-custom-css' );
57 + wp_add_inline_style( 'timetics-frontend', $custom_css );
58 + }
72 59
73 - .ant-btn-background-ghost.ant-btn-primary:focus, .ant-btn-background-ghost.ant-btn-primary:hover,
74 - button.ant-btn.ant-btn-default.ant-btn-lg.tt-mb-30:hover{
75 - color: {$secondary_color};
60 + /**
61 + * Render the CSS template with the given colors.
62 + *
63 + * @param string $primary_color
64 + * @param string $secondary_color
65 + *
66 + * @return string
67 + */
68 + protected function render_color_css( $primary_color, $secondary_color )
69 + {
70 + if ( ! file_exists( self::COLOR_TEMPLATE ) ) {
71 + return '';
76 72 }
77 73
78 - .ant-btn-background-ghost.ant-btn-primary:focus, .ant-btn-background-ghost.ant-btn-primary:hover,
79 - .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled),
80 - button.ant-btn.ant-btn-default.ant-btn-lg.tt-mb-30:hover,
81 - .ant-btn-primary:focus, .ant-btn-primary:hover{
82 - border-color: {$secondary_color};
83 - }
74 + $primary_color = sanitize_hex_color( $primary_color ) ?: $primary_color;
75 + $secondary_color = sanitize_hex_color( $secondary_color ) ?: $secondary_color;
84 76
85 - .ant-btn-primary:focus,
86 - .ant-btn-primary:hover{
87 - background-color: {$secondary_color};
88 - }
89 -
90 - .toplevel_page_timetics .ant-btn.ant-btn-primary {
91 - background: {$primary_color};
92 - border-color: {$primary_color};
93 - }
94 -
95 - .tt-slot-list .ant-list-item .ant-btn-block:hover {
96 - color: {$primary_color};
97 - border-color: {$primary_color};
98 - }
99 -
100 - .tt-form-left-sidebar .submit-btn,
101 - .tt-booking-body-wrap .submit-btn,
102 - .tt-flatpickr-calendar .flatpickr-day.selected,
103 - .toplevel_page_timetics .tt-flatpickr-calendar .flatpickr-day.selected {
104 - background: {$primary_color};
105 - }
106 -
107 - .toplevel_page_timetics .ant-btn.ant-btn-primary:hover,
108 - .toplevel_page_timetics .ant-btn.ant-btn-primary:focus,
109 - .tt-form-left-sidebar .submit-btn:hover,
110 - .tt-form-left-sidebar .submit-btn:focus,
111 - .tt-booking-body-wrap .submit-btn:hover,
112 - .tt-booking-body-wrap .submit-btn:focus {
113 - background: {$secondary_color};
114 - }
115 -
116 - ";
117 -
118 - // add inline css.
119 - wp_register_style('timetics-custom-css', false);
120 - wp_enqueue_style('timetics-custom-css');
121 - wp_add_inline_style('timetics-frontend', $custom_css);
77 + ob_start();
78 + include self::COLOR_TEMPLATE;
79 + return ob_get_clean();
122 80 }
123 81 }