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

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

288 lines 9.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 //////////////////////////////////////////////////////////////
4 //===========================================================
5 // live.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
28 function pagelayer_live_body(){
29
30 global $post, $pagelayer;
31
32 // XSS BLOCK (defense at the source): If the post contains XSS injected
33 if(pagelayer_should_show_xss_warning()){
34 pagelayer_render_xss_warning_block();
35 }
36
37 $icons = pagelayer_enabled_icons();
38 $icons_list = array();
39
40 // Load all icons
41 foreach($icons as $icon){
42 $icons_list[] = $icon.'.min.css';
43 }
44
45 $css_url = admin_url('admin-ajax.php?action=pagelayer_givecss&pagelayer_nonce=1&');
46 if(pagelayer_enable_giver()){
47 $css_url = PAGELAYER_CSS.'/givecss.php?';
48 }
49
50 $dark_mode = get_option('pagelayer_enable_dark_mode');
51 $body_class = '';
52 if(!empty($dark_mode)){
53 $body_class = 'pagelayer-dark';
54 };
55
56 if(defined('SITEPAD')){
57 $body_class .= ' sitepad-body';
58 }
59
60 $shortcut_groups = [
61 'general_shortcuts' => [
62 'undo' => 'Ctrl+Z',
63 'redo' => 'Ctrl+Y',
64 'save_post' => 'Ctrl+S',
65 'copy_widget' => 'Ctrl+C',
66 'paste_widget' => 'Ctrl+V',
67 'duplicate_widget' => 'Ctrl+D',
68 'delete_widget' => 'Delete'
69 ]
70 ];
71
72 echo '
73 <html>
74 <head>
75 <link href="https://fonts.googleapis.com/css?family=Roboto&display=swap" rel="stylesheet">
76 <link rel="stylesheet" href="'.$css_url.'give=pagelayer-editor.css,trumbowyg.min.css,pagelayer-icons.css,pagelayer-ai.css,'.implode(',' ,$icons_list).'&ver='.PAGELAYER_VERSION.'">';
77
78 do_action('pagelayer_live_body_head');
79
80 // Brand Name
81 $brand = strtoupper($pagelayer->BRAND_TEXT);
82 $brand = str_split($brand);
83
84 echo '
85 <style>
86 /*Set responsive variables*/
87 .pagelayer-screen-tablet{
88 width: '. $pagelayer->settings['tablet_breakpoint'] .'px;
89 }
90 .pagelayer-screen-mobile{
91 width: '. $pagelayer->settings['mobile_breakpoint'] .'px;
92 }
93 .pagelayer-errorBox-support{
94 text-decoration:none;
95 }
96 </style>
97 </head>
98
99 <body class="pagelayer-normalize pagelayer-body '.$body_class.'">
100 <div class="pagelayer-errorBox">
101 <div class="pagelayer-errorBox-close"><i class="fas fa-times"></i></div>
102 <div class="pagelayer-errorBox-main">
103 <h2><i class="fas fa-times"></i>'.__pl('error').'</h2>
104 <div class="pagelayer-errorBox-content"></div>
105 </div>
106 <div class="pagelayer-errorBox-resolve">
107 <p>'.__pl('error_submitting').'</p>
108 <button type="button" class="pagelayer-errorBox-copy" onclick="pagelayer_copy_error(event)">'.__pl('copy').'</button>
109 <a type="button" class="pagelayer-errorBox-support" href="'. $pagelayer->support .'" target="_bank">'.__pl('support').'</a>
110 </div>
111 </div>
112 <div id="pagelayer-loader-wrapper">
113 <div class="pagelayer-animation-section">
114 <div class="pagelayer-loader">
115 <div class="pagelayer-percent-parent">
116 <div class="pagelayer-percent">10<sup>%</sup></div>
117 </div>
118 </div>
119 <div class="pagelayer-txt-loading">';
120
121 foreach($brand as $k => $v){
122 echo '<span data-text-preloader="'.$v.'" class="letters-loading">'.$v.'</span>';
123 }
124
125 echo '</div>
126 </div>
127 </div>
128
129 <table class="pagelayer-normalize pagelayer-body-table" cellpadding="0" cellspacing="0">
130 <tr>
131 <td valign="top" width="270" class="pagelayer-leftbar-table">
132 <table class="pagelayer-normalize" cellpadding="0" cellspacing="0">
133 <tr class="pagelayer-close-bar">
134 <td>
135 <div class="pagelayer-close-bar-icons">
136 <i class="pagelayer-leftbar-minimize fa fa-minus"></i>
137 <i class="pagelayer-leftbar-close fa fa-close"></i>
138 </div>
139 </td>
140 </tr>
141 <tr height="45">
142 <td class="pagelayer-topbar-holder" valign="middle" align="center">
143 <span class="pagelayer-options-icon pli pli-menu"></span>
144 <div class="pagelayer-elpd-header" style="display:none">
145 <div class="pagelayer-elpd-close"><i class="pli pli-cross" aria-hidden="true"></i></div>
146 <div class="pagelayer-elpd-title pagelayer-topbar-mover">Edit</div>
147 </div>
148 <div class="pagelayer-logo">
149 <img src="'.$pagelayer->LOGO.'" width="28" /><span class="pagelayer-logo-text pagelayer-topbar-mover">'.$pagelayer->BRAND_TEXT.(defined('PAGELAYER_PREMIUM') && strtolower($pagelayer->BRAND_TEXT) == 'pagelayer' ? '<sup style="margin: 3px; font-size: 12px; letter-spacing: 1px; font-family: "Roboto";">Pro</sup>' : '').'</span>
150 <span class="pagelayer-settings-icon pli pli-service" aria-hidden="true"></span>
151 </div>
152 </td>
153 </tr>
154 <tr height="*" valign="top">
155 <td style="position: relative;"><div class="pagelayer-leftbar-holder"></div></td>
156 </tr>
157 <tr height="35" class="pagelayer-bottombar-row">
158 <td><div class="pagelayer-bottombar-holder"></div></td>
159 </tr>
160 </table>
161 <div class="pagelayer-leftbar-toggle">&lsaquo;</div>
162 </td>
163 <td class="pagelayer-iframe" valign="top">
164 <div class="pagelayer-iframe-top-bar">';
165 do_action('pagelayer_iframe_top_bar');
166 echo '
167 </div>
168 <div class="pagelayer-iframe-holder">
169 <iframe src="'.(pagelayer_shortlink(0).'&pagelayer-iframe=1&'.$_SERVER['QUERY_STRING']).'" class="pagelayer-normalize skip-lazy" id="pagelayer-iframe"></iframe>
170 </div>
171 </td>
172 </tr>
173 </table>
174
175 <div class="pagelayer-pro-notice">';
176 pagelayer_show_pro_div('Premium Feature<span class="pli pli-cross pagelayer-pro-x"></span>', '', 0);
177 echo '</div>
178 <div class="pagelayer-editor-notice"></div>
179 <div class="pagelayer-props-modal">
180 <div class="pagelayer-props-holder">
181 <div class="pagelayer-props-wrap">
182 <div class="pagelayer-props-loading-screen"></div>
183 <i class="pagelayer-props-modal-close pli pli-cross" aria-hidden="true"></i>
184 </div>
185 </div>
186 </div>
187 <script>
188 var pagelayer_iframe_cw = document.getElementById("pagelayer-iframe").contentWindow;
189 var start_time = new Date().getTime();
190
191 // Show loading progress
192 function loader(ran) {
193 var inner = document.getElementsByClassName("pagelayer-percent")[0];
194 var w = 0;
195 var t = setInterval(function() {
196 w = w + 1;
197 inner.innerHTML = (w+"<sup>%</sup>");
198 if (w === ran || inner.getAttribute("loaded") == "1"){
199 clearInterval(t);
200 w = 0;
201 }
202 }, 50);
203 }
204 loader(90);
205
206 function $p(sel){
207 return pagelayer_iframe_cw.pagelayer.$$(sel);
208 }
209
210 // Load the window if necessary i.e. an error in the JS of the iframe
211 function onIframeLoad(){
212 setTimeout(function(){
213 force_pagelayer_start();
214 }, 5000);
215 }
216
217 function force_pagelayer_start(){
218 try{
219 if(pagelayer_iframe_cw.pagelayer.loaded == 1){
220 return;
221 }
222 pagelayer_iframe_cw.pagelayer_start();
223 var end_time = new Date().getTime();
224 var diff = (end_time - start_time) / 1000;
225 console.log("['.$pagelayer->BRAND_TEXT.'] Live Body had to load after : "+diff+" seconds");
226
227 // If this fails, lets just hide the loader
228 }catch(e){
229 alert("Fatal error within the '.$pagelayer->BRAND_TEXT.' iFrame as pagelayer object not found ! Please contact '.$pagelayer->BRAND_TEXT.' support");
230 document.getElementById("pagelayer-loader-wrapper").remove();
231 }
232 }
233
234 document.getElementById("pagelayer-iframe").onload = onIframeLoad;
235
236 // ErrorBox content copy function
237 function pagelayer_copy_error(){
238 var tempInput = document.createElement("textarea");
239 tempInput.value = document.querySelector(".pagelayer-errorBox-content").innerText;
240 document.body.appendChild(tempInput);
241 tempInput.select();
242 document.execCommand("copy");
243 document.body.removeChild(tempInput);
244 alert("'.__pl('copy_success').'");
245 }
246
247 </script>
248
249 <div class="pagelayer-editor-modal pagelayer-shortcuts-modal">
250 <div class="pagelayer-editor-modal-wrap">
251 <div class="pagelayer-editor-modal-header">
252 <h2>'.__pl('keyboard_shortcuts').'</h2>
253 <span class="pagelayer-editor-modal-close-icon"><i class="fas fa-times"></i></span>
254 </div>
255 <div class="pagelayer-editor-modal-body">';
256 foreach($shortcut_groups as $grp_name => $group){
257
258 if(empty($group)) {
259 return;
260 }
261
262 echo '<div class="pagelayer-edt-modal-block">'. (!empty($grp_name) ? '<h3>'.__pl($grp_name).'</h3>' :'' ) .'<ul>';
263
264 foreach($group as $desc => $shortcut) {
265 echo '<li><span class="pagelayer-keyboard-shortcut-desc">'.__pl($desc).'</span>
266 <span class="pagelayer-keyboard-shortcut-keys">';
267
268 //Considering the whole shortcut as a single key
269 $key = '<span>'.$shortcut.'</span>';
270
271 //replacing "+" and "," from the string to put it inside <span>
272 $key = preg_replace('/\+/', '</span> + <span>', $key);
273 $key = preg_replace('/\,/', '</span><span style="display:block; margin-top:10px;">', $key);
274
275 echo $key.'</span></li>';
276 }
277
278 echo '</ul></div>';
279 }
280
281 echo '</div>
282 </div>
283 </div>
284 </body>';
285
286 die();
287
288 }