summaryrefslogtreecommitdiff
path: root/framework/Web
diff options
context:
space:
mode:
authorwei <>2006-04-14 05:14:34 +0000
committerwei <>2006-04-14 05:14:34 +0000
commit7949f7fe746dbbe3eeefbc123bbb2c551b091733 (patch)
tree3880a5fbad51a2c9aca5ab5c5dc5b01f1a8f2da6 /framework/Web
parent9e21d160ead61cd0ed86c16a0668c50b14f58baf (diff)
Fixed #93 and #121
Diffstat (limited to 'framework/Web')
-rw-r--r--framework/Web/Javascripts/js/colorpicker.js2
-rw-r--r--framework/Web/Javascripts/js/prado.js293
-rw-r--r--framework/Web/Javascripts/js/validator.js2
-rw-r--r--framework/Web/Javascripts/prado/controls.js48
-rw-r--r--framework/Web/Javascripts/prado/form.js13
-rw-r--r--framework/Web/Javascripts/prado/validation.js3
-rw-r--r--framework/Web/UI/WebControls/TImageButton.php1
7 files changed, 218 insertions, 144 deletions
diff --git a/framework/Web/Javascripts/js/colorpicker.js b/framework/Web/Javascripts/js/colorpicker.js
index 5668be98..3dde7692 100644
--- a/framework/Web/Javascripts/js/colorpicker.js
+++ b/framework/Web/Javascripts/js/colorpicker.js
@@ -320,7 +320,7 @@ this.inputs=_65;
var _67=Prado.WebUI.TColorPicker.UIImages;
this.inputs["currentColor"]=SPAN({className:"currentColor"});
this.inputs["oldColor"]=SPAN({className:"oldColor"});
-var _68=TABLE({className:"inputs"},TBODY(null,TR(null,TD({className:"currentcolor",colSpan:2},this.inputs["currentColor"],this.inputs["oldColor"])),TR(null,TD(null,"H:"),TD(null,this.inputs["H"],"\u63b3")),TR(null,TD(null,"S:"),TD(null,this.inputs["S"],"%")),TR(null,TD(null,"V:"),TD(null,this.inputs["V"],"%")),TR(null,TD({className:"gap"},"R:"),TD({className:"gap"},this.inputs["R"])),TR(null,TD(null,"G:"),TD(null,this.inputs["G"])),TR(null,TD(null,"B:"),TD(null,this.inputs["B"])),TR(null,TD({className:"gap"},"#"),TD({className:"gap"},this.inputs["HEX"]))));
+var _68=TABLE({className:"inputs"},TBODY(null,TR(null,TD({className:"currentcolor",colSpan:2},this.inputs["currentColor"],this.inputs["oldColor"])),TR(null,TD(null,"H:"),TD(null,this.inputs["H"],"\xc2\xb0")),TR(null,TD(null,"S:"),TD(null,this.inputs["S"],"%")),TR(null,TD(null,"V:"),TD(null,this.inputs["V"],"%")),TR(null,TD({className:"gap"},"R:"),TD({className:"gap"},this.inputs["R"])),TR(null,TD(null,"G:"),TD(null,this.inputs["G"])),TR(null,TD(null,"B:"),TD(null,this.inputs["B"])),TR(null,TD({className:"gap"},"#"),TD({className:"gap"},this.inputs["HEX"]))));
var _69={selector:SPAN({className:"selector"}),background:SPAN({className:"colorpanel"}),slider:SPAN({className:"slider"}),hue:SPAN({className:"strip"})};
if(Prado.Browser().ie){
var _70="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader";
diff --git a/framework/Web/Javascripts/js/prado.js b/framework/Web/Javascripts/js/prado.js
index d142a070..a60372e8 100644
--- a/framework/Web/Javascripts/js/prado.js
+++ b/framework/Web/Javascripts/js/prado.js
@@ -1677,12 +1677,13 @@ Prado.PostBack=function(_379,_380){
var form=$(_380["FormID"]);
var _381=true;
if(_380["CausesValidation"]&&Prado.Validation){
+var _382=true;
if(_380["ValidationGroup"]){
-Prado.Validation.SetActiveGroup(Event.element(_379),_380["ValidationGroup"]);
+_382=Prado.Validation.ValidateValidationGroup(_380["ValidationGroup"]);
}else{
-Prado.Validation.SetActiveGroup(null,null);
+_382=Prado.Validation.ValidateNonGroup(form);
}
-if(Prado.Validation.IsValid(form)==false){
+if(!_382){
if(_380["StopEvent"]){
Event.stop(_379);
}
@@ -1693,13 +1694,13 @@ if(_380["PostBackUrl"]&&_380["PostBackUrl"].length>0){
form.action=_380["PostBackUrl"];
}
if(_380["TrackFocus"]){
-var _382=$("PRADO_LASTFOCUS");
-if(_382){
-var _383=document.activeElement;
+var _383=$("PRADO_LASTFOCUS");
if(_383){
-_382.value=_383.id;
+var _384=document.activeElement;
+if(_384){
+_383.value=_384.id;
}else{
-_382.value=_380["EventTarget"];
+_383.value=_380["EventTarget"];
}
}
}
@@ -1710,24 +1711,24 @@ if(_380["StopEvent"]){
Event.stop(_379);
}
};
-Prado.Element={setValue:function(_384,_385){
-var el=$(_384);
+Prado.Element={setValue:function(_385,_386){
+var el=$(_385);
if(el&&typeof (el.value)!="undefined"){
-el.value=_385;
+el.value=_386;
}
-},select:function(_387,_388,_389){
-var el=$(_387);
-var _390=_387.indexOf("[]")>-1;
-if(!el&&!_390){
+},select:function(_388,_389,_390){
+var el=$(_388);
+var _391=_388.indexOf("[]")>-1;
+if(!el&&!_391){
return;
}
-_388=_390?"check"+_388:el.tagName.toLowerCase()+_388;
-var _391=Prado.Element.Selection;
-if(isFunction(_391[_388])){
-_391[_388](_390?_387:el,_389);
+_389=_391?"check"+_389:el.tagName.toLowerCase()+_389;
+var _392=Prado.Element.Selection;
+if(isFunction(_392[_389])){
+_392[_389](_391?_388:el,_390);
}
-},click:function(_392){
-var el=$(_392);
+},click:function(_393){
+var el=$(_393);
if(!el){
return;
}
@@ -1743,25 +1744,25 @@ el.onclick();
}
}
}
-},setAttribute:function(_394,_395,_396){
-var el=$(_394);
-if(_395=="disabled"&&_396==false){
-el.removeAttribute(_395);
+},setAttribute:function(_395,_396,_397){
+var el=$(_395);
+if(_396=="disabled"&&_397==false){
+el.removeAttribute(_396);
}else{
-el.setAttribute(_395,_396);
+el.setAttribute(_396,_397);
}
-},setOptions:function(_397,_398){
-var el=$(_397);
+},setOptions:function(_398,_399){
+var el=$(_398);
if(el&&el.tagName.toLowerCase()=="select"){
while(el.length>0){
el.remove(0);
}
-for(var i=0;i<_398.length;i++){
-el.options[el.options.length]=new Option(_398[i][0],_398[i][1]);
+for(var i=0;i<_399.length;i++){
+el.options[el.options.length]=new Option(_399[i][0],_399[i][1]);
}
}
-},focus:function(_399){
-var obj=$(_399);
+},focus:function(_400){
+var obj=$(_400);
if(isObject(obj)&&isdef(obj.focus)){
setTimeout(function(){
obj.focus();
@@ -1769,22 +1770,22 @@ obj.focus();
}
return false;
}};
-Prado.Element.Selection={inputValue:function(el,_401){
+Prado.Element.Selection={inputValue:function(el,_402){
switch(el.type.toLowerCase()){
case "checkbox":
case "radio":
-return el.checked=_401;
+return el.checked=_402;
}
-},selectValue:function(el,_402){
-$A(el.options).each(function(_403){
-_403.selected=_403.value==_402;
+},selectValue:function(el,_403){
+$A(el.options).each(function(_404){
+_404.selected=_404.value==_403;
});
-},selectIndex:function(el,_404){
+},selectIndex:function(el,_405){
if(el.type=="select-one"){
-el.selectedIndex=_404;
+el.selectedIndex=_405;
}else{
for(var i=0;i<el.length;i++){
-if(i==_404){
+if(i==_405){
el.options[i].selected=true;
}
}
@@ -1792,23 +1793,23 @@ el.options[i].selected=true;
},selectClear:function(el){
el.selectedIndex=-1;
},selectAll:function(el){
-$A(el.options).each(function(_405){
-_405.selected=true;
-Logger.warn(_405.value);
+$A(el.options).each(function(_406){
+_406.selected=true;
+Logger.warn(_406.value);
});
},selectInvert:function(el){
-$A(el.options).each(function(_406){
-_406.selected=!_406.selected;
+$A(el.options).each(function(_407){
+_407.selected=!_407.selected;
});
-},checkValue:function(name,_407){
+},checkValue:function(name,_408){
$A(document.getElementsByName(name)).each(function(el){
-el.checked=el.value==_407;
+el.checked=el.value==_408;
});
-},checkIndex:function(name,_408){
-var _409=$A(document.getElementsByName(name));
-for(var i=0;i<_409.length;i++){
-if(i==_408){
-_409[i].checked=true;
+},checkIndex:function(name,_409){
+var _410=$A(document.getElementsByName(name));
+for(var i=0;i<_410.length;i++){
+if(i==_409){
+_410[i].checked=true;
}
}
},checkClear:function(name){
@@ -1824,108 +1825,126 @@ $A(document.getElementsByName(name)).each(function(el){
el.checked=!el.checked;
});
}};
-Object.extend(Prado.Element,{Insert:{After:function(_410,_411){
-new Insertion.After(_410,_411);
-},Before:function(_412,_413){
-new Insertion.Before(_412.innerHTML);
-},Below:function(_414,_415){
-new Insertion.Bottom(_414,_415);
-},Above:function(_416,_417){
-new Insertion.Top(_416,_417);
-}},CssClass:{set:function(_418,_419){
-_418=new Element.ClassNames(_418);
-_418.set(_419);
+Object.extend(Prado.Element,{Insert:{After:function(_411,_412){
+new Insertion.After(_411,_412);
+},Before:function(_413,_414){
+new Insertion.Before(_413.innerHTML);
+},Below:function(_415,_416){
+new Insertion.Bottom(_415,_416);
+},Above:function(_417,_418){
+new Insertion.Top(_417,_418);
+}},CssClass:{set:function(_419,_420){
+_419=new Element.ClassNames(_419);
+_419.set(_420);
}}});
Prado.WebUI=Class.create();
Prado.WebUI.PostBackControl=Class.create();
-Object.extend(Prado.WebUI.PostBackControl.prototype,{initialize:function(_420){
-this.element=$(_420["ID"]);
-if(_420["CausesValidation"]&&Prado.Validation){
-Prado.Validation.AddTarget(_420["ID"],_420["ValidationGroup"]);
+Object.extend(Prado.WebUI.PostBackControl.prototype,{initialize:function(_421){
+this.element=$(_421["ID"]);
+if(_421["CausesValidation"]&&Prado.Validation){
+Prado.Validation.AddTarget(_421["ID"],_421["ValidationGroup"]);
}
if(this.onInit){
-this.onInit(_420);
+this.onInit(_421);
}
}});
-Prado.WebUI.createPostBackComponent=function(_421){
-var _422=Class.create();
-Object.extend(_422.prototype,Prado.WebUI.PostBackControl.prototype);
-if(_421){
-Object.extend(_422.prototype,_421);
+Prado.WebUI.createPostBackComponent=function(_422){
+var _423=Class.create();
+Object.extend(_423.prototype,Prado.WebUI.PostBackControl.prototype);
+if(_422){
+Object.extend(_423.prototype,_422);
}
-return _422;
+return _423;
};
Prado.WebUI.TButton=Prado.WebUI.createPostBackComponent();
-Prado.WebUI.ClickableComponent=Prado.WebUI.createPostBackComponent({_elementOnClick:null,onInit:function(_423){
+Prado.WebUI.ClickableComponent=Prado.WebUI.createPostBackComponent({_elementOnClick:null,onInit:function(_424){
if(isFunction(this.element.onclick)){
this._elementOnClick=this.element.onclick;
this.element.onclick=null;
}
-Event.observe(this.element,"click",this.onClick.bindEvent(this,_423));
-},onClick:function(_424,_425){
-var src=Event.element(_424);
-var _427=true;
-var _428=null;
+Event.observe(this.element,"click",this.onClick.bindEvent(this,_424));
+},onClick:function(_425,_426){
+var src=Event.element(_425);
+var _428=true;
+var _429=null;
if(this._elementOnClick){
-var _428=this._elementOnClick(_424);
-if(isBoolean(_428)){
-_427=_428;
+var _429=this._elementOnClick(_425);
+if(isBoolean(_429)){
+_428=_429;
}
}
-if(_427){
-this.onPostBack(_424,_425);
+if(_428){
+this.onPostBack(_425,_426);
}
-if(isBoolean(_428)&&!_428){
-Event.stop(_424);
+if(isBoolean(_429)&&!_429){
+Event.stop(_425);
}
-},onPostBack:function(_429,_430){
-Prado.PostBack(_429,_430);
+},onPostBack:function(_430,_431){
+Prado.PostBack(_430,_431);
}});
Prado.WebUI.TLinkButton=Prado.WebUI.ClickableComponent;
-Prado.WebUI.TImageButton=Prado.WebUI.ClickableComponent;
Prado.WebUI.TCheckBox=Prado.WebUI.ClickableComponent;
Prado.WebUI.TBulletedList=Prado.WebUI.ClickableComponent;
Prado.WebUI.TImageMap=Prado.WebUI.ClickableComponent;
+Prado.WebUI.TImageButton=Class.create();
+Object.extend(Prado.WebUI.TImageButton.prototype,Prado.WebUI.ClickableComponent.prototype);
+Object.extend(Prado.WebUI.TImageButton.prototype,{hasXYInput:false,onPostBack:function(_432,_433){
+if(!this.hasXYInput){
+this.addXYInput(_432,_433);
+this.hasXYInput=true;
+}
+Prado.PostBack(_432,_433);
+},addXYInput:function(_434,_435){
+var _436=Position.cumulativeOffset(this.element);
+var _437=[_434.clientX,_434.clientY];
+var x=_437[0]-_436[0]+1;
+var y=_437[1]-_436[1]+1;
+var id=_435["EventTarget"];
+var _438=INPUT({type:"hidden",name:id+"_x",value:x});
+var _439=INPUT({type:"hidden",name:id+"_y",value:y});
+this.element.parentNode.appendChild(_438);
+this.element.parentNode.appendChild(_439);
+}});
Prado.WebUI.TRadioButton=Prado.WebUI.createPostBackComponent(Prado.WebUI.ClickableComponent.prototype);
Prado.WebUI.TRadioButton.prototype.onRadioButtonInitialize=Prado.WebUI.TRadioButton.prototype.initialize;
-Object.extend(Prado.WebUI.TRadioButton.prototype,{initialize:function(_431){
-this.element=$(_431["ID"]);
+Object.extend(Prado.WebUI.TRadioButton.prototype,{initialize:function(_440){
+this.element=$(_440["ID"]);
if(!this.element.checked){
-this.onRadioButtonInitialize(_431);
+this.onRadioButtonInitialize(_440);
}
}});
-Prado.WebUI.TTextBox=Prado.WebUI.createPostBackComponent({onInit:function(_432){
-if(_432["TextMode"]!="MultiLine"){
+Prado.WebUI.TTextBox=Prado.WebUI.createPostBackComponent({onInit:function(_441){
+if(_441["TextMode"]!="MultiLine"){
Event.observe(this.element,"keydown",this.handleReturnKey.bind(this));
}
-Event.observe(this.element,"change",Prado.PostBack.bindEvent(this,_432));
+Event.observe(this.element,"change",Prado.PostBack.bindEvent(this,_441));
},handleReturnKey:function(e){
if(Event.keyCode(e)==Event.KEY_RETURN){
-var _433=Event.element(e);
-if(_433){
-Event.fireEvent(_433,"change");
+var _442=Event.element(e);
+if(_442){
+Event.fireEvent(_442,"change");
Event.stop(e);
}
}
}});
-Prado.WebUI.TListControl=Prado.WebUI.createPostBackComponent({onInit:function(_434){
-Event.observe(this.element,"change",Prado.PostBack.bindEvent(this,_434));
+Prado.WebUI.TListControl=Prado.WebUI.createPostBackComponent({onInit:function(_443){
+Event.observe(this.element,"change",Prado.PostBack.bindEvent(this,_443));
}});
Prado.WebUI.TListBox=Prado.WebUI.TListControl;
Prado.WebUI.TDropDownList=Prado.WebUI.TListControl;
Prado.WebUI.DefaultButton=Class.create();
-Object.extend(Prado.WebUI.DefaultButton.prototype,{initialize:function(_435){
-this.options=_435;
+Object.extend(Prado.WebUI.DefaultButton.prototype,{initialize:function(_444){
+this.options=_444;
this._event=this.triggerEvent.bindEvent(this);
-Event.observe(_435["Panel"],"keydown",this._event);
-},triggerEvent:function(ev,_437){
-var _438=Event.keyCode(ev)==Event.KEY_RETURN;
-var _439=Event.element(ev).tagName.toLowerCase()=="textarea";
-if(_438&&!_439){
-var _440=$(this.options["Target"]);
-if(_440){
+Event.observe(_444["Panel"],"keydown",this._event);
+},triggerEvent:function(ev,_446){
+var _447=Event.keyCode(ev)==Event.KEY_RETURN;
+var _448=Event.element(ev).tagName.toLowerCase()=="textarea";
+if(_447&&!_448){
+var _449=$(this.options["Target"]);
+if(_449){
this.triggered=true;
-Event.fireEvent(_440,this.options["Event"]);
+Event.fireEvent(_449,this.options["Event"]);
Event.stop(ev);
}
}
@@ -1935,15 +1954,15 @@ Prado.WebUI.TTextHighlighter.prototype={initialize:function(id){
if(!window.clipboardData){
return;
}
-var _441={href:"javascript:;//copy code to clipboard",onclick:"Prado.WebUI.TTextHighlighter.copy(this)",onmouseover:"Prado.WebUI.TTextHighlighter.hover(this)",onmouseout:"Prado.WebUI.TTextHighlighter.out(this)"};
-var div=DIV({className:"copycode"},A(_441,"Copy Code"));
+var _450={href:"javascript:;//copy code to clipboard",onclick:"Prado.WebUI.TTextHighlighter.copy(this)",onmouseover:"Prado.WebUI.TTextHighlighter.hover(this)",onmouseout:"Prado.WebUI.TTextHighlighter.out(this)"};
+var div=DIV({className:"copycode"},A(_450,"Copy Code"));
document.write(DIV(null,div).innerHTML);
}};
Object.extend(Prado.WebUI.TTextHighlighter,{copy:function(obj){
-var _442=obj.parentNode.parentNode.parentNode;
+var _451=obj.parentNode.parentNode.parentNode;
var text="";
-for(var i=0;i<_442.childNodes.length;i++){
-var node=_442.childNodes[i];
+for(var i=0;i<_451.childNodes.length;i++){
+var node=_451.childNodes[i];
if(node.innerText){
text+=node.innerText=="Copy Code"?"":node.innerText;
}else{
@@ -1959,11 +1978,11 @@ obj.parentNode.className="copycode copycode_hover";
obj.parentNode.className="copycode";
}});
Prado.WebUI.TRatingList=Class.create();
-Prado.WebUI.TRatingList.prototype={selectedIndex:-1,initialize:function(_443){
-this.options=_443;
-this.element=$(_443["ID"]);
-Element.addClassName(this.element,_443.cssClass);
-this.radios=document.getElementsByName(_443.field);
+Prado.WebUI.TRatingList.prototype={selectedIndex:-1,initialize:function(_452){
+this.options=_452;
+this.element=$(_452["ID"]);
+Element.addClassName(this.element,_452.cssClass);
+this.radios=document.getElementsByName(_452.field);
for(var i=0;i<this.radios.length;i++){
Event.observe(this.radios[i].parentNode,"mouseover",this.hover.bindEvent(this,i));
Event.observe(this.radios[i].parentNode,"mouseout",this.recover.bindEvent(this,i));
@@ -1971,33 +1990,33 @@ Event.observe(this.radios[i].parentNode,"click",this.click.bindEvent(this,i));
}
this.caption=CAPTION();
this.element.appendChild(this.caption);
-this.selectedIndex=_443.selectedIndex;
+this.selectedIndex=_452.selectedIndex;
this.setRating(this.selectedIndex);
-},hover:function(ev,_444){
+},hover:function(ev,_453){
for(var i=0;i<this.radios.length;i++){
-this.radios[i].parentNode.className=(i<=_444)?"rating_hover":"";
+this.radios[i].parentNode.className=(i<=_453)?"rating_hover":"";
}
-this.setCaption(_444);
-},recover:function(ev,_445){
-for(var i=0;i<=_445;i++){
+this.setCaption(_453);
+},recover:function(ev,_454){
+for(var i=0;i<=_454;i++){
Element.removeClassName(this.radios[i].parentNode,"rating_hover");
}
this.setRating(this.selectedIndex);
-},click:function(ev,_446){
+},click:function(ev,_455){
for(var i=0;i<this.radios.length;i++){
-this.radios[i].checked=(i==_446);
+this.radios[i].checked=(i==_455);
}
-this.selectedIndex=_446;
-this.setRating(_446);
+this.selectedIndex=_455;
+this.setRating(_455);
if(isFunction(this.options.onChange)){
-this.options.onChange(this,_446);
+this.options.onChange(this,_455);
}
-},setRating:function(_447){
-for(var i=0;i<=_447;i++){
+},setRating:function(_456){
+for(var i=0;i<=_456;i++){
this.radios[i].parentNode.className="rating_selected";
}
-this.setCaption(_447);
-},setCaption:function(_448){
-this.caption.innerHTML=_448>-1?this.radios[_448].value:this.options.caption;
+this.setCaption(_456);
+},setCaption:function(_457){
+this.caption.innerHTML=_457>-1?this.radios[_457].value:this.options.caption;
}};
diff --git a/framework/Web/Javascripts/js/validator.js b/framework/Web/Javascripts/js/validator.js
index e1d0806a..b5321743 100644
--- a/framework/Web/Javascripts/js/validator.js
+++ b/framework/Web/Javascripts/js/validator.js
@@ -144,7 +144,7 @@ var _42=Prado.Validation.validators;
for(var i=0;i<_42.length;i++){
_42[i].enabled=!_42[i].control||undef(_42[i].control.form)||_42[i].control.form==_40;
_42[i].visible=Prado.Validation.IsGroupValidation?_42[i].inActiveGroup():true;
-if(Prado.Validation.HasTargetGroup){
+if(Prado.Validation.HasTargetGroup||_42[i].group){
if(_42[i].group!=Prado.Validation.CurrentTargetGroup){
_42[i].enabled=false;
}
diff --git a/framework/Web/Javascripts/prado/controls.js b/framework/Web/Javascripts/prado/controls.js
index 1d274fd8..0f736f91 100644
--- a/framework/Web/Javascripts/prado/controls.js
+++ b/framework/Web/Javascripts/prado/controls.js
@@ -69,12 +69,58 @@ Prado.WebUI.ClickableComponent = Prado.WebUI.createPostBackComponent(
});
Prado.WebUI.TLinkButton = Prado.WebUI.ClickableComponent;
-Prado.WebUI.TImageButton = Prado.WebUI.ClickableComponent;
Prado.WebUI.TCheckBox = Prado.WebUI.ClickableComponent;
Prado.WebUI.TBulletedList = Prado.WebUI.ClickableComponent;
Prado.WebUI.TImageMap = Prado.WebUI.ClickableComponent;
/**
+ * TImageButton client-side behaviour. With validation, Firefox needs
+ * to capture the x,y point of the clicked image in hidden form fields.
+ */
+Prado.WebUI.TImageButton = Class.create();
+Object.extend(Prado.WebUI.TImageButton.prototype,Prado.WebUI.ClickableComponent.prototype);
+Object.extend(Prado.WebUI.TImageButton.prototype,
+{
+ /**
+ * Only add the hidden inputs once.
+ */
+ hasXYInput : false,
+
+ /**
+ * Override parent onPostBack function, tried to add hidden forms
+ * inputs to capture x,y clicked point.
+ */
+ onPostBack : function(event, options)
+ {
+ if(!this.hasXYInput)
+ {
+ this.addXYInput(event,options);
+ this.hasXYInput = true;
+ }
+ Prado.PostBack(event, options);
+ },
+
+ /**
+ * Add hidden inputs to capture the x,y point clicked on the image.
+ * @param event DOM click event.
+ * @param array image button options.
+ */
+ addXYInput : function(event,options)
+ {
+ var imagePos = Position.cumulativeOffset(this.element);
+ var clickedPos = [event.clientX, event.clientY];
+ var x = clickedPos[0]-imagePos[0]+1;
+ var y = clickedPos[1]-imagePos[1]+1;
+ var id = options['EventTarget'];
+ var x_input = INPUT({type:'hidden',name:id+'_x',value:x});
+ var y_input = INPUT({type:'hidden',name:id+'_y',value:y});
+ this.element.parentNode.appendChild(x_input);
+ this.element.parentNode.appendChild(y_input);
+ }
+});
+
+
+/**
* Radio button, only initialize if not already checked.
*/
Prado.WebUI.TRadioButton = Prado.WebUI.createPostBackComponent(Prado.WebUI.ClickableComponent.prototype);
diff --git a/framework/Web/Javascripts/prado/form.js b/framework/Web/Javascripts/prado/form.js
index 059aab5f..d2286b23 100644
--- a/framework/Web/Javascripts/prado/form.js
+++ b/framework/Web/Javascripts/prado/form.js
@@ -104,11 +104,18 @@ Prado.PostBack = function(event,options)
var canSubmit = true;
if(options['CausesValidation'] && Prado.Validation)
{
+ var valid = true;
if(options['ValidationGroup'])
- Prado.Validation.SetActiveGroup(Event.element(event), options['ValidationGroup']);
+ {
+ valid = Prado.Validation.ValidateValidationGroup(options['ValidationGroup']);
+ // Prado.Validation.SetActiveGroup(Event.element(event), options['ValidationGroup']);
+ }
else
- Prado.Validation.SetActiveGroup(null,null);
- if(Prado.Validation.IsValid(form) == false)
+ {
+ valid = Prado.Validation.ValidateNonGroup(form);
+ }
+
+ if(!valid)
{
if(options['StopEvent']) Event.stop(event);
return;
diff --git a/framework/Web/Javascripts/prado/validation.js b/framework/Web/Javascripts/prado/validation.js
index e7e45b2c..ba68becc 100644
--- a/framework/Web/Javascripts/prado/validation.js
+++ b/framework/Web/Javascripts/prado/validation.js
@@ -301,7 +301,7 @@ Prado.Validation.IsValid = function(form)
//when group validation, only validators in the active group are visible.
validators[i].visible = Prado.Validation.IsGroupValidation ? validators[i].inActiveGroup() : true;
- if(Prado.Validation.HasTargetGroup)
+ if(Prado.Validation.HasTargetGroup || validators[i].group)
{
if(validators[i].group != Prado.Validation.CurrentTargetGroup)
validators[i].enabled = false;
@@ -739,6 +739,7 @@ Prado.Validation.ValidateValidationGroup= function(groupId)
return Prado.Validation.IsValid(target.form);
}
}
+
return true;
};
diff --git a/framework/Web/UI/WebControls/TImageButton.php b/framework/Web/UI/WebControls/TImageButton.php
index e5e5f3b9..655b1df0 100644
--- a/framework/Web/UI/WebControls/TImageButton.php
+++ b/framework/Web/UI/WebControls/TImageButton.php
@@ -124,6 +124,7 @@ class TImageButton extends TImage implements IPostBackDataHandler, IPostBackEven
$options['ID'] = $this->getClientID();
$options['CausesValidation'] = $this->getCausesValidation();
$options['ValidationGroup'] = $this->getValidationGroup();
+ $options['EventTarget'] = $this->getUniqueID();
return $options;
}