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

845 lines 33.5 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 var Picker = typeof pagelayer_Picker !== 'undefined' ? pagelayer_Picker : (typeof Picker !== 'undefined' ? Picker : undefined);
495 if (typeof Picker === 'undefined') {
496 return;
497 }
498 jQuery('.pagelayer-show-vanilla').each(function(){
499 var jEle = jQuery(this);
500 var par = jEle.parent();
501 var input = par.find('input');
502 var sColor = '';
503
504 if(input.val().length > 0){
505 sColor = input.val();
506 jEle.find('.pagelayer-color-div').css('background', sColor);
507 jEle.find('.pagelayer-color-div').removeClass('pagelayer-color-none');
508 }
509
510 var picker = new Picker({
511 parent : jEle[0],
512 popup : 'left',
513 color : sColor,
514 doc : document
515 });
516
517 // You can do what you want with the chosen color using two callbacks: onChange and onDone.
518 picker.onChange = function(color) {
519 jEle.find('.pagelayer-color-div').css('background', color.rgbaString);
520 jEle.find('.pagelayer-color-div').removeClass('pagelayer-color-none');
521 input.val(color.hex);
522 };
523
524 jEle.find('.dashicons').on('click', function(event){
525 event.preventDefault();
526 event.stopPropagation();
527 jEle.find('.pagelayer-color-div').addClass('pagelayer-color-none');
528 input.val('');
529 });
530 });
531 }
532
533 function pagelayer_handle_custom(ele){
534 var jEle = jQuery(ele);
535 var val = jEle.val();
536 if(val && val.length > 1){
537 jEle.siblings().show();
538 }else{
539 jEle.siblings().hide();
540 jEle.siblings('input').val('');
541 jEle.siblings().children().val('');
542 }
543 }
544
545 // Handle the font family
546 function pagelayer_handle_font_family(ele){
547 jEle = jQuery(ele);
548 if(jEle.children().length <= 1){
549 var val = jEle.val();
550 jEle.html(jQuery('#skeleton_of_fonts').html());
551 jEle.val(val);
552 }
553 }
554
555 function pagelayer_handle_textdecor(ele){
556 var jEle = jQuery(ele);
557 var val = jEle.val();
558 if(val && val.length > 1 && val !== 'none'){
559 jEle.siblings().show();
560 }else{
561 jEle.siblings().hide();
562 jEle.siblings().val('');
563 }
564 }
565
566 jQuery(document).ready(function(){
567 pagelayer_show_vanilla();
568 jQuery('.pagelayer-show-custom').each(function(){
569 pagelayer_handle_custom(jQuery(this));
570 });
571
572 });
573 </script>
574
575 <?php
576
577 pagelayer_page_footer();
578
579 }
580
581 function pagelayer_website_padding_field($name, $val){
582 ?>
583 <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]).'"' : '');?> />
584 <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]).'"' : '');?> />
585 <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]).'"' : '');?> />
586 <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>
587 <?php
588 }
589
590 // Shows the font settings
591 function pagelayer_website_font_settings($prefix){
592
593 global $pagelayer, $pl_error;
594
595 // load css from settings
596 pagelayer_load_global_css();
597
598 if(!empty($_POST)){
599 $vals = $_POST;
600 }else{
601 $vals = $pagelayer->css;
602 }
603
604 ?>
605
606 <div class="pagelayer-font-settings-rows">
607
608 <div class="pagelayer-setting-row">
609 <div class="pagelayer-setting-row-left">
610 <span class="pagelayer-setting-row-label"><?php echo esc_html(__pl('padding'));?></span>
611 </div>
612 <div class="pagelayer-setting-row-control">
613 <label style="display:flex; align-items:center; gap:8px;">
614 <select class="pagelayer-show-custom" onchange="pagelayer_handle_custom(this)">
615 <option value="" <?php echo (empty($vals[$prefix]['padding']) ? 'selected="selected"' : '');?>>Default</option>
616 <option value="custom" <?php echo (!empty($vals[$prefix]['padding']) ? 'selected="selected"' : '');?>>Custom</option>
617 </select>
618 <span style="display: inline-flex; align-items: center; gap: 4px; vertical-align: middle;">
619 <?php pagelayer_website_padding_field($prefix.'[padding]', @$vals[$prefix]['padding']);?>
620 </span>
621 </label>
622 </div>
623 </div>
624
625 <div class="pagelayer-setting-row">
626 <div class="pagelayer-setting-row-left">
627 <span class="pagelayer-setting-row-label"><?php echo esc_html(__pl('margin'));?></span>
628 </div>
629 <div class="pagelayer-setting-row-control">
630 <label style="display:flex; align-items:center; gap:8px;">
631 <select class="pagelayer-show-custom" onchange="pagelayer_handle_custom(this)">
632 <option value="" <?php echo (empty($vals[$prefix]['margin']) ? 'selected="selected"' : '');?>>Default</option>
633 <option value="custom" <?php echo (!empty($vals[$prefix]['margin']) ? 'selected="selected"' : '');?>>Custom</option>
634 </select>
635 <span style="display: inline-flex; align-items: center; gap: 4px; vertical-align: middle;">
636 <?php pagelayer_website_padding_field($prefix.'[margin]', @$vals[$prefix]['margin']);?>
637 </span>
638 </label>
639 </div>
640 </div>
641
642 <div class="pagelayer-setting-row">
643 <div class="pagelayer-setting-row-left">
644 <span class="pagelayer-setting-row-label"><?php echo esc_html(__pl('font_family')); ?></span>
645 </div>
646 <div class="pagelayer-setting-row-control">
647 <label>
648 <select name="<?php echo esc_attr($prefix);?>[font-family]" onclick="pagelayer_handle_font_family(this)">
649 <?php
650 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>';
651 ?>
652 </select>
653 </label>
654 </div>
655 </div>
656
657 <div class="pagelayer-setting-row">
658 <div class="pagelayer-setting-row-left">
659 <span class="pagelayer-setting-row-label"><?php echo esc_html(__pl('font_size')); ?></span>
660 </div>
661 <div class="pagelayer-setting-row-control">
662 <label style="display:flex; align-items:center; gap:8px;">
663 <select class="pagelayer-show-custom" onchange="pagelayer_handle_custom(this)">
664 <option value="" <?php echo (empty($vals[$prefix]['font-size']) ? 'selected="selected"' : '');?>>Default</option>
665 <option value="custom" <?php echo (!empty($vals[$prefix]['font-size']) ? 'selected="selected"' : '');?>>Custom</option>
666 </select>
667 <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>
668 </label>
669 </div>
670 </div>
671
672 <div class="pagelayer-setting-row">
673 <div class="pagelayer-setting-row-left">
674 <span class="pagelayer-setting-row-label"><?php echo esc_html(__pl('font_style')); ?></span>
675 </div>
676 <div class="pagelayer-setting-row-control">
677 <label>
678 <select name="<?php echo esc_attr($prefix);?>[font-style]">
679 <?php
680 foreach($pagelayer->font_style as $k => $var){
681 echo '<option value="'.esc_attr($k).'" '.(@$vals[$prefix]['font-style'] == $k ? 'selected' : '').'>'.esc_html($var).'</option>';
682 }
683 ?>
684 </select>
685 </label>
686 </div>
687 </div>
688
689 <div class="pagelayer-setting-row">
690 <div class="pagelayer-setting-row-left">
691 <span class="pagelayer-setting-row-label"><?php echo esc_html(__pl('font_weight'));?></span>
692 </div>
693 <div class="pagelayer-setting-row-control">
694 <label>
695 <select name="<?php echo esc_attr($prefix);?>[font-weight]">
696 <?php
697 foreach($pagelayer->font_weight as $k => $var){
698 echo '<option value="'.esc_attr($k).'" '.(@$vals[$prefix]['font-weight'] == $k ? 'selected' : '').'>'.esc_html($var).'</option>';
699 }
700 ?>
701 </select>
702 </label>
703 </div>
704 </div>
705
706 <div class="pagelayer-setting-row">
707 <div class="pagelayer-setting-row-left">
708 <span class="pagelayer-setting-row-label"><?php echo esc_html(__pl('text_transform'));?></span>
709 </div>
710 <div class="pagelayer-setting-row-control">
711 <label>
712 <select name="<?php echo esc_attr($prefix);?>[text-transform]">
713 <?php
714 foreach($pagelayer->text_transform as $k => $var){
715 echo '<option value="'.esc_attr($k).'" '.(@$vals[$prefix]['text-transform'] == $k ? 'selected' : '').'>'.esc_html($var).'</option>';
716 }
717 ?>
718 </select>
719 </label>
720 </div>
721 </div>
722
723 <div class="pagelayer-setting-row">
724 <div class="pagelayer-setting-row-left">
725 <span class="pagelayer-setting-row-label"><?php echo esc_html(__pl('line_height'));?></span>
726 </div>
727 <div class="pagelayer-setting-row-control">
728 <label style="display:flex; align-items:center; gap:8px;">
729 <select class="pagelayer-show-custom" onchange="pagelayer_handle_custom(this)">
730 <option value="" <?php echo (empty($vals[$prefix]['line-height']) ? 'selected="selected"' : '');?>>Default</option>
731 <option value="custom" <?php echo (!empty($vals[$prefix]['line-height']) ? 'selected="selected"' : '');?>>Custom</option>
732 </select>
733 <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;" />
734 </label>
735 </div>
736 </div>
737
738 <div class="pagelayer-setting-row">
739 <div class="pagelayer-setting-row-left">
740 <span class="pagelayer-setting-row-label"><?php echo esc_html(__pl('text_spacing'));?></span>
741 </div>
742 <div class="pagelayer-setting-row-control">
743 <label style="display:flex; align-items:center; gap:8px;">
744 <select class="pagelayer-show-custom" onchange="pagelayer_handle_custom(this)">
745 <option value="" <?php echo (empty($vals[$prefix]['letter-spacing']) ? 'selected="selected"' : '');?>>Default</option>
746 <option value="custom" <?php echo (!empty($vals[$prefix]['letter-spacing']) ? 'selected="selected"' : '');?>>Custom</option>
747 </select>
748 <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>
749 </label>
750 </div>
751 </div>
752
753 <div class="pagelayer-setting-row">
754 <div class="pagelayer-setting-row-left">
755 <span class="pagelayer-setting-row-label"><?php echo esc_html(__pl('word_spacing'));?></span>
756 </div>
757 <div class="pagelayer-setting-row-control">
758 <label style="display:flex; align-items:center; gap:8px;">
759 <select class="pagelayer-show-custom" onchange="pagelayer_handle_custom(this)">
760 <option value="" <?php echo (empty($vals[$prefix]['word-spacing']) ? 'selected="selected"' : '');?>>Default</option>
761 <option value="custom" <?php echo (!empty($vals[$prefix]['word-spacing']) ? 'selected="selected"' : '');?>>Custom</option>
762 </select>
763 <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>
764 </label>
765 </div>
766 </div>
767
768 <div class="pagelayer-setting-row">
769 <div class="pagelayer-setting-row-left">
770 <span class="pagelayer-setting-row-label"><?php echo esc_html(__pl('text_decoration'));?></span>
771 </div>
772 <div class="pagelayer-setting-row-control">
773 <label>
774 <table class="pagelayer-internal-table">
775 <tr>
776 <td>
777 <select name="<?php echo esc_attr($prefix);?>[text-decoration-line]" onchange="pagelayer_handle_textdecor(this)">
778 <?php
779 foreach($pagelayer->text_decoration_line as $k => $var){
780 echo '<option value="'.esc_attr($k).'" '.(@$vals[$prefix]['text-decoration-line'] == $k ? 'selected' : '').'>'.esc_html($var).'</option>';
781 }
782 ?>
783 </select>
784 </td>
785 <td>
786 <select name="<?php echo esc_attr($prefix);?>[text-decoration-style]">
787 <?php
788 foreach($pagelayer->text_decoration_style as $k => $var){
789 echo '<option value="'.esc_attr($k).'" '.(@$vals[$prefix]['text-decoration-style'] == $k ? 'selected' : '').'>'.esc_html($var).'</option>';
790 }
791 ?>
792 </select>
793 </td>
794 </tr>
795 <tr>
796 <td>Line</td>
797 <td>Style</td>
798 </tr>
799 </table>
800 </label>
801 </div>
802 </div>
803
804 <div class="pagelayer-setting-row">
805 <div class="pagelayer-setting-row-left">
806 <span class="pagelayer-setting-row-label">Background Color</span>
807 </div>
808 <div class="pagelayer-setting-row-control">
809 <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']).'"' : '');?>>
810 </div>
811 </div>
812
813 <div class="pagelayer-setting-row">
814 <div class="pagelayer-setting-row-left">
815 <span class="pagelayer-setting-row-label">Text Color</span>
816 </div>
817 <div class="pagelayer-setting-row-control">
818 <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']).'"' : '');?>>
819 </div>
820 </div>
821 </div>
822
823 <?php
824
825 }
826
827 function pagelayer_sidebar_select($name){
828
829 global $pagelayer;
830
831 $val = isset($pagelayer->settings['sidebar'][$name]) ? $pagelayer->settings['sidebar'][$name] : 'default';
832 $val = !empty($_POST) ? @$_POST['sidebar'][$name] : $val;
833
834 // We dont save the value "Default" (note case sensitivity), but the theme customizer saves "default"
835 // We need to keep all values blank if user is submitting values as Default
836
837 echo '
838 <select class="pagelayer-show-custom" name="sidebar['.$name.']">
839 <option value="Default" '.($val == 'default' ? 'selected="seleted"' : '').'>Default</option>
840 <option value="no" '.($val == 'no' ? 'selected="seleted"' : '').'>No Sidebar</option>
841 <option value="left" '.($val == 'left' ? 'selected="seleted"' : '').'>Left Sidebar</option>
842 <option value="right" '.($val == 'right' ? 'selected="seleted"' : '').'>Right Sidebar</option>
843 </select>
844 ';
845 }