private function getValidateScript(Rules $rules) { $res = ''; foreach ($rules as $rule) { if (!is_string($rule->operation)) { continue; } if (strcasecmp($rule->operation, 'Nette\\Forms\\InstantClientScript::javascript') === 0) { $res .= "{$rule->arg}\n"; continue; } $script = $this->getClientScript($rule->control, $rule->operation, $rule->arg); if (!$script) { continue; } if (!empty($rule->message)) { // this is rule $message = Rules::formatMessage($rule, FALSE); $res .= "{$script}\n" . "if (" . ($rule->isNegative ? '' : '!') . "res) " . "return " . Nette\Json::encode((string) $message) . (strpos($message, '%value') === FALSE ? '' : ".replace('%value', val);\n") . ";\n"; } if ($rule->type === Rule::CONDITION) { // this is condition $innerScript = $this->getValidateScript($rule->subRules); if ($innerScript) { $res .= "{$script}\nif (" . ($rule->isNegative ? '!' : '') . "res) {\n" . Nette\String::indent($innerScript) . "}\n"; if ($rule->control instanceof ISubmitterControl) { $this->central = FALSE; } } } } return $res; }