File "unitecreator_params_editor.js"
Full path: /home/kosmetik/public_html/wp-content/plugins/unlimited-elements-for-elementor/js/unitecreator_params_editor.js
File
size: 36.17 B
MIME-type: text/plain
Charset: utf-8
Download Open Edit Advanced Editor Back
"use strict";
function UniteCreatorParamsEditor(){
var t = this;
var g_objWrapper, g_objTableBody, g_objEmptyParams, g_type;
var g_objDialog = new UniteCreatorParamsDialog(), g_buttonAddParam;
var g_buttonAddImageBase, g_objLastParam, g_objCatsWrapper, g_objCopyCatSection;
if(!g_ucAdmin)
var g_ucAdmin = new UniteAdminUC();
this.events = {
UPDATE: "update", //update list event
BULK: "bulk"
};
var g_temp = {
hasCats:false,
isItemsType:false,
funcOnUpdate: function(){}, //on some element change
DEFAULT_CAT: "cat_general_general",
CLASS_MOVE_MODE: "uc-move-mode",
LOCAL_STORAGE_KEY: "uc_param_cat_copied",
HOUR_IN_MS: 60*60*1000
};
function ______________GETTERS______________(){}
/**
* get row data
*/
function getRowData(objRow){
var data = objRow.data("paramdata");
//add catid
if(g_temp.hasCats == true){
var catid = objRow.data("catid");
if(catid)
data["__attr_catid__"] = catid;
}
//avoid link return
var objReturn = {};
jQuery.extend(objReturn, data);
return(objReturn);
}
/**
* get params object (table rows)
*/
function getParamsRows(isSelected){
if(!g_objTableBody)
throw new Error("The params editor is not inited yet");
var selector = "tr";
if(isSelected === true)
selector = "tr.uc-selected";
var rows = g_objTableBody.find(selector);
return(rows);
}
/**
* check if some param type exists
*/
function isParamDataExists(key, value){
var rows = getParamsRows();
for(var i=0;i<rows.length;i++){
var objRow = jQuery(rows[i]);
var objParam = getRowData(objRow);
if(objParam[key] == value)
return(true);
}
return(false);
}
/**
* check if some param type exists
*/
function isParamTypeExists(type){
var isExists = isParamDataExists("type", type);
return(isExists);
}
/**
* check if some param type exists
*/
function isParamNameExists(name){
var isExists = isParamDataExists("name", name);
return(isExists);
}
/**
* get duplicated new param name
*/
function getDuplicateNewName(name){
var newName = name+"_copy";
var isExists = isParamNameExists(newName);
if(isExists == false)
return(newName);
var counter = 1;
do{
counter++;
newName = newName + counter;
isExists = isParamNameExists(newName);
}while(isExists == true);
return(newName);
}
/**
* get params row object by index
*/
function getParamsRow(rowIndex){
var rows = getParamsRows();
if(rowIndex >= rows.length)
throw new Error("Row with index: "+rowIndex+" not found");
var objRow = jQuery(rows[rowIndex]);
return(objRow);
}
/**
* get the number of params
*/
function getNumParams(){
var rows = getParamsRows();
return rows.length;
}
/**
* get type title from type name
*/
function getTypeTitle(type){
var typeTitle = type;
if(g_uctext.hasOwnProperty(type))
typeTitle = g_uctext[type];
return(typeTitle);
}
/**
* get data from params table
* paramsType could be "control"
*/
this.getParamsData = function(paramsType, isAssoc, filterCatID){
var rows = getParamsRows();
var arrParams = [];
jQuery.each(rows, function(index, row){
var objRow = jQuery(row);
var objParam = getRowData(objRow);
if(filterCatID){
var paramCatID = g_ucAdmin.getVal(objParam, "__attr_catid__");
if(paramCatID != filterCatID)
return(true);
}
if(paramsType == "control"){
switch(objParam.type){
case "uc_dropdown":
case "uc_radioboolean":
case "uc_checkbox":
break;
default:
return(true);
break;
}
}
arrParams.push(objParam);
});
if(isAssoc == true){ //turn to assoc
var objParams = {};
jQuery.each(arrParams, function(index, param){
var name = param.name;
objParams[name] = param;
});
return(objParams);
}else
return(arrParams);
};
/**
* get categories data
*/
this.getCatData = function(){
return getCatsData();
}
/**
* get row html, taken from param object
*
*/
function getParamRowHtml(objParam){
var typeTitle = getTypeTitle(objParam.type);
var html = "<tr>";
var paramError = null;
if(objParam.hasOwnProperty("param_error"))
paramError = objParam["param_error"];
var textRowAdd = "";
var linkClass = "";
var linkTitle = "";
if(paramError){
linkTitle = "title='"+paramError+"'";
linkClass = " unite-color-red";
textRowAdd = "class='unite-color-red' title='"+paramError+"'";
}
var isAdminLabel = g_ucAdmin.getVal(objParam, "admin_label", false, g_ucAdmin.getvalopt.FORCE_BOOLEAN);
var adminLabelClass = (isAdminLabel == true)?" label-active":"";
//conditoin
var enableCondition = g_ucAdmin.getVal(objParam, "enable_condition", false, g_ucAdmin.getvalopt.FORCE_BOOLEAN);
var conditionText = null;
if(enableCondition == true){
var conditionAttribute = g_ucAdmin.getVal(objParam, "condition_attribute");
if(!conditionAttribute)
enableCondition = false;
var conditionOperator = g_ucAdmin.getVal(objParam, "condition_operator");
var conditionValue = g_ucAdmin.getVal(objParam, "condition_value");
conditionText = conditionAttribute;
if(conditionOperator == "equal")
conditionText += " = ";
else
conditionText += " != ";
conditionText += conditionValue;
if(!conditionValue)
conditionText += "'["+g_uctext["empty_text"]+"]'";
}
//icon move
html += " <td class='uc-hide-on-movemode'><div class='uc-table-row-handle'></div><div class='uc-table-admin-label"+adminLabelClass+"' title='Admin Label'></div></td>";
html += " <td class='uc-show-on-movemode'> <input type='checkbox' class='uc-check-param-move' data-name='" + objParam.name + "'> </td>";
//title link
html += " <td>";
html += "<a class='uc-button-edit-param"+linkClass+"' "+linkTitle+" href='javascript:void(0)'>" + objParam.title + "</a>";
if(enableCondition)
html += "<div class='uc-text-condition' title='"+g_uctext["display_condition"]+"'>" + conditionText + "</div>";
html += "</td>";
html += " <td "+textRowAdd+">" + objParam.name + "</td>";
html += " <td "+textRowAdd+">" + typeTitle + "</td>";
html += " <td>"
switch(objParam.type){
case "uc_checkbox":
var checked = "";
if(objParam.is_checked == "true")
checked = " checked ";
html += "<input type='checkbox' " + checked + " readonly>";
html += "<span>" + objParam.text_near + "</span>";
break;
case "uc_dropdown":
html += "<select>";
var options = objParam.options;
var defaultValue = objParam.default_value;
if(typeof options == "object"){
jQuery.each(options, function(name, value){
var selected = "";
if(value == defaultValue)
selected = "selected='selected'";
html += "<option val='" + value + "' " + selected + ">" + name + "</option>";
});
}
html += "</select>"
break;
case "uc_radioboolean":
var trueChecked = " checked";
var falseChecked = "";
if(objParam.default_value == objParam.false_value){
trueChecked = "";
falseChecked = " checked";
}
html += "<label><input type='radio' "+trueChecked+" name="+objParam.name+"></input>"+objParam.true_name+"</label>";
html += "<label><input type='radio' "+falseChecked+" name="+objParam.name+"></input>"+objParam.false_name+"</label>";
break;
case "uc_number":
var unit = objParam.unit;
if(unit == "other")
unit = objParam.unit_custom;
html += "<input type='text' class='unite-input-number' readonly value='"+objParam.default_value+"'> " + unit;
break;
case "uc_colorpicker":
html += "<input type='text' class='input-color unite-float-left' readonly value='"+objParam.default_value+"'>";
html += "<div class='colorpicker-bar' style='background-color:"+objParam.default_value+"'></div>";
break;
case "uc_textarea":
case "uc_editor":
html += "<textarea readonly>"+objParam.default_value+"</textarea>";
break;
case "uc_image":
html += "<input type='text' class='unite-input-image' readonly value=''>";
html += "<a disabled readonly class='unite-button-secondary button-disabled'>"+g_uctext.choose_image+"</a>";
break;
case "uc_mp3":
html += "<input type='text' class='unite-input-image' readonly value=''>";
html += "<a disabled readonly class='unite-button-secondary button-disabled'>"+g_uctext.choose_audio+"</a>";
break;
default:
var defaultValue = "";
if(objParam.hasOwnProperty("default_value"))
defaultValue = objParam.default_value;
html += "<input type='text' readonly value='" + defaultValue + "'>";
break;
}
html += " </td>"
var deleteClass = "";
if(paramError)
deleteClass = " unite-bold";
//add operations
html += " <td>";
html += " <a href='javascript:void(0)' class='unite-button-secondary uc-button-delete-param "+deleteClass+"' title='"+g_uctext.delete_op+"' ><i class='far fa-trash-alt'></i></a>";
html += " <a href='javascript:void(0)' class='unite-button-secondary uc-button-duplicate-param' title='"+g_uctext.duplicate_op+"'><i class='far fa-clone'></i></a>";
html += " <a href='javascript:void(0)' class='unite-button-secondary uc-button-bulk-param' title='"+g_uctext.bulk+"'><i class='far fa-copy'></i></a>";
html += " </td>";
html += "</tr>";
return(html);
}
/**
* get specific category params data
*/
function getCatParamsData(catid){
var arrParams = t.getParamsData(null, false, catid);
return(arrParams);
}
function ______________CATS______________(){}
/**
* get number of rows in category
*/
function getNumCatRows(paramCatID){
var objCatIDs = getCatIDs();
var objNumbers = {};
var objRows = getParamsRows();
jQuery.each(objRows, function(index, row){
var objRow = jQuery(row);
var catID = objRow.data("catid");
if(!catID)
catID = g_temp.DEFAULT_CAT;
if(objCatIDs.hasOwnProperty(catID) == false)
catID = g_temp.DEFAULT_CAT;
var numCats = g_ucAdmin.getVal(objNumbers, catID);
if(!numCats)
numCats = 0;
numCats++;
objNumbers[catID] = numCats;
});
var arrCatIDs = getCatIDs();
jQuery.each(arrCatIDs, function(catID){
if(objNumbers.hasOwnProperty(catID) == false)
objNumbers[catID] = 0;
});
// return single cat number
if(paramCatID){
var catNumber = g_ucAdmin.getVal(objNumbers, paramCatID);
if(!catNumber)
catNumber = 0;
return(catNumber);
}
return(objNumbers);
}
/**
* get current category
*/
function getCurrentCat(){
if(g_temp.hasCats == false)
return(null);
var objCat = g_objCatsWrapper.find(".uc-attr-list-sections li.uc-active");
if(objCat.length == 0 || objCat.length > 1)
return(null);
return(objCat);
}
/**
* get cat data
*/
function getCurrentCatData(name){
var objCat = getCurrentCat();
var data = getCatData(objCat);
if(name == "id")
return(data.id);
if(name == "title")
return(data.title)
return(data);
}
/**
* get all categories id's assoc
*/
function getCatIDs(tab){
var objIDs = {};
var objRows = g_objCatsWrapper.find(".uc-attr-list-sections li");
jQuery.each(objRows, function(index, row){
var objRow = jQuery(row);
var catID = objRow.data("id");
objIDs[catID] = true;
});
return(objIDs);
}
/**
* get category by ID
*/
function getCatByID(catID){
if(!catID)
return(null);
var cat = jQuery("#"+catID);
if(cat.length == 0)
return(null);
return(cat);
}
/**
* get cat data
*/
function getCatData(objRow, includeTab){
var objTitle = objRow.find(".uc-attr-list__section-title");
var title = objTitle.html();
title = jQuery.trim(title);
var data = {};
data["id"] = objRow.data("id");
data["title"] = title;
if(includeTab === true)
data["tab"] = getCatTab(objRow);
return(data);
}
/**
* get category tab
*/
function getCatTab(objRow){
var objList = objRow.parents(".uc-attr-list-sections");
var tab = objList.data("tab");
return(tab);
}
/**
* get tab data
*/
function getCatsData_tab(objCats, name){
var objList = jQuery("#uc_attr_list_sections_"+name);
var objlistItems = objList.children("li");
var tab = objList.data("tab");
jQuery.each(objlistItems, function(index, item){
var objItem = jQuery(item);
var data = getCatData(objItem);
data.tab = tab;
objCats.push(data);
});
return(objCats);
}
/**
* get categories data
*/
function getCatsData(){
if(g_temp.hasCats == false)
return(null);
var objCats = [];
objCats = getCatsData_tab(objCats, "content");
objCats = getCatsData_tab(objCats, "style");
return(objCats);
}
/**
* update category num items
*/
function updateCatNumItems(objCat, numItems){
if(!objCat)
return(false);
var objNumItems = objCat.find(".uc-attr-list__section-numitems");
g_ucAdmin.validateDomElement(objNumItems, "num items object of category");
var html = "("+numItems+")";
objNumItems.html(html);
}
/**
* update num items of currnet category
*/
function updateCurrentCatNumItems(){
var objNumParams = getNumCatRows();
for(var catID in objNumParams){
var numParams = objNumParams[catID];
var objCat = getCatByID(catID);
if(!objCat)
continue;
updateCatNumItems(objCat, numParams);
}
}
/**
* rename category
*/
function renameCategory(objCat, newTitle, isMoveToEnd){
if(typeof objCat == "string")
objCat = getCatByID(objCat);
g_ucAdmin.validateDomElement(objCat, "category");
var objTitle = objCat.find(".uc-attr-list__section-title");
objTitle.html(newTitle);
if(isMoveToEnd === true){
var objParent = objCat.parent();
objParent.append(objCat);
}
}
/**
* update visibility by categories
*/
function updateParamsVisibilityByCats(){
if(g_temp.hasCats == false)
return(false);
var currentCatID = getCurrentCatData("id");
var objRows = getParamsRows();
jQuery.each(objRows, function(index, row){
var objRow = jQuery(row);
var catID = objRow.data("catid");
if(currentCatID == catID)
objRow.show();
else
objRow.hide();
});
}
/**
* add tab section to some tab
*/
function addCatToTab(tab, catTitle, catID){
//check and rename if exists
var objCat = getCatByID(catID);
if(objCat){
renameCategory(objCat, catTitle, true);
return(false);
}
if(!catID)
var catID = "cat_"+tab+"_"+g_ucAdmin.getRandomString(8);
var html ="<li id='"+catID+"' data-id='"+catID+"'>";
html += "<span class=\"uc-attr-list__section-title\">";
html += g_ucAdmin.htmlspecialchars(catTitle);
html += "</span>";
html += "<span class=\"uc-attr-list__section-numitems\"></span>";
html += "<i class=\"uc-attr-list-sections__icon-edit fas fa-pen uc-hide-on-movemode\" title=\""+g_uctext.edit_section+"\"></i>";
html += "<i class=\"uc-attr-list-sections__icon-delete fas fa-trash uc-hide-on-movemode\" title=\""+g_uctext.delete_section+"\"></i>";
html += "<i class=\"uc-attr-list-sections__icon-copy fas fa-copy uc-hide-on-movemode\" title=\""+g_uctext.copy_section+"\"></i>";
html += "<i class=\"uc-attr-list-sections__icon-move fas fa-bullseye uc-show-on-movemode\" title=\"Move Here\"></i>";
html += "</li>";
var objCat = jQuery(html);
var objList = jQuery("#uc_attr_list_sections_"+tab);
g_ucAdmin.validateNotEmpty(objList, "list sections");
objList.append(objCat);
return(catID);
}
/**
* check if it's move mode
*/
function isMoveMode(){
var isMoveMode = g_objWrapper.hasClass(g_temp.CLASS_MOVE_MODE);
return(isMoveMode);
}
/**
* switch to move mode
*/
function switchCatMoveMode(isMove){
if(isMove === undefined)
var isMove = true;
if(isMove == true){
g_objWrapper.addClass(g_temp.CLASS_MOVE_MODE);
}
else
g_objWrapper.removeClass(g_temp.CLASS_MOVE_MODE);
clearAllMoveCheckboxes();
}
/**
* select some category
*/
function selectCategory(objCat){
if(objCat.hasClass("uc-active"))
return(true);
//don't change categories on move mode
var isMove = isMoveMode();
if(isMove == true)
return(true);
var objActiveCat = g_objCatsWrapper.find(".uc-attr-list-sections li.uc-active");
objActiveCat.removeClass("uc-active");
objCat.addClass("uc-active");
updateParamsVisibilityByCats();
}
/**
* on category click
*/
function onCatClick(){
var objCat = jQuery(this);
selectCategory(objCat);
}
/**
* edit selected category
*/
function onEditCatIconClick(){
var objCurrentCat = getCurrentCat();
if(objCurrentCat == null)
return(false);
openAddEditCatDialog(null, objCurrentCat);
}
/**
* on click on delete icon
*/
function onDeleteCatIconClick(event){
event.stopPropagation();
var objCurrentCat = getCurrentCat();
var catData = getCatData(objCurrentCat, true);
var catID = catData.id;
var numRows = getNumCatRows(catID);
if(numRows > 0){
alert(g_uctext.delete_section_error);
return(false);
}
if(catID == g_temp.DEFAULT_CAT){
alert(g_uctext.delete_default_section_error);
return(false);
}
//select another category
var objSelectCat = objCurrentCat.prev();
if(objSelectCat.length == 0)
objSelectCat = objCurrentCat.next();
if(objSelectCat.length == 0)
objSelectCat = getCatById(g_temp.DEFAULT_CAT);
objCurrentCat.remove();
selectCategory(objSelectCat);
}
/**
* clear all move related checkboxes
*/
function clearAllMoveCheckboxes(){
var objCheckboxes = g_objWrapper.find("input.uc-check-param-move");
objCheckboxes.prop("checked","");
updateCheckedParams();
}
/**
* update selected attributes, set selected classes to param rows
* by the checked checkbox
*/
function updateCheckedParams(){
var objCheckboxes = g_objWrapper.find("input.uc-check-param-move");
var hasSelected = false;
var numSelected = 0;
jQuery.each(objCheckboxes, function(index, checkbox){
var objCheckbox = jQuery(checkbox);
var isChecked = objCheckbox.is(":checked");
var objParam = objCheckbox.parents("tr");
if(isChecked){
objParam.addClass("uc-selected");
hasSelected = true;
numSelected++;
}
else
objParam.removeClass("uc-selected");
});
if(hasSelected == true)
g_objWrapper.addClass("uc-has-selected");
else
g_objWrapper.removeClass("uc-has-selected");
var objNumSelected = jQuery("#uc_attr_cats_selected_text_number");
objNumSelected.html(numSelected);
}
/**
* move params between categories
*/
function onMoveParamsClick(){
var objButton = jQuery(this);
var objCatRow = objButton.parents("li");
if(objCatRow.length == 0)
return(false);
var catData = getCatData(objCatRow, false);
var catID = catData.id;
var objSelectedRows = getParamsRows(true);
jQuery.each(objSelectedRows, function(index, row){
var objRow = jQuery(row);
objRow.data("catid", catID);
});
//clear checkboxes
clearAllMoveCheckboxes();
//update visibility
updateParamsVisibilityByCats();
//set numbers
triggerEvent(t.events.UPDATE);
//stop move mode
switchCatMoveMode(false);
}
/**
* init cats events
*/
function initCatsEvents(){
//list add section button
var objAddButtons = g_objCatsWrapper.find(".uc-attr-cats__button-add");
objAddButtons.on("click", onCatAddSectionClick);
//inside dialog button
var buttonAddSectionDialog = jQuery("#uc_dialog_attribute_category_button_addsection");
buttonAddSectionDialog.on("click", onDialogAddSectionClick);
var inputTitleDialog = jQuery("#uc_dialog_attribute_category_addsection .uc-section-title");
g_ucAdmin.validateDomElement(inputTitleDialog, "dialog input");
inputTitleDialog.doOnEnter(onDialogAddSectionClick);
//sortable cats
var objListContent = jQuery("#uc_attr_list_sections_content");
var objListStyle = jQuery("#uc_attr_list_sections_style");
objListContent.sortable();
objListStyle.sortable();
//on cat click
g_objCatsWrapper.on("click",".uc-attr-list-sections li", onCatClick);
//on edit icon click
g_objCatsWrapper.on("click",".uc-attr-list-sections__icon-edit", onEditCatIconClick);
//on delete icon click
g_objCatsWrapper.on("click",".uc-attr-list-sections__icon-delete", onDeleteCatIconClick);
//on cat copy icon click
g_objCatsWrapper.on("click",".uc-attr-list-sections__icon-copy", onCopyCatIconClick);
var objButtonSwitchMoveMode = jQuery("#uc_attr_button_switch_move_mode");
objButtonSwitchMoveMode.on("click", function(){switchCatMoveMode()});
//stop move mode
var objButtonStopMoveMode = jQuery("#uc_attr_button_stop_move_mode");
objButtonStopMoveMode.on("click", function(){switchCatMoveMode(false)});
g_objWrapper.on("click", ".uc-check-param-move", updateCheckedParams);
//clear selected
var objClearSelected = jQuery("#uc_attr_cats_selected_clear");
objClearSelected.on("click", clearAllMoveCheckboxes);
//move icons
g_objWrapper.on("click", ".uc-attr-list-sections__icon-move", onMoveParamsClick);
}
/**
* on update
*/
function onUpdateInternal(){
if(g_temp.hasCats == false)
return(true);
updateCurrentCatNumItems();
}
/**
* init categories from data
*/
function initCatsFromData(arrParamsCats){
if(!arrParamsCats)
return(false);
if(jQuery.isArray(arrParamsCats) == false)
return(false);
jQuery.each(arrParamsCats, function(index, objCat){
var tab = g_ucAdmin.getVal(objCat, "tab");
var title = g_ucAdmin.getVal(objCat, "title");
var id = g_ucAdmin.getVal(objCat, "id");
addCatToTab(tab, title, id);
});
}
function ______________COPY_CATEGORY______________(){}
/**
* on copy category icon click
*/
function onCopyCatIconClick(){
var objIcon = jQuery(this);
var objCatRow = objIcon.parents("li");
//get the data
var catData = getCatData(objCatRow);
var catTitle = catData.title;
var catID = catData.id;
var arrParams = getCatParamsData(catID);
var objSaveData = {};
objSaveData["title"] = catTitle;
objSaveData["params"] = arrParams;
//set expire time
var currentTimeStamp = Date.now();
var expireTime = currentTimeStamp + g_temp.HOUR_IN_MS;
objSaveData["expire"] = expireTime;
var strSaveData = g_ucAdmin.encodeObjectForSave(objSaveData);
//save the local storage data
window.localStorage.setItem(g_temp.LOCAL_STORAGE_KEY, strSaveData);
showBottomCopySection(catTitle);
}
/**
* show copy section part
*/
function showBottomCopySection(title){
var objName = g_objCopyCatSection.find(".uc-attr-cats-copied-section__name");
objName.html(title);
g_objCopyCatSection.show();
}
/**
* get stored data
*/
function copySectionGetStoredData(){
var strData = window.localStorage.getItem(g_temp.LOCAL_STORAGE_KEY);
if(!strData)
return(null);
var jsonData = g_ucAdmin.decodeContent(strData);
var objData = JSON.parse(jsonData);
return(objData);
}
/**
* clear copied section
*/
function clearCopiedSection(){
window.localStorage.removeItem(g_temp.LOCAL_STORAGE_KEY);
g_objCopyCatSection.hide();
}
/**
* paste copied section
*/
function pasteCopiedSection(){
var objButton = jQuery(this);
var tab = objButton.data("tab");
var objData = copySectionGetStoredData();
if(!objData)
return(false);
// add category
var title = g_ucAdmin.getVal(objData, "title");
var catID = addCatToTab(tab, title);
// add attributes
var params = g_ucAdmin.getVal(objData, "params");
if(!params)
params = [];
jQuery.each(params,function(index, param){
param["__attr_catid__"] = catID;
addParamRow(param);
});
// clear and select
clearCopiedSection();
// select cat
var objCat = getCatByID(catID);
selectCategory(objCat);
}
/**
* init copies section div event
*/
function initCopiedSectionEvents(){
jQuery("#uc_attr_cats_copied_section_clear").on("click", clearCopiedSection);
jQuery("#uc_attr_cats_copied_section_paste_content").on("click", pasteCopiedSection);
jQuery("#uc_attr_cats_copied_section_paste_style").on("click", pasteCopiedSection);
}
/**
* init the copy category section.
* show on init if data exists
*/
function initCopyCatSection(){
if(g_temp.hasCats == false)
return(false);
g_objCopyCatSection = jQuery("#uc_attr_cats_copied_section");
if(g_objCopyCatSection.length == 0)
return(false);
//init events
initCopiedSectionEvents();
//show if available
var objData = copySectionGetStoredData();
var title = g_ucAdmin.getVal(objData, "title");
var expire = g_ucAdmin.getVal(objData, "expire");
if(!expire){
clearCopiedSection();
return(false);
}
var currentTime = jQuery.now();
if(currentTime > expire){
clearCopiedSection();
return(false);
}
if(!title)
return(false);
if(objData)
showBottomCopySection(title);
}
function ______________CAT_DIALOG______________(){}
/**
* open add edit dialog
*/
function openAddEditCatDialog(tab, objCatRow){
var isEditMode = false;
//set to edit mode
if(objCatRow){
var catData = getCatData(objCatRow, true);
isEditMode = true;
}
var dialogID = "uc_dialog_attribute_category_addsection";
var objDialog = jQuery("#"+dialogID);
if(isEditMode == false){
var dialogTitle = objDialog.data("title_add");
var buttonText = objDialog.data("button_add");
objDialog.data("tab", tab);
objDialog.data("is_edit", false);
objDialog.data("catid", null);
}
else{
var dialogTitle = objDialog.data("title_edit");
var buttonText = objDialog.data("button_update");
objDialog.data("is_edit", true);
objDialog.data("catid", catData.id);
}
var dialogOptions = {
title: dialogTitle
};
g_ucAdmin.openCommonDialog(objDialog, function(){
var objError = objDialog.find(".uc-error-message");
objError.html("").hide();
var objInput = objDialog.find(".uc-section-title");
var objButton = objDialog.find(".uc-button-add-section");
if(isEditMode == true){
var catTitle = catData.title;
var objInputTitle = objDialog.find(".uc-section-title");
objInputTitle.val(catTitle);
}else{
objInput.val("");
}
objButton.html(buttonText);
objInput.focus();
}, dialogOptions);
}
/**
* on add section click
*/
function onCatAddSectionClick(){
var objButton = jQuery(this);
var tab = objButton.data("sectiontab");
openAddEditCatDialog(tab);
}
/**
* add the section
*/
function onDialogAddSectionClick(){
var dialogID = "uc_dialog_attribute_category_addsection";
var objDialog = jQuery("#" + dialogID);
var objInput = objDialog.find(".uc-section-title");
var catTitle = objInput.val();
var objError = objDialog.find(".uc-error-message");
catTitle = jQuery.trim(catTitle);
if(!catTitle){
var textError = objError.data("error_empty");
objError.show().html(textError);
objInput.focus();
return(false);
}
objError.hide();
var isEdit = objDialog.data("is_edit");
if(isEdit === true){
var catID = objDialog.data("catid");
renameCategory(catID, catTitle);
}else{ //add
var tab = objDialog.data("tab");
addCatToTab(tab, catTitle);
}
objDialog.dialog("close");
}
function ______________ACTIONS______________(){}
/**
* add row from parameter
*/
function addParamRow(objParam, rowBefore, noEventTrigger){
if(!rowBefore)
var rowBefore = null;
var html = getParamRowHtml(objParam);
var objRow = jQuery(html).data("paramdata", objParam);
//add after some row
if(rowBefore){
objRow.insertAfter(rowBefore);
}else{ //add to bottom
g_objTableBody.append(objRow);
g_objEmptyParams.hide();
}
//add current category data
if(g_temp.hasCats == true){
var objCatIDs = getCatIDs();
var currentCatID = getCurrentCatData("id");
var catID = g_ucAdmin.getVal(objParam, "__attr_catid__");
if(!catID)
catID = currentCatID;
//if wrong category - update the param for current category
if(objCatIDs.hasOwnProperty(catID) == false)
catID = currentCatID;
objRow.data("catid", catID);
if(catID != currentCatID && objCatIDs.hasOwnProperty(catID))
objRow.hide();
}
g_objLastParam = objParam;
//trigger change event
if(noEventTrigger !== true)
triggerEvent(t.events.UPDATE);
}
/**
* update row param
*/
function updateParamRow(rowIndex, objParam){
if(typeof rowIndex == "object")
var objRow = rowIndex;
else
var objRow = getParamsRow(rowIndex);
var html = getParamRowHtml(objParam);
var objNewRow = jQuery(html).data("paramdata", objParam);
//update category related variables
if(g_temp.hasCats == true){
var catID = objRow.data("catid");
objNewRow.data("catid", catID);
}
objRow.replaceWith(objNewRow);
g_objLastParam = objParam;
//trigger change event
triggerEvent(t.events.UPDATE);
}
/**
* remvoe param row
*/
function removeParamRow(objRow){
objRow.remove();
var numParams = getNumParams();
if(numParams == 0)
g_objEmptyParams.show();
g_objLastParam = null;
//trigger change event
triggerEvent(t.events.UPDATE);
}
/**
* duplicate param row
*/
function duplicateParamRow(objRow){
var rowData = getRowData(objRow);
var name = rowData.name;
rowData.name = getDuplicateNewName(name);
addParamRow(rowData, objRow);
}
function ______________EVENTS______________(){}
/**
* trigger internal event
*/
function triggerEvent(eventName, params){
if(!params)
var params = null;
g_objWrapper.trigger(eventName, params);
}
/**
* on internal event
*/
this.onEvent = function(eventName, func){
g_objWrapper.on(eventName,func);
};
/**
* on delete param click
*/
function onDeleteParamClick(){
var objRow = jQuery(this).parents("tr");
removeParamRow(objRow);
}
/**
* on edit param click
*/
function onEditParamClick(){
var objRow = jQuery(this).parents("tr");
var paramData = getRowData(objRow);
switch(paramData.type){
case "uc_imagebase":
alert("no edit yet, sorry. will be in the future working on it...");
return(false);
break;
}
var rowIndex = objRow.index();
g_objDialog.open(paramData, rowIndex, function(objParam, rowIndex){
updateParamRow(rowIndex, objParam);
},g_type);
}
/**
* on add param button click
*/
this.onAddParamButtonClick = function(data){
if(!data)
var data = null;
g_objDialog.open(data, null, function(objParam){
addParamRow(objParam);
},g_type);
};
/**
* on duplicate param click
*/
function onDuplicateParamClick(){
var objRow = jQuery(this).parents("tr");
duplicateParamRow(objRow);
}
/**
* on bulk param click, open bulk dialog
*/
function onBulkParamClick(){
var objRow = jQuery(this).parents("tr");
var paramData = getRowData(objRow);
var data = {};
var rowIndex = objRow.index();
data["param_type"] = g_type;
data["param_position"] = rowIndex;
data["param_data"] = paramData;
//trigger change event
triggerEvent(t.events.BULK, data);
}
/**
* init events
*/
function initEvents(){
g_objWrapper.on("click", ".uc-button-delete-param", onDeleteParamClick);
g_objWrapper.on("click", ".uc-button-edit-param", onEditParamClick);
g_objWrapper.on("click", ".uc-button-duplicate-param", onDuplicateParamClick);
g_objWrapper.on("click", ".uc-button-bulk-param", onBulkParamClick);
//init the sortable
g_objTableBody.sortable({
handle: ".uc-table-row-handle"
});
//add param button click
g_buttonAddParam.on("click",function(){
t.onAddParamButtonClick();
});
t.onEvent(t.events.UPDATE, function(){
onUpdateInternal();
g_temp.funcOnUpdate();
});
if(g_temp.hasCats == true)
initCatsEvents();
}
/**
* init addon params from object
* add rows according the object
*/
function initParamsFromObject(arrParams){
if(!arrParams)
return(false);
jQuery.each(arrParams, function(index, objParam){
addParamRow(objParam, null, true);
});
if(arrParams.length == 0)
g_objEmptyParams.show();
else
g_objEmptyParams.hide();
triggerEvent(t.events.UPDATE);
}
function ______________ITEMS_TYPE______________(){}
/**
* add image base param - items type only
*/
function onAddImageBaseClick(){
var isEnabled = g_ucAdmin.isButtonEnabled(g_buttonAddImageBase);
if(isEnabled == false)
return(false);
var isExists = isParamTypeExists("uc_imagebase");
if(isExists == true)
return(false);
var objParam = {};
objParam["type"] = "uc_imagebase";
objParam["name"] = "imagebase_fields";
objParam["title"] = "Image Base Fields";
addParamRow(objParam);
}
/**
* init items type related
*/
function initItemsType(){
g_buttonAddImageBase = g_objWrapper.find(".uc-button-add-imagebase");
g_buttonAddImageBase.on("click",onAddImageBaseClick);
//update event - disable / enable button
t.onEvent(t.events.UPDATE, function(){
var isImageBaseExists = isParamTypeExists("uc_imagebase");
if(isImageBaseExists == true){
g_ucAdmin.disableButton(g_buttonAddImageBase);
}else{
g_ucAdmin.enableButton(g_buttonAddImageBase);
}
});
}
/**
* set on change event
*/
this.onUpdateEvent = function(func){
g_temp.funcOnUpdate = func;
}
/**
* get last updated param
*/
this.getLastUpdatedParam = function(){
return(g_objLastParam);
}
/**
* init the params editor by wrapper and params
*/
this.init = function(objWrapper, objParams, objDialog, arrParamsCats){
g_objWrapper = objWrapper;
g_objCatsWrapper = g_objWrapper.find(".uc-attr-cats-wrapper");
if(g_objCatsWrapper.length){
g_temp.hasCats = true;
initCatsFromData(arrParamsCats);
}
else
g_objCatsWrapper = null;
//set if items type
var type = objWrapper.data("type");
if(type == "items")
g_temp.isItemsType = true;
g_type = type;
g_objTableBody = g_objWrapper.find(".uc-table-params tbody");
g_objEmptyParams = g_objWrapper.find(".uc-text-empty-params");
g_buttonAddParam = g_objWrapper.find(".uc-button-add-param");
g_objDialog = objDialog;
initEvents();
if(g_temp.isItemsType == true)
initItemsType();
initParamsFromObject(objParams);
initCopyCatSection();
};
}