From: Argiris K. <be...@us...> - 2005-12-18 16:44:55
|
Update of /cvsroot/magicajax/magicajax/Core/script In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25522/Core/script Modified Files: AjaxCallObject.js Log Message: -Added 'AjaxType' MagicAjax attribute for controls -Added 'ExcludeFlags' MagicAjax attribute for controls -Added AjaxZone control. Index: AjaxCallObject.js =================================================================== RCS file: /cvsroot/magicajax/magicajax/Core/script/AjaxCallObject.js,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** AjaxCallObject.js 13 Dec 2005 06:23:03 -0000 1.31 --- AjaxCallObject.js 18 Dec 2005 16:44:47 -0000 1.32 *************** *** 11,14 **** --- 11,23 ---- __ClockID = 0; + // Excluding from post flags + // To be used with the "ExcludeFlags" attribute + excfViewState = 1; + excfFingerprints = 2; + excfUserHidden = 4; + excfAllHidden = excfViewState | excfFingerprints | excfUserHidden; + excfFormElements = 8; + excfAllElements = excfAllHidden | excfFormElements; + function AjaxCallObject() { *************** *** 63,66 **** --- 72,193 ---- } + AjaxCallObject.prototype.GetAjaxZoneID = function(element) + { + if (element == null) + return null; + + var attrib = element.getAttribute("AjaxType"); + if ( attrib != null && attrib.toLowerCase() == "ajaxzone" ) + return element.getAttribute("id") + + if (element.parentNode == null || element.parentNode == document.body) + return null; + else + return this.GetAjaxZoneID(element.parentNode); + } + + AjaxCallObject.prototype.ExcludeFromPost = function(element, zoneID, flags) + { + if ( excfAllElements == (flags & excfAllElements) ) + return true; + + var excludeAttr = element.getAttribute("ExcludeFromPost"); + if (excludeAttr != null && excludeAttr.toLowerCase() == "true") + return true; + + var name = element.name; + + if (element.type == "hidden") + { + if ( excfAllHidden == (flags & excfAllHidden) ) + return true; + + if (name == "__VIEWSTATE") + { + return ( excfViewState == (flags & excfViewState) ); + } + + var fprintConst = "__CONTROL_FINGERPRINTS_"; + if (name.indexOf(fprintConst) == 0) + { + if ( excfFingerprints == (flags & excfFingerprints) ) + return true; + + if (zoneID != null) + { + fprintElem = document.getElementById(name.substr(fprintConst.length)); + if ( ! this.IsInAjaxZone(fprintElem, zoneID) ) + return true; + } + } + else + { + return ( excfUserHidden == (flags & excfUserHidden) ); + } + } + else + { + if ( excfFormElements == (flags & excfFormElements) ) + return true; + + return ( zoneID != null && !this.IsInAjaxZone(element, zoneID) ) + } + + return false; + } + + AjaxCallObject.prototype.GetExcludeFlags = function(element) + { + if (element == null) + return 0; + + var flags = 0; + var flagsAttr = element.getAttribute("ExcludeFlags"); + if (flagsAttr != null) + flags = eval(flagsAttr); + + if (element.parentNode == null || element.parentNode == document.body) + return flags; + else + return ( flags | this.GetExcludeFlags(element.parentNode) ); + } + + AjaxCallObject.prototype.IsInAjaxZone = function(element, zoneID) + { + var attrib = element.getAttribute("AjaxType"); + if ( attrib != null && attrib.toLowerCase() == "ajaxzone" && element.getAttribute("id") == zoneID ) + return true; + + if (element.parentNode == null || element.parentNode == document.body) + return false; + else + return this.IsInAjaxZone(element.parentNode, zoneID); + } + + AjaxCallObject.prototype.GetTargetElement = function(eventTarget) + { + var target = null; + var elemUniqueID = eventTarget.split("$").join(":"); + var ids = elemUniqueID.split(":"); + + // Checks the unique id and its parents until it finds a target element + // i.e. for ajaxPanel_grid:row:field it checks + // ajaxPanel_grid_row_field + // ajaxPanel_grid_row + // ajaxPanel_grid + for (var num=ids.length; num > 0; num--) + { + var elemID = ""; + for (var i=0; i < num; i++) + elemID += (i==0 ? "" : "_") + ids[i]; + + target = document.getElementById(elemID); + if (target != null) + break; + } + + return target; + } + AjaxCallObject.prototype.HookAjaxCall = function(bPageIsStored, bUnloadStoredPage, bTracing) { *************** *** 125,129 **** if (cbType != "none") { ! AJAXCbo.DoAjaxCall(target.name, "", cbType); return false; } --- 252,256 ---- if (cbType != "none") { ! AJAXCbo.DoAjaxCall(target.name, "", cbType, AJAXCbo.GetAjaxZoneID(target)); return false; } *************** *** 144,172 **** RBS_Controls_Store[i].value = ""; } ! ! var target; ! var elemUniqueID = eventTarget.split("$").join(":"); ! var ids = elemUniqueID.split(":"); ! ! // Checks the unique id and its parents until it finds a target element ! // i.e. for ajaxPanel_grid:row:field it checks ! // ajaxPanel_grid_row_field ! // ajaxPanel_grid_row ! // ajaxPanel_grid ! for (var num=ids.length; num > 0; num--) ! { ! var elemID = ""; ! for (var i=0; i < num; i++) ! elemID += (i==0 ? "" : "_") + ids[i]; ! ! target = document.getElementById(elemID); ! if (target != null) ! break; ! } ! var cbType = AJAXCbo.GetAjaxCallType(target); if (cbType != "none") { ! AJAXCbo.DoAjaxCall(eventTarget, eventArgument, cbType); } else --- 271,280 ---- RBS_Controls_Store[i].value = ""; } ! ! var target = AJAXCbo.GetTargetElement(eventTarget); var cbType = AJAXCbo.GetAjaxCallType(target); if (cbType != "none") { ! AJAXCbo.DoAjaxCall(eventTarget, eventArgument, cbType, AJAXCbo.GetAjaxZoneID(target)); } else *************** *** 244,249 **** } ! AjaxCallObject.prototype.DoAjaxCall = function(eventTarget, eventArgument, ajaxCallType) { var theData = ''; var theform = document.forms[0]; --- 352,360 ---- } ! AjaxCallObject.prototype.DoAjaxCall = function(eventTarget, eventArgument, ajaxCallType, ajaxZoneID) { + //defaults + if (!ajaxCallType) ajaxCallType = "async"; + var theData = ''; var theform = document.forms[0]; *************** *** 254,260 **** theData += '__EVENTARGUMENT=' + this.EncodePostData(eventArgument) + '&'; theData += '__AJAXCALL=true&'; ! ! if ( ! __bPageIsStored ) ! theData += '__VIEWSTATE=' + this.EncodePostData(theform.__VIEWSTATE.value) + '&'; var elemCount = theform.elements.length; --- 365,373 ---- theData += '__EVENTARGUMENT=' + this.EncodePostData(eventArgument) + '&'; theData += '__AJAXCALL=true&'; ! ! if (ajaxZoneID != null) ! theData += '__AJAXZONE=' + ajaxZoneID + '&'; ! ! var excludeFlags = this.GetExcludeFlags( this.GetTargetElement(eventTarget) ); var elemCount = theform.elements.length; *************** *** 265,274 **** if( eName && eName != '') { ! if( eName == '__EVENTTARGET' || eName == '__EVENTARGUMENT' || eName == '__VIEWSTATE' ) { // Do Nothing } ! else if (curElem.getAttribute("ExcludeFromPost") == null || curElem.getAttribute("ExcludeFromPost").toLowerCase() != "true") { var type = curElem.type; var val = curElem.value; --- 378,390 ---- if( eName && eName != '') { ! if( eName == '__EVENTTARGET' || eName == '__EVENTARGUMENT' ) { // Do Nothing } ! else if ( ! this.ExcludeFromPost(curElem, ajaxZoneID, excludeFlags) ) { + if ( __bPageIsStored && eName == '__VIEWSTATE' ) + continue; + var type = curElem.type; var val = curElem.value; |