Page Builder: PageLayer – Drag and Drop website builder - Version 1.1.0

Version Description

(April 17, 2020) = * [Task] The "Element ID" option has been added for the items in the accordion and collapse widget, Now you can use the accordion and collapse widget as a reference link. * [Task] Made Pagelayer compatible with the "Smush" plugin. * [Task] Added box shadow option in the button widget. * [Bug-Fix] In the accordion widget "Default active tab" option of the accordion item was not working. This is fixed. * [Bug-Fix] The color preview in the "box shadow" properties was not working the first time. This is fixed. * [Bug-Fix] If the column already contains an inner-row, the columns are prevented from dragging in the inner-row.

Download this release

Release Info

Developer pagelayer
Plugin Icon 128x128 Page Builder: PageLayer – Drag and Drop website builder
Version 1.1.0
Comparing to
See all releases

Code changes from version 1.0.9 to 1.1.0

init.php CHANGED
@@ -5,7 +5,7 @@ if (!defined('ABSPATH')) exit;
5
 
6
  define('PAGELAYER_BASE', plugin_basename(PAGELAYER_FILE));
7
  define('PAGELAYER_PRO_BASE', 'pagelayer-pro/pagelayer-pro.php');
8
- define('PAGELAYER_VERSION', '1.0.9');
9
  define('PAGELAYER_DIR', dirname(PAGELAYER_FILE));
10
  define('PAGELAYER_SLUG', 'pagelayer');
11
  define('PAGELAYER_URL', plugins_url('', PAGELAYER_FILE));
5
 
6
  define('PAGELAYER_BASE', plugin_basename(PAGELAYER_FILE));
7
  define('PAGELAYER_PRO_BASE', 'pagelayer-pro/pagelayer-pro.php');
8
+ define('PAGELAYER_VERSION', '1.1.0');
9
  define('PAGELAYER_DIR', dirname(PAGELAYER_FILE));
10
  define('PAGELAYER_SLUG', 'pagelayer');
11
  define('PAGELAYER_URL', plugins_url('', PAGELAYER_FILE));
