PluginProbe
Page Builder: Pagelayer – Drag and Drop website builder / 2.1.4
Page Builder: Pagelayer – Drag and Drop website builder v2.1.4
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.1.4, at main/settings.php

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