- <?php 
- /** 
-  * Single Page Upload 
-  * A form is used to select and submit any kind of file to webserver 
-  * while a progress meter is running in indeterminate mode inside a popup. 
-  * 
-  * @version    $Id: formpopup.php,v 1.3 2005/07/25 11:43:56 farell Exp $ 
-  * @author     Laurent Laville <pear@laurent-laville.org> 
-  * @package    HTML_Progress 
-  * @subpackage Examples 
-  */ 
-   
- require_once 'HTML/QuickForm.php'; 
-   
- function myProcess($values) 
- { 
-     global $form; 
-     $destination = './uploads/'; 
-   
-     $file =& $form->getElement('tstUpload'); 
-     if ($file->isUploadedFile()) { 
-         $ok = $file->moveUploadedFile($destination); 
-   
-         if ($ok) { 
-             // write the semaphore to tell progress meter to stop 
-             // in script 'progressbar.php' 
-   
-             $fp = fopen($destination . $_GET['ID'],'w',false); 
-             fwrite($fp, 'done'); 
-             fclose($fp); 
-         } 
-     } 
- } 
- ?> 
- <html> 
- <head> 
- <script language="javascript"> 
- <!-- 
- function DoUpload() { 
-   theFeats    = "height=100,width=250,location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no"; 
-   theUniqueID = (new Date()).getTime() % 1000000000; 
-   window.open("progressbar.php?ID=" + theUniqueID, theUniqueID, theFeats); 
-   document.formpopup.action = "formpopup.php?ID=" + theUniqueID; 
-   document.formpopup.submit(); 
- } 
- //--> 
- </script> 
- </head> 
- <body> 
- <?php 
-   
- $form =& new HTML_QuickForm('formpopup'); 
-   
- // We need an additional label below the element 
- $renderer =& $form->defaultRenderer(); 
- $renderer->setElementTemplate(<<<EOT 
- <tr> 
-     <td align="right" valign="top" nowrap="nowrap"><!-- BEGIN required --><span style="color: #ff0000">*</span><!-- END required --><b>{label}</b></td> 
-     <td valign="top" align="left"> 
-         <!-- BEGIN error --><span style="color: #ff0000">{error}</span><br /><!-- END error -->{element} 
-         <!-- BEGIN label_2 --><br/><span style="font-size: 80%">{label_2}</span><!-- END label_2 --> 
-     </td> 
- </tr> 
-   
- EOT 
- ); 
-   
- $form->addElement('header', null, 'Uploaded file rules'); 
- $form->addElement('file', 'tstUpload', array('Upload file:', 'Rule types: \'uploadedfile\', \'maxfilesize\' with $format = 10240, \'mimetype\' with $format = \'text/xml\', filename with $format = \'/\\.xml$/\'<br />Validation for files is obviuosly <b>server-side only</b>')); 
- $form->addRule('tstUpload', 'Upload is required', 'uploadedfile'); 
- $form->addRule('tstUpload', 'File size should be less than 10kb', 'maxfilesize', 10240); 
- $form->addRule('tstUpload', 'File type should be text/xml', 'mimetype', 'text/xml'); 
- $form->addRule('tstUpload', 'File name should be *.xml', 'filename', '/\\.xml$/'); 
-   
- $form->addElement('header', null, 'Submit the form'); 
- $submit[] =& $form->createElement('button', null, 'Upload', array('onClick'=>'DoUpload();')); 
- $form->addGroup($submit, null, null, ' ', false); 
-   
- $form->applyFilter('__ALL__', 'trim'); 
-   
- if ($form->validate()) { 
-     // Form is validated, then processes the data 
-     $form->freeze(); 
-     $form->process('myProcess', true); 
-     echo '<p><< <a target="_top" href="../index.html">Back examples TOC</a></p>'; 
-   
- } elseif (isset($_GET['ID'])) { 
-     $destination = './uploads/'; 
-     $fp = fopen($destination . $_GET['ID'],'w',false); 
-     fwrite($fp, 'error'); 
-     fclose($fp); 
- } 
- $form->display(); 
- ?> 
- </body> 
- </html>