| 1 |
(function($) { |
| 2 |
"use strict"; |
| 3 |
$( document ).ready( function () { |
| 4 |
// Save bulder to josn |
| 5 |
$.fn.yeemail_save_type = function (type) { |
| 6 |
var html_emlement = $(this); |
| 7 |
var type = $(this).data("type"); |
| 8 |
var container_style = {}; |
| 9 |
var container_attr = {}; |
| 10 |
var inner_style = {}; |
| 11 |
var inner_attr = {}; |
| 12 |
var style_container_element = yeemail_builder["block"][type]["editor"]["container"]["style"]; |
| 13 |
var style_inner_element = yeemail_builder["block"][type]["editor"]["inner"]["style"]; |
| 14 |
var attr_inner_element = yeemail_builder["block"][type]["editor"]["inner"]["attr"]; |
| 15 |
//Save style container |
| 16 |
$.each( style_container_element, function( key, value ) { |
| 17 |
var data = html_emlement.css(value); |
| 18 |
container_style[value] = data; |
| 19 |
}); |
| 20 |
//Save style inner |
| 21 |
$.each( style_inner_element, function( key, value ) { |
| 22 |
var style_content= {}; |
| 23 |
$.each( value , function( index, style ) { |
| 24 |
var data = html_emlement.find(key).css(style); |
| 25 |
style_content[style] = data |
| 26 |
}) |
| 27 |
inner_style[key] = style_content; |
| 28 |
}); |
| 29 |
//Save attr |
| 30 |
$.each( attr_inner_element, function( key, value ) { |
| 31 |
var attr_content= {}; |
| 32 |
$.each( value , function( index, style ) { |
| 33 |
switch(style) { |
| 34 |
case "text": |
| 35 |
var data = html_emlement.find(key).html(); |
| 36 |
break; |
| 37 |
case "menu": |
| 38 |
var menu = {}; |
| 39 |
var i =0; |
| 40 |
html_emlement.find( ".yeemail-menu td" ).each(function() { |
| 41 |
var text_menu = $(this).find("a").html(); |
| 42 |
var href = $(this).find("a").attr("href"); |
| 43 |
var background = $(this).css("background-color"); |
| 44 |
var color = $(this).find("a").css("color"); |
| 45 |
color = $.email_builder_cover_color(color); |
| 46 |
background = $.email_builder_cover_color(background); |
| 47 |
menu[i] = {"text":text_menu,"background":background,"color":color,"href":href} ; |
| 48 |
i++; |
| 49 |
}); |
| 50 |
var data = menu; |
| 51 |
break; |
| 52 |
case "html": |
| 53 |
case "html_hide": |
| 54 |
case "html1": |
| 55 |
case "html_hide1": |
| 56 |
var data = html_emlement.find(key).html(); |
| 57 |
break; |
| 58 |
default: |
| 59 |
var data = html_emlement.find(key).attr(style); |
| 60 |
} |
| 61 |
attr_content[style] = data |
| 62 |
}) |
| 63 |
inner_attr[key] = attr_content; |
| 64 |
}); |
| 65 |
var condition = ""; |
| 66 |
condition = html_emlement.attr("data-condition"); |
| 67 |
if( condition === undefined || condition == "" ){ |
| 68 |
condition = ""; |
| 69 |
} |
| 70 |
return {"type":type,"container_style":container_style,"inner_style":inner_style,"inner_attr":inner_attr,"condition":condition }; |
| 71 |
} |
| 72 |
//Click editor -> set element |
| 73 |
$.fn.yeemail_set_type_editor = function ( row ) { |
| 74 |
var builder = $(this); |
| 75 |
var type = $(this).data("type"); |
| 76 |
if (typeof type === "undefined") { |
| 77 |
return |
| 78 |
} |
| 79 |
var style_container_element = yeemail_builder["block"][type]["editor"]["container"]["style"]; |
| 80 |
var attr_container_element = yeemail_builder["block"][type]["editor"]["container"]["attr"]; |
| 81 |
//set editor in container element style |
| 82 |
$.each( style_container_element, function( key, value ) { |
| 83 |
$.yeemail_set_css_element(key,value,builder); |
| 84 |
}); |
| 85 |
$.each( attr_container_element, function( key, value ) { |
| 86 |
var data = $(key).val(); |
| 87 |
if( $(key).attr("type") == "checkbox" ){ |
| 88 |
if( $(key).is(':checked') ){ |
| 89 |
data = "ok"; |
| 90 |
}else{ |
| 91 |
data = "not"; |
| 92 |
} |
| 93 |
} |
| 94 |
builder.attr(value,data); |
| 95 |
}); |
| 96 |
var condition = $(".builder__editor--item-conditional_logic .builder__editor--condition").val(); |
| 97 |
builder.attr("data-condition",condition); |
| 98 |
//Element |
| 99 |
if( builder.closest(".builder-elements").length > 0 ) { |
| 100 |
var attr_inner_element = yeemail_builder["block"][type]["editor"]["inner"]["attr"]; |
| 101 |
var style_inner_element = yeemail_builder["block"][type]["editor"]["inner"]["style"]; |
| 102 |
//set editor in element style |
| 103 |
$.each( style_inner_element, function( key, value ) { |
| 104 |
$.each( value , function( index, style ) { |
| 105 |
$.yeemail_set_css_element(index,style,builder,key); |
| 106 |
}) |
| 107 |
}); |
| 108 |
//set editor in element attr |
| 109 |
$.each( attr_inner_element, function( key, value ) { |
| 110 |
$.each( value , function( index, attr ) { |
| 111 |
var data = $(index).val(); |
| 112 |
var data_value = $(index).data("after_value"); |
| 113 |
if (data_value !== undefined) { |
| 114 |
data +=data_value; |
| 115 |
} |
| 116 |
switch(attr) { |
| 117 |
case "html": |
| 118 |
//change shortcode |
| 119 |
if(data == ""){ |
| 120 |
data = tinyMCE.get('.builder__editor--js').getContent(); |
| 121 |
} |
| 122 |
builder.find(key).html($.yeemail_replace_shorcode(data)); |
| 123 |
break; |
| 124 |
case "html_hide": |
| 125 |
builder.find(key).html(data); |
| 126 |
break; |
| 127 |
case "text": |
| 128 |
builder.find(key).html(data); |
| 129 |
break; |
| 130 |
case "data-showimg": |
| 131 |
case "data-sku": |
| 132 |
case "data-totals": |
| 133 |
case "data-showdes": |
| 134 |
var showimg = $(".builder__editor--item-detail-template .detail-img"); |
| 135 |
if( showimg.is(":checked")){ |
| 136 |
showimg ="yes"; |
| 137 |
}else{ |
| 138 |
showimg ="hidden"; |
| 139 |
} |
| 140 |
var totals = $(".builder__editor--item-detail-template .detail-totals"); |
| 141 |
if( totals.is(":checked")){ |
| 142 |
totals ="yes"; |
| 143 |
}else{ |
| 144 |
totals ="hidden"; |
| 145 |
} |
| 146 |
var sku = $(".builder__editor--item-detail-template .detail-sku"); |
| 147 |
if( sku.is(":checked")){ |
| 148 |
sku ="yes"; |
| 149 |
}else{ |
| 150 |
sku ="hidden"; |
| 151 |
} |
| 152 |
var des = $(".builder__editor--item-detail-template .detail-des"); |
| 153 |
if( des.is(":checked")){ |
| 154 |
des ="yes"; |
| 155 |
}else{ |
| 156 |
des ="hidden"; |
| 157 |
} |
| 158 |
var value = ""; |
| 159 |
value = $(index).val(); |
| 160 |
if($(index).attr("type") == "checkbox"){ |
| 161 |
if( $(index).is(":checked")){ |
| 162 |
value = "yes"; |
| 163 |
}else{ |
| 164 |
value = "hidden"; |
| 165 |
} |
| 166 |
}else{ |
| 167 |
value = data; |
| 168 |
} |
| 169 |
var shortcode ="[yeemail_woo_order_detail show_img='"+showimg+"' item_totals='"+totals+"' item_sku='"+sku+"' show_des='"+des+"']"; |
| 170 |
let count_hidden = $('th[data-sku="yes"],th[data-showimg="yes"],th[data-showdes="yes"]',builder).length; |
| 171 |
builder.find(".woo_totals th").attr("colspan",2 + parseInt(count_hidden)); |
| 172 |
$(".builder-elements-content.yeemail_builder_focus .text-content-data").html(shortcode); |
| 173 |
builder.find(key).attr(attr,value); |
| 174 |
break; |
| 175 |
case "menu": |
| 176 |
var tr = $('<tr class="links"></tr'); |
| 177 |
var i_menu = 0; |
| 178 |
$( ".builder__editor--item-menu .menu-content-tool li.data" ).each(function() { |
| 179 |
var text_menu = $(this).find(".text").val(); |
| 180 |
var href = $(this).find(".text_url").val(); |
| 181 |
var background = $(this).find(".text_background").val(); |
| 182 |
var color = $(this).find(".text_color").val(); |
| 183 |
var td = $('<td align="center" valign="top"><a target="_blank" href=""></a></td>'); |
| 184 |
td.css("background-color",background); |
| 185 |
td.find("a").css("color",color); |
| 186 |
td.find("a").attr("href",href); |
| 187 |
td.find("a").html(text_menu); |
| 188 |
td.appendTo(tr); |
| 189 |
i_menu++; |
| 190 |
}); |
| 191 |
builder.find("tr").remove(); |
| 192 |
tr.appendTo(builder.find("table")); |
| 193 |
var menu_width = 100 / i_menu; |
| 194 |
builder.find("td").css("width",menu_width); |
| 195 |
$.each( style_inner_element, function( key, value ) { |
| 196 |
$.each( value , function( index, style ) { |
| 197 |
$.yeemail_set_css_element(index,style,builder,key); |
| 198 |
}) |
| 199 |
}); |
| 200 |
break; |
| 201 |
default: |
| 202 |
builder.find(key).attr(attr,data); |
| 203 |
} |
| 204 |
}) |
| 205 |
}); |
| 206 |
} |
| 207 |
} |
| 208 |
//Click emlement -> get and show editor |
| 209 |
$.fn.yeemail_load_type_editor = function (row ) { |
| 210 |
var type = $(this).data("type"); |
| 211 |
var builder = $(this); |
| 212 |
var type_text = type; |
| 213 |
if( yeemail_builder["block"][type]["type_text"] !== undefined){ |
| 214 |
type_text = yeemail_builder["block"][type]["type_text"]; |
| 215 |
} |
| 216 |
$(".yeemail-builder-goback .yeemail-builder-goback_block").html(type_text); |
| 217 |
var show_class_container = yeemail_builder["block"][type]["editor"]["container"]["show"]; |
| 218 |
var style_container_element = yeemail_builder["block"][type]["editor"]["container"]["style"]; |
| 219 |
var attr_container_element = yeemail_builder["block"][type]["editor"]["container"]["attr"]; |
| 220 |
//Show eidtor |
| 221 |
$.each( show_class_container, function( key, value ) { |
| 222 |
$(".builder__editor--item-"+value).removeClass("hidden"); |
| 223 |
}); |
| 224 |
//set editor in container element style |
| 225 |
$.each( style_container_element, function( key, value ) { |
| 226 |
var data = builder.css(value); |
| 227 |
$.yeemail_set_css_editor(value,key,data); |
| 228 |
}); |
| 229 |
$.each( attr_container_element, function( key, value ) { |
| 230 |
var data = builder.attr(value); |
| 231 |
var type = $(key).attr("type"); |
| 232 |
if( type == "checkbox"){ |
| 233 |
if( data != "ok"){ |
| 234 |
$(key).prop('checked', false);; |
| 235 |
}else{ |
| 236 |
$(key).prop('checked', true); |
| 237 |
} |
| 238 |
} |
| 239 |
$(key).val(data); |
| 240 |
}); |
| 241 |
var condition = builder.attr("data-condition"); |
| 242 |
if( condition === undefined || condition == "" ){ |
| 243 |
condition = ""; |
| 244 |
} |
| 245 |
$(".builder__editor--item-conditional_logic .builder__editor--condition").val(condition); |
| 246 |
if( !row ){ |
| 247 |
var attr_inner_element = yeemail_builder["block"][type]["editor"]["inner"]["attr"]; |
| 248 |
var style_inner_element = yeemail_builder["block"][type]["editor"]["inner"]["style"]; |
| 249 |
//set editor in element style |
| 250 |
$.each( style_inner_element, function( key, value ) { |
| 251 |
$.each( value , function( index, style ) { |
| 252 |
var data = builder.find(key).css(style); |
| 253 |
$.yeemail_set_css_editor(style,index,data); |
| 254 |
}) |
| 255 |
}); |
| 256 |
//set editor in element attr |
| 257 |
$.each( attr_inner_element, function( key, value ) { |
| 258 |
$.each( value , function( index, attr ) { |
| 259 |
switch(attr) { |
| 260 |
case "html_hide": |
| 261 |
case "data-src": |
| 262 |
break; |
| 263 |
case "text": |
| 264 |
var data = builder.find(key).html(); |
| 265 |
$(index).val(data); |
| 266 |
break; |
| 267 |
case "html": |
| 268 |
if( builder.find(key+"-data").length > 0 ){ |
| 269 |
var data = builder.find(key +"-data").html(); |
| 270 |
}else{ |
| 271 |
var data = builder.find(key).html(); |
| 272 |
} |
| 273 |
tinyMCE.activeEditor.setContent(data); |
| 274 |
$(index).val(data); |
| 275 |
break; |
| 276 |
case "html_ajax": |
| 277 |
var data = builder.find(key+"-data").html(); |
| 278 |
tinyMCE.activeEditor.setContent(data); |
| 279 |
break; |
| 280 |
case "menu": |
| 281 |
var html_menu=$("<ul></ul>"); |
| 282 |
$( builder.find(".yeemail-menu td") ).each(function() { |
| 283 |
var text_menu = $(this).find("a").html(); |
| 284 |
var href = $(this).find("a").attr("href"); |
| 285 |
var background = $(this).find("a").css("background-color"); |
| 286 |
var color = $(this).find("a").css("color"); |
| 287 |
color = $.email_builder_cover_color(color); |
| 288 |
background = $.email_builder_cover_color(background); |
| 289 |
var menu = $(".builder__editor--item-menu-hidden").clone().removeClass('hidden builder__editor--item-menu-hidden'); |
| 290 |
menu.find(".text").val(text_menu); |
| 291 |
menu.find(".text_url").val(href); |
| 292 |
menu.find(".text_background").val(background); |
| 293 |
menu.find(".text_color").val(color); |
| 294 |
var container_li = $("<li class='data'></li>"); |
| 295 |
menu.appendTo(container_li); |
| 296 |
container_li.appendTo(html_menu); |
| 297 |
}); |
| 298 |
html_menu.removeClass('hidden'); |
| 299 |
$(".builder__editor--item-menu .menu-content-tool ul").remove(); |
| 300 |
html_menu.appendTo($(".menu-content-tool")); |
| 301 |
$('.menu-content-tool .text_background,.menu-content-tool .text_color').wpColorPicker({ |
| 302 |
change: function(event, ui){ |
| 303 |
$(".yeemail_builder_focus").yeemail_set_type_editor(); |
| 304 |
} |
| 305 |
}); |
| 306 |
break; |
| 307 |
default: |
| 308 |
var data = builder.find(key).attr(attr); |
| 309 |
var type = $(index).attr("type"); |
| 310 |
if(type == "checkbox"){ |
| 311 |
if( data == "ok" || data == "yes"){ |
| 312 |
$(index).prop('checked', true); |
| 313 |
}else{ |
| 314 |
$(index).prop('checked', false); |
| 315 |
} |
| 316 |
}else{ |
| 317 |
$(index).val(data); |
| 318 |
} |
| 319 |
} |
| 320 |
}) |
| 321 |
}); |
| 322 |
} |
| 323 |
} |
| 324 |
$.yeemail_replace_shorcode = function (str) { |
| 325 |
if( str === undefined){ |
| 326 |
return str; |
| 327 |
} |
| 328 |
let re = new RegExp(yeemail_script.builder_shorcode_re, "gi"); |
| 329 |
str = str.replaceAll(re, function (matched) { |
| 330 |
matched = matched.replace(/\[|\]/gi, ""); |
| 331 |
if( yeemail_script.builder_shorcode[matched] === undefined ){ |
| 332 |
return "["+matched+"]"; |
| 333 |
}else{ |
| 334 |
return yeemail_script.builder_shorcode[matched]; |
| 335 |
} |
| 336 |
}) |
| 337 |
return str; |
| 338 |
} |
| 339 |
// Drop emlement and load builder -> show data builder |
| 340 |
$.yeemail_load_type = function (type,elements,email) { |
| 341 |
if (typeof yeemail_builder["block"][type] === undefined){ |
| 342 |
return "Type undefined"; |
| 343 |
}else{ |
| 344 |
var html = $(yeemail_builder["block"][type]["builder"]); |
| 345 |
} |
| 346 |
if( elements ){ |
| 347 |
var container_style = elements.container_style; |
| 348 |
var inner_style = elements.inner_style; |
| 349 |
var inner_attr = elements.inner_attr; |
| 350 |
html.find(".builder-elements-content").css(container_style); |
| 351 |
$.each( inner_style, function( key, value ) { |
| 352 |
if( value != "") { |
| 353 |
html.find(key).css(value); |
| 354 |
} |
| 355 |
}); |
| 356 |
if( elements.condition != ""){ |
| 357 |
html.find(".builder-elements-content").attr("data-condition",elements.condition); |
| 358 |
} |
| 359 |
$.each( inner_attr, function( key, value ) { |
| 360 |
$.each( value, function( k, v ) { |
| 361 |
switch(k) { |
| 362 |
case "html": |
| 363 |
var v_hide = inner_attr[".text-content-data"]["html_hide"]; |
| 364 |
if(v_hide != ""){ |
| 365 |
if(v_hide.search("=")>0){ |
| 366 |
v_hide = v; |
| 367 |
} |
| 368 |
} |
| 369 |
v_hide = $.yeemail_replace_shorcode(v_hide); |
| 370 |
html.find(key).html(v_hide); |
| 371 |
break; |
| 372 |
case "text": |
| 373 |
case "html_hide": |
| 374 |
html.find(key).html(v); |
| 375 |
break; |
| 376 |
case "data-src": |
| 377 |
html.find(key).attr("src",v); |
| 378 |
html.find(key).attr(k,v); |
| 379 |
break; |
| 380 |
case "menu": |
| 381 |
var menu_main =""; |
| 382 |
$.each( v, function(menu_key, menu ) { |
| 383 |
menu_main += '<td style="background-color:'+menu.background+';padding:10px 0;" align="center" valign="top"><a style="color:'+menu.color+';" target="_blank" href="'+menu.href+'">'+menu.text+'</a></td>'; |
| 384 |
}) |
| 385 |
html.find("tr").html(menu_main); |
| 386 |
$.each( inner_style, function( key, value ) { |
| 387 |
if( value != "") { |
| 388 |
html.find(key).css(value); |
| 389 |
} |
| 390 |
}); |
| 391 |
break; |
| 392 |
default: |
| 393 |
html.find(key).attr(k,v); |
| 394 |
break; |
| 395 |
} |
| 396 |
}) |
| 397 |
}); |
| 398 |
} |
| 399 |
return html; |
| 400 |
} |
| 401 |
//Cover grb to hex |
| 402 |
$.email_builder_cover_color = function (rgb) { |
| 403 |
if( rgb === undefined){ |
| 404 |
return ""; |
| 405 |
} |
| 406 |
if( rgb == "" ){ |
| 407 |
return "transparent"; |
| 408 |
} |
| 409 |
if( "rgba(0,0,0,0)" == rgb.replace(/\s/g, '') ){ |
| 410 |
return "transparent"; |
| 411 |
} |
| 412 |
rgb = rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i); |
| 413 |
return (rgb && rgb.length === 4) ? "#" + |
| 414 |
("0" + parseInt(rgb[1],10).toString(16)).slice(-2) + |
| 415 |
("0" + parseInt(rgb[2],10).toString(16)).slice(-2) + |
| 416 |
("0" + parseInt(rgb[3],10).toString(16)).slice(-2) : ''; |
| 417 |
} |
| 418 |
//set css edit |
| 419 |
$.youtube_parser =function( url ) { |
| 420 |
var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#&?]*).*/; |
| 421 |
var match = url.match(regExp); |
| 422 |
return (match&&match[7].length==11)? match[7] : false; |
| 423 |
} |
| 424 |
$.yeemail_background_img =function( data ) { |
| 425 |
if( data === undefined){ |
| 426 |
return ""; |
| 427 |
} |
| 428 |
var img = data.replace('url(','').replace(')','').replace(/\"/gi, ""); |
| 429 |
return img; |
| 430 |
} |
| 431 |
$.yeemail_set_css_editor =function( style, index,data) { |
| 432 |
switch(style) { |
| 433 |
case "border-color": |
| 434 |
case "background-color": |
| 435 |
case "color": |
| 436 |
data = $.email_builder_cover_color(data); |
| 437 |
$(index).val(data); |
| 438 |
$(index).closest(".wp-picker-container").find(".button").css("background-color",data); |
| 439 |
break; |
| 440 |
case "background-image": |
| 441 |
if( data == "none"){ |
| 442 |
data = ""; |
| 443 |
}else{ |
| 444 |
data = $.yeemail_background_img(data); |
| 445 |
} |
| 446 |
$(index).val(data); |
| 447 |
break; |
| 448 |
case "border-style": |
| 449 |
$(index).val(data); |
| 450 |
break; |
| 451 |
case "text-align": |
| 452 |
$(index).val(data); |
| 453 |
$(index).closest(".builder__editor--item").find(".button__align").removeClass("active"); |
| 454 |
$(index).closest(".builder__editor--item").find(".builder__editor--align-"+data).addClass("active"); |
| 455 |
if( data == "stat") |
| 456 |
break; |
| 457 |
default: |
| 458 |
data = data.replace("px",""); |
| 459 |
if(!isNaN(data)){ |
| 460 |
data = Math.ceil(data); |
| 461 |
} |
| 462 |
var type_text = $(index).attr("type"); |
| 463 |
if( type_text == "checkbox"){ |
| 464 |
if( data== "none"){ |
| 465 |
$(index).prop('checked', false);; |
| 466 |
}else{ |
| 467 |
$(index).prop('checked', true); |
| 468 |
} |
| 469 |
} |
| 470 |
$(index).val(data); |
| 471 |
} |
| 472 |
} |
| 473 |
$.yeemail_set_css_element =function( selector, style,builder,key) { |
| 474 |
var data = $(selector).val(); |
| 475 |
var data_value = $(selector).data("after_value"); |
| 476 |
if (data_value !== undefined) { |
| 477 |
data +=data_value; |
| 478 |
} |
| 479 |
if(key){ |
| 480 |
builder = builder.find(key); |
| 481 |
} |
| 482 |
switch(style) { |
| 483 |
case "display": |
| 484 |
if( $(selector).is(':checked') ) { |
| 485 |
builder.css(style,"inline-block"); |
| 486 |
}else{ |
| 487 |
builder.css(style,"none"); |
| 488 |
} |
| 489 |
break; |
| 490 |
case "text": |
| 491 |
builder.html(data); |
| 492 |
break; |
| 493 |
case "border-style": |
| 494 |
builder.css(style,data); |
| 495 |
break; |
| 496 |
case "background-image": |
| 497 |
if( data == ""){ |
| 498 |
builder.css("background-image",""); |
| 499 |
}else{ |
| 500 |
builder.css({"background-image":'url("' + data + '")', |
| 501 |
"background-position": "center", |
| 502 |
"background-repeat": "no-repeat", |
| 503 |
"background-size": "cover" |
| 504 |
}); |
| 505 |
} |
| 506 |
break; |
| 507 |
default: |
| 508 |
builder.css(style,data); |
| 509 |
break; |
| 510 |
} |
| 511 |
} |
| 512 |
}) |
| 513 |
})(jQuery); |