js/pagelayer-editor.js CHANGED
@@ -427,7 +427,19 @@ function pagelayer_setup_drag(){
427
 
428
  // If we are a column, we can be over another column or row
429
  if(tag == 'pl_col'){
430
- onWrap = jQuery(ele).closest('.pagelayer-wrap-col,.pagelayer-wrap-row,.pagelayer-wrap-inner-row');
 
 
 
 
 
 
 
 
 
 
 
 
431
  //console.log(pagelayer_id(onWrap));
432
 
433
  // If we are a row, we can be over another row or a column
427
 
428
  // If we are a column, we can be over another column or row
429
  if(tag == 'pl_col'){
430
+
431
+ // Prevent column in inner-row and it's columns, if the draged column have inner-rows
432
+ if(wrap.find('.pagelayer-wrap-inner-row').length > 0){
433
+ onWrap = jQuery(ele).closest('.pagelayer-wrap-col,.pagelayer-wrap-row');
434
+
435
+ var innerRow = onWrap.closest(pagelayer_editable +' .pagelayer-wrap-inner-row');
436
+ if( onWrap.length < 1 || innerRow.length > 0){
437
+ onWrap = jQuery(innerRow).closest('.pagelayer-wrap-col,.pagelayer-wrap-row');
438
+ }
439
+
440
+ }else{
441
+ onWrap = jQuery(ele).closest('.pagelayer-wrap-col,.pagelayer-wrap-row,.pagelayer-wrap-inner-row');
442
+ }
443
  //console.log(pagelayer_id(onWrap));
444
 
445
  // If we are a row, we can be over another row or a column
js/pagelayer-frontend.js CHANGED
@@ -297,54 +297,51 @@ function pagelayer_pl_tabs(jEle) {
297
  function pagelayer_pl_accordion(jEle){
298
 
299
  var holder = jEle.find('.pagelayer-accordion-holder');
300
- var tabs = jEle.find('.pagelayer-accordion-tabs');
 
301
 
302
- if(tabs.length < 1){
303
  return false;
304
  }
305
-
306
- var setup = tabs.attr('pagelayer-setup');
307
-
308
  var icon = holder.attr('data-icon');
309
  var active_icon = holder.attr('data-active_icon');
310
 
311
- tabs.find('span i').attr('class', icon);
312
- var currentTab = jEle.find('.pagelayer-accordion-tabs.active');
313
-
314
- if(currentTab.length < 1){
315
- jQuery(tabs[0]).addClass('active').next().show('slow');
316
- jQuery(tabs[0]).find('span i').attr('class', icon);
317
- }
318
 
319
- jQuery(currentTab).addClass('active').next().show('slow');
320
- jQuery(currentTab).find('span i').attr('class', active_icon);
 
 
321
 
322
- // Already setup ?
323
- if(setup && setup.length > 0){
324
- tabs.unbind('click');
325
  }
326
-
327
- tabs.click(function(){
 
328
 
329
  var currentTab = jQuery(this);
330
 
331
  if(currentTab.hasClass('active')){
332
- currentTab.removeClass('active').next().hide('slow');;
333
- currentTab.find('span i').attr('class', icon);
334
  return true;
335
- }
336
 
337
- tabs.find('span i').attr('class', icon);
338
- tabs.removeClass('active').next().hide('slow');
339
 
340
- currentTab.addClass('active').next().show('slow');
341
- currentTab.find('span i').attr('class', active_icon);
342
 
343
  });
344
 
345
- // Set that we have setup everything
346
- tabs.attr('pagelayer-setup', 1);
347
-
348
  }
349
 
350
  // Setup the Collapse
@@ -360,11 +357,22 @@ function pagelayer_pl_collapse(jEle){
360
  var setup = tabs.attr('pagelayer-setup');
361
  var icon = holder.attr('data-icon');
362
  var active_icon = holder.attr('data-active_icon');
 
 
 
 
 
 
 
 
 
 
 
363
  var activeTabs = jEle.find('.pagelayer-accordion_item.active');
364
 
365
- tabs.find('span i').attr('class', icon);
366
  jQuery(activeTabs).addClass('active').children('.pagelayer-accordion-panel').show('slow');
367
- jQuery(activeTabs).find('span i').attr('class', active_icon);
368
 
369
  // Already setup ?
370
  if(setup && setup.length > 0){
@@ -377,12 +385,12 @@ function pagelayer_pl_collapse(jEle){
377
 
378
  if(currentTab.hasClass('active')){
379
  currentTab.removeClass('active').children('.pagelayer-accordion-panel').hide('slow');;
380
- currentTab.find('span i').attr('class', icon);
381
  return true;
382
  }
383
 
384
  currentTab.addClass('active').children('.pagelayer-accordion-panel').show('slow');
385
- currentTab.find('span i').attr('class', active_icon);
386
 
387
  });
388
 
297
  function pagelayer_pl_accordion(jEle){
298
 
299
  var holder = jEle.find('.pagelayer-accordion-holder');
300
+ var accHolder = jEle.find('.pagelayer-accordion_item');
301
+ var scrolltop = false;
302
 
303
+ if(accHolder.length < 1){
304
  return false;
305
  }
306
+
 
 
307
  var icon = holder.attr('data-icon');
308
  var active_icon = holder.attr('data-active_icon');
309
 
310
+ accHolder.find('.pagelayer-accordion-tabs span i').attr('class', icon);
311
+ var currentActiveTab = jEle.find('.pagelayer-accordion_item.active').first();
 
 
 
 
 
312
 
313
+ // Any URL HASH ?
314
+ var hash = location.hash.slice(1);
315
+ if(!pagelayer_empty(hash)){
316
+ var scrollTab = jEle.find('#'+hash);
317
 
318
+ if(!pagelayer_empty(scrollTab) && scrollTab.length > 0){
319
+ currentActiveTab = scrollTab.closest('.pagelayer-accordion_item');
320
+ }
321
  }
322
+
323
+ accHolder.unbind('click');
324
+ accHolder.click(function(){
325
 
326
  var currentTab = jQuery(this);
327
 
328
  if(currentTab.hasClass('active')){
329
+ currentTab.removeClass('active').children('.pagelayer-accordion-panel').hide('slow');
330
+ currentTab.find('.pagelayer-accordion-tabs span i').attr('class', icon);
331
  return true;
332
+ }
333
 
334
+ accHolder.find('.pagelayer-accordion-tabs span i').attr('class', icon);
335
+ accHolder.removeClass('active').children('.pagelayer-accordion-panel').hide('slow');
336
 
337
+ currentTab.addClass('active').children('.pagelayer-accordion-panel').show('slow');
338
+ currentTab.find('.pagelayer-accordion-tabs span i').attr('class', active_icon);
339
 
340
  });
341
 
342
+ // If active first tab from all active tabs
343
+ currentActiveTab.removeClass('active');
344
+ currentActiveTab.click();
345
  }
346
 
347
  // Setup the Collapse
357
  var setup = tabs.attr('pagelayer-setup');
358
  var icon = holder.attr('data-icon');
359
  var active_icon = holder.attr('data-active_icon');
360
+
361
+ // Any URL HASH ?
362
+ var hash = location.hash.slice(1);
363
+ if(!pagelayer_empty(hash)){
364
+ var scrollTab = jEle.find('#'+hash);
365
+
366
+ if(!pagelayer_empty(scrollTab) && scrollTab.length > 0){
367
+ scrollTab.closest('.pagelayer-accordion_item').addClass('active');
368
+ }
369
+ }
370
+
371
  var activeTabs = jEle.find('.pagelayer-accordion_item.active');
372
 
373
+ tabs.find('.pagelayer-accordion-tabs span i').attr('class', icon);
374
  jQuery(activeTabs).addClass('active').children('.pagelayer-accordion-panel').show('slow');
375
+ jQuery(activeTabs).find('.pagelayer-accordion-tabs span i').attr('class', active_icon);
376
 
377
  // Already setup ?
378
  if(setup && setup.length > 0){
385
 
386
  if(currentTab.hasClass('active')){
387
  currentTab.removeClass('active').children('.pagelayer-accordion-panel').hide('slow');;
388
+ currentTab.find('.pagelayer-accordion-tabs span i').attr('class', icon);
389
  return true;
390
  }
391
 
392
  currentTab.addClass('active').children('.pagelayer-accordion-panel').show('slow');
393
+ currentTab.find('.pagelayer-accordion-tabs span i').attr('class', active_icon);
394
 
395
  });
396
 
js/properties.js CHANGED
@@ -2522,7 +2522,7 @@ function pagelayer_elp_box_shadow(row, prop){
2522
 
2523
  // Handle selected color
2524
  picker.onChange = function(color) {
2525
- row.find('.pagelayer-elp-color-preview').css('background', color.rgbaString);
2526
  handle_white(color.hex);
2527
  val[3] = (color.hex ? color.hex : '');
2528
  _pagelayer_set_atts(row, val);
2522
 
2523
  // Handle selected color
2524
  picker.onChange = function(color) {
2525
+ row.find('.pagelayer-elp-color-preview').removeClass('pagelayer-blank-preview').css('background', color.rgbaString);
2526
  handle_white(color.hex);
2527
  val[3] = (color.hex ? color.hex : '');
2528
  _pagelayer_set_atts(row, val);
languages/en.json CHANGED
@@ -1684,5 +1684,6 @@
1684
  "popup_cookie_selector" : "Selector To Set Cookie and Close Popup",
1685
  "popup_cookie_name" : "Cookie Name",
1686
  "popup_cookie_exp" : "Cookie Expires",
1687
- "select_images" : "Please select images from the left Widget properties !"
 
1688
  }
1684
  "popup_cookie_selector" : "Selector To Set Cookie and Close Popup",
1685
  "popup_cookie_name" : "Cookie Name",
1686
  "popup_cookie_exp" : "Cookie Expires",
1687
+ "select_images" : "Please select images from the left Widget properties !",
1688
+ "ele_id" : "Element ID"
1689
  }
main/live-body.php CHANGED
@@ -110,7 +110,7 @@ global $post;
110
  echo '
111
  </div>
112
  <div class="pagelayer-iframe-holder">
113
- <iframe src="'.(pagelayer_shortlink(0).'&pagelayer-iframe=1&'.$_SERVER['QUERY_STRING']).'" class="pagelayer-normalize" id="pagelayer-iframe"></iframe>
114
  </div>
115
  </td>
116
  </tr>
110
  echo '
111
  </div>
112
  <div class="pagelayer-iframe-holder">
113
+ <iframe src="'.(pagelayer_shortlink(0).'&pagelayer-iframe=1&'.$_SERVER['QUERY_STRING']).'" class="pagelayer-normalize skip-lazy" id="pagelayer-iframe"></iframe>
114
  </div>
115
  </td>
116
  </tr>
main/shortcodes.php CHANGED
@@ -4883,6 +4883,16 @@ pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_btn', array(
4883
  'btn_hover' => 'hover'
4884
  ),
4885
  ),
 
 
 
 
 
 
 
 
 
 
4886
  ],
4887
  'border_style' => [
4888
  'btn_bor_hover' => array(
@@ -7293,6 +7303,11 @@ pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_accordion_item', array(
7293
  'label' => __pl('Default active tab'),
7294
  'addClass' => 'active'
7295
  ),
 
 
 
 
 
7296
  'title' => array(
7297
  'type' => 'text',
7298
  'label' => __pl('title'),
4883
  'btn_hover' => 'hover'
4884
  ),
4885
  ),
4886
+ 'btn_shadow' => [
4887
+ 'type' => 'box_shadow',
4888
+ 'label' => __pl('shadow'),
4889
+ 'css' => ['{{element}} .pagelayer-btn-holder' => 'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[4]}}px {{val[3]}} {{val[5]}} !important;'],
4890
+ ],
4891
+ 'btn_shadow_hover' => [ // This is actually box shadow hover
4892
+ 'type' => 'box_shadow',
4893
+ 'label' => __pl('box_shadow_hover'),
4894
+ 'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}} !important;'],
4895
+ ],
4896
  ],
