File "settings.js"
Full path: /home/kosmetik/public_html/wp-content/plugins/unlimited-elements-for-elementor/js/settings.js
File
size: 86.85 B
MIME-type: text/plain
Charset: utf-8
Download Open Edit Advanced Editor Back
"use strict";
function UniteSettingsUC(){
var g_arrControls = {};
var g_arrChildrenControls = {};
var g_IDPrefix = "#unite_setting_";
var g_colorPicker, g_colorPickerWrapper, g_iconsHash={};
var g_objParent = null, g_objWrapper = null, g_objSapTabs = null;
var g_objProvider = new UniteProviderAdminUC();
var g_vars = {
NOT_UPDATE_OPTION: "unite_settings_no_update_value",
keyupTrashold: 500
};
var g_temp = {
settingsID:null,
handle: null,
enableTriggerChange: true,
cacheValues: null,
objItemsManager: null,
objFontsPanel:null,
isSidebar: false,
isInited: false,
customSettingsKey: "custom_setting_type",
colorPickerType: null,
isRepeaterExists: false
};
this.events = {
CHANGE: "settings_change",
INSTANT_CHANGE: "settings_instant_change",
AFTER_INIT: "after_init",
OPEN_CHILD_PANEL: "open_child_panel"
};
var g_options = {
show_saps:false,
saps_type:""
};
if(!g_ucAdmin)
var g_ucAdmin = new UniteAdminUC();
var t=this;
/**
* validate that the parent exists
*/
function validateInited(){
if(!g_objParent || g_objParent.length == 0)
throw new Error("The parent not given, settings not inited");
}
/**
* compare control values
*/
function iscValEQ(controlValue, value){
if(typeof value != "string"){
return jQuery.inArray( controlValue, value) != -1;
}else{
return (value.toLowerCase() == controlValue);
}
}
/**
* get input by name and filter by type.
* if not found or filtered, return null
*/
this.getInputByName = function(name, type){
var inputID = g_IDPrefix+name;
var objInput = jQuery(inputID);
if(objInput.length == 0)
return(null);
if(!type)
return(objInput);
var inputType = objInput[0].type;
if(type != inputType)
return(null);
return(objInput);
};
/**
* close all accordion items
*/
function closeAllAccordionItems(formID){
jQuery("#"+formID+" .unite-postbox .inside").slideUp("fast");
jQuery("#"+formID+" .unite-postbox .unite-postbox-title").addClass("box_closed");
}
this.__________OTHER_EXTERNAL__________ = function(){};
/**
* init tipsy
*/
function initTipsy(gravity){
if(!g_objWrapper)
return(false);
if(typeof jQuery("body").tipsy != "function")
return(false);
if(!gravity)
gravity = "s";
var tipsyOptions = {
html:true,
gravity:"s",
delayIn: 1000,
selector: ".uc-tip"
};
g_objWrapper.tipsy(tipsyOptions);
}
/**
* get all settings inputs
*/
function getObjInputs(controlsOnly){
validateInited();
//include
var selectors = "input, textarea, select, .unite-setting-inline-editor, .unite-setting-input-object";
var selectorNot = "input[type='button'], input[type='range'], select.select2-hidden-accessible";
if(controlsOnly === true){
selectors = "input[type='radio'], select, input.unite-setting-addonpicker";
}else{
//items
if(g_temp.objItemsManager){
selectors += ", .uc-setting-items-panel";
selectorNot += ", .uc-setting-items-panel select, .uc-setting-items-panel input, .uc-setting-items-panel textarea";
}
//fonts
if(g_temp.objFontsPanel){
selectors += ", .uc-setting-fonts-panel";
selectorNot += ", .uc-setting-fonts-panel select, .uc-setting-fonts-panel input, .uc-setting-fonts-panel textarea";
}
if(g_temp.isRepeaterExists == true)
selectorNot += ", .unite-settings-repeater *";
}
var objInputs = g_objParent.find(selectors).not(selectorNot);
return(objInputs);
}
/**
* get input name
*/
function getInputName(objInput){
var name = objInput.attr("name");
if(!name)
name = objInput.data("name");
return(name);
}
/**
* get input basic type
*/
function getInputBasicType(objInput){
if(!objInput){
console.trace();
throw new Error("empty input, can't get basic type");
}
var type = objInput[0].type;
if(!type)
type = objInput.prop("tagName").toLowerCase();
switch(type){
case "select-one":
case "select-multiple":
type = "select";
break;
}
return(type);
}
/**
* get input type
*/
function getInputType(objInput){
if(!objInput){
console.trace();
throw new Error("empty input, can't get type");
}
if(objInput.hasClass("select2-hidden-accessible"))
return(null);
if(!objInput || objInput.length == 0){
console.trace();
throw new Error("getInputType - objInput is empty");
}
if(!objInput[0]){
trace("wrong input object");
console.trace();
}
var type = objInput[0].type;
if(!type)
type = objInput.prop("tagName").toLowerCase();
var customType = objInput.data("settingtype");
switch(type){
case "select-multiple":
type = "multiselect";
if(customType)
type = customType;
break;
case "select-one":
type = "select";
if(customType)
type = customType;
break;
case "number":
type = "text";
if(objInput.hasClass("unite-setting-range"))
type="range";
break;
case "text":
if(objInput.hasClass("unite-color-picker"))
type = "color";
else if(objInput.hasClass("unite-setting-image-input"))
type = "image";
else if(objInput.hasClass("unite-setting-mp3-input"))
type = "mp3";
else if(objInput.hasClass("unite-postpicker-input"))
type="post";
else if(objInput.hasClass("unite-iconpicker-input"))
type="icon";
else if(objInput.hasClass("unite-setting-range"))
type="range";
else if(objInput.hasClass("unite-setting-addonpicker"))
type="addon";
break;
case "textarea":
if(objInput.hasClass("mce_editable") || objInput.hasClass("wp-editor-area"))
type = "editor_tinymce";
break;
case "div":
type = customType;
if(!type){
if(objInput.hasClass("uc-setting-items-panel"))
type = "items";
else
if(objInput.hasClass("uc-setting-fonts-panel"))
type = "fonts";
else
if(objInput.hasClass("unite-setting-inline-editor"))
type = "editor_tinymce";
}
break;
}
return(type);
}
/**
* get input value
*/
function getSettingInputValue(objInput){
var name = getInputName(objInput);
var type = getInputType(objInput);
var value = objInput.val();
var inputID = objInput.prop("id");
if(!name)
return(g_vars.NOT_UPDATE_OPTION);
var flagUpdate = true;
switch(type){
case "hidden": //allow to pass objects
var hiddenValue = objInput.data("input_value");
if(hiddenValue)
value = hiddenValue;
break;
case "select":
var selectedText = objInput.children("option:selected").html();
break;
case "checkbox":
value = objInput.is(":checked");
break;
case "radio":
if(objInput.is(":checked") == false)
flagUpdate = false;
break;
case "button":
flagUpdate = false;
break;
case "editor_tinymce":
if(typeof tinyMCE != "undefined"){
var objEditor = tinyMCE.EditorManager.get(inputID);
if(objEditor)
value = objEditor.getContent();
}
break;
case "image":
var imageID = objInput.data("imageid");
if(imageID && jQuery.isNumeric(imageID))
value = imageID;
case "mp3":
var source = objInput.data("source");
//convert to relative url if not addon
if(source != "addon" && jQuery.isNumeric(value) == false)
value = g_ucAdmin.urlToRelative(value);
break;
case "post":
value = getPostPickerValue(objInput);
break;
case "items":
value = g_temp.objItemsManager.getItemsData();
break;
case "fonts":
value = t.getFontsPanelData();
break;
case "map":
value = objInput.data("mapdata");
break;
case "repeater":
value = getRepeaterValues(objInput);
break;
case "multiselect":
value = multiSelectModifyAfterGet(value);
break;
case "dimentions":
value = dimentionsGetValues(objInput);
break;
default:
//custom settings
var objCustomType = getCustomSettingType(type);
if(objCustomType){
if(objCustomType.funcGetValue)
value = objCustomType.funcGetValue(objInput, t);
else
value = "";
}
break;
}
if(flagUpdate == false)
return(g_vars.NOT_UPDATE_OPTION);
return(value);
}
/**
* get settings values object by the parent
*/
this.getSettingsValues = function(controlsOnly, isChangedOnly){
validateInited();
var obj = new Object();
var name,value,type,flagUpdate,inputID;
if(controlsOnly == true)
var objInputs = getObjInputs(controlsOnly);
else{
var objInputs = getObjInputs().not(".unite-setting-transparent");
}
jQuery.each(objInputs, function(index, input){
var objInput = jQuery(input);
name = getInputName(objInput);
type = getInputType(objInput);
value = getSettingInputValue(objInput);
if(value == g_vars.NOT_UPDATE_OPTION)
return(true);
//remain only changed values from default values
if(isChangedOnly === true){
var defaultValue = getInputDefaultValue(objInput);
if(defaultValue === value)
return(true);
}
inputID = objInput.prop("id");
//set additional vars
switch(type){
case "select":
var selectedText = objInput.children("option:selected").html();
obj[name+"_unite_selected_text"] = selectedText;
break;
case "checkbox":
value = objInput.is(":checked");
break;
case "image":
if(value && jQuery.isNumeric(value)){
obj[name+"_url"] = objInput.data("url");
}
break;
}
obj[name] = value;
});
//trace("settings values");
//trace(obj);
return(obj);
};
/**
* get default value
*/
function getInputDefaultValue(objInput){
var type = getInputType(objInput);
var name = getInputName(objInput);
var dataname = "default";
var checkboxDataName = "defaultchecked";
var defaultValue;
switch(type){
default:
if(!name)
return(false);
defaultValue = objInput.data(dataname);
if(typeof defaultValue == "object")
defaultValue = JSON.stringify(defaultValue);
if(type == "select"){
if(defaultValue === true)
defaultValue = "true";
if(defaultValue === false)
defaultValue = "false";
}
break;
case "radio":
case "checkbox":
defaultValue = objInput.data(checkboxDataName);
defaultValue = g_ucAdmin.strToBool(defaultValue);
break;
}
if(jQuery.isNumeric(defaultValue))
defaultValue = defaultValue.toString();
return(defaultValue);
}
/**
* clear input
*/
function clearInput(objInput, dataname, checkboxDataName){
var name = getInputName(objInput);
var type = getInputType(objInput);
var inputID = objInput.prop("id");
var defaultValue;
if(!dataname)
var dataname = "default";
if(!checkboxDataName)
var checkboxDataName = "defaultchecked";
switch(type){
case "select":
case "textarea":
case "range":
case "text":
case "password":
if(!name)
return(false);
defaultValue = objInput.data(dataname);
if(typeof defaultValue == "object")
defaultValue = JSON.stringify(defaultValue);
if(type == "select"){
if(defaultValue === true)
defaultValue = "true";
if(defaultValue === false)
defaultValue = "false";
}
objInput.val(defaultValue);
break;
case "hidden":
defaultValue = objInput.data(dataname);
objInput.val(defaultValue);
break;
case "icon":
defaultValue = objInput.data(dataname);
objInput.val(defaultValue);
objInput.trigger("blur");
break;
case "color":
defaultValue = objInput.data(dataname);
objInput.val(defaultValue);
if(g_colorPicker)
g_colorPicker.linkTo(objInput);
objInput.trigger("change");
//clear manually
if(defaultValue == "")
objInput.attr("style","");
break;
case "checkbox":
defaultValue = objInput.data(checkboxDataName);
defaultValue = g_ucAdmin.strToBool(defaultValue);
if(defaultValue == true)
objInput.attr("checked", true);
else
objInput.attr("checked", false);
break;
case "radio":
defaultValue = objInput.data(checkboxDataName);
defaultValue = g_ucAdmin.strToBool(defaultValue);
if(defaultValue == true){
objInput.prop("checked", true);
//maybe change to attr
}
break;
case "editor_tinymce":
var objEditorWrapper = objInput.parents(".unite-editor-setting-wrapper");
defaultValue = objEditorWrapper.data(dataname);
if(typeof tinyMCE == "undefined") //skip the init, if no editor yet
break;
var objEditor = tinyMCE.EditorManager.get(inputID);
if(objEditor){
objEditor.setContent(defaultValue);
}else{
objInput.val(defaultValue);
}
break;
case "addon":
case "image":
case "mp3":
defaultValue = objInput.data(dataname);
objInput.val(defaultValue);
objInput.trigger("change");
break;
case "post":
defaultValue = objInput.data(dataname);
setPostPickerValue(objInput, defaultValue);
break;
case "items":
if(dataname != "initval")
g_temp.objItemsManager.clearItemsPanel();
break;
case "fonts":
//don't clear here
break;
case "map":
//don't clear map
break;
case "repeater":
setRepeaterValues(objInput, null, true);
break;
case "col_layout":
//don't clear col layout
break;
case "multiselect":
defaultValue = objInput.data(dataname);
defaultValue = multiSelectModifyForSet(defaultValue);
objInput.val(defaultValue);
break;
case "dimentions":
//no clear for now
break;
default:
var objCustomType = getCustomSettingType(type);
if(objCustomType){
if(objCustomType.funcClearValue)
objCustomType.funcClearValue(objInput);
}
else{
var success = g_ucAdmin.clearProviderSetting(type, objInput, dataname);
if(success == false){
trace("for clear - wrong type: " + type);
trace(objInput);
}
}
break;
}
objInput.removeData("unite_setting_oldvalue");
}
/**
* set input value
*/
function setInputValue(objInput, value, value2){
var type = getInputType(objInput);
var inputID = objInput.prop("id");
var name = objInput.prop("name");
switch(type){
case "select":
case "textarea":
case "text":
case "password":
objInput.val(value);
case "hidden":
if(typeof value == "object"){
objInput.data("input_value", value);
}
else{
objInput.val(value);
objInput.data("input_value", null);
}
break;
case "addon":
objInput.val(value);
objInput.trigger("change");
break;
case "range":
value = parseFloat(value);
objInput.val(value);
objInput.trigger("input");
break;
case "icon":
objInput.val(value);
objInput.trigger("blur");
break;
case "color":
objInput.val(value);
if(g_colorPicker)
g_colorPicker.linkTo(objInput);
objInput.trigger("change");
break;
case "checkbox":
value = g_ucAdmin.strToBool(value);
if(value == true){
objInput.attr("checked", "checked");
objInput.prop("checked", "checked");
}
else{
objInput.prop("checked", false);
objInput.removeAttr("checked");
}
break;
case "radio":
var radioValue = objInput.val(); //set by radio text
if(radioValue === "true" || radioValue === "false"){
radioValue = g_ucAdmin.strToBool(radioValue);
value = g_ucAdmin.strToBool(value);
}
if(radioValue === value){
objInput.prop("checked", true);
}else{
objInput.removeAttr("checked");
objInput.attr("checked", false);
}
break;
case "editor_tinymce":
if(typeof tinyMCE == "undefined"){ //set textarea content
objInput.val(value);
}else{
var objEditor = tinyMCE.EditorManager.get(inputID);
if(objEditor){
objEditor.setContent(value);
}else{
objInput.val(value);
}
}
break;
case "image":
if(value2){
objInput.data("imageid",value2); //set image id
}
objInput.data("url", value);
case "mp3":
objInput.val(value);
objInput.trigger("change");
break;
case "post":
setPostPickerValue(objInput, value);
break;
case "items":
g_temp.objItemsManager.setItemsFromData(value);
break;
case "map":
//set map value
break;
case "fonts":
setFontPanelData(objInput, value);
break;
case "multiselect":
value = multiSelectModifyForSet(value);
objInput.val(value);
break;
default:
var objCustomType = getCustomSettingType(type);
if(objCustomType)
if(objCustomType.funcSetValue)
objCustomType.funcSetValue(objInput, value);
else{
//check for provider
var success = g_ucAdmin.providerSettingSetValue(type, objInput, value);
//trace error
if(success == false){
trace("for setvalue - wrong type: " + type);
}
}
break;
}
}
/**
* clear settings
*/
this.clearSettings = function(dataname, checkboxDataName){
validateInited();
var objInputs = getObjInputs();
jQuery.each(objInputs, function(index, input){
var objInput = jQuery(input);
clearInput(objInput, dataname, checkboxDataName);
});
};
/**
* get field names by type
*/
this.getFieldNamesByType = function(type){
validateInited();
var objInputs = getObjInputs();
var arrFieldsNames = [];
jQuery.each(objInputs, function(index, input){
var objInput = jQuery(input);
var name = getInputName(objInput);
var inputType = getInputType(objInput);
if(inputType == type)
arrFieldsNames.push(name);
});
return(arrFieldsNames);
};
/**
* clear settings
*/
this.clearSettingsInit = function(){
validateInited();
t.clearSettings("initval","initchecked");
};
/**
* set single setting value
*/
this.setSingleSettingValue = function(name, value){
var objInput = t.getInputByName(name);
if(!objInput || objInput.length == 0)
return(false);
g_temp.enableTriggerChange = false;
setInputValue(objInput, value);
g_temp.enableTriggerChange = true;
};
/**
* set values, clear first
*/
this.setValues = function(objValues, noClear){
validateInited();
if(noClear !== true)
this.clearSettings();
//if empty values - exit
if(typeof objValues != "object"){
return(false);
}
g_temp.enableTriggerChange = false;
var objInputs = getObjInputs();
//trace(objValues); trace(objInputs);
jQuery.each(objInputs, function(index, input){
var objInput = jQuery(input);
var name = getInputName(objInput);
if(!name || typeof name == "undefined")
return(true);
var type = getInputType(objInput);
if(type != "radio")
clearInput(objInput);
if(objValues.hasOwnProperty(name)){
var value = objValues[name];
var value2 = null;
switch(type){
case "image":
if(jQuery.isNumeric(value)){
var url = g_ucAdmin.getVal(objValues, name+"_url");
if(url){
value2 = value;
value = url;
}
}else{
var imageID = g_ucAdmin.getVal(objValues, name+"_imageid");
if(imageID)
value2 = imageID;
}
break;
}
setInputValue(objInput, value, value2);
}
});
applyControls();
g_temp.enableTriggerChange = true;
};
function _________CUSTOM_SETTING_TYPES__________(){}
/**
* get custom setting type, if empty setting name - returrn all types
*/
function getCustomSettingType(settingName){
var objCustomSettings = g_ucAdmin.getGlobalData(g_temp.customSettingsKey);
if(!objCustomSettings)
objCustomSettings = {};
if(!settingName)
return(objCustomSettings);
var objType = g_ucAdmin.getVal(objCustomSettings, settingName, null);
return(objType);
}
function _______RANGE_SLIDER_____(){}
/**
* get range input from input that can be range or text
*/
function getRangeInput(objInput){
var objRangeWrapper = objInput.parents(".unite-setting-range-wrapper");
if(objRangeWrapper.length == 0)
throw new Error("range input not found");
var inputText = objRangeWrapper.find("input.unite-setting-range");
return(inputText);
}
/**
* init range slider
* input can be input text or range
*/
function initRangeInput(objInput, funcChange){
var objRangeWrapper = objInput.parents(".unite-setting-range-wrapper");
if(objRangeWrapper.length == 0)
return(false);
var isInited = objRangeWrapper.data("inited");
if(isInited === true)
return(false);
var inputRange = objRangeWrapper.find("input[type='range']");
var inputText = objRangeWrapper.find("input.unite-setting-range");
if(inputText.length == 0)
throw new Error("range text field not found");
//on range change
inputRange.on("input", function(event){
var value = jQuery(this).val();
inputText.val(value);
//trigger instant event
funcChange(null, inputText, true);
});
//on text change
inputText.on("input", function(){
var value = jQuery(this).val();
if(value === "")
value = jQuery(this).prop("placeholder");
inputRange.val(value);
});
inputText.on("placeholder_change",function(){
inputText.trigger("input");
});
objRangeWrapper.data("inited", true);
}
function _______MULTI_SELECT_____(){}
/**
* modify value for save, turrn to array
*/
function multiSelectModifyForSet(value){
if(typeof value != "string")
return(value);
value = value.split(",");
return(value);
}
/**
* modify value after get
*/
function multiSelectModifyAfterGet(value){
if(jQuery.isArray(value) == false)
return(false);
value = value.join(",");
return(value);
}
function _______COLOR_PICKER_____(){}
/**
* init farbtastic color picker input events
*/
function initColorPickerInputEvents_farbtastic(objInput){
if(!g_colorPickerWrapper){
initColorPicker();
}
var input = objInput[0];
g_colorPicker.linkTo(input);
objInput.focus(function(){
g_colorPicker.linkTo(this);
var bodyWidth = jQuery("body").width();
g_colorPickerWrapper.show();
var input = jQuery(this);
var offset = input.offset();
var wrapperWidth = g_colorPickerWrapper.width();
var inputWidth = input.width();
var inputHeight = input.height();
var posLeft = offset.left - wrapperWidth / 2 + inputWidth/2;
var posRight = posLeft + wrapperWidth;
if(posRight > bodyWidth)
posLeft = bodyWidth - wrapperWidth;
if(posLeft < 0)
posLeft = 0;
var posTop = offset.top - g_colorPickerWrapper.height() - inputHeight + 10;
if(posTop < 0)
posTop = 0;
g_colorPickerWrapper.css({
"left":posLeft,
"top":posTop
});
}).on("click",function(){
return(false); //prevent body click
});
}
/**
* init color picker input
*/
function initColorPickerInputEvents(objInput, funcChange){
switch(g_temp.colorPickerType){
case "farbtastic":
initColorPickerInputEvents_farbtastic(objInput, funcChange);
break;
case "spectrum":
objInput.spectrum({
move:function(){
g_ucAdmin.runWithTrashold(function(){
if(funcChange && typeof funcChange == "function"){
funcChange(null, objInput, false);
}
else
t.onSettingChange(null, objInput, false);
});
}
});
break;
}
}
/**
* check onchange on color input
*/
function checkColorInputOnchange(objInput){
if(objInput.val() == "")
objInput.css("background-color","");
}
/**
* init farbtastic color picker
*/
function initColorPicker_farbtastic(){
g_colorPickerWrapper = jQuery('#divColorPicker');
if(g_colorPickerWrapper.length == 0){
jQuery("body").append('<div id="divColorPicker" style="display:none;"></div>');
g_colorPickerWrapper = jQuery('#divColorPicker');
}
//init the wrapper itself
var isInited = g_colorPickerWrapper.data("inited");
if(isInited !== true){
g_colorPickerWrapper.on("click",function(){
return(false); //prevent body click
});
jQuery("body").on("click",function(){
g_colorPickerWrapper.hide();
});
g_colorPickerWrapper.data("inited", true);
}
if(!g_colorPicker)
g_colorPicker = jQuery.unite_farbtastic('#divColorPicker', null, function(input, value){
var objInput = jQuery(input);
objInput.trigger("keyup");
});
}
/**
* init color picker
*/
function initColorPicker(){
g_temp.colorPickerType = g_ucAdmin.getGeneralSetting("color_picker_type");
switch(g_temp.colorPickerType){
case "farbtastic":
initColorPicker_farbtastic();
break;
case "spectrum":
break;
default:
throw new Error("Wrong color picker type: " + g_temp.colorPickerType);
break;
}
};
function _______MP3_SETTING_____(){}
/**
* update image url base
*/
this.updateMp3FieldState = function(objInput, isEnable){
var objButton = objInput.siblings(".unite-button-choose");
var objError = objInput.siblings(".unite-setting-mp3-error");
objInput.trigger("change");
if(!isEnable){ //set disabled mode
if(objError.length)
objError.show();
g_ucAdmin.disableInput(objInput);
g_ucAdmin.disableButton(objButton);
}else{ //set enabled mode
if(objError.length)
objError.hide();
g_ucAdmin.enableInput(objInput);
g_ucAdmin.enableButton(objButton);
}
};
/**
* on change image click - change the image
*/
function onChooseMp3Click(){
var objButton = jQuery(this);
if(g_ucAdmin.isButtonEnabled(objButton) == false)
return(true);
var objInput = objButton.siblings(".unite-setting-mp3-input");
var source = objInput.data("source");
g_ucAdmin.openAddMp3Dialog(g_uctext.choose_audio,function(urlMp3){
if(source == "addon"){ //in that case the url is an object
var inputValue = urlMp3.url_assets_relative;
var fullUrl = urlMp3.full_url;
objInput.data("url", fullUrl);
setInputValue(objInput, inputValue);
}else{
setInputValue(objInput, urlMp3);
}
objInput.trigger("change");
},false, source);
}
function _______IMAGE_SETTING_____(){}
/**
* set image preview
*/
function setImagePreview(){
var objInput = jQuery(this);
if(objInput.length == 0)
throw new Error("wrong image input given");
var source = objInput.data("source");
var url = objInput.val();
if(source == "addon"){
if(url == ""){
objInput.data("urlfull","");
}
var urlFull = objInput.data("urlfull");
urlFull = g_ucAdmin.urlToFull(url);
objInput.data("urlfull", urlFull);
url = g_ucAdmin.urlToFull(urlFull);
}else{
url = g_ucAdmin.urlToFull(url);
}
var objPreview = objInput.siblings(".unite-setting-image-preview");
var objWrapper = objInput.parents(".unite-setting-image");
url = jQuery.trim(url);
if(url == ""){
objWrapper.removeClass("unite-image-exists");
objPreview.css("background-image","");
objInput.data("imageid","");
objInput.data("url","");
}else{
objInput.data("url",url);
objWrapper.addClass("unite-image-exists");
objPreview.css("background-image","url('"+url+"')");
}
return(true);
}
/**
* on change image click - change the image
*/
function onChooseImageClick(event){
//event.preventDefault();
var objButton = jQuery(this);
var objWrapper = objButton.parents(".unite-setting-image");
var objInput = objWrapper.find(".unite-setting-image-input");
var source = objInput.data("source");
g_ucAdmin.openAddImageDialog(g_uctext.choose_image,function(urlImage, imageID){
if(source == "addon"){ //in that case the url is an object
var inputValue = urlImage.url_assets_relative;
var fullUrl = urlImage.full_url;
objInput.data("urlfull", fullUrl);
setInputValue(objInput, inputValue);
}else
setInputValue(objInput, urlImage, imageID);
objInput.trigger("change");
},false, source);
return(false);
}
/**
* on clear image click
*/
function onClearImageClick(event){
event.preventDefault();
var objButton = jQuery(this);
var objWrapper = objButton.parents(".unite-setting-image");
var objInput = objWrapper.find("input.unite-setting-image-input");
objInput.val("");
objInput.data("urlfull","");
objInput.data("imageid","");
objInput.data("url","");
objInput.trigger("change");
return(false);
}
/**
* update image url base
*/
this.updateImageFieldState = function(objInput, isEnable){
var objError = objInput.siblings(".unite-setting-image-error");
var objPreview = objInput.siblings(".unite-setting-image-preview");
var objWrapper = objInput.parents(".unite-setting-image");
objInput.trigger("change");
if(isEnable == false){ //set disabled mode
if(objError.length)
objError.show();
g_ucAdmin.disableInput(objInput);
objWrapper.addClass("unite-disabled");
}else{ //activate image input
if(objError.length)
objError.hide();
g_ucAdmin.enableInput(objInput);
objWrapper.removeClass("unite-disabled");
objPreview.show();
var backgroundImage = objPreview.css("background-image");
if(backgroundImage && backgroundImage != "none")
objWrapper.addClass("unite-image-exists");
else
objWrapper.removeClass("unite-image-exists");
}
}
/**
* on update assets path
* update all image addon inputs url base
*/
function onUpdateAssetsPath(event, urlBase){
validateInited();
var objInputs = getObjInputs();
objInputs.each(function(index, input){
var objInput = jQuery(input);
var type = getInputType(objInput);
if(type != "image" || type != "mp3")
return(true);
var source = objInput.data("source");
if(source == "addon"){
var isEnable = true;
if(!urlBase)
isEnable = false;
t.updateImageFieldState(objInput, isEnable);
}
});
}
function _______SAPS_____(){}
/**
* get all sap tabs
*/
function getAllSapTabs(){
var objTabs = g_objSapTabs.children("a");
return(objTabs);
}
/**
* show sap elmeents
*/
function showSapInlineElements(numSap){
var elementClass = ".unite-sap-" + numSap;
var objElements = g_objParent.find(".unite-sap-element");
if(objElements.length == 0)
return(false);
var objSapElements = g_objParent.find(elementClass);
objElements.not(objSapElements).addClass("unite-setting-hidden");
objSapElements.removeClass("unite-setting-hidden");
}
/**
* on sap tab click
*/
function onSapTabClick(){
var classSelected = "unite-tab-selected";
var objTab = jQuery(this);
if(objTab.hasClass(classSelected))
return(false);
var allTabs = getAllSapTabs();
allTabs.not(objTab).removeClass(classSelected);
objTab.addClass(classSelected);
var sapNum = objTab.data("sapnum");
showSapInlineElements(sapNum);
}
/**
* init saps tabs
*/
function initSapsTabs(){
if(!g_objWrapper){
g_objSapTabs = null;
return(false);
}
g_objSapTabs = g_objWrapper.find(".unite-settings-tabs");
if(g_objSapTabs.length == 0){
g_objSapTabs = null;
return(false);
}
g_objSapTabs.children("a").on("click",onSapTabClick);
}
/**
* init saps accordion type
*/
function initSapsAccordion(){
if(!g_objWrapper)
return(false);
var classClosed = "unite-closed";
g_objWrapper.find(".unite-postbox .unite-postbox-title").not(".unite-no-accordion").on("click",function(){
var objHandle = jQuery(this);
var objInside = objHandle.siblings(".unite-postbox-inside");
//open
if(objHandle.hasClass(classClosed)){
//close all items
g_objWrapper.find(".unite-postbox .unite-postbox-inside").not(objInside).slideUp("fast");
g_objWrapper.find(".unite-postbox .unite-postbox-title").not(objHandle).addClass("unite-closed");
objHandle.removeClass(classClosed);
objInside.slideDown("fast");
}else{ //close
objHandle.addClass(classClosed);
objInside.slideUp("fast");
}
});
}
/**
* set accordion max height. set the inner options max height
*/
this.setAccordionMaxHeight = function(bodyHeight){
if(!g_objWrapper)
return(false);
var spaceBetween = g_ucAdmin.getVal(g_options, "accordion_sap", null);
if(spaceBetween === null){
trace(g_options);
throw new Error("Space between accordion items not set in settings options");
}
var titleHeight = g_ucAdmin.getVal(g_options, "accordion_title_height", null);
var numTitles = g_objWrapper.find(".unite-postbox .unite-postbox-title").length;
var extraHeight = 0;
if(numTitles > 0)
extraHeight = titleHeight * numTitles + spaceBetween * (numTitles-1);
var insideMaxHeight = bodyHeight - extraHeight;
g_objWrapper.find(".unite-postbox-inside").css("max-height",insideMaxHeight+"px");
};
/**
* init saps
*/
function initSaps(){
if(g_options.show_saps == false)
return(false);
if(!g_objWrapper)
return(false);
switch(g_options.saps_type){
case "saps_type_inline":
initSapsTabs();
break;
case "saps_type_accordion":
initSapsAccordion();
break;
default:
throw new Error("Init saps error: wrong saps type: " + g_options.saps_type);
break;
}
}
function ______ADDON_PICKER____(){}
/**
* get addons browser object
*/
this.getObjAddonBrowser = function(addonType){
var keyCache = "uc_obj_addons_browsers";
var objAddonBrowsersCache = g_ucAdmin.getGlobalData(keyCache);
if(!objAddonBrowsersCache)
objAddonBrowsersCache = {};
var objBrowser = g_ucAdmin.getVal(objAddonBrowsersCache, addonType);
//init browser if not inited yet
if(!objBrowser){
var browserID = "uc_addon_browser_"+addonType;
var objBrowserWrapper = jQuery("#" + browserID);
g_ucAdmin.validateDomElement(objBrowserWrapper,"addons browser with id: "+browserID);
var objBrowser = new UniteCreatorBrowser();
objBrowser.init(objBrowserWrapper);
objAddonBrowsersCache[addonType] = objBrowser;
g_ucAdmin.storeGlobalData(keyCache, objAddonBrowsersCache);
}
return(objBrowser);
};
/**
* init addon picker
*/
function initAddonPicker(objInput){
var addonType = objInput.data("addontype");
var objSelectButton = objInput.siblings(".unite-addonpicker-button");
var objWrapper = objInput.parents(".unite-settings-addonpicker-wrapper");
var objButtons = objWrapper.find(".uc-action-button");
var objTitle = objInput.siblings(".unite-addonpicker-title");
var objBrowser = t.getObjAddonBrowser(addonType);
var settingName = objInput.prop("name");
var settingDataName = settingName + "_data";
var objAddonConfig = new UniteCreatorAddonConfig();
var settingDataName = settingName + "_data";
var objInputData = t.getInputByName(settingDataName);
objInput.change(function(){
var addonname = objInput.val();
//set empty
if(!addonname){
objWrapper.addClass("unite-empty-content");
objSelectButton.css("background-image", "none");
if(objTitle.length)
objTitle.html("");
return(true);
}
var objData = objBrowser.getAddonData(addonname);
if(!objData)
return(true);
if(objData.bgimage)
objSelectButton.css("background-image", objData.bgimage);
objWrapper.removeClass("unite-empty-content");
if(objTitle.length){
var title = g_ucAdmin.getVal(objData, "title");
if(!title)
title = addonname;
objTitle.show().html(title);
}
//update data
if(objInputData){
var addonData = objAddonConfig.getGridAddonDataFromBrowserData(objData);
setInputValue(objInputData, addonData);
}
});
//---- select button
objSelectButton.on("click",function(event){
event.stopPropagation();
event.stopImmediatePropagation();
objBrowser.openAddonsBrowser(null, function(objData){
var addonName = objData.name;
//clear
if(!addonName){
objInput.val("");
objWrapper.addClass("unite-empty-content");
objSelectButton.css("background-image", "");
if(objTitle.length)
objTitle.html("");
}else{
objInput.val(addonName);
if(objData.bgimage)
objSelectButton.css("background-image", objData.bgimage);
objWrapper.removeClass("unite-empty-content");
if(objTitle.length)
objTitle.html(objData.title);
//update data
if(objInputData){
var addonData = objAddonConfig.getGridAddonDataFromBrowserData(objData);
setInputValue(objInputData, addonData);
}
}
t.onSettingChange(null, objInput);
onControlSettingChange(null, objInput[0]);
}, objSelectButton);
});
// ------------ action buttons
objButtons.on("click",function(){
var objButton = jQuery(this);
var action = objButton.data("action");
switch(action){
case "clear":
objInput.val("");
objInput.trigger("change");
break;
case "configure":
var configureAction = objButton.data("configureaction");
g_ucAdmin.validateNotEmpty(configureAction, "configure action");
g_ucAdmin.validateDomElement(objInputData, "addon picker input data");
var addonData = getSettingInputValue(objInputData);
if(!addonData){
var addonName = objInput.val();
addonData = objAddonConfig.getEmptyAddonData(addonName, addonType);
}
//open the panel
var sendData = objAddonConfig.getSendDataFromAddonData(addonData);
var panelTitle = objAddonConfig.getAddonTitle(addonData);
var panelData = objAddonConfig.getPanelData(addonData);
var options = {
pane_name: "addon-settings",
send_data: sendData,
panel_title: panelTitle,
panel_data: panelData,
setting_name: settingDataName,
changing_setting_name: settingName,
addon_data: addonData
};
triggerEvent(t.events.OPEN_CHILD_PANEL, options);
break;
}
});
}
function ______ICON_PICKER____(){}
/**
* add icons type
*/
this.iconPicker_addIconsType = function(name, arrIcons, iconsTemplate, optParams){
var key = "icon_picker_type_"+name;
var objType = g_ucAdmin.getGlobalData(key);
if(objType)
return(false);
var params = {
"name": name,
"icons":arrIcons,
"template":iconsTemplate
};
if(optParams)
jQuery.extend(params, optParams);
g_ucAdmin.storeGlobalData(key, params);
};
/**
* get icons type object
*/
function iconPicker_getObjIconsType(name){
var key = "icon_picker_type_"+name;
var objType = g_ucAdmin.getGlobalData(key);
if(!objType)
throw new Error("Icons type: "+name+" not found");
return(objType);
}
/**
* init the dialog
*/
function iconPicker_initDialog(type){
if(!type)
var type = "fa";
var dialogID = "unite_icon_picker_dialog_"+type;
var objDialogWrapper = jQuery("#"+dialogID);
if(objDialogWrapper.length){
g_iconsHash = jQuery("body").data("uc_icons_hash");
return(objDialogWrapper);
}
//set "fa" template
if(type == "fa"){
t.iconPicker_addIconsType("fa", g_ucFaIcons, function(icon){ //icon to html functoin
var classAdd = "fa fa-";
if(icon.indexOf("fa-") != -1)
classAdd = "";
var html = '<i class="'+classAdd+icon+'"></i>';
return(html);
});
}
var objType = iconPicker_getObjIconsType(type);
var isAddNew = g_ucAdmin.getVal(objType, "add_new");
var htmlDialog = '<div id="'+dialogID+'" class="unite-icon-picker-dialog unite-inputs unite-picker-type-'+type+'" style="display:none">';
htmlDialog += '<div class="unite-iconpicker-dialog-top">';
htmlDialog += '<input class="unite-iconpicker-dialog-input-filter" type="text" placeholder="Type to filter" value="">';
htmlDialog += '<span class="unite-iconpicker-dialog-icon-name"></span>';
//add new functionality
/*
if(isAddNew === true){
htmlDialog += '<a class="unite-button-secondary unite-iconpicker-dialog-button-addnew">Add New Shape</a>';
}
*/
htmlDialog += '</div>';
htmlDialog += '<div class="unite-iconpicker-dialog-icons-container"></div></div>';
jQuery("body").append(htmlDialog);
objDialogWrapper = jQuery('#'+dialogID);
var objContainer = objDialogWrapper.find('.unite-iconpicker-dialog-icons-container');
var objFilter = objDialogWrapper.find('.unite-iconpicker-dialog-input-filter');
var objIconName = objDialogWrapper.find(".unite-iconpicker-dialog-icon-name");
//set the icons
var arrIcons = [];
arrIcons = objType.icons;
var iconTemplate = objType.template;
var isArray = jQuery.isArray(arrIcons);
jQuery.each(arrIcons, function(index, icon) {
var iconTitle = null;
if(isArray == false){
iconTitle = icon;
icon = index;
}
var hashName = icon+"_"+type;
if(typeof iconTemplate == "function"){
var iconHtml = iconTemplate(icon);
}else{
var iconHtml = iconTemplate.replace("[icon]", icon);
}
var objIcon = jQuery('<span class="unite-iconpicker-icon">'+iconHtml+'</span>');
var iconName = icon;
if(objType && typeof objType.getIconName == "function")
iconName = objType.getIconName(icon);
//avoid doubles
if(g_iconsHash.hasOwnProperty(hashName) == false){
objIcon.data('title', iconTitle);
objIcon.data('name', iconName);
objIcon.data('value', icon);
objContainer.append(objIcon);
g_iconsHash[hashName] = objIcon;
}
});
jQuery("body").data("uc_icons_hash", g_iconsHash);
var dialogTitle = "Choose Icon";
if(type == "shape")
dialogTitle = "Choose Shape";
objDialogWrapper.dialog({
autoOpen: false,
height: 500,
width: 800,
dialogClass:"unite-ui unite-ui2",
title: dialogTitle,
open: function( event, ui ) {
objContainer.scrollTop(0);
var objSelectedIcon = objContainer.find('.icon-selected');
if (!objSelectedIcon.length)
return(false);
if(objSelectedIcon.is(":hidden") == true)
return(false);
//scroll to icon
var containerHeight = objContainer.height();
var iconPos = objSelectedIcon.position().top;
if(iconPos > containerHeight)
objContainer.scrollTop(iconPos - (containerHeight / 2 - 50) );
}
});
//init events
objContainer.on('click', '.unite-iconpicker-icon', function (event) {
objContainer.find('.icon-selected').removeClass('icon-selected');
var objIcon = jQuery(event.target).closest('.unite-iconpicker-icon');
objIcon.addClass('icon-selected');
var iconName = objIcon.data('name');
var iconValue = objIcon.data('value');
var iconTitle = objIcon.data('title');
//update picker object
var objPicker = objDialogWrapper.data("objpicker");
var objPickerInput = objPicker.find(".unite-iconpicker-input");
var objPickerButton = objPicker.find(".unite-iconpicker-button");
var objPickerTitle = objPicker.find(".unite-iconpicker-title");
var inputValue = iconValue;
if(type == "fa"){
if(iconName.indexOf("fa-") == -1)
inputValue = 'fa fa-' + iconName;
else
inputValue = iconName;
}
objPickerInput.val(inputValue);
if(typeof iconTemplate == "function")
var htmlIcon = iconTemplate(iconValue);
else
var htmlIcon = iconTemplate.replace("[icon]", iconValue);
objPickerButton.html(htmlIcon);
//set title
if(iconTitle)
objPickerTitle.show().html(iconTitle);
else
objPickerTitle.hide()
objPickerInput.trigger("change");
//close dialog
objDialogWrapper.dialog("close");
});
//on icon mouseover
objContainer.on('mouseenter', '.unite-iconpicker-icon', function (event) {
var objIcon = jQuery(event.target).closest('.unite-iconpicker-icon');
var iconNameStr = objIcon.data('name');
var iconTitle = objIcon.data('title');
var iconName = iconNameStr;
if(iconTitle)
iconName = iconTitle;
if(type == "fa"){
iconName = iconName.replace("fa-", "");
if(iconName.indexOf("fab ") == 0)
iconName = iconName.replace("fab ", "")+" [brand]";
else
if(iconName.indexOf("fal ") == 0)
iconName = iconName.replace("fal ", "")+" [light]";
else
if(iconName.indexOf("far ") == 0)
iconName = iconName.replace("far ", "")+" [regular]";
else
iconName = iconName+" [solid]";
}
objIconName.text(iconName);
});
//on icon mouseover
objContainer.on('mouseleave', '.unite-iconpicker-icon', function (event) {
objIconName.text("");
});
//filter functionality
objFilter.on('keyup', function () {
var strFilter = objFilter.val();
strFilter = jQuery.trim(strFilter);
var objIcons = objDialogWrapper.find(".unite-iconpicker-icon");
jQuery(objIcons).each(function(index, icon){
var objIcon = jQuery(icon);
var name = objIcon.data("name");
var isVisible = false;
if(strFilter == "" || name.indexOf(strFilter) !== -1)
isVisible = true;
if(isVisible == true)
objIcon.show();
else
objIcon.hide();
});
});
return(objDialogWrapper);
}
/**
* init icon picker raw function
*/
function initIconPicker(objInput){
var iconsType = objInput.data("icons_type");
if(!iconsType)
iconsType = "fa";
var objDialogWrapper = iconPicker_initDialog(iconsType);
if(!objDialogWrapper || objDialogWrapper.length == 0){
trace("icon picker dialog not inited");
return(false);
}
var objPickerWrapper = objInput.parents(".unite-settings-iconpicker");
var objInput = objPickerWrapper.find('input.unite-iconpicker-input');
var objButton = objPickerWrapper.find('.unite-iconpicker-button');
var objTitle = objPickerWrapper.find('.unite-iconpicker-title');
//on button click
objButton.on("click",function () {
if (objDialogWrapper.dialog('isOpen')) {
objDialogWrapper.dialog('close');
} else {
objDialogWrapper.data("objpicker", objPickerWrapper);
objDialogWrapper.dialog('open');
}
});
//on input blur
objInput.on('blur', function () {
var value = jQuery(this).val();
if(iconsType == "fa")
value = value.replace("fa fa-","");
value = jQuery.trim(value);
var hashName = value+"_"+iconsType;
if(!g_iconsHash[hashName]){
var text = "choose";
if(iconsType == "shape")
text = "Choose Shape";
objButton.html(text);
return(false);
}
var objIcon = g_iconsHash[hashName];
var iconTitle = objIcon.data("title");
var objType = iconPicker_getObjIconsType(iconsType);
if(!objType.template)
throw new Error("icon template not found");
if(typeof objType.template == "function")
var htmlIcon = objType.template(value);
else
var htmlIcon = objType.template.replace("[icon]", value);
objButton.html(htmlIcon);
//set title
if(iconTitle)
objTitle.show().html(iconTitle);
else
objTitle.hide();
//set selected icon in dialog
var objContainer = objDialogWrapper.find('.unite-iconpicker-dialog-icons-container');
objContainer.find('.icon-selected').removeClass('icon-selected');
objIcon.addClass('icon-selected');
});
objInput.trigger("blur");
}
function ______MAP_PICKER____(){}
/**
* init google map picker
*/
function initMapPicker(objPickerWrapper){
var dialogTitle = objPickerWrapper.data("dialogtitle");
var objButton = objPickerWrapper.find(".unite-mappicker-button");
var objOverlay = objPickerWrapper.find(".unite-mappicker-chooser-overlay");
g_ucAdmin.validateDomElement(objButton, "choose map button");
objButton.on("click",function(){
var dialogOptions = {};
dialogOptions["title"] = dialogTitle;
var onMapUpdate = function(data, objDialog){
var urlMapImage = data.url_static_map;
objPickerWrapper.find(".unite-mappicker-mapimage").attr("src", urlMapImage);
objPickerWrapper.data("mapdata", data);
t.onSettingChange(null, objPickerWrapper);
setTimeout(function(){
objDialog.dialog("close");
}, 100);
};
var urlParams = {};
var mapData = objPickerWrapper.data("mapdata");
window.uc_mappicker_data = mapData;
g_ucAdmin.openIframeDialog("mappicker", urlParams, dialogOptions, onMapUpdate);
});
objOverlay.on("click",function(){
objButton.trigger("click");
});
}
function ______POST_PICKER____(){}
/**
* init post picker
*/
function initPostPicker(objWrapper){
//fix select focus inside jquery ui dialogs
g_ucAdmin.fixModalDialogSelect2();
var objSelect = objWrapper.find(".unite-setting-post-picker");
var postID = objSelect.data("postid");
var postTitle = objSelect.data("posttitle");
var placeholder = objSelect.data("placeholder");
var data = [];
if(postID && postTitle){
data.push({
id:postID,
text: postTitle
});
}
var urlAjax = g_ucAdmin.getUrlAjax("get_posts_list_forselect");
objSelect.select2({
data:data,
placeholder: placeholder,
allowClear: true,
ajax:{
url:urlAjax,
dataType:"json"
}
});
//on change - trigger change event
objSelect.on("change", function (e) {
t.onSettingChange(null, objWrapper, false);
});
}
/**
* set post picker value
*/
function setPostPickerValue(objWrapper, value){
var objSelect = objWrapper.find(".unite-setting-post-picker");
objSelect.val(value);
}
/**
* get post picker value
*/
function getPostPickerValue(objWrapper){
var objSelect = objWrapper.find(".unite-setting-post-picker");
var value = objSelect.select2("val");
return(value);
}
function _______ANIMATIONS_____(){}
/**
* on settings animation change, run the demo
*/
function onAnimationSettingChange(){
var objSelect = jQuery(this);
var objParent = objSelect.parents("table");
if(objParent.length == 0)
objParent = objSelect.parents("ul");
g_ucAdmin.validateDomElement(objParent, "Animation setting parent");
var objDemo = objParent.find(".uc-animation-demo span");
var animation = objSelect.val();
g_ucAdmin.validateDomElement(objDemo, "Animation setting demo");
var className = animation + ' animated';
objDemo.removeClass().addClass(className).one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){
jQuery(this).removeClass();
});
}
/**
* init animations selector settings
*/
function initAnimationsSelector(){
if(!g_objWrapper)
return(false);
//init animations
var objAnimations = g_objWrapper.find("select.uc-select-animation-type");
if(objAnimations.length == 0)
return(false);
objAnimations.change(onAnimationSettingChange);
}
function _____ITEMS_PANEL_____(){}
/**
* open the items manager in dialog
*/
function onItemsPanelEditItemsClick(){
var objButton = jQuery(this);
var objSetting = objButton.parents(".uc-setting-items-panel");
var settingID = objSetting.prop("id");
var dialogID = settingID+"_dialog";
var objDialog = jQuery("#"+dialogID);
g_ucAdmin.validateDomElement(objDialog, "items dialog");
var buttonOpts = {};
buttonOpts[g_uctext.update] = function(){
objDialog.dialog("close");
var objItemsWrapper = g_objParent.find(".uc-setting-items-panel");
t.onSettingChange(null, objItemsWrapper);
};
var dialogOptions = {
buttons:buttonOpts,
minWidth:800,
modal:true,
dialogClass:"unite-ui",
open:function(){
}
};
objDialog.dialog(dialogOptions);
}
/**
* init items panel setting
*/
function initItemsPanel(){
var objItemsWrapper = g_objParent.find(".uc-setting-items-panel");
if(objItemsWrapper.length == 0)
return(false);
if(objItemsWrapper.length != 1){
throw new Error("There must be only 1 items panel");
}
g_temp.objItemsManager = new UCManagerAdmin();
g_temp.objItemsManager.initManager();
//side panel dialog
var objButtonEditItems = objItemsWrapper.find(".uc-setting-items-panel-button");
if(objButtonEditItems.length){
objButtonEditItems.on("click",onItemsPanelEditItemsClick);
}
}
function __________FONTS_PANEL__________(){}
/**
* on font panel setting change
*/
function onFontPanelInputChange(event, objInput, isInstant){
if(!objInput)
var objInput = jQuery(event.target);
var objFontsWrapper = objInput.parents(".uc-setting-fonts-panel");
var type = getInputType(objInput);
if(type == "color")
checkColorInputOnchange(objInput);
if(isInstant !== true){
updateInputChildPlaceholders(objInput);
}
//throw font panel setting change event
t.onSettingChange(null, objFontsWrapper, isInstant);
}
/**
* init fonts panel
*/
this.initFontsPanel = function(objFontsWrapper){
if(!objFontsWrapper)
var objFontsWrapper = g_objParent.find(".uc-setting-fonts-panel");
if(objFontsWrapper.length == 0)
return(false);
//if init without parent
if(!g_objParent)
g_objParent = objFontsWrapper.parent();
g_temp.objFontsPanel = objFontsWrapper.find(".uc-fontspanel");
if(g_temp.objFontsPanel.length == 0){
g_temp.objFontsPanel = null;
return(null);
}
//checkbox event
g_temp.objFontsPanel.find(".uc-fontspanel-toggle").on("click",function(){
var objCheck = jQuery(this);
var sectionID = objCheck.data("target");
var objSection = jQuery("#" + sectionID);
g_ucAdmin.validateDomElement(objSection, "fonts panel section");
if(objCheck.is(":checked")){
objSection.show();
}else{
objSection.hide();
}
});
//init inputs
var objInputs = g_temp.objFontsPanel.find("input, select");
jQuery.each(objInputs, function(index, input){
var objInput = jQuery(input);
var type = getInputType(objInput);
initInputEvents(objInput, onFontPanelInputChange);
});
return(g_temp.objFontsPanel);
};
/**
* get fonts panel data
*/
this.getFontsPanelData = function(){
if(!g_temp.objFontsPanel)
return(null);
var objData = {};
var objCheckboxes = g_temp.objFontsPanel.find(".uc-fontspanel-toggle");
jQuery.each(objCheckboxes, function(index, checkbox){
var objCheckbox = jQuery(checkbox);
if(objCheckbox.is(":checked") == false)
return(true);
var sectionID = objCheckbox.data("target");
var sectionName = objCheckbox.data("sectionname");
var objSection = jQuery("#" + sectionID);
g_ucAdmin.validateDomElement(objSection, "fonts panel section "+sectionID);
//get fields values
var objFields = objSection.find(".uc-fontspanel-field");
var fieldsValues = {};
jQuery.each(objFields, function(index, field){
var objField = jQuery(field);
var fieldName = objField.data("fieldname");
var value = objField.val();
if(jQuery.trim(value) == "")
return(true);
fieldsValues[fieldName] = value;
});
if(jQuery.isEmptyObject(fieldsValues) == false)
objData[sectionName] = fieldsValues;
});
return(objData);
};
/**
* set fonts panel data
*/
function setFontPanelData(objInput, arrData){
clearFontsPanelData(objInput);
jQuery.each(arrData, function(sectionName, objFields){
//check toggle
var objToggle = objInput.find(".uc-fontspanel-toggle-"+sectionName);
if(objToggle.length == 0)
return(true);
objToggle.attr("checked","checked");
objToggle.prop("checked","checked");
//trace(objToggle);
//open section
var sectionID = objToggle.data("target");
var objSection = jQuery("#"+sectionID);
g_ucAdmin.validateDomElement(objSection, "section: "+sectionID);
objSection.show();
//go through the section fields
jQuery.each(objFields, function(fieldName, fieldValue){
var objInput = objSection.find(".uc-fontspanel-field[data-fieldname="+fieldName+"]");
if(!objInput || objInput.length == 0){
if(fieldName == "mobile-size")
return(true);
throw new Error("field not found: "+fieldName);
}
setInputValue(objInput, fieldValue);
});
});
}
/**
* clear data
*/
function clearFontsPanelData(objInput){
//uncheck toggles
var objToggles = objInput.find(".uc-fontspanel-toggle");
objToggles.removeAttr("checked");
objToggles.attr("checked",false);
//hide fields
var objSections = objInput.find(".uc-fontspanel-section");
objSections.hide();
//clear inputs
var objInputs = objSections.find("input.uc-fontspanel-field");
objInputs.val("");
}
/**
* destroy fonts panel
*/
this.destroyFontsPanel = function(){
if(!g_temp.objFontsPanel)
return(false);
g_temp.objFontsPanel.find(".uc-fontspanel-toggle").off("click");
g_temp.objFontsPanel = null;
}
/**
* destroy repeaters
*/
this.destroyRepeaters = function(){
var objRepeaterItems = g_objParent.find(".unite-repeater-item");
if(objRepeaterItems.length == 0)
return(false);
var objRepeaters = g_objParent.find(".unite-settings-repeater");
objRepeaters.sortable("destroy");
jQuery.each(objRepeaterItems, function(index, item){
var objItem = jQuery(item);
var objSettings = objItem.data("itemsettings");
objSettings.destroy();
});
objRepeaterItems.find(".unite-repeater-item-head").off("click");
}
function _______REPEATERS_____(){}
/**
* set repetaer values
*/
function setRepeaterValues(objWrapper, arrValues, takeDefault){
if(takeDefault === true)
var arrValues = objWrapper.data("itemvalues");
var objItemsWrapper = objWrapper.find(".unite-repeater-items");
//clear existing
objItemsWrapper.html("");
if(!arrValues)
return(false);
if(jQuery.isArray(arrValues) == false)
return(false);
jQuery.each(arrValues, function(index, objItemValues){
repeaterAddItem(null, objWrapper, objItemValues);
});
}
/**
* get repeater values
*/
function getRepeaterValues(objWrapper){
var objItemsWrapper = objWrapper.find(".unite-repeater-items");
var objItems = objItemsWrapper.find(".unite-repeater-item");
var arrItemsValues = [];
if(objItems.length == 0)
return(arrItemsValues);
jQuery.each(objItems, function(index, item){
var objItem = jQuery(item);
var objSettings = objItem.data("objsettings");
var itemValues = objSettings.getSettingsValues();
arrItemsValues.push(itemValues);
});
return(arrItemsValues);
}
/**
* add repeater item
*/
function repeaterAddItem(event, objWrapper, objItemValues, objItemInsertAfter){
if(!objWrapper){
var objButton = jQuery(this);
var objWrapper = objButton.parents(".unite-settings-repeater");
}
var isNewItem = false;
if(!objItemValues)
isNewItem = true;
var isDuplicated = false;
if(objItemInsertAfter)
isDuplicated = true;
var objSettingsTemplate = objWrapper.find(".unite-repeater-template");
var objItemsWrapper = objWrapper.find(".unite-repeater-items");
var objEmptyText = objWrapper.find(".unite-repeater-emptytext")
var objItems = objItemsWrapper.find(".unite-repeater-item");
g_ucAdmin.validateDomElement(objItemsWrapper, "items wrapper");
g_ucAdmin.validateDomElement(objSettingsTemplate, "settings template");
//close other items, if not duplicated
if(isDuplicated == false)
objItems.addClass("unite-item-closed");
//set item title
if(isNewItem == false){
var itemTitle = objItemValues.title;
}else{
var itemTitle = objWrapper.data("itemtitle");
if(!itemTitle)
itemTitle = "Item";
var numItems = objItemsWrapper.children().length;
var currentNumItem = numItems+1;
itemTitle += " "+currentNumItem;
}
var deleteText = objWrapper.data("deletetext");
var duplicateText = objWrapper.data("duplicatext");
//append item
var htmlSettingsTemplate = objSettingsTemplate.html();
var addClass = "";
if(objItemInsertAfter)
addClass = " unite-item-closed";
var html = "<div class='unite-repeater-item"+addClass+"'>";
html += " <div class='unite-repeater-item-head'>";
html += " <a class='unite-repeater-trash unite-repeater-buttondelete' title='"+deleteText+"'><i class='fa fa-trash' aria-hidden='true'></i></a>";
html += " <a class='unite-repeater-duplicate unite-repeater-buttonduplicate' title='"+duplicateText+"'><i class='fa fa-clone' aria-hidden='true'></i></a>";
html += " <div class='unite-repeater-arrow'></div>";
html += " <span>" + itemTitle+"</span>";
html += " </div>";
html += " <div class='unite-repeater-item-settings'>";
html += htmlSettingsTemplate;
html += " </div>";
html += "</div>";
objEmptyText.hide();
var objItem = jQuery(html);
//change the id's
var objItemSettingsWrapper = objItem.find(".unite_settings_wrapper");
g_ucAdmin.validateDomElement(objItemSettingsWrapper, "item settigns wrapper");
var objOptions = objItemSettingsWrapper.data("options");
//replace setting IDs
var idPrefix = objOptions.id_prefix;
var newID = idPrefix+"item_"+g_ucAdmin.getRandomString(5)+"_";
html = g_ucAdmin.replaceAll(html, idPrefix, newID);
//put to the item again
var objItem = jQuery(html);
var objItemSettingsWrapper = objItem.find(".unite_settings_wrapper");
//change wrapper ID
var settingsWrapperID = "unite_settings_repeater_"+newID;
objItemSettingsWrapper.attr("id", settingsWrapperID);
g_ucAdmin.validateDomElement(objItemSettingsWrapper, "item settigns wrapper");
if(objItemInsertAfter){
objItem.insertAfter(objItemInsertAfter);
}
else
objItemsWrapper.append(objItem);
var objHeadTitle = objItem.find(".unite-repeater-item-head span");
var objItemSettings = new UniteSettingsUC();
objItemSettings.init(objItemSettingsWrapper);
var objInputTitle = objItemSettings.getInputByName("title");
objInputTitle.on("input",function(){
var objInput = jQuery(this);
var value = objInput.val();
objHeadTitle.html(value);
});
if(isNewItem == false){
objItemSettings.setValues(objItemValues);
}else{ //if new item
//Update item title input if available
if(objInputTitle)
objInputTitle.val(itemTitle);
//update generated ID
var objInputGeneratedID = objItemSettings.getInputByName("generated_id");
if(objInputGeneratedID){
var generatedID = g_ucAdmin.getRandomString(7);
objInputGeneratedID.val(generatedID);
}
}
objItem.data("objsettings", objItemSettings);
t.onSettingChange(null, objWrapper);
}
/**
* init repeater
*/
function initRepeater(objWrapper){
var objButtonAdd = objWrapper.find(".unite-repeater-buttonadd");
var objItemsWrapper = objWrapper.find(".unite-repeater-items");
var objEmptyText = objWrapper.find(".unite-repeater-emptytext")
//init button
objButtonAdd.on("click",repeaterAddItem);
//init container sortable
objWrapper.sortable({
items: ".unite-repeater-item",
handle: ".unite-repeater-item-head",
cursor: "move",
axis: "y",
update: function(event, ui){
var objItem = ui.item;
t.onSettingChange(null, objWrapper);
objItem.data("just_moved",true);
}
});
//head on click
objWrapper.on("click", ".unite-repeater-item-head", function(){
var objHead = jQuery(this);
var objItem = objHead.parents(".unite-repeater-item");
var justMoved = objItem.data("just_moved");
if(justMoved === true){
objItem.data("just_moved", false);
return(true);
}
objItem.toggleClass("unite-item-closed");
});
//delete
objWrapper.on("click", ".unite-repeater-buttondelete", function(){
var objButton = jQuery(this);
var objItem = objButton.parents(".unite-repeater-item");
objItem.remove();
var numItems = objItemsWrapper.children().length;
if(numItems == 0)
objEmptyText.show();
t.onSettingChange(null, objWrapper);
});
objWrapper.on("click", ".unite-repeater-buttonduplicate", function(){
var objButton = jQuery(this);
var objItem = objButton.parents(".unite-repeater-item");
objItem.data("just_moved",true);
var itemSettings = objItem.data("objsettings");
var settingsValues = itemSettings.getSettingsValues();
repeaterAddItem(null, objWrapper, settingsValues, objItem);
});
}
/**
* init repeaters globally
*/
function initRepeaters(){
var objRepeaters = g_objWrapper.find(".unite-settings-repeater");
if(objRepeaters.length == 0)
return(false);
g_temp.isRepeaterExists = true;
}
function _______DIMENTIONS_____(){}
/**
* get dimentions setting value
*/
function dimentionsGetValues(objWrapper){
var objAllInputs = objWrapper.find("input");
var objUnits = objWrapper.find("select");
var data = {};
objAllInputs.each(function(index, input){
var objInput = jQuery(input);
var value = objInput.val();
var pos = objInput.data("pos");
data[pos] = value;
});
data["unit"] = objUnits.val();
return(data);
}
function _______CONTROLS_____(){}
/**
* get control action, according all the parents of the controlled children
* isSingle == true - don't do recursion
*/
function getControlAction(parent, control){
var isEqual = iscValEQ(parent.value, control.value);
var action = null;
switch(control.type){
case "enable":
case "disable":
if(control.type == "enable" && !isEqual || control.type == "disable" && isEqual)
action = "disable";
else
action = "enable";
break;
case "show":
if(isEqual)
action = "show";
else
action = "hide";
break;
case "hide":
if(isEqual)
action = "hide";
else
action = "show";
break;
}
return(action);
}
/**
* get action of multiple parents
*/
function getControlActionMultiple(parent, control, arrParents){
if(g_temp.cacheValues == null)
g_temp.cacheValues = t.getSettingsValues(true);
var isShow = null;
var isEnable = null;
var action = "";
var mainAction = "";
jQuery.each(arrParents, function(index, parentID){
//get action
if(parentID == parent.id){
action = getControlAction(parent, control);
mainAction = action;
}
else{
var objControl = g_arrControls[parentID][control.idChild];
var parentValue = g_temp.cacheValues[parentID];
var objParent = {
id: parentID,
value: parentValue
};
action = getControlAction(objParent, objControl);
}
switch(action){
case "show":
if(isShow === null)
isShow = true;
break;
case "hide":
isShow = false;
break;
case "enable":
if(isEnable === null)
isEnable = true;
break;
case "disable":
isEnable = false;
break;
}
});
if(isEnable === null && isShow === null)
return(null);
var outputShow = (isShow === true)?"show":"hide";
var outputEnable = (isEnable === true)?"enable":"disable";
if(isEnable !== null && isShow !== null){
if(mainAction == "show" || mainAction == "hide")
return(outputShow);
else
return(outputEnable);
}
if(isShow !== null)
return(outputShow);
return(outputEnable);
}
/**
* on selects change - impiment the hide/show, enabled/disables functionality
*/
function onControlSettingChange(event, input){
if(!input)
input = this;
var controlValue = input.value.toLowerCase();
var controlID = input.name;
if(!g_arrControls[controlID])
return(false);
g_temp.cacheValues = null;
var arrChildControls = g_arrControls[controlID];
var objParent = {
id: controlID,
value: controlValue
};
jQuery.each(arrChildControls, function(childName, objControl){
var objChildInput = jQuery(g_IDPrefix + childName);
var rowID = g_IDPrefix + childName + "_row";
var objChildRow = jQuery(rowID);
if(objChildRow.length == 0)
return(true);
var value = objControl.value;
objControl.idChild = childName;
//check multiple parents
var arrParents = g_ucAdmin.getVal(g_arrChildrenControls, childName);
if(arrParents)
var action = getControlActionMultiple(objParent, objControl, arrParents);
else
var action = getControlAction(objParent, objControl);
var inputTagName = "";
if(objChildInput.length)
inputTagName = objChildInput.get(0).tagName;
var isChildRadio = (inputTagName == "SPAN" && objChildInput.length && objChildInput.hasClass("radio_wrapper"));
switch(objControl.type){
case "enable":
case "disable":
if(objChildInput.length > 0){
//disable
if(action == "disable"){
objChildRow.addClass("setting-disabled");
if(objChildInput.length)
objChildInput.prop("disabled","disabled").css("color","");
if(isChildRadio)
objChildInput.children("input").prop("disabled","disabled").addClass("disabled");
if(objChildInput.length && objChildInput.hasClass("unite-color-picker") && g_temp.colorPickerType == "spectrum")
objChildInput.spectrum("disable");
}//enable
else{
objChildRow.removeClass("setting-disabled");
if(objChildInput.length)
objChildInput.prop("disabled","");
if(isChildRadio)
objChildInput.children("input").prop("disabled","").removeClass("disabled");
//color the input again
if(objChildInput.length && objChildInput.hasClass("unite-color-picker")){
if(g_colorPicker)
g_colorPicker.linkTo(objChildInput);
else if(g_temp.colorPickerType == "spectrum")
objChildInput.spectrum("enable");
}
}
}
break;
case "show":
case "hide":
if(action == "show")
objChildRow.removeClass("unite-setting-hidden");
else
objChildRow.addClass("unite-setting-hidden");
break;
}
});
}
/**
* apply controls if available
*/
function applyControls(){
if(!g_objParent)
return(false);
g_objParent.find("select").trigger("change");
g_objParent.find("input[type='radio']:checked").trigger("change");
}
function _______EVENTS_____(){}
/**
* update events (in case of ajax set)
*/
this.updateEvents = function(){
initSettingsEvents();
initTipsy("s");
if(typeof g_objProvider.onSettingsUpdateEvents == "function")
g_objProvider.onSettingsUpdateEvents(g_objParent);
};
/**
* set on change event, this function should run before init
*/
this.setEventOnChange = function(func){
t.onEvent(t.events.CHANGE, func);
};
/**
* update input child placeholders if avilable
*/
function updateInputChildPlaceholders(objInput){
if(!objInput)
return(false);
if(objInput.length == 0)
return(false);
var type = getInputType(objInput);
if(type == "range")
objInput = getRangeInput(objInput);
var arrPlaceholderGroup = objInput.data("placeholder_group");
if(!arrPlaceholderGroup)
return(false);
if(jQuery.isArray(arrPlaceholderGroup) == false)
return(false);
var valuePrev = "";
jQuery.each(arrPlaceholderGroup, function(index, inputID){
var objChildInput = jQuery("#" + inputID);
if(objChildInput.length == 0)
throw new Error("input not found with id: " + inputID);
if(index > 0){
objChildInput.attr("placeholder", valuePrev);
objChildInput.trigger("placeholder_change");
}
var value = objChildInput.val();
if(value !== "")
valuePrev = value;
});
}
/**
* run on setting change
*/
this.onSettingChange = function(event, objInput, isInstantChange){
if(g_temp.enableTriggerChange == false)
return(true);
var dataOldValue = "unite_setting_oldvalue";
if(isInstantChange == true)
dataOldValue = "unite_setting_oldvalue_instant";
if(!objInput)
var objInput = jQuery(event.target);
var type = getInputType(objInput);
if(!type)
return(true);
if(type == "color")
checkColorInputOnchange(objInput);
var value = getSettingInputValue(objInput);
switch(type){
case "radio":
case "select":
case "fonts":
case "items":
case "map":
break;
default:
//check by value
var oldValue = objInput.data(dataOldValue);
if(value === oldValue)
return(true);
objInput.data(dataOldValue, value);
break;
}
//trigger event
var eventToTrigger = t.events.CHANGE;
if(isInstantChange == true)
eventToTrigger = t.events.INSTANT_CHANGE;
var name = getInputName(objInput);
triggerEvent(eventToTrigger, {"name": name, "value": value});
};
/**
* trigger event
*/
function triggerEvent(eventName, params){
if(!params)
var params = null;
if(g_objParent)
g_objParent.trigger(eventName, params);
}
/**
* on event name
*/
this.onEvent = function(eventName, func){
validateInited();
g_objParent.on(eventName,func);
};
/**
* combine controls to one object, and init control events.
*/
function initControls(){
if(!g_objWrapper)
return(false);
var objControls = g_objWrapper.data("controls");
if(!objControls)
return(false);
g_objWrapper.removeAttr("data-controls");
g_arrControls = objControls.parents;
g_arrChildrenControls = objControls.children;
//init events
g_objParent.find("select, input[type='radio'], input.unite-setting-addonpicker").change(onControlSettingChange);
}
/**
* init image chooser
*/
this.initImageChooser = function(objImageSettings){
if(objImageSettings.length == 0)
return(false);
objImageSettings.find(".unite-setting-image-preview").on("click",onChooseImageClick);
objImageSettings.find(".unite-button-choose").on("click",onChooseImageClick);
objImageSettings.find(".unite-button-clear").on("click",onClearImageClick);
var objInput = objImageSettings.find("input");
objInput.change(setImagePreview);
};
/**
* init mp3 chooser
*/
this.initMp3Chooser = function(objMp3Setting){
if(objMp3Setting.length == 0)
return(false);
objMp3Setting.find(".unite-button-choose").on("click",onChooseMp3Click);
};
/**
* trigger on keyup
*/
this.triggerKeyupEvent = function(objInput, event, funcChange){
if(!funcChange)
funcChange = t.onSettingChange;
if(g_temp.enableTriggerChange == false)
return(true);
//run instant
funcChange(event, objInput, true);
g_ucAdmin.runWithTrashold(funcChange, event, objInput);
};
/**
* init single input event
*/
function initInputEvents(objInput, funcChange){
if(!funcChange)
funcChange = t.onSettingChange;
var type = getInputType(objInput);
var basicType = getInputBasicType(objInput);
//init by type
switch(type){
case "color":
initColorPickerInputEvents(objInput, funcChange);
break;
case "icon":
initIconPicker(objInput);
break;
case "range":
initRangeInput(objInput, funcChange);
break;
case "map":
initMapPicker(objInput);
break;
case "addon":
initAddonPicker(objInput);
break;
case "repeater":
initRepeater(objInput);
break;
case "post":
initPostPicker(objInput);
break;
case "multiselect":
objInput.on("input", funcChange);
break;
default:
//custom setting
var objCustomType = getCustomSettingType(type);
if(objCustomType){
if(objCustomType.funcInit)
objCustomType.funcInit(objInput, t);
}
else //provider setting
g_ucAdmin.initProviderSettingEvents(type, objInput);
break;
}
//init by base type
switch(basicType){
case "checkbox":
case "radio":
objInput.on("click",funcChange);
break;
case "div": //special types
break;
default:
objInput.change(funcChange);
objInput.on("keyup", function(event){
t.triggerKeyupEvent(objInput, event, funcChange);
});
break;
}
}
/**
* init settings events
*/
function initSettingsEvents(){
var objInputs = getObjInputs();
jQuery.each(objInputs, function(index, input){
var objInput = jQuery(input);
initInputEvents(objInput);
});
//init image input events
var objImageSettings = g_objParent.find(".unite-setting-image");
t.initImageChooser(objImageSettings);
//init mp3 input events
var objMp3Settings = g_objParent.find(".unite-setting-mp3");
t.initMp3Chooser(objMp3Settings);
initControls();
}
/**
* init global events - not repeating
*/
function initGlobalEvents(){
g_ucAdmin.onEvent("update_assets_path", onUpdateAssetsPath);
}
/**
* init options
*/
function initOptions(){
if(!g_objWrapper)
return(false);
var objOptions = g_objWrapper.data("options");
if(typeof objOptions != "object")
throw new Error("The options should be an object");
g_objWrapper.removeAttr("data-options");
var arrOptions = ["show_saps","saps_type","id_prefix"];
jQuery.each(arrOptions, function(index, optionKey){
g_options[optionKey] = g_ucAdmin.getVal(objOptions, optionKey, g_options[optionKey]);
//delete option key
objOptions[optionKey] = true;
delete objOptions[optionKey];
});
//merge with other options
jQuery.extend(g_options, objOptions);
if(g_options["id_prefix"])
g_IDPrefix = "#"+g_options["id_prefix"];
}
/**
* update placeholders
*/
this.updatePlaceholders = function(objPlaceholders){
if(!g_objParent)
return(false);
jQuery.each(objPlaceholders, function(key, value){
var objInput = t.getInputByName(key);
if(!objInput)
return(true);
objInput.attr("placeholder", value);
objInput.trigger("placeholder_change");
});
};
/**
* focus first input
*/
this.focusFirstInput = function(){
var objInputs = getObjInputs();
jQuery.each(objInputs, function(index, input){
var objInput = jQuery(input);
var type = getInputType(objInput);
switch(type){
case "textarea":
case "text":
objInput.focus();
return(false);
break;
}
});
};
/**
* destroy settings object
*/
this.destroy = function(){
g_ucAdmin.offEvent("update_assets_path");
var objInputs = g_objParent.find("input,textarea,select").not("input[type='radio']");
objInputs.off("change");
var objInputsClick = g_objParent.find("input[type='radio']");
objInputsClick.off("click");
var objImageSettings = g_objParent.find(".unite-setting-image");
//destroy image events:
if(objImageSettings.length){
objImageSettings.find(".unite-button-choose").off("click");
objImageSettings.find(".unite-button-clear").off("click");
objImageSettings.find("input").off("change");
}
//destroy control events
g_objParent.find("select, input").off("change");
//destroy loaded events
g_objParent.off(t.events.CHANGE);
//destroy tabs events
if(g_objSapTabs)
g_objSapTabs.children("a").off("click");
//destroy accordion events
if(g_objWrapper){
var objAccordionItems = g_objWrapper.find(".unite-postbox .unite-postbox-title");
if(objAccordionItems.length)
objAccordionItems.off("click");
}
g_objProvider.destroyEditors(t);
//null parent object so it won't pass the validation
if(g_objParent.length){
g_objParent.html("");
}
//destroy items manager
if(g_temp.objItemsManager){
g_temp.objItemsManager.destroy();
g_temp.objItemsManager = null;
g_objParent.find(".uc-setting-items-panel-button").off("click");
}
if(g_temp.objFontsPanel)
t.destroyFontsPanel();
if(g_temp.isRepeaterExists == true)
t.destroyRepeaters();
//destroy icon pickers
g_objParent.find(".unite-settings-iconpicker input").off("blur");
g_objParent.find(".unite-iconpicker-button").off("blur");
//destroy custom setting types
var objCustomTypes = getCustomSettingType();
if(objCustomTypes){
jQuery.each(objCustomTypes, function(index, objType){
if(objType.funcDestroy && g_objParent && g_objParent.length)
objType.funcDestroy(g_objParent);
});
}
//destroy addon picker
g_objParent.find(".unite-addonpicker-button").off("click");
g_objParent.find(".unite-button-primary, .unite-button-secondary").off("click");
g_objParent = null;
};
/**
* set id prefix
*/
this.setIDPrefix = function(idPrefix){
g_IDPrefix = "#"+idPrefix;
};
/**
* get id prefix
*/
this.getIDPrefix = function(){
return(g_IDPrefix);
};
/**
* get wrapper
*/
this.getObjWrapper = function(){
return(g_objParent);
};
/**
* return if the settings are in sidebar
*/
this.isSidebar = function(){
return(g_temp.isSidebar);
};
/**
* run custom command
*/
this.runCommand = function(command){
switch(command){
case "open_items_panel":
var objButton = g_objParent.find(".uc-setting-items-panel-button");
if(objButton.length)
objButton.trigger("click");
break;
}
};
/**
* add custom type
* fields: type, funcInit, funcSetValue, funcGetValue, funcClearValue
*/
this.addCustomSettingType = function(type, objType){
g_ucAdmin.validateObjProperty(objType, ["funcInit",
"funcSetValue",
"funcGetValue",
"funcClearValue",
"funcDestroy",
],"custom setting type object");
var objCustomSettings = getCustomSettingType();
var existing = g_ucAdmin.getVal(objCustomSettings, type);
if(existing)
throw new Error("The custom settings type: "+type+" alrady exists");
objCustomSettings[type] = objType;
g_ucAdmin.storeGlobalData(g_temp.customSettingsKey, objCustomSettings);
};
/**
* init the settings function, set the tootips on sidebars.
*/
this.init = function(objParent){
if(!g_ucAdmin)
g_ucAdmin = new UniteAdminUC();
g_objParent = objParent;
if(g_objParent.length > 1){
trace(g_objParent);
throw new Error("Settings object can't be inited with too many parents");
}
//init settings wrapper
if(g_objParent.hasClass("unite_settings_wrapper") == true)
g_objWrapper = g_objParent;
else{
g_objWrapper = g_objParent.children(".unite_settings_wrapper");
}
if(g_objWrapper.length == 0)
g_objWrapper = g_objParent.parents(".unite_settings_wrapper");
if(g_objWrapper.length == 0)
g_objWrapper = null;
//set if sidebar
if(g_objWrapper && g_objWrapper.hasClass("unite-settings-sidebar"))
g_temp.isSidebar = true;
if(g_objWrapper)
g_temp.settingsID = g_objWrapper.prop("id");
g_temp.enableTriggerChange = false;
validateInited();
initOptions();
initColorPicker(); //put the color picker automatically
initAnimationsSelector();
initItemsPanel();
initRepeaters();
t.initFontsPanel();
initGlobalEvents();
t.updateEvents();
initSaps();
t.clearSettingsInit();
g_objProvider.initEditors(t);
g_temp.isInited = true;
g_temp.enableTriggerChange = true;
};
} // UniteSettings class end