PageRenderTime 56ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/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
Possible License(s): GPL-2.0, LGPL-2.1, BSD-3-Clause

Large files files are truncated, but you can click here to view the full 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='…

Large files files are truncated, but you can click here to view the full file