first commit

This commit is contained in:
Ryan Ariana
2024-05-06 11:04:37 +07:00
commit aee061ddba
7322 changed files with 2918816 additions and 0 deletions

View File

@@ -0,0 +1,765 @@
"use strict";
function UCManagerAdmin(){
var g_objWrapper = null;
var t = this;
var g_objCats,g_arrPlugins = [], g_arrPluginsObj = [];
var g_arrActionsFunctions = [];
var g_objItems = new UCManagerAdminItems();
var g_objActions, g_type, g_name, g_passData, g_customOptions = {}, g_objAjaxDataAdd = null;
var g_minHeight = 450;
var g_temp = {
hasCats: true,
updateHeight: true
};
//internal events
this.events = {
ITEM_HIDE_EMPTY_TEXT:"hide_empty_text",
ITEM_MOUSEOVER: "item_mouseover",
ITEM_MOUSEOUT: "item_mouseout",
ITEM_SELECTION_CHANGE: "item_selection_change"
};
function ___________GENERAL_FUNCTIONS________________(){} //sap for outline
/**
* trigger internal event
*/
this.triggerEvent = function(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);
}
/**
* update global height, by of categories and items
*/
this.updateGlobalHeight = function(catHeight, itemsHeight){
setManagerWidthClass();
if(g_temp.updateHeight == false)
return(true);
if(!catHeight || catHeight === null){
if(g_objCats)
var catHeight = g_objCats.getCatsHeight();
else
var catHeight = 0;
}
if(!itemsHeight)
var itemsHeight = g_objItems.getItemsMaxHeight();
var maxHeight = catHeight;
if(itemsHeight > maxHeight)
maxHeight = itemsHeight;
maxHeight += 20;
if(maxHeight < g_minHeight)
maxHeight = g_minHeight;
//set list height
g_objItems.setHeight(maxHeight);
if(g_objCats)
g_objCats.setHeight(maxHeight);
}
/**
* set width class to manager
*/
function setManagerWidthClass(){
g_objItems.updateWrapperSizeClass();
}
/**
* set global height
*/
this.setTotalHeight = function(totalHeight){
g_objItems.setHeight(totalHeight);
if(g_objCats){
var catHeight = totalHeight + 50;
g_objCats.setHeight(catHeight);
}
}
/**
* validate that the manager is already inited
*/
function validateInited(){
var isInited = g_objWrapper.data("inited");
if(isInited === true)
throw new Error("Can't init manager twice");
g_objWrapper.data("inited", true);
}
/**
* make sure the manager is not inited
*/
function validateNotInited(){
if(!g_objWrapper)
return(false);
var isInited = g_objWrapper.data("inited");
if(isInited === true)
throw new Error("The manager has to be not inited for this operation");
}
/**
* destroy the manager
*/
this.destroy = function(){
g_objWrapper.add("#manager_shadow_overlay").off("contextmenu");
g_objWrapper.find(".unite-context-menu li a").off("mouseup");
g_objWrapper.find("#button_items_operation").off("click");
if(g_objCats)
g_objCats.destroy();
g_objItems.destroy();
g_objActions.destroy();
g_objWrapper.html("");
g_objWrapper = null;
}
this. ___________PLUGINS_EXTERNAL________________ = function(){}
/**
* add plugin
*/
this.addPlugin = function(plugin){
validateNotInited();
g_arrPlugins.push(plugin);
}
/**
* add cats action function
*/
this.addActionFunction = function(func){
if(typeof func != "function")
throw new Error("the action function should be a function type");
g_arrActionsFunctions.push(func);
};
/**
* get action functions
*/
this.getActionFunctions = function(){
return(g_arrActionsFunctions);
};
this. ___________EXTERNAL_GETTERS________________ = function(){}
/**
* get custom option by name
*/
this.getCustomOption = function(name){
if(g_customOptions.hasOwnProperty(name) == false)
return(undefined);
var value = g_customOptions[name];
return(value);
};
/**
* get all items data - from actions
*/
this.getItemsData = function(){
if(typeof g_objActions.getItemsData != "function")
throw new Error("get items data function not exists in this type");
var arrItems = g_objActions.getItemsData();
return(arrItems);
}
/**
* get items data json
*/
this.getItemsDataJson = function(){
var data = t.getItemsData();
if(typeof data != "object")
return("");
var dataJson = JSON.stringify(data);
return(dataJson);
}
/**
* get categories object
*/
this.getObjCats = function(){
return(g_objCats);
}
/**
* get items objects
*/
this.getObjItems = function(){
return(g_objItems);
}
/**
* get wrapper object
*/
this.getObjWrapper = function(){
return(g_objWrapper);
}
/**
* get mouseover item
*/
this.getMouseOverItem = function(){
if(g_objCats){
var catItem = g_objCats.getMouseOverCat();
if(catItem)
return(catItem);
}
var item = g_objItems.getMouseOverItem();
return(item);
}
/**
* return if the items field enabled
*/
this.isItemsAreaEnabled = function(){
if(!g_objCats)
return(true);
if(g_objCats && g_objCats.isSomeCatSelected() == false)
return(false);
return(true);
}
this. ___________EXTERNAL_SETTERS________________ = function(){}
/**
*
* set some menu on mouse position
*/
this.showMenuOnMousePos = function(event, objMenu){
var objOffset = g_objWrapper.offset();
var managerY = objOffset.top;
var managerX = objOffset.left;
var menuX = Math.round(event.pageX - managerX);
var menuY = Math.round(event.pageY - managerY);
var menuHeight = objMenu.height();
var menuEndY = menuY+menuHeight;
var parentHeight = g_objWrapper.height();
//open from bottom
if(menuEndY > parentHeight)
menuY = menuY - menuHeight;
jQuery("#manager_shadow_overlay").show();
objMenu.css({"left":menuX+"px","top":menuY+"px"}).show();
}
/**
* hide all context menus
*/
this.hideContextMenus = function(){
jQuery("#manager_shadow_overlay").hide();
jQuery("ul.unite-context-menu").hide();
};
/**
* return if the manager has cats
*/
this.isHasCats = function(){
return(g_temp.hasCats);
};
/**
* on item context menu click
*/
function onContextMenuClick(){
var objLink = jQuery(this);
var action = objLink.data("operation");
var objMenu = objLink.parents("ul.unite-context-menu");
var menuType = objMenu.data("type");
//get extra data according the menu type
var data = null;
switch(menuType){
case "category":
data = g_objCats.getContextMenuCatID();
break;
}
var actionFound = false;
if(g_objCats)
actionFound = g_objCats.runCategoryAction(action, data);
if(actionFound == false)
t.runItemAction(action, data);
t.hideContextMenus();
}
/**
* init context menu events
* other context menu functions are located in the items
*/
function initContextMenus(){
g_objWrapper.add("#manager_shadow_overlay").on("contextmenu",function(event){
event.preventDefault();
});
//on item right menu click
g_objWrapper.find(".unite-context-menu li a").mouseup(onContextMenuClick);
}
/**
* init plugins
*/
function initPlugins(){
if(g_arrPlugins.length == 0)
return(false);
jQuery.each(g_arrPlugins, function(index, pluginClass){
if(typeof eval(pluginClass) != "function")
throw new Error("Plugin "+pluginClass+" not found");
var objPlugin = eval("new "+pluginClass+"()");
objPlugin.init(t);
});
}
/**
* init gallery view
*/
function initManager(selectedCatID){
g_objWrapper = jQuery("#uc_managerw");
if(g_objWrapper.length == 0)
return(false);
g_type = g_objWrapper.data("type");
g_name = g_objWrapper.data("managername");
g_passData = g_objWrapper.data("passdata");
//init text
var objText = g_objWrapper.data("text");
if(objText && typeof objText == "object"){
jQuery.extend(g_uctext, objText);
g_objWrapper.removeAttr("data-text");
}
if(g_type == "inline")
g_minHeight = 210;
validateInited();
//set if no cats
var objCatsSection = jQuery("#cats_section");
if(objCatsSection.length == 0){
g_temp.hasCats = false;
g_objCats = null;
}else{
g_objCats = new UCManagerAdminCats();
}
if(!g_ucAdmin)
g_ucAdmin = new UniteAdminUC();
if(g_temp.hasCats == true)
initCategories();
//init actions
switch(g_type){
case "addons":
g_objActions = new UCManagerActionsAddons();
break;
case "inline":
g_objActions = new UCManagerActionsInline();
break;
case "pages":
g_objActions = new UCManagerActionsPages();
break;
default:
throw new Error("Wrong manager type: " + g_type);
break;
}
if(g_objActions)
g_objActions.init(t);
//the items must be inited from the manager action file
g_objItems.validateInited();
//check first item select
if(g_objCats){
if(selectedCatID){
var isSelected = g_objCats.selectCategory(selectedCatID);
if(isSelected === false)
g_objCats.selectFirstCategory();
}
else
g_objCats.selectFirstCategory();
}
t.updateGlobalHeight();
initPlugins();
};
function ___________CATEGORIES________________(){} //sap for outline
/**
* init the categories actions
*/
function initCategories(){
g_objCats.init(t);
//init events
g_objCats.events.onRemoveSelectedCategory = function(){
t.clearItemsPanel();
};
g_objCats.events.onHeightChange = function(){
t.updateGlobalHeight();
};
}
function ___________ITEMS_FUNCTIONS________________(){} //sap for outline
/**
* update bottom operations
*/
function updateBottomOperations(){
var numSelected = g_objItems.getNumItemsSelected();
var numCats = 0;
if(g_objCats)
var numCats = g_objCats.getNumCats();
jQuery("#num_items_selected").html(numSelected);
//in case of less then 2 cats - disable operations
if(numCats <= 1){
jQuery("#item_operations_wrapper").hide();
return(false);
}
//in case of more then one cat
jQuery("#item_operations_wrapper").show();
//enable operations
if(numSelected > 0){
jQuery("#select_item_category").prop("disabled","");
jQuery("#item_operations_wrapper").removeClass("unite-disabled");
jQuery("#button_items_operation").removeClass("button-disabled");
}else{ //disable operations
jQuery("#select_item_category").prop("disabled","disabled");
jQuery("#button_items_operation").addClass("button-disabled");
jQuery("#item_operations_wrapper").addClass("unite-disabled");
}
//hide / show operation categories
jQuery("#select_item_category option").show();
var arrOptions = jQuery("#select_item_category option").get();
var firstSelected = false;
var selectedCatID = g_objCats.getSelectedCatID();
for(var index in arrOptions){
var objOption = jQuery(arrOptions[index]);
var value = objOption.prop("value");
if(value == selectedCatID)
objOption.hide();
else
if(firstSelected == false){
objOption.prop("selected","selected");
firstSelected = true;
}
}
}
/**
* run items action
*/
this.runItemAction = function(action, data){
g_objActions.runItemAction(action, data);
};
/**
* on select category event
*/
this.onCatSelect = function(catID){
g_objActions.runItemAction("get_cat_items", catID);
g_objItems.unselectAllItems("selectCategory");
};
/**
* run gallery ajax request
*/
this.ajaxRequestManager = function(action,data,status,funcSuccess){
jQuery("#status_loader").show();
jQuery("#status_text").show().html(status);
if(g_objAjaxDataAdd && typeof(data) == "object"){
jQuery.extend(data, g_objAjaxDataAdd);
}
g_ucAdmin.ajaxRequest(action,data,function(response){
jQuery("#status_loader").hide();
jQuery("#status_text").hide();
if(typeof funcSuccess == "function")
funcSuccess(response);
g_objItems.checkSelectRelatedItems();
});
}
/**
*
* on bottom GO button click, move items
*/
function onBottomOperationsClick(){
var arrIDs = g_objItems.getSelectedItemIDs();
if(arrIDs.length == 0)
return(false);
var selectedCatID = g_objCats.getSelectedCatID();
var targetCatID = jQuery("#select_item_category").val();
if(targetCatID == selectedCatID){
alert("Can't move addons to same category");
return(false);
}
var data = {};
data.targetCatID = targetCatID;
data.selectedCatID = selectedCatID;
data.arrAddonIDs = arrIDs;
g_objActions.runItemAction("move_items", data);
}
/**
* set actions options
* some data goes directly to options
*/
this.setCustomOptions = function(options){
g_customOptions = options;
};
/**
* set items from data
*/
this.setItemsFromData = function(arrItems){
if(typeof g_objActions.setItemsFromData != "function")
throw new Error("set items from data function not exists in this type");
g_objActions.setItemsFromData(arrItems);
};
/**
* clear items panel
*/
this.clearItemsPanel = function(){
g_objItems.clearItemsPanel();
}
/**
* set object add data to every ajax request
*/
this.setObjAjaxAddData = function(objData){
g_objAjaxDataAdd = objData;
}
this. ___________EXTERNAL_INIT________________ = function(){}
/**
* init bottom operations
*/
this.initBottomOperations = function(){
// do items operations
g_objWrapper.find("#button_items_operation").on("click",onBottomOperationsClick);
}
/**
* init items actions
*/
this.initItems = function(){
g_objItems.initItems(t);
//on selection change
g_objItems.events.onItemSelectionChange = function(){
updateBottomOperations();
t.triggerEvent(t.events.ITEM_SELECTION_CHANGE);
};
//on items height change
g_objItems.events.onHeightChange = function(itemsHeight){
t.updateGlobalHeight(null, itemsHeight);
};
initContextMenus();
//if items only - clear panel
if(g_temp.hasCats == false)
g_objItems.updatePanelView();
};
/**
* get manager name
*/
this.getManagerName = function(){
return(g_name);
};
/**
* get manager pass data
*/
this.getManagerPassData = function(){
return(g_passData);
}
/**
* set not to update height
*/
this.setNotUpdateHeight = function(){
g_temp.updateHeight = false;
}
/**
* init manager
*/
this.initManager = function(selectedCatID){
initManager(selectedCatID);
};
};

