oracular (3) CGI::Formalware.3pm.gz

Provided by: libcgi-formalware-perl_1.16-4_all bug

NAME

       "CGI::Formalware" - Convert an XML file into a suite of CGI forms.

SYNOPSIS

       In your browser, type: localhost/cgi-bin/x.pl

       where x.pl contains nothing more than:

               #!perl -w
               use strict;
               use lib 'C:/Perl';
               use lib 'C:/Perl/Scripts/General';      # Ie $PERL5LIB.
               use CGI::Formalware;
               my($form) = CGI::Formalware -> new({form2file => 1, debug => 1});
               $form -> process();
               exit(0);

       Upon starting, "CGI::Formalware" asks for the name of your XML file, which is assumed to be in cgi-bin/.

DESCRIPTION

       To provide a type of repository for frequently used scripts, which can then be executed locally or
       remotely (via Net::Telnet), by just entering a password (for remote scripts), and clicking.

INSTALLATION

       You install "CGI::Formalware", as you would install any perl module library, by running these commands:

               perl Makefile.PL
               make
               make test
               make install

       If you want to install a private copy of "CGI::Formalware" in your home directory, then you should try to
       produce the initial Makefile with something like this command:

               perl Makefile.PL LIB=~/perl
                       or
               perl Makefile.PL LIB=C:/Perl/Site/Lib

       If, like me, you don't have permission to write man pages into unix system directories, use:

               make pure_install

       instead of make install. This option is secreted in the middle of p 414 of the second edition of the
       dromedary book.

AUDIENCE

       Webmasters.

SECURITY

       None. Even worse, "CGI::Formalware" is designed to circumvent a web server's concept of what Apache calls
       DocumentRoot.

CONSTRUCTOR new

       new takes either no parameters, or an anonymous hash. See the example above.  Keys and values recognized
       are:

       •   debug => 1 means turn on debugging. At the moment this opens and closes the file CGI-Formalware.log,
           but does not write anything to it

       •   form2file => 1 means output each form to a file, using the name given by the form's formFileName
           attribute. The forms are written to cgi-bin/.  If the form has no such attribute, this option is
           ignored. See example below

       •   timeScripts => 1 means report elapsed time at the end of each script's output

HIGHLIGHTS

       •   Read an XML file, whose format is fixed, and generate a suite of CGI forms

       •   A cascading style sheet can be specified for each form individually

       •   A Table of Contents may appear on each form

       •   Each form is more-or-less assumed to contain a list of scripts

       •   Tokens in the XML correspond to a few functions available in Lincoln Stein's CGI.pm. Available tokens
           are:

           •   fileField

                       <fileField
                               name            = 'fileName'
                               prompt          = 'Filename: '
                               size            = '60'
                               override        = '0'
                       />

           •   horizontalRule

                       <horizontalRule />

           •   paragraph

                       <paragraph />

                       <paragraph text = 'Output a comment' />

           •   radioGroup

                       <radioGroup
                               name            = 'serverName'
                               prompt          = 'Server name: '
                               value           = 'Example|Simple|Test'
                               columns         = '1'   # Optional. Defaults to '1'. Use a string, not a digit
                       />

           •   textField

                       <textField
                               name            = 'username'
                               prompt          = 'Username: '
                               value           = ''
                               size            = '15'
                               override        = '0'
                       />

           Over time, more functions will be added.

       •   A textField with the name 'password' is treated as a password field. Also, the entity 'script'
           defines a Unix- or DOS-type batch file

       •   These entities produce on-screen fields, or, in the case of the scripts, a vertical array of radio
           buttons

       •   So, to run a script you fill in whatever fields the script uses and then select that script

       •   Macros in the scripts, eg %fileName% are expanded with the current value of the field whose name
           appears between the % signs

       •   A script whose last line is 'ftp -n -v' is recognized and handled specially.  Your form must contain
           textFields called 'host', 'username' and 'password' and 'fileName'. A binary 'get' is performed. This
           will be made more flexible one day

       •   Scripts have an attribute 'type', which can be 'local' or 'remote'.

           Remote scripts are passed to Net::Telnet, on the assumption that you know what you are doing. Your
           form must contain textFields called 'host', 'username' and 'password'

       Forms are linked with 'Previous form', 'Next form' buttons.

       Any previously-entered textFields, except those whose name is 'password', are remembered when you return
       to a form. This is very convenient.

       The password values are zapped by CGI.pm, not by me. This is a security feature.  It means you can walk
       away from your system and not have someone gain automatic access to a remote system.

