# Perl Support File # Secondary Form Variables # Variables used by all scripts: /Web_store/ws_global.setup # File Permissions: 644 -rw-r--r-- ############################################################################ # Form.Catalog.setup # #==========================================================================# # Copyright (c) 1996 - 2002, RDC Software # # WebStore@ratite.com http://www.ratite.com/Perl/WebStore.shtml # # Version: 4.15.00 Date: 01/01/2002 # # # # Full copyright notice can be found in the following files for the # # listed license type: # # # # Single User License: /Docs/Copyright_SingleUser.html # # Server License: /Docs/Copyright_Server.html # # # # This copyright notification can not be altered or removed from this file.# #==========================================================================# # # # Call secondary forms using one of the following query strings: # # # # ?form=Form.Catalog&cart_id= # # ?form=Form.Catalog&frontpage=Y&cart_id= # # ?form=Form.Catalog&page=frontpage.html&cart_id= # # ?form=Form.Catalog&category=Page.html&cart_id= # # ?form=Form.Catalog&category=DbaseCategory&cart_id= # # ?form=Form.Catalog&category=DbaseCategory&page=Page.html&cart_id= # # # # The use of category=, frontpage=Y, and page= allows you to define the # # the HTML page or the database category to be loaded after forms # # submission. The use of cart_id= is required to maintain the client's # # shopping cart file reference number. # # # # All form file names must end in '.setup' # # The script adds '.setup' to the file name received in the query string # # if the received file name does not end in '.setup'. # # # #==========================================================================# # Backslash all @ signs --> \@ <-- Perl 5 compatibility. # # Variables containing @ signs must be enclosed in " (double quotes). # # # # All other variables are enclosed in ' (single quotes). # # # # If the value you store in a variable enclosed in single quotes requires # # the use of a single quote, backslash the imbedded single quote. # ############################################################################ # $mail_file is the | (pipe) delimited flatfile mailing list database # consisting of e-mail addresses and names. When a Reseller form is submitted, # the reseller's e-mail address and name are added to $mail_file if the # submitted e-mail address does not exist in $mail_file. # WebStore adds '.list' to the filename defined in $mail_file if the # filename does not end in '.list'. # The mailing list defined in $mail_file in any secondary form file replaces # the mailing list defined in $mail_file of the store's setup file, # outlet.setup, for the script process which processes the secondary form # submission. # Example database record: susan@cgicentral.net|Susan Smith $mail_file = 'Free.Catalog.list'; # When $join_list = '1', resellers are added to the mailing list defined in # $mail_file regardless of the use or condition of the form field 'joinlist'. # Setting $join_list = '' disables automatic addition to the mailing list. # A form field for 'joinlist' must be included on the form and the client # must choose to be added to the mailing list. # $join_list defined in any secondary form file replaces the value of $join_list # defined in the store's setup file, outlet.setup, for the script process which # processes the secondary form submission. $join_list = '1'; # Other variables you may wish to redefine in this file include: # VARIABLE FILE VARIABLE IS DEFINED IN # # $admin_email ws_global.setup # $company_email ws_global.setup # $dns_lookup ws_global.setup # @company outlet.setup # $country_file outlet.setup #--------------------------------------------------------------------------# # Form #--------------------------------------------------------------------------# # %Form is a hash of arrays listing all form input fields for this form. # EXAMPLE: $Form{0}[5] # # {0} An array's KEY value. KEY values will be reference by their numeric # value in the explanations below (1, 2, 3, etc.). # # [5] An array's element reference. Element numeric values will be spelled # in the explanations below (one, two, three, etc.) # # Specific arrays will be referenced as $Form{0}. # # A specific element within a specific array will be referenced as # $Form{0}[5]. # Numeric array KEYS allow the Webstore script to sort the fields in ascending # order for printing to the client's web browser, in the e-mail to the # administrator, and the confirmation e-mail sent to the client. # Arrays 1 - 10 are reserved and can not be used. # Each form input field is printed within a table row preceded by a hidden # HTML tag in the "Document Source" containing the field's name from each # field's array element one: # # Each form field table row also contains a named anchor # consisting of the field array's KEY. # SPECIFIC FORM FIELD NAMES (Element zero) # The functions for the form field names below are restricted to 'select', # 'text', and 'password' input types. # "country", exact match # When a field's name equals "country", the script forces the field to required. # "email", exact match # When a field's name equals "email", the script forces the field to required # and checks the field's contents for minimum e-mail address syntax, # Text@Text.Text. The domain name present in the e-mail address will be checked # using nslookup according to the value of $dns_lookup in ws_global.setup. # Ending in "email", case insensitive # When a field's name ends in "email", case insensitive, the script checks the # field's contents for minimum e-mail address syntax, Text@Text.Text. # The domain name present in the e-mail address will be checked using nslookup # according to the value of $dns_lookup in ws_global.setup. # Ending in "img", case insensitive # When a field's name ends in "img" case insensitive, the field's contents # will be checked for a minimum of: http://Text.Text/Page.xxx. # xxx = .gif, .jpg, .jpeg, or .png. # Ending in "imgexist", case insensitive # When a field's name ends in "imgexist" case insensitive, the field's contents # will be checked for a minimum of: http://Text.Text/Page.xxx. # xxx = .gif, .jpg, .jpeg, or .png. # The image must exist before form submission will be accepted. # # The libwww-perl library is used to check the existence of the image url. # If the libwww-perl library has not been installed on your server, the image # url will not be checked for existence. # Download libwww-perl: http://search.cpan.org/search?module=LWP # Ending in "name", case insensitive # When a field's name ends in "name", the field's contents will be checked for # a minimum of two alpha-numeric strings, separated by a space. # "password1", exact match # When a field's name equals "password1", the script forces the field to # required and checks the field for minimum length of eight characters. # "password1" and "password2", exact match of both field names # Password verification will be performed if the array KEYS for these password # fields are sequential, whole numbers (23 & 24, 31 & 32, 57 & 58, etc.) with # "password1" preceding "password2". # Ending in "url", case insensitive # When a field's name ends in "url", case insensitive, the field's contents # will be checked for a minimum of: http://Text.Text # Ending in "urlexist", case insensitive # When a field's name ends in "urlexist", case insensitive, the field's contents # will be checked for a minimum of: http://Text.Text # The url must exist before form submission will be accepted. # # The libwww-perl library is used to check the existence of the url. # If the libwww-perl library has not been installed on your server, the url # will not be checked for existence. # Download libwww-perl: http://search.cpan.org/search?module=LWP # Ending in "urlpage", case insensitive # When a field's name ends in "urlpage" case insensitive, the field's contents # will be checked for a minimum of: http://Text.Text/Page.xxx. # xxx = .htm, .html, .phtml, or .shtml. # Ending in "year", case insensitive, 'select' input type # When a field's name ends in "year", case insensitive, the script will # generate a drop down select element consisting of years (four digit format), # spanning ten years from the current year. #--------------------------------------------------------------------------# # The contents of array 0 are used for the form's page header text and # table width values. # # EXAMPLE: Page Header Text Row # # KEY zero one two three four five six # '0' => ['center', 'Request Form', 'left', 'Text', '85%', '80%', '425'], # # '0': The array's KEY (index number). # # zero: Alignment attribute for text in element one. # Text in element one will be centered if element zero is set to ''. # # one: Text printed in a table row at the top of the form page. # HTML code may be used. # The script prints form submission error messages below this row. # When submission error messages are printed, the contents of # element three are not printed to the web browser. # # two: Alignment attribute for text in element three. Text in element # three will be centered if element two is set to ''. # # three: Text printed in a table row below element one's table row. # HTML code may be used. # # four: Width attribute for the top of page table containing element one # and element three table rows. Width may be a percentage of the # browser's window or pixel count. If no value is placed in element # four, the script sets this table's width at '85%'. # # five: Width attribute for section header tables (xxH). # Width may be a percentage of the browser's window or pixel count. # If no value is placed in element five, the script uses the value # present in element four. If no value is placed in element four, # the script sets the table's width at '85%'. # # six: Width attribute for tables containing form elements. # Width must be a 3 digit whole number. If no value is placed in # element six or element six is mis-configured, the script sets the # width at '425' for these tables. # # # NOTE: If no text is placed in element three, configure as follows: # # '0' => ['center', 'Request Form', '', '', '85%', '80%'], # # $Form{0} is optional and may be removed from %Form. # The script will set table widths as described above when # $Form{0} is not defined. Text to be printed at the top # of the form may be placed in sub pre_form_html. # END OF: Array 0 #--------------------------------------------------------------------------# # Array KEYS ending with H (xxH) are section headers. # # EXAMPLE: Section Header # # KEY zero one two three # '10H' => ['center', 'Mailing Address', 'left', 'Text'], # # '10H': The array's KEY (index number). # # zero: Alignment attribute for text in element one. # Text in element one will be centered if element zero is set to ''. # # one: Text printed in a table row at the top of the form. The text is # also used in e-mail messages to subdivide form field data into # visual sections. # HTML code can not be used. # # two: Alignment attribute for text in element three. Text in element # three will be centered if element two is set to ''. # # three: Text printed in a table row below element one's table row. # HTML code may be used. # # An opening tag is printed for each Section Header array # detected, closing the previous
. # # NOTE: If no text is placed in element three, configure as follows: # # '10H' => ['center', 'Mailing Address'], # # NOTE: Elements zero and one are required. If you remove all text from # element one, the script prints the following error message in # the table's row: # # No Header Text: $Form{10H}[1] # END OF: Section Header #--------------------------------------------------------------------------# # Array KEYS ending with C (xxC) are text comment rows or spacing rows. # # EXAMPLE: Comment Row # # KEY zero one # '70C' => ['left', 'Please complete the survey information below.'], # # '70C': The array's KEY (index number). # # zero: Alignment attribute for text in element one. # Text in element one will be centered if element zero is set to ''. # # one: Text printed in a table row with COLSPAN=3, the total number # of columns in form tables. HTML code may be used. # # # NOTE: When text placed in a comment row exceeds 55 characters, the script # sets the row's width attribute to the value of $Form{0}[5] when # $Form{0}[5] is a decimal value. When $Form{0}[5] is a percentage # value or it is set to '', the script sets width to 425. # # # EXAMPLE: Using Comment Array as a Space Row: # # '11C' => [], # # With no elements defined in a Comment Row, the script prints a table # row with a height of 10, . # END OF: Comment Row #--------------------------------------------------------------------------# # Array KEYS greater than or equal to 90 and ending with S (9xS) are for # form submission buttons and associated text. # # EXAMPLE: Submit Button Row # # KEY zero # '91S' => ['center', # # one # ' # # ', # # two # 'center', # # three # qq! # Text # !], # # '91S': The array's KEY (index number). # # zero: Alignment attribute for the form buttons in element one. # Form buttons in element one will be centered in a table row if # element zero is set to ''. # # one: Form submit buttons must be placed in this element. # # A form submit button named "chkform" must exist in element one of a # %Form array greater than or equal to 90S or WebStore will not print # the contents of any array greater than or equal to 90. When the # button is not detected, WebStore prints an error message at the top # of the page, informing you the form submit button did not exist in an # array greater than or equal to 90S. # # two: Alignment attribute for text in element three. # Text in element three will be centered in a table row if element # two is set to ''. # # three: HTML code and associated text are placed in this element. # # Note the use of href anchors in element three, and # . The script prints name anchors at the beginning of # each form input row which corresponds to the form input's array KEY. # You may add href anchors to point to any field printed to the web # browser. # END OF: Submit Button Row #--------------------------------------------------------------------------# # Form INPUT TYPES which may be defined in %Form include: # # checkbox, password, radio, select, text, textarea # EXAMPLE 1 of 2: INPUT TYPE="checkbox" # # KEY zero one two three four five # '21' => ['joinlist', 'Field Label', 'checkbox', 'Descriptive Text', '', ''], # # '21': The array's KEY (index number). # # zero: # # one: Descriptive text printed to e-mail messages. # HTML code can not be used. # # two: # # three: Descriptive text printed in e-mail messages. # HTML code can not be used. # # four: Required/Optional Field: Not used # checkbox inputs are forced OPTIONAL regardless of the value # of element four. # # five: Text printed in a table row below the form element in # the same column as the form element. HTML code may be used. # # # NOTE: If you do not place text in element five, elements four and # five may be omitted: # # '21' => ['joinlist', 'Join our mailing list?', 'checkbox', 'Yes'], # # The use of CHECKED~ is not allowed in checkbox inputs and # will be removed by the script if present. # EXAMPLE 2 of 2: INPUT TYPE="checkbox" # # KEY zero one two three four five # '21' => ['joinlist', '', 'checkbox', 'Add me to your mailing list', '', ''], # # '21': The array's KEY (index number). # # zero: # # one: Descriptive text printed in e-mail messages. # Not used in this example. # HTML code can not be used. # # two: # # three: Descriptive text printed in e-mail messages. # HTML code can not be used. # # four: Required/Optional Field: Not used # checkbox inputs are forced OPTIONAL regardless of the value # of element four. # # five: Text printed in a table row below the form element in # the same column as the form element. HTML code may be used. # # # NOTE: If you do not place text in element five, elements four and # five may be omitted: # # '21' => ['joinlist', '', 'checkbox', 'Add me to your mailing list'], # # The use of CHECKED~ is not allowed in checkbox inputs. # CHECKED~ will be removed by the script if present. # END OF: INPUT TYPE="checkbox" #--------------------------------------------------------------------------# # EXAMPLE: INPUT TYPE="password" and INPUT TYPE="text" are identical # # Field 12: # # KEY zero one two three four five # '12' => ['name', 'Name', 'text', 'SIZE="30" MAXLENGTH="100"', 'R', ''], # # '12': The array's KEY (index number). # # zero: # # one: Descriptive text printed left of the form element and # in e-mail messages. HTML code can not be used. # # two: # # three: Attributes for the (size, maxlength, etc.) # # four: Required: Set to 'R' # Form submission is not accepted until field is completed. # # Optional: Set to '' or text may be included in element four. # When the length of text exceeds 20 characters, the text is placed # in a table row beneath the field. HTML code may be used. # OPTIONAL text is printed in . # # five: Text printed in a table row below the form element in # the same column as the form element. HTML code may be used. # # # NOTE: If a "text" field is OPTIONAL and you do not place text in # element five, elements four and five may be omitted: # # '12' => ['name', 'Name', 'text', 'SIZE="30" MAXLENGTH="100"'], # SCRIPT VERIFIED PASSWORD FIELDS: # # and # # '23' => ['password1', 'Password', 'password', 'SIZE="25" MAXLENGTH="35"', 'R'], # '24' => ['password2', 'Password Again', 'password', 'SIZE="25" MAXLENGTH="35"', 'R'], # # Password verification may be performed by using "password1" and # "password2" as for . # # Password verification will be performed if the array KEYS for these # two password fields are sequential, whole numbers (23 & 24, 31 & 32, # 57 & 58, etc.) with "password1" preceding "password2". # # Password fields not named password1 and password2 will not be # verified. # # Password verification requires the submitted value of password1 to # be a minimum of 8 characters. # # Password fields not named password1 will not be checked for minimum # length of 8 characters. # END OF: INPUT TYPE="password" and INPUT TYPE="text" #--------------------------------------------------------------------------# # EXAMPLE: INPUT TYPE="radio" # # KEY zero one two three four five # '73' => ['name', 'Desc Text', 'radio', 'Option1:Option2:Option3', 'R', ''], # # '73': The array's KEY (index number). # # zero: # # one: Descriptive text printed left of the form element and # in e-mail messages. HTML code can not be used. # # two: # # three: Colon delimited listing of options. # # four: Required field. Set to '' if field is OPTIONAL # # five: Text printed in a table row below the form element in # the same column as the form element. HTML code may be used. # # # NOTE: If a "radio" field is OPTIONAL and you do not place text in # element five, elements four and five may be omitted: # # '73' => ['name', 'Desc Text', 'radio', 'Option1:Option2:Option3'], # # # To select an option's value as