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.