PluginProbe
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder / 51.1.78
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder v51.1.78
51.1.83 51.1.82 51.1.81 51.1.79 51.1.78 51.1.77 51.1.76 51.1.74 51.1.75 51.1.65 51.1.64 51.1.63 trunk 51.1.14 51.1.2 51.1.35 51.1.36 51.1.37 51.1.38 51.1.39 51.1.44 51.1.45 51.1.46 51.1.47 51.1.49 All 37 releases
king-addons / includes / widgets / Maintenance_Page / Maintenance_Page.php

Maintenance_Page.php in King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder 51.1.78, at includes/widgets/Maintenance_Page/Maintenance_Page.php

237 lines 7.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace King_Addons;
4
5 use Elementor\Widget_Base;
6 use Elementor\Controls_Manager;
7
8 if (!defined('ABSPATH')) {
9 exit;
10 }
11
12 class Maintenance_Page extends Widget_Base
13 {
14 public function get_name()
15 {
16 return 'king-addons-maintenance-page';
17 }
18
19 public function get_title()
20 {
21 return esc_html__('KNG Maintenance Page', 'king-addons');
22 }
23
24 public function get_icon()
25 {
26 return 'king-addons-icon king-addons-maintenance-mode';
27 }
28
29 public function get_categories()
30 {
31 return ['king-addons'];
32 }
33
34 public function get_keywords()
35 {
36 return ['maintenance', 'coming soon', 'access', 'gate', 'maintenance page'];
37 }
38
39 public function get_custom_help_url()
40 {
41 return 'mailto:bug@kingaddons.com?subject=Bug Report - King Addons&body=Please describe the issue';
42 }
43
44 protected function register_controls(): void
45 {
46 $this->start_controls_section(
47 'section_content',
48 [
49 'label' => esc_html__('Maintenance Page', 'king-addons'),
50 ]
51 );
52
53 $this->add_control(
54 'source_type',
55 [
56 'label' => esc_html__('Source', 'king-addons'),
57 'type' => Controls_Manager::SELECT,
58 'options' => [
59 'built_in' => esc_html__('Built-in Templates', 'king-addons'),
60 'page' => esc_html__('WordPress Page', 'king-addons'),
61 'elementor' => esc_html__('Elementor Template', 'king-addons'),
62 ],
63 'default' => 'built_in',
64 ]
65 );
66
67 $this->add_control(
68 'template_id',
69 [
70 'label' => esc_html__('Built-in Template', 'king-addons'),
71 'type' => Controls_Manager::SELECT,
72 'options' => $this->get_template_options(),
73 'default' => 'minimal',
74 'condition' => [
75 'source_type' => 'built_in',
76 ],
77 ]
78 );
79
80 $this->add_control(
81 'page_id',
82 [
83 'label' => esc_html__('Select Page', 'king-addons'),
84 'type' => Controls_Manager::SELECT,
85 'options' => $this->get_pages_options(),
86 'default' => '',
87 'condition' => [
88 'source_type' => 'page',
89 ],
90 ]
91 );
92
93 $this->add_control(
94 'elementor_id',
95 [
96 'label' => esc_html__('Elementor Template', 'king-addons'),
97 'type' => Controls_Manager::SELECT,
98 'options' => $this->get_elementor_templates(),
99 'default' => '',
100 'condition' => [
101 'source_type' => 'elementor',
102 ],
103 ]
104 );
105
106 $this->add_control(
107 'theme_override',
108 [
109 'label' => esc_html__('Theme Override', 'king-addons'),
110 'type' => Controls_Manager::SELECT,
111 'options' => [
112 '' => esc_html__('Default', 'king-addons'),
113 'dark' => esc_html__('Dark', 'king-addons'),
114 'light' => esc_html__('Light', 'king-addons'),
115 ],
116 'default' => '',
117 ]
118 );
119
120 $this->add_control(
121 'full_height',
122 [
123 'label' => esc_html__('Full Height', 'king-addons'),
124 'type' => Controls_Manager::SWITCHER,
125 'default' => '',
126 ]
127 );
128
129 $this->end_controls_section();
130
131 Core::renderProFeaturesSection($this, '', Controls_Manager::RAW_HTML, 'maintenance-page', [
132 'Private site password protection',
133 'Rule-based access control',
134 'Multiple schedules and recurring windows',
135 'Analytics and integrations'
136 ]);
137 }
138
139 private function get_template_options(): array
140 {
141 return [
142 'minimal' => esc_html__('Minimal', 'king-addons'),
143 'dark' => esc_html__('Dark', 'king-addons'),
144 'gradient' => esc_html__('Gradient', 'king-addons'),
145 'aurora' => esc_html__('Aurora Glow', 'king-addons'),
146 'neon' => esc_html__('Neon Tech', 'king-addons'),
147 'paper' => esc_html__('Paper Light', 'king-addons'),
148 'grid' => esc_html__('Tech Grid', 'king-addons'),
149 'mono' => esc_html__('Mono Minimal', 'king-addons'),
150 'spotlight' => esc_html__('Spotlight', 'king-addons'),
151 'poster' => esc_html__('Poster', 'king-addons'),
152 'ribbon' => esc_html__('Ribbon', 'king-addons'),
153 'countdown' => esc_html__('Coming Soon Countdown', 'king-addons'),
154 'progress' => esc_html__('Maintenance Progress', 'king-addons'),
155 'subscribe' => esc_html__('Simple Subscribe', 'king-addons'),
156 'product-launch' => esc_html__('Product Launch', 'king-addons'),
157 'construction' => esc_html__('Under Construction', 'king-addons'),
158 'split' => esc_html__('Split Layout', 'king-addons'),
159 'logo' => esc_html__('Centered Logo', 'king-addons'),
160 ];
161 }
162
163 private function get_pages_options(): array
164 {
165 $pages = get_pages([
166 'sort_column' => 'post_title',
167 'sort_order' => 'ASC',
168 'post_status' => 'publish',
169 ]);
170
171 $options = [
172 '' => esc_html__('Select a page', 'king-addons'),
173 ];
174
175 foreach ($pages as $page) {
176 $options[$page->ID] = $page->post_title;
177 }
178
179 return $options;
180 }
181
182 private function get_elementor_templates(): array
183 {
184 if (!class_exists('\\Elementor\\Plugin')) {
185 return [
186 '' => esc_html__('Elementor not active', 'king-addons'),
187 ];
188 }
189
190 $templates = get_posts([
191 'post_type' => 'elementor_library',
192 'post_status' => 'publish',
193 'posts_per_page' => 50,
194 'orderby' => 'title',
195 'order' => 'ASC',
196 ]);
197
198 $options = [
199 '' => esc_html__('Select a template', 'king-addons'),
200 ];
201
202 foreach ($templates as $template) {
203 $options[$template->ID] = $template->post_title;
204 }
205
206 return $options;
207 }
208
209 protected function render(): void
210 {
211 $settings = $this->get_settings_for_display();
212 $source = $settings['source_type'] ?? 'built_in';
213
214 $shortcode = '[kng_maintenance_page';
215
216 if ($source === 'page' && !empty($settings['page_id'])) {
217 $shortcode .= ' id="' . esc_attr($settings['page_id']) . '" type="page"';
218 } elseif ($source === 'elementor' && !empty($settings['elementor_id'])) {
219 $shortcode .= ' id="' . esc_attr($settings['elementor_id']) . '" type="elementor"';
220 } else {
221 $shortcode .= ' id="' . esc_attr($settings['template_id'] ?? 'minimal') . '"';
222 }
223
224 if (!empty($settings['theme_override'])) {
225 $shortcode .= ' theme="' . esc_attr($settings['theme_override']) . '"';
226 }
227
228 if (!empty($settings['full_height'])) {
229 $shortcode .= ' full_height="true"';
230 }
231
232 $shortcode .= ']';
233
234 echo do_shortcode($shortcode);
235 }
236 }
237