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 / post_metas.php

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

547 lines 15.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 // post_metas.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 // Show the post props
28 function pagelayer_meta_page(){
29 global $post_type, $post_type_object, $post, $wp_meta_boxes, $current_screen, $user_ID, $post_ID;
30
31 $post_ID = (int) @$_GET['post'];
32
33 if(empty($post_ID)){
34 return;
35 }
36
37 $post = get_post($post_ID);
38
39 if(empty($post)){
40 return;
41 }
42
43 if ( ! current_user_can( 'edit_post', $post_ID ) ) {
44 wp_die( __( 'Sorry, you are not allowed to edit this item.' ) );
45 }
46
47 $post_type = $post->post_type;
48 $post_type_object = get_post_type_object( $post_type );
49 $user_ID = get_current_user_id();
50
51 // Set current screen
52 set_current_screen($post_type);
53
54 // Flag that we're not loading the block editor.
55 $current_screen = get_current_screen();
56 $current_screen->is_block_editor = 0;
57
58 $form_extra = '';
59 $form_action = 'editpost';
60 $nonce_action = 'update-post_' . $post_ID;
61 $form_extra .= "<input type='hidden' id='post_ID' name='post_ID' value='" . esc_attr( $post_ID ) . "' />";
62
63 // All meta boxes should be defined and added before the first do_meta_boxes() call (or potentially during the do_meta_boxes action).
64 $lib = ABSPATH . 'site-admin/includes/meta-boxes.php';
65 $lib = file_exists($lib) ? $lib : ABSPATH . 'wp-admin/includes/meta-boxes.php';
66 require_once $lib;
67
68 register_and_do_post_meta_boxes( $post );
69
70 $locations = array( 'side', 'normal', 'advanced' );
71 $priorities = array( 'high', 'sorted', 'core', 'default', 'low' );
72 $to_remove_box = array('submitdiv', 'categorydiv', 'tagsdiv-post_tag', 'pageparentdiv', 'postimagediv', 'revisionsdiv', 'commentsdiv', 'formatdiv', 'postexcerpt', 'commentstatusdiv', 'slugdiv', 'authordiv');
73
74 // Remove meta boxes from pagelayer settings
75 $to_remove_box = apply_filters('pagelayer_remove_meta_boxes', $to_remove_box);
76
77 // Remove Meta Boxes
78 foreach( $locations as $location ){
79 foreach( $priorities as $priority ){
80 if( isset( $wp_meta_boxes[ $current_screen->id ][ $location ][ $priority ] ) ){
81 foreach( $to_remove_box as $to_remove ) {
82 if(array_key_exists($to_remove, $wp_meta_boxes[ $current_screen->id ][ $location ][ $priority ])){
83 remove_meta_box($to_remove, $current_screen, $location);
84 }
85 }
86 }
87 }
88 }
89
90 // Add format div again to change the position
91 if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post_type, 'post-formats' ) ) {
92 add_meta_box( 'formatdiv', _x( 'Format', 'post format' ), 'post_format_meta_box', null, 'normal', 'default', array( '__back_compat_meta_box' => true ) );
93 }
94
95 // TO show all hidden meta boxes
96 add_filter( 'hidden_meta_boxes', function( $hidden, $screen, $use_defaults ){
97 return array();
98 }, 999, 3);
99
100 $props_tabs = array(
101 'advanced_props' => array(
102 'label' => __('Advanced'),
103 'icon' => 'dashicons dashicons-welcome-add-page',
104 'class' => 'pagelayer-active-item',
105 ),
106 'hf_code' => array(
107 'label' => __('Header, Body and Footer'),
108 'icon' => 'dashicons dashicons-editor-code',
109 ),
110 );
111
112 $props_tabs = apply_filters('pagelayer_post_props_tabs', $props_tabs);
113
114 ?>
115 <style type="text/css">
116 body{
117 height: 100vh;
118 }
119
120 #wpcontent,
121 #wpbody-content,
122 html.wp-toolbar{
123 padding:0;
124 }
125
126 .postbox .handle-order-higher, .postbox .handle-order-lower,
127 #minor-publishing-actions,
128 .site-menu-header{
129 display:none;
130 }
131
132 .postbox{
133 border: 0;
134 border-bottom: 1px solid #ccd0d4;
135 }
136
137 .pagelayer-side-meta .meta-box-sortables{
138 display: grid;
139 grid-template-columns: repeat(3, 1fr);
140 grid-gap: 10px;
141 grid-auto-rows: auto;
142 }
143
144 .pagelayer-side-meta .postbox.closed{
145 height:max-content;
146 }
147
148 #major-publishing-actions{
149 display:none;
150 }
151
152 @media screen and (max-width: 1170px) {
153 .pagelayer-side-meta .meta-box-sortables{
154 grid-template-columns: repeat(2, 1fr);
155 }
156 }
157
158 @media screen and (max-width: 782px){
159 .auto-fold #wpcontent {
160 padding-left:4px;
161 }
162 .pagelayer-side-meta .meta-box-sortables{
163 grid-template-columns: auto;
164 }
165 }
166
167 .pagelayer-modal{
168 overflow: hidden;
169 position: fixed;
170 top:0;
171 left:0;
172 display: flex;
173 -ms-flex-direction: column;
174 flex-direction: column;
175 width: 100%;
176 height: 100vh;
177 pointer-events: auto;
178 background-color: #292e37;
179 background-clip: padding-box;
180 font-size: 14px;
181 font-weight: 600;
182 color : 333;
183 z-index: 999999;
184 }
185
186 .pagelayer-tab-wrap,
187 .pagelayer-modal-holder{
188 position: relative;
189 display: -webkit-box;
190 display: -ms-flexbox;
191 display: flex;
192 -ms-flex-wrap: wrap;
193 flex-wrap: wrap;
194 height: calc(100% - 60px);
195 }
196
197 .pagelayer-tab-wrap{
198 flex-wrap: nowrap;
199 }
200
201 .pagelayer-modal-sidebar{
202 max-width: 256px;
203 min-width: 200px;
204 width: 100%;
205 position: relative;
206 color: #fff;
207 padding: 30px 20px;
208 height: calc(100% + 40px);
209 overflow:auto;
210 }
211
212 .pagelayer-sidebar-items{
213 padding: 10px;
214 }
215
216 .pagelayer-active-item,
217 .pagelayer-sidebar-items:hover{
218 background-color: #474c54;
219 transition:300ms;
220 }
221
222 .pagelayer-modal-content{
223 -webkit-box-flex: 1;
224 -ms-flex: 1 1 auto;
225 flex: 1 1 auto;
226 height: 100%;
227 background-color: #ffffff;
228 position: relative;
229 }
230
231 .pagelayer-form{
232 height:100%;
233 flex-grow:1;
234 }
235
236 .pagelayer-modal-holder{
237 flex-wrap: nowrap !important;
238 }
239
240 .pagelayer-modal-header{
241 padding: 20px 40px 20px 20px;
242 border-bottom: 1px solid #f1f1f1;
243 }
244
245 .pagelayer-modal-header h2{
246 margin:0;
247 }
248
249 .pagelayer-modal-body{
250 background-color: #f1f1f1;
251 height:100%;
252 }
253
254 .pagelayer-inner-body{
255 overflow:auto;
256 padding:20px;
257 height:calc(100% - 90px);
258 }
259
260 .pagelayer-inner-footer{
261 padding: 20px;
262 background-color: #ffffff;
263 position:absolute;
264 bottom:-65px;
265 left:0;
266 max-height:65px;
267 width:100%;
268 border-top: 1px solid #f1f1f1;
269 }
270
271 .pagelayer-meta-tabs{
272 display: flex;
273 align-items: center;
274 justify-content: center;
275 }
276
277 .pagelayer-tab-items{
278 cursor:pointer;
279 }
280
281 .pagelayer-meta-tabs .pagelayer-tab-items{
282 padding:20px 10px;
283 }
284
285 .pagelayer-meta-tabs .pagelayer-active-item,
286 .pagelayer-meta-tabs .pagelayer-tab-items:hover{
287 background-color: #f1f1f1;
288 transform: scale(1.02);
289 color: #3e8ef7;
290 }
291
292 .pagelayer-hidden{
293 display:none;
294 }
295
296 .pagelayer-show{
297 display:block;
298 }
299
300 .pagelayer-save-btn{
301 border: #398439 1px solid;
302 color: #fff;
303 background: #449d44;
304 padding: 5px 10px;
305 cursor: pointer;
306 }
307
308 .pagelayer-block{
309 display:block;
310 }
311
312 .pagelayer-textarea{
313 width:70%;
314 }
315
316 .pagelayer-h-full{
317 height: 100%;
318 }
319
320 .pagelayer-post-title{
321 margin-bottom: 20px;
322 }
323 </style>
324
325 <script type="text/javascript">
326 jQuery(document).ready(function(){
327
328 // Prevent the click Inside the meta pages
329 pagelayer_prevent_click_metas();
330
331 jQuery('.pagelayer-modal .pagelayer-tab-items').on('click', function(){
332 var jEle = jQuery(this);
333 var show_panel = jEle.attr('data-tab');
334 var holder = jEle.closest('.pagelayer-tab-wrap');
335
336 // Hide all tab panels
337 holder.find('[tab-panel]').hide();
338 jEle.closest('.pagelayer-tab-holder').find('.pagelayer-tab-items').removeClass('pagelayer-active-item');
339
340 // Show and active the click panel
341 jEle.addClass('pagelayer-active-item');
342 holder.find('[tab-panel="'+show_panel+'"]').first().show();
343 });
344
345 // Do active tab
346 jQuery('.pagelayer-modal .pagelayer-tab-items.pagelayer-active-item').first().click();
347
348 });
349
350 // Prevent the click Inside the meta pages
351 function pagelayer_prevent_click_metas(){
352 jQuery(document).on("submit", function(event){
353 event.preventDefault();
354 });
355
356 jQuery(document).on("click", function(event){
357 var target = jQuery(event.target);
358 if (target.closest("a").length > 0) {
359 event.preventDefault();
360 var href = target.closest("a").attr("href");
361
362 if(!href.match(/(http|https):\/\//g)){
363 return;
364 }
365
366 var exp = new RegExp("(http|https):\/\/"+window.location.hostname, "g");
367
368 // Open new window
369 if(href.match(exp)){
370
371 // Reload same window
372 window.parent.location.assign(href);
373 }else{
374 window.open(href, "_blank");
375 }
376
377 }
378 });
379 }
380 </script>
381
382 <div class="pagelayer-modal">
383 <div class="pagelayer-modal-holder">
384 <form name="post" action="post.php" method="post" onsubmit="return pagelayer_post_edit(this, event)" id="post" class="pagelayer-form pagelayer-tab-wrap" <?php $referer = wp_get_referer(); ?>>
385
386 <?php wp_nonce_field( $nonce_action ); ?>
387 <input type="hidden" name="is_pagelayer_editor" value="1" />
388 <input type="hidden" id="user-id" name="user_ID" value="<?php echo (int) $user_ID; ?>" />
389 <input type="hidden" id="hiddenaction" name="action1" value="<?php echo esc_attr( $form_action ); ?>" />
390 <input type="hidden" id="originalaction" name="originalaction" value="<?php echo esc_attr( $form_action ); ?>" />
391 <input type="hidden" id="post_author" name="post_author" value="<?php echo esc_attr( $post->post_author ); ?>" />
392 <input type="hidden" id="post_type" name="post_type" value="<?php echo esc_attr( $post_type ); ?>" />
393 <input type="hidden" id="original_post_status" name="original_post_status" value="<?php echo esc_attr( $post->post_status ); ?>" />
394 <input type="hidden" id="referredby" name="referredby" value="<?php echo $referer ? esc_url( $referer ) : ''; ?>" />
395 <?php if ( ! empty( $active_post_lock ) ) { ?>
396 <input type="hidden" id="active_post_lock" value="<?php echo esc_attr( implode( ':', $active_post_lock ) ); ?>" />
397 <?php
398 }
399 if ( 'draft' !== get_post_status( $post ) ) {
400 wp_original_referer_field( true, 'previous' );
401 }
402
403 echo $form_extra;
404
405 wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false );
406 wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
407
408 ?>
409 <!-- Start Tabs-->
410 <div class="pagelayer-modal-sidebar pagelayer-tab-holder">
411
412 <?php foreach($props_tabs as $key => $props_tab){?>
413 <div class="pagelayer-sidebar-items pagelayer-tab-items <?php echo ( !empty($props_tab['class']) ? $props_tab['class'] : '' );?>" data-tab="<?php echo $key; ?>" <?php echo ( !empty($props_tab['attr']) ? $props_tab['attr'] : '' );?>>
414 <span class="<?php echo $props_tab['icon']; ?>"></span> <?php echo $props_tab['label']; ?>
415 </div>
416 <?php } ?>
417
418 </div>
419 <!-- End Tabs-->
420 <div class="pagelayer-modal-content" tab-panel="advanced_props">
421 <div class="pagelayer-modal-header">
422 <h2><?php _e('Advanced Props') ?></h2>
423 </div>
424 <div class="pagelayer-modal-body">
425 <div class="pagelayer-inner-body metabox-holder">
426 <?php
427 do_meta_boxes( $post_type, 'side', $post );
428 do_meta_boxes( $post_type, 'normal', $post );
429 do_meta_boxes( $post_type, 'advanced', $post );
430 ?>
431 </div>
432 <div class="pagelayer-inner-footer">
433 <input type="submit" class="pagelayer-save-btn" name="pagelayer_submit2" value="<?php _e('Save Changes'); ?>">
434 </div>
435 </div>
436 </div>
437 <div class="pagelayer-modal-content pagelayer-hidden" tab-panel="hf_code">
438 <?php pagelayer_post_hf_code(); ?>
439 </div>
440
441 <?php apply_filters('pagelayer_post_props_tabs_panel', '');?>
442 <!-- End Tab panels -->
443 </form>
444 </div>
445 </div>
446 <?php
447
448 }
449
450 // Post Title
451 function pagelayer_post_title(){
452 global $post_type, $post_type_object, $post, $wp_meta_boxes, $current_screen, $user_ID, $post_ID;
453
454 if ( !post_type_supports( $post_type, 'title' ) ) {
455 return '';
456 }
457 ?>
458 <div id="titlediv">
459 <label for="title"><?php _e('Post Title') ?></label>
460 <div id="titlewrap">
461 <?php
462 $title_placeholder = apply_filters( 'enter_title_here', __( 'Add title' ), $post );
463 ?>
464 <label class="screen-reader-text" id="title-prompt-text" for="title"><?php echo $title_placeholder; ?></label>
465 <input type="text" name="post_title" size="30" value="<?php echo esc_attr( $post->post_title ); ?>" id="title" spellcheck="true" autocomplete="off" />
466 </div>
467 <?php
468 //do_action( 'edit_form_before_permalink', $post );
469 ?>
470 <div class="inside">
471 <?php
472 $viewable = is_post_type_viewable( $post_type_object );
473
474 if ( $viewable ) :
475 $sample_permalink_html = $post_type_object->public ? get_sample_permalink_html( $post->ID ) : '';
476
477 // As of 4.4, the Get Shortlink button is hidden by default.
478 if ( has_filter( 'pre_get_shortlink' ) || has_filter( 'get_shortlink' ) ) {
479 $shortlink = wp_get_shortlink( $post->ID, 'post' );
480
481 if ( ! empty( $shortlink ) && $shortlink !== $permalink && home_url( '?page_id=' . $post->ID ) !== $permalink ) {
482 $sample_permalink_html .= '<input id="shortlink" type="hidden" value="' . esc_attr( $shortlink ) . '" />' .
483 '<button type="button" class="button button-small" onclick="prompt(&#39;URL:&#39;, jQuery(\'#shortlink\').val());">' .
484 __( 'Get Shortlink' ) .
485 '</button>';
486 }
487 }
488
489 if ( $post_type_object->public
490 && ! ( 'pending' === get_post_status( $post ) && ! current_user_can( $post_type_object->cap->publish_posts ) )
491 ) {
492 $has_sample_permalink = $sample_permalink_html && 'auto-draft' !== $post->post_status;
493 ?>
494 <div id="edit-slug-box" class="hide-if-no-js">
495 <?php
496 if ( $has_sample_permalink ) {
497 echo $sample_permalink_html;
498 }
499 ?>
500 </div>
501 <?php
502 }
503 endif;
504 ?>
505 </div>
506 <?php
507 wp_nonce_field( 'samplepermalink', 'samplepermalinknonce', false );
508 ?>
509 </div><!-- /titlediv -->
510 <?php
511 }
512
513 // Header body and footer code
514 function pagelayer_post_hf_code(){
515 global $post_type, $post_type_object, $post, $wp_meta_boxes, $current_screen, $user_ID, $post_ID;
516
517 ?>
518 <div class="pagelayer-modal-header">
519 <h2><?php _e('Header, Body and Footer Code') ?></h2>
520 </div>
521 <div class="pagelayer-modal-body">
522 <div class="pagelayer-inner-body">
523 <p> <?php _e('You can add custom code like HTML, JavaScript, CSS etc. for the current post.') ?> </p>
524
525 <!-- Header Code-->
526 <label class="pagelayer-block"><?php _e('Header Code'); ?> :- </label>
527 <textarea name="pagelayer_header_code" placeholder="Enter your code to add in header" rows="10" class="pagelayer-textarea"><?php echo get_post_meta( $post_ID, 'pagelayer_header_code', true ); ?></textarea>
528 <p> <?php echo __('This code will be printed in <code>&lt;head&gt;</code> Section.') ?> </p>
529
530 <!-- Body Open Code-->
531 <label class="pagelayer-block"><?php _e('Body Open Code'); ?> :- </label>
532 <textarea name="pagelayer_body_open_code" placeholder="Enter your code to add in body open" rows="10" class="pagelayer-textarea"><?php echo get_post_meta( $post_ID, 'pagelayer_body_open_code', true ); ?></textarea>
533 <p> <?php echo __('This code will be printed begning of the <code>&lt;body&gt;</code> Section.') ?> </p>
534
535 <!-- Header Code-->
536 <label class="pagelayer-block"><?php _e('Footer Code'); ?> :- </label>
537 <textarea name="pagelayer_footer_code" placeholder="Enter your code to add in Footer" rows="10" class="pagelayer-textarea"><?php echo get_post_meta( $post_ID, 'pagelayer_footer_code', true ); ?></textarea>
538 <p> <?php echo __('This code will be printed before closing the <code>&lt;/body&gt;</code> Section.') ?> </p>
539 </div>
540 <div class="pagelayer-inner-footer">
541 <input type="submit" class="pagelayer-save-btn" name="pagelayer_submit" value="<?php _e('Save Codes'); ?>">
542 </div>
543 </div>
544 <?php
545
546 }
547