コード例 #1
0
 protected function getJavascriptCallback()
 {
     HTML_QuickForm2_Loader::loadClass('HTML_QuickForm2_JavascriptBuilder');
     $config = $this->getConfig();
     $arguments = array($this->owner->getJavascriptValue());
     foreach ($config['arguments'] as $arg) {
         $arguments[] = HTML_QuickForm2_JavascriptBuilder::encode($arg);
     }
     return "function() { return !" . $this->findJavascriptName() . "(" . implode(', ', $arguments) . "); }";
 }
コード例 #2
0
 public function testEncode()
 {
     $this->assertEquals('null', HTML_QuickForm2_JavascriptBuilder::encode(null));
     $this->assertEquals('false', HTML_QuickForm2_JavascriptBuilder::encode(false));
     $this->assertEquals('"foo"', HTML_QuickForm2_JavascriptBuilder::encode('foo'));
     $this->assertEquals('"\\r\\n\\t\\\'\\"bar\\\\"', HTML_QuickForm2_JavascriptBuilder::encode("\r\n\t'\"bar\\"));
     $this->assertEquals(1, HTML_QuickForm2_JavascriptBuilder::encode(1));
     $this->assertEquals('[]', HTML_QuickForm2_JavascriptBuilder::encode(array()));
     $this->assertEquals('{}', HTML_QuickForm2_JavascriptBuilder::encode(new stdClass()));
     $this->assertEquals('["a","b"]', HTML_QuickForm2_JavascriptBuilder::encode(array('a', 'b')));
     $this->assertEquals('{"0":"a","b":"c"}', HTML_QuickForm2_JavascriptBuilder::encode(array('a', 'b' => 'c')));
     $obj = new stdClass();
     $obj->a = 'b';
     $obj->c = 'd';
     $obj->e = array('f', 'g');
     $this->assertEquals('{"a":"b","c":"d","e":["f","g"]}', HTML_QuickForm2_JavascriptBuilder::encode($obj));
     try {
         $fp = fopen(__FILE__, 'rb');
         HTML_QuickForm2_JavascriptBuilder::encode($fp);
         $this->fail('Expected HTML_QuickForm2_InvalidArgumentException was not thrown');
     } catch (HTML_QuickForm2_InvalidArgumentException $e) {
     }
     fclose($fp);
 }
コード例 #3
0
 /**
  * Generates a javascript function call to initialize hierselect behaviour
  *
  * @return string
  */
 private function _generateInitScript()
 {
     HTML_QuickForm2_Loader::loadClass('HTML_QuickForm2_JavascriptBuilder');
     $ids = array();
     /* @var $element HTML_QuickForm2_Element */
     foreach ($this as $element) {
         $ids[] = $element->getId();
     }
     return 'qf.elements.hierselect.init(' . HTML_QuickForm2_JavascriptBuilder::encode($ids) . (empty($this->jsCallback) ? '' : ", {$this->jsCallback}") . ');';
 }
コード例 #4
0
ファイル: Rule.php プロジェクト: grlf/eyedock
 /**
  * Returns the client-side representation of the Rule
  *
  * The Javascript object returned contains the following fields:
  *  - callback: {@see getJavascriptCallback()}
  *  - elementId: element ID to set error for if validation fails
  *  - errorMessage: error message to set if validation fails
  *  - chained: chained rules, array of arrays like in $chainedRules property
  *
  * @return   string
  * @throws   HTML_QuickForm2_Exception   if Rule or its chained Rules can only
  *                                       be run server-side
  */
 public function getJavascript($outputTriggers = true)
 {
     HTML_QuickForm2_Loader::loadClass('HTML_QuickForm2_JavascriptBuilder');
     $js = $this->getJavascriptCallback() . ",\n\t'" . $this->owner->getId() . "', " . HTML_QuickForm2_JavascriptBuilder::encode($this->getMessage());
     $js = $outputTriggers && count($triggers = $this->getJavascriptTriggers()) ? 'new qf.LiveRule(' . $js . ', ' . HTML_QuickForm2_JavascriptBuilder::encode($triggers) : 'new qf.Rule(' . $js;
     if (count($this->chainedRules) > 1 || count($this->chainedRules[0]) > 0) {
         $chained = array();
         foreach ($this->chainedRules as $item) {
             $multipliers = array();
             foreach ($item as $multiplier) {
                 $multipliers[] = $multiplier->getJavascript(false);
             }
             $chained[] = '[' . implode(",\n", $multipliers) . ']';
         }
         $js .= ",\n\t [" . implode(",\n", $chained) . "]";
     }
     return $js . ')';
 }
