/testapp/tests-jelix/jelix/forms/jforms_htmlbuilderTest.php

https://github.com/gmarrot/jelix · PHP · 1650 lines · 1382 code · 257 blank · 11 comment · 1 complexity · 946d8a83a3bc5afd6792eeb2f4e254ef MD5 · raw file

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