4897
  'border_style' => [
4898
  'btn_bor_hover' => array(
7303
  'label' => __pl('Default active tab'),
7304
  'addClass' => 'active'
7305
  ),
7306
+ 'scroll_id' => array(
7307
+ 'type' => 'text',
7308
+ 'label' => __pl('ele_id'),
7309
+ 'addAttr' => ['{{element}} .pagelayer-accordion-tabs' => 'id={{scroll_id}}']
7310
+ ),
7311
  'title' => array(
7312
  'type' => 'text',
7313
  'label' => __pl('title'),
pagelayer.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: PageLayer
4
  Plugin URI: http://wordpress.org/plugins/pagelayer/
5
  Description: PageLayer is a WordPress page builder plugin. Its very easy to use and very light on the browser.
6
- Version: 1.0.9
7
  Author: Pagelayer Team
8
  Author URI: https://pagelayer.com/
9
  License: LGPL v2.1
3
  Plugin Name: PageLayer
4
  Plugin URI: http://wordpress.org/plugins/pagelayer/
5
  Description: PageLayer is a WordPress page builder plugin. Its very easy to use and very light on the browser.
6
+ Version: 1.1.0
7
  Author: Pagelayer Team
8
  Author URI: https://pagelayer.com/
9
  License: LGPL v2.1
readme.txt CHANGED
@@ -2,9 +2,9 @@
2
  Contributors: pagelayer
3
  Tags: page builder, editor, landing page, drag-and-drop, pagelayer, form-builder, popup, widgets, softaculous, visual editor, wysiwyg, design, maintenance mode, coming soon, under construction, website builder, landing page builder, front-end builder, site-builder
4
  Requires at least: 4.7
5
- Tested up to: 5.3
6
  Requires PHP: 5.5
7
- Stable tag: 1.0.9
8
  License: LGPL v2.1
9
  License URI: http://www.gnu.org/licenses/lgpl-2.1.html
10
 
@@ -109,7 +109,15 @@ Do you have questions related to PageLayer ? Use the following links :
109
 
110
  == Changelog ==
111
 
112
- = 1.0.9 (April 24, 2020) =
 
 
 
 
 
 
 
 
113
  * [Premium-Feature] Cookie option added to popup template. Now you can hide a popup for a fixed time with the help of the cookie at the click of close button. This is particularly useful to create a Cookie Consent popup.
114
  * [Task] Some WordPress themes did not have an "entry-content" class to wrap post content. Hence Pagelayer was unable to find the editable region. Now we have added the wrapper with the class "pagelayer-editable-area" to create an editable region.
115
  * [Task] Added a placeholder to the grid gallery widget.
2
  Contributors: pagelayer
3
  Tags: page builder, editor, landing page, drag-and-drop, pagelayer, form-builder, popup, widgets, softaculous, visual editor, wysiwyg, design, maintenance mode, coming soon, under construction, website builder, landing page builder, front-end builder, site-builder
4
  Requires at least: 4.7
5
+ Tested up to: 5.4
6
  Requires PHP: 5.5
7
+ Stable tag: 1.1.0
8
  License: LGPL v2.1
9
  License URI: http://www.gnu.org/licenses/lgpl-2.1.html
10
 
109
 
110
  == Changelog ==
111
 
112
+ = 1.1.0 (April 17, 2020) =
113
+ * [Task] The "Element ID" option has been added for the items in the accordion and collapse widget, Now you can use the accordion and collapse widget as a reference link.
114
+ * [Task] Made Pagelayer compatible with the "Smush" plugin.
115
+ * [Task] Added box shadow option in the button widget.
116
+ * [Bug-Fix] In the accordion widget "Default active tab" option of the accordion item was not working. This is fixed.
117
+ * [Bug-Fix] The color preview in the "box shadow" properties was not working the first time. This is fixed.
118
+ * [Bug-Fix] If the column already contains an inner-row, the columns are prevented from dragging in the inner-row.
119
+
120
+ = 1.0.9 (April 11, 2020) =
121
  * [Premium-Feature] Cookie option added to popup template. Now you can hide a popup for a fixed time with the help of the cookie at the click of close button. This is particularly useful to create a Cookie Consent popup.
122
  * [Task] Some WordPress themes did not have an "entry-content" class to wrap post content. Hence Pagelayer was unable to find the editable region. Now we have added the wrapper with the class "pagelayer-editable-area" to create an editable region.
123
  * [Task] Added a placeholder to the grid gallery widget.