PluginProbe
Page Builder: Pagelayer – Drag and Drop website builder / 2.2.2
Page Builder: Pagelayer – Drag and Drop website builder v2.2.2
2.2.2 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 All 130 releases
← All changes | main/live-body.php +224 -18 0.9.7 → 2.2.2 View file →
@@ -26,34 +26,129 @@
26 26
27 27
28 28 function pagelayer_live_body(){
29 29
30 -global $post;
30 +global $post, $pagelayer;
31 31
32 -echo '
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 '
33 73 <html>
34 74 <head>
35 - <link rel="stylesheet" href="'.PAGELAYER_CSS.'/givecss.php?give=pagelayer-editor.css,trumbowyg.min.css&ver='.PAGELAYER_VERSION.'">
36 - <link rel="stylesheet" href="'.PAGELAYER_CSS.'/font-awesome.min.css?ver='.PAGELAYER_VERSION.'">
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>
37 97 </head>
38 98
39 -<body class="pagelayer-normalize pagelayer-body">
40 -<div id="trumbowyg-icons">
41 - '.file_get_contents(PAGELAYER_DIR.'/fonts/trumbowyg.svg').'
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>
42 111 </div>
43 -<table class="pagelayer-normalize" cellpadding="0" cellspacing="0">
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">
44 130 <tr>
45 131 <td valign="top" width="270" class="pagelayer-leftbar-table">
46 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>
47 141 <tr height="45">
48 142 <td class="pagelayer-topbar-holder" valign="middle" align="center">
143 + <span class="pagelayer-options-icon pli pli-menu"></span>
49 144 <div class="pagelayer-elpd-header" style="display:none">
50 - <div class="pagelayer-elpd-close"><i class="fa fa-times" aria-hidden="true"></i></div>
51 - <div class="pagelayer-elpd-title">Edit</div>
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>
52 147 </div>
53 148 <div class="pagelayer-logo">
54 - <img src="'.PAGELAYER_URL.'/images/pagelayer-logo-40.png" width="32" /><span class="pagelayer-logo-text">pagelayer</span>
55 - <span class="pagelayer-settings-icon fa fa-cog" aria-hidden="true"></span>
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>
56 151 </div>
57 152 </td>
58 153 </tr>
59 154 <tr height="*" valign="top">
@@ -58,25 +153,136 @@
58 153 </tr>
59 154 <tr height="*" valign="top">
60 155 <td style="position: relative;"><div class="pagelayer-leftbar-holder"></div></td>
61 156 </tr>
62 - <tr height="35">
63 - <td class="pagelayer-bottombar-holder"></td>
157 + <tr height="35" class="pagelayer-bottombar-row">
158 + <td><div class="pagelayer-bottombar-holder"></div></td>
64 159 </tr>
65 160 </table>
66 - </td>
67 - <td valign="middle" class="pagelayer-leftbar-toggle-h">
68 161 <div class="pagelayer-leftbar-toggle">&lsaquo;</div>
69 162 </td>
70 - <td class="pagelayer-iframe">
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>
71 168 <div class="pagelayer-iframe-holder">
72 - <iframe src="'.(pagelayer_shortlink(0).'&pagelayer-iframe=1&'.$_SERVER['QUERY_STRING']).'" class="pagelayer-normalize"></iframe>
169 + <iframe src="'.(pagelayer_shortlink(0).'&pagelayer-iframe=1&'.$_SERVER['QUERY_STRING']).'" class="pagelayer-normalize skip-lazy" id="pagelayer-iframe"></iframe>
73 170 </div>
74 171 </td>
75 172 </tr>
76 173 </table>
77 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>
78 284 </body>';
79 285
80 286 die();
81 287
82 288 }