/** * Adds element's client-side validation rules to a builder object * * @param HTML_QuickForm2_JavascriptBuilder $builder */ protected function renderClientRules(HTML_QuickForm2_JavascriptBuilder $builder) { if ($this->toggleFrozen()) { return; } $onblur = HTML_QuickForm2_Rule::ONBLUR_CLIENT ^ HTML_QuickForm2_Rule::CLIENT; foreach ($this->rules as $rule) { if ($rule[1] & HTML_QuickForm2_Rule::CLIENT) { $builder->addRule($rule[0], $rule[1] & $onblur); } } }
public function testFormJavascript() { $builder = new HTML_QuickForm2_JavascriptBuilder(); $element = new HTML_QuickForm2_Element_InputText(); $mockRuleOne = $this->getMock('HTML_QuickForm2_Rule', array('validateOwner', 'getJavascriptCallback'), array($element)); $mockRuleOne->expects($this->once())->method('getJavascriptCallback')->will($this->returnValue('jsRuleOne')); $mockRuleTwo = $this->getMock('HTML_QuickForm2_Rule', array('validateOwner', 'getJavascriptCallback'), array($element)); $mockRuleTwo->expects($this->once())->method('getJavascriptCallback')->will($this->returnValue('jsRuleTwo')); $this->assertEquals('', $builder->getFormJavascript()); $builder->setFormId('formOne'); $builder->addRule($mockRuleOne); $builder->addElementJavascript('setupCodeOne'); $builder->setFormId('formTwo'); $builder->addRule($mockRuleTwo); $builder->addElementJavascript('setupCodeTwo'); $scriptOne = $builder->getFormJavascript('formOne', false); $this->assertContains('jsRuleOne', $scriptOne); $this->assertContains('setupCodeOne', $scriptOne); $this->assertNotContains('jsRuleTwo', $scriptOne); $this->assertNotContains('setupCodeTwo', $scriptOne); $this->assertNotContains('<script', $scriptOne); $scriptTwo = $builder->getFormJavascript('formTwo', true); $this->assertNotContains('jsRuleOne', $scriptTwo); $this->assertNotContains('setupCodeOne', $scriptTwo); $this->assertContains('jsRuleTwo', $scriptTwo); $this->assertContains('setupCodeTwo', $scriptTwo); $this->assertContains('<script', $scriptTwo); $scriptBoth = $builder->getFormJavascript(); $this->assertContains('jsRuleOne', $scriptBoth); $this->assertContains('setupCodeTwo', $scriptBoth); }