HTML_QuickForm2
[ class tree: HTML_QuickForm2 ] [ index: HTML_QuickForm2 ] [ all elements ]

Source for file hierselect-ajax.php

Documentation is available at hierselect-ajax.php

  1. <?php
  2. /**
  3.  * Usage example for HTML_QuickForm2 package: AJAX-backed hierselect element.
  4.  *
  5.  * NB: This usage example requires HTML_AJAX package to work.
  6.  */
  7.  
  8. require_once 'HTML/QuickForm2.php';
  9. require_once 'HTML/QuickForm2/Renderer.php';
  10. if (!class_exists('HTML_AJAX_Helper'true)) {
  11.     require_once 'HTML/AJAX/Helper.php';
  12. }
  13. require_once './support/hierselect-loader.php';
  14.  
  15. $form = new HTML_QuickForm2('ajaxHierselect');
  16. $form->addDataSource(new HTML_QuickForm2_DataSource_Array(array(
  17.     'syncHS'  => array(216),
  18.     'asyncHS' => array(216)
  19. )));
  20.  
  21. $loader = new OptionLoader();
  22.  
  23. $fsSync $form->addElement('fieldset')->setLabel('Sync call');
  24.  
  25. $fsSync->addElement('hierselect''syncHS'array('style' => 'width: 250px;'))
  26.        ->setLabel('Choose package:')
  27.        ->loadOptions(array($loader->getOptions()array()),
  28.                      array($loader'getOptions')'loadOptionsSync')
  29.        ->setSeparator('<br />');
  30.  
  31. $fsAsync $form->addElement('fieldset')->setLabel('Async call');
  32. $fsAsync->addElement('hierselect''asyncHS'array('style' => 'width: 250px;'))
  33.         ->setLabel('Choose package again:')
  34.         ->loadOptions(array($loader->getOptions()array()),
  35.                       array($loader'getOptions')'loadOptionsAsync')
  36.         ->setSeparator('<br />');
  37.  
  38. $form->addElement('submit''testSubmit'array('value' => 'Send'));
  39.  
  40. $renderer HTML_QuickForm2_Renderer::factory('default');
  41. $form->render($renderer);
  42.  
  43. ?>
  44. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  45.     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  46. <html xmlns="http://www.w3.org/1999/xhtml">
  47.   <head>
  48.     <title>HTML_QuickForm2: AJAX-backed hierselect element</title>
  49.     <style type="text/css">
  50. /* Set up custom font and form width */
  51. body {
  52.     margin-left: 10px;
  53.     font-family: Arial,sans-serif;
  54.     font-size: small;
  55. }
  56.  
  57. .quickform {
  58.     min-width: 500px;
  59.     max-width: 600px;
  60.     width: 560px;
  61. }
  62.  
  63. /* Use default styles included with the package */
  64.  
  65. <?php
  66. if ('@data_dir@' != '@' 'data_dir@'{
  67.     $filename '@data_dir@/HTML_QuickForm2/quickform.css';
  68. else {
  69.     $filename dirname(dirname(dirname(__FILE__))) '/data/quickform.css';
  70. }
  71. readfile($filename);
  72. ?>
  73.     </style>
  74. <?php
  75. // output script tags for AJAX server
  76. $ajaxHelper = new HTML_AJAX_Helper();
  77. $ajaxHelper->serverUrl = 'js/hierselect-server.php';
  78. $ajaxHelper->stubs[]   'OptionLoader';
  79. echo $ajaxHelper->setupAJAX();
  80. ?>
  81.     <script type="text/javascript">
  82. // <![CDATA[
  83.  
  84. function loadOptionsSync(keys)
  85. {
  86.     return (new OptionLoader).getOptionsAjax(keys);
  87. }
  88.  
  89. function loadOptionsAsync(keys, selectId)
  90. {
  91.     // trying to load options for an empty value (or waiting for an async
  92.     // call result)
  93.     if ('' == keys[keys.length - 1]) {
  94.         return qf.elements.hierselect.missingOptions;
  95.     }
  96.  
  97.     var callback = {
  98.         getOptionsAjax: qf.elements.hierselect.getAsyncCallback(selectId, keys)
  99.     };
  100.  
  101.     // Asynchronous call
  102.     (new OptionLoader(callback)).getOptionsAjax(keys);
  103.  
  104.     // actual options will be added later, for now just return empty options
  105.     // (this will also prevent useless AJAX requests)
  106.     return qf.elements.hierselect.missingOptions;
  107. }
  108.  
  109. // ]]>
  110.     </script>
  111. <?php
  112. // Inline QuickForm's javascript libraries
  113. echo $renderer->getJavascriptBuilder()->getLibraries(truetrue);
  114. ?>
  115.   </head>
  116.   <body>
  117. <?php
  118.  
  119. if ('POST' == $_SERVER['REQUEST_METHOD']{
  120.     echo "<pre>\n";
  121.     var_dump($form->getValue());
  122.     echo "</pre>\n<hr />";
  123. }
  124.  
  125. echo $renderer;
  126.  
  127. ?>
  128.   </body>
  129. </html>

Documentation generated on Wed, 10 Apr 2019 08:56:09 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.