PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents / 4.4.2
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents v4.4.2
4.6.4 4.6.3 4.6.2 4.6.1 4.6.0 4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 trunk 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2.0 2.2.1 2.2.2 2.3.0 2.3.1 2.3.2 2.3.3 2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.1.3 3.2.0 3.2.1 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.14 3.9.15 3.9.16 3.9.17 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9 4.0.0 4.0.1 4.0.10 4.0.11 4.0.12 4.0.13 4.0.14 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.10 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.4.0 4.4.1 4.4.10 4.4.11 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.4.7 4.4.8 4.4.9 4.5.0 4.5.1
embedpress / EmbedPress / Elementor / Widgets / Embedpress_Calendar.php
embedpress / EmbedPress / Elementor / Widgets Last commit date
Embedpress_Calendar.php 11 months ago Embedpress_Document.php 11 months ago Embedpress_Elementor.php 11 months ago Embedpress_Pdf.php 11 months ago
Embedpress_Calendar.php
318 lines
1 <?php
2
3 namespace EmbedPress\Elementor\Widgets;
4
5
6 use \Elementor\Controls_Manager as Controls_Manager;
7 use \Elementor\Modules\DynamicTags\Module as TagsModule;
8 use \Elementor\Widget_Base as Widget_Base;
9 use \Elementor\Plugin;
10 use EmbedPress\Includes\Traits\Branding;
11 use Embedpress_Google_Helper;
12 use EmbedPress\Includes\Classes\Helper;
13
14 ( defined( 'ABSPATH' ) ) or die( "No direct script access allowed." );
15
16 class Embedpress_Calendar extends Widget_Base
17 {
18 use Branding;
19 protected $pro_class = '';
20 protected $pro_text = '';
21 public function __construct($data = [], $args = null) {
22 parent::__construct($data, $args);
23
24 wp_register_style('fullcalendar', EPGC_ASSET_URL . 'lib/fullcalendar4/core/main.min.css', null, EMBEDPRESS_VERSION);
25 wp_register_style('fullcalendar_daygrid', EPGC_ASSET_URL . 'lib/fullcalendar4/daygrid/main.min.css', ['fullcalendar'], EMBEDPRESS_VERSION);
26 wp_register_style('fullcalendar_timegrid', EPGC_ASSET_URL . 'lib/fullcalendar4/timegrid/main.min.css', ['fullcalendar_daygrid'], EMBEDPRESS_VERSION);
27 wp_register_style('fullcalendar_list', EPGC_ASSET_URL . 'lib/fullcalendar4/list/main.min.css', ['fullcalendar'], EMBEDPRESS_VERSION);
28 wp_register_style('epgc', EPGC_ASSET_URL . 'css/epgc.css', ['fullcalendar_timegrid'], EMBEDPRESS_VERSION);
29 wp_register_style('tippy_light', EPGC_ASSET_URL . 'lib/tippy/light-border.css', null, EMBEDPRESS_VERSION);
30
31 //wp_enqueue_style( 'fullcalendar');
32 //wp_enqueue_style( 'fullcalendar_daygrid');
33 //wp_enqueue_style( 'fullcalendar_timegrid');
34 //wp_enqueue_style( 'fullcalendar_list');
35 //wp_enqueue_style( 'epgc');
36 //wp_enqueue_style( 'tippy_light');
37
38
39 wp_register_script('popper',EPGC_ASSET_URL . 'lib/popper.min.js', null, EMBEDPRESS_VERSION, true);
40 wp_register_script('tippy',EPGC_ASSET_URL . 'lib/tippy/tippy-bundle.umd.min.js', ['popper'], EMBEDPRESS_VERSION, true);
41 wp_register_script('my_moment',EPGC_ASSET_URL . 'lib/moment/moment-with-locales.min.js', null, EMBEDPRESS_VERSION, true);
42 wp_register_script('my_moment_timezone',EPGC_ASSET_URL . 'lib/moment/moment-timezone-with-data.min.js', ['my_moment'], EMBEDPRESS_VERSION, true);
43 wp_register_script('fullcalendar',EPGC_ASSET_URL . 'lib/fullcalendar4/core/main.min.js', ['my_moment_timezone'], EMBEDPRESS_VERSION, true);
44 wp_register_script('fullcalendar_moment',EPGC_ASSET_URL . 'lib/fullcalendar4/moment/main.min.js', ['fullcalendar'], EMBEDPRESS_VERSION, true);
45 wp_register_script('fullcalendar_moment_timezone',EPGC_ASSET_URL . 'lib/fullcalendar4/moment-timezone/main.min.js', ['fullcalendar_moment'], EMBEDPRESS_VERSION, true);
46 wp_register_script('fullcalendar_daygrid',EPGC_ASSET_URL . 'lib/fullcalendar4/daygrid/main.min.js', ['fullcalendar'], EMBEDPRESS_VERSION, true);
47 wp_register_script('fullcalendar_timegrid',EPGC_ASSET_URL . 'lib/fullcalendar4/timegrid/main.min.js', ['fullcalendar_daygrid'], EMBEDPRESS_VERSION, true);
48 wp_register_script('fullcalendar_list',EPGC_ASSET_URL . 'lib/fullcalendar4/list/main.min.js', ['fullcalendar'], EMBEDPRESS_VERSION, true);
49 wp_register_script('fullcalendar_locales',EPGC_ASSET_URL . 'lib/fullcalendar4/core/locales-all.min.js',['fullcalendar'], EMBEDPRESS_VERSION, true);
50 wp_register_script('epgc', EPGC_ASSET_URL . 'js/main.js',['fullcalendar'], EMBEDPRESS_VERSION, true);
51
52 //wp_enqueue_script('popper');
53 //wp_enqueue_script('my_moment');
54 //wp_enqueue_script('my_moment_timezone');
55 //wp_enqueue_script('fullcalendar');
56 //wp_enqueue_script('fullcalendar_moment');
57 //wp_enqueue_script('fullcalendar_moment_timezone');
58 //wp_enqueue_script('fullcalendar_daygrid');
59 //wp_enqueue_script('fullcalendar_timegrid');
60 //wp_enqueue_script('fullcalendar_list');
61 //wp_enqueue_script('fullcalendar_locales');
62 //wp_enqueue_script('epgc');
63
64 // Localization is now handled by LocalizationManager
65 // This section is kept for backward compatibility but functionality has been moved
66 }
67 public function get_name()
68 {
69 return 'embedpress_calendar';
70 }
71
72 public function get_title()
73 {
74 return esc_html__( 'EmbedPress Google Calendar', 'embedpress' );
75 }
76
77 public function get_categories()
78 {
79 return ['embedpress'];
80 }
81
82 public function get_custom_help_url()
83 {
84 return 'https://embedpress.com/docs/embed-google-calendar-in-wordpress/';
85 }
86
87 public function get_icon()
88 {
89 return 'eicon-calendar';
90 }
91
92 public function get_script_depends() {
93 return ['popper','tippy', 'my_moment', 'my_moment_timezone', 'fullcalendar', 'fullcalendar_moment', 'fullcalendar_moment_timezone', 'fullcalendar_daygrid', 'fullcalendar_timegrid', 'fullcalendar_list', 'fullcalendar_locales', 'epgc'];
94 }
95
96 public function get_style_depends() {
97 return ['fullcalendar', 'fullcalendar_daygrid', 'fullcalendar_list','epgc', 'tippy_light'];
98 }
99
100 /**
101 * Get widget keywords.
102 *
103 * Retrieve the list of keywords the widget belongs to.
104 *
105 * @return array Widget keywords.
106 * @since 2.5.5
107 * @access public
108 *
109 */
110 public function get_keywords()
111 {
112 return ['embedpress', 'calendar', 'google', 'google calendar', 'google-calendar', 'ics', 'event', 'embedpress calendar'];
113 }
114
115 protected function register_controls()
116 {
117 $class = 'embedpress-pro-control not-active';
118 $text = '<sup class="embedpress-pro-label" style="color:red">' . __('Pro', 'embedpress') . '</sup>';
119 $this->pro_class = apply_filters('embedpress/pro_class', $class);
120 $this->pro_text = apply_filters('embedpress/pro_text', $text);
121
122 /**
123 * EmbedPress Content Settings
124 */
125 $this->start_controls_section(
126 'embedpress_calendar_content_settings',
127 [
128 'label' => esc_html__( 'Content Settings', 'embedpress' ),
129 ]
130 );
131
132 $this->add_control(
133 'embedpress_calendar_type',
134 [
135 'label' => __( 'Calendar Type', 'embedpress' ),
136 'type' => Controls_Manager::SELECT,
137 'default' => 'public',
138 'options' => [
139 'private' => __( 'Private', 'embedpress' ),
140 'public' => __( 'Public', 'embedpress' )
141 ],
142 ]
143 );
144
145
146 $this->add_control(
147 'embedpress_public_cal_link',
148 [
149
150 'label' => __( 'Public Calendar Link', 'embedpress' ),
151 'type' => Controls_Manager::TEXT,
152 'dynamic' => [
153 'active' => true,
154 ],
155 'placeholder' => __( 'Enter public calendar link', 'embedpress' ),
156 'label_block' => true,
157 'condition' => [
158 'embedpress_calendar_type' => 'public'
159 ],
160
161 ]
162 );
163
164
165
166 $this->add_responsive_control(
167 'embedpress_elementor_calendar_width',
168 [
169 'label' => __( 'Width', 'embedpress' ),
170 'type' => Controls_Manager::SLIDER,
171 'separator' => 'before',
172 'default' => [
173 'unit' => 'px',
174 'size' => Helper::get_options_value('enableEmbedResizeWidth'),
175 ],
176 'range' => [
177 'px' => [
178 'min' => 6,
179 'max' => 1200,
180 ],
181 ],
182 'selectors' => [
183 '{{WRAPPER}} .embedpress-calendar-embed iframe' => 'width: {{SIZE}}{{UNIT}} !important; max-width: 100%',
184 ],
185 'render_type' => 'template',
186 ]
187 );
188
189 $this->add_responsive_control(
190 'embedpress_elementor_calendar_height',
191 [
192 'label' => __( 'Height', 'embedpress' ),
193 'type' => Controls_Manager::SLIDER,
194 'default' => [
195 'unit' => 'px',
196 'size' => Helper::get_options_value('enableEmbedResizeHeight'),
197 ],
198 'range' => [
199 'px' => [
200 'min' => 6,
201 'max' => 1000,
202 ],
203 ],
204 'selectors' => [
205 '{{WRAPPER}} .embedpress-calendar-embed iframe' => 'height: {{SIZE}}{{UNIT}};',
206 ],
207 'render_type' => 'template',
208
209 ]
210 );
211
212 $this->add_responsive_control(
213 'embedpress_elementor_calendar_align',
214 [
215 'label' => __( 'Alignment', 'embedpress' ),
216 'type' => Controls_Manager::CHOOSE,
217 'options' => [
218 'left' => [
219 'title' => __( 'Left', 'embedpress' ),
220 'icon' => 'eicon-text-align-left',
221 ],
222 'center' => [
223 'title' => __( 'Center', 'embedpress' ),
224 'icon' => 'eicon-text-align-center',
225 ],
226 'right' => [
227 'title' => __( 'Right', 'embedpress' ),
228 'icon' => 'eicon-text-align-right',
229 ]
230 ],
231 'prefix_class' => 'elementor%s-align-',
232 'default' => '',
233 ]
234 );
235
236 $this->add_control(
237 'embedpress_calendar_powered_by',
238 [
239 'label' => __( 'Powered By', 'embedpress' ),
240 'type' => Controls_Manager::SWITCHER,
241 'label_on' => __( 'Show', 'embedpress' ),
242 'label_off' => __( 'Hide', 'embedpress' ),
243 'return_value' => 'yes',
244 'default' => apply_filters( 'embedpress_calendar_powered_by_control', 'yes' ),
245 ]
246 );
247
248 $this->init_branding_controls( 'calendar');
249
250 $this->end_controls_section();
251
252 }
253
254 public function isGoogleCalendar($url) {
255 $pattern = '/^https:\/\/calendar\.google\.com\/calendar\/embed\?.*$/';
256 return preg_match($pattern, $url);
257 }
258
259 protected function render()
260 {
261 $settings = $this->get_settings();
262 $id = 'embedpress-calendar-' .esc_attr( $this->get_id());
263 $dimension = "width: " . esc_attr($settings['embedpress_elementor_calendar_width']['size']) . "px; height: " . esc_attr($settings['embedpress_elementor_calendar_height']['size']) . "px";
264
265 if(!empty($settings['embedpress_public_cal_link']) && !$this->isGoogleCalendar($settings['embedpress_public_cal_link'])) {
266 echo esc_html__('Invalid Calendar URL.');
267 return;
268 }
269
270 $this->add_render_attribute('embedpress-calendar-render', [
271 'class' => ['embedpress-embed-calendar-calendar', esc_attr($id)],
272 'data-emid' => esc_attr($id)
273 ]);
274 $this->add_render_attribute('embedpress-calendar', [
275 'class' => ['embedpress-calendar-embed', 'ep-cal-' . md5($id), 'ose-calendar']
276 ]);
277 $is_private_cal = (!empty($settings['embedpress_calendar_type']) && 'private' === $settings['embedpress_calendar_type']);
278 $is_editor_view = Plugin::$instance->editor->is_edit_mode();
279 ?>
280 <div <?php echo $this->get_render_attribute_string('embedpress-calendar'); ?> style="<?php echo esc_attr($dimension); ?>; max-width:100%; display: inline-block" data-embed-type=<?php echo Helper::get_provider_name($settings['embedpress_public_cal_link']); ?>>
281 <?php
282 do_action('embedpress_calendar_after_embed', $settings, $id, $this);
283 ?>
284 <div <?php echo $this->get_render_attribute_string('embedpress-calendar-render'); ?>>
285 <?php if (!empty($settings['embedpress_public_cal_link']) && !empty($settings['embedpress_calendar_type']) && 'public' === $settings['embedpress_calendar_type']) { ?>
286 <iframe title="" style="<?php echo esc_attr($dimension); ?>; max-width:100%; display: inline-block" src="<?php echo esc_url($settings['embedpress_public_cal_link']); ?>" frameborder="0"></iframe>
287 <?php } else {
288 if ($is_editor_view && empty($settings['embedpress_public_cal_link']) && !$is_private_cal) { ?>
289 <p><?php esc_html_e('Please paste your public google calendar link.', 'embedpress'); ?></p>
290 <?php }
291
292
293 if ($is_editor_view && $is_private_cal) {
294
295 if (!apply_filters('embedpress/is_allow_rander', false)) { ?>
296 <p><?php esc_html_e('You need EmbedPress Pro to display Private Calendar Data.', 'embedpress'); ?></p>
297 <?php } else { ?>
298 <p><?php esc_html_e('Private Calendar Data will be displayed in the frontend', 'embedpress'); ?></p>
299 <?php }
300
301 } else {
302 do_action('embedpress_google_helper_shortcode', 10);
303 }
304
305 } ?>
306 </div>
307 <?php
308 if ($settings['embedpress_calendar_powered_by'] === 'yes') {
309 printf('<p class="embedpress-el-powered">%s</p>', esc_html__('Powered By EmbedPress', 'embedpress'));
310 }
311 ?>
312 </div>
313 <?php
314 }
315
316
317 }
318