wp_blog/wp-content/themes/nuzi/framework/assets/js/pagebuilder.js

914 lines
48 KiB
JavaScript
Raw Normal View History

2020-01-02 23:15:16 +07:00
var $currentContentEditor='content';
var $currentDeleteModal=false;
var $pbSavingDone=true;
// Reset Content width
jQuery(function(){
$homeURI+='/';
if($homeURI[$homeURI.length-1]==='/'){$homeURI=$homeURI.substring(0,$homeURI.length-1);}
twSortDragg();
// init Source Datas
twInitSourceDatas(jQuery('#pagebuilder-area-source>div'));
// Click to Add Item
jQuery('#pagebuilder-elements-container>.item').click(function(){
jQuery('#pagebuilder-area>div').eq(1).append(jQuery(this).clone());
pbSaveData();
pbInitEvents();
});
// Layout Change
jQuery('#pagebuilder-select-layout>.sidebar').bind('click').bind('click',function(e){e.preventDefault();
var $currentLayout = jQuery(this);
var $currentValueArray = $currentLayout.attr('data-value').split(',');
var $currentLayoutInput=$currentLayout.siblings('.page-layout');
$currentLayout.addClass('active').siblings('.sidebar').removeClass('active');
$currentLayoutInput.attr("value",$currentLayout.attr('data-input'));
if($currentValueArray[0]!==''){
var $currentBuilderArea='';
var $currentBuilderAreaClasses='';
for(var i = 0, length=$currentValueArray.length ; i<length; i++){
$currentBuilderArea=jQuery('#pagebuilder-area').children('.builder-area').eq(i);
$currentBuilderAreaClasses=$currentBuilderArea.attr('class').split(' ');
for(var ind=0,len=$currentBuilderAreaClasses.length;ind<len;ind++){if($currentBuilderAreaClasses[ind].search('size-')!==-1){$currentBuilderArea.removeClass($currentBuilderAreaClasses[ind]).addClass('size-'+$currentValueArray[i]);break;}}
}
//START - Sidebar elements moving
var $oldSidebar=false;
var $newSidebar=false;
if($currentLayoutInput.val()=='left'){
jQuery('#pagebuilder-area').children('.builder-area').eq(1).removeClass('right-sidebar').removeClass('no-sidebar').addClass('left-sidebar');
$oldSidebar=jQuery('#pagebuilder-area').children('.builder-area').eq(-1);
$newSidebar=jQuery('#pagebuilder-area').children('.builder-area').eq(0);
}else if($currentLayoutInput.val()=='right'){
jQuery('#pagebuilder-area').children('.builder-area').eq(1).removeClass('left-sidebar').removeClass('no-sidebar').addClass('right-sidebar');
$oldSidebar=jQuery('#pagebuilder-area').children('.builder-area').eq(0);
$newSidebar=jQuery('#pagebuilder-area').children('.builder-area').eq(-1);
}else{
jQuery('#pagebuilder-area').children('.builder-area').eq(1).removeClass('left-sidebar').removeClass('right-sidebar').addClass('no-sidebar');
}
if($oldSidebar&&$newSidebar){
if($newSidebar.children().length===0){
$newSidebar.html($oldSidebar.html());
$oldSidebar.html('');
}
}
//END - Sidebar elements moving
pbSaveData();
pbInitEvents();
}
});
jQuery('#pagebuilder-select-layout>.sidebar.active').click();
pbInitEvents();
pbInitTemplateEvents();
pbSaveData();
});
function pbInitTemplateEvents(){
// Template Action
jQuery('.template-add').unbind('click').bind('click',function(e){e.preventDefault();
var $currentTemplateName = prompt('Template Name?');
var $currentTemplateLayout = jQuery('input[name="pb-page-layout"]') .val();
var $currentTemplateContent=encodeURIComponent(jQuery('#pagebuilder-area').html());
if($currentTemplateName==null){
return false;
}else if($currentTemplateName!='' && $currentTemplateLayout!=''){
jQuery.ajax({
type: "POST",
url: ajaxurl,
data: {
'action':'template_add',
'template_name':$currentTemplateName,
'template_content':$currentTemplateContent,
'template_layout':$currentTemplateLayout
},
success: function(response){
if(jQuery('.succes',response).text()!=''){
jQuery('ul.template-container').append('<li class="template-item"><a class="template-name">'+$currentTemplateName+'</a><span class="template-delete">X</span></li>');
pbInitTemplateEvents();
// alert(jQuery('.succes',response).text());
}else if(jQuery('.error',response).text()!=''){
alert(jQuery('.error',response).text());
}
}
});
}else{
alert('Template name is empty!!! Try again.');
}
jQuery('#template-save').removeClass('active').children('.template-container').slideUp();
});
jQuery('.template-name').unbind('click').bind('click',function(e){e.preventDefault();
var $currentTemplateName = jQuery(this).text();
var $currentResponse = 'waitingajax';
if($currentTemplateName){
jQuery.ajax({
type: "POST",
url: ajaxurl,
data: {
'action':'template_get',
'template_name':$currentTemplateName
},
success: function(response){
$currentResponse=response;
}
});
if(confirm("Your old contents are will delete ?")){
var templateAjaxInt=setInterval(function(){
if($currentResponse!=='waitingajax'){
clearInterval(templateAjaxInt);
if(jQuery('.data',$currentResponse).html()!=''){
jQuery('#pagebuilder-select-layout>[data-input="'+jQuery('.data>.layout',$currentResponse).text()+'"]').click();
jQuery('#pagebuilder-area').html('');
var tmp=jQuery($currentResponse).clone();
jQuery('>.data>.content>div',tmp).each(function(){
jQuery('#pagebuilder-area').append(jQuery(this).html(''));
});
twSortDragg();
// init Source Datas
twInitSourceDatas(jQuery('>.data>.content>div',$currentResponse));
pbSaveData();
pbInitEvents();
}else if(jQuery('.error',$currentResponse).text()!=''){
alert(jQuery('.error',$currentResponse).text());
}
}
},100);
}
}
jQuery('#template-save').removeClass('active').children('.template-container').slideUp();
});
jQuery('.template-delete').unbind('click').bind('click',function(e){e.preventDefault();
var $this = jQuery(this);
var $currentTemplateName = $this.closest('.template-item').find('.template-name').text();
if($currentTemplateName && confirm("Are you delete this template ?")){
jQuery.ajax({
type: "POST",
url: ajaxurl,
data: {
'action':'template_remove',
'template_name':$currentTemplateName
},
success: function(response){
$this.closest('.template-item').remove();
if(jQuery('.error',response).text()!=''){
alert(jQuery('.error',response).text());
}
}
});
}
jQuery('#template-save').removeClass('active').children('.template-container').slideUp();
});
// Template Style
jQuery('#template-save>.template').unbind('click').bind('click',function(e){e.preventDefault();
if(jQuery('#template-save').hasClass('active')){
jQuery('#template-save').removeClass('active').children('.template-container').slideUp();
}else{
jQuery('#template-save').addClass('active').children('.template-container').slideDown();
}
});
}
function pbInitEvents(){
// height repaire
var $builderMaxHeight=0;
jQuery('#pagebuilder-area>div').css('min-height','');
jQuery('#pagebuilder-area>div').each(function(){if(jQuery(this).height()>$builderMaxHeight){$builderMaxHeight=jQuery(this).height();}});
jQuery('#pagebuilder-area>div').css('min-height',$builderMaxHeight+'px');
// Sortable Draggable
twSortDragg();
//resize
jQuery(".builder-area>.item>.list>.size-sizer-container>.sizer>a.down").unbind("click").bind("click",function(e){e.preventDefault();
var $this = jQuery(this);
var $sizeList=jQuery('#size-list').clone();
var $currentItem = $this.closest('.item');
var $currentSizeText = jQuery('.list>.size-sizer-container>.size',$currentItem).text();
var $currentSizeList = jQuery('li[data-text="'+$currentSizeText+'"]',$sizeList);
$currentItem.removeClass($currentSizeList.attr('data-class'));
if($currentItem.attr('data-min')){$sizeList.find('[data-class="'+$currentItem.attr('data-min')+'"]').addClass('min').siblings('.min').removeClass('min');}
if($currentSizeList.hasClass('min')){
// $currentSizeList=$currentSizeList.siblings('.max');
}else{
$currentSizeList=$currentSizeList.prev();
}
$currentItem.addClass($currentSizeList.attr('data-class'));
jQuery('.list>.size-sizer-container>.size',$currentItem).text($currentSizeList.attr('data-text'));
pbSaveData();
});
jQuery(".builder-area>.item>.list>.size-sizer-container>.sizer>a.up").unbind("click").bind("click",function(e){e.preventDefault();
var $this = jQuery(this);
var $sizeList=jQuery('#size-list').clone();
var $currentItem = $this.closest('.item');
var $currentSizeText = jQuery('.list>.size-sizer-container>.size',$currentItem).text();
var $currentSizeList = jQuery('li[data-text="'+$currentSizeText+'"]',$sizeList);
$currentItem.removeClass($currentSizeList.attr('data-class'));
if($currentItem.attr('data-min')){$sizeList.find('[data-class="'+$currentItem.attr('data-min')+'"]').addClass('min').siblings('.min').removeClass('min');}
if($currentSizeList.hasClass('max')){
// $currentSizeList=$currentSizeList.siblings('.min');
}else{
$currentSizeList=$currentSizeList.next();
}
$currentItem.addClass($currentSizeList.attr('data-class'));
jQuery('.list>.size-sizer-container>.size',$currentItem).text($currentSizeList.attr('data-text'));
pbSaveData();
});
//duplicate
jQuery(".builder-area>.item>.list>.actions>a.action-duplicate").unbind("click").bind("click",function(e){e.preventDefault();
var $parent = jQuery(this).closest('.item');
var $newItem = $parent.clone().addClass('hidded').css('display','none');
$parent.after($newItem).promise().done(function(){
jQuery('.builder-area>.item.hidded').removeClass('hidded').fadeIn('slow').promise().done(function(){
pbSaveData();pbInitEvents();
});
});
});
//edit
jQuery(".builder-area>.item>.list>.actions>a.action-edit").unbind("click").bind("click",function(e){e.preventDefault();
$parent = jQuery(this).closest('.item');
$parent.addClass('item-modalled').siblings('.item-modalled').removeClass('item-modalled');
var $videoURL = jQuery(this).attr('data-video');
html = $parent.children('.data').html();
//pbInitModalSave
jQuery( '<div id="pb-modal-container" class="'+$parent.attr('data-slug')+'" />' ).append(html).dialog({
closeOnEscape: true,
title: $parent.children('.list').children('.name').text(),
resizable: false,
width: 800,
modal: true,
open: function(event, ui){
jQuery(this).closest('.ui-dialog').addClass('tw-pb-main-container');
jQuery(this).closest('.ui-dialog').focus();
if($parent.attr('data-help')){jQuery(this).closest('.ui-dialog').find('.ui-dialog-buttonpane').prepend('<a href="'+$parent.attr('data-help')+'" target="_blank" class="watch-tutorial">LINK</a>');}
pbModalInitActions(jQuery(this));
},
close: function(){
$currentContentEditor='content';
jQuery('#pb-modal-container').closest('.ui-dialog').remove();
jQuery('body>#pb-modal-container').remove();
},
buttons: {
"Save": function() {
pbModalSave(jQuery(this));
jQuery(this).dialog("close");
pbSaveData();
},
"Cancel": function() {
jQuery(this).dialog("close");
}
}
});
});
//remove item
jQuery(".builder-area>.item>.list>.actions>a.action-delete").unbind("click").bind("click",function(e){e.preventDefault();
$currentDeleteModal = jQuery(this).closest('.item');
//pbInitModalSave
jQuery( '<div id="pb-delete-modal-container" />' ).append('Are you sure to delete this?').dialog({
closeOnEscape: true,
title: 'Confirm',
resizable: false,
width: 800,
modal: true,
open: function(event, ui){
jQuery(this).closest('.ui-dialog').addClass('tw-pb-main-container');
jQuery(this).closest('.ui-dialog').find('.ui-dialog-buttonset>.ui-button').first().focus();
},
close: function(){
$currentDeleteModal=false;
jQuery('#pb-delete-modal-container').closest('.ui-dialog').remove();
jQuery('body>#pb-delete-modal-container').remove();
},
buttons: {
"Yes": function() {
$currentDeleteModal.remove();
$currentDeleteModal=false;
pbSaveData();
jQuery(this).dialog("close");
},
"No": function() {
jQuery(this).dialog("close");
}
}
});
});
}
function pbSaveData(){
var savingInt=setInterval(function(){
if($pbSavingDone){
$pbSavingDone=false;
clearInterval(savingInt);
var item = '';
jQuery('#pagebuilder-area>div').each(function(iCont){
var $currentContainer=jQuery(this);
var $size='';
var $classes=$currentContainer.attr('class').split(' ');
for(var i=0,len=$classes.length;i<len;i++){
if($classes[i].search('size-')!==-1){
$size=$classes[i];
break;
}
}
if(iCont){item += ',';}
item += '"'+iCont+'":{"size":"'+$size+'","items":{';
$currentContainer.children('.item').each(function(i){
var $currentItem=jQuery(this);
if(i){item += ',';}
item += '"'+i+'":{"slug":"'+$currentItem.attr('data-slug')+'","size":"' + jQuery('.list>.size-sizer-container>.size',$currentItem).text() + '",';
jQuery('.data .general-field-container>.field-item>.field-data>.field',$currentItem).each(function(){
var $currentField=jQuery(this);
item += '"'+$currentField.attr('data-name')+'":"'+$currentField.val()+'",';
}).promise().done(function(){
item += '"settings":{';
jQuery('.data .custom-field-container>.field-item>.field-data>.field',$currentItem).each(function(index){
var $currentField=jQuery(this);
if(index){item += ',';}
if($currentField.attr('data-type')==='container'){
item += '"'+$currentField.attr('data-name')+'":{';
$currentField.children('.container-item').each(function(itemIndex){
var $currentContainerItem=jQuery(this);
if(itemIndex){item += ',';}
item += '"'+itemIndex+'":{';
jQuery('.content>.field-item>.field-data>.field',$currentContainerItem).each(function(fieldIndex){
var $currentContainerItemField = jQuery(this);
if(fieldIndex){item += ',';}
item += '"'+$currentContainerItemField.attr('data-name')+'":"'+encodeURIComponent($currentContainerItemField.val())+'"';
});
item += '}';
});
item += '}';
}else{
item += '"'+$currentField.attr('data-name')+'":"'+encodeURIComponent($currentField.val())+'"';
}
}).promise().done(function(){
item += '}}';
});
});
}).promise().done(function(){
item += '}}';
});
}).promise().done(function(){
// jQuery('textarea#pb_content').val('{'+item+'}');
jQuery('textarea#pb_content').val(encodeURIComponent('{'+item+'}'));
$pbSavingDone=true;
});
}
},500);
}
function pbModalInitActions($currentModal){
//Font Awesome Actions
jQuery('[data-name="fa_icon"]',$currentModal).each(function(){
var $currIconField = jQuery(this).closest('.field-item');
var $currFa = $currIconField.siblings('.field-item.type-fa').hasClass('type-fa')?$currIconField.siblings('.field-item.type-fa'):$currentModal;
var $currFaFields = $currIconField.parent().children('.field-item');
//Font Awesome Viewer
jQuery('[data-name="fa_icon"]',$currFaFields).unbind('input').bind('input',function(){
var $style='display:block; text-align:center; margin: 0 auto;';
$style +='font-size:' +jQuery('[data-name="fa_size"]', $currFaFields).val()+';';
$style +='width:' +jQuery('[data-name="fa_size"]', $currFaFields).val()+';';
$style +='line-height:' +jQuery('[data-name="fa_size"]', $currFaFields).val()+';';
$style +='padding:' +jQuery('[data-name="fa_padding"]', $currFaFields).val()+';';
$style +='color:' +jQuery('[data-name="fa_color"]', $currFaFields).val()+';';
$style +='border-color:'+jQuery('[data-name="fa_bg_color"]',$currFaFields).val()+';';
$style +='border-width:' +jQuery('[data-name="fa_rounded"]', $currFaFields).val()+';';
jQuery('.fa-viewer',$currFa).html('<i class="'+jQuery('[data-name="fa_icon"]', $currFaFields).val()+'" style="border-radius: 50%;-moz-border-radius: 50%;-webkit-border-radius: 50%; border-style: solid; '+$style+'"></i>').css('padding',jQuery('[data-name="fa_padding"]',$currFaFields).val());
});
jQuery('[data-name="fa_icon"]',$currFaFields).trigger('input');
//Font Awesome Modal
jQuery('.remove-fa',$currFa).unbind('click').bind('click',function(e){e.preventDefault();
jQuery('[data-name="fa_size"]', $currFaFields).val('');
jQuery('[data-name="fa_padding"]', $currFaFields).val('');
jQuery('[data-name="fa_color"]', $currFaFields).val('');
jQuery('[data-name="fa_bg_color"]',$currFaFields).val('');
jQuery('[data-name="fa_rounded"]', $currFaFields).val('');
jQuery('[data-name="fa_icon"]', $currFaFields).val('').trigger('input');
});
//Font Awesome Modal
jQuery('.show-fa-modal',$currFa).unbind('click').bind('click',function(e){e.preventDefault();
var $currentButton=jQuery(this);
if($currentButton.not('.loading')){
$currentButton.addClass('loading');
jQuery.ajax({
type: "POST",
url: ajaxurl,
data: {
'action':'get_fontawesome'
},
success: function(response){
if(jQuery(response).hasClass('fontawesome-ajax-data')){
jQuery( '<div id="fontawesome_container_dialog" data-current="none" />').append(jQuery(response).html()).dialog({
title: 'Font Awesome',
resizable: true,
width: 800,
// height: 500,
modal: true,
open: function(){
jQuery(this).closest('.ui-dialog').addClass('tw-pb-main-container');
jQuery(this).closest('.ui-dialog').focus();
pbModalSaveField($currFaFields,jQuery(this).find('.general-field-container').children('.field-item'));
pbModalInitActions(jQuery(this));
pbFaModalInitActions(jQuery(this));
},
close: function(){
jQuery('#fontawesome_container_dialog').closest('.ui-dialog').remove();
jQuery('body>#fontawesome_container_dialog').remove();
},
buttons: {
"Insert": function() {
pbModalSaveField(jQuery(this).find('.general-field-container').children('.field-item'),$currentButton.closest('.field-item').parent().children('.field-item'));
$currentButton.closest('.field-item').parent().find('[data-name="fa_icon"]').trigger('input');
jQuery(this).dialog("close");
},
"Cancel": function() {
jQuery(this).dialog("close");
}
}
});
}
$currentButton.removeClass('loading');
}
});
}
});
});
//Upload Button Item
jQuery('.field-item>.field-data>[data-type="button"]',$currentModal).each(function(){
var $currentButton=jQuery(this);
var $currentButtonSaveTo=$currentButton.attr('data-save-to');
if($currentButtonSaveTo!==''){
$currentButton.unbind('click').bind('click',function(){
var $currentSaveField = $currentButton.closest('.field-item').siblings('.field-item').find('>.field-data>[data-name="'+$currentButtonSaveTo+'"]',$currentModal);
window.original_send_to_editor = window.send_to_editor;
window.custom_editor = true;
window.send_to_editor = function(html){
html = jQuery("<div />").html(html);
$currentSaveField.val(jQuery(html).find('img').attr('src'));
tb_remove();
};
tb_show('Upload', $homeURI+'/wp-admin/media-upload.php?post_ID=' + pID + '&type=image&TB_iframe=true',false);
jQuery('#TB_overlay').css('z-index','9998');
jQuery('#TB_window').css('z-index','9999');
});
}
});
//TextEditor Item
jQuery('.field-item>.field-data>[data-tinymce="true"]',$currentModal).each(function(){
var $currentEditor=jQuery(this);
var $currentEditorName=$currentEditor.attr('data-name');
pbModalContentEditor($currentEditorName,$currentEditor);
$currentContentEditor=$currentEditorName;
});
//CheckBox Item
jQuery('.field-item>.field-data>[data-type="checkbox"]',$currentModal).each(function(){
var $currentCheck=jQuery(this);
var $currentCheckText=$currentCheck.next('.checkbox-text');
$currentCheckText.children('.checkbox-true').unbind('click').bind('click',function(){
$currentCheck.attr("value",true).attr("checked",true).change();
if($currentCheck.closest('.ui-dialog-content.ui-widget-content').hasClass('accordion')){
$currentCheck.closest('.container-item').siblings('.container-item').find('.field-item>.field-data>[data-name="'+$currentCheck.attr('data-name')+'"]').next('.checkbox-text').children('.checkbox-false').click();
}
});
$currentCheckText.children('.checkbox-false').unbind('click').bind('click',function(){
$currentCheck.attr("value",false).attr("checked",false).change();
});
$currentCheck.unbind('change').bind('change',function(){
var $checked=$currentCheck.is(':checked');
var $styleON={
color: '#333333',
borderColor: '#bebebe',
backgroundColor: '#fff'
};
var $styleOFF=$styleON;
if($checked){
$currentCheckText.removeClass('checked-false').addClass('checked-true');
$styleON={
color: '#ffffff',
borderColor: '#6395c0',
backgroundColor: '#9ed5fe'
};
}else{
$currentCheckText.removeClass('checked-true').addClass('checked-false');
$styleOFF={
color: '#ffffff',
borderColor: '#8f8f8f',
backgroundColor: '#a4a4a4'
};
}
$currentCheckText.children('.checkbox-true') .animate($styleON, 300);
$currentCheckText.children('.checkbox-false').animate($styleOFF,300);
});
$currentCheck.change();
});
//Select Item
jQuery('.field-item>.field-data>select',$currentModal).each(function(){
var $currentSelect=jQuery(this);
var $currentSelectText=$currentSelect.next('.select-text');
$currentSelectText.width(pbItemRL($currentSelect)+$currentSelect.width()-pbItemRL($currentSelectText));
});
jQuery('.field-item>.field-data>select',$currentModal).unbind('change').bind('change',function(){
var $currentSelect=jQuery(this);
var $currentVal=$currentSelect.val();
var $currentSelectText=$currentSelect.next('.select-text');
var $currentSelectOption=$currentSelect.find('option[value="'+$currentVal+'"]');
var $currentHideArray= $currentSelectOption.attr('hide')?$currentSelectOption.attr('hide').split(','):[""];
$currentSelectOption.attr('selected','selected').siblings().removeAttr('selected');
if($currentHideArray[0]!==''){
$currentSelect.closest('.field-item').parent().children('.field-item.hide-for-select').removeClass('hide-for-select').show();
for(var i = 0, length=$currentHideArray.length ; i<length; i++){
if($currentHideArray[i]==='fa'){
$currentSelect.closest('.field-item').siblings('.field-item.type-fa').addClass('hide-for-select').hide();
}else{
$currentSelect.closest('.field-item').siblings('.field-item').find('>.field-data>[data-name="'+$currentHideArray[i]+'"]').closest('.field-item').addClass('hide-for-select').hide();
}
}
}
$currentSelectText.text($currentSelectOption.text());
if($currentSelect.attr('id')==='style_shortcode'&&$currentVal!=='none'){
$currentSelect.children('option[value="none"]').attr('selected','selected').siblings().removeAttr('selected');
twGetShortcode($currentVal);
}
});
jQuery('.field-item>.field-data>select',$currentModal).change();
//Color Picker Item
jQuery('.field-item>.field-data>[data-type="color"]',$currentModal).each(function(){
var $currentInput=jQuery(this);
jQuery($currentInput.siblings(".color-info")).ColorPicker({
onShow: function (colpkr) {
jQuery(colpkr).find('.colorpicker_hex>input').val($currentInput.val().replace('#','')).change();
jQuery(colpkr).fadeIn(500);
return false;
},
onHide: function (colpkr) {
jQuery(colpkr).fadeOut(500);
return false;
},
onChange: function (hsb, hex, rgb, el) {
$currentInput.siblings('.color-info').css('background-color','#' + hex);
$currentInput.val('#' + hex).change().trigger('input');
}
});
$currentInput.unbind('input change').bind('input change',function(){
if(jQuery(this).val()===''){jQuery(this).val(' ');}
$currentInput.siblings('.color-info').css('background-color',jQuery(this).val());
});
jQuery(this).change();
});
//Container Item
jQuery('.field-item>.field-data>[data-type="container"]',$currentModal).each(function(){
var $currentContainer = jQuery(this);
jQuery('.field-item>.field-data>[data-name="'+$currentContainer.attr('data-add-button')+'"]',$currentModal).unbind('click').bind('click',function(e){e.preventDefault();
var $currentButton=jQuery(this);
var $newElement = $currentButton.next('.data').find('[data-type="container"]');
if($currentContainer.attr('data-container-type')==='toggle'){
$currentContainer.append($newElement.html());
pbModalInitActions($currentModal);
}else{
window.original_send_to_editor = window.send_to_editor;
window.custom_editor = true;
window.send_to_editor = function(html){
html = jQuery("<div />").html(html);
jQuery(html).find('img').each(function(){
$newElement.find('.image-src').attr('src',jQuery(this).attr('src'));
$newElement.find('[data-name="'+$newElement.attr('data-title-as')+'"]').attr('value',jQuery(this).attr('src'));
$currentContainer.append($newElement.html());
}).promise().done(function(){
tb_remove();
pbModalInitActions($currentModal);
});
};
tb_show('Upload', $homeURI+'/wp-admin/media-upload.php?post_ID=' + pID + '&type=image&TB_iframe=true',false);
jQuery('#TB_overlay').css('z-index','9998');
jQuery('#TB_window').css('z-index','9999');
}
});
if($currentContainer.attr('data-container-type')==='toggle'){
jQuery('.container-item>.content>.field-item>.field-data>[data-name="'+$currentContainer.attr('data-title-as')+'"]',$currentContainer).each(function(){
var $currentChanger=jQuery(this);
var $currentChangerType=$currentChanger.attr('data-type');
if($currentChangerType==='select'){
$currentChanger.bind('change',function(){
$currentChanger.closest('.container-item').children('.list').children('.name').text($currentChanger.val());
});
$currentChanger.change();
}else{
$currentChanger.unbind('input').bind('input',function(e){e.preventDefault();
$currentChanger.closest('.container-item').children('.list').children('.name').text($currentChanger.val());
});
$currentChanger.trigger('input');
}
});
}
});
jQuery('.container-item>.list',$currentModal).unbind('click').bind('click',function(e){e.preventDefault();
var $containerItem = jQuery(this).closest('.container-item');
if($containerItem.closest('.container').attr('data-container-type')==='toggle'){
if($containerItem.hasClass('expanded')){
jQuery(this).next('.content').slideUp("normal", function(){$containerItem.removeClass('expanded');});
}else{
jQuery(this).next('.content').slideDown("normal", function(){$containerItem.addClass('expanded');});
}
}
});
jQuery('.container-item>.list>.actions>.action-delete',$currentModal).unbind('click').bind('click',function(e){e.preventDefault();
jQuery(this).closest('.container-item').remove();
});
jQuery('.container-item>.list>.actions>.action-duplicate',$currentModal).unbind('click').bind('click',function(e){e.preventDefault();
var $parent = jQuery(this).closest('.container-item');
var $newItem = $parent.clone().addClass('hidded').css('display','none');
$parent.after($newItem).promise().done(function(){
$newItem.removeClass('hidded').fadeIn('slow').promise().done(function(){
pbModalInitActions($currentModal);
});
});
return false;
});
jQuery('.field-item>.field-data>[data-type="container"]',$currentModal).sortable({placeholder: 'container-item placeholding'});
//Category Item
function catReseter($currentCategorySelector, $currentSaveTo){
var $currentCategoryList = $currentCategorySelector.siblings('.category-list-container');
var $currentSaveToArray=$currentSaveTo.val().split(',');
$currentCategorySelector.find('option').show();
$currentCategoryList.html('');
for (var i = 0, length=$currentSaveToArray.length ; i<length; i++){
if($currentSaveToArray[i]!==''){
$currentCategoryList.append('<div class="category-list-item clearfix" data-value="'+$currentSaveToArray[i]+'"><div class="name">'+$currentCategorySelector.find('option[value="'+$currentSaveToArray[i]+'"]').hide().text()+'</div><div class="actions"><a href="#" class="action-delete">X</a></div></div>');
}
}
$currentCategoryList.find(".category-list-item .action-delete").unbind('click').bind('click',function(){
var $oldArray=$currentSaveTo.val().split(',');
var $newArray=[];
var $delValue=jQuery(this).closest(".category-list-item").attr('data-value');
jQuery(this).closest(".category-list-item").remove();
for (var i = 0, length=$oldArray.length ; i<length; i++){
if($oldArray[i]!==$delValue && $oldArray[i]!==''){
$newArray.push($oldArray[i]);
}
}
$currentSaveTo.val($newArray.join(','));
catReseter($currentCategorySelector, $currentSaveTo)
});
}
jQuery('.field-item>.field-data>[data-type="category"]',$currentModal).each(function(){
var $currentCategorySelector = jQuery(this);
var $currentCategoryList = $currentCategorySelector.siblings('.category-list-container');
var $currentSaveTo = jQuery('.field-item>.field-data>[data-selector="'+$currentCategorySelector.attr('data-name')+'"]',$currentModal);
$currentCategorySelector.change(function(){
var $val = $currentCategorySelector.val();
var $noProblem = true;
$currentCategoryList.children(".category-list-item").each(function(){
if(jQuery(this).attr('data-value') == $val) {
$noProblem = false;
}
});
if($val == 0 || $val == '0'){
return false;
}else{
$currentCategorySelector.children('option[value="0"]').attr('selected','selected').siblings().removeAttr('selected');
$currentCategorySelector.change();
if($noProblem){
var $currentSaveToArray = $currentSaveTo.val().split(',');
if($currentSaveToArray.indexOf($val)<0){
if($currentSaveToArray[0]===''){
$currentSaveToArray[0]=$val;
}else{
$currentSaveToArray.push($val);
}
$currentSaveTo.val($currentSaveToArray.join(','));
}
catReseter($currentCategorySelector,$currentSaveTo);
}
}
});
catReseter($currentCategorySelector,$currentSaveTo);
});
jQuery('textarea',$currentModal).each(function(){
var $currTextArea=jQuery(this);
$currTextArea.unbind('input').bind('input',function(){$currTextArea.html($currTextArea.val());});
});
}
function pbFaModalInitActions($currentFaModal){
jQuery('ul.unstyled>li',$currentFaModal).unbind('click').bind('click',function(e){e.preventDefault();
var $iconClass=jQuery(this).children('span').not('.muted');
jQuery('[data-name="fa_icon"]',$currentFaModal).val($iconClass.text().replace(' ','')).trigger('input');
});
jQuery('[data-name="fa_size"],[data-name="fa_padding"],[data-name="fa_color"],[data-name="fa_bg_color"],[data-name="fa_rounded"]',$currentFaModal).unbind('input').bind('input',function(){
jQuery('[data-name="fa_icon"]',$currentFaModal).trigger('input');
});
}
function pbModalSaveField($from,$to){
$from.each(function(){
var $currentField = jQuery(this).children('.field-data').children('.field');
var $currentFieldSlug = $currentField.attr('data-name');
var $currentFieldType = $currentField.attr('data-type');
var $currentFieldAddButton= $currentField.attr('data-add-button');
var $currentFieldValue = $currentField.val();
switch($currentFieldType){
case 'select':{
jQuery('>.field-data>.field[data-name="'+$currentFieldSlug+'"] option[value="'+$currentFieldValue+'"]',$to).attr('selected','selected').siblings().removeAttr('selected');
break;
}
case 'textArea':{
if($currentField.attr('data-tinyMCE')==='true'){
tinyMCE.execCommand('mceAddControl', false, $currentContentEditor);
jQuery('>.field-data>.field[data-name="'+$currentFieldSlug+'"]',$to).html(tinyMCE.get($currentContentEditor).getContent());
}else{
jQuery('>.field-data>.field[data-name="'+$currentFieldSlug+'"]',$to).html($currentFieldValue);
}
break;
}
case 'container':{
var $newContainer = jQuery('>.field-data>.field[data-name="'+$currentFieldSlug+'"]',$to);
var $template=jQuery('>.field-data>.field[data-name="'+$currentFieldAddButton+'"]',$from).next('.data').children('.field-item').children('.field-data').children('.field').html();
$template = jQuery('<div/>').append($template);
$newContainer.html('');
$currentField.children('.container-item').each(function(){
jQuery(this).find('>.content>.field-item>.field-data>.field').each(function(){
var $cField = jQuery(this);
var $cFieldSlug = $cField.attr('data-name');
var $cFieldType = $cField.attr('data-type');
var $cFieldValue = $cField.val();
switch($cFieldType){
case 'select':{
jQuery('.field[data-name="'+$cFieldSlug+'"] option[value="'+$cFieldValue+'"]',$template).attr('selected','selected').siblings().removeAttr('selected');
break;
}
case 'textArea':{
jQuery('.field[data-name="'+$cFieldSlug+'"]',$template).html($cFieldValue);
break;
}
case 'checkbox':{
jQuery('.field[data-name="'+$cFieldSlug+'"]',$template).attr("value",$cField.is(':checked')).attr("checked",$cField.is(':checked'));
break;
}
default:{
jQuery('.field[data-name="'+$cFieldSlug+'"]',$template).attr("value",$cFieldValue);
break;
}
}
});
$newContainer.append($template.html());
});
break;
}
case 'checkbox':{
jQuery('>.field-data>.field[data-name="'+$currentFieldSlug+'"]',$to).attr("value",$currentField.is(':checked')).attr("checked",$currentField.is(':checked'));
break;
}
default:{
jQuery('>.field-data>.field[data-name="'+$currentFieldSlug+'"]',$to).attr("value",$currentFieldValue);
break;
}
}
});
}
function pbModalSave($item){
var $saveTo = jQuery('.item.item-modalled');
$saveTo.removeClass('item-modalled');
pbModalSaveField($item.find('.general-field-container').children('.field-item'),$saveTo.find('.general-field-container').children('.field-item'));
pbModalSaveField($item.find('.custom-field-container') .children('.field-item'),$saveTo.find('.custom-field-container') .children('.field-item'));
}
/* Item Right Left Width */
/* ------------------------------------------------------------------- */
function pbItemRL($item){
$item=jQuery($item);
var $itemMarginRL = parseInt($item.css('margin-left') .replace('px','')) + parseInt($item.css('margin-right').replace('px',''));
var $itemPaddingRL = parseInt($item.css('padding-left').replace('px','')) + parseInt($item.css('padding-right').replace('px',''));
var $itemBorderRL = parseInt($item.css('border-left-width').replace('px','')) + parseInt($item.css('border-right-width').replace('px',''));
var $itemRL = $itemMarginRL+$itemPaddingRL+$itemBorderRL;
return $itemRL;
}
/* Content Editor */
function pbModalContentEditor($id,$currentEditor){
var $language = jQuery('html').attr('lang');
var $currentField = $currentEditor.closest('.field-data');
$language = $language.substr(0,$language.indexOf('-'));
var $wpFullscreenContentCSS=$homeURI+"/wp-includes/js/tinymce/plugins/wpfullscreen/css/wp-fullscreen.css";
var $newEditorDiv= jQuery('<div />').append($currentEditor.clone().attr('id',$id));
$currentEditor.hide().closest('.field-data').append(
'<div id="wp-content-editor-tools" class="wp-editor-tools tw-editor-menu hide-if-no-js">'+
'<a id="content-tmce" class="change-to-html wp-switch-editor switch-html" onclick="switchEditors.switchto(this);">Text</a>'+
'<a id="content-html" class="change-to-visual disabled wp-switch-editor switch-tmce" onclick="switchEditors.switchto(this);">Visual</a>'+
'</div>'+
'<div id="wp-content-editor-container" class="tw-editor-content">'+
$newEditorDiv.html()+
'</div>'
).promise().done(function(){
tinyMCE.init({
mode:"exact",
width:"100%",
theme:"advanced",
skin:"wp_theme",
language:$language,
theme_advanced_toolbar_location:"top",
theme_advanced_toolbar_align:"left",
theme_advanced_statusbar_location:"bottom",
theme_advanced_resizing:true,
theme_advanced_resize_horizontal:false,
dialog_type:"modal",
formats:{
alignleft:[{
selector:'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li',
styles:{
textAlign:'left'
}
},{
selector:'img,table',
classes:'alignleft'
}],
aligncenter:[{
selector:'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li',
styles:{
textAlign:'center'
}
},{
selector:'img,table',
classes:'aligncenter'
}],
alignright:[{
selector:'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li',
styles:{
textAlign:'right'
}
},{
selector:'img,table',
classes:'alignright'
}],
strikethrough:{
inline:'del'
}
},
relative_urls:false,
remove_script_host:false,
convert_urls:false,
remove_linebreaks:true,
fix_list_elements:true,
keep_styles:false,
entities:"38,amp,60,lt,62,gt",
accessibility_focus:true,
media_strict:false,
paste_remove_styles:true,
paste_remove_spans:true,
paste_strip_class_attributes:"all",
paste_text_use_dialog:true,
webkit_fake_resize:false,
schema:"html5",
wpeditimage_disable_captions:false,
wp_fullscreen_content_css:$wpFullscreenContentCSS,
// plugins:"inlinepopups,spellchecker,tabfocus,paste,media,wordpress,wpeditimage,wpgallery,wplink,wpdialogs,-twshortcodegenerator",
plugins:"inlinepopups,tabfocus,paste,media,wpeditimage,wpgallery,wplink,wpdialogs,-twshortcodegenerator",
elements:$id,
wpautop:true,
apply_source_formatting:false,
theme_advanced_buttons1:"bold,italic,strikethrough,bullist,numlist,blockquote,justifyleft,justifycenter,justifyright,link,unlink,wp_more,wp_fullscreen,wp_adv,|,twshortcodegenerator",
theme_advanced_buttons2:"formatselect,underline,justifyfull,forecolor,pastetext,pasteword,removeformat,charmap,outdent,indent,undo,redo,wp_help",
theme_advanced_buttons3:"",
theme_advanced_buttons4:"",
tabfocus_elements:"sample-permalink,post-preview",
body_class:"content post-type-page",
theme_advanced_resizing_use_cookie:false
});
jQuery('a.change-to-html',$currentField).unbind('click').bind('click',function() {
jQuery(this).addClass('disabled').siblings('a').removeClass('disabled');
tinyMCE.execCommand('mceRemoveControl', false, $id);
});
jQuery('a.change-to-visual',$currentField).unbind('click').bind('click',function() {
jQuery(this).addClass('disabled').siblings('a').removeClass('disabled');
tinyMCE.execCommand('mceAddControl', false, $id);
});
});
}
function twInitSourceDatas($from){
jQuery('#pagebuilder-area>div').each(function(i){
jQuery(this).html($from.eq(i).html());
});
}
function twSortDragg(){
//Sortables
jQuery("#pagebuilder-area>div").sortable({
placeholder: 'item placeholding',
connectWith: "#pagebuilder-area>div",
// helper:'original',
revert: true,
update: function(event, ui){
pbSaveData();
pbInitEvents();
},
start: function(event, ui) {
var plus;
if(ui.item.hasClass('size-1-4')) plus = 'size-1-4';
else if(ui.item.hasClass('size-1-3')) plus = 'size-1-3';
else if(ui.item.hasClass('size-1-2')) plus = 'size-1-2';
else if(ui.item.hasClass('size-2-3')) plus = 'size-2-3';
else if(ui.item.hasClass('size-3-4')) plus = 'size-3-4';
else if(ui.item.hasClass('size-1-1')) plus = 'size-1-1';
else plus = 'size-1-3';
ui.placeholder.addClass(plus);
}
});
// Draggable
try{
jQuery('#pagebuilder-elements-container>.item').draggable({
connectToSortable: '#pagebuilder-area>div',
helper: 'clone',
revert: "invalid"
});
}catch(err){}
}