PluginProbe
Page Builder: Pagelayer – Drag and Drop website builder / 1.0.0
Page Builder: Pagelayer – Drag and Drop website builder v1.0.0
2.2.1 2.2.0 2.1.9 2.1.8 2.1.7 2.1.6 2.1.5 2.1.4 2.1.3 trunk 0.9.0 0.9.1 0.9.2 0.9.3 0.9.4 0.9.5 0.9.6 0.9.7 0.9.8 0.9.9 1.0.0 1.0.2 1.0.3 1.0.4 1.0.5 All 129 releases
pagelayer / js / widgets.js

widgets.js in Page Builder: Pagelayer – Drag and Drop website builder 1.0.0, at js/widgets.js

520 lines 13.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1
2 pagelayer_svg_cache = {};
3 var pagelayer_document_width;
4
5 // For automatic row parent change
6 jQuery(window).resize(function(){
7
8 var new_vw = jQuery(document).width();
9
10 if(new_vw == pagelayer_document_width){
11 return false;
12 }
13
14 pagelayer_document_width = new_vw;
15
16 // Set a timeout to prevent bubbling
17 setTimeout(function(){
18
19 jQuery('.pagelayer-row-stretch-full').each(function(){
20 var par = jQuery(this).parent();
21 pagelayer_pl_row_parent_full(par);
22 });
23
24 }, 200);
25
26 });
27
28 // Render for row
29 function pagelayer_render_pl_row(el){
30 pagelayer_bg_video(el);
31 }
32
33 // Render for col
34 function pagelayer_render_pl_col(el){
35
36 // Apply to wrapper
37 if(!pagelayer_empty(el.atts['col'])){
38
39 for(var x=1; x<=12; x++){
40 if(el.$.parent().hasClass('pagelayer-col-'+x)){
41 el.$.parent().removeClass('pagelayer-col-'+x);
42 break;
43 }
44 }
45
46 el.$.parent().addClass('pagelayer-col-'+el.atts['col']);
47 el.$.parent().css('width', '');
48 }
49
50 if(el.atts['col_width']){
51 el.$.parent().css('width', el.atts['col_width']+'%');
52 }
53
54 pagelayer_bg_video(el);
55 }
56
57 function pagelayer_bg_video(el){
58
59 var youtubeRegExp = /youtube\.com|youtu\.be/;
60 var vimeoRegExp = /vimeo\.com/;
61
62 el.tmp['bg_video_src-url'] = el.tmp['bg_video_src-url'] || el.atts['bg_video_src'];
63
64 var src = el.tmp['bg_video_src-url'];
65
66 var iframe_src = pagelayer_video_url(el.tmp['bg_video_src-url']);
67
68 if (youtubeRegExp.exec(src)) {
69
70 var youtubeRegExp1 = /youtube\.com/;
71 var youtubewatch = /watch/;
72 var youtubeembed = /embed/;
73 var youtube = /youtu\.be/;
74 var videoId;
75
76 if (youtubeRegExp1.exec(src)) {
77
78 if (youtubewatch.exec(src)) {
79 videoId = src.split('?v=');
80
81 } else if (youtubewatch.exec(src)) {
82 videoId = src.split('embed/');
83 }
84
85 } else if (youtube.exec(src)) {
86 videoId = src.split('.be/');
87 }
88 //console.log(frame_height);
89 el.atts['vid_src'] = '<iframe src="'+iframe_src+'?autoplay=1&controls=0&showinfo=0&rel=0&loop=1&autohide=1&playlist='+videoId[1]+'" allowfullscreen="1" webkitallowfullscreen="1" mozallowfullscreen="1" frameborder="0"></iframe>';
90
91 } else if (vimeoRegExp.exec(src)) {
92
93 el.atts['vid_src'] = '<iframe src="'+iframe_src+'?background=1&autoplay=1&loop=1&byline=0&title=0" allowfullscreen="1" webkitallowfullscreen="1" mozallowfullscreen="1" frameborder="0"></iframe>';
94
95 }else{
96
97 el.atts['vid_src'] = '<video autoplay loop>'+
98 '<source src="'+iframe_src+'" type="video/mp4">'+
99 '</video>';
100
101 }
102
103 }
104
105 // Load the full width row
106 function pagelayer_render_end_pl_row(el){
107
108 // The parent
109 var par = el.$.parent();
110
111 // Any class with full width
112 if(el.$.hasClass('pagelayer-row-stretch-full')){
113
114 // Give it the full width
115 pagelayer_pl_row_full(el.$);
116
117 // Give full width to the parent
118 pagelayer_pl_row_parent_full(par);
119
120 // Also add that we had a full width
121 el.$.addClass('pagelayer-row-stretch-had-full');
122
123 // Did this row have full width ?
124 }else if(el.$.hasClass('pagelayer-row-stretch-had-full')){
125
126 // Remove style
127 el.$.removeAttr('style');
128 par.removeAttr('style');
129 par.children('.pagelayer-ele-overlay').removeAttr('style');
130
131 // Remove HAD class
132 el.$.removeClass('pagelayer-row-stretch-had-full');
133
134 }
135
136 pagelayer_pl_row_video(el.$);
137
138 el.$.find('.pagelayer-parallax-window img').each(function(){
139 pagelayer_pl_row_parallax(jQuery(this));
140 });
141
142 // Row shape
143 if('row_shape_type_top' in el.atts){
144 pagelayer_render_row_shape(el, 'top')
145 }
146
147 if('row_shape_type_bottom' in el.atts){
148 pagelayer_render_row_shape(el, 'bottom')
149 }
150 }
151
152 // Set Row parent width
153 function pagelayer_pl_row_parent_full(par){
154 var vw = jQuery('html').width();
155 par.css({'width': vw,'max-width': '100vw'});
156 par.offset({left: 0});
157 par.children('.pagelayer-row').css({left: 0});
158 }
159
160 // Row shape render
161 function pagelayer_render_row_shape(el, shape_pos){
162
163 var name = el.atts['row_shape_type_'+shape_pos]+'-'+shape_pos+'.svg';
164
165 // DO we have in cache
166 if(!(name in pagelayer_svg_cache)){
167 // Make url and fetch
168 var url = pagelayer_url+'/images/shapes/'+name;
169 jQuery.get(url, function(data){
170 el.$.find('.pagelayer-svg-'+shape_pos).html(data);
171 pagelayer_svg_cache[name] = data;
172 }, 'html');
173
174 // Fill with cache
175 }else{
176 el.$.find('.pagelayer-svg-'+shape_pos).html(pagelayer_svg_cache[name]);
177 }
178
179 }
180
181 // Load the col
182 function pagelayer_render_end_pl_col(el){
183
184 pagelayer_pl_row_video(el.$);
185
186 el.$.find('.pagelayer-parallax-window img').each(function(){
187 pagelayer_pl_row_parallax(jQuery(this));
188 });
189
190 }
191
192 // Render the image object
193 function pagelayer_render_pl_image(el){
194
195 // Decide the image URL
196 el.atts['func_id'] = el.tmp['id-'+el.atts['id-size']+'-url'] || el.tmp['id-url'];
197 el.atts['func_id'] = el.atts['func_id'] || el.atts['id'];
198
199 // What is the link ?
200 if('link_type' in el.atts){
201
202 // Custom url
203 if(el.atts['link_type'] == 'custom_url'){
204 el.atts['func_link'] = el.atts['link'];
205 }
206
207 // Link to the media file itself
208 if(el.atts['link_type'] == 'media_file'){
209 el.atts['func_link'] = el.tmp['id-url'] || el.atts['id'];
210 }
211
212 // Lightbox
213 if(el.atts['link_type'] == 'lightbox'){
214 el.atts['func_link'] = el.tmp['id-url'] || el.atts['id'];
215 }
216 }
217 }
218
219 // Incase if there is a lightbox
220 function pagelayer_render_end_pl_image(el){
221 pagelayer_pl_image(el.$);
222 }
223
224 // Render for video
225 function pagelayer_render_pl_video(el){
226 el.atts['video_overlay_image-url'] = el.tmp['video_overlay_image-'+el.atts['custom_size']+'-url'] || el.tmp['video_overlay_image-url'];
227 el.atts['video_overlay_image-url'] = el.atts['video_overlay_image-url'] || el.atts['video_overlay_image'];
228 el.tmp['src-url'] = el.tmp['src-url'] || el.atts['src'];
229 el.tmp['ele_id'] = el['id'];
230 el.atts['vid_src'] = pagelayer_video_url(el.tmp['src-url']);
231
232 if(el.atts['autoplay'] == "true"){
233 el.atts['vid_src'] +="?&autoplay=1";
234 }else{
235 el.atts['vid_src'] +="?&autoplay=0";
236 }
237
238 if(el.atts['mute'] == "true"){
239 el.atts['vid_src'] +="&mute=1";
240 }else{
241 el.atts['vid_src'] +="&mute=0";
242 }
243
244 if(el.atts['loop'] == "true"){
245 el.atts['vid_src'] +="&loop=1";
246 }else{
247 el.atts['vid_src'] +="&loop=0";
248 }
249 }
250
251 // Incase if there is a lightbox
252 function pagelayer_render_end_pl_video(el){
253 pagelayer_pl_video(el.$);
254 }
255
256 // Render the testimonial
257 function pagelayer_render_pl_testimonial(el){
258 //console.log(el);
259 // Decide the image URL
260 el.atts['func_image'] = el.tmp['avatar-'+el.atts['custom_size']+'-url'] || el.tmp['avatar-url'];
261 el.atts['func_image'] = el.atts['func_image'] || el.atts['avatar'];
262
263 }
264
265 // Render the stars
266 function pagelayer_render_end_pl_stars(el){
267 pagelayer_stars();
268 };
269
270
271 // Render the service box
272 function pagelayer_render_pl_service(el){
273
274 // Decide the image URL
275 el.atts['func_image'] = el.tmp['service_image-'+el.atts['service_image_size']+'-url'] || el.tmp['service_image-url'];
276 el.atts['func_image'] = el.atts['func_image'] || el.atts['service_image'];
277
278 }
279
280 // Render the counter
281 function pagelayer_render_end_pl_counter(el){
282 pagelayer_counter();
283 };
284
285 // Render the progress
286 function pagelayer_render_end_pl_progress(el){
287 pagelayer_progress();
288 };
289
290 // Render the image slider
291 function pagelayer_render_pl_image_slider(el){
292
293 // The URLs
294 var img_urls = !pagelayer_empty(el.tmp['ids-urls']) ? JSON.parse(el.tmp['ids-urls']) : [];
295 var all_urls = !pagelayer_empty(el.tmp['ids-all-urls']) ? JSON.parse(el.tmp['ids-all-urls']) : [];
296 //console.log(img_urls);
297
298 var ul = '';
299 var is_link = 'link_type' in el.atts && !pagelayer_empty(el.atts['link_type']) ? true : false;
300
301 // Create figure HTML
302 for (var x in img_urls){
303
304 // Use the default URL first
305 var url = img_urls[x];
306
307 // But if we have a custom size, use that
308 if(el.atts['size'] != 'custom' && x in all_urls && el.atts['size'] in all_urls[x]){
309 url = all_urls[x][el.atts['size']];
310 }
311
312 ul += '<li class="pagelayer-slider-item">';
313
314 if(is_link){
315 var link = (el.atts['link_type'] == 'media_file' ? url : (el.atts['link'] || ''))
316 ul += '<a href="'+link+'">';
317 }
318
319 ul += '<img class="pagelayer-img" src="'+url+'">';
320
321 if(is_link){
322 ul += '</a>';
323 }
324
325 ul += '</li>';
326 }
327
328 if(pagelayer_empty(ul)){
329 ul = '<h4 style="text-align:center;">'+ pagelayer_l('Please select Images from left side Widget properties.')+'</h4>';
330 }
331
332 el.atts['ul'] = ul;
333
334 // Which arrows to show
335 if('controls' in el.atts && (el.atts['controls'] == 'arrows' || el.atts['controls'] == 'none')){
336 el.CSS.attr.push({'sel': '.pagelayer-image-slider-ul', 'val': 'data-pager="false"'});
337 }
338
339 if('controls' in el.atts && (el.atts['controls'] == 'pager' || el.atts['controls'] == 'none')){
340 el.CSS.attr.push({'sel': '.pagelayer-image-slider-ul', 'val': 'data-controls="false"'});
341 }
342
343 };
344
345 // Render the image slider
346 function pagelayer_render_end_pl_image_slider(el){
347 pagelayer_owl_destroy(el.$, '.pagelayer-image-slider-ul');
348 pagelayer_pl_image_slider(el.$);
349 };
350
351
352 // Render the grid gallery
353 function pagelayer_render_pl_grid_gallery(el){
354
355 // The URLs
356 var img_urls = !pagelayer_empty(el.tmp['ids-urls']) ? JSON.parse(el.tmp['ids-urls']) : [];
357 var all_urls = !pagelayer_empty(el.tmp['ids-all-urls']) ? JSON.parse(el.tmp['ids-all-urls']) : [];
358 var img_title = !pagelayer_empty(el.tmp['ids-all-titles']) ? JSON.parse(el.tmp['ids-all-titles']) : [];
359 var img_links = !pagelayer_empty(el.tmp['ids-all-links']) ? JSON.parse(el.tmp['ids-all-links']) : [];
360 var img_captions = !pagelayer_empty(el.tmp['ids-all-captions']) ? JSON.parse(el.tmp['ids-all-captions']) : [];
361 //console.log(img_urls);
362
363 var ul = '';
364 var is_link = 'link_to' in el.atts && !pagelayer_empty(el.atts['link_to']) ? true : false;
365 var col = el.atts['columns'];
366
367 var i = 0;
368
369 ul += '<ul class="pagelayer-grid-gallery-ul">';
370 var gallery_rand = 'gallery-id-'+Math.floor((Math.random() * 100) + 1);
371
372 // Create figure HTML
373 for (var x in img_urls){
374
375 /* if(i % col == 0 && i != 0){
376 ul += '</ul><ul class="pagelayer-grid-gallery-ul">';
377 } */
378
379 // Use the default URL first
380 var url = img_urls[x];
381
382 // But if we have a custom size, use that
383 if(el.atts['size'] != 'custom' && x in all_urls && el.atts['size'] in all_urls[x]){
384 url = all_urls[x][el.atts['size']];
385 }
386
387
388 ul += '<li class="pagelayer-gallery-item" >';
389
390 if(!is_link){
391 ul += '<div>';
392 }
393
394 if(is_link && el.atts['link_to'] == 'media_file'){
395 var link = (el.atts['link_to'] == 'media_file' ? url : (el.atts['link'] || ''))
396 ul += '<a href="'+link+'" class="pagelayer-ele-link">';
397 }
398
399 if(is_link && el.atts['link_to'] == 'attachment'){
400 var link = img_links[x];
401 ul += '<a href="'+link+'" class="pagelayer-ele-link">';
402 }
403
404 if(is_link && el.atts['link_to'] == 'lightbox'){
405 ul += '<a href="'+img_urls[x]+'" class="pagelayer-ele-link" data-lightbox-gallery="'+gallery_rand+'" alt="'+img_title[x]+'" pagelayer-grid-gallery-type="'+el.atts['link_to']+'">'
406 }
407
408 ul += '<img class="pagelayer-img" src="'+url+'" title="'+img_title[x]+'" alt="'+img_title[x]+'">';
409
410 if(el.atts['caption'] == 'true'){
411 ul += '<span class="pagelayer-grid-gallery-caption">'+img_captions[x]+'</span>';
412 }
413
414 if(is_link){
415 ul += '</a>';
416 }
417
418 if(!is_link){
419 ul += '</div>';
420 }
421
422 ul += '</li>';
423 i++;
424 }
425 ul += '</ul>';
426
427 el.tmp['gallery-random-id'] = gallery_rand;
428
429 el.atts['ul'] = ul;
430
431 };
432
433 // Render for tabs
434 function pagelayer_render_html_pl_tabs(el){
435 el.CSS.attr.push({'sel': '{{element}}', 'val': 'pagelayer-tabs-rotate="'+el.atts["rotate"]+'"'});
436 };
437
438 // Render the accordion item
439 function pagelayer_render_end_pl_tabs(el){
440 pagelayer_pl_tabs(el.$);
441 }
442
443 // Render the accordion item
444 function pagelayer_render_end_pl_accordion(el){
445 pagelayer_pl_accordion(el.$);
446 };
447
448 // Render the collapse item
449 function pagelayer_render_end_pl_collapse(el){
450 pagelayer_pl_collapse(el.$);
451 };
452
453 // Shortcode Handler
454 var pagelayer_shortcodes_timer;
455 function pagelayer_render_pl_shortcodes(el){
456
457 // Clear any previous timeout
458 clearTimeout(pagelayer_shortcodes_timer);
459
460 // Set a timer for constant change
461 pagelayer_shortcodes_timer = setTimeout(function(){
462
463 // Make the call
464 jQuery.ajax({
465 url: pagelayer_ajax_url+'&action=pagelayer_do_shortcodes',
466 type: 'POST',
467 data: {
468 pagelayer_nonce: pagelayer_ajax_nonce,
469 shortcode_data: el.atts['data']
470 },
471 success:function(data) {
472 el.$.find('.pagelayer-shortcodes-container').html(data);
473 }
474 });
475
476 }, 500);
477
478 };
479
480 // Render the widget area i.e. Sidebars
481 function pagelayer_render_pl_wp_widgets(el){
482
483 // Clear any previous timeout
484 clearTimeout(pagelayer_shortcodes_timer);
485
486 // Set a timer for constant change
487 pagelayer_shortcodes_timer = setTimeout(function(){
488
489 // Make the call
490 jQuery.ajax({
491 url: pagelayer_ajax_url+'&action=pagelayer_fetch_sidebar',
492 type: 'POST',
493 data: {
494 pagelayer_nonce: pagelayer_ajax_nonce,
495 sidebar: el.atts['sidebar']
496 },
497 success:function(data) {
498 el.$.find('.pagelayer-wp-sidebar-holder').html(data);
499 }
500 });
501
502 }, 500);
503
504 };
505
506 function pagelayer_owl_destroy(jEle, slides_class){
507
508 var ul = jEle.find(slides_class);
509 var setup = jEle.attr('pagelayer-setup');
510
511 // Already setup ?
512 if(setup && setup.length > 0){
513 if(ul.children('.pagelayer-ele-wrap')){
514 ul.pagelayerOwlCarousel('destroy');
515 ul.find('[class^="pagelayer-owl-"]').remove();
516 jEle.removeAttr('pagelayer-setup');
517 }
518 }
519 }
520