Version Description
(Sep 16, 2021) = * [Improvement] The Title Widget has been further improved. Now users can search for widgets with a slash (/) and replace the selected widget with the current widget and also added the plus icon near the bottom of all widgets to add widget after the current widget. * [Improvement] Login widget has been further improved. * [Improvement] Insert link option UI of our pen editor has been further improved. * [Bug-Fix] In certain cases the Pagelayer pen heading and paragraph formatting was not working properly. This is fixed. * [Bug-Fix] The Roboto font within the system section was not working. We have removed the system font option of Roboto and left the Google Font option. This is fixed. * [Bug-Fix] In certain cases the background video was not working properly. This is fixed. * [Bug-Fix] When the dropdown menu was set to in tablet or mobile mode, the full primary menu was shown when reloading the page. This is fixed. * [Bug-Fix] In some cases, the pen editor's unlink option was not working properly. This is fixed.
Release Info
Developer | pagelayer |
Plugin | Page Builder: PageLayer – Drag and Drop website builder |
Version | 1.5.5 |
Comparing to | |
See all releases |
Code changes from version 1.5.4 to 1.5.5
- css/pagelayer-editor-frontend.css +38 -3
- css/pagelayer-editor.css +92 -2
- css/pagelayer-pen.css +13 -4
- init.php +7 -1
- js/pagelayer-editor.js +265 -13
- js/pagelayer-pen.js +268 -35
- main/ajax.php +3 -0
- main/class.php +1 -1
- main/import.php +40 -5
- main/shortcode_functions.php +2 -2
- pagelayer.php +1 -1
- readme.txt +13 -1
@@ -10,15 +10,16 @@ padding:5px;
|
|
10 |
color:#4f4f4f;
|
11 |
font-size: 16px;
|
12 |
line-height: 1.5;
|
|
|
13 |
}
|
14 |
|
15 |
-
.pagelayer-add-ele .
|
16 |
font-size:15px;
|
17 |
color:#4a4949;
|
18 |
cursor:pointer;
|
19 |
}
|
20 |
|
21 |
-
.pagelayer-add-ele .
|
22 |
color:#3e8ef7;
|
23 |
}
|
24 |
|
@@ -211,7 +212,7 @@ transition: all 0.2s;
|
|
211 |
white-space:nowrap;
|
212 |
}
|
213 |
|
214 |
-
.pagelayer-right-click-options a .
|
215 |
margin-right: 5px;
|
216 |
}
|
217 |
|
@@ -242,6 +243,7 @@ border-style: dashed;
|
|
242 |
position:relative;
|
243 |
font-family: "Open Sans", Arial,Helvetica,sans-serif;
|
244 |
margin:20px auto;
|
|
|
245 |
}
|
246 |
|
247 |
.pagelayer-add-widget-area .pagelayer-add-button{
|
@@ -477,4 +479,37 @@ visibility: visible;
|
|
477 |
.pagelayer-service-details{
|
478 |
position:relative;
|
479 |
z-index:9;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
480 |
}
|
10 |
color:#4f4f4f;
|
11 |
font-size: 16px;
|
12 |
line-height: 1.5;
|
13 |
+
position: relative;
|
14 |
}
|
15 |
|
16 |
+
.pagelayer-add-ele .fas{
|
17 |
font-size:15px;
|
18 |
color:#4a4949;
|
19 |
cursor:pointer;
|
20 |
}
|
21 |
|
22 |
+
.pagelayer-add-ele .fas:hover:before{
|
23 |
color:#3e8ef7;
|
24 |
}
|
25 |
|
212 |
white-space:nowrap;
|
213 |
}
|
214 |
|
215 |
+
.pagelayer-right-click-options a .far{
|
216 |
margin-right: 5px;
|
217 |
}
|
218 |
|
243 |
position:relative;
|
244 |
font-family: "Open Sans", Arial,Helvetica,sans-serif;
|
245 |
margin:20px auto;
|
246 |
+
cursor: pointer;
|
247 |
}
|
248 |
|
249 |
.pagelayer-add-widget-area .pagelayer-add-button{
|
479 |
.pagelayer-service-details{
|
480 |
position:relative;
|
481 |
z-index:9;
|
482 |
+
}
|
483 |
+
|
484 |
+
.pagelayer-shortcode-plus{
|
485 |
+
border: none;
|
486 |
+
margin: auto;
|
487 |
+
z-index: 11;
|
488 |
+
cursor: pointer;
|
489 |
+
font-size: 10px;
|
490 |
+
position: absolute;
|
491 |
+
left: 50%;
|
492 |
+
transform: translateX(-50%);
|
493 |
+
bottom: -7px;
|
494 |
+
text-align: center;
|
495 |
+
pointer-events: all;
|
496 |
+
display: none;
|
497 |
+
line-height:1 !important;
|
498 |
+
padding:0 !important;
|
499 |
+
}
|
500 |
+
|
501 |
+
.pagelayer-ele-hover .pagelayer-shortcode-plus{
|
502 |
+
display: block;
|
503 |
+
}
|
504 |
+
|
505 |
+
.pagelayer-shortcode-plus .fas{
|
506 |
+
display: inline-block !important;
|
507 |
+
font-size: 10px !important;
|
508 |
+
padding: 2px !important;
|
509 |
+
background: #444;
|
510 |
+
color: #fff;
|
511 |
+
}
|
512 |
+
|
513 |
+
.pagelayer-shortcode-plus:hover .fas{
|
514 |
+
background: #0069d9;
|
515 |
}
|
@@ -2333,6 +2333,7 @@ font-size: 14px;
|
|
2333 |
height:30px;
|
2334 |
}
|
2335 |
|
|
|
2336 |
.pagelayer-leftbar-search .pli{
|
2337 |
position: absolute;
|
2338 |
top: 0;
|
@@ -2342,6 +2343,7 @@ color: #666;
|
|
2342 |
line-height: 30px;
|
2343 |
}
|
2344 |
|
|
|
2345 |
.pagelayer-leftbar-search .pagelayer-sf-empty{
|
2346 |
right:0;
|
2347 |
left:auto;
|
@@ -2353,6 +2355,7 @@ cursor:pointer;
|
|
2353 |
margin-left:17px;
|
2354 |
}
|
2355 |
|
|
|
2356 |
.pagelayer-leftbar-group{
|
2357 |
width: 100%;
|
2358 |
background-repeat: no-repeat;
|
@@ -2365,6 +2368,7 @@ font-family: Roboto, 'Open Sans', Arial, sans-serif !important;
|
|
2365 |
margin-bottom: 2px;
|
2366 |
}
|
2367 |
|
|
|
2368 |
.pagelayer-leftbar-group h5{
|
2369 |
font-size: 11px;
|
2370 |
line-height: 20px;
|
@@ -2381,7 +2385,8 @@ padding-top: 20px;
|
|
2381 |
font-size: 14px;
|
2382 |
}
|
2383 |
|
2384 |
-
.pagelayer-shortcode-
|
|
|
2385 |
width: 100px !important;
|
2386 |
height:67px !important;
|
2387 |
margin-bottom:12px;
|
@@ -2398,6 +2403,7 @@ background-color:#252529;
|
|
2398 |
box-shadow:0 0.5rem 1rem #00000026;
|
2399 |
}
|
2400 |
|
|
|
2401 |
.pagelayer-shortcode-drag:hover{
|
2402 |
transform: scale(1.06);
|
2403 |
}
|
@@ -3861,4 +3867,88 @@ background-color: #cc1818;
|
|
3861 |
.pagelayer-dark .pagelayer-elp-postdate-div .pagelayer-elp-postdate::-webkit-calendar-picker-indicator{
|
3862 |
filter: invert(70%);
|
3863 |
}
|
3864 |
-
/* Pagelayer post props(tags) end */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2333 |
height:30px;
|
2334 |
}
|
2335 |
|
2336 |
+
.pagelayer-widget-search .pli,
|
2337 |
.pagelayer-leftbar-search .pli{
|
2338 |
position: absolute;
|
2339 |
top: 0;
|
2343 |
line-height: 30px;
|
2344 |
}
|
2345 |
|
2346 |
+
.pagelayer-widget-search .pagelayer-sf-empty,
|
2347 |
.pagelayer-leftbar-search .pagelayer-sf-empty{
|
2348 |
right:0;
|
2349 |
left:auto;
|
2355 |
margin-left:17px;
|
2356 |
}
|
2357 |
|
2358 |
+
.pagelayer-widget-group,
|
2359 |
.pagelayer-leftbar-group{
|
2360 |
width: 100%;
|
2361 |
background-repeat: no-repeat;
|
2368 |
margin-bottom: 2px;
|
2369 |
}
|
2370 |
|
2371 |
+
.pagelayer-widget-group h5,
|
2372 |
.pagelayer-leftbar-group h5{
|
2373 |
font-size: 11px;
|
2374 |
line-height: 20px;
|
2385 |
font-size: 14px;
|
2386 |
}
|
2387 |
|
2388 |
+
.pagelayer-shortcode-holder,
|
2389 |
+
.pagelayer-shortcode-drag{
|
2390 |
width: 100px !important;
|
2391 |
height:67px !important;
|
2392 |
margin-bottom:12px;
|
2403 |
box-shadow:0 0.5rem 1rem #00000026;
|
2404 |
}
|
2405 |
|
2406 |
+
.pagelayer-shortcode-holder:hover,
|
2407 |
.pagelayer-shortcode-drag:hover{
|
2408 |
transform: scale(1.06);
|
2409 |
}
|
3867 |
.pagelayer-dark .pagelayer-elp-postdate-div .pagelayer-elp-postdate::-webkit-calendar-picker-indicator{
|
3868 |
filter: invert(70%);
|
3869 |
}
|
3870 |
+
/* Pagelayer post props(tags) end */
|
3871 |
+
/* Pagelayer widget list tooltip start*/
|
3872 |
+
|
3873 |
+
.pagelayer-widget-tooltip{
|
3874 |
+
position: fixed;
|
3875 |
+
top: 0;
|
3876 |
+
left: 0;
|
3877 |
+
background: #fff;
|
3878 |
+
width: 300px;
|
3879 |
+
max-height: 350px;
|
3880 |
+
min-height: 125px;
|
3881 |
+
height: 100%;
|
3882 |
+
overflow-y: auto;
|
3883 |
+
box-shadow: 0 2px 6px rgb(0 0 0 / 5%);
|
3884 |
+
border-radius: 2px;
|
3885 |
+
display: none;
|
3886 |
+
z-index: 999;
|
3887 |
+
}
|
3888 |
+
|
3889 |
+
.pagelayer-widget-search-holder{
|
3890 |
+
position: sticky;
|
3891 |
+
top: 0;
|
3892 |
+
padding: 10px 10%;
|
3893 |
+
z-index: 1;
|
3894 |
+
background: #fff;
|
3895 |
+
}
|
3896 |
+
|
3897 |
+
.pagelayer-widget-search{
|
3898 |
+
position: relative;
|
3899 |
+
}
|
3900 |
+
|
3901 |
+
.pagelayer-pointer.pagelayer-shortcode-text,
|
3902 |
+
.pagelayer-pointer.pagelayer-sc{
|
3903 |
+
cursor: pointer !important;
|
3904 |
+
}
|
3905 |
+
|
3906 |
+
.pagelayer-widget-tooltip .pagelayer-search-field{
|
3907 |
+
border: 2px solid;
|
3908 |
+
}
|
3909 |
+
|
3910 |
+
.pagelayer-widget-tooltip .pagelayer-shortcode-holder{
|
3911 |
+
width: 70px !important;
|
3912 |
+
}
|
3913 |
+
|
3914 |
+
.pagelayer-widget-list-tooltip{
|
3915 |
+
width: 150px !important;
|
3916 |
+
padding: 0px 10px;
|
3917 |
+
}
|
3918 |
+
|
3919 |
+
.pagelayer-shortcode-holder[pagelayer-tag="pl_row"],
|
3920 |
+
.pagelayer-shortcode-holder[pagelayer-tag="pl_col"],
|
3921 |
+
.pagelayer-widget-list-tooltip .pagelayer-widget-group h5,
|
3922 |
+
.pagelayer-widget-list-tooltip .pagelayer-widget-search-holder{
|
3923 |
+
display:none !important;
|
3924 |
+
}
|
3925 |
+
|
3926 |
+
.pagelayer-widget-list-tooltip .pagelayer-shortcode{
|
3927 |
+
width: 24px;
|
3928 |
+
height: 16px;
|
3929 |
+
font-size: 14px;
|
3930 |
+
text-align: left;
|
3931 |
+
}
|
3932 |
+
|
3933 |
+
.pagelayer-widget-list-tooltip .pagelayer-shortcode-holder{
|
3934 |
+
width: 100% !important;
|
3935 |
+
height: auto !important;
|
3936 |
+
float: unset;
|
3937 |
+
margin: 0px;
|
3938 |
+
}
|
3939 |
+
|
3940 |
+
.pagelayer-widget-list-tooltip .pagelayer-sc{
|
3941 |
+
display: flex;
|
3942 |
+
align-items: center;
|
3943 |
+
}
|
3944 |
+
|
3945 |
+
.pagelayer-widget-list-tooltip .pagelayer-shortcode-text{
|
3946 |
+
text-align: left;
|
3947 |
+
}
|
3948 |
+
|
3949 |
+
.pagelayer-widget-list-tooltip .pagelayer-shortcode-inner{
|
3950 |
+
height: auto;
|
3951 |
+
width: 22px;
|
3952 |
+
}
|
3953 |
+
|
3954 |
+
/* Pagelayer widget list tooltip end*/
|
@@ -189,15 +189,22 @@ width: 16px;
|
|
189 |
content: attr(data-value);
|
190 |
}
|
191 |
|
192 |
-
.pagelayer-pen-link-tooltip{
|
193 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
194 |
}
|
195 |
|
196 |
.pagelayer-pen-unlink-btn,
|
197 |
.pagelayer-pen-link-btn{
|
198 |
-
padding:
|
199 |
-
color: #007bff !important;
|
200 |
cursor: pointer;
|
|
|
|
|
201 |
}
|
202 |
|
203 |
/* End Dropdown picker*/
|
@@ -230,6 +237,8 @@ width: 100%;
|
|
230 |
height: calc(100% - 50px);
|
231 |
border-radius: 0;
|
232 |
padding: 10px;
|
|
|
|
|
233 |
}
|
234 |
|
235 |
.pagelayer-pen-html-viewer .pagelayer-pen-html-btn{
|
189 |
content: attr(data-value);
|
190 |
}
|
191 |
|
192 |
+
.pagelayer-pen-link-tooltip > *{
|
193 |
+
margin:0 2px;
|
194 |
+
}
|
195 |
+
|
196 |
+
.pagelayer-pen-link-tooltip input{
|
197 |
+
min-width: 300px;
|
198 |
+
font-size: 13px;
|
199 |
+
padding: 5px;
|
200 |
}
|
201 |
|
202 |
.pagelayer-pen-unlink-btn,
|
203 |
.pagelayer-pen-link-btn{
|
204 |
+
padding: 7px;
|
|
|
205 |
cursor: pointer;
|
206 |
+
border-radius: 4px;
|
207 |
+
font-size: 13px;
|
208 |
}
|
209 |
|
210 |
/* End Dropdown picker*/
|
237 |
height: calc(100% - 50px);
|
238 |
border-radius: 0;
|
239 |
padding: 10px;
|
240 |
+
font-family: courier, courier new, serif;
|
241 |
+
line-height: 1.5;
|
242 |
}
|
243 |
|
244 |
.pagelayer-pen-html-viewer .pagelayer-pen-html-btn{
|
@@ -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.5.
|
9 |
define('PAGELAYER_DIR', dirname(PAGELAYER_FILE));
|
10 |
define('PAGELAYER_SLUG', 'pagelayer');
|
11 |
define('PAGELAYER_URL', plugins_url('', PAGELAYER_FILE));
|
@@ -760,12 +760,18 @@ function pagelayer_global_styles(){
|
|
760 |
.pagelayer-hide-tablet{
|
761 |
display:none !important;
|
762 |
}
|
|
|
|
|
|
|
763 |
}
|
764 |
|
765 |
@media (max-width: '.$pagelayer->settings['mobile_breakpoint'].'px){
|
766 |
.pagelayer-hide-mobile{
|
767 |
display:none !important;
|
768 |
}
|
|
|
|
|
|
|
769 |
}'.PHP_EOL;
|
770 |
|
771 |
}
|
5 |
|
6 |
define('PAGELAYER_BASE', plugin_basename(PAGELAYER_FILE));
|
7 |
define('PAGELAYER_PRO_BASE', 'pagelayer-pro/pagelayer-pro.php');
|
8 |
+
define('PAGELAYER_VERSION', '1.5.5');
|
9 |
define('PAGELAYER_DIR', dirname(PAGELAYER_FILE));
|
10 |
define('PAGELAYER_SLUG', 'pagelayer');
|
11 |
define('PAGELAYER_URL', plugins_url('', PAGELAYER_FILE));
|
760 |
.pagelayer-hide-tablet{
|
761 |
display:none !important;
|
762 |
}
|
763 |
+
.pagelayer-wp-menu-holder[data-drop_breakpoint="tablet"] .pagelayer-wp_menu-ul{
|
764 |
+
display:none;
|
765 |
+
}
|
766 |
}
|
767 |
|
768 |
@media (max-width: '.$pagelayer->settings['mobile_breakpoint'].'px){
|
769 |
.pagelayer-hide-mobile{
|
770 |
display:none !important;
|
771 |
}
|
772 |
+
.pagelayer-wp-menu-holder[data-drop_breakpoint="mobile"] .pagelayer-wp_menu-ul{
|
773 |
+
display:none;
|
774 |
+
}
|
775 |
}'.PHP_EOL;
|
776 |
|
777 |
}
|
@@ -89,8 +89,11 @@ function pagelayer_start(){
|
|
89 |
pagelayer_bottombar();
|
90 |
|
91 |
// Make the Leftbar
|
92 |
-
pagelayer_leftbar();
|
93 |
-
|
|
|
|
|
|
|
94 |
// Add widget section
|
95 |
pagelayer_add_widget();
|
96 |
|
@@ -1144,14 +1147,15 @@ function pagelayer_empty_col(selector){
|
|
1144 |
jEle.append('<div class="pagelayer-add-ele pagelayer-ele-wrap"><i class="fas fa-plus"></i><br /><span>Empty column please Drag Widgets</span></div>');
|
1145 |
//var h = jEle.parent().parent().children('.pagelayer-ele-overlay').height();
|
1146 |
//jEle.children('.pagelayer-add-ele').height(h);
|
1147 |
-
jEle.find('>.pagelayer-add-ele .
|
1148 |
-
jEle.find('>.pagelayer-add-ele .
|
1149 |
event.stopPropagation();
|
1150 |
pagelayer.$$('.pagelayer-elpd-close').click();
|
1151 |
|
1152 |
// Show left bar
|
1153 |
pagelayer.$$('.pagelayer-leftbar-table').removeClass('pagelayer-leftbar-hidden pagelayer-leftbar-minimize');
|
1154 |
|
|
|
1155 |
});
|
1156 |
|
1157 |
// Any add ele sign with non-empty columns here ?
|
@@ -1576,6 +1580,9 @@ function pagelayer_element_clicked(selector, e){
|
|
1576 |
pagelayer_make_editable(jQuery(this), e);
|
1577 |
});
|
1578 |
|
|
|
|
|
|
|
1579 |
// Show left bar
|
1580 |
pagelayer.$$('.pagelayer-leftbar-table').removeClass('pagelayer-leftbar-hidden pagelayer-leftbar-minimize');
|
1581 |
|
@@ -1592,6 +1599,33 @@ function pagelayer_element_clicked(selector, e){
|
|
1592 |
|
1593 |
}
|
1594 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1595 |
// The edit option
|
1596 |
function pagelayer_edit_element(selector){
|
1597 |
pagelayer_element_clicked(selector);
|
@@ -1746,6 +1780,12 @@ function pagelayer_element_setup(selector, render){
|
|
1746 |
|
1747 |
// Append to the child
|
1748 |
overlay.append(html);
|
|
|
|
|
|
|
|
|
|
|
|
|
1749 |
jQuery('[pagelayer-option-id='+id+']').hide();
|
1750 |
|
1751 |
// Setup the HOVER events ABD create WRAPS IF we dont have a parent
|
@@ -2162,29 +2202,31 @@ pagelayer.gDocument.keydown(function(event){
|
|
2162 |
return caretOffset;
|
2163 |
}
|
2164 |
|
2165 |
-
|
|
|
|
|
2166 |
return;
|
2167 |
}
|
2168 |
|
2169 |
//event.preventDefault();
|
2170 |
-
var html = editable
|
2171 |
-
html = jQuery('<div>').append(html).html();
|
2172 |
editable.blur();
|
2173 |
prev.children('.pagelayer-ele').click();
|
2174 |
-
|
2175 |
-
var prevArea = prev.find('[pagelayer-editable="text"]');
|
2176 |
prevArea.click();
|
2177 |
|
2178 |
var newSel = window.getSelection();
|
2179 |
var newRange = newSel.getRangeAt(0);
|
2180 |
-
|
2181 |
-
var lastChild = prevArea.children().last();
|
2182 |
|
2183 |
prevArea.append(html);
|
2184 |
prevArea.trigger('input');
|
2185 |
|
2186 |
-
if(lastChild.length > 0
|
2187 |
-
|
|
|
|
|
|
|
|
|
2188 |
}
|
2189 |
|
2190 |
newRange.collapse(true);
|
@@ -6252,3 +6294,213 @@ function pagelayer_length(mixed_var) {
|
|
6252 |
|
6253 |
return length;
|
6254 |
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
pagelayer_bottombar();
|
90 |
|
91 |
// Make the Leftbar
|
92 |
+
pagelayer_leftbar();
|
93 |
+
|
94 |
+
// Make widget list toolbar
|
95 |
+
pagelayer_create_widget_tooltip();
|
96 |
+
|
97 |
// Add widget section
|
98 |
pagelayer_add_widget();
|
99 |
|
1147 |
jEle.append('<div class="pagelayer-add-ele pagelayer-ele-wrap"><i class="fas fa-plus"></i><br /><span>Empty column please Drag Widgets</span></div>');
|
1148 |
//var h = jEle.parent().parent().children('.pagelayer-ele-overlay').height();
|
1149 |
//jEle.children('.pagelayer-add-ele').height(h);
|
1150 |
+
jEle.find('>.pagelayer-add-ele .fas').unbind('click');
|
1151 |
+
jEle.find('>.pagelayer-add-ele .fas').on('click', function(event){
|
1152 |
event.stopPropagation();
|
1153 |
pagelayer.$$('.pagelayer-elpd-close').click();
|
1154 |
|
1155 |
// Show left bar
|
1156 |
pagelayer.$$('.pagelayer-leftbar-table').removeClass('pagelayer-leftbar-hidden pagelayer-leftbar-minimize');
|
1157 |
|
1158 |
+
pagelayer_show_widget_list(jQuery(this));
|
1159 |
});
|
1160 |
|
1161 |
// Any add ele sign with non-empty columns here ?
|
1580 |
pagelayer_make_editable(jQuery(this), e);
|
1581 |
});
|
1582 |
|
1583 |
+
// Use text widget for search widget
|
1584 |
+
pagelayer_search_widgets(jEle);
|
1585 |
+
|
1586 |
// Show left bar
|
1587 |
pagelayer.$$('.pagelayer-leftbar-table').removeClass('pagelayer-leftbar-hidden pagelayer-leftbar-minimize');
|
1588 |
|
1599 |
|
1600 |
}
|
1601 |
|
1602 |
+
// Use text widget for search widget
|
1603 |
+
function pagelayer_search_widgets(jEle){
|
1604 |
+
|
1605 |
+
var tag = pagelayer_tag(jEle);
|
1606 |
+
|
1607 |
+
if(tag !='pl_heading'){
|
1608 |
+
return;
|
1609 |
+
}
|
1610 |
+
|
1611 |
+
jEle.find('[pagelayer-editable="text"]').off('input.search_widgets');
|
1612 |
+
jEle.find('[pagelayer-editable="text"]').on('input.search_widgets', function(){
|
1613 |
+
|
1614 |
+
var tEle = jQuery(this);
|
1615 |
+
var val = tEle.text();
|
1616 |
+
|
1617 |
+
if(val.charAt(0) == "/"){
|
1618 |
+
val = val.replace('/', '');
|
1619 |
+
pagelayer_show_widget_list(tEle, val);
|
1620 |
+
}else if(pagelayer.$$('.pagelayer-widget-tooltip').is(':visible')){
|
1621 |
+
// Hide Widget list
|
1622 |
+
pagelayer.gDocument.trigger('mousedown.pagelayer_wdlist');
|
1623 |
+
}
|
1624 |
+
|
1625 |
+
});
|
1626 |
+
|
1627 |
+
}
|
1628 |
+
|
1629 |
// The edit option
|
1630 |
function pagelayer_edit_element(selector){
|
1631 |
pagelayer_element_clicked(selector);
|
1780 |
|
1781 |
// Append to the child
|
1782 |
overlay.append(html);
|
1783 |
+
|
1784 |
+
// Add shortcode icon
|
1785 |
+
if(tag != 'pl_row' && tag != 'pl_col'){
|
1786 |
+
overlay.append('<span class="pagelayer-shortcode-plus" onclick="event.stopPropagation();pagelayer_show_widget_list(this);"><i class="fas fa-plus"></i></span>');
|
1787 |
+
}
|
1788 |
+
|
1789 |
jQuery('[pagelayer-option-id='+id+']').hide();
|
1790 |
|
1791 |
// Setup the HOVER events ABD create WRAPS IF we dont have a parent
|
2202 |
return caretOffset;
|
2203 |
}
|
2204 |
|
2205 |
+
var prevArea = prev.find('[pagelayer-editable="text"]');
|
2206 |
+
|
2207 |
+
if( getCaretCharacterOffsetWithin(editable[0]) != 0 || prevArea.length < 1){
|
2208 |
return;
|
2209 |
}
|
2210 |
|
2211 |
//event.preventDefault();
|
2212 |
+
var html = editable.html();
|
|
|
2213 |
editable.blur();
|
2214 |
prev.children('.pagelayer-ele').click();
|
|
|
|
|
2215 |
prevArea.click();
|
2216 |
|
2217 |
var newSel = window.getSelection();
|
2218 |
var newRange = newSel.getRangeAt(0);
|
2219 |
+
var lastChild = jQuery(prevArea[0].lastChild);
|
|
|
2220 |
|
2221 |
prevArea.append(html);
|
2222 |
prevArea.trigger('input');
|
2223 |
|
2224 |
+
if(lastChild.length > 0){
|
2225 |
+
if(lastChild[0].nextSibling != null){
|
2226 |
+
newRange.setStart(lastChild[0].nextSibling, 0);
|
2227 |
+
}else{
|
2228 |
+
newRange.setStartAfter(lastChild[0]);
|
2229 |
+
}
|
2230 |
}
|
2231 |
|
2232 |
newRange.collapse(true);
|
6294 |
|
6295 |
return length;
|
6296 |
};
|
6297 |
+
|
6298 |
+
// Create Widget list dropdown
|
6299 |
+
function pagelayer_create_widget_tooltip(){
|
6300 |
+
|
6301 |
+
var html = '<div class="pagelayer-widget-tooltip">'+
|
6302 |
+
'<div class="pagelayer-widget-search-holder">'+
|
6303 |
+
'<div class="pagelayer-widget-search">'+
|
6304 |
+
'<i class="pli pli-search" ></i><input class="pagelayer-search-field" /><span class="pagelayer-sf-empty pli">×</span>'+
|
6305 |
+
'</div>'+
|
6306 |
+
'</div>';
|
6307 |
+
|
6308 |
+
for(var x in pagelayer_groups){
|
6309 |
+
|
6310 |
+
// Title
|
6311 |
+
html += '<div class="pagelayer-widget-group pagelayer-group-name-'+x+'"><h5>'+x+'</h5>';
|
6312 |
+
|
6313 |
+
// Indivdual icon
|
6314 |
+
for(var y in pagelayer_groups[x]){
|
6315 |
+
|
6316 |
+
var sc = pagelayer_groups[x][y];
|
6317 |
+
|
6318 |
+
if(!(sc in pagelayer_shortcodes) || 'not_visible' in pagelayer_shortcodes[sc]){
|
6319 |
+
continue;
|
6320 |
+
}
|
6321 |
+
|
6322 |
+
html += '<div class="pagelayer-shortcode-holder" pagelayer-tag="'+sc+'">'+
|
6323 |
+
'<div class="pagelayer-pointer pagelayer-sc">'+
|
6324 |
+
'<center class="pagelayer-shortcode-inner">';
|
6325 |
+
|
6326 |
+
if('icon' in pagelayer_shortcodes[sc]){
|
6327 |
+
html += '<i class="pagelayer-shortcode '+pagelayer_shortcodes[sc]['icon']+'"></i>';
|
6328 |
+
}else{
|
6329 |
+
html += '<i class="pagelayer-shortcode pli pagelayer-'+sc+'"></i>';
|
6330 |
+
}
|
6331 |
+
|
6332 |
+
html += '</center>'+
|
6333 |
+
'<span class="pagelayer-pointer pagelayer-shortcode-text">'+pagelayer_shortcodes[sc]['name']+'</span>'+
|
6334 |
+
'</div>'+
|
6335 |
+
'</div>';
|
6336 |
+
|
6337 |
+
}
|
6338 |
+
|
6339 |
+
html += '</div>';
|
6340 |
+
|
6341 |
+
}
|
6342 |
+
|
6343 |
+
html += '</div>';
|
6344 |
+
|
6345 |
+
pagelayer.$$('body').append(html);
|
6346 |
+
|
6347 |
+
var wdHolder = pagelayer.$$('.pagelayer-widget-tooltip');
|
6348 |
+
|
6349 |
+
// Hide the ones which are not supposed to be shown
|
6350 |
+
wdHolder.find('.pagelayer-search-field').on('input', function(){
|
6351 |
+
|
6352 |
+
var val = jQuery(this).val();
|
6353 |
+
var re = new RegExp(val, 'i');
|
6354 |
+
|
6355 |
+
// Show only the required tags
|
6356 |
+
wdHolder.find('.pagelayer-widget-group').each(function(){
|
6357 |
+
|
6358 |
+
var group = jQuery(this);
|
6359 |
+
var res = group.find('[pagelayer-tag]');
|
6360 |
+
var hidden = 0;
|
6361 |
+
|
6362 |
+
res.each(function(){
|
6363 |
+
|
6364 |
+
var tEle = jQuery(this);
|
6365 |
+
if(tEle.find('.pagelayer-shortcode-text').html().match(re)){
|
6366 |
+
tEle.show();
|
6367 |
+
}else{
|
6368 |
+
hidden += 1;
|
6369 |
+
tEle.hide();
|
6370 |
+
}
|
6371 |
+
|
6372 |
+
});
|
6373 |
+
|
6374 |
+
// Hide the whole group
|
6375 |
+
if(hidden == res.length){
|
6376 |
+
group.hide();
|
6377 |
+
}else{
|
6378 |
+
group.show();
|
6379 |
+
}
|
6380 |
+
|
6381 |
+
});
|
6382 |
+
|
6383 |
+
});
|
6384 |
+
|
6385 |
+
// On click search empty
|
6386 |
+
wdHolder.find('.pagelayer-widget-search>.pagelayer-sf-empty').click(function(){
|
6387 |
+
wdHolder.find('.pagelayer-search-field').val('').trigger('input');
|
6388 |
+
});
|
6389 |
+
|
6390 |
+
pagelayer.gDocument.on('mousedown.pagelayer_wdlist', function(e){
|
6391 |
+
var target = jQuery(e.target);
|
6392 |
+
|
6393 |
+
if(target.closest('.pagelayer-widget-tooltip').is(wdHolder)){
|
6394 |
+
return;
|
6395 |
+
}
|
6396 |
+
|
6397 |
+
wdHolder.hide();
|
6398 |
+
jQuery(window).off('scroll.pagelayer_wdlist resize.pagelayer_wdlist');
|
6399 |
+
});
|
6400 |
+
|
6401 |
+
}
|
6402 |
+
|
6403 |
+
// Show Widget list dropdown
|
6404 |
+
function pagelayer_show_widget_list(jEle, val){
|
6405 |
+
|
6406 |
+
val = val || '';
|
6407 |
+
jEle = jQuery(jEle);
|
6408 |
+
|
6409 |
+
var wEle = pagelayer.$$('.pagelayer-widget-tooltip'),
|
6410 |
+
bounds = jEle[0].getBoundingClientRect(),
|
6411 |
+
winH = jQuery(window).height(),
|
6412 |
+
iOffset = pagelayer.$$('#pagelayer-iframe').offset(),
|
6413 |
+
style = {},
|
6414 |
+
wTop = 'auto',
|
6415 |
+
wBottom = 'auto',
|
6416 |
+
wHeight = '';
|
6417 |
+
|
6418 |
+
var search_val = function(_val){
|
6419 |
+
wEle.find('.pagelayer-search-field').val(_val);
|
6420 |
+
wEle.find('.pagelayer-search-field').trigger('input');
|
6421 |
+
}
|
6422 |
+
|
6423 |
+
style['left'] = (bounds.left + iOffset.left) - wEle.width() / 2;
|
6424 |
+
|
6425 |
+
if(winH / 2 < bounds.top + 10){
|
6426 |
+
wBottom = winH - bounds.top + 10;
|
6427 |
+
wHeight = bounds.top - 10;
|
6428 |
+
}else{
|
6429 |
+
wTop = bounds.bottom + 10;
|
6430 |
+
wHeight = winH - bounds.bottom - 10;
|
6431 |
+
}
|
6432 |
+
|
6433 |
+
style['top'] = wTop;
|
6434 |
+
style['bottom'] = wBottom;
|
6435 |
+
style['max-height'] = '';
|
6436 |
+
|
6437 |
+
if(wHeight < 350){
|
6438 |
+
style['max-height'] = wHeight;
|
6439 |
+
}
|
6440 |
+
|
6441 |
+
if(val){
|
6442 |
+
search_val(val);
|
6443 |
+
}else{
|
6444 |
+
search_val();
|
6445 |
+
}
|
6446 |
+
|
6447 |
+
wEle.closest('.pagelayer-widget-tooltip').show();
|
6448 |
+
wEle.css(style);
|
6449 |
+
|
6450 |
+
jQuery(window).off('scroll.pagelayer_wdlist resize.pagelayer_wdlist');
|
6451 |
+
jQuery(window).on('scroll.pagelayer_wdlist resize.pagelayer_wdlist', function(){
|
6452 |
+
pagelayer_show_widget_list(jEle);
|
6453 |
+
});
|
6454 |
+
|
6455 |
+
// In list view?
|
6456 |
+
if(jEle.closest('[pagelayer-editable]').length > 0){
|
6457 |
+
wEle.addClass('pagelayer-widget-list-tooltip');
|
6458 |
+
|
6459 |
+
if(wEle.find('.pagelayer-widget-group:visible').length < 1){
|
6460 |
+
// Hide Widget list
|
6461 |
+
pagelayer.gDocument.trigger('mousedown.pagelayer_wdlist');
|
6462 |
+
}
|
6463 |
+
}else{
|
6464 |
+
wEle.removeClass('pagelayer-widget-list-tooltip');
|
6465 |
+
}
|
6466 |
+
|
6467 |
+
wEle.find('.pagelayer-shortcode-holder').off('click');
|
6468 |
+
wEle.find('.pagelayer-shortcode-holder').on('click', function(e){
|
6469 |
+
|
6470 |
+
var tag = jQuery(this).attr('pagelayer-tag');
|
6471 |
+
var mWrap = jEle.closest('.pagelayer-ele-wrap[pagelayer-wrap-id]');
|
6472 |
+
var mTag = pagelayer_tag(mWrap);
|
6473 |
+
|
6474 |
+
var ele = jQuery('<div pagelayer-tag="'+tag+'"></div>');
|
6475 |
+
|
6476 |
+
// Is col?
|
6477 |
+
if(mTag == 'pl_col'){
|
6478 |
+
var colHolder = mWrap.find('>.pagelayer-col > .pagelayer-col-holder');
|
6479 |
+
colHolder.append(ele);
|
6480 |
+
pagelayer_empty_col(colHolder);
|
6481 |
+
}else{
|
6482 |
+
mWrap.after(ele);
|
6483 |
+
}
|
6484 |
+
|
6485 |
+
// Replace widegt
|
6486 |
+
if(jEle.closest('[pagelayer-editable]').length > 0){
|
6487 |
+
pagelayer_delete_element(mWrap.find('>.pagelayer-ele'));
|
6488 |
+
}
|
6489 |
+
|
6490 |
+
var eleId = pagelayer_onadd(ele, false);
|
6491 |
+
var eEle = pagelayer_ele_by_id(eleId);
|
6492 |
+
|
6493 |
+
// Create Column
|
6494 |
+
if( tag == 'pl_inner_row' ){
|
6495 |
+
var in_col = jQuery('<div pagelayer-tag="pl_col"></div>');
|
6496 |
+
eEle.find('>.pagelayer-row-holder').append(in_col);
|
6497 |
+
var in_col_id = pagelayer_onadd(in_col, false);
|
6498 |
+
}
|
6499 |
+
|
6500 |
+
eEle.click();
|
6501 |
+
|
6502 |
+
// Hide Widget list
|
6503 |
+
pagelayer.gDocument.trigger('mousedown.pagelayer_wdlist');
|
6504 |
+
});
|
6505 |
+
|
6506 |
+
}
|
@@ -129,7 +129,7 @@ class PagelayerPen{
|
|
129 |
},
|
130 |
align:{
|
131 |
style: 'text-align',
|
132 |
-
fn: '
|
133 |
icon: {
|
134 |
'left': '<i class="fas fa-align-left"></i>',
|
135 |
'center': '<i class="fas fa-align-center"></i>',
|
@@ -500,6 +500,248 @@ class PagelayerPen{
|
|
500 |
|
501 |
}
|
502 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
503 |
semanticCode(){
|
504 |
var t = this;
|
505 |
t.semanticTag('b');
|
@@ -526,14 +768,8 @@ class PagelayerPen{
|
|
526 |
if($oldTag.contents().length === 0) {
|
527 |
return false;
|
528 |
}
|
529 |
-
|
530 |
-
$oldTag
|
531 |
-
if (copyAttributes) {
|
532 |
-
jQuery.each($oldTag.prop('attributes'), function () {
|
533 |
-
$oldTag.parent().attr(this.name, this.value);
|
534 |
-
});
|
535 |
-
}
|
536 |
-
$oldTag.contents().unwrap();
|
537 |
});
|
538 |
}
|
539 |
|
@@ -1164,7 +1400,9 @@ class PagelayerPen{
|
|
1164 |
documentSelection = t.doc.getSelection(),
|
1165 |
node = documentSelection.focusNode,
|
1166 |
text = new XMLSerializer().serializeToString(documentSelection.getRangeAt(0).cloneContents()),
|
1167 |
-
url = ''
|
|
|
|
|
1168 |
|
1169 |
while (['A', 'DIV'].indexOf(node.nodeName) < 0) {
|
1170 |
node = node.parentNode;
|
@@ -1175,55 +1413,50 @@ class PagelayerPen{
|
|
1175 |
url = $a.attr('href');
|
1176 |
}
|
1177 |
|
|
|
|
|
|
|
|
|
|
|
1178 |
t.saveRange();
|
1179 |
|
1180 |
var tooltip = this.addContainer('pagelayer-pen-link-tooltip');
|
1181 |
t.linkTooltip = tooltip;
|
1182 |
|
1183 |
-
var html = '<input type="text" name="url" placeholder="https://example.com" value="'+url+'" autocomplete="off"><span class="pagelayer-pen-link-btn">
|
1184 |
tooltip.html(html);
|
1185 |
|
1186 |
var input = tooltip.find('input[name="url"]');
|
1187 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1188 |
t.linkTooltip.find('.pagelayer-pen-link-btn').on('click', function(){
|
1189 |
var url = input.val();
|
1190 |
|
1191 |
-
|
1192 |
-
|
1193 |
t.execCmd('createLink', url, true );
|
1194 |
t.editor.trigger('input');
|
1195 |
t.showPen();
|
1196 |
});
|
1197 |
|
1198 |
t.linkTooltip.find('.pagelayer-pen-unlink-btn').on('click', function(){
|
1199 |
-
|
1200 |
-
|
|
|
|
|
1201 |
t.showPen();
|
1202 |
});
|
1203 |
|
1204 |
t.showPen(t.linkTooltip);
|
1205 |
}
|
1206 |
|
1207 |
-
// TODO change this with commandHandler function
|
1208 |
-
alignHandler(val){
|
1209 |
-
var t = this;
|
1210 |
-
var cmd = 'justifyLeft';
|
1211 |
-
|
1212 |
-
switch(val){
|
1213 |
-
case 'center':
|
1214 |
-
cmd = 'justifyCenter';
|
1215 |
-
break;
|
1216 |
-
case 'right':
|
1217 |
-
cmd = 'justifyRight';
|
1218 |
-
break;
|
1219 |
-
case 'justify':
|
1220 |
-
cmd = 'justifyFull';
|
1221 |
-
break;
|
1222 |
-
}
|
1223 |
-
|
1224 |
-
t.execCmd(cmd, val, true);
|
1225 |
-
}
|
1226 |
-
|
1227 |
imageBtnHandler(){
|
1228 |
var t = this;
|
1229 |
t.destroyEd = false;
|
129 |
},
|
130 |
align:{
|
131 |
style: 'text-align',
|
132 |
+
fn: 'formatBlock',
|
133 |
icon: {
|
134 |
'left': '<i class="fas fa-align-left"></i>',
|
135 |
'center': '<i class="fas fa-align-center"></i>',
|
500 |
|
501 |
}
|
502 |
|
503 |
+
formatBlock(value){
|
504 |
+
|
505 |
+
var t = this,
|
506 |
+
format = t.currentFormat,
|
507 |
+
btn = t.handlers[format],
|
508 |
+
startNode = t.range.startContainer,
|
509 |
+
endNode = t.range.endContainer;
|
510 |
+
|
511 |
+
if( startNode.nodeType == Node.TEXT_NODE && startNode.parentNode != t.editor[0] ){
|
512 |
+
startNode = startNode.parentNode;
|
513 |
+
}
|
514 |
+
|
515 |
+
if( endNode.nodeType == Node.TEXT_NODE && endNode.parentNode != t.editor[0] ){
|
516 |
+
endNode = endNode.parentNode;
|
517 |
+
}
|
518 |
+
|
519 |
+
// TODO: only for seleced content
|
520 |
+
// Wrap text nodes in span for easier processing
|
521 |
+
t.editor.contents().filter(function () {
|
522 |
+
return this.nodeType === 3 && this.nodeValue.trim().length > 0;
|
523 |
+
}).wrap('<span data-pts/>');
|
524 |
+
|
525 |
+
var isLineEnd = function(lEle){
|
526 |
+
return lEle == null || lEle.nodeName == 'BR' || t.isline(lEle);
|
527 |
+
}
|
528 |
+
|
529 |
+
var wrapLine = function(pLine){
|
530 |
+
|
531 |
+
var pLine = jQuery(pLine),
|
532 |
+
lineFele,
|
533 |
+
lineEele,
|
534 |
+
finalP;
|
535 |
+
|
536 |
+
// Get Parent Element
|
537 |
+
if(pLine.parentsUntil(t.editor).length > 0){
|
538 |
+
pLine = pLine.parentsUntil(t.editor).last();
|
539 |
+
}
|
540 |
+
|
541 |
+
if(t.isline(pLine)){
|
542 |
+
return pLine;
|
543 |
+
}
|
544 |
+
|
545 |
+
// Get line first element
|
546 |
+
if(isLineEnd(pLine[0].previousSibling)){
|
547 |
+
lineFele = pLine;
|
548 |
+
}else{
|
549 |
+
lineFele = pLine.prevAll().filter(function(){
|
550 |
+
return isLineEnd(this.previousSibling);
|
551 |
+
}).first();
|
552 |
+
}
|
553 |
+
|
554 |
+
// Get line last element
|
555 |
+
if(isLineEnd(lineFele[0].nextSibling)){
|
556 |
+
lineEele = lineFele;
|
557 |
+
}else{
|
558 |
+
lineEele = lineFele.nextAll().filter(function(){
|
559 |
+
return isLineEnd(this.nextSibling);
|
560 |
+
}).first();
|
561 |
+
}
|
562 |
+
|
563 |
+
// Wrap all with p tag
|
564 |
+
if(lineFele.is(lineEele)){
|
565 |
+
finalP = lineFele.wrap('<p/>').parent()
|
566 |
+
}else{
|
567 |
+
finalP = lineFele.nextUntil(lineEele.next()).addBack().wrapAll('<p/>').parent();
|
568 |
+
}
|
569 |
+
|
570 |
+
finalP.next('br').remove();
|
571 |
+
return finalP;
|
572 |
+
}
|
573 |
+
|
574 |
+
// Get start block lavel elements
|
575 |
+
var $sNode = jQuery(t.blockNode(startNode));
|
576 |
+
if($sNode.is(t.editor)){
|
577 |
+
$sNode = wrapLine(startNode);
|
578 |
+
}
|
579 |
+
|
580 |
+
var $eNode = jQuery(t.blockNode(endNode));
|
581 |
+
if($eNode.is(t.editor)){
|
582 |
+
$eNode = wrapLine(endNode);
|
583 |
+
}
|
584 |
+
|
585 |
+
var $oldEle = $sNode;
|
586 |
+
|
587 |
+
if(! $sNode.is($eNode) ){
|
588 |
+
|
589 |
+
var findEnd = false;
|
590 |
+
|
591 |
+
var addElement = function(addEle){
|
592 |
+
if(addEle[0].nodeName == 'UL' || addEle[0].nodeName == 'OL') {
|
593 |
+
addEle.children().each(function(){
|
594 |
+
$oldEle = $oldEle.add(jQuery(this));
|
595 |
+
});
|
596 |
+
return;
|
597 |
+
}
|
598 |
+
$oldEle = $oldEle.add(addEle);
|
599 |
+
}
|
600 |
+
|
601 |
+
var wrapAllEle = function(nextEle){
|
602 |
+
|
603 |
+
if(nextEle.is($eNode) || nextEle.find($eNode).length > 0){
|
604 |
+
findEnd = true;
|
605 |
+
return;
|
606 |
+
}
|
607 |
+
|
608 |
+
if(nextEle.length < 1){
|
609 |
+
return;
|
610 |
+
}
|
611 |
+
|
612 |
+
if(!t.isline(nextEle[0])){
|
613 |
+
nextEle = wrapLine(nextEle);
|
614 |
+
}
|
615 |
+
|
616 |
+
addElement(nextEle);
|
617 |
+
wrapAllEle( nextEle.next() );
|
618 |
+
}
|
619 |
+
|
620 |
+
wrapAllEle($sNode.next());
|
621 |
+
|
622 |
+
// Is start Element have a another parent
|
623 |
+
var pars = $sNode.parentsUntil(t.editor);
|
624 |
+
|
625 |
+
pars.each(function(){
|
626 |
+
var $par = jQuery(this);
|
627 |
+
wrapAllEle($par.next());
|
628 |
+
});
|
629 |
+
|
630 |
+
if( pars.length > 0 ){
|
631 |
+
$sNode = pars.last();
|
632 |
+
}
|
633 |
+
|
634 |
+
var nextEnd = $sNode.nextAll().filter(function(){
|
635 |
+
return jQuery(this).is($eNode) || jQuery(this).find($eNode).length > 0;
|
636 |
+
}).first();
|
637 |
+
|
638 |
+
// Add elements
|
639 |
+
if( nextEnd.length > 0 ){
|
640 |
+
var $nextEle = $sNode.nextUntil(nextEnd);
|
641 |
+
$nextEle.each(function(){
|
642 |
+
var ulEle = jQuery(this);
|
643 |
+
if($oldEle.has(ulEle)) return;
|
644 |
+
addElement(ulEle);
|
645 |
+
});
|
646 |
+
}
|
647 |
+
|
648 |
+
// Add end element
|
649 |
+
if(nextEnd.length > 0 && !nextEnd.is($eNode) && (nextEnd[0].nodeName == 'UL' || nextEnd[0].nodeName == 'OL')){
|
650 |
+
nextEnd.children().each(function(){
|
651 |
+
var li = jQuery(this);
|
652 |
+
$oldEle = $oldEle.add(li);
|
653 |
+
if(li.is($eNode) || li.find($eNode).length > 0) return false;
|
654 |
+
});
|
655 |
+
}else{
|
656 |
+
$oldEle = $oldEle.add($eNode);
|
657 |
+
}
|
658 |
+
}
|
659 |
+
|
660 |
+
if('style' in btn){
|
661 |
+
var style = {};
|
662 |
+
style[btn.style] = value;
|
663 |
+
|
664 |
+
$oldEle.css(style);
|
665 |
+
}else if('atts' in btn){
|
666 |
+
// Add attribute or toggle the element
|
667 |
+
var attr = {};
|
668 |
+
attr[btn.atts] = value;
|
669 |
+
|
670 |
+
$oldEle.attr(attr);
|
671 |
+
}else{
|
672 |
+
// Replace tag
|
673 |
+
var tag = value.toLowerCase();
|
674 |
+
|
675 |
+
// need to find all block ele and replace this
|
676 |
+
$oldEle.each( function(){
|
677 |
+
|
678 |
+
var $cEle = jQuery(this);
|
679 |
+
|
680 |
+
if($cEle.is(t.editor)){
|
681 |
+
return;
|
682 |
+
}
|
683 |
+
|
684 |
+
// Is List element
|
685 |
+
if($cEle.css('display') == 'list-item'){
|
686 |
+
if( t.isline($cEle[0].firstChild)){
|
687 |
+
$cEle.children().each(function(){
|
688 |
+
var liChild = jQuery(this);
|
689 |
+
|
690 |
+
if(t.isline(liChild[0])){
|
691 |
+
t.replaceTag(liChild, tag, true);
|
692 |
+
return;
|
693 |
+
}
|
694 |
+
// TODO: Check and need to correct
|
695 |
+
liChild.wrap('<' + tag + '/>');
|
696 |
+
liChild.next('br').remove();
|
697 |
+
|
698 |
+
});
|
699 |
+
return
|
700 |
+
}
|
701 |
+
|
702 |
+
$cEle.contents().wrapAll('<' + tag + '/>');
|
703 |
+
return;
|
704 |
+
}
|
705 |
+
|
706 |
+
t.replaceTag($cEle, tag, true);
|
707 |
+
});
|
708 |
+
}
|
709 |
+
|
710 |
+
// Get rid of pen temporary span's
|
711 |
+
jQuery('[data-pts]', t.editor).contents().unwrap();
|
712 |
+
t.semanticCode();
|
713 |
+
t.restoreRange();
|
714 |
+
}
|
715 |
+
|
716 |
+
blockNode( node ){
|
717 |
+
var t = this;
|
718 |
+
while( !t.isline(node) && node != t.editor[0] ) {
|
719 |
+
node = node.parentNode;
|
720 |
+
}
|
721 |
+
return node;
|
722 |
+
}
|
723 |
+
|
724 |
+
isline(node){
|
725 |
+
if (node.nodeType !== Node.ELEMENT_NODE) return false;
|
726 |
+
if (node.childNodes.length === 0) return false; // Exclude embed blocks
|
727 |
+
var style = window.getComputedStyle(node);
|
728 |
+
return ['block', 'list-item'].indexOf(style.display) > -1;
|
729 |
+
}
|
730 |
+
|
731 |
+
replaceTag(ele, tag, copyAttr){
|
732 |
+
ele.wrap('<' + tag + '/>');
|
733 |
+
if(copyAttr){
|
734 |
+
jQuery.each(ele.prop('attributes'), function () {
|
735 |
+
par.attr(this.name, this.value);
|
736 |
+
});
|
737 |
+
}
|
738 |
+
|
739 |
+
var par = ele.parent();
|
740 |
+
ele.contents().unwrap();
|
741 |
+
|
742 |
+
return par;
|
743 |
+
}
|
744 |
+
|
745 |
semanticCode(){
|
746 |
var t = this;
|
747 |
t.semanticTag('b');
|
768 |
if($oldTag.contents().length === 0) {
|
769 |
return false;
|
770 |
}
|
771 |
+
|
772 |
+
t.replaceTag($oldTag, newTag, copyAttributes);
|
|
|
|
|
|
|
|
|
|
|
|
|
773 |
});
|
774 |
}
|
775 |
|
1400 |
documentSelection = t.doc.getSelection(),
|
1401 |
node = documentSelection.focusNode,
|
1402 |
text = new XMLSerializer().serializeToString(documentSelection.getRangeAt(0).cloneContents()),
|
1403 |
+
url = '',
|
1404 |
+
linkBtn = 'Link',
|
1405 |
+
unlinkBtn = 'Cancel';
|
1406 |
|
1407 |
while (['A', 'DIV'].indexOf(node.nodeName) < 0) {
|
1408 |
node = node.parentNode;
|
1413 |
url = $a.attr('href');
|
1414 |
}
|
1415 |
|
1416 |
+
if(!pagelayer_empty(url)){
|
1417 |
+
linkBtn = 'Update';
|
1418 |
+
unlinkBtn = 'Unlink';
|
1419 |
+
}
|
1420 |
+
|
1421 |
t.saveRange();
|
1422 |
|
1423 |
var tooltip = this.addContainer('pagelayer-pen-link-tooltip');
|
1424 |
t.linkTooltip = tooltip;
|
1425 |
|
1426 |
+
var html = '<input type="text" name="url" placeholder="https://example.com" value="'+url+'" autocomplete="off"><span class="pagelayer-pen-link-btn pagelayer-btn-success">'+linkBtn+'</span><span class="pagelayer-pen-unlink-btn pagelayer-btn-primary">'+unlinkBtn+'</span>';
|
1427 |
tooltip.html(html);
|
1428 |
|
1429 |
var input = tooltip.find('input[name="url"]');
|
1430 |
|
1431 |
+
// Keep saving old range
|
1432 |
+
var metaRange = t.metaRange;
|
1433 |
+
var savedRange = t.range;
|
1434 |
+
var restoreRange = function(){
|
1435 |
+
t.metaRange = metaRange;
|
1436 |
+
t.range = savedRange;
|
1437 |
+
t.restoreRange();
|
1438 |
+
}
|
1439 |
+
|
1440 |
t.linkTooltip.find('.pagelayer-pen-link-btn').on('click', function(){
|
1441 |
var url = input.val();
|
1442 |
|
1443 |
+
restoreRange();
|
|
|
1444 |
t.execCmd('createLink', url, true );
|
1445 |
t.editor.trigger('input');
|
1446 |
t.showPen();
|
1447 |
});
|
1448 |
|
1449 |
t.linkTooltip.find('.pagelayer-pen-unlink-btn').on('click', function(){
|
1450 |
+
restoreRange();
|
1451 |
+
if(unlinkBtn == 'Unlink'){
|
1452 |
+
t.execCmd('unlink', undefined, undefined, true);
|
1453 |
+
}
|
1454 |
t.showPen();
|
1455 |
});
|
1456 |
|
1457 |
t.showPen(t.linkTooltip);
|
1458 |
}
|
1459 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1460 |
imageBtnHandler(){
|
1461 |
var t = this;
|
1462 |
t.destroyEd = false;
|
@@ -309,6 +309,9 @@ function pagelayer_save_content(){
|
|
309 |
|
310 |
// Update the post into the database
|
311 |
$ret = wp_update_post($post, true);
|
|
|
|
|
|
|
312 |
|
313 |
if (is_wp_error($ret)) {
|
314 |
$errors = $ret->get_error_messages();
|
309 |
|
310 |
// Update the post into the database
|
311 |
$ret = wp_update_post($post, true);
|
312 |
+
|
313 |
+
// Render the post
|
314 |
+
//update_post_meta($postID, 'pagelayer_rendered_post', pagelayer_get_post_content($postID));
|
315 |
|
316 |
if (is_wp_error($ret)) {
|
317 |
$errors = $ret->get_error_messages();
|
@@ -117,7 +117,7 @@ class PageLayer{
|
|
117 |
'i' => ['name' => 'Italics', 'sel' => 'em, i'],
|
118 |
];
|
119 |
|
120 |
-
$this->system_fonts = ['Arial', 'Arial Black', 'Courier', 'Georgia', 'Helvetica', 'impact', '
|
121 |
}
|
122 |
|
123 |
function load_extra_languages(){
|
117 |
'i' => ['name' => 'Italics', 'sel' => 'em, i'],
|
118 |
];
|
119 |
|
120 |
+
$this->system_fonts = ['Arial', 'Arial Black', 'Courier', 'Georgia', 'Helvetica', 'impact', 'Tahoma', 'Times New Roman', 'Trebuchet MS', 'Verdana'];
|
121 |
}
|
122 |
|
123 |
function load_extra_languages(){
|
@@ -449,7 +449,7 @@ global $pagelayer, $pl_error, $sitepad;
|
|
449 |
//die($pagelayer_theme_path);
|
450 |
|
451 |
// Delete Old Data ?
|
452 |
-
if(isset($_POST['delete_old_import'])){
|
453 |
$args = array(
|
454 |
'post_type' => ['page', 'post', $pagelayer->builder['name']],
|
455 |
'meta_query' => array(
|
@@ -582,7 +582,33 @@ global $pagelayer, $pl_error, $sitepad;
|
|
582 |
|
583 |
foreach($_media as $k => $v){
|
584 |
$file_name = basename($v);
|
585 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
586 |
if(!empty($ret)){
|
587 |
$pagelayer->import_media['{{theme_url}}/images/'.$file_name] = $ret;
|
588 |
|
@@ -782,8 +808,16 @@ global $pagelayer, $pl_error, $sitepad;
|
|
782 |
|
783 |
$path = pagelayer_cleanpath($pagelayer_theme_path.'/data/'.$data_type.'/'.$k);
|
784 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
785 |
// Is the page there ?
|
786 |
-
$page =
|
787 |
//r_print($page);
|
788 |
|
789 |
$new_post = array();
|
@@ -796,8 +830,8 @@ global $pagelayer, $pl_error, $sitepad;
|
|
796 |
|
797 |
if(isset($_POST['overwrite'])){
|
798 |
$rev = wp_save_post_revision($page->ID);
|
799 |
-
$new_post['ID'] = $page->ID;
|
800 |
-
$insert_meta = 1;
|
801 |
}
|
802 |
|
803 |
}
|
@@ -809,6 +843,7 @@ global $pagelayer, $pl_error, $sitepad;
|
|
809 |
$new_post['post_name'] = $v['post_name'];
|
810 |
$new_post['post_type'] = $data_type;
|
811 |
$new_post['post_status'] = 'publish';
|
|
|
812 |
|
813 |
// Category register
|
814 |
if(!empty($v['taxonomies'])){
|
449 |
//die($pagelayer_theme_path);
|
450 |
|
451 |
// Delete Old Data ?
|
452 |
+
if(isset($_POST['delete_old_import']) && !isset($_POST['maintain_ids'])){
|
453 |
$args = array(
|
454 |
'post_type' => ['page', 'post', $pagelayer->builder['name']],
|
455 |
'meta_query' => array(
|
582 |
|
583 |
foreach($_media as $k => $v){
|
584 |
$file_name = basename($v);
|
585 |
+
|
586 |
+
// We are going to create a loop to find the image
|
587 |
+
for($i = 1; $i <= 3; $i++){
|
588 |
+
|
589 |
+
// Upload the image
|
590 |
+
$ret = pagelayer_upload_media($file_name, file_get_contents($v));
|
591 |
+
|
592 |
+
// Lets check the file exists ?
|
593 |
+
if(!empty($ret)){
|
594 |
+
|
595 |
+
// Lets check if the file exists
|
596 |
+
$tmp_image_path = pagelayer_cleanpath(get_attached_file($ret));
|
597 |
+
|
598 |
+
// If the file does not exist, simply delete the old upload as well
|
599 |
+
if(!file_exists($tmp_image_path)){
|
600 |
+
wp_delete_attachment($ret, true);
|
601 |
+
$ret = false;
|
602 |
+
|
603 |
+
// The image does exist and we can continue
|
604 |
+
}else{
|
605 |
+
break;
|
606 |
+
}
|
607 |
+
|
608 |
+
}
|
609 |
+
|
610 |
+
}
|
611 |
+
|
612 |
if(!empty($ret)){
|
613 |
$pagelayer->import_media['{{theme_url}}/images/'.$file_name] = $ret;
|
614 |
|
808 |
|
809 |
$path = pagelayer_cleanpath($pagelayer_theme_path.'/data/'.$data_type.'/'.$k);
|
810 |
|
811 |
+
$args = ['post_type' => $data_type,
|
812 |
+
'name' => $v['post_name'],
|
813 |
+
'post_status' => $v['post_status'],
|
814 |
+
'posts_per_page' => -1
|
815 |
+
];
|
816 |
+
|
817 |
+
$type_query = new WP_Query($args);
|
818 |
+
|
819 |
// Is the page there ?
|
820 |
+
$page = @current($type_query->posts);
|
821 |
//r_print($page);
|
822 |
|
823 |
$new_post = array();
|
830 |
|
831 |
if(isset($_POST['overwrite'])){
|
832 |
$rev = wp_save_post_revision($page->ID);
|
833 |
+
$new_post['ID'] = $page->ID;
|
834 |
+
$insert_meta = 1;
|
835 |
}
|
836 |
|
837 |
}
|
843 |
$new_post['post_name'] = $v['post_name'];
|
844 |
$new_post['post_type'] = $data_type;
|
845 |
$new_post['post_status'] = 'publish';
|
846 |
+
$new_post['import_id'] = $v['ID'];
|
847 |
|
848 |
// Category register
|
849 |
if(!empty($v['taxonomies'])){
|
@@ -1004,11 +1004,11 @@ function pagelayer_bg_video(&$el){
|
|
1004 |
|
1005 |
if (!empty($source)) {
|
1006 |
|
1007 |
-
if ($iframe_atts['
|
1008 |
|
1009 |
$el['atts']['vid_src'] = '<iframe src="'.$iframe_atts['src'].'&autoplay=1&controls=0&showinfo=0&rel=0&autohide=1&playlist='.$iframe_atts['id'].'" allowfullscreen="1" webkitallowfullscreen="1" mozallowfullscreen="1" frameborder="0"></iframe>';
|
1010 |
|
1011 |
-
} else if ($iframe_atts['
|
1012 |
|
1013 |
$el['atts']['vid_src'] = '<iframe src="'.$iframe_atts['src'].'&background=1&autoplay=1&byline=0&title=0" allowfullscreen="1" webkitallowfullscreen="1" mozallowfullscreen="1" frameborder="0"></iframe>';
|
1014 |
|
1004 |
|
1005 |
if (!empty($source)) {
|
1006 |
|
1007 |
+
if ($iframe_atts['type'] == 'youtube') {
|
1008 |
|
1009 |
$el['atts']['vid_src'] = '<iframe src="'.$iframe_atts['src'].'&autoplay=1&controls=0&showinfo=0&rel=0&autohide=1&playlist='.$iframe_atts['id'].'" allowfullscreen="1" webkitallowfullscreen="1" mozallowfullscreen="1" frameborder="0"></iframe>';
|
1010 |
|
1011 |
+
} else if ($iframe_atts['type'] == 'vimeo') {
|
1012 |
|
1013 |
$el['atts']['vid_src'] = '<iframe src="'.$iframe_atts['src'].'&background=1&autoplay=1&byline=0&title=0" allowfullscreen="1" webkitallowfullscreen="1" mozallowfullscreen="1" frameborder="0"></iframe>';
|
1014 |
|
@@ -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.5.
|
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.5.5
|
7 |
Author: Pagelayer Team
|
8 |
Author URI: https://pagelayer.com/
|
9 |
License: LGPL v2.1
|
@@ -4,7 +4,7 @@ Tags: page builder, editor, drag-and-drop, landing page, replace image, pagelaye
|
|
4 |
Requires at least: 4.7
|
5 |
Tested up to: 5.8
|
6 |
Requires PHP: 5.5
|
7 |
-
Stable tag: 1.5.
|
8 |
License: LGPL v2.1
|
9 |
License URI: http://www.gnu.org/licenses/lgpl-2.1.html
|
10 |
|
@@ -12,6 +12,8 @@ The most advanced frontend drag & drop page builder. PageLayer is a light weight
|
|
12 |
|
13 |
== Description ==
|
14 |
|
|
|
|
|
15 |
Pagelayer is a WordPress page builder plugin. Its very easy to use and very light on the browser. Pagelayer works with any WordPress theme. Pagelayer is a real time editor and you can create beautiful web pages and web sites in a few minutes ! You dont need any programming knowledge when using Pagelayer. Pagelayer comes with top-notch features with a great UX and simple UI.
|
16 |
|
17 |
[Home Page](https://pagelayer.com "PageLayer Homepage") | [Support](https://pagelayer.deskuss.com "PageLayer Support") | [Documents](http://pagelayer.com/docs "Documents")
|
@@ -109,6 +111,16 @@ Do you have questions related to PageLayer ? Use the following links :
|
|
109 |
|
110 |
== Changelog ==
|
111 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
= 1.5.4 (Aug 05, 2021) =
|
113 |
* [Improvement] The Inline editor position has been further improved for the better user experience.
|
114 |
* [Improvement] Added system fonts to Typography font list.
|
4 |
Requires at least: 4.7
|
5 |
Tested up to: 5.8
|
6 |
Requires PHP: 5.5
|
7 |
+
Stable tag: 1.5.5
|
8 |
License: LGPL v2.1
|
9 |
License URI: http://www.gnu.org/licenses/lgpl-2.1.html
|
10 |
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
+
https://www.youtube.com/watch?v=t8Iz-v-qce8
|
16 |
+
|
17 |
Pagelayer is a WordPress page builder plugin. Its very easy to use and very light on the browser. Pagelayer works with any WordPress theme. Pagelayer is a real time editor and you can create beautiful web pages and web sites in a few minutes ! You dont need any programming knowledge when using Pagelayer. Pagelayer comes with top-notch features with a great UX and simple UI.
|
18 |
|
19 |
[Home Page](https://pagelayer.com "PageLayer Homepage") | [Support](https://pagelayer.deskuss.com "PageLayer Support") | [Documents](http://pagelayer.com/docs "Documents")
|
111 |
|
112 |
== Changelog ==
|
113 |
|
114 |
+
= 1.5.5 (Sep 16, 2021) =
|
115 |
+
* [Improvement] The Title Widget has been further improved. Now users can search for widgets with a slash (/) and replace the selected widget with the current widget and also added the plus icon near the bottom of all widgets to add widget after the current widget.
|
116 |
+
* [Improvement] Login widget has been further improved.
|
117 |
+
* [Improvement] Insert link option UI of our pen editor has been further improved.
|
118 |
+
* [Bug-Fix] In certain cases the Pagelayer pen heading and paragraph formatting was not working properly. This is fixed.
|
119 |
+
* [Bug-Fix] The Roboto font within the system section was not working. We have removed the system font option of Roboto and left the Google Font option. This is fixed.
|
120 |
+
* [Bug-Fix] In certain cases the background video was not working properly. This is fixed.
|
121 |
+
* [Bug-Fix] When the dropdown menu was set to in tablet or mobile mode, the full primary menu was shown when reloading the page. This is fixed.
|
122 |
+
* [Bug-Fix] In some cases, the pen editor's unlink option was not working properly. This is fixed.
|
123 |
+
|
124 |
= 1.5.4 (Aug 05, 2021) =
|
125 |
* [Improvement] The Inline editor position has been further improved for the better user experience.
|
126 |
* [Improvement] Added system fonts to Typography font list.
|