CGI::Formalware

Table of contents

NAME
SYNOPSIS
DESCRIPTION
INSTALLATION
AUDIENCE
SECURITY
CONSTRUCTOR new
HIGHLIGHTS
NAVIGATION
CASCADING STYLE SHEETS
ENVIRONMENT VARIABLES
INPUT DATA VALIDATION
XML DTD
XML FILE FORMAT
NESTED FORMS
REQUIRED MODULES
AUTHOR
LICENCE

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:

HIGHLIGHTS

NAVIGATION

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:

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...

REQUIRED MODULES

AUTHOR

CGI::Formalware was written by Ron Savage in 1999.

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

LICENCE

Australian copyright © 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