// JavaScript Document /* Create our object to hold all functions and vars ---------------------------------------------------------*/ var objAdmin = {}; /* ---------------------------------------------------------*/ objAdmin.admin_url = "http://admin.changingfaces.org.uk/admin/"; objAdmin.site_url = "http://admin.changingfaces.org.uk/"; /* ----------------------------------------------------- @description update div that is to be replaced @param data data to replace div with ---------------------------------------------------------*/ objAdmin.updateAssignment = function( data/*string*/) { //---------------------------------------------- var holder = document.getElementById(objAdmin.holderDiv); var all_items= document.getElementById(objAdmin.div); holder.removeChild(all_items); //---------------------------------------------- //---------------------------------------------- var new_all_items = document.createElement("div"); new_all_items.setAttribute("id", objAdmin.div); new_all_items.innerHTML = data; holder.appendChild(new_all_items); objAdmin.dragItems(objAdmin.col1,objAdmin.col2,objAdmin.typeId,objAdmin.itemId,objAdmin.itemTypeId,objAdmin.type,objAdmin.div); } /* ------------------------------------------------------ @description refresh page ---------------------------------------------------------*/ objAdmin.reloadPage = function( data/*string*/) { window.location.reload(); } /* @description called from response from server to display replace the contents of a div @param data response from sever ---------------------------------------------------------*/ objAdmin.replaceDiv=function(data){ // get parent var parent= $("#"+objAdmin.div).parent("div"); //remove item parent.empty("#"+objAdmin.div); // append item parent.append(data); } /*------------------------------------------------------- @description reload the assigned content after search has been made @param selected item that has been search for --------------------------------------------------------- */ objAdmin.reloadAssignContent = function ( query,selected,queryIndex,start) { objAdmin.showLoading("col02"); // store status of query vars objAdmin.query=query; objAdmin.selected=selected; objAdmin.queryIndex=queryIndex; objAdmin.start=start; // --------------------------------------------------------- var baseURL = objAdmin.admin_url; var newURL = baseURL + "assign/reloadAssignContent"; objAdmin.holderDiv="assign"; objAdmin.selected=selected; objAdmin.queryIndex=queryIndex; $.ajax({ type: "POST", url: newURL, data: 'selected='+selected+'&itemId=' + objAdmin.itemId + '&itemTypeId=' + objAdmin.itemTypeId+ '&typeId=' + objAdmin.typeId+ '&type=' + objAdmin.type + '&query=' + query + '&start=' + start+ '&queryIndex=' + queryIndex , success: objAdmin.updateAssignment }); } /*------------------------------------------------------- @description replace div with loading animation @param div id of div to replace --------------------------------------------------------- */ objAdmin.showLoading=function(divId){ $("#"+divId).empty(); $("#"+divId).append("
"); } /*------------------------------------------------------- @description assign or unassign items after item has been dragged @param obj obj passed containing new contents of columns --------------------------------------------------------- */ objAdmin.changeAssignment = function (obj) { objAdmin.showLoading("col01"); objAdmin.showLoading("col02"); // get new arrays for col1 and col2 var col1=obj[0].o; var id=obj[0].id; col1=col1[id]; var col2=obj[1].o; id=obj[1].id; col2=col2[id]; // if the columns have changed if(col1.length!=objAdmin.col1.length){ // get action //window.alert("new col1:"+col1.length+" old col1:"+objAdmin.col1.length); if(col1.length>objAdmin.col1.length){ action="assignItem"; } else { action="unassignItem"; } //window.alert(action); if(col1.length > col2.length){ activeCol = col1; compareCol = objAdmin.col1; } else { activeCol = col2; compareCol = objAdmin.col2; } if(activeCol.length < compareCol.length){ tmpCol = activeCol; activeCol = compareCol; compareCol = tmpCol; } // find which item has changed for(var c = 0; c < activeCol.length; c++){ var found = false; for (var d = 0; d < compareCol.length; d++) { if (activeCol[c] == compareCol[d]) { //window.alert(activeCol[c]); //window.alert(compareCol[d]); found = true; break; } } if (found == false) { var assignmentId = activeCol[c]; //window.alert('found = false('+assignmentId); break; } } // update database // --------------------------------------------------------- var baseURL = objAdmin.admin_url; var newURL = baseURL + "assign/"+action; //window.alert(newURL); //window.alert('assignmentId='+assignmentId+'&itemId=' + objAdmin.itemId + '&itemTypeId=' + objAdmin.itemTypeId+ '&typeId=' + objAdmin.typeId+ '&type=' + objAdmin.type+ '&query=' + objAdmin.query+ '&selected=' + objAdmin.selected+ '&start=' + objAdmin.start+ '&queryIndex=' + objAdmin.queryIndex); $.ajax({ type: "POST", url: newURL, data: 'assignmentId='+assignmentId+'&itemId=' + objAdmin.itemId + '&itemTypeId=' + objAdmin.itemTypeId+ '&typeId=' + objAdmin.typeId+ '&type=' + objAdmin.type+ '&query=' + objAdmin.query+ '&selected=' + objAdmin.selected+ '&start=' + objAdmin.start+ '&queryIndex=' + objAdmin.queryIndex, success: objAdmin.updateAssignment }); } // set new vars objAdmin.col1=col1; objAdmin.col2=col2; } /*------------------------------------------------------- @description change order of assignments --------------------------------------------------------- */ objAdmin.changeOrder = function ( comboBox,div,sectionId,view,url_data,parent_id,table,linkage_table,linkage_field) { var order = comboBox.value; var baseURL = objAdmin.admin_url; var url = new String(url_data); url.replace("¬","'"); var newURL = baseURL + "section/changeOrder/"+url; objAdmin.div=div; objAdmin.holderDiv="orderSubSections"; $.ajax({ type: "POST", url: newURL, data: 'order=' + order + '§ionId='+ sectionId + '&view=' + view + '&div=' + div+ '&parent_id=' + parent_id+'&table='+table+'&linkage_table='+linkage_table+'&linkage_field='+linkage_field, success: objAdmin.updateAssignment }); } /*-------------------------------------------------------- @description change orders of muliple items ---------------------------------------------------------*/ objAdmin.changeOrders = function () { var serial = $.SortSerialize('dragList01'); var hash=serial.hash; var baseURL = objAdmin.admin_url; var newURL = baseURL + "section/changeOrders"; $.ajax({ type: "POST", url: newURL, data:hash+'&name=dragList01' }); } /* @description change orders of assigned items ---------------------------------------------------------*/ objAdmin.changeAssignedOrder=function(comboBox,id,index,itemId,itemTypeId,typeId,typeExclude,options,div,isIndex2,view){ objAdmin.showLoading(div); var order = comboBox.value; var baseURL = objAdmin.admin_url; var newURL = baseURL + "assign/changeOrder/"; objAdmin.div=div; $.ajax({ type: "POST", url: newURL, processData:false, data: 'id=' + id +'&order=' + order+'&index=' + index +'&itemId=' + itemId+'&itemTypeId=' + itemTypeId+'&typeId=' + typeId+'&typeExclude=' + typeExclude+'&options=' + options+'&isIndex2=' + isIndex2+'&view=' + view , success: objAdmin.replaceDiv }); } /* @description Allows us to change the status of a particular section @param live y/n status to change to @param id id of section ---------------------------------------------------------*/ objAdmin.changeSectionStatus = function( live, id ) { // --------------------------------------------------------- var baseURL = objAdmin.admin_url; var controller = "section/"; var cFunction = "setStatus/"; var newURL = baseURL + controller + cFunction; $.ajax({ type: "POST", url: newURL, data: 'status=' + live + '§ionId=' + id }); } /* ------------------------------------------------------ @description Allows us to change the status of a particular section @param live y/n status to change to @param id id of item @param type type of item @param prop property to change ---------------------------------------------------------*/ objAdmin.changeCommentsStatus = function( live, id,type,prop ) { // --------------------------------------------------------- var baseURL = objAdmin.admin_url; var controller = "comments/"; var cFunction ="setComments/"; var newURL = baseURL + controller + cFunction; $.ajax({ type: "POST", url: newURL, data: 'status=' + live + '&id=' + id + '&type=' + type+ '&prop=' + prop }); } /* ---------------------------------------------------------- @description display popup window @param location location of page to load @param width width of window @param height height of window ---------------------------------------------------------*/ objAdmin.popup=function(location,width,height){ window.open( location, "myWindow", "status = 1, height = "+height+", width = "+width+", resizable = 0" ); } /* @description toggle template insets @param name id of div ---------------------------------------------------------*/ objAdmin.toggleTemplates=function(name){ $('#'+name).SlideToggleUp(500); // --------------------------------------------------------- var baseURL = objAdmin.admin_url; var controller = "section/"; var cFunction ="changeToggleStatus/"; var newURL = baseURL + controller + cFunction; $.ajax({ type: "POST", url: newURL, data: 'name=' + name }); } /* @description setup drag and drop functionality ---------------------------------------------------------*/ objAdmin.dragItems=function(col1,col2,typeId,itemId,itemTypeId,type,div){ var col1=new Array(); var col2=new Array(); objAdmin.col1=new Array(); $('#col01').find('li').each(function(){ col1.push($(this).attr('id')); }); $('#col02').find('li').each(function(){ col2.push($(this).attr('id')); }); console.log(col1); console.log(col2); objAdmin.col1=col1; objAdmin.col2=col2; objAdmin.typeId=typeId; objAdmin.itemId=itemId; objAdmin.itemTypeId=itemTypeId; objAdmin.type=type; objAdmin.div=div; objAdmin.holderDiv="assign"; $('ul.groupWrapper').Sortable({ accept : 'item', activeclass : 'sortableactive', hoverclass : 'sortablehover', helperclass : 'sorthelper', handle:"div.handle", onChange:objAdmin.changeAssignment, opacity: 0.5, fit : false }) } /* ------------------------------------------------------ @description setup auto complete text box functionality @param selected string from text field @param query query to run to find results @param field field to return @param type the type of item to link to @param subQuery query to pump result into if assigning data @param divIdentifier int to indentify the div to popluate ---------------------------------------------------------*/ objAdmin.lookup=function(query,selected,field,type,subQuery,divIdentifier) { var URL = objAdmin.admin_url + "assign/autocomplete"; if(selected.length == 0) { // Hide the suggestion box. $('#suggestions'+divIdentifier).hide(); } else { selected = selected.replace("'", ""); $.ajax({ type: "POST", url: URL, data: 'selected='+selected+'&query='+query+'&mode='+objAdmin.mode+'&field='+field+'&subQuery='+subQuery+'&type='+type, success: function(data){ if(data.length >0) { $('#suggestions'+divIdentifier).show(); $('#autoSuggestionsList'+divIdentifier).html(data); } } }); } } /* ------------------------------------------------------ @description show a status messag @param message message to dsiplay ---------------------------------------------------------*/ objAdmin.showStatus=function(message){ /* var height=$('body').height(); $('#status').height(height); $('#messagebox').height('200px'); var holder = document.getElementById("messagebox"); var newDiv = document.createElement("div"); newDiv.innerHTML = "