View File

@@ -0,0 +1,534 @@
"use strict";
function UCManagerActionsInline(){
var t = this;
var g_objCats, g_manager, g_objDialogEdit;
var g_objWrapper, g_objSettings, g_objSettingsWrapper, g_initByAddonID = null;
var g_imageField = null; //field that set to be image for html output
var g_dialogFormItem = new UniteCreatorParamsDialog();
var g_itemType = "default"; //default / form
var g_objItems = new UCManagerAdminItems();
if(!g_ucAdmin){
var g_ucAdmin = new UniteAdminUC();
}
var g_temp = {
source:""
};
/**
* on item button click
*/
this.runItemAction = function(action, data){
switch(action){
case "add_images":
onAddImagesClick();
break;
case "add_form_item":
openFormItemDialog();
break;
case "add_item":
openAddEditItemDialog();
break;
case "edit_item":
if(g_itemType == "form")
onEditFormItemClick();
else
onEditItemClick();
break;
case "update_order": //do nothing
break;
case "remove_items":
g_objItems.removeSelectedItems();
break;
case "duplicate_items":
g_objItems.duplicateSelectedItems();
break;
case "select_all_items":
g_objItems.selectUnselectAllItems();
break;
default:
trace("wrong action: "+action);
break;
}
};
function ________FORM___________(){}
/**
* open form item dialog - attributes dialog
*/
function openFormItemDialog(params, itemID){
var isEdit = false;
if(params)
isEdit = true;
if(isEdit == false){ //add
g_dialogFormItem.open(null,null,function(objValues){
appendItem(objValues);
});
}else{ //edit
g_dialogFormItem.open(params, itemID, function(objValues, itemID){
updateItemByID(itemID, objValues);
});
}
}
/**
* open edit for item dialog with form data
*/
function onEditFormItemClick(){
var objItem = g_objItems.getSelectedItem();
if(!objItem)
throw new Error("No items found");
var params = objItem.data("params");
var itemID = objItem.data("id");
openFormItemDialog(params,itemID);
}
/**
* get items data
*/
this.getItemsData = function(){
var objItems = g_objItems.getObjItems();
var arrItems = [];
jQuery.each(objItems, function(index, item){
var objItem = jQuery(item);
var params = objItem.data("params");
arrItems.push(params);
});
return(arrItems);
};
/**
* set items from data
*/
this.setItemsFromData = function(arrItems){
g_objItems.removeAllItems(true);
if(typeof arrItems != "object")
return(false);
jQuery.each(arrItems, function(index, itemData){
appendItem(itemData, true);
});
g_objItems.updateAfterHtmlListChange();
};
function ________OTHER___________(){}
/**
* on add images click
*/
function onAddImagesClick(){
g_ucAdmin.openAddImageDialog("Add Images",function(response){
if(response && jQuery.isArray(response) == false)
response = [response];
jQuery.each(response, function(index, item){
if(g_temp.source == "addon"){
var urlAssetsRelative = item.url_assets_relative;
var urlImage = item.full_url;
}else{
var urlImage = item.url;
}
urlImage = g_ucAdmin.urlToRelative(urlImage);
addItemFromImage(urlImage);
});
}, true, g_temp.source);
}
/**
* open edit item dialog
*/
function onEditItemClick(){
var objItem = g_objItems.getSelectedItem();
if(!objItem)
throw new Error("No items found");
openAddEditItemDialog(true, objItem);
}
/**
* open add item dialog
*/
function openAddEditItemDialog(isEdit, objItem){
if(!isEdit)
var isEdit = false;
var buttonText = g_uctext.add_item;
var titleText = g_uctext.add_item;
if(isEdit){
var params = objItem.data("params");
g_objDialogEdit.data("item", objItem);
buttonText = g_uctext.update_item;
titleText = g_uctext.edit_item;
}
var buttonOpts = {};
buttonOpts[g_uctext.cancel] = function(){
g_objDialogEdit.dialog("close");
};
buttonOpts[buttonText] = function(){
if(isEdit == false)
addItemFromDialog();
else{
var objItem = g_objDialogEdit.data("item");
updateItemFromDialog(objItem);
}
g_objDialogEdit.dialog("close");
};
g_objDialogEdit.dialog({
dialogClass:"unite-ui",
buttons:buttonOpts,
title: titleText,
minWidth:800,
modal:true,
open:function(){
if(g_initByAddonID){ //ajax init
var data = {
addonid:g_initByAddonID
};
g_initByAddonID = null;
g_ucAdmin.ajaxRequest("get_addon_item_settings_html", data, function(response){
g_objSettingsWrapper.html(response.html);
initSettingsObject();
//clear or init settings
if(isEdit == false) //add
g_objSettings.clearSettings();
else //edit
g_objSettings.setValues(params);
});
}else{
if(isEdit == false) //add
g_objSettings.clearSettings();
else //edit
g_objSettings.setValues(params);
}
g_objSettings.focusFirstInput();
}
});
}
/**
* generate item title
*/
function generateItemTitle(){
var numItems = g_objItems.getNumItems()+1;
var title = "Item " + numItems;
return(title);
}
/**
* get title from params
* @param params
*/
function getTitleFromParams(params){
if(params.hasOwnProperty("title") == false)
return(null);
var title = params["title"];
if(!title)
return(null);
return(title);
}
/**
* generate item html
*/
function generateItemHtml(params, id){
//set title
var title = generateItemTitle();
var altTitle = getTitleFromParams(params);
if(altTitle)
title = altTitle;
var description = "";
//set description style
var urlImage = null;
if(params.hasOwnProperty("thumb"))
urlImage = jQuery.trim(params.thumb);
if(!urlImage && g_imageField && params.hasOwnProperty(g_imageField))
urlImage = jQuery.trim(params[g_imageField]);
//trace('generateItemHtml');
//trace(urlImage);
var descStyle = "";
if(urlImage){
urlImage = g_ucAdmin.urlToFull(urlImage);
descStyle = "style=\"background-image:url('"+urlImage+"')\"";
}
//generatet id
if(id){
var itemID = g_objItems.getItemIDFromID(id);
}else{
var objID = g_objItems.getObjNewID();
var id = objID.id;
var itemID = objID.itemID;
}
var $htmlItem = "";
$htmlItem += "<li id='" + itemID + "' data-id='"+id+"' data-title="+title+" >";
$htmlItem += " <div class=\"uc-item-title unselectable\" unselectable=\"on\">"+title+"</div>";
$htmlItem += " <div class=\"uc-item-description unselectable\" unselectable=\"on\" "+descStyle+">"+description+"</div>";
$htmlItem += " <div class=\"uc-item-icon unselectable\" unselectable=\"on\"></div>";
$htmlItem += "</li>";
return($htmlItem);
}
/**
* update item html from params
*/
function updateItemHtml(objItem, params){
var id = objItem.data("id");
var html = generateItemHtml(params, id);
var objNewItem = g_objItems.replaceItemHtml(objItem, html);
objNewItem.data("params", params);
}
/**
* append item from values
* @param objValues
*/
function appendItem(objValues, noUpdate){
var htmlItem = generateItemHtml(objValues);
var objItem = g_objItems.appendItem(htmlItem, noUpdate);
objItem.data("params", objValues);
}
/**
* add item from dialog
*/
function addItemFromDialog(){
var objValues = g_objSettings.getSettingsValues();
appendItem(objValues);
}
/**
* add item from image
*/
function addItemFromImage(urlImage){
var objInfo = g_ucAdmin.pathinfo(urlImage);
var params = {};
params.title = objInfo.filename;
params.image = urlImage;
appendItem(params);
}
/**
* update item from dialog
*/
function updateItemFromDialog(objItem){
var params = g_objSettings.getSettingsValues();
objItem.data("params", params);
updateItemHtml(objItem, params);
}
/**
* update item setting by id
*/
function updateItemByID(itemID, params){
var objItem = jQuery("#uc_item_" + itemID);
g_ucAdmin.validateDomElement(objItem, "edit item");
objItem.data("params", params);
updateItemHtml(objItem, params);
}
/**
* set thumb field for viewing the thumb
*/
function init_setImageField(){
var arrFieldNames = g_objSettings.getFieldNamesByType("image");
if(arrFieldNames.length == 0)
return(false);
g_imageField = arrFieldNames[0];
if(arrFieldNames.length > 1){
if(jQuery.inArray("image",arrFieldNames) != -1)
g_imageField == "image";
}
}
/**
* destroy
*/
this.destroy = function(){
if(g_objSettings)
g_objSettings.destroy();
//nothing to destroy yet
};
/**
* init settings, after the settigns html is set
*/
function initSettingsObject(){
g_objSettings = new UniteSettingsUC();
g_objSettings.init(g_objSettingsWrapper);
init_setImageField();
}
/**
* init the actions
*/
this.init = function(objManager){
g_manager = objManager;
g_manager.initItems();
g_objCats = g_manager.getObjCats();
g_objItems = g_manager.getObjItems();
g_objWrapper = g_manager.getObjWrapper();
//init options
var options = g_objWrapper.data("options");
var source = g_ucAdmin.getVal(options, "source");
if(source)
g_temp.source = source;
g_objDialogEdit = g_objWrapper.find(".uc-dialog-edit-item");
if(g_objDialogEdit.length){
g_objSettingsWrapper = g_objWrapper.find(".uc-item-config-settings");
var addonID = g_objSettingsWrapper.data("initbyaddon");
if(addonID){
g_objSettingsWrapper.data("initbyaddon", null);
g_initByAddonID = addonID;
}else{ //init settings right away - no ajax
initSettingsObject();
}
}else
g_objDialogEdit = null;
//init form item dialog
var objDialogFormItemWrapper = g_objWrapper.find(".uc-dialog-param-form_item");
if(objDialogFormItemWrapper.length){
g_itemType = "form";
g_dialogFormItem.init(objDialogFormItemWrapper);
}else
g_dialogFormItem = null;
//init from data
var arrInitItems = g_objWrapper.data("init-items");
if(arrInitItems && typeof arrInitItems == "object")
t.setItemsFromData(arrInitItems);
};
}

