PluginProbe
Page Builder: Pagelayer – Drag and Drop website builder / 2.2.0
Page Builder: Pagelayer – Drag and Drop website builder v2.2.0
2.2.1 2.2.0 2.1.9 2.1.8 2.1.7 2.1.6 2.1.5 2.1.4 2.1.3 trunk 0.9.0 0.9.1 0.9.2 0.9.3 0.9.4 0.9.5 0.9.6 0.9.7 0.9.8 0.9.9 1.0.0 1.0.2 1.0.3 1.0.4 1.0.5 All 129 releases
pagelayer / main / settings.php

settings.php in Page Builder: Pagelayer – Drag and Drop website builder 2.2.0, at main/settings.php

1,193 lines 46.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 //////////////////////////////////////////////////////////////
4 //===========================================================
5 // settings.php
6 //===========================================================
7 // PAGELAYER
8 // Inspired by the DESIRE to be the BEST OF ALL
9 // ----------------------------------------------------------
10 // Started by: Pulkit Gupta
11 // Date: 23rd Jan 2017
12 // Time: 23:00 hrs
13 // Site: http://pagelayer.com/wordpress (PAGELAYER)
14 // ----------------------------------------------------------
15 // Please Read the Terms of use at http://pagelayer.com/tos
16 // ----------------------------------------------------------
17 //===========================================================
18 // (c)Pagelayer Team
19 //===========================================================
20 //////////////////////////////////////////////////////////////
21
22 // Are we being accessed directly ?
23 if(!defined('PAGELAYER_VERSION')) {
24 exit('Hacking Attempt !');
25 }
26
27 // The Pagelayer Settings Header
28 function pagelayer_page_header($title = 'Pagelayer Editor', $no_sidebar = 0){
29
30 global $pagelayer, $pagelayer_header_printed;
31
32 if (!empty($pagelayer_header_printed)) {
33 return;
34 }
35 $pagelayer_header_printed = true;
36
37 // Determine active nav based on current page
38 $current_page = isset($_GET['page']) ? sanitize_text_field($_GET['page']) : '';
39
40 if (defined('SITEPAD')) {
41 if ($current_page === 'pagelayer_template_wizard' || $current_page === 'pagelayer_template_export') {
42 $no_sidebar = 1;
43 }
44 }
45
46 if ($current_page === 'pagelayer_website_settings'){
47 $nav_items = array(
48 'headings' => array( 'label' => __pl('elem_styles'), 'icon' => 'dashicons-editor-paragraph', 'hash' => admin_url('admin.php?page=pagelayer_website_settings#headings') ),
49 'website_container' => array( 'label' => __pl('container'), 'icon' => 'dashicons-editor-table', 'hash' => admin_url('admin.php?page=pagelayer_website_settings#website_container') ),
50 'hf' => array( 'label' => __pl('hf'), 'icon' => 'dashicons-editor-insertmore', 'hash' => admin_url('admin.php?page=pagelayer_website_settings#hf') ),
51 );
52 } elseif ($current_page === 'pagelayer_template_export' || $current_page === 'pagelayer_import' || $current_page === 'pagelayer_template_wizard' || $current_page === 'pagelayer_tools') {
53 $nav_items = array(
54 'add_new_template' => array( 'label' => __('Add New Template'), 'icon' => 'dashicons-plus-alt', 'hash' => admin_url('admin.php?page=pagelayer_tools#add_new_template_tab') ),
55 'export_theme' => array( 'label' => __('Export Theme'), 'icon' => 'dashicons-upload', 'hash' => admin_url('admin.php?page=pagelayer_tools#export_theme_tab') ),
56 'import_theme' => array( 'label' => __('Import Theme'), 'icon' => 'dashicons-download', 'hash' => admin_url('admin.php?page=pagelayer_tools#import_theme_tab') ),
57 'custom_fonts' => array( 'label' => __('Custom Fonts'), 'icon' => 'dashicons-editor-bold', 'hash' => (defined('PAGELAYER_PREMIUM') ? admin_url('edit.php?post_type=pagelayer-fonts') : admin_url('admin.php?page=pagelayer_tools#custom_fonts_tab')) ),
58 );
59 } elseif ($current_page === 'pagelayer_ai_agents') {
60 $nav_items = array(
61 'connection' => array( 'label' => __('Connection'), 'icon' => 'dashicons-admin-network', 'hash' => admin_url('admin.php?page=pagelayer_ai_agents#connection') ),
62 );
63 } elseif ($current_page === 'pagelayer_license' || $current_page === 'pagelayer_getting_started') {
64 $nav_items = array(
65 'settings' => array( 'label' => __('Settings'), 'icon' => 'dashicons-admin-settings', 'hash' => admin_url('admin.php?page=pagelayer') ),
66 'website_settings' => array( 'label' => __('Website Settings'), 'icon' => 'dashicons-editor-table', 'hash' => admin_url('admin.php?page=pagelayer_website_settings') ),
67 'theme_templates' => array( 'label' => __('Theme Templates'), 'icon' => 'dashicons-welcome-widgets-menus', 'hash' => admin_url('edit.php?post_type=pagelayer-template') ),
68 'getting_started' => array( 'label' => __('Getting Started'), 'icon' => 'dashicons-controls-play', 'hash' => admin_url('admin.php?page=pagelayer_getting_started') ),
69 );
70
71 if(defined('PAGELAYER_PREMIUM')){
72 $nav_items['license'] = array( 'label' => __('License'), 'icon' => 'dashicons-admin-network', 'hash' => admin_url('admin.php?page=pagelayer_license') );
73 }
74 } else {
75 $nav_items = array(
76 'general' => array( 'label' => __('General'), 'icon' => 'dashicons-admin-settings', 'hash' => admin_url('admin.php?page=pagelayer#general') ),
77 'icons' => array( 'label' => __('Enable Icons'), 'icon' => 'dashicons-star-filled', 'hash' => admin_url('admin.php?page=pagelayer#icons') ),
78 'social' => array( 'label' => __('Information'), 'icon' => 'dashicons-info', 'hash' => admin_url('admin.php?page=pagelayer#social') ),
79 'integration' => array( 'label' => __('Integrations'), 'icon' => 'dashicons-networking', 'hash' => admin_url('admin.php?page=pagelayer#integration') ),
80 );
81
82 if(defined('PAGELAYER_PREMIUM')){
83 $nav_items['contactform'] = array( 'label' => __('Contact Form'), 'icon' => 'dashicons-email-alt', 'hash' => admin_url('admin.php?page=pagelayer#contactform') );
84 $nav_items['captcha'] = array( 'label' => __('Google Captcha'), 'icon' => 'dashicons-shield', 'hash' => admin_url('admin.php?page=pagelayer#captcha') );
85 }
86
87 if(!defined('SITEPAD')){
88 $nav_items['support'] = array( 'label' => __('Support'), 'icon' => 'dashicons-sos', 'hash' => admin_url('admin.php?page=pagelayer#support') );
89 $nav_items['faq'] = array( 'label' => __('FAQ'), 'icon' => 'dashicons-editor-help', 'hash' => admin_url('admin.php?page=pagelayer#faq') );
90 }
91 }
92
93 // Version
94 $version = defined('PAGELAYER_VERSION') ? PAGELAYER_VERSION : '';
95
96 echo '<div id="pagelayer-admin-wrap"' . (!empty($no_sidebar) ? ' class="pl-no-sidebar"' : '') . '>';
97
98 // ---- Left Sidebar ----
99 if (empty($no_sidebar)) {
100 echo '<div id="pagelayer-sidebar">';
101 if(!defined('SITEPAD')){
102 echo '<div id="pagelayer-sidebar-logo">
103 <img src="'.esc_url(PAGELAYER_URL . '/images/pagelayer-logo-40.png').'" alt="Pagelayer Logo">
104 <div class="pl-logo-details">
105 <span class="pl-logo-text">pagelayer</span>
106 <span class="pl-version">v' . esc_html( $version ) . '</span>
107 </div>
108 </div>';
109 }
110
111 echo '<nav id="pagelayer-sidebar-nav">';
112 $first_key = key($nav_items); foreach( $nav_items as $key => $item ){
113 $is_active = false;
114 if ($current_page === 'pagelayer_website_settings' || $current_page === 'pagelayer' || $current_page === 'pagelayer_ai_agents') {
115 $is_active = ($key === $first_key);
116 } else {
117 if ($current_page === 'pagelayer_template_export' && $key === 'export_theme') {
118 $is_active = true;
119 } elseif ($current_page === 'pagelayer_import' && $key === 'import_theme') {
120 $is_active = true;
121 } elseif ($current_page === 'pagelayer_license' && $key === 'license') {
122 $is_active = true;
123 } elseif (($current_page === 'pagelayer_template_wizard' || $current_page === 'pagelayer_tools') && $key === 'add_new_template') {
124 $is_active = true;
125 } elseif ($current_page === 'pagelayer_getting_started' && $key === 'getting_started') {
126 $is_active = true;
127 }
128 }
129 echo '<a href="' . esc_attr( $item['hash'] ) . '" class="pagelayer-nav-item ' . ($is_active ? 'pagelayer-nav-active' : '') . '" data-tab="' . esc_attr( $key ) . '">
130 <span class="pl-nav-icon dashicons ' . esc_attr( $item['icon'] ) . '"></span>'.esc_html( $item['label'] ).'
131 </a>';
132 }
133 echo '</nav>';
134
135 echo '</div>'; // end #pagelayer-sidebar
136 }
137
138 // ---- Main Content ----
139 echo '<div id="pagelayer-main-content">';
140
141 // Top Header
142 echo '<div id="pagelayer-top-header">
143 <h1>'.esc_html($title).'</h1>
144 <div class="pagelayer-header-actions">';
145 if(!defined('SITEPAD')){
146 echo '<a href="' . esc_url( PAGELAYER_DOCS ) . '" target="_blank" class="pl-help-btn">
147 <span class="dashicons dashicons-editor-help"></span> ' . __('Help').'
148 </a>';
149 }
150 // Save button is rendered by each page form, but we add a placeholder trigger
151 echo '</div>
152 </div>'; // end #pagelayer-top-header
153
154 // Body row wrapper
155 echo '<div id="pagelayer-body-row">
156 <div id="pagelayer-settings-content">';
157 }
158
159 // Helper to determine the activation status of recommended plugins
160 function pagelayer_get_recommended_plugin_status($slug){
161 if(!function_exists('get_plugins')){
162 require_once ABSPATH . 'wp-admin/includes/plugin.php';
163 }
164
165 $all_plugins = get_plugins();
166
167 foreach($all_plugins as $plugin_path => $plugin_data){
168 if(strpos($plugin_path, $slug . '/') === 0){
169 if(is_plugin_active($plugin_path)){
170 return 'active';
171 }
172 return 'installed';
173 }
174 }
175
176 return 'not_installed';
177 }
178
179 // Render the Recommended Plugins sidebar module (similar to cookieadmin)
180 function pagelayer_render_recommended_plugins(){
181 if(defined('SITEPAD')){
182 return;
183 }
184 $plugins = array(
185 'loginizer' => array(
186 'name' => 'Loginizer',
187 'desc' => __('Brute Force Protection & Login Security', 'pagelayer'),
188 'icon' => 'dashicons-shield',
189 'wporg_url' => 'https://wordpress.org/plugins/loginizer/',
190 ),
191 'gosmtp' => array(
192 'name' => 'GoSMTP',
193 'desc' => __('SMTP Mailer for WordPress', 'pagelayer'),
194 'icon' => 'dashicons-email-alt',
195 'wporg_url' => 'https://wordpress.org/plugins/gosmtp/',
196 ),
197 'backuply' => array(
198 'name' => 'Backuply',
199 'desc' => __('Backup & Restore made easy', 'pagelayer'),
200 'icon' => 'dashicons-backup',
201 'wporg_url' => 'https://wordpress.org/plugins/backuply/',
202 ),
203 'siteseo' => array(
204 'name' => 'SiteSEO',
205 'desc' => __('SEO Optimization for WordPress', 'pagelayer'),
206 'icon' => 'dashicons-search',
207 'wporg_url' => 'https://wordpress.org/plugins/siteseo/',
208 ),
209 );
210
211 echo '<script>
212 var pagelayer_recommended_nonce = "' . esc_js(wp_create_nonce('pagelayer_recommended_plugins')) . '";
213 </script>';
214
215 echo '<div class="pagelayer-settings-card pagelayer-recommended-plugins">
216 <div class="pagelayer-settings-card-header">
217 <h3><span class="dashicons dashicons-admin-plugins" style="margin-right: 6px; vertical-align: text-bottom; color: #2563eb;"></span>'.esc_html__('Recommended Plugins', 'pagelayer').'</h3>
218 </div>
219 <div class="pagelayer-recommended-plugins-body">';
220
221 foreach($plugins as $slug => $plugin){
222 $status = pagelayer_get_recommended_plugin_status($slug);
223
224 echo '<div class="pagelayer-recommended-plugin" data-slug="'.esc_attr($slug).'">
225 <div class="pagelayer-recommended-plugin-info">
226 <div class="pagelayer-recommended-plugin-icon"><span class="dashicons '.esc_attr($plugin['icon']).'"></span></div>
227 <div class="pagelayer-recommended-plugin-details">
228 <div class="pagelayer-recommended-plugin-name">'.esc_html($plugin['name']).'</div>
229 <div class="pagelayer-recommended-plugin-desc">'.esc_html($plugin['desc']).'</div>
230 </div>
231 </div>
232 <div class="pagelayer-recommended-plugin-action">
233 <a href="' . esc_url($plugin['wporg_url']) . '" target="_blank" class="pagelayer-recommended-plugin-link">' . esc_html__('Learn more', 'pagelayer') . '</a>';
234
235 if($status === 'active'){
236 echo '<span class="pl-plugin-badge pl-plugin-success">'.esc_html__('Active', 'pagelayer').'</span>';
237 }elseif($status === 'installed'){
238 echo '<button type="button" class="pl-plugin-btn pl-plugin-btn-secondary pagelayer-plugin-activate-btn" data-slug="'.esc_attr($slug).'">'.esc_html__('Activate', 'pagelayer').'</button>';
239 }else{
240 echo '<button type="button" class="pl-plugin-btn pl-plugin-btn-primary pagelayer-plugin-install-btn" data-slug="'.esc_attr($slug).'">'.esc_html__('Install', 'pagelayer').'</button>';
241 }
242
243 echo '</div>
244 </div>';
245 }
246
247 echo '</div>
248 </div>';
249 }
250
251 // The Pagelayer Settings footer
252 function pagelayer_page_footer($no_twitter = 0){
253
254 global $pagelayer_footer_printed;
255
256 if (!empty($pagelayer_footer_printed)) {
257 return;
258 }
259 $pagelayer_footer_printed = true;
260
261 // Close #pagelayer-settings-content
262 echo '</div>';
263
264 $promos = apply_filters('pagelayer_right_bar_promos', false);
265
266 // Force promos for Pagelayer settings page only to show recommended plugins
267 $current_page = isset($_GET['page']) ? sanitize_text_field($_GET['page']) : '';
268 if($current_page === 'pagelayer'){
269 $promos = true;
270 }
271
272 if(defined('SITEPAD')){
273 $promos = false;
274 }
275
276 if($promos){
277
278 echo '<div id="pagelayer-right-bar">';
279
280 if($current_page === 'pagelayer'){
281 pagelayer_render_recommended_plugins();
282 }else{
283
284 if(!defined('PAGELAYER_PREMIUM')){
285
286 echo '
287 <div class="postbox" style="min-width:0px !important;">
288 <h2 class="hndle ui-sortable-handle">
289 <span><a target="_blank" href="'.PAGELAYER_PRO_PRICE_URL.'"><img src="'.PAGELAYER_URL.'/images/pagelayer_product.png" width="100%" /></a></span>
290 </h2>
291 <div class="inside">
292 <i>Upgrade to the premium version and get the following features </i>:<br>
293 <ul class="pagelayer-right-ul">
294 <li>60+ Premium Widgets</li>
295 <li>16+ WooCommerce Widgets</li>
296 <li>400+ Premium Sections</li>
297 <li>Theme Builder</li>
298 <li>WooCommerce Builder</li>
299 <li>Theme Creator and Exporter</li>
300 <li>Form Builder</li>
301 <li>Popup Builder</li>
302 <li>And many more ...</li>
303 </ul>
304 <center><a class="button button-primary" target="_blank" href="'.PAGELAYER_PRO_PRICE_URL.'">Upgrade</a></center>
305 </div>
306 </div>';
307
308 }
309
310 echo '
311 <div class="postbox" style="min-width:0px !important;">
312 <h2 class="hndle ui-sortable-handle">
313 <span><a target="_blank" href="https://wpcentral.co/?from=pagelayer-plugin"><img src="'.PAGELAYER_URL.'/images/wpcentral_product.png" width="100%" /></a></span>
314 </h2>
315 <div class="inside">
316 <i>Manage all your WordPress sites from <b>1 dashboard</b> </i>:<br>
317 <ul class="pagelayer-right-ul">
318 <li>1-click Admin Access</li>
319 <li>Update WordPress</li>
320 <li>Update Themes</li>
321 <li>Update Plugins</li>
322 <li>Backup your WordPress Site</li>
323 <li>Plugins &amp; Theme Management</li>
324 <li>Post Management</li>
325 <li>And many more ...</li>
326 </ul>
327 <center><a class="button button-primary" target="_blank" href="https://wpcentral.co/?from=pagelayer-plugin">Visit wpCentral</a></center>
328 </div>
329 </div>
330 ';
331
332 }
333
334 echo '</div>'; // end #pagelayer-right-bar
335 }
336
337 // Close #pagelayer-body-row
338 echo '</div>';
339
340 // Close #pagelayer-main-content and #pagelayer-admin-wrap
341 echo '</div></div>';
342
343 }
344
345
346
347 function pagelayer_settings_page(){
348
349 $_REQUEST = wp_unslash($_REQUEST);
350 $post_type = array();
351 $exclude = [ 'attachment', 'pagelayer-template' ];
352 $pt_objects = get_post_types(['public' => true,], 'objects');
353
354 foreach ( $pt_objects as $pt_slug => $type ) {
355
356 if ( in_array( $pt_slug, $exclude ) ) {
357 continue;
358 }
359
360 $post_type[$pt_slug] = $type->labels->name;
361 }
362
363 $support_ept = get_option( 'pl_support_ept', ['post', 'page']);
364
365 $option_name = 'pl_gen_setting';
366 $new_value = '';
367
368 // DO an admin referrer check
369 if(!empty($_POST)){
370 check_admin_referer('pagelayer-options');
371 }
372
373 // We do a $_POST check and hence we are checking the POST var here as well
374 // Everywhere down as well, $_POST should be used to save data
375
376 if(isset($_POST['pl_support_ept'])){
377
378 $pl_support_ept = $_REQUEST['pl_support_ept'];
379
380 foreach($pl_support_ept as $k => $v){
381 if(empty($post_type[$v])){
382 unset($pl_support_ept[$k]);
383 }
384 }
385
386 // Update it
387 update_option('pl_support_ept', $pl_support_ept );
388
389 $support_ept = get_option( 'pl_support_ept');
390
391 $done = 1;
392 }
393
394 if(isset($_POST['pagelayer_icons_set'])){
395 $pagelayer_icons_set = $_REQUEST['pagelayer_icons_set'];
396
397 // Update it
398 update_option('pagelayer_icons_set', $pagelayer_icons_set);
399
400 $done = 1;
401 }
402
403 $socials = ['pagelayer-facebook-url','pagelayer-twitter-url','pagelayer-instagram-url','pagelayer-linkedin-url','pagelayer-youtube-url','pagelayer-gplus-url','pagelayer-copyright','pagelayer-phone','pagelayer-address'];
404
405 foreach( $socials as $social ){
406 if(isset($_POST[$social])){
407 $url = $_REQUEST[$social];
408 update_option($social, $url);
409 $done = 1;
410 }
411 }
412
413 if(isset($_POST['pagelayer_cf_to_email'])){
414
415 $to_email = $_REQUEST['pagelayer_cf_to_email'];
416
417 update_option( 'pagelayer_cf_to_email', $to_email );
418
419 $done = 1;
420 }
421
422 if(isset($_POST['pagelayer-gmaps-api-key'])){
423
424 $maps_id = sanitize_text_field($_REQUEST['pagelayer-gmaps-api-key']);
425
426 update_option( 'pagelayer-gmaps-api-key', $maps_id );
427
428 $done = 1;
429 }
430
431 if(defined('PAGELAYER_PREMIUM')){
432
433 if(isset($_POST['pagelayer_cf_subject'])){
434
435 $subject = $_REQUEST['pagelayer_cf_subject'];
436
437 update_option('pagelayer_cf_subject', $subject, 'no');
438
439 $done = 1;
440
441 }
442
443 if(isset($_POST['pagelayer_cf_headers'])){
444
445 $subject = $_REQUEST['pagelayer_cf_headers'];
446
447 update_option('pagelayer_cf_headers', $subject, 'no');
448
449 $done = 1;
450
451 }
452
453 if(isset($_POST['pagelayer_cf_from_email'])){
454
455 $subject = $_REQUEST['pagelayer_cf_from_email'];
456
457 update_option('pagelayer_cf_from_email', $subject, 'no');
458
459 $done = 1;
460
461 }
462
463 if(isset($_POST['pagelayer_cf_success'])){
464
465 $success = $_REQUEST['pagelayer_cf_success'];
466
467 update_option( 'pagelayer_cf_success', $success, 'no');
468
469 $done = 1;
470
471 }
472
473 if(isset($_POST['pagelayer_cf_failed'])){
474
475 $failed = $_REQUEST['pagelayer_cf_failed'];
476
477 update_option( 'pagelayer_cf_failed', $failed, 'no');
478
479 $done = 1;
480
481 }
482
483 if(isset($_POST['pagelayer_recaptcha_failed'])){
484
485 $failed = $_REQUEST['pagelayer_recaptcha_failed'];
486
487 update_option( 'pagelayer_recaptcha_failed', $failed, 'no');
488
489 $done = 1;
490
491 }
492
493 if(isset($_POST['pagelayer_recaptcha_version'])){
494
495 $version = sanitize_text_field($_REQUEST['pagelayer_recaptcha_version']);
496
497 update_option( 'pagelayer_recaptcha_version', $version );
498
499 $done = 1;
500
501 }
502
503 if(isset($_POST['pagelayer_google_captcha'])){
504
505 $captcha = sanitize_text_field($_REQUEST['pagelayer_google_captcha']);
506
507 update_option( 'pagelayer_google_captcha', $captcha );
508
509 $done = 1;
510
511 }
512
513 if(isset($_POST['pagelayer_google_captcha_secret'])){
514
515 $captcha_secret = sanitize_text_field($_REQUEST['pagelayer_google_captcha_secret']);
516
517 update_option( 'pagelayer_google_captcha_secret', $captcha_secret );
518
519 $done = 1;
520
521 }
522
523 if(isset($_POST['pagelayer_google_captcha_lang'])){
524
525 $captcha_secret = $_REQUEST['pagelayer_google_captcha_lang'];
526
527 update_option( 'pagelayer_google_captcha_lang', $captcha_secret );
528
529 $done = 1;
530
531 }
532
533 // Facebook APP ID
534 if(isset($_POST['pagelayer-fbapp-id'])){
535 $fb_app_id = sanitize_text_field($_REQUEST['pagelayer-fbapp-id']);
536
537
538 if(preg_match('/\W/is', $fb_app_id)){
539 $pl_error[] = 'The Facebook App ID is not correct';
540 }else{
541
542 // Save it
543 update_option( 'pagelayer-fbapp-id', $fb_app_id );
544
545 $done = 1;
546
547 }
548 }
549 }
550
551 // reCAPTCHA Langs
552 $recap_lang[''] = 'Auto Detect';
553 $recap_lang['ar'] = 'Arabic';
554 $recap_lang['af'] = 'Afrikaans';
555 $recap_lang['am'] = 'Amharic';
556 $recap_lang['hy'] = 'Armenian';
557 $recap_lang['az'] = 'Azerbaijani';
558 $recap_lang['eu'] = 'Basque';
559 $recap_lang['bn'] = 'Bengali';
560 $recap_lang['bg'] = 'Bulgarian';
561 $recap_lang['ca'] = 'Catalan';
562 $recap_lang['zh-HK'] = 'Chinese (Hong Kong)';
563 $recap_lang['zh-CN'] = 'Chinese (Simplified)';
564 $recap_lang['zh-TW'] = 'Chinese (Traditional)';
565 $recap_lang['hr'] = 'Croatian';
566 $recap_lang['cs'] = 'Czech';
567 $recap_lang['da'] = 'Danish';
568 $recap_lang['nl'] = 'Dutch';
569 $recap_lang['en-GB'] = 'English (UK)';
570 $recap_lang['en'] = 'English (US)';
571 $recap_lang['et'] = 'Estonian';
572 $recap_lang['fil'] = 'Filipino';
573 $recap_lang['fi'] = 'Finnish';
574 $recap_lang['fr'] = 'French';
575 $recap_lang['fr-CA'] = 'French (Canadian)';
576 $recap_lang['gl'] = 'Galician';
577 $recap_lang['ka'] = 'Georgian';
578 $recap_lang['de'] = 'German';
579 $recap_lang['de-AT'] = 'German (Austria)';
580 $recap_lang['de-CH'] = 'German (Switzerland)';
581 $recap_lang['el'] = 'Greek';
582 $recap_lang['gu'] = 'Gujarati';
583 $recap_lang['iw'] = 'Hebrew';
584 $recap_lang['hi'] = 'Hindi';
585 $recap_lang['hu'] = 'Hungarain';
586 $recap_lang['is'] = 'Icelandic';
587 $recap_lang['id'] = 'Indonesian';
588 $recap_lang['it'] = 'Italian';
589 $recap_lang['ja'] = 'Japanese';
590 $recap_lang['kn'] = 'Kannada';
591 $recap_lang['ko'] = 'Korean';
592 $recap_lang['lo'] = 'Laothian';
593 $recap_lang['lv'] = 'Latvian';
594 $recap_lang['lt'] = 'Lithuanian';
595 $recap_lang['ms'] = 'Malay';
596 $recap_lang['ml'] = 'Malayalam';
597 $recap_lang['mr'] = 'Marathi';
598 $recap_lang['mn'] = 'Mongolian';
599 $recap_lang['no'] = 'Norwegian';
600 $recap_lang['fa'] = 'Persian';
601 $recap_lang['pl'] = 'Polish';
602 $recap_lang['pt'] = 'Portuguese';
603 $recap_lang['pt-BR'] = 'Portuguese (Brazil)';
604 $recap_lang['pt-PT'] = 'Portuguese (Portugal)';
605 $recap_lang['ro'] = 'Romanian';
606 $recap_lang['ru'] = 'Russian';
607 $recap_lang['sr'] = 'Serbian';
608 $recap_lang['si'] = 'Sinhalese';
609 $recap_lang['sk'] = 'Slovak';
610 $recap_lang['sl'] = 'Slovenian';
611 $recap_lang['es'] = 'Spanish';
612 $recap_lang['es-419'] = 'Spanish (Latin America)';
613 $recap_lang['sw'] = 'Swahili';
614 $recap_lang['sv'] = 'Swedish';
615 $recap_lang['ta'] = 'Tamil';
616 $recap_lang['te'] = 'Telugu';
617 $recap_lang['th'] = 'Thai';
618 $recap_lang['tr'] = 'Turkish';
619 $recap_lang['uk'] = 'Ukrainian';
620 $recap_lang['ur'] = 'Urdu';
621 $recap_lang['vi'] = 'Vietnamese';
622 $recap_lang['zu'] = 'Zulu';
623
624 pagelayer_page_header('Settings');
625
626 // Media Replace.
627 if(isset($_POST['submit']) || isset($_POST['pagelayer_disable_media_replace'])){
628
629 $disable_media = empty($_REQUEST['pagelayer_disable_media_replace']) ? 0 : 1;
630
631 update_option( 'pagelayer_disable_media_replace', $disable_media );
632
633 $done = 1;
634
635 }
636
637 // Media Replace
638 $media_replace = get_option( 'pagelayer_disable_media_replace');
639
640 // Clone Templates.
641 if(isset($_POST['submit']) || isset($_POST['pagelayer_disable_clone'])){
642
643 $disable_clone = empty($_REQUEST['pagelayer_disable_clone']) ? 0 : 1;
644
645 update_option( 'pagelayer_disable_clone', $disable_clone );
646
647 $done = 1;
648
649 }
650
651 // Disable Clone
652 $disable_clone = get_option('pagelayer_disable_clone');
653
654 // Dark Mode
655 if(isset($_POST['submit']) || isset($_POST['pagelayer_enable_dark_mode'])){
656
657 $enable_dark_mode = empty($_REQUEST['pagelayer_enable_dark_mode']) ? 0 : 1;
658
659 update_option( 'pagelayer_enable_dark_mode', $enable_dark_mode );
660
661 $done = 1;
662
663 }
664
665 // Dark Mode
666 $enable_dark_mode = get_option('pagelayer_enable_dark_mode');
667
668 // Enable JS/CSS Giver
669 if(isset($_POST['submit']) || isset($_POST['pagelayer_enable_jscss_giver'])){
670 $done = 1;
671 $enable_jscss_giver = empty($_REQUEST['pagelayer_enable_jscss_giver']) ? -1 : 1;
672
673 update_option( 'pagelayer_enable_giver', $enable_jscss_giver );
674 }
675
676 // Enable JS/CSS Giver
677 $enable_jscss_giver = get_option('pagelayer_enable_giver');
678
679 if(defined('PAGELAYER_PREMIUM')){
680 // Enable Google Font local giver
681 if(isset($_POST['submit']) || isset($_POST['pagelayer_local_gfont'])){
682 $done = 1;
683 $enable_gfont_downloader = empty($_REQUEST['pagelayer_local_gfont']) ? -1 : 1;
684
685 update_option( 'pagelayer_local_gfont', $enable_gfont_downloader );
686 }
687
688 // Enable Google Font Downloader
689 $enable_gfont_downloader = get_option('pagelayer_local_gfont');
690
691 // Enable Markdown Upload
692 if(isset($_POST['submit']) || isset($_POST['pagelayer_markdown_upload'])){
693 $done = 1;
694 $enable_markdown_upload = !empty($_REQUEST['pagelayer_markdown_upload']);
695
696 update_option('pagelayer_markdown_upload', $enable_markdown_upload);
697 }
698
699 // Enable Markdown Upload
700 $enable_markdown_upload = get_option('pagelayer_markdown_upload');
701 }
702
703 // User roles to allow saving js content
704 if(isset($_POST['pagelayer_js_permission'])){
705 update_option( 'pagelayer_js_permission', array_filter($_POST['pagelayer_js_permission']) );
706 }
707
708 $pagelayer_js_permission = get_option('pagelayer_js_permission');
709 $pagelayer_js_permission = empty($pagelayer_js_permission) ? array() : $pagelayer_js_permission;
710
711 // Saved ?
712 if(!empty($done)){
713 echo '<div class="notice notice-success"><p>'. __('The settings were saved successfully', 'pagelayer'). '</p></div><br />';
714 }
715
716 // Any errors ?
717 if(!empty($pl_error)){
718 pagelayer_report_error($pl_error);echo '<br />';
719 }
720
721 ?>
722 <form class="pagelayer-setting-form" method="post" action="" id="pagelayer-settings-main-form">
723 <?php wp_nonce_field('pagelayer-options'); ?>
724
725 <?php
726 // Inject Save Settings button into header via inline script
727 echo '<script>
728 jQuery(function($){
729 var btn = \'<input type="submit" name="submit" form="pagelayer-settings-main-form" class="pl-save-btn" value="' . esc_attr__('Save Settings') . '">\';
730 $(".pagelayer-header-actions").append(btn);
731 });
732 </script>';
733 ?>
734
735 <div class="tabs-wrapper">
736
737 <!-- ===== GENERAL TAB ===== -->
738 <div id="general" class="pagelayer-tab-panel pagelayer-tab-active">
739
740 <div class="pagelayer-settings-card">
741 <div class="pagelayer-settings-card-header">
742 <h3><?php _e('General Settings'); ?></h3>
743 <span class="pl-badge"><?php _e('Core'); ?></span>
744 </div>
745
746 <?php if(!defined('SITEPAD')){ ?>
747 <!-- Editor Enables On -->
748 <div class="pagelayer-setting-row">
749 <div class="pagelayer-setting-row-left">
750 <span class="pagelayer-setting-row-label"><?php _e('Editor Enables On'); ?></span>
751 <p class="pagelayer-setting-row-desc"><?php _e('Choose post types where the editor should be active.'); ?></p>
752 </div>
753 <div class="pagelayer-setting-row-control">
754 <div class="pl-posttype-toggles">
755 <?php foreach($post_type as $type => $name){ ?>
756 <label class="pl-posttype-toggle">
757 <label class="pl-toggle">
758 <input type="checkbox" name="pl_support_ept[]" value="<?php echo esc_attr($type); ?>" <?php echo in_array($type, $support_ept) ? 'checked' : ''; ?>>
759 <span class="pl-toggle-slider"></span>
760 </label>
761 <span><?php echo esc_html($name); ?></span>
762 </label>
763 <?php } ?>
764 </div>
765 </div>
766 </div>
767
768 <!-- Media Replace -->
769 <div class="pagelayer-setting-row">
770 <div class="pagelayer-setting-row-left">
771 <span class="pagelayer-setting-row-label"><?php _e('Media Replace'); ?></span>
772 <p class="pagelayer-setting-row-desc"><?php _e('Disable the automatic media replacement engine.'); ?></p>
773 </div>
774 <div class="pagelayer-setting-row-control">
775 <label class="pl-toggle">
776 <input type="checkbox" name="pagelayer_disable_media_replace" <?php echo (!empty($media_replace) ? 'checked' : ''); ?>>
777 <span class="pl-toggle-slider"></span>
778 </label>
779 </div>
780 </div>
781
782 <!-- Disable Clone -->
783 <div class="pagelayer-setting-row">
784 <div class="pagelayer-setting-row-left">
785 <span class="pagelayer-setting-row-label"><?php _e('Disable Clone'); ?></span>
786 <p class="pagelayer-setting-row-desc"><?php _e('Turn off the ability to duplicate pages or posts.'); ?></p>
787 </div>
788 <div class="pagelayer-setting-row-control">
789 <label class="pl-toggle">
790 <input type="checkbox" name="pagelayer_disable_clone" <?php echo (!empty($disable_clone) ? 'checked' : ''); ?>>
791 <span class="pl-toggle-slider"></span>
792 </label>
793 </div>
794 </div>
795 <?php } ?>
796
797 <!-- Dark Mode -->
798 <div class="pagelayer-setting-row">
799 <div class="pagelayer-setting-row-left">
800 <span class="pagelayer-setting-row-label"><?php _e('Dark Mode'); ?></span>
801 <p class="pagelayer-setting-row-desc"><?php _e('Enable experimental dark mode for the editor interface.'); ?></p>
802 </div>
803 <div class="pagelayer-setting-row-control">
804 <label class="pl-toggle">
805 <input type="checkbox" name="pagelayer_enable_dark_mode" <?php echo (!empty($enable_dark_mode) ? 'checked' : ''); ?>>
806 <span class="pl-toggle-slider"></span>
807 </label>
808 </div>
809 </div>
810
811 <!-- JS/CSS Giver -->
812 <div class="pagelayer-setting-row">
813 <div class="pagelayer-setting-row-left">
814 <span class="pagelayer-setting-row-label"><?php _e('Enable JS/CSS Giver'); ?></span>
815 <p class="pagelayer-setting-row-desc"><?php _e('Allow direct injection of custom scripts and styles into templates.'); ?></p>
816 </div>
817 <div class="pagelayer-setting-row-control">
818 <label class="pl-toggle">
819 <input type="checkbox" name="pagelayer_enable_jscss_giver" <?php echo ((!empty($enable_jscss_giver) && $enable_jscss_giver == 1) ? 'checked' : ''); ?>>
820 <span class="pl-toggle-slider"></span>
821 </label>
822 </div>
823 </div>
824
825 <?php if(defined('PAGELAYER_PREMIUM')){ ?>
826 <!-- Local Google Fonts -->
827 <div class="pagelayer-setting-row">
828 <div class="pagelayer-setting-row-left">
829 <span class="pagelayer-setting-row-label"><?php _e('Local Google Fonts'); ?></span>
830 <p class="pagelayer-setting-row-desc">
831 <?php _e('Download Google Fonts to your server for GDPR compliance and faster loads.'); ?>
832 <strong class="pl-recommend-note"><?php _e('Highly recommended for European servers.'); ?></strong>
833 </p>
834 </div>
835 <div class="pagelayer-setting-row-control">
836 <label class="pl-toggle">
837 <input type="checkbox" name="pagelayer_local_gfont" <?php echo ((!empty($enable_gfont_downloader) && $enable_gfont_downloader == 1) ? 'checked' : ''); ?>>
838 <span class="pl-toggle-slider"></span>
839 </label>
840 </div>
841 </div>
842
843 <!-- Markdown Upload -->
844 <div class="pagelayer-setting-row">
845 <div class="pagelayer-setting-row-left">
846 <span class="pagelayer-setting-row-label"><?php _e('Markdown Upload', 'pagelayer'); ?></span>
847 <p class="pagelayer-setting-row-desc">
848 <?php _e('Enable uploading .md and .markdown files to your media library.'); ?>
849 </p>
850 </div>
851 <div class="pagelayer-setting-row-control">
852 <label class="pl-toggle">
853 <input type="checkbox" name="pagelayer_markdown_upload" value="true" <?php checked($enable_markdown_upload, true); ?>>
854 <span class="pl-toggle-slider"></span>
855 </label>
856 </div>
857 </div>
858 <?php } ?>
859
860 </div><!-- end general-settings-card -->
861
862 <!-- JS Content Permissions -->
863 <div class="pagelayer-settings-card">
864 <div class="pagelayer-settings-card-header">
865 <h3><?php _e('JS Content Permissions'); ?></h3>
866 </div>
867 <div class="pagelayer-setting-row" style="flex-direction:column; align-items:flex-start;">
868 <p class="pagelayer-setting-row-desc" style="margin-bottom:14px;"><?php _e('Select user roles allowed to execute custom JS.'); ?> <strong style="color:#ef4444;"><?php _e('Security Note:'); ?></strong> <?php _e('Be cautious when granting this permission.'); ?></p>
869 <div class="pl-checkbox-group">
870 <?php
871 $user_roles = wp_roles()->get_names();
872 foreach ($user_roles as $role => $role_name) {
873 $val = ($role == 'administrator') ? '' : $role;
874 $label = ($role == 'administrator') ? __('Default') : $role_name;
875 echo '<label class="pl-checkbox-item">';
876 echo '<input type="checkbox" name="pagelayer_js_permission[]" value="' . esc_attr($val) . '" ' . (($role == 'administrator' || in_array($role, $pagelayer_js_permission)) ? 'checked' : '') . '>';
877 echo '<label>' . esc_html($label) . '</label>';
878 echo '</label>';
879 }
880 ?>
881 </div>
882 <div class="pl-security-note" style="margin-top:14px;">
883 <b><?php _e('Security Note:'); ?></b> <?php _e('For security reasons, we strongly advise against granting this permission to user roles other than administrators. Adding JavaScript content can lead to Cross Site Scripting and can introduce severe security vulnerabilities to your website, putting it at risk of attacks.'); ?>
884 </div>
885 </div>
886 </div>
887
888 </div><!-- end #general -->
889
890 <!-- ===== ICONS TAB ===== -->
891 <div class="pagelayer-tab-panel" id="icons">
892 <div class="pagelayer-settings-card">
893 <div class="pagelayer-settings-card-header">
894 <h3><?php _e('Icon Libraries'); ?></h3>
895 </div>
896 <?php
897 $pagelayer_icons = get_option('pagelayer_icons_set');
898 if(empty($pagelayer_icons)){ $pagelayer_icons = array(); }
899 ?>
900 <div class="pagelayer-setting-row">
901 <div class="pagelayer-setting-row-left">
902 <span class="pagelayer-setting-row-label"><?php _e('Font Awesome 5'); ?></span>
903 <p class="pagelayer-setting-row-desc"><?php _e('Enable Font Awesome 5 icon library for use in the editor.'); ?></p>
904 </div>
905 <div class="pagelayer-setting-row-control">
906 <label class="pl-toggle">
907 <input type="checkbox" name="pagelayer_icons_set[]" value="font-awesome5" <?php if(in_array('font-awesome5', $pagelayer_icons) || !get_option('pagelayer_icons_set')){ echo 'checked'; } ?>>
908 <span class="pl-toggle-slider"></span>
909 </label>
910 </div>
911 </div>
912 </div>
913 </div><!-- end #icons -->
914
915 <!-- ===== INFORMATION TAB ===== -->
916 <div class="pagelayer-tab-panel" id="social">
917 <div class="pagelayer-settings-card">
918 <div class="pagelayer-settings-card-header">
919 <h3><?php _e('Address and Phone Number'); ?></h3>
920 </div>
921 <div class="pagelayer-setting-row">
922 <div class="pagelayer-setting-row-left">
923 <span class="pagelayer-setting-row-label"><?php _e('Address'); ?></span>
924 </div>
925 <div class="pagelayer-setting-row-control" style="flex:1;max-width:420px;">
926 <textarea name="pagelayer-address" rows="3"><?php echo esc_html(pagelayer_get_option('pagelayer-address')); ?></textarea>
927 </div>
928 </div>
929 <div class="pagelayer-setting-row">
930 <div class="pagelayer-setting-row-left">
931 <span class="pagelayer-setting-row-label"><?php _e('Phone Number'); ?></span>
932 </div>
933 <div class="pagelayer-setting-row-control" style="flex:1;max-width:420px;">
934 <input type="tel" name="pagelayer-phone" value="<?php echo esc_html(pagelayer_get_option('pagelayer-phone')); ?>" />
935 </div>
936 </div>
937 <div class="pagelayer-setting-row">
938 <div class="pagelayer-setting-row-left">
939 <span class="pagelayer-setting-row-label"><?php _e('Contact Email'); ?></span>
940 </div>
941 <div class="pagelayer-setting-row-control" style="flex:1;max-width:420px;">
942 <?php if(defined('PAGELAYER_PREMIUM')){
943 echo '<p class="pagelayer-setting-row-desc">' . __('You can change your contact email<br> from the Contact Form Settings.') . '</p>';
944 }else{ ?>
945 <input name="pagelayer_cf_to_email" type="email" placeholder="email@domain.com" <?php if(get_option('pagelayer_cf_to_email')){ echo 'value="'.esc_html(get_option('pagelayer_cf_to_email')).'"'; } ?> />
946 <?php } ?>
947 </div>
948 </div>
949 </div>
950
951 <?php if(defined('PAGELAYER_PREMIUM')){ ?>
952 <div class="pagelayer-settings-card">
953 <div class="pagelayer-settings-card-header">
954 <h3><?php _e('Copyright'); ?></h3>
955 </div>
956 <div class="pagelayer-setting-row">
957 <div class="pagelayer-setting-row-left">
958 <span class="pagelayer-setting-row-label"><?php _e('Copyright Text'); ?></span>
959 </div>
960 <div class="pagelayer-setting-row-control" style="flex:1;max-width:420px;">
961 <textarea name="pagelayer-copyright" rows="3"><?php echo esc_html(pagelayer_get_option('pagelayer-copyright')); ?></textarea>
962 </div>
963 </div>
964 </div>
965
966 <div class="pagelayer-settings-card">
967 <div class="pagelayer-settings-card-header">
968 <h3><?php _e('Social Profile URLs'); ?></h3>
969 </div>
970 <?php $social_links = [
971 'pagelayer-facebook-url' => 'Facebook',
972 'pagelayer-twitter-url' => 'Twitter',
973 'pagelayer-instagram-url' => 'Instagram',
974 'pagelayer-linkedin-url' => 'LinkedIn',
975 'pagelayer-youtube-url' => 'YouTube',
976 'pagelayer-gplus-url' => 'Google+',
977 ];
978 foreach($social_links as $key => $label){ ?>
979 <div class="pagelayer-setting-row">
980 <div class="pagelayer-setting-row-left">
981 <span class="pagelayer-setting-row-label"><?php echo esc_html($label); ?></span>
982 </div>
983 <div class="pagelayer-setting-row-control" style="flex:1;max-width:420px;">
984 <input type="text" name="<?php echo esc_attr($key); ?>" value="<?php echo esc_url(get_option($key)); ?>" />
985 </div>
986 </div>
987 <?php } ?>
988 </div>
989 <?php } ?>
990
991 </div><!-- end #social -->
992
993 <!-- ===== INTEGRATIONS TAB ===== -->
994 <div class="pagelayer-tab-panel" id="integration">
995
996 <?php if(defined('PAGELAYER_PREMIUM')){ ?>
997 <div class="pagelayer-settings-card">
998 <div class="pagelayer-settings-card-header">
999 <h3><?php _e('Facebook SDK Details'); ?></h3>
1000 </div>
1001 <div class="pagelayer-setting-row">
1002 <div class="pagelayer-setting-row-left">
1003 <span class="pagelayer-setting-row-label"><?php _e('App ID'); ?></span>
1004 </div>
1005 <div class="pagelayer-setting-row-control" style="flex:1;max-width:420px;">
1006 <input type="text" name="pagelayer-fbapp-id" class="pagelayer-app-id" <?php if(get_option('pagelayer-fbapp-id')){ echo 'value="'.esc_html(get_option('pagelayer-fbapp-id')).'"'; } ?> />
1007 </div>
1008 </div>
1009 </div>
1010 <?php } ?>
1011
1012 <div class="pagelayer-settings-card">
1013 <div class="pagelayer-settings-card-header">
1014 <h3><?php _e('Google Maps API Key'); ?></h3>
1015 </div>
1016 <div class="pagelayer-setting-row">
1017 <div class="pagelayer-setting-row-left">
1018 <span class="pagelayer-setting-row-label"><?php _e('API Key'); ?></span>
1019 <p class="pagelayer-setting-row-desc"><?php _e('Insert your Google Maps API key.'); ?> <a href="https://pagelayer.com/docs/pagelayer-widgets/google-maps/" target="_blank"><strong><?php _e('Get help here'); ?></strong></a>.</p>
1020 </div>
1021 <div class="pagelayer-setting-row-control" style="flex:1;max-width:420px;">
1022 <input type="text" name="pagelayer-gmaps-api-key" class="pagelayer-gmaps-api-key" <?php if(get_option('pagelayer-gmaps-api-key')){ echo 'value="'. esc_html(get_option('pagelayer-gmaps-api-key')).'"'; } ?> />
1023 </div>
1024 </div>
1025 </div>
1026
1027 </div><!-- end #integration -->
1028
1029 <?php if(defined('PAGELAYER_PREMIUM')){ ?>
1030
1031 <!-- ===== CONTACT FORM TAB ===== -->
1032 <div class="pagelayer-tab-panel pagelayer-cf" id="contactform">
1033 <div class="pagelayer-settings-card">
1034 <div class="pagelayer-settings-card-header">
1035 <h3><?php _e('Contact Form Settings'); ?></h3>
1036 </div>
1037 <div class="pagelayer-setting-row">
1038 <div class="pagelayer-setting-row-left">
1039 <span class="pagelayer-setting-row-label"><?php _e('To Email'); ?></span>
1040 <p class="pagelayer-setting-row-desc"><?php _e('You can use comma separated values for multiple emails.'); ?></p>
1041 </div>
1042 <div class="pagelayer-setting-row-control" style="flex:1;max-width:420px;">
1043 <input name="pagelayer_cf_to_email" type="text" placeholder="email@domain.com" <?php if(get_option('pagelayer_cf_to_email')){ echo 'value="'.esc_html(get_option('pagelayer_cf_to_email')).'"'; } ?> />
1044 </div>
1045 </div>
1046 <div class="pagelayer-setting-row">
1047 <div class="pagelayer-setting-row-left">
1048 <span class="pagelayer-setting-row-label"><?php _e('From Email'); ?></span>
1049 </div>
1050 <div class="pagelayer-setting-row-control" style="flex:1;max-width:420px;">
1051 <input name="pagelayer_cf_from_email" type="text" placeholder="My Site &lt;email@domain.com&gt;" <?php if(get_option('pagelayer_cf_from_email')){ echo 'value="'.esc_html(get_option('pagelayer_cf_from_email')).'"'; } ?> />
1052 </div>
1053 </div>
1054 <div class="pagelayer-setting-row">
1055 <div class="pagelayer-setting-row-left">
1056 <span class="pagelayer-setting-row-label"><?php _e('Subject'); ?></span>
1057 </div>
1058 <div class="pagelayer-setting-row-control" style="flex:1;max-width:420px;">
1059 <input name="pagelayer_cf_subject" type="text" placeholder="Subject" <?php if(get_option('pagelayer_cf_subject')){ echo 'value="'.esc_html(get_option('pagelayer_cf_subject')).'"'; } ?> />
1060 </div>
1061 </div>
1062 <div class="pagelayer-setting-row">
1063 <div class="pagelayer-setting-row-left">
1064 <span class="pagelayer-setting-row-label"><?php _e('Additional Headers'); ?></span>
1065 </div>
1066 <div class="pagelayer-setting-row-control" style="flex:1;max-width:420px;">
1067 <textarea rows="3" name="pagelayer_cf_headers"><?php if(get_option('pagelayer_cf_headers')){ echo esc_html(get_option('pagelayer_cf_headers')); } ?></textarea>
1068 </div>
1069 </div>
1070 </div>
1071 <div class="pagelayer-settings-card">
1072 <div class="pagelayer-settings-card-header">
1073 <h3><?php _e('Form Messages'); ?></h3>
1074 </div>
1075 <div class="pagelayer-setting-row">
1076 <div class="pagelayer-setting-row-left">
1077 <span class="pagelayer-setting-row-label"><?php _e('Success Message'); ?></span>
1078 </div>
1079 <div class="pagelayer-setting-row-control" style="flex:1;max-width:420px;">
1080 <input name="pagelayer_cf_success" type="text" placeholder="Success" <?php if(get_option('pagelayer_cf_success')){ echo 'value="'.esc_html(get_option('pagelayer_cf_success')).'"'; } ?> />
1081 </div>
1082 </div>
1083 <div class="pagelayer-setting-row">
1084 <div class="pagelayer-setting-row-left">
1085 <span class="pagelayer-setting-row-label"><?php _e('Failed Message'); ?></span>
1086 </div>
1087 <div class="pagelayer-setting-row-control" style="flex:1;max-width:420px;">
1088 <input name="pagelayer_cf_failed" type="text" placeholder="Failed" <?php if(get_option('pagelayer_cf_failed')){ echo 'value="'.esc_html(get_option('pagelayer_cf_failed')).'"'; } ?> />
1089 </div>
1090 </div>
1091 <div class="pagelayer-setting-row">
1092 <div class="pagelayer-setting-row-left">
1093 <span class="pagelayer-setting-row-label"><?php _e('reCaptcha Failed Message'); ?></span>
1094 </div>
1095 <div class="pagelayer-setting-row-control" style="flex:1;max-width:420px;">
1096 <input name="pagelayer_recaptcha_failed" type="text" placeholder="The CAPTCHA verification failed. Please try again." value="<?php echo esc_html(get_option('pagelayer_recaptcha_failed', __pl('cap_ver_fail'))); ?>" />
1097 </div>
1098 </div>
1099 </div>
1100 </div><!-- end #contactform -->
1101
1102 <!-- ===== CAPTCHA TAB ===== -->
1103 <div class="pagelayer-tab-panel" id="captcha">
1104 <div class="pagelayer-settings-card">
1105 <div class="pagelayer-settings-card-header">
1106 <h3><?php _e('Google reCAPTCHA'); ?></h3>
1107 </div>
1108 <div class="pagelayer-setting-row">
1109 <div class="pagelayer-setting-row-left">
1110 <span class="pagelayer-setting-row-label"><?php _e('reCAPTCHA Version'); ?></span>
1111 </div>
1112 <div class="pagelayer-setting-row-control" style="flex:1;max-width:420px;">
1113 <select name="pagelayer_recaptcha_version" id="pagelayer_recaptcha_version">
1114 <option value="" <?php echo esc_html(get_option('pagelayer_recaptcha_version', '')) === '' ? 'selected' : ''; ?>><?php _e('Google reCAPTCHA v2', 'pagelayer'); ?></option>
1115 <option value="v3" <?php echo esc_html(get_option('pagelayer_recaptcha_version', '')) === 'v3' ? 'selected' : ''; ?>><?php _e('Google reCAPTCHA v3', 'pagelayer'); ?></option>
1116 </select>
1117 </div>
1118 </div>
1119 <div class="pagelayer-setting-row">
1120 <div class="pagelayer-setting-row-left">
1121 <span class="pagelayer-setting-row-label"><?php _e('reCaptcha Site Key'); ?></span>
1122 </div>
1123 <div class="pagelayer-setting-row-control" style="flex:1;max-width:420px;">
1124 <input name="pagelayer_google_captcha" type="text" placeholder="Site key" <?php if(get_option('pagelayer_google_captcha')){ echo 'value="'.esc_html(get_option('pagelayer_google_captcha')).'"'; } ?> />
1125 </div>
1126 </div>
1127 <div class="pagelayer-setting-row">
1128 <div class="pagelayer-setting-row-left">
1129 <span class="pagelayer-setting-row-label"><?php _e('reCaptcha Secret Key'); ?></span>
1130 </div>
1131 <div class="pagelayer-setting-row-control" style="flex:1;max-width:420px;">
1132 <input name="pagelayer_google_captcha_secret" type="text" placeholder="Secret key" <?php if(get_option('pagelayer_google_captcha_secret')){ echo 'value="'.esc_html(get_option('pagelayer_google_captcha_secret')).'"'; } ?> />
1133 </div>
1134 </div>
1135 <div class="pagelayer-setting-row">
1136 <div class="pagelayer-setting-row-left">
1137 <span class="pagelayer-setting-row-label"><?php _e('reCaptcha Language'); ?></span>
1138 </div>
1139 <div class="pagelayer-setting-row-control" style="flex:1;max-width:420px;">
1140 <select name="pagelayer_google_captcha_lang">
1141 <?php foreach($recap_lang as $k => $v){ echo '<option '.( get_option('pagelayer_google_captcha_lang', '') == $k ? 'selected="selected"' : '').' value="'.esc_attr($k).'">'.esc_html($v).'</option>'; } ?>
1142 </select>
1143 </div>
1144 </div>
1145 </div>
1146 </div><!-- end #captcha -->
1147
1148 <?php } ?>
1149
1150 <!-- ===== SUPPORT TAB ===== -->
1151 <?php if(!defined('SITEPAD')){ ?>
1152 <div class="pagelayer-tab-panel" id="support">
1153 <div class="pagelayer-settings-card">
1154 <div class="pagelayer-settings-card-header">
1155 <h3><?php _e('Support'); ?></h3>
1156 </div>
1157 <div style="padding:22px;">
1158 <h4><?php _e('You can contact the Pagelayer Team via email. Our email address is <a href="mailto:support@pagelayer.com">support@pagelayer.com</a>. We will get back to you as soon as possible!'); ?></h4>
1159 </div>
1160 </div>
1161 </div><!-- end #support -->
1162
1163 <!-- ===== FAQ TAB ===== -->
1164 <div class="pagelayer-tab-panel" id="faq">
1165 <div class="pagelayer-settings-card">
1166 <div class="pagelayer-settings-card-header">
1167 <h3><?php _e('FAQ'); ?></h3>
1168 </div>
1169 <div style="padding:22px;">
1170 <div class="pagelayer-acc-wrapper">
1171 <span class="nav-tab pagelayer-acc-tab"><?php _e('1: Why choose us'); ?></span>
1172 <div class="pagelayer-acc-panel">
1173 <p><?php _e('Pagelayer is best live editor and easy to use and we will keep improving it !'); ?></p>
1174 </div>
1175 <span class="nav-tab pagelayer-acc-tab"><?php _e('2: Support'); ?></span>
1176 <div class="pagelayer-acc-panel">
1177 <p><?php _e('You can contact the Pagelayer Group via email. Our email address is <a href="mailto:support@pagelayer.com">support@pagelayer.com</a>. We will get back to you as soon as possible!'); ?></p>
1178 </div>
1179 </div>
1180 </div>
1181 </div>
1182 </div><!-- end #faq -->
1183 <?php } ?>
1184
1185 </div><!-- end .tabs-wrapper -->
1186
1187 </form>
1188
1189 <?php
1190
1191 pagelayer_page_footer();
1192
1193 }