PageRenderTime 131ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

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

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