X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FSystem.Web%2Fresources%2FWebUIValidation_2.0.js;h=085f08d4a248cb4ec5c7927f94636401c6732039;hb=6c035e225abc36a15501a03f574744824225350b;hp=c7cc1bf1fa7859714d130bcfb1d0ff74c3fb4002;hpb=a3ea7ceb4d4f5e2cb8ea421313e8939640fb898c;p=mono.git diff --git a/mcs/class/System.Web/resources/WebUIValidation_2.0.js b/mcs/class/System.Web/resources/WebUIValidation_2.0.js index c7cc1bf1fa7..085f08d4a24 100644 --- a/mcs/class/System.Web/resources/WebUIValidation_2.0.js +++ b/mcs/class/System.Web/resources/WebUIValidation_2.0.js @@ -1,483 +1,586 @@ -/* - * WebUIValidation.js - * - * Authors: - * Chris Toshok (toshok@ximian.com) - * - * (c) 2005 Novell, Inc. (http://www.novell.com) - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -var have_validation_summaries = false; - -function ValidatorOnLoad () -{ - if (typeof (Page_ValidationSummaries) != 'undefined' && Page_ValidationSummaries != null) { - have_validation_summaries = true; - for (var v in Page_ValidationSummaries) { - var vs = Page_ValidationSummaries [v]; - if (vs.getAttribute ("validationgroup") == null) - vs.setAttribute ("validationgroup", ""); - } - } - - for (var v in Page_Validators) { - var vo = Page_Validators [v]; - var funcname = vo.getAttribute ("evaluationfunction"); - - func = this[funcname]; - - vo["evaluationfunction"] = func; - - if (vo.getAttribute ("isvalid") == null) - vo.setAttribute ("isvalid", "true"); - - if (vo.getAttribute ("enabled") == null) - vo.setAttribute ("enabled", "true"); - - if (vo.getAttribute ("validationgroup") == null) - vo.setAttribute ("validationgroup", ""); - - func = vo ["evaluationfunction"]; - } - - Page_ValidationActive = true; -} - -var validation_result = true; - -function ValidationSummaryOnSubmit (group) -{ - /* handle validation summaries here */ - if (validation_result == false && have_validation_summaries) { - - for (var vi in Page_ValidationSummaries) { - var vs = Page_ValidationSummaries[vi]; - - if(IsValidationGroupMatch(vs, group)) { - - var header = vs.getAttribute ("headertext"); - if (header == null) - header = ""; - - attr = vs.getAttribute ("showsummary"); - if (attr == null || attr.toLowerCase() == "true") { - var displaymode = vs.getAttribute ("displaymode"); - if (displaymode == null) displaymode = "Bulleted"; - - var html = ""; - - if (displaymode == "List") { - list_pre = ""; - list_post = ""; - item_pre = ""; - item_post = "
"; - } - else if (displaymode == "SingleParagraph") { - list_pre = ""; - list_post = "
"; - item_pre = ""; - item_post = " "; - } - else { - list_pre = ""; - item_pre = "\n
  • "; - item_post = "
  • "; - } - - html += header; - html += list_pre; - for (var v in Page_Validators) { - var vo = Page_Validators [v]; - - if (vo.getAttribute ("isvalid").toLowerCase() == "false") { - var text = ValidatorGetErrorMessage (vo); - if (text != null && text != "") { - html += item_pre + text + item_post; - } - } - } - html += list_post; - - vs.innerHTML = html; - vs.style.display = "block"; - } - - attr = vs.getAttribute ("showmessagebox"); - if (attr != null && attr.toLowerCase() == "true") { - var v_contents = ""; - - for (var v in Page_Validators) { - var vo = Page_Validators [v]; - - if (vo.getAttribute ("isvalid").toLowerCase() == "false") { - var text = ValidatorGetErrorMessage (vo); - if (text != null && text != "") { - v_contents += "-" + text + "\n"; - } - } - } - - var alert_header = header; - if (alert_header != "") - alert_header += "\n"; - summary_contents = alert_header + v_contents; - alert (summary_contents); - } - } - } - } -} - -function ValidatorCommonOnSubmit () -{ - rv = validation_result; - validation_result = true; - return rv; -} - -function ValidatorGetValue (controlname) -{ - var el = GetElement (controlname); - - /* if the element has a 'value' attribute, return it */ - if (typeof (el.value) != 'undefined' && el.value != null) { - return el.value; - } - - /* if it's a select, loop over the options looking for the - * selected one. */ - if (typeof (el.selectedIndex) != 'undefined') { - return el.options[el.selectedIndex].value; - } -} - -function ValidatorTrim (s) -{ - s = s.replace (/^\s+/g, ""); - s = s.replace (/\s+$/g, ""); - - return s; -} - -function Page_ClientValidate(group) -{ - validation_result = true; - - /* clear out the existing text from all our summaries */ - if (have_validation_summaries) { - for (var vi in Page_ValidationSummaries) { - var vs = Page_ValidationSummaries[vi]; - vs.style.display = "none"; - vs.innerHTML = ""; - } - } - - for (var v in Page_Validators) { - var vo = Page_Validators [v]; - var evalfunc = vo["evaluationfunction"]; - var result = false; - - if (vo.getAttribute ("enabled").toLowerCase() == "false" || !IsValidationGroupMatch(vo, group)) { - result = true; - ValidatorSucceeded (vo); - } - else { - result = evalfunc (vo); - } - - if (!result) - validation_result = false; - - vo.setAttribute("isvalid", result ? "true" : "false"); - } - ValidationSummaryOnSubmit(group); - return validation_result; -} - -function IsValidationGroupMatch(vo, group) { - var valGroup = vo.getAttribute ("validationgroup"); - if ((typeof(group) == "undefined") || (group == null)) { - return (valGroup == ""); - } - return (valGroup == group); -} - -/*******************/ -/* type converters */ - -function ToInteger (s) -{ - if ((v = parseInt(s, 10)) != s - 0) - return null; - else - return v; -} - -function ToString (s) -{ - return s; -} - -function ToDouble (s) -{ - if ((v = parseFloat(s)) != s - 0) - return null; - else - return v; -} - -function ToDate (s) -{ - /* NYI */ - return null; -} - -function ToCurrency (s) -{ - /* NYI */ - return null; -} - -/*******************/ -/* validators */ - -function CompareValidatorEvaluateIsValid (validator) -{ - var ControlToCompare = validator.getAttribute ("controltocompare"); - var ValueToCompare = validator.getAttribute ("valuetocompare"); - var Operator = validator.getAttribute ("operator").toLowerCase(); - var ControlToValidate = validator.getAttribute ("controltovalidate"); - var DataType = validator.getAttribute ("datatype"); - - var ctrl_value = ValidatorTrim (ValidatorGetValue (ControlToValidate)); - var compare = (ControlToCompare != null && ControlToCompare != "") ? ValidatorTrim (ValidatorGetValue (ControlToCompare)) : ValueToCompare; - - var left = Convert (ctrl_value, DataType); - if (left == null) { - ValidatorFailed (validator); - return false; - } - - var right = Convert (compare, DataType); - if (right == null) { - ValidatorSucceeded (validator); - return true; - } - - var result = false; - - if (Operator == "equal") { - result = (left == right); - } - else if (Operator == "notequal") { - result = (left != right); - } - else if (Operator == "lessthan") { - result = (left < right); - } - else if (Operator == "lessthanequal") { - result = (left <= right); - } - else if (Operator == "greaterthan") { - result = (left > right); - } - else if (Operator == "greaterthanequal") { - result = (left >= right); - } - - if (result == false) { - ValidatorFailed (validator); - return false; - } - else { - ValidatorSucceeded (validator); - return true; - } -} - -function RangeValidatorEvaluateIsValid (validator) -{ - var MinimumValue = parseInt (validator.getAttribute ("minimumvalue")); - var MaximumValue = parseInt (validator.getAttribute ("maximumvalue")); - var ControlToValidate = validator.getAttribute ("controltovalidate"); - var DataType = validator.getAttribute ("datatype"); - - var ctrl_value = ValidatorTrim (ValidatorGetValue (ControlToValidate)); - - if (ctrl_value == "") { - ValidatorSucceeded (validator); - return true; - } - - var val = Convert (ctrl_value, DataType); - if (val == null || val < MinimumValue || val > MaximumValue) { - ValidatorFailed (validator); - return false; - } - else { - ValidatorSucceeded (validator); - return true; - } -} - -function RegularExpressionValidatorEvaluateIsValid (validator) -{ - var ValidationExpression = validator.getAttribute ("validationexpression"); - var ControlToValidate = validator.getAttribute ("controltovalidate"); - - var ctrl_value = ValidatorTrim (ValidatorGetValue (ControlToValidate)); - - if (ctrl_value == "") { - ValidatorSucceeded (validator); - return true; - } - - var r = new RegExp (ValidationExpression); - match = r.exec (ctrl_value); - if (match == null || match[0] == "") { - ValidatorFailed (validator); - return false; - } - else { - ValidatorSucceeded (validator); - return true; - } -} - -function RequiredFieldValidatorEvaluateIsValid (validator) -{ - var InitialValue = validator.getAttribute ("initialvalue"); - var ControlToValidate = validator.getAttribute ("controltovalidate"); - - var ctrl_value = ValidatorTrim (ValidatorGetValue (ControlToValidate)); - - if (ctrl_value == ValidatorTrim (InitialValue)) { - ValidatorFailed (validator); - return false; - } - else { - ValidatorSucceeded (validator); - return true; - } -} - -function CustomValidatorEvaluateIsValid (validator) -{ - var InitialValue = validator.getAttribute ("initialvalue"); - var ControlToValidate = validator.getAttribute ("controltovalidate"); - - if (!ControlToValidate) { - ValidatorSucceeded (validator); - return true; - } - - var evaluationfunc = validator.getAttribute ("clientvalidationfunction"); - - var ctrl_value = ValidatorTrim (ValidatorGetValue (ControlToValidate)); - - var result = true; - - if (evaluationfunc && evaluationfunc != "") { - args = {Value:ctrl_value, IsValid:false}; - eval (evaluationfunc + "(validator, args)"); - result = args.IsValid; - } - - if (result) { - ValidatorSucceeded (validator); - return true; - } - else { - ValidatorFailed (validator); - return false; - } -} - -/*********************/ -/* utility functions */ - -function Convert (s, ty) -{ - var cvt = this ["To" + ty]; - if (typeof (cvt) == 'function') - return cvt (s); - else - return null; -} - -function ValidatorUpdateDisplay (v, valid) -{ - var display = v.getAttribute ("display"); - - /* for validators that aren't displayed, do nothing */ - if (display == "None") { - return; - } - - v.style.visibility = (valid ? "hidden" : "visible"); - if (display == "Dynamic") { - v.style.display = (valid ? "none" : "inline"); - } -} - -function ValidatorGetErrorMessage (v) -{ - var text = v.getAttribute ("errormessage"); - if (text == null || text == "") - text = v.getAttribute ("text"); - if (text == null) - text = ""; - return text; -} - -function ValidatorGetText (v) -{ - var text = v.getAttribute ("text"); - if (text == null || text == "") - text = v.getAttribute ("errormessage"); - if (text == null) - text = ""; - return text; -} - -function ValidatorFailed (v) -{ - var text = ValidatorGetText (v); - v.innerHTML = text; - - ValidatorUpdateDisplay (v, false); -} - -function ValidatorSucceeded (v) -{ - v.innerHTML = ""; - - ValidatorUpdateDisplay (v, true); -} - -function GetElement(id) -{ - var x = document.getElementById ? document.getElementById (id) : - ((document.all) ? document.all [id] : null); - return x; -} +/* + * WebUIValidation.js + * + * Authors: + * Chris Toshok (toshok@ximian.com) + * + * (c) 2005 Novell, Inc. (http://www.novell.com) + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +function WebFormValidation_Initialize(webForm) { + +webForm.have_validation_summaries = false; + +webForm.HaveRegexp = function () +{ + if (window.RegExp) + return true; + return false; +} + +webForm.ValidatorOnLoad = function () +{ + if (typeof (webForm.Page_ValidationSummaries) != 'undefined' && webForm.Page_ValidationSummaries != null) { + webForm.have_validation_summaries = true; + } + + for (var v = 0; v < webForm.Page_Validators.length; v++) { + var vo = webForm.Page_Validators [v]; + + if (typeof(vo.isvalid) == "string" && vo.isvalid == "False") + vo._isvalid = false; + else + vo._isvalid = true; + + if (typeof(vo.enabled) == "string" && vo.enabled == "False") + vo._enabled = false; + else + vo._enabled = true; + + if (typeof(vo.evaluationfunction) == "string") + vo.evaluationfunction = webForm [vo.evaluationfunction]; + } + + webForm.Page_ValidationActive = true; +} + +webForm.validation_result = true; + +webForm.ValidationSummaryOnSubmit = function (group) +{ + /* handle validation summaries here */ + if (webForm.validation_result == false && webForm.have_validation_summaries) { + + for (var vi = 0; vi < webForm.Page_ValidationSummaries.length; vi++) { + var vs = webForm.Page_ValidationSummaries[vi]; + + if(webForm.IsValidationGroupMatch(vs, group)) { + + var header = ""; + if(typeof(vs.headertext)=="string") + header = vs.headertext; + + if (vs.showsummary != "False") { + if (typeof(vs.displaymode) != "string") + vs.displaymode = "BulletList"; + + var html = ""; + + if (vs.displaymode == "List") { + list_pre = ""; + list_post = ""; + item_pre = ""; + item_post = "
    "; + } + else if (vs.displaymode == "SingleParagraph") { + list_pre = ""; + list_post = "
    "; + item_pre = ""; + item_post = " "; + } + else { + list_pre = ""; + item_pre = "\n
  • "; + item_post = "
  • "; + } + + html += header; + html += list_pre; + for (var v = 0; v < webForm.Page_Validators.length; v++) { + var vo = webForm.Page_Validators [v]; + + if (!vo._isvalid) { + var text = vo.errormessage; + if (text != null && text != "") { + html += item_pre + text + item_post; + } + } + } + html += list_post; + + vs.innerHTML = html; + vs.style.display = "block"; + } + + if (vs.showmessagebox == "True") { + var v_contents = ""; + + for (var v = 0; v < webForm.Page_Validators.length; v++) { + var vo = webForm.Page_Validators [v]; + + if (!vo._isvalid) { + var text = vo.errormessage; + if (text != null && text != "") { + v_contents += "-" + text + "\n"; + } + } + } + + var alert_header = header; + if (alert_header != "") + alert_header += "\n"; + summary_contents = alert_header + v_contents; + alert (summary_contents); + } + } + } + } +} + +webForm.ValidatorCommonOnSubmit = function () +{ + var rv = webForm.validation_result; + webForm.validation_result = true; + return rv; +} + +webForm.ValidatorGetValue = function (controlname) +{ + var el = webForm.GetElement (controlname); + + /* if the element has a 'value' attribute, return it */ + if (typeof (el.value) != 'undefined' && el.value != null) { + return el.value; + } + + /* if it's a select, loop over the options looking for the + * selected one. */ + if (typeof (el.selectedIndex) != 'undefined') { + return el.options[el.selectedIndex].value; + } + + return webForm.ValidatorGetValueRecursive(el); +} + +webForm.ValidatorGetValueRecursive = function (el) +{ + if (typeof(el.value) == "string") { + if (el.type != "radio" || el.checked == true) return el.value; + } + for (var i = 0; i 0); + var beginGroupSize, subsequentGroupSize; + var groupSizeNum = parseInt(validator.groupsize, 10); + if (!isNaN(groupSizeNum) && groupSizeNum > 0) { + beginGroupSize = "{1," + groupSizeNum + "}"; + subsequentGroupSize = "{" + groupSizeNum + "}"; + } + else { + beginGroupSize = subsequentGroupSize = "+"; + } + var exp = new RegExp("^\\s*([-\\+])?((\\d" + beginGroupSize + "(\\" + validator.groupchar + "\\d" + subsequentGroupSize + ")+)|\\d*)" + + (hasDigits ? "\\" + validator.decimalchar + "?(\\d{0," + validator.digits + "})" : "") + + "\\s*$"); + var m = s.match(exp); + if (m == null) + return null; + if (m[2].length == 0 && hasDigits && m[5].length == 0) + return null; + var cleanInput = (m[1] != null ? m[1] : "") + m[2].replace(new RegExp("(\\" + validator.groupchar + ")", "g"), "") + ((hasDigits && m[5].length > 0) ? "." + m[5] : ""); + var num = parseFloat(cleanInput); + return (isNaN(num) ? null : num); +} + +webForm.GetFullYear = function (year, maxYear) +{ + var twoDigitMaxYear = maxYear % 100; + var centure = maxYear - twoDigitMaxYear; + return ((year > twoDigitMaxYear) ? (centure - 100 + year) : (centure + year)); +} + +/*******************/ +/* validators */ + +webForm.CompareValidatorEvaluateIsValid = function (validator) +{ + var Operator = validator.operator.toLowerCase(); + var ControlToValidate = validator.controltovalidate; + var DataType = validator.type; + + var ctrl_value = webForm.ValidatorGetValue (ControlToValidate); + if (webForm.ValidatorTrim (ctrl_value) == "") { + webForm.ValidatorSucceeded (validator); + return true; + } + + var left = webForm.Convert (ctrl_value, DataType, validator); + if (left == null) { + webForm.ValidatorFailed (validator); + return false; + } + + if (Operator == "datatypecheck") { + webForm.ValidatorSucceeded (validator); + return true; + } + + var compare = ""; + if (typeof(validator.controltocompare) == "string" && document.getElementById(validator.controltocompare)) + compare = webForm.ValidatorGetValue(validator.controltocompare); + else if (typeof(validator.valuetocompare) == "string") + compare = validator.valuetocompare; + + var right = compare != null ? webForm.Convert (compare, DataType, validator) : null; + if (right == null) { + webForm.ValidatorSucceeded (validator); + return true; + } + + var result = false; + + if (Operator == "equal") { + result = (left == right); + } + else if (Operator == "notequal") { + result = (left != right); + } + else if (Operator == "lessthan") { + result = (left < right); + } + else if (Operator == "lessthanequal") { + result = (left <= right); + } + else if (Operator == "greaterthan") { + result = (left > right); + } + else if (Operator == "greaterthanequal") { + result = (left >= right); + } + + if (result == false) { + webForm.ValidatorFailed (validator); + return false; + } + else { + webForm.ValidatorSucceeded (validator); + return true; + } +} + +webForm.RangeValidatorEvaluateIsValid = function (validator) +{ + var ControlToValidate = validator.controltovalidate; + var DataType = validator.type; + + var ctrl_value = webForm.ValidatorTrim (webForm.ValidatorGetValue (ControlToValidate)); + + if (ctrl_value == "") { + webForm.ValidatorSucceeded (validator); + return true; + } + + var MinimumValue = webForm.Convert (validator.minimumvalue, DataType, validator); + var MaximumValue = webForm.Convert (validator.maximumvalue, DataType, validator); + var val = webForm.Convert (ctrl_value, DataType, validator); + if (val == null || val < MinimumValue || val > MaximumValue) { + webForm.ValidatorFailed (validator); + return false; + } + else { + webForm.ValidatorSucceeded (validator); + return true; + } +} + +webForm.RegularExpressionValidatorEvaluateIsValid = function (validator) +{ + var ValidationExpression = validator.validationexpression; + var ControlToValidate = validator.controltovalidate; + + var ctrl_value = webForm.ValidatorTrim (webForm.ValidatorGetValue (ControlToValidate)); + + if (ctrl_value == "") { + webForm.ValidatorSucceeded (validator); + return true; + } + + if (!webForm.HaveRegexp ()) + return false; + + var r = new RegExp (ValidationExpression); + match = r.exec (ctrl_value); + if (match == null || match[0] != ctrl_value) { + webForm.ValidatorFailed (validator); + return false; + } + else { + webForm.ValidatorSucceeded (validator); + return true; + } +} + +webForm.RequiredFieldValidatorEvaluateIsValid = function (validator) +{ + var InitialValue = validator.initialvalue; + var ControlToValidate = validator.controltovalidate; + + var ctrl_value = webForm.ValidatorTrim (webForm.ValidatorGetValue (ControlToValidate)); + + if (ctrl_value == webForm.ValidatorTrim (InitialValue)) { + webForm.ValidatorFailed (validator); + return false; + } + else { + webForm.ValidatorSucceeded (validator); + return true; + } +} + +webForm.CustomValidatorEvaluateIsValid = function (validator) +{ + var ControlToValidate = validator.controltovalidate; + var evaluationfunc = validator.clientvalidationfunction; + var ctrl_value; + + if (ControlToValidate) { + ctrl_value = webForm.ValidatorTrim (webForm.ValidatorGetValue (ControlToValidate)); + + if ((ctrl_value.length == 0) && ((typeof(validator.validateemptytext) != "string") || (validator.validateemptytext != "true"))) { + webForm.ValidatorSucceeded (validator); + return true; + } + } else + ctrl_value = ""; + var result = true; + + if (evaluationfunc && evaluationfunc != "") { + args = {Value:ctrl_value, IsValid:true}; + eval (evaluationfunc + "(validator, args)"); + result = args.IsValid; + } + + if (result) { + webForm.ValidatorSucceeded (validator); + return true; + } + else { + webForm.ValidatorFailed (validator); + return false; + } +} + +/*********************/ +/* utility functions */ + +webForm.Convert = function (s, ty, validator) +{ + var cvt = this ["To" + ty]; + if (typeof (cvt) == 'function') + return cvt.call (this, s, validator); + else + return null; +} + +webForm.ValidatorUpdateDisplay = function (v, valid) +{ + var display = v.display; + + /* for validators that aren't displayed, do nothing */ + if (display == "None") { + return; + } + + v.style.visibility = (valid ? "hidden" : "visible"); + if (display == "Dynamic") { + v.style.display = (valid ? "none" : "inline"); + } +} + +webForm.ValidatorFailed = function (v) +{ + webForm.ValidatorUpdateDisplay (v, false); +} + +webForm.ValidatorSucceeded = function (v) +{ + webForm.ValidatorUpdateDisplay (v, true); +} + +webForm.GetElement = function (id) +{ + var x = document.getElementById ? document.getElementById (id) : + ((document.all) ? document.all [id] : null); + return x; +} + + +}