PageRenderTime 33ms CodeModel.GetById 29ms RepoModel.GetById 0ms app.codeStats 1ms

/testapp/modules/jelix_tests/tests/jforms.htmlbuilder.html_cli.php

https://bitbucket.org/jelix/jelix-1.2.x
PHP | 1557 lines | 1293 code | 253 blank | 11 comment | 0 complexity | b6887d47598e772e03fc3353f54a8ac4 MD5 | raw file
Possible License(s): LGPL-2.1, BSD-3-Clause, JSON, GPL-3.0, GPL-2.0
  1. <?php
  2. /**
  3. * @package testapp
  4. * @subpackage unittest module
  5. * @author Laurent Jouanneau
  6. * @contributor Dominique Papin, Julien Issler
  7. * @copyright 2007-2008 Laurent Jouanneau
  8. * @copyright 2008 Dominique Papin
  9. * @copyright 2008-2010 Julien Issler
  10. * @link http://www.jelix.org
  11. * @licence GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html
  12. */
  13. require_once(JELIX_LIB_PATH.'forms/jFormsBase.class.php');
  14. require_once(JELIX_LIB_PATH.'forms/jFormsBuilderBase.class.php');
  15. include_once(JELIX_LIB_PATH.'forms/jFormsBuilderHtml.class.php');
  16. require_once(JELIX_LIB_PATH.'forms/jFormsDataContainer.class.php');
  17. require_once(JELIX_LIB_PATH.'plugins/jforms/html/html.jformsbuilder.php');
  18. class testHMLForm extends jFormsBase {
  19. }
  20. class testJFormsHtmlBuilder extends htmlJformsBuilder {
  21. function getJsContent() { $js= $this->jsContent; $this->jsContent = '';return $js;}
  22. function clearJs() { $this->jsContent = ''; }
  23. function getLastJsContent() { $js= $this->lastJsContent; $this->lastJsContent = '';return $js;}
  24. }
  25. class UTjformsHTMLBuilder extends jUnitTestCaseDb {
  26. protected $form;
  27. protected $container;
  28. protected $builder;
  29. function testStart() {
  30. $this->container = new jFormsDataContainer('formtest','0');
  31. $this->form = new testHMLForm('formtest', $this->container, true );
  32. $this->form->securityLevel = 0;
  33. $this->builder = new testJFormsHtmlBuilder($this->form);
  34. }
  35. function testOutputHeader(){
  36. $this->builder->setAction('jelix_tests~urlsig:url1',array());
  37. ob_start();
  38. $this->builder->outputHeader(array('method'=>'post'));
  39. $out = ob_get_clean();
  40. $result ='<form action="'.$GLOBALS['gJConfig']->urlengine['basePath'].'index.php" method="post" id="'.$this->builder->getName().'"><script type="text/javascript">
  41. //<![CDATA[
  42. jFormsJQ.selectFillUrl=\''.$GLOBALS['gJConfig']->urlengine['basePath'].'index.php?module=jelix&action=jforms:getListData\';
  43. jFormsJQ.config = {locale:\''.$GLOBALS['gJConfig']->locale.'\',basePath:\''.$GLOBALS['gJConfig']->urlengine['basePath'].'\',jqueryPath:\''.$GLOBALS['gJConfig']->urlengine['jqueryPath'].'\',jelixWWWPath:\''.$GLOBALS['gJConfig']->urlengine['jelixWWWPath'].'\'};
  44. jFormsJQ.tForm = new jFormsJQForm(\'jforms_formtest\',\'formtest\',\'0\');
  45. jFormsJQ.tForm.setErrorDecorator(new jFormsJQErrorDecoratorHtml());
  46. jFormsJQ.declareForm(jFormsJQ.tForm);
  47. //]]>
  48. </script><div class="jforms-hiddens"><input type="hidden" name="module" value="jelix_tests"/>
  49. <input type="hidden" name="action" value="urlsig:url1"/>
  50. </div>';
  51. $this->assertEqualOrDiff($result, $out);
  52. $this->assertEqualOrDiff('', $this->builder->getJsContent());
  53. $this->form->securityLevel = 1;
  54. $this->builder->setAction('jelix_tests~urlsig:url1',array('foo'=>'b>ar'));
  55. ob_start();
  56. $this->builder->outputHeader(array('method'=>'get'));
  57. $out = ob_get_clean();
  58. $result ='<form action="'.$GLOBALS['gJConfig']->urlengine['basePath'].'index.php" method="get" id="'.$this->builder->getName().'"><script type="text/javascript">
  59. //<![CDATA[
  60. jFormsJQ.selectFillUrl=\''.$GLOBALS['gJConfig']->urlengine['basePath'].'index.php?module=jelix&action=jforms:getListData\';
  61. jFormsJQ.config = {locale:\''.$GLOBALS['gJConfig']->locale.'\',basePath:\''.$GLOBALS['gJConfig']->urlengine['basePath'].'\',jqueryPath:\''.$GLOBALS['gJConfig']->urlengine['jqueryPath'].'\',jelixWWWPath:\''.$GLOBALS['gJConfig']->urlengine['jelixWWWPath'].'\'};
  62. jFormsJQ.tForm = new jFormsJQForm(\'jforms_formtest1\',\'formtest\',\'0\');
  63. jFormsJQ.tForm.setErrorDecorator(new jFormsJQErrorDecoratorHtml());
  64. jFormsJQ.declareForm(jFormsJQ.tForm);
  65. //]]>
  66. </script><div class="jforms-hiddens"><input type="hidden" name="foo" value="b&gt;ar"/>
  67. <input type="hidden" name="module" value="jelix_tests"/>
  68. <input type="hidden" name="action" value="urlsig:url1"/>
  69. <input type="hidden" name="__JFORMS_TOKEN__" value="'.$this->container->token.'"/>
  70. </div>';
  71. $this->assertEqualOrDiff($result, $out);
  72. $this->formname = $this->builder->getName();
  73. $this->assertEqualOrDiff('', $this->builder->getJsContent());
  74. $this->form->securityLevel = 0;
  75. }
  76. function testOutputFooter(){
  77. ob_start();
  78. $this->builder->outputFooter();
  79. $out = ob_get_clean();
  80. $this->assertEqualOrDiff('<script type="text/javascript">
  81. //<![CDATA[
  82. (function(){var c, c2;
  83. })();
  84. //]]>
  85. </script></form>', $out);
  86. }
  87. function testOutputInput(){
  88. $ctrl= new jFormsControlinput('input1');
  89. $ctrl->datatype= new jDatatypeString();
  90. $ctrl->label='Votre nom';
  91. $this->form->addControl($ctrl);
  92. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  93. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_input1" id="'.$this->formname.'_input1_label">Votre nom</label>'."\n", $out);
  94. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  95. $this->assertEqualOrDiff('<input name="input1" id="'.$this->formname.'_input1" class="jforms-ctrl-input" value="" type="text"/>'."\n", $out);
  96. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'input1\', \'Votre nom\');
  97. c.errInvalid=\'"Votre nom" field is invalid\';
  98. jFormsJQ.tForm.addControl(c);
  99. ', $this->builder->getJsContent());
  100. $this->form->setData('input1','toto');
  101. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  102. $this->assertEqualOrDiff('<input name="input1" id="'.$this->formname.'_input1" class="jforms-ctrl-input" value="toto" type="text"/>'."\n", $out);
  103. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'input1\', \'Votre nom\');
  104. c.errInvalid=\'"Votre nom" field is invalid\';
  105. jFormsJQ.tForm.addControl(c);
  106. ', $this->builder->getJsContent());
  107. $this->form->setData('input1','toto');
  108. ob_start();$this->builder->outputControl($ctrl, array('class'=>'foo', 'onclick'=>"alert('bla')"));$out = ob_get_clean();
  109. $this->assertEqualOrDiff('<input class="foo jforms-ctrl-input" onclick="alert(\'bla\')" name="input1" id="'.$this->formname.'_input1" value="toto" type="text"/>'."\n", $out);
  110. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'input1\', \'Votre nom\');
  111. c.errInvalid=\'"Votre nom" field is invalid\';
  112. jFormsJQ.tForm.addControl(c);
  113. ', $this->builder->getJsContent());
  114. $ctrl->defaultValue='laurent';
  115. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  116. $this->assertEqualOrDiff('<input name="input1" id="'.$this->formname.'_input1" class="jforms-ctrl-input" value="toto" type="text"/>'."\n", $out);
  117. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'input1\', \'Votre nom\');
  118. c.errInvalid=\'"Votre nom" field is invalid\';
  119. jFormsJQ.tForm.addControl(c);
  120. ', $this->builder->getJsContent());
  121. $this->form->removeControl($ctrl->ref);
  122. $this->form->addControl($ctrl);
  123. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  124. $this->assertEqualOrDiff('<input name="input1" id="'.$this->formname.'_input1" class="jforms-ctrl-input" value="laurent" type="text"/>'."\n", $out);
  125. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'input1\', \'Votre nom\');
  126. c.errInvalid=\'"Votre nom" field is invalid\';
  127. jFormsJQ.tForm.addControl(c);
  128. ', $this->builder->getJsContent());
  129. $ctrl->required=true;
  130. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  131. $this->assertEqualOrDiff('<input name="input1" id="'.$this->formname.'_input1" class="jforms-ctrl-input jforms-required" value="laurent" type="text"/>'."\n", $out);
  132. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'input1\', \'Votre nom\');
  133. c.required = true;
  134. c.errRequired=\'"Votre nom" field is required\';
  135. c.errInvalid=\'"Votre nom" field is invalid\';
  136. jFormsJQ.tForm.addControl(c);
  137. ', $this->builder->getJsContent());
  138. $ctrl->setReadOnly(true);
  139. $ctrl->required=false;
  140. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  141. $this->assertEqualOrDiff('<input name="input1" id="'.$this->formname.'_input1" readonly="readonly" class="jforms-ctrl-input jforms-readonly" value="laurent" type="text"/>'."\n", $out);
  142. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'input1\', \'Votre nom\');
  143. c.errInvalid=\'"Votre nom" field is invalid\';
  144. jFormsJQ.tForm.addControl(c);
  145. ', $this->builder->getJsContent());
  146. $ctrl->setReadOnly(false);
  147. $ctrl->help='some help';
  148. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  149. $this->assertEqualOrDiff('<input name="input1" id="'.$this->formname.'_input1" class="jforms-ctrl-input" value="laurent" type="text"/>'."\n".'<span class="jforms-help" id="jforms_formtest1_input1-help">&nbsp;<span>some help</span></span>', $out);
  150. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'input1\', \'Votre nom\');
  151. c.errInvalid=\'"Votre nom" field is invalid\';
  152. jFormsJQ.tForm.addControl(c);
  153. ', $this->builder->getJsContent());
  154. $ctrl->help="some \nhelp with ' and\nline break.";
  155. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  156. $this->assertEqualOrDiff('<input name="input1" id="'.$this->formname.'_input1" class="jforms-ctrl-input" value="laurent" type="text"/>'."\n".'<span class="jforms-help" id="jforms_formtest1_input1-help">'."&nbsp;<span>some \nhelp with ' and\nline break.</span>".'</span>', $out);
  157. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'input1\', \'Votre nom\');
  158. c.errInvalid=\'"Votre nom" field is invalid\';
  159. jFormsJQ.tForm.addControl(c);
  160. ', $this->builder->getJsContent());
  161. $ctrl->hint='ceci est un tooltip';
  162. $ctrl->help='some help';
  163. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  164. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_input1" id="'.$this->formname.'_input1_label" title="ceci est un tooltip">Votre nom</label>'."\n", $out);
  165. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  166. $this->assertEqualOrDiff('<input name="input1" id="'.$this->formname.'_input1" title="ceci est un tooltip" class="jforms-ctrl-input" value="laurent" type="text"/>'."\n".'<span class="jforms-help" id="jforms_formtest1_input1-help">&nbsp;<span>some help</span></span>', $out);
  167. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'input1\', \'Votre nom\');
  168. c.errInvalid=\'"Votre nom" field is invalid\';
  169. jFormsJQ.tForm.addControl(c);
  170. ', $this->builder->getJsContent());
  171. $ctrl->help='';
  172. $ctrl->hint='';
  173. $ctrl->datatype->addFacet('maxLength',5);
  174. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  175. $this->assertEqualOrDiff('<input name="input1" id="'.$this->formname.'_input1" class="jforms-ctrl-input" maxlength="5" value="laurent" type="text"/>'."\n", $out);
  176. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'input1\', \'Votre nom\');
  177. c.maxLength = \'5\';
  178. c.errInvalid=\'"Votre nom" field is invalid\';
  179. jFormsJQ.tForm.addControl(c);
  180. ', $this->builder->getJsContent());
  181. $ctrl->datatype->addFacet('pattern','/^[a-f]{5}$/');
  182. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  183. $this->assertEqualOrDiff('<input name="input1" id="'.$this->formname.'_input1" class="jforms-ctrl-input" maxlength="5" value="laurent" type="text"/>'."\n", $out);
  184. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'input1\', \'Votre nom\');
  185. c.maxLength = \'5\';
  186. c.regexp = /^[a-f]{5}$/;
  187. c.errInvalid=\'"Votre nom" field is invalid\';
  188. jFormsJQ.tForm.addControl(c);
  189. ', $this->builder->getJsContent());
  190. }
  191. function testOutputCheckbox(){
  192. $ctrl= new jFormsControlCheckbox('chk1');
  193. $ctrl->datatype= new jDatatypeString();
  194. $ctrl->label='Une option';
  195. $this->form->addControl($ctrl);
  196. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  197. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_chk1" id="'.$this->formname.'_chk1_label">Une option</label>'."\n", $out);
  198. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  199. $this->assertEqualOrDiff('<input name="chk1" id="'.$this->formname.'_chk1" class="jforms-ctrl-checkbox" value="1" type="checkbox"/>'."\n", $out);
  200. $this->assertEqualOrDiff('c = new jFormsJQControlBoolean(\'chk1\', \'Une option\');
  201. c.errInvalid=\'"Une option" field is invalid\';
  202. jFormsJQ.tForm.addControl(c);
  203. ', $this->builder->getJsContent());
  204. $this->form->setData('chk1','1');
  205. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  206. $this->assertEqualOrDiff('<input name="chk1" id="'.$this->formname.'_chk1" class="jforms-ctrl-checkbox" checked="checked" value="1" type="checkbox"/>'."\n", $out);
  207. $this->assertEqualOrDiff('c = new jFormsJQControlBoolean(\'chk1\', \'Une option\');
  208. c.errInvalid=\'"Une option" field is invalid\';
  209. jFormsJQ.tForm.addControl(c);
  210. ', $this->builder->getJsContent());
  211. $ctrl= new jFormsControlCheckbox('chk2');
  212. $ctrl->datatype= new jDatatypeString();
  213. $ctrl->label='Une option';
  214. $this->form->addControl($ctrl);
  215. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  216. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_chk2" id="'.$this->formname.'_chk2_label">Une option</label>'."\n", $out);
  217. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  218. $this->assertEqualOrDiff('<input name="chk2" id="'.$this->formname.'_chk2" class="jforms-ctrl-checkbox" value="1" type="checkbox"/>'."\n", $out);
  219. $this->assertEqualOrDiff('c = new jFormsJQControlBoolean(\'chk2\', \'Une option\');
  220. c.errInvalid=\'"Une option" field is invalid\';
  221. jFormsJQ.tForm.addControl(c);
  222. ', $this->builder->getJsContent());
  223. $ctrl->defaultValue='1';
  224. $this->form->removeControl($ctrl->ref);
  225. $this->form->addControl($ctrl);
  226. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  227. $this->assertEqualOrDiff('<input name="chk2" id="'.$this->formname.'_chk2" class="jforms-ctrl-checkbox" checked="checked" value="1" type="checkbox"/>'."\n", $out);
  228. $this->assertEqualOrDiff('c = new jFormsJQControlBoolean(\'chk2\', \'Une option\');
  229. c.errInvalid=\'"Une option" field is invalid\';
  230. jFormsJQ.tForm.addControl(c);
  231. ', $this->builder->getJsContent());
  232. $this->form->setData('chk2', '0');
  233. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  234. $this->assertEqualOrDiff('<input name="chk2" id="'.$this->formname.'_chk2" class="jforms-ctrl-checkbox" value="1" type="checkbox"/>'."\n", $out);
  235. $this->assertEqualOrDiff('c = new jFormsJQControlBoolean(\'chk2\', \'Une option\');
  236. c.errInvalid=\'"Une option" field is invalid\';
  237. jFormsJQ.tForm.addControl(c);
  238. ', $this->builder->getJsContent());
  239. $ctrl->setReadOnly(true);
  240. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  241. $this->assertEqualOrDiff('<input name="chk2" id="'.$this->formname.'_chk2" readonly="readonly" class="jforms-ctrl-checkbox jforms-readonly" value="1" type="checkbox"/>'."\n", $out);
  242. $this->assertEqualOrDiff('c = new jFormsJQControlBoolean(\'chk2\', \'Une option\');
  243. c.errInvalid=\'"Une option" field is invalid\';
  244. jFormsJQ.tForm.addControl(c);
  245. ', $this->builder->getJsContent());
  246. $this->form->setData('chk2', '1');
  247. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  248. $this->assertEqualOrDiff('<input name="chk2" id="'.$this->formname.'_chk2" readonly="readonly" class="jforms-ctrl-checkbox jforms-readonly" checked="checked" value="1" type="checkbox"/>'."\n", $out);
  249. $this->assertEqualOrDiff('c = new jFormsJQControlBoolean(\'chk2\', \'Une option\');
  250. c.errInvalid=\'"Une option" field is invalid\';
  251. jFormsJQ.tForm.addControl(c);
  252. ', $this->builder->getJsContent());
  253. $ctrl->hint='ceci est un tooltip';
  254. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  255. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_chk2" id="'.$this->formname.'_chk2_label" title="ceci est un tooltip">Une option</label>'."\n", $out);
  256. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  257. $this->assertEqualOrDiff('<input name="chk2" id="'.$this->formname.'_chk2" readonly="readonly" title="ceci est un tooltip" class="jforms-ctrl-checkbox jforms-readonly" checked="checked" value="1" type="checkbox"/>'."\n", $out);
  258. $this->assertEqualOrDiff('c = new jFormsJQControlBoolean(\'chk2\', \'Une option\');
  259. c.errInvalid=\'"Une option" field is invalid\';
  260. jFormsJQ.tForm.addControl(c);
  261. ', $this->builder->getJsContent());
  262. }
  263. function testOutputCheckboxes(){
  264. $ctrl= new jFormsControlcheckboxes('choixsimple');
  265. $ctrl->datatype= new jDatatypeString();
  266. $ctrl->label='Vos choix';
  267. $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findAll','name','id');
  268. $this->form->addControl($ctrl);
  269. $records = array(
  270. array('id'=>'10', 'name'=>'foo', 'price'=>'12'),
  271. array('id'=>'11', 'name'=>'bar', 'price'=>'54'),
  272. array('id'=>'23', 'name'=>'baz', 'price'=>'97'),
  273. );
  274. $this->insertRecordsIntoTable('product_test', array('id','name','price'), $records, true);
  275. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  276. $this->assertEqualOrDiff('<span class="jforms-label" id="'.$this->formname.'_choixsimple_label">Vos choix</span>'."\n", $out);
  277. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  278. $result='<span class="jforms-chkbox jforms-ctl-choixsimple"><input type="checkbox" name="choixsimple[]" id="'.$this->formname.'_choixsimple_0" class="jforms-ctrl-checkboxes" value="10"/><label for="'.$this->formname.'_choixsimple_0">foo</label></span>'."\n";
  279. $result.='<span class="jforms-chkbox jforms-ctl-choixsimple"><input type="checkbox" name="choixsimple[]" id="'.$this->formname.'_choixsimple_1" class="jforms-ctrl-checkboxes" value="11"/><label for="'.$this->formname.'_choixsimple_1">bar</label></span>'."\n";
  280. $result.='<span class="jforms-chkbox jforms-ctl-choixsimple"><input type="checkbox" name="choixsimple[]" id="'.$this->formname.'_choixsimple_2" class="jforms-ctrl-checkboxes" value="23"/><label for="'.$this->formname.'_choixsimple_2">baz</label></span>'."\n\n";
  281. $this->assertEqualOrDiff($result, $out);
  282. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'choixsimple[]\', \'Vos choix\');
  283. c.errInvalid=\'"Vos choix" field is invalid\';
  284. jFormsJQ.tForm.addControl(c);
  285. ', $this->builder->getJsContent());
  286. $this->form->setData('choixsimple',11);
  287. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  288. $result='<span class="jforms-chkbox jforms-ctl-choixsimple"><input type="checkbox" name="choixsimple[]" id="'.$this->formname.'_choixsimple_0" class="jforms-ctrl-checkboxes" value="10"/><label for="'.$this->formname.'_choixsimple_0">foo</label></span>'."\n";
  289. $result.='<span class="jforms-chkbox jforms-ctl-choixsimple"><input type="checkbox" name="choixsimple[]" id="'.$this->formname.'_choixsimple_1" class="jforms-ctrl-checkboxes" value="11" checked="checked"/><label for="'.$this->formname.'_choixsimple_1">bar</label></span>'."\n";
  290. $result.='<span class="jforms-chkbox jforms-ctl-choixsimple"><input type="checkbox" name="choixsimple[]" id="'.$this->formname.'_choixsimple_2" class="jforms-ctrl-checkboxes" value="23"/><label for="'.$this->formname.'_choixsimple_2">baz</label></span>'."\n\n";
  291. $this->assertEqualOrDiff($result, $out);
  292. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'choixsimple[]\', \'Vos choix\');
  293. c.errInvalid=\'"Vos choix" field is invalid\';
  294. jFormsJQ.tForm.addControl(c);
  295. ', $this->builder->getJsContent());
  296. $ctrl->datasource= new jFormsStaticDatasource();
  297. $ctrl->datasource->setGroupBy(true);
  298. $ctrl->datasource->data = array(
  299. ''=>array('10'=>'foo'),
  300. 'toto'=>array('11'=>'bar',
  301. '23'=>'baz',)
  302. );
  303. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  304. $result='<span class="jforms-chkbox jforms-ctl-choixsimple"><input type="checkbox" name="choixsimple[]" id="'.$this->formname.'_choixsimple_0" class="jforms-ctrl-checkboxes" value="10"/><label for="'.$this->formname.'_choixsimple_0">foo</label></span>'."\n";
  305. $result.="<fieldset><legend>toto</legend>\n";
  306. $result.='<span class="jforms-chkbox jforms-ctl-choixsimple"><input type="checkbox" name="choixsimple[]" id="'.$this->formname.'_choixsimple_1" class="jforms-ctrl-checkboxes" value="11" checked="checked"/><label for="'.$this->formname.'_choixsimple_1">bar</label></span>'."\n";
  307. $result.='<span class="jforms-chkbox jforms-ctl-choixsimple"><input type="checkbox" name="choixsimple[]" id="'.$this->formname.'_choixsimple_2" class="jforms-ctrl-checkboxes" value="23"/><label for="'.$this->formname.'_choixsimple_2">baz</label></span>'."\n";
  308. $result.="</fieldset>\n\n";
  309. $this->assertEqualOrDiff($result, $out);
  310. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'choixsimple[]\', \'Vos choix\');
  311. c.errInvalid=\'"Vos choix" field is invalid\';
  312. jFormsJQ.tForm.addControl(c);
  313. ', $this->builder->getJsContent());
  314. $ctrl= new jFormsControlcheckboxes('choixmultiple');
  315. $ctrl->datatype= new jDatatypeString();
  316. $ctrl->label='Vos choix';
  317. $ctrl->datasource= new jFormsStaticDatasource();
  318. $ctrl->datasource->data = array(
  319. '10'=>'foo',
  320. '11'=>'bar',
  321. '23'=>'baz',
  322. );
  323. $this->form->addControl($ctrl);
  324. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  325. $this->assertEqualOrDiff('<span class="jforms-label" id="'.$this->formname.'_choixmultiple_label">Vos choix</span>'."\n", $out);
  326. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  327. $result='<span class="jforms-chkbox jforms-ctl-choixmultiple"><input type="checkbox" name="choixmultiple[]" id="'.$this->formname.'_choixmultiple_0" class="jforms-ctrl-checkboxes" value="10"/><label for="'.$this->formname.'_choixmultiple_0">foo</label></span>'."\n";
  328. $result.='<span class="jforms-chkbox jforms-ctl-choixmultiple"><input type="checkbox" name="choixmultiple[]" id="'.$this->formname.'_choixmultiple_1" class="jforms-ctrl-checkboxes" value="11"/><label for="'.$this->formname.'_choixmultiple_1">bar</label></span>'."\n";
  329. $result.='<span class="jforms-chkbox jforms-ctl-choixmultiple"><input type="checkbox" name="choixmultiple[]" id="'.$this->formname.'_choixmultiple_2" class="jforms-ctrl-checkboxes" value="23"/><label for="'.$this->formname.'_choixmultiple_2">baz</label></span>'."\n\n";
  330. $this->assertEqualOrDiff($result, $out);
  331. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'choixmultiple[]\', \'Vos choix\');
  332. c.errInvalid=\'"Vos choix" field is invalid\';
  333. jFormsJQ.tForm.addControl(c);
  334. ', $this->builder->getJsContent());
  335. $this->form->setData('choixmultiple',11);
  336. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  337. $result='<span class="jforms-chkbox jforms-ctl-choixmultiple"><input type="checkbox" name="choixmultiple[]" id="'.$this->formname.'_choixmultiple_0" class="jforms-ctrl-checkboxes" value="10"/><label for="'.$this->formname.'_choixmultiple_0">foo</label></span>'."\n";
  338. $result.='<span class="jforms-chkbox jforms-ctl-choixmultiple"><input type="checkbox" name="choixmultiple[]" id="'.$this->formname.'_choixmultiple_1" class="jforms-ctrl-checkboxes" value="11" checked="checked"/><label for="'.$this->formname.'_choixmultiple_1">bar</label></span>'."\n";
  339. $result.='<span class="jforms-chkbox jforms-ctl-choixmultiple"><input type="checkbox" name="choixmultiple[]" id="'.$this->formname.'_choixmultiple_2" class="jforms-ctrl-checkboxes" value="23"/><label for="'.$this->formname.'_choixmultiple_2">baz</label></span>'."\n\n";
  340. $this->assertEqualOrDiff($result, $out);
  341. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'choixmultiple[]\', \'Vos choix\');
  342. c.errInvalid=\'"Vos choix" field is invalid\';
  343. jFormsJQ.tForm.addControl(c);
  344. ', $this->builder->getJsContent());
  345. $this->form->setData('choixmultiple',array(10,23));
  346. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  347. $result='<span class="jforms-chkbox jforms-ctl-choixmultiple"><input type="checkbox" name="choixmultiple[]" id="'.$this->formname.'_choixmultiple_0" class="jforms-ctrl-checkboxes" value="10" checked="checked"/><label for="'.$this->formname.'_choixmultiple_0">foo</label></span>'."\n";
  348. $result.='<span class="jforms-chkbox jforms-ctl-choixmultiple"><input type="checkbox" name="choixmultiple[]" id="'.$this->formname.'_choixmultiple_1" class="jforms-ctrl-checkboxes" value="11"/><label for="'.$this->formname.'_choixmultiple_1">bar</label></span>'."\n";
  349. $result.='<span class="jforms-chkbox jforms-ctl-choixmultiple"><input type="checkbox" name="choixmultiple[]" id="'.$this->formname.'_choixmultiple_2" class="jforms-ctrl-checkboxes" value="23" checked="checked"/><label for="'.$this->formname.'_choixmultiple_2">baz</label></span>'."\n\n";
  350. $this->assertEqualOrDiff($result, $out);
  351. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'choixmultiple[]\', \'Vos choix\');
  352. c.errInvalid=\'"Vos choix" field is invalid\';
  353. jFormsJQ.tForm.addControl(c);
  354. ', $this->builder->getJsContent());
  355. $ctrl->setReadOnly(true);
  356. $ctrl->hint='ceci est un tooltip';
  357. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  358. $this->assertEqualOrDiff('<span class="jforms-label" id="'.$this->formname.'_choixmultiple_label" title="ceci est un tooltip">Vos choix</span>'."\n", $out);
  359. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  360. $result='<span class="jforms-chkbox jforms-ctl-choixmultiple"><input type="checkbox" name="choixmultiple[]" id="'.$this->formname.'_choixmultiple_0" readonly="readonly" class="jforms-ctrl-checkboxes jforms-readonly" value="10" checked="checked"/><label for="'.$this->formname.'_choixmultiple_0">foo</label></span>'."\n";
  361. $result.='<span class="jforms-chkbox jforms-ctl-choixmultiple"><input type="checkbox" name="choixmultiple[]" id="'.$this->formname.'_choixmultiple_1" readonly="readonly" class="jforms-ctrl-checkboxes jforms-readonly" value="11"/><label for="'.$this->formname.'_choixmultiple_1">bar</label></span>'."\n";
  362. $result.='<span class="jforms-chkbox jforms-ctl-choixmultiple"><input type="checkbox" name="choixmultiple[]" id="'.$this->formname.'_choixmultiple_2" readonly="readonly" class="jforms-ctrl-checkboxes jforms-readonly" value="23" checked="checked"/><label for="'.$this->formname.'_choixmultiple_2">baz</label></span>'."\n\n";
  363. $this->assertEqualOrDiff($result, $out);
  364. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'choixmultiple[]\', \'Vos choix\');
  365. c.errInvalid=\'"Vos choix" field is invalid\';
  366. jFormsJQ.tForm.addControl(c);
  367. ', $this->builder->getJsContent());
  368. }
  369. function testOutputRadiobuttons(){
  370. $ctrl= new jFormsControlradiobuttons('rbchoixsimple');
  371. $ctrl->datatype= new jDatatypeString();
  372. $ctrl->label='Votre choix';
  373. $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findAll','name','id');
  374. $this->form->addControl($ctrl);
  375. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  376. $this->assertEqualOrDiff('<span class="jforms-label" id="'.$this->formname.'_rbchoixsimple_label">Votre choix</span>'."\n", $out);
  377. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  378. $result='<span class="jforms-radio jforms-ctl-rbchoixsimple"><input type="radio" name="rbchoixsimple" id="'.$this->formname.'_rbchoixsimple_0" class="jforms-ctrl-radiobuttons" value="10"/><label for="'.$this->formname.'_rbchoixsimple_0">foo</label></span>'."\n";
  379. $result.='<span class="jforms-radio jforms-ctl-rbchoixsimple"><input type="radio" name="rbchoixsimple" id="'.$this->formname.'_rbchoixsimple_1" class="jforms-ctrl-radiobuttons" value="11"/><label for="'.$this->formname.'_rbchoixsimple_1">bar</label></span>'."\n";
  380. $result.='<span class="jforms-radio jforms-ctl-rbchoixsimple"><input type="radio" name="rbchoixsimple" id="'.$this->formname.'_rbchoixsimple_2" class="jforms-ctrl-radiobuttons" value="23"/><label for="'.$this->formname.'_rbchoixsimple_2">baz</label></span>'."\n\n";
  381. $this->assertEqualOrDiff($result, $out);
  382. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'rbchoixsimple\', \'Votre choix\');
  383. c.errInvalid=\'"Votre choix" field is invalid\';
  384. jFormsJQ.tForm.addControl(c);
  385. ', $this->builder->getJsContent());
  386. $this->form->setData('rbchoixsimple',11);
  387. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  388. $result='<span class="jforms-radio jforms-ctl-rbchoixsimple"><input type="radio" name="rbchoixsimple" id="'.$this->formname.'_rbchoixsimple_0" class="jforms-ctrl-radiobuttons" value="10"/><label for="'.$this->formname.'_rbchoixsimple_0">foo</label></span>'."\n";
  389. $result.='<span class="jforms-radio jforms-ctl-rbchoixsimple"><input type="radio" name="rbchoixsimple" id="'.$this->formname.'_rbchoixsimple_1" class="jforms-ctrl-radiobuttons" value="11" checked="checked"/><label for="'.$this->formname.'_rbchoixsimple_1">bar</label></span>'."\n";
  390. $result.='<span class="jforms-radio jforms-ctl-rbchoixsimple"><input type="radio" name="rbchoixsimple" id="'.$this->formname.'_rbchoixsimple_2" class="jforms-ctrl-radiobuttons" value="23"/><label for="'.$this->formname.'_rbchoixsimple_2">baz</label></span>'."\n\n";
  391. $this->assertEqualOrDiff($result, $out);
  392. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'rbchoixsimple\', \'Votre choix\');
  393. c.errInvalid=\'"Votre choix" field is invalid\';
  394. jFormsJQ.tForm.addControl(c);
  395. ', $this->builder->getJsContent());
  396. $ctrl->datasource= new jFormsStaticDatasource();
  397. $ctrl->datasource->data = array(
  398. '10'=>'foo',
  399. '11'=>'bar',
  400. '23'=>'baz',
  401. );
  402. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  403. $result='<span class="jforms-radio jforms-ctl-rbchoixsimple"><input type="radio" name="rbchoixsimple" id="'.$this->formname.'_rbchoixsimple_0" class="jforms-ctrl-radiobuttons" value="10"/><label for="'.$this->formname.'_rbchoixsimple_0">foo</label></span>'."\n";
  404. $result.='<span class="jforms-radio jforms-ctl-rbchoixsimple"><input type="radio" name="rbchoixsimple" id="'.$this->formname.'_rbchoixsimple_1" class="jforms-ctrl-radiobuttons" value="11" checked="checked"/><label for="'.$this->formname.'_rbchoixsimple_1">bar</label></span>'."\n";
  405. $result.='<span class="jforms-radio jforms-ctl-rbchoixsimple"><input type="radio" name="rbchoixsimple" id="'.$this->formname.'_rbchoixsimple_2" class="jforms-ctrl-radiobuttons" value="23"/><label for="'.$this->formname.'_rbchoixsimple_2">baz</label></span>'."\n\n";
  406. $this->assertEqualOrDiff($result, $out);
  407. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'rbchoixsimple\', \'Votre choix\');
  408. c.errInvalid=\'"Votre choix" field is invalid\';
  409. jFormsJQ.tForm.addControl(c);
  410. ', $this->builder->getJsContent());
  411. $this->form->setData('rbchoixsimple',23);
  412. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  413. $result='<span class="jforms-radio jforms-ctl-rbchoixsimple"><input type="radio" name="rbchoixsimple" id="'.$this->formname.'_rbchoixsimple_0" class="jforms-ctrl-radiobuttons" value="10"/><label for="'.$this->formname.'_rbchoixsimple_0">foo</label></span>'."\n";
  414. $result.='<span class="jforms-radio jforms-ctl-rbchoixsimple"><input type="radio" name="rbchoixsimple" id="'.$this->formname.'_rbchoixsimple_1" class="jforms-ctrl-radiobuttons" value="11"/><label for="'.$this->formname.'_rbchoixsimple_1">bar</label></span>'."\n";
  415. $result.='<span class="jforms-radio jforms-ctl-rbchoixsimple"><input type="radio" name="rbchoixsimple" id="'.$this->formname.'_rbchoixsimple_2" class="jforms-ctrl-radiobuttons" value="23" checked="checked"/><label for="'.$this->formname.'_rbchoixsimple_2">baz</label></span>'."\n\n";
  416. $this->assertEqualOrDiff($result, $out);
  417. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'rbchoixsimple\', \'Votre choix\');
  418. c.errInvalid=\'"Votre choix" field is invalid\';
  419. jFormsJQ.tForm.addControl(c);
  420. ', $this->builder->getJsContent());
  421. $ctrl->setReadOnly(true);
  422. $ctrl->hint='ceci est un tooltip';
  423. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  424. $this->assertEqualOrDiff('<span class="jforms-label" id="'.$this->formname.'_rbchoixsimple_label" title="ceci est un tooltip">Votre choix</span>'."\n", $out);
  425. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  426. $result='<span class="jforms-radio jforms-ctl-rbchoixsimple"><input type="radio" name="rbchoixsimple" id="'.$this->formname.'_rbchoixsimple_0" readonly="readonly" class="jforms-ctrl-radiobuttons jforms-readonly" value="10"/><label for="'.$this->formname.'_rbchoixsimple_0">foo</label></span>'."\n";
  427. $result.='<span class="jforms-radio jforms-ctl-rbchoixsimple"><input type="radio" name="rbchoixsimple" id="'.$this->formname.'_rbchoixsimple_1" readonly="readonly" class="jforms-ctrl-radiobuttons jforms-readonly" value="11"/><label for="'.$this->formname.'_rbchoixsimple_1">bar</label></span>'."\n";
  428. $result.='<span class="jforms-radio jforms-ctl-rbchoixsimple"><input type="radio" name="rbchoixsimple" id="'.$this->formname.'_rbchoixsimple_2" readonly="readonly" class="jforms-ctrl-radiobuttons jforms-readonly" value="23" checked="checked"/><label for="'.$this->formname.'_rbchoixsimple_2">baz</label></span>'."\n\n";
  429. $this->assertEqualOrDiff($result, $out);
  430. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'rbchoixsimple\', \'Votre choix\');
  431. c.errInvalid=\'"Votre choix" field is invalid\';
  432. jFormsJQ.tForm.addControl(c);
  433. ', $this->builder->getJsContent());
  434. $this->builder->clearJs();
  435. $ctrl->datasource = new jFormsStaticDatasource();
  436. $ctrl->datasource->data = array('1'=>'Yes','0'=>'No');
  437. $this->form->setReadOnly('rbchoixsimple',false);
  438. $this->form->setData('rbchoixsimple',null);
  439. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  440. $result='<span class="jforms-radio jforms-ctl-rbchoixsimple"><input type="radio" name="rbchoixsimple" id="'.$this->formname.'_rbchoixsimple_0" class="jforms-ctrl-radiobuttons" value="1"/><label for="'.$this->formname.'_rbchoixsimple_0">Yes</label></span>'."\n";
  441. $result.='<span class="jforms-radio jforms-ctl-rbchoixsimple"><input type="radio" name="rbchoixsimple" id="'.$this->formname.'_rbchoixsimple_1" class="jforms-ctrl-radiobuttons" value="0"/><label for="'.$this->formname.'_rbchoixsimple_1">No</label></span>'."\n\n";
  442. $this->assertEqualOrDiff($result, $out);
  443. $this->form->setData('rbchoixsimple',0);
  444. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  445. $result='<span class="jforms-radio jforms-ctl-rbchoixsimple"><input type="radio" name="rbchoixsimple" id="'.$this->formname.'_rbchoixsimple_0" class="jforms-ctrl-radiobuttons" value="1"/><label for="'.$this->formname.'_rbchoixsimple_0">Yes</label></span>'."\n";
  446. $result.='<span class="jforms-radio jforms-ctl-rbchoixsimple"><input type="radio" name="rbchoixsimple" id="'.$this->formname.'_rbchoixsimple_1" class="jforms-ctrl-radiobuttons" value="0" checked="checked"/><label for="'.$this->formname.'_rbchoixsimple_1">No</label></span>'."\n\n";
  447. $this->assertEqualOrDiff($result, $out);
  448. $this->builder->clearJs();
  449. }
  450. function testOutputMenulist(){
  451. $ctrl= new jFormsControlmenulist('menulist1');
  452. $ctrl->datatype= new jDatatypeString();
  453. $ctrl->label='Votre choix';
  454. $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findAll','name','id');
  455. $this->form->addControl($ctrl);
  456. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  457. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_menulist1" id="'.$this->formname.'_menulist1_label">Votre choix</label>'."\n", $out);
  458. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  459. $result='<select name="menulist1" id="'.$this->formname.'_menulist1" class="jforms-ctrl-menulist" size="1">'."\n";
  460. $result.='<option value="" selected="selected"></option>'."\n";
  461. $result.='<option value="10">foo</option>'."\n";
  462. $result.='<option value="11">bar</option>'."\n";
  463. $result.='<option value="23">baz</option>'."\n";
  464. $result.='</select>'."\n";
  465. $this->assertEqualOrDiff($result, $out);
  466. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'menulist1\', \'Votre choix\');
  467. c.errInvalid=\'"Votre choix" field is invalid\';
  468. jFormsJQ.tForm.addControl(c);
  469. ', $this->builder->getJsContent());
  470. $this->form->setData('menulist1',11);
  471. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  472. $result='<select name="menulist1" id="'.$this->formname.'_menulist1" class="jforms-ctrl-menulist" size="1">'."\n";
  473. $result.='<option value=""></option>'."\n";
  474. $result.='<option value="10">foo</option>'."\n";
  475. $result.='<option value="11" selected="selected">bar</option>'."\n";
  476. $result.='<option value="23">baz</option>'."\n";
  477. $result.='</select>'."\n";
  478. $this->assertEqualOrDiff($result, $out);
  479. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'menulist1\', \'Votre choix\');
  480. c.errInvalid=\'"Votre choix" field is invalid\';
  481. jFormsJQ.tForm.addControl(c);
  482. ', $this->builder->getJsContent());
  483. $ctrl->datasource= new jFormsStaticDatasource();
  484. $ctrl->datasource->data = array(
  485. '10'=>'foo',
  486. '11'=>'bar',
  487. '23'=>'baz',
  488. );
  489. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  490. $this->assertEqualOrDiff($result, $out);
  491. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'menulist1\', \'Votre choix\');
  492. c.errInvalid=\'"Votre choix" field is invalid\';
  493. jFormsJQ.tForm.addControl(c);
  494. ', $this->builder->getJsContent());
  495. $ctrl->datasource->setGroupBy(true);
  496. $ctrl->datasource->data = array(
  497. 'you'=>array(
  498. '10'=>'foo',
  499. '11'=>'bar',),
  500. ''=>array(
  501. '23'=>'baz',),
  502. );
  503. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  504. $result='<select name="menulist1" id="'.$this->formname.'_menulist1" class="jforms-ctrl-menulist" size="1">'."\n";
  505. $result.='<option value=""></option>'."\n";
  506. $result.='<option value="23">baz</option>'."\n<optgroup label=\"you\">";
  507. $result.='<option value="10">foo</option>'."\n";
  508. $result.='<option value="11" selected="selected">bar</option>'."\n</optgroup>";
  509. $result.='</select>'."\n";
  510. $this->assertEqualOrDiff($result, $out);
  511. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'menulist1\', \'Votre choix\');
  512. c.errInvalid=\'"Votre choix" field is invalid\';
  513. jFormsJQ.tForm.addControl(c);
  514. ', $this->builder->getJsContent());
  515. $ctrl->datasource->setGroupBy(false);
  516. $ctrl->datasource->data = array(
  517. '10'=>'foo',
  518. '11'=>'bar',
  519. '23'=>'baz',
  520. );
  521. $ctrl->setReadOnly(true);
  522. $ctrl->hint='ceci est un tooltip';
  523. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  524. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_menulist1" id="'.$this->formname.'_menulist1_label" title="ceci est un tooltip">Votre choix</label>'."\n", $out);
  525. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  526. $result='<select name="menulist1" id="'.$this->formname.'_menulist1" title="ceci est un tooltip" class="jforms-ctrl-menulist jforms-readonly" size="1">'."\n";
  527. $result.='<option value=""></option>'."\n";
  528. $result.='<option value="10">foo</option>'."\n";
  529. $result.='<option value="11" selected="selected">bar</option>'."\n";
  530. $result.='<option value="23">baz</option>'."\n";
  531. $result.='</select>'."\n";
  532. $this->assertEqualOrDiff($result, $out);
  533. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'menulist1\', \'Votre choix\');
  534. c.errInvalid=\'"Votre choix" field is invalid\';
  535. jFormsJQ.tForm.addControl(c);
  536. ', $this->builder->getJsContent());
  537. $ctrl->required = true;
  538. $this->form->setData('menulist1',"23");
  539. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  540. $result='<select name="menulist1" id="'.$this->formname.'_menulist1" title="ceci est un tooltip" class="jforms-ctrl-menulist jforms-readonly" size="1">'."\n";
  541. $result.='<option value="10">foo</option>'."\n";
  542. $result.='<option value="11">bar</option>'."\n";
  543. $result.='<option value="23" selected="selected">baz</option>'."\n";
  544. $result.='</select>'."\n";
  545. $this->assertEqualOrDiff($result, $out);
  546. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'menulist1\', \'Votre choix\');
  547. c.required = true;
  548. c.errRequired=\'"Votre choix" field is required\';
  549. c.errInvalid=\'"Votre choix" field is invalid\';
  550. jFormsJQ.tForm.addControl(c);
  551. ', $this->builder->getJsContent());
  552. $ctrl->required = false;
  553. $this->form->setData('menulist1',"");
  554. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  555. $result='<select name="menulist1" id="'.$this->formname.'_menulist1" title="ceci est un tooltip" class="jforms-ctrl-menulist jforms-readonly" size="1">'."\n";
  556. $result.='<option value="" selected="selected"></option>'."\n";
  557. $result.='<option value="10">foo</option>'."\n";
  558. $result.='<option value="11">bar</option>'."\n";
  559. $result.='<option value="23">baz</option>'."\n";
  560. $result.='</select>'."\n";
  561. $this->assertEqualOrDiff($result, $out);
  562. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'menulist1\', \'Votre choix\');
  563. c.errInvalid=\'"Votre choix" field is invalid\';
  564. jFormsJQ.tForm.addControl(c);
  565. ', $this->builder->getJsContent());
  566. $records = array(
  567. array('id'=>'10', 'name'=>'foo', 'price'=>'15'),
  568. array('id'=>'11', 'name'=>'bar', 'price'=>'54'),
  569. array('id'=>'23', 'name'=>'baz', 'price'=>'97'),
  570. array('id'=>'42', 'name'=>'bidule', 'price'=>'54'),
  571. array('id'=>'12', 'name'=>'truc', 'price'=>'97'),
  572. array('id'=>'27', 'name'=>'zoulou', 'price'=>'0'),
  573. );
  574. $this->insertRecordsIntoTable('product_test', array('id','name','price'), $records, true);
  575. $ctrl->setReadOnly(false);
  576. $ctrl->hint='';
  577. $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findOrderPrice','name','id');
  578. $ctrl->datasource->setGroupBy('price');
  579. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  580. $result='<select name="menulist1" id="'.$this->formname.'_menulist1" class="jforms-ctrl-menulist" size="1">'."\n";
  581. $result.='<option value="" selected="selected"></option>'."\n";
  582. $result.='<optgroup label="0"><option value="27">zoulou</option>'."\n";
  583. $result.='</optgroup><optgroup label="15"><option value="10">foo</option>'."\n";
  584. $result.='</optgroup><optgroup label="54"><option value="11">bar</option>'."\n";
  585. $result.='<option value="42">bidule</option>'."\n";
  586. $result.='</optgroup><optgroup label="97"><option value="23">baz</option>'."\n";
  587. $result.='<option value="12">truc</option>'."\n";
  588. $result.='</optgroup></select>'."\n";
  589. $this->assertEqualOrDiff($result, $out);
  590. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'menulist1\', \'Votre choix\');
  591. c.errInvalid=\'"Votre choix" field is invalid\';
  592. jFormsJQ.tForm.addControl(c);
  593. ', $this->builder->getJsContent());
  594. $records = array(
  595. array('id'=>'10', 'name'=>'foo', 'price'=>'12'),
  596. array('id'=>'11', 'name'=>'bar', 'price'=>'54'),
  597. array('id'=>'23', 'name'=>'baz', 'price'=>'97'),
  598. );
  599. $this->insertRecordsIntoTable('product_test', array('id','name','price'), $records, true);
  600. $ctrl->setReadOnly(false);
  601. $ctrl->hint='';
  602. $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findByMaxId','name','id','','15');
  603. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  604. $result='<select name="menulist1" id="'.$this->formname.'_menulist1" class="jforms-ctrl-menulist" size="1">'."\n";
  605. $result.='<option value="" selected="selected"></option>'."\n";
  606. $result.='<option value="10">foo</option>'."\n";
  607. $result.='<option value="11">bar</option>'."\n";
  608. $result.='</select>'."\n";
  609. $this->assertEqualOrDiff($result, $out);
  610. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'menulist1\', \'Votre choix\');
  611. c.errInvalid=\'"Votre choix" field is invalid\';
  612. jFormsJQ.tForm.addControl(c);
  613. ', $this->builder->getJsContent());
  614. $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findByMaxId','name','id','','11');
  615. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  616. $result='<select name="menulist1" id="'.$this->formname.'_menulist1" class="jforms-ctrl-menulist" size="1">'."\n";
  617. $result.='<option value="" selected="selected"></option>'."\n";
  618. $result.='<option value="10">foo</option>'."\n";
  619. $result.='</select>'."\n";
  620. $this->assertEqualOrDiff($result, $out);
  621. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'menulist1\', \'Votre choix\');
  622. c.errInvalid=\'"Votre choix" field is invalid\';
  623. jFormsJQ.tForm.addControl(c);
  624. ', $this->builder->getJsContent());
  625. $this->form->setData('menulist1',"10");
  626. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  627. $result='<select name="menulist1" id="'.$this->formname.'_menulist1" class="jforms-ctrl-menulist" size="1">'."\n";
  628. $result.='<option value=""></option>'."\n";
  629. $result.='<option value="10" selected="selected">foo</option>'."\n";
  630. $result.='</select>'."\n";
  631. $this->assertEqualOrDiff($result, $out);
  632. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'menulist1\', \'Votre choix\');
  633. c.errInvalid=\'"Votre choix" field is invalid\';
  634. jFormsJQ.tForm.addControl(c);
  635. ', $this->builder->getJsContent());
  636. $this->form->setData('menulist1',"");
  637. $this->form->addControl(new jFormsControlHidden('hidden1'));
  638. $this->form->setData('hidden1',"25");
  639. $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findByMaxId','name','id','',null, 'hidden1');
  640. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  641. $result='<select name="menulist1" id="'.$this->formname.'_menulist1" class="jforms-ctrl-menulist" size="1">'."\n";
  642. $result.='<option value="" selected="selected"></option>'."\n";
  643. $result.='<option value="10">foo</option>'."\n";
  644. $result.='<option value="11">bar</option>'."\n";
  645. $result.='<option value="23">baz</option>'."\n";
  646. $result.='</select>'."\n";
  647. $this->assertEqualOrDiff($result, $out);
  648. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'menulist1\', \'Votre choix\');
  649. c.dependencies = [\'hidden1\'];
  650. c.errInvalid=\'"Votre choix" field is invalid\';
  651. jFormsJQ.tForm.addControl(c);
  652. ', $this->builder->getJsContent());
  653. $this->assertEqualOrDiff('jFormsJQ.tForm.declareDynamicFill(\'menulist1\');
  654. ', $this->builder->getLastJsContent());
  655. $this->form->setData('hidden1',"15");
  656. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  657. $result='<select name="menulist1" id="'.$this->formname.'_menulist1" class="jforms-ctrl-menulist" size="1">'."\n";
  658. $result.='<option value="" selected="selected"></option>'."\n";
  659. $result.='<option value="10">foo</option>'."\n";
  660. $result.='<option value="11">bar</option>'."\n";
  661. $result.='</select>'."\n";
  662. $this->assertEqualOrDiff($result, $out);
  663. $this->form->setData('menulist1',"10");
  664. $this->form->setData('hidden1',"11");
  665. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  666. $result='<select name="menulist1" id="'.$this->formname.'_menulist1" class="jforms-ctrl-menulist" size="1">'."\n";
  667. $result.='<option value=""></option>'."\n";
  668. $result.='<option value="10" selected="selected">foo</option>'."\n";
  669. $result.='</select>'."\n";
  670. $this->assertEqualOrDiff($result, $out);
  671. $this->form->setData('menulist1',"");
  672. $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findByMaxId','name,price','id','','25',null);
  673. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  674. $result='<select name="menulist1" id="'.$this->formname.'_menulist1" class="jforms-ctrl-menulist" size="1">'."\n";
  675. $result.='<option value="" selected="selected"></option>'."\n";
  676. $result.='<option value="10">foo12</option>'."\n";
  677. $result.='<option value="11">bar54</option>'."\n";
  678. $result.='<option value="23">baz97</option>'."\n";
  679. $result.='</select>'."\n";
  680. $this->assertEqualOrDiff($result, $out);
  681. $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findByMaxId','name,price','id','','25',null,' - ');
  682. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  683. $result='<select name="menulist1" id="'.$this->formname.'_menulist1" class="jforms-ctrl-menulist" size="1">'."\n";
  684. $result.='<option value="" selected="selected"></option>'."\n";
  685. $result.='<option value="10">foo - 12</option>'."\n";
  686. $result.='<option value="11">bar - 54</option>'."\n";
  687. $result.='<option value="23">baz - 97</option>'."\n";
  688. $result.='</select>'."\n";
  689. $this->assertEqualOrDiff($result, $out);
  690. $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findBetweenId','name,price','id','','9,25',null,' - ');
  691. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  692. $result='<select name="menulist1" id="'.$this->formname.'_menulist1" class="jforms-ctrl-menulist" size="1">'."\n";
  693. $result.='<option value="" selected="selected"></option>'."\n";
  694. $result.='<option value="10">foo - 12</option>'."\n";
  695. $result.='<option value="11">bar - 54</option>'."\n";
  696. $result.='<option value="23">baz - 97</option>'."\n";
  697. $result.='</select>'."\n";
  698. $this->assertEqualOrDiff($result, $out);
  699. $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findBetweenId','name,price','id','','10,25',null,' - ');
  700. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  701. $result='<select name="menulist1" id="'.$this->formname.'_menulist1" class="jforms-ctrl-menulist" size="1">'."\n";
  702. $result.='<option value="" selected="selected"></option>'."\n";
  703. $result.='<option value="11">bar - 54</option>'."\n";
  704. $result.='<option value="23">baz - 97</option>'."\n";
  705. $result.='</select>'."\n";
  706. $this->assertEqualOrDiff($result, $out);
  707. $this->form->addControl(new jFormsControlHidden('hidden2'));
  708. $this->form->setData('hidden1',"9");
  709. $this->form->setData('hidden2',"25");
  710. $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findBetweenId','name,price','id','',null,'hidden1,hidden2',' - ');
  711. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  712. $result='<select name="menulist1" id="'.$this->formname.'_menulist1" class="jforms-ctrl-menulist" size="1">'."\n";
  713. $result.='<option value="" selected="selected"></option>'."\n";
  714. $result.='<option value="10">foo - 12</option>'."\n";
  715. $result.='<option value="11">bar - 54</option>'."\n";
  716. $result.='<option value="23">baz - 97</option>'."\n";
  717. $result.='</select>'."\n";
  718. $this->assertEqualOrDiff($result, $out);
  719. $this->form->setData('hidden1',"10");
  720. $this->form->setData('hidden2',"25");
  721. $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findBetweenId','name,price','id','',null,'hidden1,hidden2',' - ');
  722. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  723. $result='<select name="menulist1" id="'.$this->formname.'_menulist1" class="jforms-ctrl-menulist" size="1">'."\n";
  724. $result.='<option value="" selected="selected"></option>'."\n";
  725. $result.='<option value="11">bar - 54</option>'."\n";
  726. $result.='<option value="23">baz - 97</option>'."\n";
  727. $result.='</select>'."\n";
  728. $this->assertEqualOrDiff($result, $out);
  729. $this->form->removeControl('hidden2');
  730. $this->form->setData('hidden1',"11");
  731. $this->builder->clearJs();
  732. }
  733. function testOutputListbox(){
  734. $ctrl= new jFormsControllistbox('listbox1');
  735. $ctrl->datatype= new jDatatypeString();
  736. $ctrl->label='Votre choix';
  737. $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findAll','name','id');
  738. $this->form->addControl($ctrl);
  739. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  740. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_listbox1" id="'.$this->formname.'_listbox1_label">Votre choix</label>'."\n", $out);
  741. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  742. $result='<select name="listbox1" id="'.$this->formname.'_listbox1" class="jforms-ctrl-listbox" size="4">'."\n";
  743. $result.='<option value="10">foo</option>'."\n";
  744. $result.='<option value="11">bar</option>'."\n";
  745. $result.='<option value="23">baz</option>'."\n";
  746. $result.='</select>'."\n";
  747. $this->assertEqualOrDiff($result, $out);
  748. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'listbox1\', \'Votre choix\');
  749. c.errInvalid=\'"Votre choix" field is invalid\';
  750. jFormsJQ.tForm.addControl(c);
  751. ', $this->builder->getJsContent());
  752. $this->form->setData('listbox1',"23");
  753. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  754. $result='<select name="listbox1" id="'.$this->formname.'_listbox1" class="jforms-ctrl-listbox" size="4">'."\n";
  755. $result.='<option value="10">foo</option>'."\n";
  756. $result.='<option value="11">bar</option>'."\n";
  757. $result.='<option value="23" selected="selected">baz</option>'."\n";
  758. $result.='</select>'."\n";
  759. $this->assertEqualOrDiff($result, $out);
  760. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'listbox1\', \'Votre choix\');
  761. c.errInvalid=\'"Votre choix" field is invalid\';
  762. jFormsJQ.tForm.addControl(c);
  763. ', $this->builder->getJsContent());
  764. $ctrl->datasource= new jFormsStaticDatasource();
  765. $ctrl->datasource->data = array(
  766. '10'=>'foo',
  767. '11'=>'bar',
  768. '23'=>'baz',
  769. );
  770. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  771. $this->assertEqualOrDiff($result, $out);
  772. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'listbox1\', \'Votre choix\');
  773. c.errInvalid=\'"Votre choix" field is invalid\';
  774. jFormsJQ.tForm.addControl(c);
  775. ', $this->builder->getJsContent());
  776. $ctrl->setReadOnly(true);
  777. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  778. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_listbox1" id="'.$this->formname.'_listbox1_label">Votre choix</label>'."\n", $out);
  779. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  780. $result='<select name="listbox1" id="'.$this->formname.'_listbox1" class="jforms-ctrl-listbox jforms-readonly" size="4">'."\n";
  781. $result.='<option value="10">foo</option>'."\n";
  782. $result.='<option value="11">bar</option>'."\n";
  783. $result.='<option value="23" selected="selected">baz</option>'."\n";
  784. $result.='</select>'."\n";
  785. $this->assertEqualOrDiff($result, $out);
  786. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'listbox1\', \'Votre choix\');
  787. c.errInvalid=\'"Votre choix" field is invalid\';
  788. jFormsJQ.tForm.addControl(c);
  789. ', $this->builder->getJsContent());
  790. $ctrl= new jFormsControllistbox('lbchoixmultiple');
  791. $ctrl->datatype= new jDatatypeString();
  792. $ctrl->label='Votre choix';
  793. $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findAll','name','id');
  794. $ctrl->multiple=true;
  795. $ctrl->hint='ceci est un tooltip';
  796. $this->form->addControl($ctrl);
  797. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  798. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_lbchoixmultiple" id="'.$this->formname.'_lbchoixmultiple_label" title="ceci est un tooltip">Votre choix</label>'."\n", $out);
  799. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  800. $result='<select name="lbchoixmultiple[]" id="'.$this->formname.'_lbchoixmultiple" title="ceci est un tooltip" class="jforms-ctrl-listbox" size="4" multiple="multiple">'."\n";
  801. $result.='<option value="10">foo</option>'."\n";
  802. $result.='<option value="11">bar</option>'."\n";
  803. $result.='<option value="23">baz</option>'."\n";
  804. $result.='</select>'."\n";
  805. $this->assertEqualOrDiff($result, $out);
  806. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'lbchoixmultiple[]\', \'Votre choix\');
  807. c.multiple = true;
  808. c.errInvalid=\'"Votre choix" field is invalid\';
  809. jFormsJQ.tForm.addControl(c);
  810. ', $this->builder->getJsContent());
  811. $this->form->setData('lbchoixmultiple',array(10,23));
  812. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  813. $result='<select name="lbchoixmultiple[]" id="'.$this->formname.'_lbchoixmultiple" title="ceci est un tooltip" class="jforms-ctrl-listbox" size="4" multiple="multiple">'."\n";
  814. $result.='<option value="10" selected="selected">foo</option>'."\n";
  815. $result.='<option value="11">bar</option>'."\n";
  816. $result.='<option value="23" selected="selected">baz</option>'."\n";
  817. $result.='</select>'."\n";
  818. $this->assertEqualOrDiff($result, $out);
  819. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'lbchoixmultiple[]\', \'Votre choix\');
  820. c.multiple = true;
  821. c.errInvalid=\'"Votre choix" field is invalid\';
  822. jFormsJQ.tForm.addControl(c);
  823. ', $this->builder->getJsContent());
  824. $ctrl= new jFormsControllistbox('listbox2');
  825. $ctrl->datatype= new jDatatypeString();
  826. $ctrl->label='Votre choix';
  827. $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findAll','name','id');
  828. $ctrl->defaultValue=array ('10');
  829. $this->form->addControl($ctrl);
  830. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  831. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_listbox2" id="'.$this->formname.'_listbox2_label">Votre choix</label>'."\n", $out);
  832. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  833. $result='<select name="listbox2" id="'.$this->formname.'_listbox2" class="jforms-ctrl-listbox" size="4">'."\n";
  834. $result.='<option value="10" selected="selected">foo</option>'."\n";
  835. $result.='<option value="11">bar</option>'."\n";
  836. $result.='<option value="23">baz</option>'."\n";
  837. $result.='</select>'."\n";
  838. $this->assertEqualOrDiff($result, $out);
  839. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'listbox2\', \'Votre choix\');
  840. c.errInvalid=\'"Votre choix" field is invalid\';
  841. jFormsJQ.tForm.addControl(c);
  842. ', $this->builder->getJsContent());
  843. $ctrl= new jFormsControllistbox('lbchoixmultiple2');
  844. $ctrl->datatype= new jDatatypeString();
  845. $ctrl->label='Votre choix';
  846. $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findAll','name','id');
  847. $ctrl->multiple=true;
  848. $ctrl->size=8;
  849. $ctrl->defaultValue=array ('11','23');
  850. $this->form->addControl($ctrl);
  851. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  852. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_lbchoixmultiple2" id="'.$this->formname.'_lbchoixmultiple2_label">Votre choix</label>'."\n", $out);
  853. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  854. $result='<select name="lbchoixmultiple2[]" id="'.$this->formname.'_lbchoixmultiple2" class="jforms-ctrl-listbox" size="8" multiple="multiple">'."\n";
  855. $result.='<option value="10">foo</option>'."\n";
  856. $result.='<option value="11" selected="selected">bar</option>'."\n";
  857. $result.='<option value="23" selected="selected">baz</option>'."\n";
  858. $result.='</select>'."\n";
  859. $this->assertEqualOrDiff($result, $out);
  860. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'lbchoixmultiple2[]\', \'Votre choix\');
  861. c.multiple = true;
  862. c.errInvalid=\'"Votre choix" field is invalid\';
  863. jFormsJQ.tForm.addControl(c);
  864. ', $this->builder->getJsContent());
  865. }
  866. function testOutputListboxClassDatasource(){
  867. $ctrl= new jFormsControllistbox('listboxclass');
  868. $ctrl->datatype= new jDatatypeString();
  869. $ctrl->label='Votre choix';
  870. jClasses::inc('mydatasource');
  871. $ctrl->datasource = new mydatasource(0);
  872. $this->form->addControl($ctrl);
  873. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  874. $result='<select name="listboxclass" id="'.$this->formname.'_listboxclass" class="jforms-ctrl-listbox" size="4">'."\n";
  875. $result.='<option value="aaa">label for aaa</option>'."\n";
  876. $result.='<option value="bbb">label for bbb</option>'."\n";
  877. $result.='<option value="ccc">label for ccc</option>'."\n";
  878. $result.='<option value="ddd">label for ddd</option>'."\n";
  879. $result.='</select>'."\n";
  880. $this->assertEqualOrDiff($result, $out);
  881. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'listboxclass\', \'Votre choix\');
  882. c.errInvalid=\'"Votre choix" field is invalid\';
  883. jFormsJQ.tForm.addControl(c);
  884. ', $this->builder->getJsContent());
  885. }
  886. function testOutputTextarea(){
  887. $ctrl= new jFormsControltextarea('textarea1');
  888. $ctrl->datatype= new jDatatypeString();
  889. $ctrl->label='Votre nom';
  890. $this->form->addControl($ctrl);
  891. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  892. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_textarea1" id="'.$this->formname.'_textarea1_label">Votre nom</label>'."\n", $out);
  893. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  894. $this->assertEqualOrDiff('<textarea name="textarea1" id="'.$this->formname.'_textarea1" class="jforms-ctrl-textarea" rows="5" cols="40"></textarea>'."\n", $out);
  895. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'textarea1\', \'Votre nom\');
  896. c.errInvalid=\'"Votre nom" field is invalid\';
  897. jFormsJQ.tForm.addControl(c);
  898. ', $this->builder->getJsContent());
  899. $this->form->setData('textarea1','laurent');
  900. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  901. $this->assertEqualOrDiff('<textarea name="textarea1" id="'.$this->formname.'_textarea1" class="jforms-ctrl-textarea" rows="5" cols="40">laurent</textarea>'."\n", $out);
  902. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'textarea1\', \'Votre nom\');
  903. c.errInvalid=\'"Votre nom" field is invalid\';
  904. jFormsJQ.tForm.addControl(c);
  905. ', $this->builder->getJsContent());
  906. $ctrl->setReadOnly(true);
  907. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  908. $this->assertEqualOrDiff('<textarea name="textarea1" id="'.$this->formname.'_textarea1" readonly="readonly" class="jforms-ctrl-textarea jforms-readonly" rows="5" cols="40">laurent</textarea>'."\n", $out);
  909. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'textarea1\', \'Votre nom\');
  910. c.errInvalid=\'"Votre nom" field is invalid\';
  911. jFormsJQ.tForm.addControl(c);
  912. ', $this->builder->getJsContent());
  913. $ctrl->hint='ceci est un tooltip';
  914. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  915. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_textarea1" id="'.$this->formname.'_textarea1_label" title="ceci est un tooltip">Votre nom</label>'."\n", $out);
  916. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  917. $this->assertEqualOrDiff('<textarea name="textarea1" id="'.$this->formname.'_textarea1" readonly="readonly" title="ceci est un tooltip" class="jforms-ctrl-textarea jforms-readonly" rows="5" cols="40">laurent</textarea>'."\n", $out);
  918. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'textarea1\', \'Votre nom\');
  919. c.errInvalid=\'"Votre nom" field is invalid\';
  920. jFormsJQ.tForm.addControl(c);
  921. ', $this->builder->getJsContent());
  922. $ctrl->rows=20;
  923. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  924. $this->assertEqualOrDiff('<textarea name="textarea1" id="'.$this->formname.'_textarea1" readonly="readonly" title="ceci est un tooltip" class="jforms-ctrl-textarea jforms-readonly" rows="20" cols="40">laurent</textarea>'."\n", $out);
  925. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'textarea1\', \'Votre nom\');
  926. c.errInvalid=\'"Votre nom" field is invalid\';
  927. jFormsJQ.tForm.addControl(c);
  928. ', $this->builder->getJsContent());
  929. $ctrl->cols=60;
  930. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  931. $this->assertEqualOrDiff('<textarea name="textarea1" id="'.$this->formname.'_textarea1" readonly="readonly" title="ceci est un tooltip" class="jforms-ctrl-textarea jforms-readonly" rows="20" cols="60">laurent</textarea>'."\n", $out);
  932. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'textarea1\', \'Votre nom\');
  933. c.errInvalid=\'"Votre nom" field is invalid\';
  934. jFormsJQ.tForm.addControl(c);
  935. ', $this->builder->getJsContent());
  936. }
  937. function testOutputSecret(){
  938. $ctrl= new jFormsControlSecret('passwd');
  939. $ctrl->datatype= new jDatatypeString();
  940. $ctrl->label='mot de passe';
  941. $this->form->addControl($ctrl);
  942. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  943. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_passwd" id="'.$this->formname.'_passwd_label">mot de passe</label>'."\n", $out);
  944. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  945. $this->assertEqualOrDiff('<input name="passwd" id="'.$this->formname.'_passwd" class="jforms-ctrl-secret" type="password" value=""/>'."\n", $out);
  946. $this->assertEqualOrDiff('c = new jFormsJQControlSecret(\'passwd\', \'mot de passe\');
  947. c.errInvalid=\'"mot de passe" field is invalid\';
  948. jFormsJQ.tForm.addControl(c);
  949. ', $this->builder->getJsContent());
  950. $this->form->setData('passwd','laurent');
  951. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  952. $this->assertEqualOrDiff('<input name="passwd" id="'.$this->formname.'_passwd" class="jforms-ctrl-secret" type="password" value="laurent"/>'."\n", $out);
  953. $this->assertEqualOrDiff('c = new jFormsJQControlSecret(\'passwd\', \'mot de passe\');
  954. c.errInvalid=\'"mot de passe" field is invalid\';
  955. jFormsJQ.tForm.addControl(c);
  956. ', $this->builder->getJsContent());
  957. $ctrl->setReadOnly(true);
  958. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  959. $this->assertEqualOrDiff('<input name="passwd" id="'.$this->formname.'_passwd" readonly="readonly" class="jforms-ctrl-secret jforms-readonly" type="password" value="laurent"/>'."\n", $out);
  960. $this->assertEqualOrDiff('c = new jFormsJQControlSecret(\'passwd\', \'mot de passe\');
  961. c.errInvalid=\'"mot de passe" field is invalid\';
  962. jFormsJQ.tForm.addControl(c);
  963. ', $this->builder->getJsContent());
  964. $ctrl->hint='ceci est un tooltip';
  965. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  966. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_passwd" id="'.$this->formname.'_passwd_label" title="ceci est un tooltip">mot de passe</label>'."\n", $out);
  967. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  968. $this->assertEqualOrDiff('<input name="passwd" id="'.$this->formname.'_passwd" readonly="readonly" title="ceci est un tooltip" class="jforms-ctrl-secret jforms-readonly" type="password" value="laurent"/>'."\n", $out);
  969. $this->assertEqualOrDiff('c = new jFormsJQControlSecret(\'passwd\', \'mot de passe\');
  970. c.errInvalid=\'"mot de passe" field is invalid\';
  971. jFormsJQ.tForm.addControl(c);
  972. ', $this->builder->getJsContent());
  973. $ctrl->datatype->addFacet('minLength',5);
  974. $ctrl->datatype->addFacet('maxLength',10);
  975. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  976. $this->assertEqualOrDiff('<input name="passwd" id="'.$this->formname.'_passwd" readonly="readonly" title="ceci est un tooltip" class="jforms-ctrl-secret jforms-readonly" maxlength="10" type="password" value="laurent"/>'."\n", $out);
  977. $this->assertEqualOrDiff('c = new jFormsJQControlSecret(\'passwd\', \'mot de passe\');
  978. c.maxLength = \'10\';
  979. c.minLength = \'5\';
  980. c.errInvalid=\'"mot de passe" field is invalid\';
  981. jFormsJQ.tForm.addControl(c);
  982. ', $this->builder->getJsContent());
  983. }
  984. function testOutputSecretConfirm(){
  985. $ctrl= new jFormsControlSecretConfirm('passwd_confirm');
  986. $ctrl->label='confirmation mot de passe';
  987. $this->form->addControl($ctrl);
  988. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  989. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_passwd_confirm" id="'.$this->formname.'_passwd_confirm_label">confirmation mot de passe</label>'."\n", $out);
  990. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  991. $this->assertEqualOrDiff('<input name="passwd_confirm" id="'.$this->formname.'_passwd_confirm" class="jforms-ctrl-secretconfirm" type="password" value=""/>'."\n", $out);
  992. $this->assertEqualOrDiff('c = new jFormsJQControlConfirm(\'passwd_confirm\', \'confirmation mot de passe\');
  993. c.errInvalid=\'"confirmation mot de passe" field is invalid\';
  994. jFormsJQ.tForm.addControl(c);
  995. ', $this->builder->getJsContent());
  996. $ctrl->required = true;
  997. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  998. $this->assertEqualOrDiff('<input name="passwd_confirm" id="'.$this->formname.'_passwd_confirm" class="jforms-ctrl-secretconfirm jforms-required" type="password" value=""/>'."\n", $out);
  999. $this->assertEqualOrDiff('c = new jFormsJQControlConfirm(\'passwd_confirm\', \'confirmation mot de passe\');
  1000. c.required = true;
  1001. c.errRequired=\'"confirmation mot de passe" field is required\';
  1002. c.errInvalid=\'"confirmation mot de passe" field is invalid\';
  1003. jFormsJQ.tForm.addControl(c);
  1004. ', $this->builder->getJsContent());
  1005. $ctrl->required = false;
  1006. $ctrl->setReadOnly(true);
  1007. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1008. $this->assertEqualOrDiff('<input name="passwd_confirm" id="'.$this->formname.'_passwd_confirm" readonly="readonly" class="jforms-ctrl-secretconfirm jforms-readonly" type="password" value=""/>'."\n", $out);
  1009. $this->assertEqualOrDiff('c = new jFormsJQControlConfirm(\'passwd_confirm\', \'confirmation mot de passe\');
  1010. c.errInvalid=\'"confirmation mot de passe" field is invalid\';
  1011. jFormsJQ.tForm.addControl(c);
  1012. ', $this->builder->getJsContent());
  1013. $ctrl->hint='ceci est un tooltip';
  1014. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  1015. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_passwd_confirm" id="'.$this->formname.'_passwd_confirm_label" title="ceci est un tooltip">confirmation mot de passe</label>'."\n", $out);
  1016. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1017. $this->assertEqualOrDiff('<input name="passwd_confirm" id="'.$this->formname.'_passwd_confirm" readonly="readonly" title="ceci est un tooltip" class="jforms-ctrl-secretconfirm jforms-readonly" type="password" value=""/>'."\n", $out);
  1018. $this->assertEqualOrDiff('c = new jFormsJQControlConfirm(\'passwd_confirm\', \'confirmation mot de passe\');
  1019. c.errInvalid=\'"confirmation mot de passe" field is invalid\';
  1020. jFormsJQ.tForm.addControl(c);
  1021. ', $this->builder->getJsContent());
  1022. }
  1023. function testOutputOutput(){
  1024. $ctrl= new jFormsControlOutput('output1');
  1025. $ctrl->datatype= new jDatatypeString();
  1026. $ctrl->label='Votre nom';
  1027. $this->form->addControl($ctrl);
  1028. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  1029. $this->assertEqualOrDiff('<span class="jforms-label" id="'.$this->formname.'_output1_label">Votre nom</span>'."\n", $out);
  1030. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1031. $this->assertEqualOrDiff('<input name="output1" id="'.$this->formname.'_output1" type="hidden" value=""/><span class="jforms-value"></span>'."\n", $out);
  1032. $this->assertEqualOrDiff('', $this->builder->getJsContent());
  1033. $this->form->setData('output1','laurent');
  1034. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1035. $this->assertEqualOrDiff('<input name="output1" id="'.$this->formname.'_output1" type="hidden" value="laurent"/><span class="jforms-value">laurent</span>'."\n", $out);
  1036. $this->assertEqualOrDiff('', $this->builder->getJsContent());
  1037. $ctrl->setReadOnly(true);
  1038. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1039. $this->assertEqualOrDiff('<input name="output1" id="'.$this->formname.'_output1" type="hidden" value="laurent"/><span class="jforms-value">laurent</span>'."\n", $out);
  1040. $this->assertEqualOrDiff('', $this->builder->getJsContent());
  1041. $ctrl->hint='ceci est un tooltip';
  1042. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  1043. $this->assertEqualOrDiff('<span class="jforms-label" id="'.$this->formname.'_output1_label" title="ceci est un tooltip">Votre nom</span>'."\n", $out);
  1044. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1045. $this->assertEqualOrDiff('<input name="output1" id="'.$this->formname.'_output1" type="hidden" value="laurent"/><span class="jforms-value" title="ceci est un tooltip">laurent</span>'."\n", $out);
  1046. $this->assertEqualOrDiff('', $this->builder->getJsContent());
  1047. }
  1048. function testOutputUpload(){
  1049. $ctrl= new jFormsControlUpload('upload1');
  1050. $ctrl->datatype= new jDatatypeString();
  1051. $ctrl->label='Votre nom';
  1052. $this->form->addControl($ctrl);
  1053. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  1054. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_upload1" id="'.$this->formname.'_upload1_label">Votre nom</label>'."\n", $out);
  1055. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1056. $this->assertEqualOrDiff('<input name="upload1" id="'.$this->formname.'_upload1" class="jforms-ctrl-upload" type="file" value=""/>'."\n", $out);
  1057. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'upload1\', \'Votre nom\');
  1058. c.errInvalid=\'"Votre nom" field is invalid\';
  1059. jFormsJQ.tForm.addControl(c);
  1060. ', $this->builder->getJsContent());
  1061. $ctrl->setReadOnly(true);
  1062. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1063. $this->assertEqualOrDiff('<input name="upload1" id="'.$this->formname.'_upload1" readonly="readonly" class="jforms-ctrl-upload jforms-readonly" type="file" value=""/>'."\n", $out);
  1064. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'upload1\', \'Votre nom\');
  1065. c.errInvalid=\'"Votre nom" field is invalid\';
  1066. jFormsJQ.tForm.addControl(c);
  1067. ', $this->builder->getJsContent());
  1068. $ctrl->hint='ceci est un tooltip';
  1069. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  1070. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_upload1" id="'.$this->formname.'_upload1_label" title="ceci est un tooltip">Votre nom</label>'."\n", $out);
  1071. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1072. $this->assertEqualOrDiff('<input name="upload1" id="'.$this->formname.'_upload1" readonly="readonly" title="ceci est un tooltip" class="jforms-ctrl-upload jforms-readonly" type="file" value=""/>'."\n", $out);
  1073. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'upload1\', \'Votre nom\');
  1074. c.errInvalid=\'"Votre nom" field is invalid\';
  1075. jFormsJQ.tForm.addControl(c);
  1076. ', $this->builder->getJsContent());
  1077. ob_start();
  1078. $this->builder->outputHeader(array('method'=>'post'));
  1079. $out = ob_get_clean();
  1080. $result ='<form action="'.$GLOBALS['gJConfig']->urlengine['basePath'].'index.php" method="post" id="'.$this->formname.'" enctype="multipart/form-data"><script type="text/javascript">
  1081. //<![CDATA[
  1082. jFormsJQ.selectFillUrl=\''.$GLOBALS['gJConfig']->urlengine['basePath'].'index.php?module=jelix&action=jforms:getListData\';
  1083. jFormsJQ.config = {locale:\''.$GLOBALS['gJConfig']->locale.'\',basePath:\''.$GLOBALS['gJConfig']->urlengine['basePath'].'\',jqueryPath:\''.$GLOBALS['gJConfig']->urlengine['jqueryPath'].'\',jelixWWWPath:\''.$GLOBALS['gJConfig']->urlengine['jelixWWWPath'].'\'};
  1084. jFormsJQ.tForm = new jFormsJQForm(\'jforms_formtest1\',\'formtest\',\'0\');
  1085. jFormsJQ.tForm.setErrorDecorator(new jFormsJQErrorDecoratorHtml());
  1086. jFormsJQ.declareForm(jFormsJQ.tForm);
  1087. //]]>
  1088. </script><div class="jforms-hiddens"><input type="hidden" name="foo" value="b&gt;ar"/>
  1089. <input type="hidden" name="module" value="jelix_tests"/>
  1090. <input type="hidden" name="action" value="urlsig:url1"/>
  1091. <input type="hidden" name="hidden1" id="'.$this->formname.'_hidden1" value="11"/>
  1092. </div>';
  1093. $this->assertEqualOrDiff($result, $out);
  1094. $this->form->removeControl('upload1');
  1095. }
  1096. function testOutputSubmit(){
  1097. $ctrl= new jFormsControlSubmit('submit1');
  1098. $ctrl->datatype= new jDatatypeString();
  1099. $ctrl->label='Ok';
  1100. $this->form->addControl($ctrl);
  1101. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  1102. $this->assertEqualOrDiff('', $out);
  1103. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1104. $this->assertEqualOrDiff('<input name="submit1" id="'.$this->formname.'_submit1" class="jforms-submit" type="submit" value="Ok"/>'."\n", $out);
  1105. $this->assertEqualOrDiff('', $this->builder->getJsContent());
  1106. $ctrl->setReadOnly(true);
  1107. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1108. $this->assertEqualOrDiff('<input name="submit1" id="'.$this->formname.'_submit1" class="jforms-submit" type="submit" value="Ok"/>'."\n", $out);
  1109. $this->assertEqualOrDiff('', $this->builder->getJsContent());
  1110. $ctrl->hint='ceci est un tooltip';
  1111. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1112. $this->assertEqualOrDiff('<input name="submit1" id="'.$this->formname.'_submit1" title="ceci est un tooltip" class="jforms-submit" type="submit" value="Ok"/>'."\n", $out);
  1113. $this->assertEqualOrDiff('', $this->builder->getJsContent());
  1114. $ctrl->standalone=false;
  1115. $ctrl->datasource= new jFormsStaticDatasource();
  1116. $ctrl->datasource->data = array('svg'=>'Sauvegarde','prev'=>'Preview');
  1117. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1118. $output = ' <input name="submit1" id="'.$this->formname.'_submit1_svg" title="ceci est un tooltip" class="jforms-submit" type="submit" value="Sauvegarde"/>';
  1119. $output .= ' <input name="submit1" id="'.$this->formname.'_submit1_prev" title="ceci est un tooltip" class="jforms-submit" type="submit" value="Preview"/>'."\n";
  1120. $this->assertEqualOrDiff($output, $out);
  1121. $this->assertEqualOrDiff('', $this->builder->getJsContent());
  1122. }
  1123. function testOutputReset(){
  1124. $ctrl= new jFormsControlReset('reset1');
  1125. $ctrl->datatype= new jDatatypeString();
  1126. $ctrl->label='Effacer';
  1127. $this->form->addControl($ctrl);
  1128. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  1129. $this->assertEqualOrDiff('', $out);
  1130. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1131. $this->assertEqualOrDiff('<button name="reset1" id="'.$this->formname.'_reset1" class="jforms-reset" type="reset">Effacer</button>'."\n", $out);
  1132. $this->assertEqualOrDiff('', $this->builder->getJsContent());
  1133. $ctrl->setReadOnly(true);
  1134. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1135. $this->assertEqualOrDiff('<button name="reset1" id="'.$this->formname.'_reset1" class="jforms-reset" type="reset">Effacer</button>'."\n", $out);
  1136. $this->assertEqualOrDiff('', $this->builder->getJsContent());
  1137. $ctrl->hint='ceci est un tooltip';
  1138. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1139. $this->assertEqualOrDiff('<button name="reset1" id="'.$this->formname.'_reset1" title="ceci est un tooltip" class="jforms-reset" type="reset">Effacer</button>'."\n", $out);
  1140. $this->assertEqualOrDiff('', $this->builder->getJsContent());
  1141. }
  1142. function testOutputHidden(){
  1143. $ctrl= new jFormsControlHidden('hidden2');
  1144. $this->form->addControl($ctrl);
  1145. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  1146. $this->assertEqualOrDiff('', $out);
  1147. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1148. $this->assertEqualOrDiff('', $out);
  1149. $this->assertEqualOrDiff('', $this->builder->getJsContent());
  1150. ob_start();
  1151. $this->builder->outputHeader(array('method'=>'post'));
  1152. $out = ob_get_clean();
  1153. $result ='<form action="'.$GLOBALS['gJConfig']->urlengine['basePath'].'index.php" method="post" id="'.$this->formname.'"><script type="text/javascript">
  1154. //<![CDATA[
  1155. jFormsJQ.selectFillUrl=\''.$GLOBALS['gJConfig']->urlengine['basePath'].'index.php?module=jelix&action=jforms:getListData\';
  1156. jFormsJQ.config = {locale:\''.$GLOBALS['gJConfig']->locale.'\',basePath:\''.$GLOBALS['gJConfig']->urlengine['basePath'].'\',jqueryPath:\''.$GLOBALS['gJConfig']->urlengine['jqueryPath'].'\',jelixWWWPath:\''.$GLOBALS['gJConfig']->urlengine['jelixWWWPath'].'\'};
  1157. jFormsJQ.tForm = new jFormsJQForm(\'jforms_formtest1\',\'formtest\',\'0\');
  1158. jFormsJQ.tForm.setErrorDecorator(new jFormsJQErrorDecoratorHtml());
  1159. jFormsJQ.declareForm(jFormsJQ.tForm);
  1160. //]]>
  1161. </script><div class="jforms-hiddens"><input type="hidden" name="foo" value="b&gt;ar"/>
  1162. <input type="hidden" name="module" value="jelix_tests"/>
  1163. <input type="hidden" name="action" value="urlsig:url1"/>
  1164. <input type="hidden" name="hidden1" id="'.$this->formname.'_hidden1" value="11"/>
  1165. <input type="hidden" name="hidden2" id="'.$this->formname.'_hidden2" value=""/>
  1166. </div>';
  1167. $this->assertEqualOrDiff($result, $out);
  1168. $ctrl->defaultValue='toto';
  1169. $this->form->removeControl($ctrl->ref);
  1170. $this->form->addControl($ctrl);
  1171. ob_start();
  1172. $this->builder->outputHeader(array('method'=>'post'));
  1173. $out = ob_get_clean();
  1174. $result ='<form action="'.$GLOBALS['gJConfig']->urlengine['basePath'].'index.php" method="post" id="'.$this->formname.'"><script type="text/javascript">
  1175. //<![CDATA[
  1176. jFormsJQ.selectFillUrl=\''.$GLOBALS['gJConfig']->urlengine['basePath'].'index.php?module=jelix&action=jforms:getListData\';
  1177. jFormsJQ.config = {locale:\''.$GLOBALS['gJConfig']->locale.'\',basePath:\''.$GLOBALS['gJConfig']->urlengine['basePath'].'\',jqueryPath:\''.$GLOBALS['gJConfig']->urlengine['jqueryPath'].'\',jelixWWWPath:\''.$GLOBALS['gJConfig']->urlengine['jelixWWWPath'].'\'};
  1178. jFormsJQ.tForm = new jFormsJQForm(\'jforms_formtest1\',\'formtest\',\'0\');
  1179. jFormsJQ.tForm.setErrorDecorator(new jFormsJQErrorDecoratorHtml());
  1180. jFormsJQ.declareForm(jFormsJQ.tForm);
  1181. //]]>
  1182. </script><div class="jforms-hiddens"><input type="hidden" name="foo" value="b&gt;ar"/>
  1183. <input type="hidden" name="module" value="jelix_tests"/>
  1184. <input type="hidden" name="action" value="urlsig:url1"/>
  1185. <input type="hidden" name="hidden1" id="'.$this->formname.'_hidden1" value="11"/>
  1186. <input type="hidden" name="hidden2" id="'.$this->formname.'_hidden2" value="toto"/>
  1187. </div>';
  1188. $this->assertEqualOrDiff($result, $out);
  1189. }
  1190. function testOutputCaptcha(){
  1191. $ctrl= new jFormsControlcaptcha('cap');
  1192. $ctrl->label='captcha for security';
  1193. $this->form->addControl($ctrl);
  1194. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  1195. $this->assertEqualOrDiff('<label class="jforms-label jforms-required" for="'.$this->formname.'_cap" id="'.$this->formname.'_cap_label">captcha for security<span class="jforms-required-star">*</span></label>'."\n", $out);
  1196. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1197. $this->assertEqualOrDiff('<span class="jforms-captcha-question">'.htmlspecialchars($ctrl->question).'</span> <input name="cap" id="'.$this->formname.'_cap" class="jforms-ctrl-captcha jforms-required" type="text" value=""/>'."\n", $out);
  1198. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'cap\', \'captcha for security\');
  1199. c.required = true;
  1200. c.errRequired=\'"captcha for security" field is required\';
  1201. c.errInvalid=\'"captcha for security" field is invalid\';
  1202. jFormsJQ.tForm.addControl(c);
  1203. ', $this->builder->getJsContent());
  1204. $this->form->setData('cap','toto');
  1205. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1206. $this->assertEqualOrDiff('<span class="jforms-captcha-question">'.htmlspecialchars($ctrl->question).'</span> <input name="cap" id="'.$this->formname.'_cap" class="jforms-ctrl-captcha jforms-required" type="text" value=""/>'."\n", $out);
  1207. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'cap\', \'captcha for security\');
  1208. c.required = true;
  1209. c.errRequired=\'"captcha for security" field is required\';
  1210. c.errInvalid=\'"captcha for security" field is invalid\';
  1211. jFormsJQ.tForm.addControl(c);
  1212. ', $this->builder->getJsContent());
  1213. $ctrl->setReadOnly(true);
  1214. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1215. $this->assertEqualOrDiff('<span class="jforms-captcha-question">'.htmlspecialchars($ctrl->question).'</span> <input name="cap" id="'.$this->formname.'_cap" class="jforms-ctrl-captcha" type="text" value=""/>'."\n", $out);
  1216. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'cap\', \'captcha for security\');
  1217. c.required = true;
  1218. c.errRequired=\'"captcha for security" field is required\';
  1219. c.errInvalid=\'"captcha for security" field is invalid\';
  1220. jFormsJQ.tForm.addControl(c);
  1221. ', $this->builder->getJsContent());
  1222. $ctrl->setReadOnly(false);
  1223. $ctrl->help='some help';
  1224. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1225. $this->assertEqualOrDiff('<span class="jforms-captcha-question">'.htmlspecialchars($ctrl->question).'</span> <input name="cap" id="'.$this->formname.'_cap" class="jforms-ctrl-captcha jforms-required" type="text" value=""/>'."\n".'<span class="jforms-help" id="jforms_formtest1_cap-help">&nbsp;<span>some help</span></span>', $out);
  1226. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'cap\', \'captcha for security\');
  1227. c.required = true;
  1228. c.errRequired=\'"captcha for security" field is required\';
  1229. c.errInvalid=\'"captcha for security" field is invalid\';
  1230. jFormsJQ.tForm.addControl(c);
  1231. ', $this->builder->getJsContent());
  1232. $ctrl->hint='ceci est un tooltip';
  1233. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  1234. $this->assertEqualOrDiff('<label class="jforms-label jforms-required" for="'.$this->formname.'_cap" id="'.$this->formname.'_cap_label" title="ceci est un tooltip">captcha for security<span class="jforms-required-star">*</span></label>'."\n", $out);
  1235. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1236. $this->assertEqualOrDiff('<span class="jforms-captcha-question">'.htmlspecialchars($ctrl->question).'</span> <input name="cap" id="'.$this->formname.'_cap" title="ceci est un tooltip" class="jforms-ctrl-captcha jforms-required" type="text" value=""/>'."\n".'<span class="jforms-help" id="jforms_formtest1_cap-help">&nbsp;<span>some help</span></span>', $out);
  1237. $this->assertEqualOrDiff('c = new jFormsJQControlString(\'cap\', \'captcha for security\');
  1238. c.required = true;
  1239. c.errRequired=\'"captcha for security" field is required\';
  1240. c.errInvalid=\'"captcha for security" field is invalid\';
  1241. jFormsJQ.tForm.addControl(c);
  1242. ', $this->builder->getJsContent());
  1243. }
  1244. function testOutputHtmleditor(){
  1245. $ctrl= new jFormsControlhtmleditor('contenu');
  1246. $ctrl->label='Texte';
  1247. $this->form->addControl($ctrl);
  1248. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  1249. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_contenu" id="'.$this->formname.'_contenu_label">Texte</label>'."\n", $out);
  1250. $this->form->setData('contenu','<p>Ceci est un contenu</p>');
  1251. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1252. $this->assertEqualOrDiff('<textarea name="contenu" id="'.$this->formname.'_contenu" class="jforms-ctrl-htmleditor" rows="5" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>'."\n", $out);
  1253. $this->assertEqualOrDiff('c = new jFormsJQControlHtml(\'contenu\', \'Texte\');
  1254. c.errInvalid=\'"Texte" field is invalid\';
  1255. jFormsJQ.tForm.addControl(c);
  1256. jelix_wymeditor_default("jforms_formtest1_contenu","jforms_formtest1","default",jFormsJQ.config);
  1257. ', $this->builder->getJsContent());
  1258. $ctrl->setReadOnly(true);
  1259. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1260. $this->assertEqualOrDiff('<textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" class="jforms-ctrl-htmleditor jforms-readonly" rows="5" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>'."\n", $out);
  1261. $this->assertEqualOrDiff('c = new jFormsJQControlHtml(\'contenu\', \'Texte\');
  1262. c.errInvalid=\'"Texte" field is invalid\';
  1263. jFormsJQ.tForm.addControl(c);
  1264. jelix_wymeditor_default("jforms_formtest1_contenu","jforms_formtest1","default",jFormsJQ.config);
  1265. ', $this->builder->getJsContent());
  1266. $ctrl->hint='ceci est un tooltip';
  1267. ob_start();$this->builder->outputControlLabel($ctrl);$out = ob_get_clean();
  1268. $this->assertEqualOrDiff('<label class="jforms-label" for="'.$this->formname.'_contenu" id="'.$this->formname.'_contenu_label" title="ceci est un tooltip">Texte</label>'."\n", $out);
  1269. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1270. $this->assertEqualOrDiff('<textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" title="ceci est un tooltip" class="jforms-ctrl-htmleditor jforms-readonly" rows="5" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>'."\n", $out);
  1271. $this->assertEqualOrDiff('c = new jFormsJQControlHtml(\'contenu\', \'Texte\');
  1272. c.errInvalid=\'"Texte" field is invalid\';
  1273. jFormsJQ.tForm.addControl(c);
  1274. jelix_wymeditor_default("jforms_formtest1_contenu","jforms_formtest1","default",jFormsJQ.config);
  1275. ', $this->builder->getJsContent());
  1276. $ctrl->rows=20;
  1277. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1278. $this->assertEqualOrDiff('<textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" title="ceci est un tooltip" class="jforms-ctrl-htmleditor jforms-readonly" rows="20" cols="40">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>'."\n", $out);
  1279. $this->assertEqualOrDiff('c = new jFormsJQControlHtml(\'contenu\', \'Texte\');
  1280. c.errInvalid=\'"Texte" field is invalid\';
  1281. jFormsJQ.tForm.addControl(c);
  1282. jelix_wymeditor_default("jforms_formtest1_contenu","jforms_formtest1","default",jFormsJQ.config);
  1283. ', $this->builder->getJsContent());
  1284. $ctrl->cols=60;
  1285. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1286. $this->assertEqualOrDiff('<textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" title="ceci est un tooltip" class="jforms-ctrl-htmleditor jforms-readonly" rows="20" cols="60">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>'."\n", $out);
  1287. $this->assertEqualOrDiff('c = new jFormsJQControlHtml(\'contenu\', \'Texte\');
  1288. c.errInvalid=\'"Texte" field is invalid\';
  1289. jFormsJQ.tForm.addControl(c);
  1290. jelix_wymeditor_default("jforms_formtest1_contenu","jforms_formtest1","default",jFormsJQ.config);
  1291. ', $this->builder->getJsContent());
  1292. $ctrl->required=true;
  1293. ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean();
  1294. $this->assertEqualOrDiff('<textarea name="contenu" id="'.$this->formname.'_contenu" readonly="readonly" title="ceci est un tooltip" class="jforms-ctrl-htmleditor jforms-readonly" rows="20" cols="60">&lt;p&gt;Ceci est un contenu&lt;/p&gt;</textarea>'."\n", $out);
  1295. $this->assertEqualOrDiff('c = new jFormsJQControlHtml(\'contenu\', \'Texte\');
  1296. c.required = true;
  1297. c.errRequired=\'"Texte" field is required\';
  1298. c.errInvalid=\'"Texte" field is invalid\';
  1299. jFormsJQ.tForm.addControl(c);
  1300. jelix_wymeditor_default("jforms_formtest1_contenu","jforms_formtest1","default",jFormsJQ.config);
  1301. ', $this->builder->getJsContent());
  1302. }
  1303. }