CASCADING STYLE SHEETS

       Each form entity may have a 'css' attribute, giving the name of the CSS file for that form. These
       attribute values are like '/CGI-Formalware.css', which, under Apache, means this value is prefixed with
       DocumentRoot. That is, the path to the CSS is a URI, and will not be seen if in cgi-bin/.

       The compulsory elements are: H1, H2 and P.TOC.

       Herewith a sample:

               H1
               {
                       font-size:                      20pt;
                       alignment:                      center;
                       color:                          teal;
               }

               H2
               {
                       font-size:                      16pt;
                       font-style:                     italic;
                       color:                          maroon;
               }

               P.TOC
               {
                       font-size:                      12pt;
                       color:                          white;
                       background-color:       blue;
               }

ENVIRONMENT VARIABLES

       None.

INPUT DATA VALIDATION

       These checks are performed:

       •   Each forms entity may have a 'tocEntry' attribute. If present, and if the tocVisible attribute is
           'true', then a Table of Contents is put on each form, headed by this text. The default is 'Contents'

       •   Each forms entity may have a 'tocVisible' attribute. If its value is 'True', then a Table of Contents
           is put on each form, headed by the value of 'tocEntry'. The default is 'True'

       •   Each form entity must have 'heading' and 'tocEntry' attributes

       •   Each form entity must have a unique 'heading' attribute

       •   Each form entity may have a unique 'formFileName' attribute. If present, then this file name is used
           to output the form to a file if the constructor option new({form2file => 1}) is used

       •   Each fileField entity must have 'name', 'prompt', 'value' and 'size' attributes

       •   Each textField entity must have 'name', 'prompt', 'value' and 'size' attributes

       •   Each scripts entity must have a 'heading' attribute

       •   Each script entity must have 'heading', 'type' and 'line' attributes

       •   Each script entity must have a unique 'heading' attribute

       •   Each script entity's 'type' attribute must be 'local' or 'remote'

XML DTD

       TBA.

XML FILE FORMAT

       Herewith a sample:

               <forms
                       tocEntry        = 'Forms'
                       tocVisible      = 'True'
               >
               <form
                       heading                 = 'Unix Command Menu'
                       tocEntry                = 'Unix menu'
                       css                             = '/CGI-Formalware.css'
                       formFileName    = '1.html'
               >
                       <horizontalRule />

                       <radioGroup
                               name    = 'host'
                               prompt  = 'Host: '
                               value   = 'bigBox|littleBox'
                       />

                       <paragraph />

                       <textField
                               name            = 'username'
                               prompt          = 'Username: '
                               value           = ''
                               size            = '15'
                               override        = '0'
                       />

                       <textField
                               name            = 'password'
                               prompt          = '  Password: '
                               value           = ''
                               size            = '15'
                               override        = '0'
                       />

                       <horizontalRule />

                       <scripts
                               heading                 = 'Unix Scripts'
                               numberScripts   = 'Yes'
                       >
                               <script
                                       heading         = 'Files in home directory'
                                       type            = 'remote'
                                       line1           = 'dir'
                               />
                               <script
                                       heading         = 'Tags in repository'
                                       type            = 'remote'
                                       line1           = 'cd $M'
                                       line2           = 'getTags'
                               />
                       </scripts>
               </form>

               <form
                       heading         = 'DOS Command Menu'
                       tocEntry        = 'DOS menu'
               >

                       <horizontalRule />

                       <radioGroup
                               name    = 'host'
                               prompt  = 'Host: '
                               value   = 'bigBox|littleBox'
                       />

                       <paragraph text = 'Enter a username and a password.' />

                       <textField
                               name            = 'username'
                               prompt          = 'Username: '
                               value           = ''
                               size            = '15'
                               override        = '0'
                       />

                       <textField
                               name            = 'password'
                               prompt          = '  Password: '
                               value           = ''
                               size            = '15'
                               override        = '0'
                       />

                       <horizontalRule />

                       <fileField
                               name            = 'fileName'
                               prompt          = 'Filename: '
                               size            = '60'
                               override        = '0'
                       />

                       <horizontalRule />

                       <scripts
                               heading = 'PC Scripts'
                       >

                               <script
                                       heading         = 'Files in root directory'
                                       type            = 'local'
                                       line1           = 'cd \'
                                       line2           = 'dir'
                               />
                               <script
                                       heading         = 'FTP something somewhere'
                                       type            = 'local'
                                       line1           = 'ftp -n -v'
                               />
                               <script
                                       heading         = 'Untar a file'
                                       type            = 'local'
                                       line1           = 'cd \'
                                       line2           = 'tar mxvzf %fileName%'
                               />
                       </scripts>
               </form>
               </forms>

NESTED FORMS

       Nope, I don't recognize them. Maybe one day...

AUTHOR

       "CGI::Formalware" was written by Ron Savage <ron@savage.net.au> in 1999.

       Available from http://savage.net.au/Perl.html.

LICENCE

       Australian copyright (c) 1999 Ron Savage.

               All Programs of mine are 'OSI Certified Open Source Software';
               you can redistribute them and/or modify them under the terms of
               The Artistic License, a copy of which is available at:
               http://www.opensource.org/licenses/index.html