View File

@@ -0,0 +1,842 @@
"use strict";
function UCManagerAdminCats(){
var g_catClickReady = false;
var g_catFieldRightClickReady = true; //avoid double menu on cat field
var g_maxCatHeight = 450;
var g_manager, g_objAjaxDataAdd = null;
var g_objListCats;
//event functions
this.events = {
onRemoveSelectedCategory: function(){},
onHeightChange: function(){},
onOpenCategoryDialog:function(){}
};
var g_temp = {
isInited: false
};
var t = this;
function _______________INIT______________(){}
/**
* validate that the object is inited
*/
function validateInited(){
if(g_temp.isInited == false)
throw new Error("The categories is not inited");
}
/**
* init the categories
*/
function initCats(objManager){
if(g_temp.isInited == true)
throw new Error("Can't init cat object twice");
g_manager = objManager;
g_objListCats = jQuery("#list_cats");
g_temp.isInited = true;
if(!g_ucAdmin)
g_ucAdmin = new UniteAdminUC();
initEvents();
//update sortable categories
try{
g_objListCats.sortable({
axis:'y',
start: function( event, ui ) {
g_catClickReady = false;
},
update: function(){
updateCatOrder();
//save sorting order
}
});
}catch(error){
trace("error occured in jquery sortable!");
trace(error);
}
initAddCategoryDialog();
initEditCategoryDialog();
initDeleteCategoryDialog();
}
function _______________GETTERS______________(){}
/**
*
* get category by id
*/
function getCatByID(catID){
var objCat = jQuery("#category_" + catID);
return(objCat);
}
/**
* get category data
*/
function getCatData(catID){
var objCat = getCatByID(catID);
if(objCat.length == 0)
return(null);
var data = {};
data.id = catID;
data.title = objCat.data("title");
data.isweb = objCat.data("isweb");
data.isweb = g_ucAdmin.strToBool(data.isweb);
return(data);
}
/**
* check if some category selected
*
*/
this.isCatSelected = function(catID){
var selectedCatID = t.getSelectedCatID();
if(catID == selectedCatID)
return(true);
return(false);
};
function _______________SETTERS______________(){}
/**
* remove category from html
*/
function removeCategoryFromHtml(catID){
jQuery("#category_"+catID).remove();
//disableCatButtons();
}
/**
* set first category selected
*/
this.selectFirstCategory = function(){
var arrCats = getArrCats();
if(arrCats.length == 0)
return(false);
var firstCat = arrCats[0];
var catID = jQuery(firstCat).data("id");
t.selectCategory(catID);
}
/**
* run category action
*/
this.runCategoryAction = function(action, catID){
if(!catID)
var catID = t.getSelectedCatID();
switch(action){
case "add_category":
openAddCategoryDialog();
break;
case "edit_category":
openEditCategoryDialog(catID);
break;
case "delete_category":
openDeleteCategoryDialog(catID);
break;
default:
return(false);
break;
}
return(true);
}
/**
* enable category buttons
*/
function enableCatButtons(){
//cat butons:
//g_ucAdmin.enableButton("#button_remove_category, #button_edit_category");
}
/**
* enable category buttons
*/
function disableCatButtons(){
//g_ucAdmin.disableButton("#button_remove_category, #button_edit_category");
}
/**
* update categories order
*/
function updateCatOrder(){
//get sortIDs
var arrSortCats = jQuery( "#list_cats" ).sortable("toArray");
var arrSortIDs = [];
for(var i=0;i < arrSortCats.length; i++){
var catHtmlID = arrSortCats[i];
var catID = catHtmlID.replace("category_","");
arrSortIDs.push(catID);
}
var data = {cat_order:arrSortIDs};
g_manager.ajaxRequestManager("update_cat_order",data,g_uctext.updating_categories_order);
}
function _______________ADD_CATEGORY______________(){}
/**
* add category
*/
function addCategory(){
var data = {};
data.catname = jQuery("#uc_dialog_add_category_catname").val();
if(g_objAjaxDataAdd && typeof(data) == "object"){
jQuery.extend(data, g_objAjaxDataAdd);
}
g_ucAdmin.dialogAjaxRequest("uc_dialog_add_category", "add_category", data, function(response){
var html = response.htmlCat;
jQuery("#list_cats").append(html);
//update html cats select
var htmlSelectCats = response.htmlSelectCats;
jQuery("#select_item_category").html(htmlSelectCats);
t.events.onHeightChange();
});
}
/**
* open add category dialog
*/
function openAddCategoryDialog(){
g_ucAdmin.openCommonDialog("#uc_dialog_add_category", function(){
jQuery("#uc_dialog_add_category_catname").val("").focus();
});
}
/**
* init add category dialog
*/
function initAddCategoryDialog(){
jQuery("#uc_dialog_add_category_action").on("click",addCategory);
// set update title onenter function
jQuery("#uc_dialog_add_category_catname").keyup(function(event){
if(event.keyCode == 13)
addCategory();
});
}
function _______________EDIT_CATEGORY______________(){}
/**
*
* open the edit category dialog by category id
*/
function openEditCategoryDialog(catID){
if(catID == -1)
return(false);
var cat = getCatByID(catID);
if(cat.length == 0){
trace("category with id: " + catID + " don't exists");
return(false);
}
if(jQuery.isNumeric(catID) == false)
return(false);
//set data
var dialogEdit = jQuery("#uc_dialog_edit_category");
var isCustom = dialogEdit.data("custom");
dialogEdit.data("catid", catID);
//update catid field
if(!isCustom){
jQuery("#span_catdialog_id").html(catID);
var title = cat.data("title");
jQuery("#uc_dialog_edit_category_title").val(title).focus();
}
var options = {
minWidth: 900
};
g_ucAdmin.openCommonDialog("#uc_dialog_edit_category", function(){
if(!isCustom)
jQuery("#uc_dialog_edit_category_title").select();
else{
t.events.onOpenCategoryDialog(dialogEdit, catID);
}
},options);
}
/**
* function invoke from the dialog update button
*/
function updateCategoryTitle(){
var dialogEdit = jQuery("#uc_dialog_edit_category");
var catID = dialogEdit.data("catid");
var cat = getCatByID(catID);
var newTitle = jQuery("#uc_dialog_edit_category_title").val();
var data = {
catID: catID,
title: newTitle
};
if(g_objAjaxDataAdd && typeof(data) == "object"){
jQuery.extend(data, g_objAjaxDataAdd);
}
g_ucAdmin.dialogAjaxRequest("uc_dialog_edit_category", "update_category", data, function(response){
t.updateTitle(catID, newTitle);
});
}
/**
* update category title
*/
this.updateTitle = function(catID, newTitle){
var objCat = getCatByID(catID);
var numItems = objCat.data("numaddons");
var newTitleShow = newTitle;
if(numItems && numItems != undefined && numItems > 0)
newTitleShow += " ("+numItems+")";
objCat.html("<span>" + newTitleShow + "</span>");
objCat.data("title",newTitle);
};
/**
* init edit category dialog
*/
function initEditCategoryDialog(){
var objEditDialog = jQuery("#uc_dialog_edit_category");
if(objEditDialog.length == 0)
return(false);
var isCustom = objEditDialog.data("custom");
if(isCustom)
return(false);
// set update title onenter function
jQuery("#uc_dialog_edit_category_action").on("click",updateCategoryTitle);
jQuery("#uc_dialog_edit_category_title").doOnEnter(updateCategoryTitle);
}
function _______________DELETE_CATEGORY______________(){}
/**
* remove some category by id
*/
function deleteCategory(){
var dialogDelete = jQuery("#uc_dialog_delete_category");
var catID = dialogDelete.data("catid");
var data = {};
data.catID = catID;
var selectedCatID = t.getSelectedCatID();
//get if selected category will be removed
var isSelectedRemoved = (catID == selectedCatID);
if(g_objAjaxDataAdd && typeof(data) == "object"){
jQuery.extend(data, g_objAjaxDataAdd);
}
g_ucAdmin.dialogAjaxRequest("uc_dialog_delete_category", "remove_category", data, function(response){
removeCategoryFromHtml(catID);
//update html cats select
var htmlSelectCats = response.htmlSelectCats;
jQuery("#select_item_category").html(htmlSelectCats);
//clear the items panel
if(isSelectedRemoved == true){
//run event
t.events.onRemoveSelectedCategory();
t.selectFirstCategory();
}
//fire height change event
t.events.onHeightChange();
});
}
/**
*
* open the edit category dialog by category id
*/
function openDeleteCategoryDialog(catID){
if(catID == -1)
return(false);
var cat = getCatByID(catID);
if(cat.length == 0){
trace("category with id: " + catID + " don't exists");
return(false);
}
//set data
var dialogDelete = jQuery("#uc_dialog_delete_category");
dialogDelete.data("catid", catID);
var title = cat.data("title");
jQuery("#uc_dialog_delete_category_catname").html(title);
g_ucAdmin.openCommonDialog("#uc_dialog_delete_category");
}
/**
* init edit category dialog
*/
function initDeleteCategoryDialog(){
// set update title onenter function
jQuery("#uc_dialog_delete_category_action").on("click",deleteCategory);
}
function _______________EVENTS______________(){}
/**
* on category list item click
*/
function onCatListItemClick(event){
if(g_ucAdmin.isRightButtonPressed(event))
return(true);
if(g_catClickReady == false)
return(false);
if(jQuery(this).hasClass("selected-item"))
return(false);
var catID = jQuery(this).data("id");
t.selectCategory(catID);
}
/**
* on double click
*/
function onCatListItemDblClick(event){
if(g_ucAdmin.isRightButtonPressed(event))
return(true);
if(g_catClickReady == false)
return(false);
var catID = jQuery(this).data("id");
t.runCategoryAction("edit_category",catID);
}
/**
* on cat list item mousedown
*/
function onCatListItemMousedown(event){
if(g_ucAdmin.isRightButtonPressed(event))
return(true);
g_catClickReady = true;
}
/**
* on category context menu click
*/
function onCategoryContextMenu(event){
g_catFieldRightClickReady = false;
var objCat = jQuery(this);
var catID = objCat.data("id");
if(catID == 0 || catID == "all")
return(false);
var objMenu = jQuery("#rightmenu_cat");
objMenu.data("catid",catID);
g_manager.showMenuOnMousePos(event, objMenu);
}
/**
* on categories context menu
*/
function onCatsFieldContextMenu(event){
event.preventDefault();
if(g_catFieldRightClickReady == false){
g_catFieldRightClickReady = true;
return(true);
}
var objMenu = jQuery("#rightmenu_catfield");
g_manager.showMenuOnMousePos(event, objMenu);
}
/**
* on action button click
*/
function onActionByttonClick(){
var objButton = jQuery(this);
if(!g_ucAdmin.isButtonEnabled(objButton))
return(false);
var action = objButton.data("action");
t.runCategoryAction(action);
}
/**
* init events
*/
function initEvents(){
jQuery(".uc-cat-action-button").on("click",onActionByttonClick);
//list categories actions
jQuery("#list_cats").on("mouseover", "li", function() {
jQuery(this).addClass("item-hover");
});
jQuery("#list_cats").on("mouseout","li", function() {
jQuery(this).removeClass("item-hover");
});
jQuery("#list_cats").on("click", "li", onCatListItemClick);
jQuery("#list_cats").on("dblclick", "li", onCatListItemDblClick);
jQuery("#list_cats").on("mousedown", "li", onCatListItemMousedown );
//init context menus
jQuery("#list_cats").on("contextmenu", "li", onCategoryContextMenu);
jQuery("#cats_section").on("contextmenu", onCatsFieldContextMenu);
}
this._______________EXTERNAL_GETTERS______________ = function(){}
/**
* get selected category ID
*/
this.getSelectedCatID = function(){
var objCat = g_objListCats.find("li.selected-item");
if(objCat.length == 0)
return(-1);
var catID = objCat.data("id");
return(catID);
};
/**
* get selected category data
*/
this.getSelectedCatData = function(){
var selectedCatID = t.getSelectedCatID();
if(selectedCatID == -1)
return(null);
var data = getCatData(selectedCatID);
return(data);
};
/**
* return if some category selected
*/
this.isSomeCatSelected = function(){
var selectedCatID = t.getSelectedCatID();
if(selectedCatID == -1)
return(false);
return(true);
};
/**
* get height of the categories list
*/
this.getCatsHeight = function(){
var catsWrapper = jQuery("#cats_section .cat_list_wrapper");
var catHeight = catsWrapper.height();
if(catHeight > g_maxCatHeight)
catHeight = g_maxCatHeight;
return(catHeight);
};
/**
* get arr categories
*/
function getArrCats(){
var arrCats = jQuery("#list_cats li").get();
return(arrCats);
}
/**
* get num categories
*/
this.getNumCats = function(){
var numCats = jQuery("#list_cats li").length;
return(numCats);
};
/**
* get mouseover category
*/
this.getMouseOverCat = function(){
var arrCats = getArrCats();
for(var index in arrCats){
var objCat = arrCats[index];
objCat = jQuery(objCat);
var isMouseOver = objCat.ismouseover();
if(isMouseOver == true)
return(objCat);
}
return(null);
};
this._______________EXTERNAL_SETTERS______________ = function(){}
/**
* set object add data to every ajax request
*/
this.setObjAjaxAddData = function(objData){
g_objAjaxDataAdd = objData;
};
/**
* set cat section height
*/
this.setHeight = function(height){
jQuery("#cats_section").css("height", height+"px");
};
/**
* set html cats list
*/
this.setHtmlListCats = function(htmlCats){
jQuery("#list_cats").html(htmlCats);
};
/**
* select some category by id
*/
this.selectCategory = function(catID){
var fullCatID = "#category_"+catID;
var cat = jQuery(fullCatID);
if(cat.length == 0){
//g_ucAdmin.showErrorMessage("category with id: "+catID+" not found");
return(false);
}
cat.removeClass("item-hover");
if(cat.hasClass("selected-item"))
return(false);
jQuery("#list_cats li").removeClass("selected-item");
cat.addClass("selected-item");
/*
if(catID == 0 || catID == "all")
disableCatButtons();
else
enableCatButtons();
*/
g_manager.onCatSelect(catID);
return(true);
};
/**
* get context menu category ID
*/
this.getContextMenuCatID = function(){
var catID = jQuery("#rightmenu_cat").data("catid");
return(catID);
};
/**
* destroy the categories
*/
this.destroy = function(){
//add category
jQuery("#button_add_category").off("click");
//remove category:
jQuery("#button_remove_category").off("click");
//edit category
jQuery("#button_edit_category").off("click");
var objListItems = jQuery("#list_cats").find("li");
objListItems.off("mouseover");
objListItems.off("mouseout");
objListItems.off("click");
objListItems.off("dblclick");
objListItems.off("mousedown");
//init context menus
jQuery("#list_cats").off("contextmenu");
jQuery("#cats_section").off("contextmenu");
};
/**
* init categories
*/
this.init = function(objManager){
initCats(objManager);
};
}