コード例 #5
0
ファイル: Rule.php プロジェクト: restiaka/Guinn-App-Gen
 /**
  * Returns the client-side representation of the Rule
  *
  * The Javascript object returned contains the following fields:
  *  - callback: {@see getJavascriptCallback()}
  *  - elementId: element ID to set error for if validation fails
  *  - errorMessage: error message to set if validation fails
  *  - chained: chained rules, array of arrays like in $chainedRules property
  *
  * @return   string
  * @throws   HTML_QuickForm2_Exception   if Rule or its chained Rules can only
  *                                       be run server-side
  */
 public function getJavascript()
 {
     HTML_QuickForm2_Loader::loadClass('HTML_QuickForm2_JavascriptBuilder');
     $js = "{\n\tcallback: " . $this->getJavascriptCallback() . ",\n" . "\towner: '" . $this->owner->getId() . "',\n" . "\tmessage: " . HTML_QuickForm2_JavascriptBuilder::encode($this->getMessage());
     if (count($this->chainedRules) > 1 || count($this->chainedRules[0]) > 0) {
         $chained = array();
         foreach ($this->chainedRules as $item) {
             $multipliers = array();
             foreach ($item as $multiplier) {
                 $multipliers[] = $multiplier->getJavascript();
             }
             $chained[] = '[' . implode(",\n", $multipliers) . ']';
         }
         $js .= ",\n\tchained: [" . implode(",\n", $chained) . "]";
     }
     return $js . "\n}";
 }
コード例 #6
0
 protected function getJavascriptCallback()
 {
     HTML_QuickForm2_Loader::loadClass('HTML_QuickForm2_JavascriptBuilder');
     $config = $this->getConfig();
     $operand1 = $this->owner->getJavascriptValue();
     $operand2 = $config['operand'] instanceof HTML_QuickForm2_Node ? $config['operand']->getJavascriptValue() : HTML_QuickForm2_JavascriptBuilder::encode($config['operand']);
     if (!in_array($config['operator'], array('===', '!=='))) {
         $check = "Number({$operand1}) {$config['operator']} Number({$operand2})";
     } else {
         $check = "String({$operand1}) {$config['operator']} String({$operand2})";
     }
     return "function () { return {$check}; }";
 }
コード例 #7
0
 /**
  * Generates Javascript code to initialize repeat behaviour
  *
  * @param HTML_QuickForm2_Container_Repeat_JavascriptBuilder $evalBuilder
  *        Javascript builder returning JS string literals
  *
  * @return string javascript
  */
 private function _generateInitScript(HTML_QuickForm2_Container_Repeat_JavascriptBuilder $evalBuilder)
 {
     $myId = HTML_QuickForm2_JavascriptBuilder::encode($this->getId());
     $protoId = HTML_QuickForm2_JavascriptBuilder::encode($this->getPrototype()->getId());
     $triggers = array();
     /* @var $child HTML_QuickForm2_Node */
     foreach ($this->getRecursiveIterator() as $child) {
         $triggers[] = $child->getId();
     }
     $triggers = HTML_QuickForm2_JavascriptBuilder::encode($triggers);
     list($rules, $scripts) = $evalBuilder->getFormJavascriptAsStrings();
     return "new qf.elements.Repeat(document.getElementById({$myId}), {$protoId}, " . "{$triggers},\n{$rules},\n{$scripts}\n);";
 }