Home  PHP Projekte  PHPDoc  Forms  Form (300k)  Flow Layout  API Docs  CVS - XML Demo I  CVS - XML Demo II  Demo: calendar  Demo: checkbox  Demo: calendar  Demo: combo  Demo: date  Demo: defaults  Demo: file  Demo: fileupload  Demo: hidden  Demo: image  Demo: password  Demo: radio  Demo: select  Demo: submit  Demo: tag  Demo: text  Demo: textarea  IT[X] Template  Userland Cache  Gtext  Menu 3  Columbo  PHP Schulung  Technik der Site  Büchertipps  Fotografie  Airbrush  Kontakt  Stuff 
|
OOH Form Rewrite - Features
This page
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html> <head> <title>Example of Form</title> </head>
<body> <?php // whereever your source files reside... define(FORM_INCLUDE_DIR, "c:/www/apache/form/"); // include the loader include(FORM_INCLUDE_DIR . "form_loader.inc"); // include the core form files form_loader("form"); // include your form class include(FORM_INCLUDE_DIR . "example_form.inc"); // create form object $form = new example_form; // opening <form> tag - JavaScript form name: myform $form->Start("myform"); // add form elements $form->Init(); /* // Combo // Note: API will change! It's far to complex now if (!isset($options)) $options = $form->getOptions("combo"); $newoption = $form->getNewComboOption("combo"); if ("" != $newoption) { $form->setOptions( array( "combo" => $options["combo"] ) ); $form->addOption("combo", "[new] " . $newoption, $newoption); $form->setValues( array("combo" => $newoption) ); $options = $form->getOptions("combo"); } else { $form->setOptions( array( "combo" => $options["combo"] ) ); } */ ?> <table border="0" cellspacing="4" cellpadding="4"> <tr> <td colspan="3" align="left" valign="top"><br><b>Form</b></td> </tr> <tr> <td colspan="3" align="left" valign="top"> <table width="100%"> <tr bgcolor="#DCE1EF"> <td align="left" valign="top"><b>Element type</b></td> <td align="left" valign="top"><b>Validation rules</b></td> <td align="left" valign="top"><b>Element</b></td> <td align="left" valign="top"><b>What's new</b></td> </tr> <tr> <td colspan="4"> </td> </tr> <tr> <td align="left" valign="top">select</td> <td align="left" valign="top">custom validator</td> <td align="left" valign="top"> <?php $form->showElement("dependencies"); ?> </td> <td align="left" valign="top"> Advanced validation: every element can define a callback validation function that gets called before the default validation takes place. The "custom validator" can control the validation rules of itself and all other elements. This works on server side and on the client side with JavaScript. Check the source of this page to see the API. </td> </tr> <tr> <td colspan="4"> </td> </tr> <tr> <td align="left" valign="top">custom date</td> <td align="left" valign="top"></td> <td align="left" valign="top"> <?php $form->showElement("custom_date"); ?> </td> <td align="left" valign="top"> Custom element. </td> </tr> <tr> <td colspan="4"> </td> </tr> <tr bgcolor="#DCE1EF"> <td colspan="4"><b>Cooool stuff...</b></td> </tr> <tr> <td colspan="4"> </td> </tr> <tr> <td align="left" valign="top">textedit</td> <td align="left" valign="top">not available</td> <td align="center" valign="top" width="550" bgcolor="#DCE1EF"> <table> <tr> <td align="left" valign="middle"> <b>Font</b> <?php $form->showElement("textedit", "font"); ?> <b>Size</b> <?php $form->showElement("textedit", "fontsize"); ?> </td> </tr> </table> <table> <tr> <td align="left" valign="middle"> <?php $form->showElement("textedit", "bold"); $form->showElement("textedit", "italic"); $form->showElement("textedit", "underline"); $form->showElement("textedit", "strike"); ?> </td> <td align="left" valign="middle"> <?php $form->showElement("textedit", "left"); $form->showElement("textedit", "right"); $form->showElement("textedit", "center"); ?> </td> <td align="left" valign="middle"> <?php $form->showElement("textedit", "indent"); $form->showElement("textedit", "outdent"); ?> </td> <td align="left" valign="middle"> <?php $form->showElement("textedit", "txcolor_yellow"); $form->showElement("textedit", "txcolor_orange"); $form->showElement("textedit", "txcolor_red"); $form->showElement("textedit", "txcolor_green"); $form->showElement("textedit", "txcolor_blue"); $form->showElement("textedit", "txcolor_#0f0f0f"); $form->showElement("textedit", "txcolor_white"); ?> </td> <td align="left" valign="middle"> <?php $form->showElement("textedit", "bgcolor_wheat"); $form->showElement("textedit", "bgcolor_peachpuff"); $form->showElement("textedit", "bgcolor_darksalmon"); $form->showElement("textedit", "bgcolor_darksalmon"); $form->showElement("textedit", "bgcolor_darkseagreen"); $form->showElement("textedit", "bgcolor_skyblue"); $form->showElement("textedit", "bgcolor_whitesmoke"); $form->showElement("textedit", "bgcolor_white"); ?> </td> </tr> </table> <table> <tr> <td align="left" valign="middle"> <?php $form->showElement("textedit", "link"); $form->showElement("textedit", "unlink"); ?> </td> <td align="left" valign="middle"> <?php $form->showElement("textedit", "paragraph"); ?> </td> <td align="left" valign="middle"> <?php $form->showElement("textedit", "ol"); $form->showElement("textedit", "ul"); ?> </td> <td align="left" valign="middle"> <?php $form->showElement("textedit", "em"); $form->showElement("textedit", "pre"); ?> </td> <td align="left" valign="middle"> <?php $form->showElement("textedit", "h1"); $form->showElement("textedit", "h2"); $form->showElement("textedit", "h3"); ?> </td> <td align="left" valign="middle"> <?php $form->showElement("textedit", "sub"); $form->showElement("textedit", "sup"); ?> </td> </tr> </table> <table> <tr> <td align="left" valign="middle"> <?php $form->showElement("textedit", "cut"); ?> <?php $form->showElement("textedit", "copy"); ?> <?php $form->showElement("textedit", "paste"); ?> <?php $form->showElement("textedit", "delete");?> </td> <td align="left" valign="middle"> <?php $form->showElement("textedit", "selectall");?> <?php $form->showElement("textedit", "unselect");?> </td> <td align="left" valign="middle"> <?php $form->showElement("textedit", "overwrite"); ?> </td> </tr> <tr> </table> <table> <td align="left" valign="top"> <?php $form->showElement("textedit", "iframe"); ?> </td> </tr> </table> </td> <td align="left" valign="top"> New element - experimental. <p> MSHTML Editor. IE 4+ only. </td> </tr> <tr> <td colspan="4"> </td> </tr> <tr bgcolor="#DCE1EF"> <td colspan="4"><b>Date and Calendar</b></td> </tr> <tr> <td colspan="4"> </td> </tr> <tr> <td align="left" valign="top">date</td> <td align="left" valign="top">intro</td> <td align="left" valign="top"> <table> <tr> <td align="left" valign="top"> Year <?php $form->showElement("date_en2", "Y"); ?> </td> <td align="left" valign="top"> Month <?php $form->showElement("date_en2", "m"); ?> </td> <td align="left" valign="top"> Day <?php $form->showElement("date_en2", "d"); ?> </td> <td align="left" valign="top"> <?php $form->showElement("date_en2", "now"); ?> </td> </tr> </table> </td> <td align="left" valign="top"> New element, format: "Ymd". "Now" button. <p> "Now" button requires JavaScript. </td> </tr> <tr> <td colspan="4"><hr color="#DCE1EF"></td> </tr> <tr> <td align="left" valign="top">date</td> <td align="left" valign="top"></td> <td align="left" valign="top"> <?php $form->showElement("date_en"); ?> </td> <td align="left" valign="top"> Format: Y-m-d D/F/l/A/M, english options </td> </tr> <tr> <td colspan="4"><hr color="#DCE1EF"></td> </tr> <tr> <td align="left" valign="top">date</td> <td align="left" valign="top"></td> <td align="left" valign="top"> <?php $form->showElement("date_de"); ?> </td> <td align="left" valign="top"> Full featured format: aAdDFhHgGijlmnMswYyz, german options, preselected date. </td> </tr> <tr> <td colspan="4"><hr color="#DCE1EF"></td> </tr> <tr> <td align="left" valign="top">calendar</td> <td align="left" valign="top">not available</td> <td align="left" valign="top"> <table border> <tr bgcolor="#DCE1EF"> <td align="center" valign="top"> Month <?php $form->showElement("calendar", "month"); ?> </td> <td align="center" valign="top"> Year <?php $form->showElement("calendar", "year"); ?> </td> </tr> <tr> <td align="center" valign="top" colspan="2"> <?php $form->showElement("calendar", "calendar"); ?> </td> </tr> <tr bgcolor="#DCE1EF"> <td colspan="2" align="center" valign="top"> <?php $form->showElement("calendar", "prev"); ?> <?php $form->showElement("calendar", "now"); ?> <?php $form->showElement("calendar", "next"); ?> </td> </tr> </table> </td> <td align="left" valign="top"> New element - experimental. <p> Every (HTML) element of a complex form element can be adressed. E.g. $form->showElement("calendar", "now") to get the "today" button. </td> </tr> <tr> <td colspan="4"><hr color="#DCE1EF"></td> </tr> <tr> <td colspan="4"> </td> </tr> <tr bgcolor="#DCE1EF"> <td colspan="4"><b>Textinput</b></td> </tr> <tr> <td colspan="4"> </td> </tr> <tr> <td align="left" valign="top">combo</td> <td align="left" valign="top">length 3+</td> <td align="left" valign="top"> <?php $form->showElement("combo", "select"); ?><br> <?php $form->showElement("combo", "input"); $form->showElement("combo", "add"); ?> </td> <td align="left" valign="top"> New element. <p> Some JavaScript to add the input at the beginning of the option list of the select box. </td> </tr> <tr> <td colspan="4"><hr color="#DCE1EF"></td> </tr> <tr> <td align="left" valign="top">text</td> <td align="left" valign="top">length 3+,<br>Regexp ^[0-9]+[\.,]?[0-9]*$</td> <td align="left" valign="top"> <?php $form->showElement("numbers"); ?> </td> <td align="left" valign="top"> </td> </tr> <tr> <td colspan="4"><hr color="#DCE1EF"></td> </tr> <tr> <td align="left" valign="top">textarea</td> <td align="left" valign="top">length 10-40<br>Regexp ^[a-zA-Z ]+$</td> <td align="left" valign="top"> <?php $form->showElement("textarea"); ?> </td> <td align="left" valign="top"> </td> </tr> <tr> <td colspan="4"><hr color="#DCE1EF"></td> </tr> <tr> <td align="left" valign="top">password</td> <td align="left" valign="top">length 5+</td> <td align="left" valign="top"> <?php $form->showElement("pass"); ?> </td> <td align="left" valign="top"> </td> </tr> <tr> <td colspan="4"><hr color="#DCE1EF"></td> </tr> <tr> <td align="left" valign="top">password</td> <td align="left" valign="top">length 3+,<br>Regexp ^[0-9]+[\.,]?[0-9]*$</td> <td align="left" valign="top"> <?php $form->showElement("secret_numbers"); ?> </td> <td align="left" valign="top"> </td> </tr> <tr> <td colspan="4"> </td> </tr> <tr bgcolor="#DCE1EF"> <td colspan="4"><b>Fileupload</b></td> </tr> <tr> <td colspan="4"> </td> </tr> <tr> <td align="left" valign="top">fileupload</td> <td align="left" valign="top">length 1+<br>Regexp [\.[html|htm]$]</td> <td align="left" valign="top"> <?php $form->showElement("fileupload"); ?> </td> <td align="left" valign="top"> Fileupload plus PHP's MAX_FILE_SIZE hidden field. </td> </tr> <tr> <td colspan="4"> </td> </tr> <tr bgcolor="#DCE1EF"> <td colspan="4"><b>Checkbox and radio button</b></td> </tr> <tr> <td colspan="4"> </td> </tr> <tr> <td align="left" valign="top">checkbox</td> <td align="left" valign="top"></td> <td align="left" valign="top"> <?php $form->showElement("check"); ?> </td> <td align="left" valign="top"> </td> </tr> <tr> <td colspan="4"><hr color="#DCE1EF"></td> </tr> <tr> <td align="left" valign="top">radio</td> <td align="left" valign="top"></td> <td align="left" valign="top"> <?php $form->showElement("radio"); ?> </td> <td align="left" valign="top"> New attribute "elname" gives access to a single radio button in a group of radio buttons with the same HTML name (attribute: "name"). </td> </tr> <tr> <td colspan="4"><hr color="#DCE1EF"></td> </tr> <tr> <td align="left" valign="top">radio</td> <td align="left" valign="top"></td> <td align="left" valign="top"> <?php $form->showElement("radio2[0]"); ?><br> <?php $form->showElement("radio2[1]"); ?> </td> <td align="left" valign="top"> Demonstration of the "elname" attribute. </td> </tr> <tr> <td colspan="4"> </td> </tr> <tr bgcolor="#DCE1EF"> <td colspan="4"><b>Buttons</b></td> </tr> <tr> <td colspan="4"> </td> </tr> <tr> <td align="left" valign="top">submit</td> <td align="left" valign="top"></td> <td align="left" valign="top"> <?php $form->showElement("plainsubmit"); ?> </td> <td align="left" valign="top"> </td> </tr> <tr> <td colspan="4"><hr color="#DCE1EF"></td> </tr> <tr> <td align="left" valign="top">image</td> <td align="left" valign="top"></td> <td align="left" valign="top"> <?php $form->showElement("imagesubmit"); ?> </td> <td align="left" valign="top"> </td> </tr> <tr> <td colspan="4"> </td> </tr> <tr bgcolor="#DCE1EF"> <td colspan="4"><b>Alpha</b></td> </tr> <tr> <td colspan="4"> </td> </tr> <tr> <td align="left" valign="top">tree</td> <td align="left" valign="top">intro option</td> <td align="left" valign="top"> <?php $form->showElement("treeview"); ?> </td> <td align="left" valign="top"> New element - experimental, alpha! </td> </tr> <tr> <td colspan="4"> </td> </tr> <tr bgcolor="#DCE1EF"> <td colspan="4"><b>Serverside validation</b></td> </tr> <tr> <td colspan="4"> </td> </tr> </table> </td> </tr> <?php // get error messages list($msg, $flags) = $form->validate(); if ("" != $msg) { printf('<tr><td colspan=3><font volor="red">All together:<p>%s</font></td></tr>', $msg); reset($flags); print '<tr bgcolor="#f0f0f0"><td colspan=3><font color="red"><b>Error Messages</b></font></td></tr>'; while (list($name, $message)=each($flags)) printf('<tr bgcolor="#f0f0f0"><td align=left valign=top><pre>%s</pre></td><td align=left valign=top colspan=2><pre>%s</pre></td></tr>%s', $name, $message, "\n" ); } ?> </table> <?php // closing </form> tag $form->Finish();
print "<hr><h1>This page</h1>"; highlight_string(str_replace("\t", " ", implode("", file("./index.php4")))); print "<hr><h1>Form definition</h1>"; highlight_string(str_replace("\t", " ", implode("", file("./example_form.inc")))); ?> </body> </html>
Form definition
<?php // This is your form definition. It's a class extending form which // provides a method Init and optionally custom validators. // // - requiered form definition: void Init(void) // - optional custom validators: void Example_Validator(void) // class example_form extends form { // define/build the form function Init() { $this->setDefaults( array ( "textsize" => 20, "textmaxlength" => 100) ); // make sure to escape special characters! $this->setJSError("Ooops some errors...\n\n", "\n\nPlease correct them..."); // define elements $this->addElement( array ( "name" => "dependencies", "type" => "select", "options" => array ( "0" => "validate everything", "1" => "don't validate pass", "5" => "don't validate pass, numbers and secret_numbers", "7" => "don't care on length_e of pass and valid_e of textarea" ), "value" => "-1", "intro" => array ( "-1" => "Custom validators..."), "size" => 1, "frozen" => false, "multiple" => false, "validator" => "DependencieValidator", "js_validator" => 'function DependencieValidator(formobj) {
var i, v; // get the value of the select box dependencies with (document.forms[formobj.name].elements["dependencies"]) for (i = 0; i < options.length; i++) if (options[i].selected) { v = options[i].value; break; } switch (v) { case "1": // do not validate the element pass formobj.val_off("pass", "lri"); break; case "5": // do not validate pass, numbers and secret_numbers formobj.val_off("pass", "lri"); formobj.val_off("numbers", "lri"); formobj.val_off("secret_numbers", "lri"); break; case "7": // turn off textarea regexp and pass length validation formobj.val_off("textarea", "r"); formobj.val_off("pass", "l"); break; } }' ) );
$this->addElement( array( "name" => "custom_date", type => "custom_date") ); $this->addElement( array ( "name" => "textedit", "type" => "textedit", "iframe_src" => "form_textedit_iframe.html", "iframe_width" => 540, "iframe_height" => 100, "iframe_border" => 1, "iframe_scrolling" => "auto", "iframe_warning" => "Sorry IE 4+ only." ) ); $this->addElement( array ( "name" => "calendar", "type" => "calendar", "year" => 2000, "month" => 8, "day" => 23, "now" => "today", "prev" => " < ", "next" => " > " ) );
$this->addElement( array ( "name" => "pass", "type" => "password", "value" => "", "size" => 10, "readonly" => false, "accesskey" => "a", "tabindex" => 2, "minlength" => 5, "maxlength" => 20, "length_e" => "A password must have 5 to 20 characters." ) ); $this->addElement( array ( "name" => "numbers", "type" => "text", "frozen" => false, "valid_e" => "Only numbers are allowed, no other characters.", "valid_regex" => "^[0-9]+[\.,]?[0-9]*$", "minlength" => 3, "length_e" => "Enter at least 3 numbers." ) ); $this->addElement( array ( "name" => "secret_numbers", "type" => "password", "frozen" => false, "valid_e" => "Only numbers are allowed.", "valid_regex" => "^[0-9]+[\.,]?[0-9]*$", "minlength" => 3, "length_e" => "Enter at least 3 numbers." ) );
$this->addElement( array ( "name" => "textarea", "type" => "textarea", "frozen" => false, "value" => "I wish the sun would shine.", "cols" => 40, "rows" => 2, "valid_e" => "Sorry, no other characters allowed but a-z/A-Z.", "valid_regex" => "^[a-zA-Z ]+$", "valid_icase" => true, "minlength" => 10, "maxlength" => 40, "length_e" => "Type between 10 and 40 characters." ) );
$this->addElement( array ( "name" => "fileupload", "type" => "fileupload", "size" => 10, "maxfilesize" => 100, "accept" => "text/html", "minlength" => 1, "length_e" => "You must provide a file.", "valid_regex" => "[html|htm]$", "valid_icase" => false, "valid_e" => "I'm afraid the filetype is incorrect. It's not a HTML File, is it?" ) );
$this->addElement( array ( "name" => "combo", "type" => "combo", "options" => array ( "0" => "Tourist Information Kiel", "1" => "Wirtschaftsakademie SH", "2" => "Leab Dynawatt" ), "value" => "-1", "size" => 1, "inputsize" => 20, "sort" => "up", "intro" => array ( "-1" => "Choose a project..." ), "intro_e" => "It's invalid to choose the intro message...", "minlength" => 3, "maxlength" => 40, "length_e" => "The new entry gets refused. It must be 3 to 40 characters long.", "frozen" => false, "add" => "add entry" ) ); /* $this->addElement( array ( "name" => "treeview", "type" => "tree", "value" => "", #"openall" => true, "size" => 1, "accesskey" => "accesskey", "tabindex" => 3, "intro" => array( "-1" => "Please choose..."), "intro_e" => "Please choose an option!", "step" => " ", "open" => "[+]", "close" => "[-]", "delimiter" => "/", "tree" => array ( "1" => array( "label" => "Menu 1", "value" => "artgr1" ), "2" => array( "label" => "Menu 2", "value" => "artgr7" ), "1/2/1" => array( "label" => "Menu 1.2.1", "value" => "artgr4" ), "1/2/2" => array( "label" => "Menu 1.2.2", "value" => "artgr22" ), "1/2/3" => array( "label" => "Menu 1.2.3", "value" => "artgr52" ), "1/2/2/1" => array( "label" => "Menu 1.2.2.1", "value" => "artgr5" ), "1/2/2/2" => array( "label" => "Menu 1.2.2.2", "value" => "artgr58" ), "1/1" => array( "label" => "Menu 1.1", "value" => "artgr2" ), "1/2" => array( "label" => "Menu 1.2", "value" => "artgr3" ), "1/3" => array( "label" => "Menu 1.3", "value" => "artgr33" ), "1/4" => array( "label" => "Menu 1.4", "value" => "artgr34" ), "2/2" => array( "label" => "Menu 2.2", "value" => "artgr8" ) ) ) ); */ $this->addElement( array ( "name" => "check", "type" => "checkbox", "value" => 7, "accesskey" => "k", "tabindex" => 12, "checked" => false, "frozen" => false ) );
$this->addElement( array ( "name" => "plainsubmit", "type" => "submit", "value" => "test it!", "width" => 10, "height" => 20, "accesskey" => "k", "tabindex" => 12, "frozen" => false ) ); $this->addElement( array ( "name" => "imagesubmit", "type" => "image", "value" => "senden", "src" => "../images/form_info.gif", "width" => 10, "height" => 20, "align" => "left", "alt" => "alt", "hspace" => 0, "vspace" => 0, "border" => 0, "accesskey" => "k", "tabindex" => 12, "frozen" => false ) ); $this->addElement( array ( "name" => "radio", "elname" => "radio[0]", "type" => "radio", "value" => 1, "accesskey" => "k", "tabindex" => 13, "frozen" => false ) ); $this->addElement( array ( "name" => "radio", "elname" => "radio[1]", "type" => "radio", "value" => 2, "checked" => true, "accesskey" => "k", "tabindex" => 13, "frozen" => false ) ); $this->addElement( array ( "name" => "radio2", "elname" => "radio2[0]", "type" => "radio", "value" => 7, "accesskey" => "k", "tabindex" => 13, "frozen" => false ) ); $this->addElement( array ( "name" => "radio2", "elname" => "radio2[1]", "type" => "radio", "value" => 12, "checked" => true, "accesskey" => "k", "tabindex" => 13, "frozen" => false ) );
$this->addElement( array ( "name" => "date_en2", "type" => "date", "format" => "Ymd", "language" => "en", "now" => "now", "intro" => "-%-", "intro_e" => "Please select an option." ) ); $this->addElement( array ( "name" => "date_en", "type" => "date", "format" => "g Y-m-d D/F/l/A/M", "language" => "en", "now" => "now", "intro" => "-%-", "intro_e" => "Please select an option." ) ); $this->addElement( array ( "name" => "date_de", "type" => "date", "format" => "aAdDFhHgGijlmnMswYyz", "language" => "de", "now" => "jetzt", "preload" => true, "intro" => "-%-", "intro_e" => "Please select an option." ) );
// autoload the form with HTTP_[POST|GET]_VARS $this->autoloadValues();
// All the new form classes have a method that dumps datastructures // of objects and arrays. Use this function while debugging to get // an idea of the internal datastructes // $this->introspection("FORMS"); } // end func Init // Custom Validator // The custom validator gets called before the default validators start // working. The custom validator has access to the values of all form // elements, sets errors and or turns the default validation of elements on/off function DependencieValidator() { // get the value of the element dependencits $value = $this->getValue("dependencies"); switch ($value) { case 1: // don't validate the element pass $this->ValidationOff( "pass" ); break; case 5: // don't validate (all events of) pass, numbers, secret_numbers $ellist = array( "pass" => "all", "numbers" => "all", "secret_numbers" => "all" ); $this->ValidationOff($ellist); break; case 7: // don't care on: // - valid_e/valid_regexp of the element textarea // - length_e/minlength/maxlength of the element pass $ellist = array( "textarea" => "valid", "pass" => "length" ); $this->ValidationOff($ellist); break; } } // end func dependenciesdependencies } // end class example_form ?>
< ^ >
|