PluginProbe
Page Builder: Pagelayer – Drag and Drop website builder / 2.1.3
Page Builder: Pagelayer – Drag and Drop website builder v2.1.3
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 / website.php

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

842 lines 33.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 // license.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 include_once(PAGELAYER_DIR.'/main/settings.php');
28
29 function pagelayer_clear_empty_r(&$r){
30
31 foreach($r as $a => $b){
32 if(empty($b)){
33 unset($r[$a]);
34 continue;
35 }
36
37 if(is_array($b)){
38 pagelayer_clear_empty_r($r[$a]);
39 }
40 }
41
42 return $r;
43
44 }
45
46 // The License Page
47 function pagelayer_website_settings(){
48
49 global $pagelayer, $pl_error;
50
51 pagelayer_load_font_options();
52
53 if(!empty($_POST)){
54 check_admin_referer('pagelayer-options');
55 }
56
57 if(isset($_POST['submit'])){
58
59 foreach($pagelayer->css_settings as $set => $params){
60
61 foreach($pagelayer->screens as $sk => $sv){
62
63 $suffix = (!empty($sv) ? '_'.$sv : '');
64 $key = $set.$suffix;
65 $setting = empty($params['key']) ? 'pagelayer_'.$set.'_css' : $params['key'];
66
67 if(isset($_POST[$key])){
68
69 foreach($_POST[$key] as $k => $v){
70 if($v == 'Default' || empty($v)){
71 unset($_POST[$key][$k]);
72 }
73
74 // For sidebar, width default should not be saved
75 if($set == 'sidebar' && $k == 'width' && $v == 20){
76 unset($_POST[$key][$k]);
77 }
78 }
79
80 // Padding and Margins or any array based setting
81 if(!empty($_POST[$key]) && is_array($_POST[$key])){
82 pagelayer_clear_empty_r($_POST[$key]);
83 //pagelayer_print($_POST[$key]);
84 }
85
86 // Are we to save ?
87 if(!empty($_POST[$key])){
88 update_option($setting.$suffix, (!empty($_POST[$key]) ? $_POST[$key] : []));
89 }else{
90 delete_option($setting.$suffix);
91 }
92
93 }else{
94 delete_option($setting.$suffix);
95 }
96
97 }
98
99 }
100
101 // Blank the old color values
102 delete_option('pagelayer_color');
103
104 // Blank the old Body font
105 if(!empty($_POST['body']['font-family'])){
106 update_option('pagelayer_body_font', '');
107 }
108
109 //pagelayer_print($_POST);
110
111 // Content Width
112 if(isset($_REQUEST['pagelayer_content_width'])){
113 update_option( 'pagelayer_content_width', absint($_REQUEST['pagelayer_content_width']));
114 }
115
116 // Tablet breakpoint
117 if(isset($_REQUEST['pagelayer_tablet_breakpoint'])){
118 update_option( 'pagelayer_tablet_breakpoint', absint($_REQUEST['pagelayer_tablet_breakpoint']));
119 }
120
121 // Mobile breakpoint
122 if(isset($_REQUEST['pagelayer_mobile_breakpoint'])){
123 update_option( 'pagelayer_mobile_breakpoint', absint($_REQUEST['pagelayer_mobile_breakpoint']));
124 }
125
126 // Widget Space
127 if(isset($_REQUEST['pagelayer_between_widgets'])){
128 update_option( 'pagelayer_between_widgets', absint($_REQUEST['pagelayer_between_widgets']));
129 }
130
131 if(defined('PAGELAYER_PREMIUM')){
132
133 // Save Header code
134 if(isset($_REQUEST['pagelayer_header_code'])){
135 $header_code = wp_unslash($_REQUEST['pagelayer_header_code']);
136 if(!pagelayer_user_can_add_js_content()){
137 $header_code = sanitize_textarea_field($header_code);
138 }
139
140 update_option( 'pagelayer_header_code', $header_code);
141 }else{
142 delete_option('pagelayer_header_code');
143 }
144
145 // Save Body open code
146 if(isset($_REQUEST['pagelayer_body_open_code'])){
147 $body_code = wp_unslash($_REQUEST['pagelayer_body_open_code']);
148 if(!pagelayer_user_can_add_js_content()){
149 $body_code = sanitize_textarea_field($body_code);
150 }
151
152 update_option( 'pagelayer_body_open_code', $body_code);
153 }else{
154 delete_option('pagelayer_body_open_code');
155 }
156
157 // Save Footer code
158 if(isset($_REQUEST['pagelayer_footer_code'])){
159 $footer_code = wp_unslash($_REQUEST['pagelayer_footer_code']);
160 if(!pagelayer_user_can_add_js_content()){
161 $footer_code = sanitize_textarea_field($footer_code);
162 }
163
164 update_option( 'pagelayer_footer_code', $footer_code);
165 }else{
166 delete_option('pagelayer_footer_code');
167 }
168
169 }
170
171 $GLOBALS['pl_saved'] = true;
172
173 }
174
175 pagelayer_website_settings_T();
176
177 }
178
179 // The License Page - THEME
180 function pagelayer_website_settings_T(){
181
182 global $pagelayer, $pl_error;
183
184 pagelayer_page_header('Website Settings');
185
186 // Saved ?
187 if(!empty($GLOBALS['pl_saved'])){
188 echo '<div class="notice notice-success"><p>'. __('The settings were saved successfully', 'pagelayer'). '</p></div><br />';
189 }
190
191 // Any errors ?
192 if(!empty($pl_error)){
193 pagelayer_report_error($pl_error);echo '<br />';
194 }
195
196 // Reduce load
197 echo '<select id="skeleton_of_fonts" style="display:none">';
198 foreach($pagelayer->fonts as $subType => $fontType){
199 if($subType != 'default'){
200 echo '<optgroup style="text-transform: capitalize" label="'.$subType.'">';
201 }
202 foreach($fontType as $k => $font){
203 echo '<option value="'.esc_html(is_numeric($k) ? $font : $k).'">'. esc_html(empty($font) ? 'Default': $font) .'</option>';
204 }
205 }
206 echo '</select>';
207
208 ?>
209
210 <form class="pagelayer-setting-form" method="post" action="" id="pagelayer-website-settings-form" onsubmit="return pagelayer_handle_website_submit(this)">
211 <?php wp_nonce_field('pagelayer-options');
212 // vanilla-picker is already bundled in combined.js / editor - no remote script needed
213
214 // Inject Save Changes button into header via inline script to keep UI consistent
215 echo '<script>
216 jQuery(function($){
217 var btn = \'<input type="submit" name="submit" form="pagelayer-website-settings-form" class="pl-save-btn" value="' . esc_attr__('Save Changes') . '">\';
218 $(".pagelayer-header-actions").append(btn);
219 });
220 </script>';
221 ?>
222 <div class="tabs-wrapper">
223 <h2 class="nav-tab-wrapper pagelayer-wrapper">
224 <a href="#headings" class="nav-tab "><?php echo esc_html(__pl('elem_styles'));?></a>
225 <a href="#website_container" class="nav-tab"><?php echo esc_html(__pl('container'));?></a>
226 <!--<a href="#pagelayer-sidebar" class="nav-tab">Sidebar</a>-->
227 <a href="#hf" class="nav-tab "><?php echo esc_html(__pl('hf'));?></a>
228 </h2>
229
230 <div id="headings" class="pagelayer-tab-panel pagelayer-tab-active">
231
232 <?php
233
234 echo '<div style="display:inline-block;vertical-align: top;">
235 <ul class="nav-tab-wrapper pagelayer-wrapper pagelayer-heading-wrapper">';
236
237 foreach($pagelayer->css_settings as $k => $v){
238 echo '<li><a href="#tab_'.esc_attr($k).'" class="nav-tab pagelayer-heading-tab" tab-class="pagelayer-heading-tab-panel">'.esc_html($v['name']).' Style</a></li>';
239 }
240
241 echo '</ul>
242 </div>
243
244 <div style="display:inline-block;vertical-align: top;">';
245
246 foreach($pagelayer->css_settings as $k => $v){
247
248 echo '<div class="pagelayer-heading-tab-panel" id="tab_'.esc_attr($k).'">
249 <div class="pagelayer-settings-card">
250 <div class="pagelayer-settings-card-header">
251 <h3>'.esc_html($v['name']).' Style</h3>
252 <span class="pl-badge pl-badge-pro">'.esc_html__('Element Styles').'</span>
253 </div>';
254
255 echo '<div style="padding: 16px 24px; border-bottom: 1px solid #f1f5f9;">
256 <ul class="nav-tab-wrapper pagelayer-wrapper pagelayer-styles-screens" style="margin: 0 !important; border-bottom: none !important;">';
257
258 foreach($pagelayer->screens as $sk => $sv){
259 echo '<li><a href="#tab_'.esc_attr($k).'_'.esc_attr($sk).'" class="nav-tab pagelayer-styles-screen-tab" tab-class="pagelayer-styles-screen-panel">'.esc_html(ucfirst($sk)).'</a></li>';
260 }
261
262 echo '</ul>
263 </div>';
264
265 foreach($pagelayer->screens as $sk => $sv){
266 echo '<div class="pagelayer-styles-screen-panel" id="tab_'.esc_attr($k).'_'.esc_attr($sk).'">';
267 pagelayer_website_font_settings($k.(!empty($sv) ? '_'.$sv : ''));
268 echo '</div>';
269 }
270
271 echo '</div></div>';
272 }
273
274 echo '</div>';
275
276 ?>
277
278 </div>
279
280 <div class="pagelayer-tab-panel" id="website_container">
281 <div class="pagelayer-settings-card">
282 <div class="pagelayer-settings-card-header">
283 <h3><?php echo esc_html(__('Container Settings')); ?></h3>
284 <span class="pl-badge"><?php echo esc_html(__('Layout')); ?></span>
285 </div>
286
287 <!-- Content Width -->
288 <div class="pagelayer-setting-row">
289 <div class="pagelayer-setting-row-left">
290 <span class="pagelayer-setting-row-label"><?php echo esc_html(__('Content Width')); ?></span>
291 <p class="pagelayer-setting-row-desc"><?php echo esc_html(__('Set the custom width of the content area. The default width set is 1170px.')); ?></p>
292 </div>
293 <div class="pagelayer-setting-row-control" style="width: 200px;">
294 <input name="pagelayer_content_width" type="number" step="1" min="320" max="5000" placeholder="1170" <?php if(get_option('pagelayer_content_width')){
295 echo 'value="'.esc_attr(absint(get_option('pagelayer_content_width'))).'"';
296 }?>>
297 </div>
298 </div>
299
300 <!-- Tablet Breakpoint -->
301 <div class="pagelayer-setting-row">
302 <div class="pagelayer-setting-row-left">
303 <span class="pagelayer-setting-row-label"><?php echo esc_html(__('Tablet Breakpoint')); ?></span>
304 <p class="pagelayer-setting-row-desc"><?php echo esc_html(__('Set the breakpoint for tablet devices. The default breakpoint for tablet layout is 768px.')); ?></p>
305 </div>
306 <div class="pagelayer-setting-row-control" style="width: 200px;">
307 <input name="pagelayer_tablet_breakpoint" type="number" step="1" min="320" max="5000" placeholder="780" <?php if(get_option('pagelayer_tablet_breakpoint')){
308 echo 'value="'.esc_attr(absint(get_option('pagelayer_tablet_breakpoint'))).'"';
309 }?>>
310 </div>
311 </div>
312
313 <!-- Mobile Breakpoint -->
314 <div class="pagelayer-setting-row">
315 <div class="pagelayer-setting-row-left">
316 <span class="pagelayer-setting-row-label"><?php echo esc_html(__('Mobile Breakpoint')); ?></span>
317 <p class="pagelayer-setting-row-desc"><?php echo esc_html(__('Set the breakpoint for mobile devices. The default breakpoint for mobile layout is 480px.')); ?></p>
318 </div>
319 <div class="pagelayer-setting-row-control" style="width: 200px;">
320 <input name="pagelayer_mobile_breakpoint" type="number" step="1" min="320" max="5000" placeholder="480" <?php if(get_option('pagelayer_mobile_breakpoint')){
321 echo 'value="'.esc_attr(absint(get_option('pagelayer_mobile_breakpoint'))).'"';
322 }?>>
323 </div>
324 </div>
325
326 <!-- Space Between Widgets -->
327 <div class="pagelayer-setting-row">
328 <div class="pagelayer-setting-row-left">
329 <span class="pagelayer-setting-row-label"><?php echo esc_html(__('Space Between Widgets')); ?></span>
330 <p class="pagelayer-setting-row-desc"><?php echo esc_html(__('Set the Space Between Widgets. The default Space set is 15px.')); ?></p>
331 </div>
332 <div class="pagelayer-setting-row-control" style="width: 200px;">
333 <input name="pagelayer_between_widgets" type="number" step="1" min="0" max="500" placeholder="15" <?php if(get_option('pagelayer_between_widgets')){
334 echo 'value="'.esc_attr(absint(get_option('pagelayer_between_widgets'))).'"';
335 }?>>
336 </div>
337 </div>
338 </div>
339 </div>
340
341 <div class="pagelayer-tab-panel" id="sidebar">
342 <div class="pagelayer-settings-card">
343 <div class="pagelayer-settings-card-header">
344 <h3><?php echo esc_html(__('Sidebar Preferences')); ?></h3>
345 <span class="pl-badge"><?php echo esc_html(__('Sidebar')); ?></span>
346 </div>
347 <div style="padding: 20px 24px; border-bottom: 1px solid #f1f5f9; background: #fafafa;">
348 <p class="pagelayer-setting-row-desc"><?php echo esc_html(__('By default, the themes sidebar will be shown. But you can customize the settings here as per your preference. Note : This will work only if your theme uses the get_sidebar() function. Also the main content element and sidebar element should be siblings. If they are not siblings, then only the <b>No Sidebar</b> option will be usable.'));?></p>
349 </div>
350
351 <!-- Default -->
352 <div class="pagelayer-setting-row">
353 <div class="pagelayer-setting-row-left">
354 <span class="pagelayer-setting-row-label"><?php echo esc_html(__('Default Sidebar Layout'));?></span>
355 <p class="pagelayer-setting-row-desc"><?php echo esc_html(__('Default layout for the Sidebar throughout the site.'));?></p>
356 </div>
357 <div class="pagelayer-setting-row-control">
358 <?php pagelayer_sidebar_select('default');?>
359 </div>
360 </div>
361
362 <!-- For Pages -->
363 <div class="pagelayer-setting-row">
364 <div class="pagelayer-setting-row-left">
365 <span class="pagelayer-setting-row-label"><?php echo esc_html(__('For Pages'));?></span>
366 <p class="pagelayer-setting-row-desc"><?php echo esc_html(__('Sidebar layout specifically for static pages.'));?></p>
367 </div>
368 <div class="pagelayer-setting-row-control">
369 <?php pagelayer_sidebar_select('page');?>
370 </div>
371 </div>
372
373 <!-- For Posts -->
374 <div class="pagelayer-setting-row">
375 <div class="pagelayer-setting-row-left">
376 <span class="pagelayer-setting-row-label"><?php echo esc_html(__('For Posts'));?></span>
377 <p class="pagelayer-setting-row-desc"><?php echo esc_html(__('Sidebar layout specifically for blog posts.'));?></p>
378 </div>
379 <div class="pagelayer-setting-row-control">
380 <?php pagelayer_sidebar_select('post');?>
381 </div>
382 </div>
383
384 <!-- For Archives -->
385 <div class="pagelayer-setting-row">
386 <div class="pagelayer-setting-row-left">
387 <span class="pagelayer-setting-row-label"><?php echo esc_html(__('For Archives'));?></span>
388 <p class="pagelayer-setting-row-desc"><?php echo esc_html(__('Sidebar layout specifically for archives.'));?></p>
389 </div>
390 <div class="pagelayer-setting-row-control">
391 <?php pagelayer_sidebar_select('archives');?>
392 </div>
393 </div>
394
395 <!-- Width -->
396 <div class="pagelayer-setting-row">
397 <div class="pagelayer-setting-row-left">
398 <span class="pagelayer-setting-row-label"><?php echo esc_html(__('Width'));?></span>
399 <p class="pagelayer-setting-row-desc"><?php echo esc_html(__('Set the width of the sidebar (in percentage).'));?></p>
400 </div>
401 <div class="pagelayer-setting-row-control" style="display:flex; align-items:center; gap:8px;">
402 <?php
403 $sidebar_width = '20';
404 if (!empty($_POST['sidebar']) && is_array($_POST['sidebar']) && isset($_POST['sidebar']['width'])) {
405 $sidebar_width = $_POST['sidebar']['width'];
406 } elseif (!empty($pagelayer->css) && is_array($pagelayer->css) && isset($pagelayer->css['sidebar']['width'])) {
407 $sidebar_width = $pagelayer->css['sidebar']['width'];
408 }
409 ?>
410 <input type="number" name="sidebar[width]" min="1" step="1" value="<?php echo esc_attr($sidebar_width); ?>" style="width: 100px;" /><span>%</span>
411 </div>
412 </div>
413 </div>
414 </div>
415
416 <div class="pagelayer-tab-panel" id="hf">
417 <?php pagelayer_show_pro_notice();?>
418 <div class="pagelayer-settings-card">
419 <div class="pagelayer-settings-card-header">
420 <h3><?php echo esc_html(__('Header, Body and Footer Custom Code')); ?></h3>
421 <span class="pl-badge pl-badge-pro"><?php echo esc_html(__('Pro Feature')); ?></span>
422 </div>
423 <div style="padding: 20px 24px; border-bottom: 1px solid #f1f5f9; background: #fafafa;">
424 <p class="pagelayer-setting-row-desc"><?php echo esc_html(__('You can add custom code like HTML, JavaScript, CSS etc. which will be inserted throughout your site.'));?></p>
425 </div>
426
427 <!-- Header Code -->
428 <div class="pagelayer-setting-row" style="align-items: flex-start;">
429 <div class="pagelayer-setting-row-left" style="max-width: 320px;">
430 <span class="pagelayer-setting-row-label"><?php echo esc_html(__('Header Code'));?></span>
431 <p class="pagelayer-setting-row-desc"><?php echo esc_html(__('This code will be inserted inside the <code>&lt;head&gt;</code> section.'));?></p>
432 </div>
433 <div class="pagelayer-setting-row-control" style="flex: 1; max-width: 600px;">
434 <textarea name="pagelayer_header_code" rows="6" style="width: 100%; max-width: 100%; font-family: monospace; font-size: 12px;"><?php echo esc_textarea(get_option( 'pagelayer_header_code' )); ?></textarea>
435 </div>
436 </div>
437
438 <!-- Body Open Code -->
439 <div class="pagelayer-setting-row" style="align-items: flex-start;">
440 <div class="pagelayer-setting-row-left" style="max-width: 320px;">
441 <span class="pagelayer-setting-row-label"><?php echo esc_html(__('Body Open Code'));?></span>
442 <p class="pagelayer-setting-row-desc"><?php echo esc_html(__('This code will be printed at the beginning of the <code>&lt;body&gt;</code> section.'));?></p>
443 </div>
444 <div class="pagelayer-setting-row-control" style="flex: 1; max-width: 600px;">
445 <textarea name="pagelayer_body_open_code" rows="8" style="width: 100%; max-width: 100%; font-family: monospace; font-size: 12px;"><?php echo esc_textarea(get_option( 'pagelayer_body_open_code' )); ?></textarea>
446 </div>
447 </div>
448
449 <!-- Footer Code -->
450 <div class="pagelayer-setting-row" style="align-items: flex-start;">
451 <div class="pagelayer-setting-row-left" style="max-width: 320px;">
452 <span class="pagelayer-setting-row-label"><?php echo esc_html(__('Footer Code'));?></span>
453 <p class="pagelayer-setting-row-desc"><?php echo esc_html(__('This code will be printed before the closing <code>&lt;/body&gt;</code> section.'));?></p>
454 </div>
455 <div class="pagelayer-setting-row-control" style="flex: 1; max-width: 600px;">
456 <textarea name="pagelayer_footer_code" rows="6" style="width: 100%; max-width: 100%; font-family: monospace; font-size: 12px;"><?php echo esc_textarea(get_option( 'pagelayer_footer_code' )); ?></textarea>
457 </div>
458 </div>
459 </div>
460 </div>
461
462 </div>
463
464 <div class="pl-security-note" style="margin-top:20px; margin-bottom: 20px;">
465 <b><?php echo esc_html__('Note:'); ?></b> <?php echo esc_html(__pl('color_notice')); ?>
466 </div>
467 </form>
468
469 <script>
470
471 function pagelayer_handle_website_submit(ele){
472
473 var jEle = jQuery(ele);
474 var $form = jEle.is('form') ? jEle : jEle.closest('form');
475 if (!$form.length && jEle.attr('form')) {
476 $form = jQuery('#' + jEle.attr('form'));
477 }
478 $form.find('input, select, textarea').each(function(){
479 var j = jQuery(this);
480 if(j.attr('type') === 'submit'){
481 return;
482 }
483
484 if(j.val().length == 0){
485 j.prop("disabled", true);
486 }
487 });
488
489 return true;
490 }
491
492 // Show the vanilla selector
493 function pagelayer_show_vanilla(){
494 if (typeof Picker === 'undefined') {
495 return;
496 }
497 jQuery('.pagelayer-show-vanilla').each(function(){
498 var jEle = jQuery(this);
499 var par = jEle.parent();
500 var input = par.find('input');
501 var sColor = '';
502
503 if(input.val().length > 0){
504 sColor = input.val();
505 jEle.find('.pagelayer-color-div').css('background', sColor);
506 jEle.find('.pagelayer-color-div').removeClass('pagelayer-color-none');
507 }
508
509 var picker = new Picker({
510 parent : jEle[0],
511 color : sColor,
512 });
513
514 // You can do what you want with the chosen color using two callbacks: onChange and onDone.
515 picker.onChange = function(color) {
516 jEle.find('.pagelayer-color-div').css('background', color.rgbaString);
517 jEle.find('.pagelayer-color-div').removeClass('pagelayer-color-none');
518 input.val(color.hex);
519 };
520
521 jEle.find('.dashicons').on('click', function(event){
522 event.preventDefault();
523 event.stopPropagation();
524 jEle.find('.pagelayer-color-div').addClass('pagelayer-color-none');
525 input.val('');
526 });
527 });
528 }
529
530 function pagelayer_handle_custom(ele){
531 var jEle = jQuery(ele);
532 var val = jEle.val();
533 if(val && val.length > 1){
534 jEle.siblings().show();
535 }else{
536 jEle.siblings().hide();
537 jEle.siblings('input').val('');
538 jEle.siblings().children().val('');
539 }
540 }
541
542 // Handle the font family
543 function pagelayer_handle_font_family(ele){
544 jEle = jQuery(ele);
545 if(jEle.children().length <= 1){
546 var val = jEle.val();
547 jEle.html(jQuery('#skeleton_of_fonts').html());
548 jEle.val(val);
549 }
550 }
551
552 function pagelayer_handle_textdecor(ele){
553 var jEle = jQuery(ele);
554 var val = jEle.val();
555 if(val && val.length > 1 && val !== 'none'){
556 jEle.siblings().show();
557 }else{
558 jEle.siblings().hide();
559 jEle.siblings().val('');
560 }
561 }
562
563 jQuery(document).ready(function(){
564 pagelayer_show_vanilla();
565 jQuery('.pagelayer-show-custom').each(function(){
566 pagelayer_handle_custom(jQuery(this));
567 });
568
569 });
570 </script>
571
572 <?php
573
574 pagelayer_page_footer();
575
576 }
577
578 function pagelayer_website_padding_field($name, $val){
579 ?>
580 <input type="number" name="<?php echo esc_attr($name);?>[0]" step="1" class="pagelayer-website-padding" <?php echo (!empty($val[0]) ? 'value="'.esc_attr($val[0]).'"' : '');?> />
581 <input type="number" name="<?php echo esc_attr($name);?>[1]" step="1" class="pagelayer-website-padding" <?php echo (!empty($val[1]) ? 'value="'.esc_attr($val[1]).'"' : '');?> />
582 <input type="number" name="<?php echo esc_attr($name);?>[2]" step="1" class="pagelayer-website-padding" <?php echo (!empty($val[2]) ? 'value="'.esc_attr($val[2]).'"' : '');?> />
583 <input type="number" name="<?php echo esc_attr($name);?>[3]" step="1" class="pagelayer-website-padding" <?php echo (!empty($val[3]) ? 'value="'.esc_attr($val[3]).'"' : '');?> /><span>px</span>
584 <?php
585 }
586
587 // Shows the font settings
588 function pagelayer_website_font_settings($prefix){
589
590 global $pagelayer, $pl_error;
591
592 // load css from settings
593 pagelayer_load_global_css();
594
595 if(!empty($_POST)){
596 $vals = $_POST;
597 }else{
598 $vals = $pagelayer->css;
599 }
600
601 ?>
602
603 <div class="pagelayer-font-settings-rows">
604
605 <div class="pagelayer-setting-row">
606 <div class="pagelayer-setting-row-left">
607 <span class="pagelayer-setting-row-label"><?php echo esc_html(__pl('padding'));?></span>
608 </div>
609 <div class="pagelayer-setting-row-control">
610 <label style="display:flex; align-items:center; gap:8px;">
611 <select class="pagelayer-show-custom" onchange="pagelayer_handle_custom(this)">
612 <option value="" <?php echo (empty($vals[$prefix]['padding']) ? 'selected="selected"' : '');?>>Default</option>
613 <option value="custom" <?php echo (!empty($vals[$prefix]['padding']) ? 'selected="selected"' : '');?>>Custom</option>
614 </select>
615 <span style="display: inline-flex; align-items: center; gap: 4px; vertical-align: middle;">
616 <?php pagelayer_website_padding_field($prefix.'[padding]', @$vals[$prefix]['padding']);?>
617 </span>
618 </label>
619 </div>
620 </div>
621
622 <div class="pagelayer-setting-row">
623 <div class="pagelayer-setting-row-left">
624 <span class="pagelayer-setting-row-label"><?php echo esc_html(__pl('margin'));?></span>
625 </div>
626 <div class="pagelayer-setting-row-control">
627 <label style="display:flex; align-items:center; gap:8px;">
628 <select class="pagelayer-show-custom" onchange="pagelayer_handle_custom(this)">
629 <option value="" <?php echo (empty($vals[$prefix]['margin']) ? 'selected="selected"' : '');?>>Default</option>
630 <option value="custom" <?php echo (!empty($vals[$prefix]['margin']) ? 'selected="selected"' : '');?>>Custom</option>
631 </select>
632 <span style="display: inline-flex; align-items: center; gap: 4px; vertical-align: middle;">
633 <?php pagelayer_website_padding_field($prefix.'[margin]', @$vals[$prefix]['margin']);?>
634 </span>
635 </label>
636 </div>
637 </div>
638
639 <div class="pagelayer-setting-row">
640 <div class="pagelayer-setting-row-left">
641 <span class="pagelayer-setting-row-label"><?php echo esc_html(__pl('font_family')); ?></span>
642 </div>
643 <div class="pagelayer-setting-row-control">
644 <label>
645 <select name="<?php echo esc_attr($prefix);?>[font-family]" onclick="pagelayer_handle_font_family(this)">
646 <?php
647 echo '<option value="'.esc_attr(empty($vals[$prefix]['font-family']) ? 'Default': $vals[$prefix]['font-family']).'">'.esc_html(empty($vals[$prefix]['font-family']) ? 'Default': $vals[$prefix]['font-family']).'</option>';
648 ?>
649 </select>
650 </label>
651 </div>
652 </div>
653
654 <div class="pagelayer-setting-row">
655 <div class="pagelayer-setting-row-left">
656 <span class="pagelayer-setting-row-label"><?php echo esc_html(__pl('font_size')); ?></span>
657 </div>
658 <div class="pagelayer-setting-row-control">
659 <label style="display:flex; align-items:center; gap:8px;">
660 <select class="pagelayer-show-custom" onchange="pagelayer_handle_custom(this)">
661 <option value="" <?php echo (empty($vals[$prefix]['font-size']) ? 'selected="selected"' : '');?>>Default</option>
662 <option value="custom" <?php echo (!empty($vals[$prefix]['font-size']) ? 'selected="selected"' : '');?>>Custom</option>
663 </select>
664 <input type="number" name="<?php echo esc_attr($prefix);?>[font-size]" <?php echo (!empty($vals[$prefix]['font-size']) ? 'value="'.esc_attr($vals[$prefix]['font-size']).'"' : '');?> style="width:100px;" /><span>px</span>
665 </label>
666 </div>
667 </div>
668
669 <div class="pagelayer-setting-row">
670 <div class="pagelayer-setting-row-left">
671 <span class="pagelayer-setting-row-label"><?php echo esc_html(__pl('font_style')); ?></span>
672 </div>
673 <div class="pagelayer-setting-row-control">
674 <label>
675 <select name="<?php echo esc_attr($prefix);?>[font-style]">
676 <?php
677 foreach($pagelayer->font_style as $k => $var){
678 echo '<option value="'.esc_attr($k).'" '.(@$vals[$prefix]['font-style'] == $k ? 'selected' : '').'>'.esc_html($var).'</option>';
679 }
680 ?>
681 </select>
682 </label>
683 </div>
684 </div>
685
686 <div class="pagelayer-setting-row">
687 <div class="pagelayer-setting-row-left">
688 <span class="pagelayer-setting-row-label"><?php echo esc_html(__pl('font_weight'));?></span>
689 </div>
690 <div class="pagelayer-setting-row-control">
691 <label>
692 <select name="<?php echo esc_attr($prefix);?>[font-weight]">
693 <?php
694 foreach($pagelayer->font_weight as $k => $var){
695 echo '<option value="'.esc_attr($k).'" '.(@$vals[$prefix]['font-weight'] == $k ? 'selected' : '').'>'.esc_html($var).'</option>';
696 }
697 ?>
698 </select>
699 </label>
700 </div>
701 </div>
702
703 <div class="pagelayer-setting-row">
704 <div class="pagelayer-setting-row-left">
705 <span class="pagelayer-setting-row-label"><?php echo esc_html(__pl('text_transform'));?></span>
706 </div>
707 <div class="pagelayer-setting-row-control">
708 <label>
709 <select name="<?php echo esc_attr($prefix);?>[text-transform]">
710 <?php
711 foreach($pagelayer->text_transform as $k => $var){
712 echo '<option value="'.esc_attr($k).'" '.(@$vals[$prefix]['text-transform'] == $k ? 'selected' : '').'>'.esc_html($var).'</option>';
713 }
714 ?>
715 </select>
716 </label>
717 </div>
718 </div>
719
720 <div class="pagelayer-setting-row">
721 <div class="pagelayer-setting-row-left">
722 <span class="pagelayer-setting-row-label"><?php echo esc_html(__pl('line_height'));?></span>
723 </div>
724 <div class="pagelayer-setting-row-control">
725 <label style="display:flex; align-items:center; gap:8px;">
726 <select class="pagelayer-show-custom" onchange="pagelayer_handle_custom(this)">
727 <option value="" <?php echo (empty($vals[$prefix]['line-height']) ? 'selected="selected"' : '');?>>Default</option>
728 <option value="custom" <?php echo (!empty($vals[$prefix]['line-height']) ? 'selected="selected"' : '');?>>Custom</option>
729 </select>
730 <input type="number" name="<?php echo esc_attr($prefix);?>[line-height]" min="0.1" step="0.1" <?php echo (!empty($vals[$prefix]['line-height']) ? 'value="'.esc_attr($vals[$prefix]['line-height']).'"' : '');?> style="width:100px;" />
731 </label>
732 </div>
733 </div>
734
735 <div class="pagelayer-setting-row">
736 <div class="pagelayer-setting-row-left">
737 <span class="pagelayer-setting-row-label"><?php echo esc_html(__pl('text_spacing'));?></span>
738 </div>
739 <div class="pagelayer-setting-row-control">
740 <label style="display:flex; align-items:center; gap:8px;">
741 <select class="pagelayer-show-custom" onchange="pagelayer_handle_custom(this)">
742 <option value="" <?php echo (empty($vals[$prefix]['letter-spacing']) ? 'selected="selected"' : '');?>>Default</option>
743 <option value="custom" <?php echo (!empty($vals[$prefix]['letter-spacing']) ? 'selected="selected"' : '');?>>Custom</option>
744 </select>
745 <input type="number" name="<?php echo esc_attr($prefix);?>[letter-spacing]" min="1" step="1" <?php echo (!empty($vals[$prefix]['letter-spacing']) ? 'value="'.esc_attr($vals[$prefix]['letter-spacing']).'"' : '');?> style="width:100px;" /><span>px</span>
746 </label>
747 </div>
748 </div>
749
750 <div class="pagelayer-setting-row">
751 <div class="pagelayer-setting-row-left">
752 <span class="pagelayer-setting-row-label"><?php echo esc_html(__pl('word_spacing'));?></span>
753 </div>
754 <div class="pagelayer-setting-row-control">
755 <label style="display:flex; align-items:center; gap:8px;">
756 <select class="pagelayer-show-custom" onchange="pagelayer_handle_custom(this)">
757 <option value="" <?php echo (empty($vals[$prefix]['word-spacing']) ? 'selected="selected"' : '');?>>Default</option>
758 <option value="custom" <?php echo (!empty($vals[$prefix]['word-spacing']) ? 'selected="selected"' : '');?>>Custom</option>
759 </select>
760 <input type="number" name="<?php echo esc_attr($prefix);?>[word-spacing]" min="1" step="1" <?php echo (!empty($vals[$prefix]['word-spacing']) ? 'value="'.esc_attr($vals[$prefix]['word-spacing']).'"' : '');?> style="width:100px;" /><span>px</span>
761 </label>
762 </div>
763 </div>
764
765 <div class="pagelayer-setting-row">
766 <div class="pagelayer-setting-row-left">
767 <span class="pagelayer-setting-row-label"><?php echo esc_html(__pl('text_decoration'));?></span>
768 </div>
769 <div class="pagelayer-setting-row-control">
770 <label>
771 <table class="pagelayer-internal-table">
772 <tr>
773 <td>
774 <select name="<?php echo esc_attr($prefix);?>[text-decoration-line]" onchange="pagelayer_handle_textdecor(this)">
775 <?php
776 foreach($pagelayer->text_decoration_line as $k => $var){
777 echo '<option value="'.esc_attr($k).'" '.(@$vals[$prefix]['text-decoration-line'] == $k ? 'selected' : '').'>'.esc_html($var).'</option>';
778 }
779 ?>
780 </select>
781 </td>
782 <td>
783 <select name="<?php echo esc_attr($prefix);?>[text-decoration-style]">
784 <?php
785 foreach($pagelayer->text_decoration_style as $k => $var){
786 echo '<option value="'.esc_attr($k).'" '.(@$vals[$prefix]['text-decoration-style'] == $k ? 'selected' : '').'>'.esc_html($var).'</option>';
787 }
788 ?>
789 </select>
790 </td>
791 </tr>
792 <tr>
793 <td>Line</td>
794 <td>Style</td>
795 </tr>
796 </table>
797 </label>
798 </div>
799 </div>
800
801 <div class="pagelayer-setting-row">
802 <div class="pagelayer-setting-row-left">
803 <span class="pagelayer-setting-row-label">Background Color</span>
804 </div>
805 <div class="pagelayer-setting-row-control">
806 <a href="#" class="pagelayer-show-vanilla"><div class="pagelayer-color-div pagelayer-color-none"></div><span class="dashicons dashicons-no"></span></a><input type="hidden" name="<?php echo esc_attr($prefix);?>[background-color]" <?php echo (!empty($vals[$prefix]['background-color']) ? 'value="'.esc_attr($vals[$prefix]['background-color']).'"' : '');?>>
807 </div>
808 </div>
809
810 <div class="pagelayer-setting-row">
811 <div class="pagelayer-setting-row-left">
812 <span class="pagelayer-setting-row-label">Text Color</span>
813 </div>
814 <div class="pagelayer-setting-row-control">
815 <a href="#" class="pagelayer-show-vanilla"><div class="pagelayer-color-div pagelayer-color-none"></div><span class="dashicons dashicons-no"></span></a><input type="hidden" name="<?php echo esc_attr($prefix);?>[color]" <?php echo (!empty($vals[$prefix]['color']) ? 'value="'.esc_attr($vals[$prefix]['color']).'"' : '');?>>
816 </div>
817 </div>
818 </div>
819
820 <?php
821
822 }
823
824 function pagelayer_sidebar_select($name){
825
826 global $pagelayer;
827
828 $val = isset($pagelayer->settings['sidebar'][$name]) ? $pagelayer->settings['sidebar'][$name] : 'default';
829 $val = !empty($_POST) ? @$_POST['sidebar'][$name] : $val;
830
831 // We dont save the value "Default" (note case sensitivity), but the theme customizer saves "default"
832 // We need to keep all values blank if user is submitting values as Default
833
834 echo '
835 <select class="pagelayer-show-custom" name="sidebar['.$name.']">
836 <option value="Default" '.($val == 'default' ? 'selected="seleted"' : '').'>Default</option>
837 <option value="no" '.($val == 'no' ? 'selected="seleted"' : '').'>No Sidebar</option>
838 <option value="left" '.($val == 'left' ? 'selected="seleted"' : '').'>Left Sidebar</option>
839 <option value="right" '.($val == 'right' ? 'selected="seleted"' : '').'>Right Sidebar</option>
840 </select>
841 ';
842 }