"+message+"

"; newDiv.setAttribute("id", "message"); holder.appendChild(newDiv); */ // reset session var baseURL = objAdmin.admin_url; var controller = "section/"; var cFunction ="resetStatus/"; var newURL = baseURL + controller + cFunction; $.ajax({ type: "POST", url: newURL }); //alert(message); } objAdmin.populateInput= function (value){ var input = document.getElementById("autocomplete_field"); input.value=value; } /* ------------------------------------------------------ @description hide a div @param id id of div to hide ---------------------------------------------------------*/ objAdmin.hide=function(id){ var element = document.getElementById(id); element.style.display="none"; } /* ------------------------------------------------------ @description fill the autuo complete field with data ---------------------------------------------------------*/ objAdmin.fill=function (thisValue) { $('#inputString').val(thisValue); $('#suggestions').hide(); } /* ------------------------------------------------------ @description assign books ---------------------------------------------------------*/ objAdmin.assignBooks=function (id) { var tagElement = document.getElementById('tags'); var limitElement = document.getElementById('limit'); var typeElement = document.getElementById('typeId'); if(tagElement.value.lenght!=0 && limitElement.value.length!=0){ var baseURL = objAdmin.admin_url; var url = baseURL+"book/assign_books"; $.ajax({ type: "POST", url: url, data: 'tags=' + tagElement.value+'&id=' + id+'&limit='+limitElement.value+'&type='+typeElement.value, success: objAdmin.reloadPage }); } else{ alert("Please enter valid entries"); } }