diff --git a/classes/validator/Validator.class.php b/classes/validator/Validator.class.php index 9843a1df7..8a5933b15 100644 --- a/classes/validator/Validator.class.php +++ b/classes/validator/Validator.class.php @@ -1,6 +1,7 @@ _xml_path) return false; - $filepath = $dir.'/'.md5($this->_version.' '.$this->_xml_path).'.js'; + // current language + $lang_type = class_exists('Context')?Context::getLangType():'en'; + + // check the file + $filepath = $dir.'/'.md5($this->_version.' '.$this->_xml_path).".{$lang_type}.js"; if(is_readable($filepath) && filemtime($filepath) > filemtime($this->_xml_path)) return $filepath; $content = $this->_compile2js(); @@ -404,11 +409,16 @@ class Validator * @private */ function _compile2js() { + global $lang; + $ruleset = basename($this->_xml_path,'.xml'); $content = array(); if(preg_match('@(^|/)files/ruleset/\w+\.xml$@i', $this->_xml_path)) $ruleset = '@'.$ruleset; + // current language + $lang_type = class_exists('Context')?Context::getLangType():'en'; + // custom rulesets $addrules = array(); foreach($this->_rules as $name=>$rule) { @@ -429,10 +439,17 @@ class Validator $addrules = implode('', $addrules); // filters - $content = array(); + $content = array(); + $messages = array(); foreach($this->_filters as $name=>$filter) { $field = array(); + // form filed name + if(isset($lang->{$name})) { + $field_lang = addslashes($lang->{$name}); + $messages[] = "v.cast('ADD_MESSAGE',['{$name}','{$field_lang}']);"; + } + if($filter['required'] == 'true') $field[] = 'required:true'; if($filter['rule']) $field[] = "rule:'{$filter['rule']}'"; if($filter['default']) $field[] = "default:'{$filter['default']}'"; @@ -456,13 +473,20 @@ class Validator } } - if(count($content)) { - $content = implode(',', $content); + if(!$content) return '/* Error : empty ruleset */'; - return "(function($,v){\nv=xe.getApp('validator')[0];if(!v)return;\n{$addrules}\nv.cast('ADD_FILTER',['{$ruleset}', {{$content}}]);\n})(jQuery);"; - } else { - return ''; + // error messages + foreach($lang->filter as $key=>$text) { + if($text) { + $text = addslashes($text); + $messages[] = "v.cast('ADD_MESSAGE',['{$key}','{$text}']);"; + } } + + $content = implode(',', $content); + $messages = implode("\n", $messages); + + return "(function($,v){\nv=xe.getApp('validator')[0];if(!v)return;\n{$addrules}\nv.cast('ADD_FILTER',['{$ruleset}', {{$content}}]);\n{$messages} // Hello\n})(jQuery);"; } }