Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Version 0.3.0
[kiriwrite/.git] / cgi-files / install.cgi
index 0bb18dc..8da09f0 100755 (executable)
@@ -25,8 +25,9 @@ use strict;                           # Throw errors if there's something wrong.
 use warnings;                          # Write warnings to the HTTP Server Log file.
 
 use utf8;
-use CGI qw(:standard *table *Tr *td);
-use CGI::Carp('fatalsToBrowser');      # Output errors to the browser.
+#use CGI qw(:standard *table *Tr *td);
+use CGI::Lite;
+#use CGI::Carp('fatalsToBrowser');     # Output errors to the browser.
 
 # Setup strings in specific languages. Style should be no spacing for
 # language title and one tabbed spacing for each string.
@@ -38,6 +39,9 @@ my $default_dbdirectory               = "db";
 my $default_outputdirectory    = "output";
 my $default_imagesuri          = "/images/kiriwrite";
 
+my $default_textarearows       = "10";
+my $default_textareacols       = "50";
+
 my $default_server             = "localhost";
 my $default_port               = "3306";
 my $default_protocol           = "tcp";
@@ -78,6 +82,14 @@ $kiriwrite_lang{"en-GB"}{"languagename"}     = "English (British)";
        $kiriwrite_lang{"en-GB"}{"outputdirectoryblank"}        = "The output directory name given is blank.";
        $kiriwrite_lang{"en-GB"}{"outputdirectoryinvalid"}      = "The output directory name given is invalid.";
 
+       $kiriwrite_lang{"en-GB"}{"textarearowblank"}            = "The text area row value given is blank.";
+       $kiriwrite_lang{"en-GB"}{"textarearowtoolong"}          = "The text area row value given is too long.";
+       $kiriwrite_lang{"en-GB"}{"textarearowinvalid"}          = "The text area row value given is invalid.";
+
+       $kiriwrite_lang{"en-GB"}{"textareacolsblank"}           = "The text area columns value given is blank.";
+       $kiriwrite_lang{"en-GB"}{"textareacolstoolong"}         = "The text area columns value given is too long.";
+       $kiriwrite_lang{"en-GB"}{"textareacolsinvalid"}         = "The text area columns value given is invalid.";
+
        $kiriwrite_lang{"en-GB"}{"presmoduleblank"}             = "The presentation module name given is blank.";
        $kiriwrite_lang{"en-GB"}{"presmoduleinvalid"}           = "The presentation module name given is invalid.";
  
@@ -86,7 +98,7 @@ $kiriwrite_lang{"en-GB"}{"languagename"}      = "English (British)";
  
        $kiriwrite_lang{"en-GB"}{"presmodulemissing"}           = "The presentation module with the filename given is missing.";
        $kiriwrite_lang{"en-GB"}{"dbmodulemissing"}             = "The database module with the filename given is missing.";
-       $kiriwrite_lang{"en-GB"}{"languagefilemissing"}         = "The language file with the filename given is missing.";
+       $kiriwrite_lang{"en-GB"}{"languagefilenamemissing"}     = "The language file with the filename given is missing.";
  
        $kiriwrite_lang{"en-GB"}{"servernametoolong"}           = "The database server name given is too long.";
        $kiriwrite_lang{"en-GB"}{"servernameinvalid"}           = "The database server name given is invalid.";
@@ -136,7 +148,7 @@ $kiriwrite_lang{"en-GB"}{"languagename"}    = "English (British)";
        $kiriwrite_lang{"en-GB"}{"dependencytitle"}     = "Dependency and file testing results";
        $kiriwrite_lang{"en-GB"}{"requiredmodules"}     = "Required Modules";
        $kiriwrite_lang{"en-GB"}{"perlmodules"}         = "These Perl modules are used internally by Kiriwrite.";
-       $kiriwrite_lang{"en-GB"}{"databasemodules"}     = "Database Modules";
+       $kiriwrite_lang{"en-GB"}{"databasemodules"}     = "Perl Database Modules";
        $kiriwrite_lang{"en-GB"}{"databasemodulestext"} = "These Perl modules are used by the database modules.";
        $kiriwrite_lang{"en-GB"}{"filepermissions"}     = "File permissions";
        $kiriwrite_lang{"en-GB"}{"filepermissionstext"} = "The file permissions are for file and directories that are critical to Kiriwrite such as module and language directories.";
@@ -147,6 +159,9 @@ $kiriwrite_lang{"en-GB"}{"languagename"}    = "English (British)";
        $kiriwrite_lang{"en-GB"}{"databasedirectory"}   = "Database Directory";
        $kiriwrite_lang{"en-GB"}{"outputdirectory"}     = "Output Directory";
        $kiriwrite_lang{"en-GB"}{"imagesuripath"}       = "Images (URI path)";
+       $kiriwrite_lang{"en-GB"}{"display"}             = "Display";
+       $kiriwrite_lang{"en-GB"}{"textareacols"}        = "Text Area Columns";
+       $kiriwrite_lang{"en-GB"}{"textarearows"}        = "Text Area Rows";
        $kiriwrite_lang{"en-GB"}{"date"}                = "Date";
        $kiriwrite_lang{"en-GB"}{"dateformat"}          = "Date Format";
        $kiriwrite_lang{"en-GB"}{"language"}            = "Language";
@@ -173,11 +188,12 @@ $kiriwrite_lang{"en-GB"}{"languagename"}  = "English (British)";
        $kiriwrite_lang{"en-GB"}{"usekiriwritetext"}    = "To use Kiriwrite click or select the link below (will not work if the Kiriwrite script is not called kiriwrite.cgi):";
        $kiriwrite_lang{"en-GB"}{"usekiriwritelink"}    = "Start using Kiriwrite.";
 
-my $query = new CGI;
+my $query_lite = new CGI::Lite;
+my $form_data = $query_lite->parse_form_data;
 
 my $language_selected = "";
-my $http_query_confirm = $query->param('confirm');
-my $http_query_installlanguage = $query->param('installlanguage');
+my $http_query_confirm = $form_data->{'confirm'};
+my $http_query_installlanguage = $form_data->{'installlanguage'};
 
 if (!$http_query_installlanguage){
 
@@ -219,6 +235,7 @@ body {
 }
 
 input {
+       font-size: 12px;
        background-color: #408080;
        color: #FFFFFF;
        border-color: #102020;
@@ -229,6 +246,7 @@ input {
 }
 
 select {
+       font-size: 12px;
        padding: 3px;
        background-color: #408080;
        color: #FFFFFF;
@@ -897,6 +915,14 @@ sub kiriwrite_error{
                "dbdirectoryblank"              => $kiriwrite_lang{$language_selected}{dbdirectoryblank},
                "dbdirectoryinvalid"            => $kiriwrite_lang{$language_selected}{dbdirectoryinvalid},
 
+               "textarearowblank"              => $kiriwrite_lang{$language_selected}{textarearowblank},
+               "textarearowtoolong"            => $kiriwrite_lang{$language_selected}{textarearowtoolong},
+               "textarearowinvalid"            => $kiriwrite_lang{$language_selected}{textarearowinvalid},
+
+               "textareacolsblank"             => $kiriwrite_lang{$language_selected}{textareacolsblank},
+               "textareacolstoolong"           => $kiriwrite_lang{$language_selected}{textareacolstoolong},
+               "textareacolsinvalid"           => $kiriwrite_lang{$language_selected}{textareacolsinvalid},
+
                "outputdirectoryblank"          => $kiriwrite_lang{$language_selected}{outputdirectoryblank},
                "outputdirectoryinvalid"        => $kiriwrite_lang{$language_selected}{outputdirectoryinvalid},
 
@@ -908,7 +934,7 @@ sub kiriwrite_error{
 
                "presmodulemissing"             => $kiriwrite_lang{$language_selected}{presmodulemissing},
                "dbmodulemissing"               => $kiriwrite_lang{$language_selected}{dbmodulemissing},
-               "languagefilemissing"           => $kiriwrite_lang{$language_selected}{languagefilemissing},
+               "languagefilenamemissing"       => $kiriwrite_lang{$language_selected}{languagefilenamemissing},
 
                "servernametoolong"             => $kiriwrite_lang{$language_selected}{servernametoolong},
                "servernameinvalid"             => $kiriwrite_lang{$language_selected}{servernameinvalid},
@@ -939,17 +965,18 @@ sub kiriwrite_error{
                $error_type = "generic";
        }
 
-       print header();
+       print "Content-type: text/html;\r\n\r\n";
 
-       print start_html({ -title => $kiriwrite_lang{$language_selected}{error}, -style => { -code => $cssstyle }});
+       print "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
+       print "<head>\n<title>$kiriwrite_lang{$language_selected}{installertitle}</title>\n<style type=\"text/css\" media=\"screen\">$cssstyle</style>\n</head>\n<body>\n";
 
-       print h2($kiriwrite_lang{$language_selected}{error});
+       print "<h2>$kiriwrite_lang{$language_selected}{error}</h2>";
 
        print $kiriwrite_error{$error_type};
-       print br();
+       print "<br />\n";
        print $kiriwrite_lang{$language_selected}{errormessagetext};
 
-       print end_html();
+       print "</body>\n</html>";
 
        exit;
 
@@ -968,43 +995,66 @@ sub kiriwrite_writeconfig{
 
        # Open the configuration file for writing.
 
-       open (my $configfile, "> " . "kiriwrite.xml");
-
-       print $configfile "<?xml version=\"1.0\"?>
-
-<kiriwrite-config>
-<!-- This file was automatically generated by Kiriwrite, please feel free to edit to your own needs. -->
-       <settings>
-               <directories>
-                       <database>" . $passedsettings->{DatabaseDirectory} . "</database>
-                       <output>" . $passedsettings->{OutputDirectory} . "</output>
-                       <images>" . $passedsettings->{ImagesURIPath} . "</images>
-               </directories>
-               <language>
-                       <lang>" . $passedsettings->{Language} . "</lang>
-               </language>
-               <system>
-                       <presentation>" . $passedsettings->{PresentationModule} . "</presentation>
-                       <database>" . $passedsettings->{DatabaseModule} . "</database>
-                       <datetime>" . $passedsettings->{DateFormat} . "</datetime>
-               </system>
-               <database>
-                       <server>" . $passedsettings->{DatabaseServer} . "</server>
-                       <port>" . $passedsettings->{DatabasePort} . "</port>
-                       <protocol>" . $passedsettings->{DatabaseProtocol} . "</protocol>
-                       <database>" . $passedsettings->{DatabaseName} . "</database>
-                       <username>" . $passedsettings->{DatabaseUsername} . "</username>
-                       <password>" . $passedsettings->{DatabasePassword} . "</password>
-                       <prefix>" . $passedsettings->{DatabaseTablePrefix} . "</prefix>
-               </database>
-       </settings>
-</kiriwrite-config>
+       open (my $configfile, "> " . "kiriwrite.cfg");
+
+       print $configfile "[config]
+               directory_data_db = $passedsettings->{DatabaseDirectory}
+               directory_data_output = $passedsettings->{OutputDirectory}
+               directory_noncgi_images = $passedsettings->{ImagesURIPath}
+               
+               system_language = $passedsettings->{Language}
+               system_presmodule = $passedsettings->{PresentationModule}
+               system_dbmodule = $passedsettings->{DatabaseModule}
+               system_datetime = $passedsettings->{DateFormat}
+               
+               display_textareacols = $passedsettings->{TextAreaCols}
+               display_textarearows = $passedsettings->{TextAreaRows}
+               display_pagecount = 50
+               display_filtercount = 50
+               display_templatecount = 50
+               
+               database_server = $passedsettings->{DatabaseServer}
+               database_port = $passedsettings->{DatabasePort}
+               database_protocol = $passedsettings->{DatabaseProtocol}
+               database_sqldatabase = $passedsettings->{DatabaseName}
+               database_username = $passedsettings->{DatabaseUsername}
+               database_password = $passedsettings->{DatabasePassword}
+               database_tableprefix = $passedsettings->{DatabaseTablePrefix}
        ";
 
        close ($configfile);
 
 }
 
+sub kiriwrite_addtablerow{
+#################################################################################
+# kiriwrite_addtablerow: Adds a table row.                                     #
+#                                                                              #
+# Usage:                                                                       #
+#                                                                              #
+# kiriwrite_addtablerow(name, data);                                           #
+#                                                                              #
+# name         Specifies the name of the table row.                            #
+# namestyle    Specifies the style for the name of the table row.              #
+# data         Specifies the data to be used in the table row.                 #
+# datastyle    Specifies the style for the data of the table row.              #
+#################################################################################
+
+       my ($name, $namestyle, $data, $datastyle) = @_;
+
+       if (!$data){
+
+               $data = "";
+
+       }
+
+       print "<tr>\n";
+       print "<td class=\"$namestyle\">$name</td>\n";
+       print "<td class=\"$datastyle\">$data</td>\n";
+       print "</tr>\n";
+
+}
+
 #################################################################################
 # End list of subroutines.                                                     #
 #################################################################################
@@ -1019,32 +1069,57 @@ if ($http_query_confirm eq 1){
 
        # The confirm value has been given so get the data from the query.
 
-       my $http_query_dbdirectory              = $query->param('dbdirectory');
-       my $http_query_outputdirectory          = $query->param('outputdirectory');
-       my $http_query_imagesuripath            = $query->param('imagesuripath');
+       my $http_query_dbdirectory              = $form_data->{'dbdirectory'};
+       my $http_query_outputdirectory          = $form_data->{'outputdirectory'};
+       my $http_query_imagesuripath            = $form_data->{'imagesuripath'};
+
+       my $http_query_textarearows             = $form_data->{'textarearows'};
+       my $http_query_textareacols             = $form_data->{'textareacols'};
+
+       my $http_query_dateformat               = $form_data->{'dateformat'};
+       my $http_query_customdateformat         = $form_data->{'customdateformat'};
+
+       my $http_query_language                 = $form_data->{'language'};
+
+       my $http_query_presmodule               = $form_data->{'presmodule'};
+       my $http_query_dbmodule                 = $form_data->{'dbmodule'};
+
+       my $http_query_databaseserver           = $form_data->{'databaseserver'};
+       my $http_query_databaseport             = $form_data->{'databaseport'};
+       my $http_query_databaseprotocol         = $form_data->{'databaseprotocol'};
+       my $http_query_databasename             = $form_data->{'databasename'};
+       my $http_query_databaseusername         = $form_data->{'databaseusername'};
+       my $http_query_databasepassword         = $form_data->{'databasepassword'};
+       my $http_query_databasetableprefix      = $form_data->{'databasetableprefix'};
+       my $http_query_removeinstallscript      = $form_data->{'removeinstallscript'};
+
+       # Check if the text area rows and column values are blank.
+
+       if (!$http_query_textarearows){
+
+               # The text area rows value is blank so return
+               # an error.
+
+               kiriwrite_error("textarearowblank");
+
+       }
 
-       my $http_query_dateformat               = $query->param('dateformat');
-       my $http_query_customdateformat         = $query->param('customdateformat');
+       if (!$http_query_textareacols){
 
-       my $http_query_language                 = $query->param('language');
+               # The text area columns value is blank so
+               # return an error.
 
-       my $http_query_presmodule               = $query->param('presmodule');
-       my $http_query_dbmodule                 = $query->param('dbmodule');
+               kiriwrite_error("textareacolsblank");
 
-       my $http_query_databaseserver           = $query->param('databaseserver');
-       my $http_query_databaseport             = $query->param('databaseport');
-       my $http_query_databaseprotocol         = $query->param('databaseprotocol');
-       my $http_query_databasename             = $query->param('databasename');
-       my $http_query_databaseusername         = $query->param('databaseusername');
-       my $http_query_databasepassword         = $query->param('databasepassword');
-       my $http_query_databasetableprefix      = $query->param('databasetableprefix');
-       my $http_query_removeinstallscript      = $query->param('removeinstallscript');
+       }
 
        # Check the length of the variables.
 
        my $kiriwrite_dbdirectory_length_check          = kiriwrite_variablecheck($http_query_dbdirectory, "maxlength", 64, 1);
        my $kiriwrite_outputdirectory_length_check      = kiriwrite_variablecheck($http_query_outputdirectory, "maxlength", 64, 1);
        my $kiriwrite_imagesuripath_length_check        = kiriwrite_variablecheck($http_query_imagesuripath, "maxlength", 512, 1);
+       my $kiriwrite_textarearow_length_check          = kiriwrite_variablecheck($http_query_textarearows, "maxlength", 3, 1);
+       my $kiriwrite_textareacols_length_check         = kiriwrite_variablecheck($http_query_textareacols, "maxlength", 3, 1);
        my $kiriwrite_dateformat_length_check           = kiriwrite_variablecheck($http_query_dateformat, "maxlength", 32, 1);
        my $kiriwrite_customdateformat_length_check     = kiriwrite_variablecheck($http_query_customdateformat, "maxlength", 32, 1);
        my $kiriwrite_language_length_check             = kiriwrite_variablecheck($http_query_language, "maxlength", 16, 1);
@@ -1106,6 +1181,24 @@ if ($http_query_confirm eq 1){
 
        }
 
+       if ($kiriwrite_textarearow_length_check eq 1){
+
+               # The text area rows length is too long
+               # so return an error.
+
+               kiriwrite_error("textarearowtoolong");
+
+       }
+
+       if ($kiriwrite_textareacols_length_check eq 1){
+
+               # The text area columns length is too long
+               # so return an error.
+
+               kiriwrite_error("textareacolstoolong");
+
+       }
+
        # Check if the custom date and time setting has anything
        # set and if it doesn't then use the predefined one set.
 
@@ -1229,6 +1322,30 @@ if ($http_query_confirm eq 1){
 
        }
 
+       # Check to see if the text area rows and column values
+       # are valid.
+
+       my $kiriwrite_textarearow_number_check          = kiriwrite_variablecheck($http_query_textarearows, "numbers", 0, 1);
+       my $kiriwrite_textareacols_number_check         = kiriwrite_variablecheck($http_query_textareacols, "numbers", 0, 1);
+
+       if ($kiriwrite_textarearow_number_check eq 1){
+
+               # The text area row value is invalid so return
+               # an error.
+
+               kiriwrite_error("textarearowinvalid");
+
+       }
+
+       if ($kiriwrite_textareacols_number_check eq 1){
+
+               # The text area columns value is invalid so return
+               # an error.
+
+               kiriwrite_error("textareacolsinvalid");
+
+       }
+
        # Check the module names to see if they're valid.
 
        my $kiriwrite_presmodule_modulename_check       = kiriwrite_variablecheck($http_query_presmodule, "module", 0, 1);
@@ -1291,7 +1408,7 @@ if ($http_query_confirm eq 1){
 
        }
 
-       if (!-e "lang/" . $http_query_language . ".xml"){
+       if (!-e "lang/" . $http_query_language . ".lang"){
 
                # The language file is missing so return an
                # error.
@@ -1469,11 +1586,11 @@ if ($http_query_confirm eq 1){
 
        # Check if the configuration file already exists.
 
-       if (-e 'kiriwrite.xml'){
+       if (-e 'kiriwrite.cfg'){
 
                # Check if the configuration file has read permissions.
 
-               if (!-r 'kiriwrite.xml'){
+               if (!-r 'kiriwrite.cfg'){
 
                        # The configuration file has invalid read permissions
                        # set so return an error.
@@ -1484,7 +1601,7 @@ if ($http_query_confirm eq 1){
 
                # Check if the configuration file has write permissions.
 
-               if (!-w 'kiriwrite.xml'){
+               if (!-w 'kiriwrite.cfg'){
 
                        # The configuration file has invalid write permissions
                        # set so return an error.
@@ -1497,7 +1614,7 @@ if ($http_query_confirm eq 1){
 
        # Write the new configuration file.
 
-       kiriwrite_writeconfig({ DatabaseDirectory => $http_query_dbdirectory, OutputDirectory => $http_query_outputdirectory, ImagesURIPath => $http_query_imagesuripath, DateFormat => $finaldateformat, Language => $http_query_language, PresentationModule => $http_query_presmodule, DatabaseModule => $http_query_dbmodule, DatabaseServer => $http_query_databaseserver, DatabasePort => $http_query_databaseport, DatabaseProtocol => $http_query_databaseprotocol, DatabaseName => $http_query_databasename, DatabaseUsername => $http_query_databaseusername, DatabasePassword => $http_query_databasepassword, DatabaseTablePrefix => $http_query_databasetableprefix });
+       kiriwrite_writeconfig({ DatabaseDirectory => $http_query_dbdirectory, OutputDirectory => $http_query_outputdirectory, ImagesURIPath => $http_query_imagesuripath, TextAreaCols => $http_query_textareacols, TextAreaRows => $http_query_textarearows, DateFormat => $finaldateformat, Language => $http_query_language, PresentationModule => $http_query_presmodule, DatabaseModule => $http_query_dbmodule, DatabaseServer => $http_query_databaseserver, DatabasePort => $http_query_databaseport, DatabaseProtocol => $http_query_databaseprotocol, DatabaseName => $http_query_databasename, DatabaseUsername => $http_query_databaseusername, DatabasePassword => $http_query_databasepassword, DatabaseTablePrefix => $http_query_databasetableprefix });
 
        my $installscriptmessage        = "";
 
@@ -1520,34 +1637,30 @@ if ($http_query_confirm eq 1){
                        $installscriptmessage = $kiriwrite_lang{$language_selected}{cannotremovescript};
                        $installscriptmessage =~ s/%s/$!/g;
 
-                       # FINISH THIS! >O
-
-                       #"Unable to remove the installer script: " . $! . " The installer script will have to be deleted manually.";
-
                }
 
        }
 
-       print header();
+       print "Content-type: text/html\r\n\r\n";
 
-       print start_html({ -title => $kiriwrite_lang{$language_selected}{installertitle}, -style => { -code => $cssstyle }});
-       print h2($kiriwrite_lang{$language_selected}{installertitle});
+       #print start_html({ -title => $kiriwrite_lang{$language_selected}{installertitle}, -style => { -code => $cssstyle }});
+       print "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
+       print "<head>\n<title>$kiriwrite_lang{$language_selected}{installertitle}</title>\n<style type=\"text/css\" media=\"screen\">$cssstyle</style>\n</head>\n<body>\n";
+       print "<h2>$kiriwrite_lang{$language_selected}{installertitle}</h2>";
        print $kiriwrite_lang{$language_selected}{installedmessage};
 
        if ($installscriptmessage){
 
-               print br();
-               print br();
+               print "<br /><br />\n";
                print $installscriptmessage;
 
        }
 
-       print br();
-       print br();
+       print "<br /><br />\n";
        print $kiriwrite_lang{$language_selected}{usekiriwritetext};
-       print br();
-       print br();
-       print a({-href=>'kiriwrite.cgi'}, $kiriwrite_lang{$language_selected}{usekiriwritelink});
+       print "<br /><br />\n";
+       print "<a href=\"kiriwrite.cgi\">$kiriwrite_lang{$language_selected}{usekiriwritelink}</a>";
+       print "</body>\n</html>";
 
        exit;
 
@@ -1555,7 +1668,7 @@ if ($http_query_confirm eq 1){
 
 # Create a list of common date and time formats.
 
-my @datetime_formats = [ 
+my @datetime_formats = ( 
        'DD/MM/YY (hh:mm:ss)', 'DD/MM/YY hh:mm:ss', 'D/M/Y (hh:mm:ss)',
        'D/M/Y hh:mm:ss', 'D/M/YY (hh:mm:ss)', 'D/M/YY hh:mm:ss',
        'DD/MM (hh:mm:ss)', 'D/M (hh:mm:ss)', 'DD/MM hh:mm:ss', 
@@ -1565,7 +1678,7 @@ my @datetime_formats = [
        'YY-MM-DD (hh:mm:ss)', 'YY-MM-DD hh:mm:ss', 'Y-M-D (hh:mm:ss)',
        'Y-M-D hh:mm:ss', 'M-D (hh:mm:ss)', 'M-D hh:mm:ss',
        'YY-MM-DD', 'MM-DD' 
-];
+);
 
 # Create the list of tests to do.
 
@@ -1589,18 +1702,22 @@ my $presentation_file_friendly;
 
 # Check to see if the needed Perl modules are installed.
 
+$test_list{CheckConfigAuto}{Name}      = "Config::Auto";
+$test_list{CheckConfigAuto}{Type}      = "dependency";
+$test_list{CheckConfigAuto}{Code}      = "Config::Auto";
+
 $test_list{CheckDBI}{Name}             = "DBI";
 $test_list{CheckDBI}{Type}             = "dependency";
 $test_list{CheckDBI}{Code}             = "DBI";
 
-$test_list{CheckXMLSimple}{Name}       = "XML::Simple";
-$test_list{CheckXMLSimple}{Type}       = "dependency";
-$test_list{CheckXMLSimple}{Code}       = "XML::Simple";
-
 $test_list{CheckTieHash}{Name}         = "Tie::IxHash";
 $test_list{CheckTieHash}{Type}                 = "dependency";
 $test_list{CheckTieHash}{Code}                 = "Tie::IxHash";
 
+$test_list{CheckCGILite}{Name}         = "CGI::Lite";
+$test_list{CheckCGILite}{Type}         = "dependency";
+$test_list{CheckCGILite}{Code}         = "CGI::Lite";
+
 $test_list{Encode}{Name}               = "Encode";
 $test_list{Encode}{Type}               = "dependency";
 $test_list{Encode}{Code}               = "Encode";
@@ -1625,6 +1742,11 @@ $test_list{LanguageDirectory}{Type}              = "file";
 $test_list{LanguageDirectory}{Code}            = "lang";
 $test_list{LanguageDirectory}{Writeable}       = "0";
 
+$test_list{LibraryDirectory}{Name}             = "Library Directory (lib)";
+$test_list{LibraryDirectory}{Type}             = "file";
+$test_list{LibraryDirectory}{Code}             = "lib";
+$test_list{LibraryDirectory}{Writeable}                = "0";
+
 $test_list{ModulesDirectory}{Name}             = "Modules Directory (Modules)";
 $test_list{ModulesDirectory}{Type}             = "file";
 $test_list{ModulesDirectory}{Code}             = "Modules";
@@ -1742,191 +1864,133 @@ foreach $test (keys %test_list){
 
 # Print the header.
 
-print header();
+print "Content-Type: text/html;\r\n\r\n";
 
 # Print the page for installing Kiriwrite.
 
-print start_html( -title=> $kiriwrite_lang{$language_selected}{installertitle}, -style => { -code => $cssstyle });
-
-print start_table( { -width=> "100%" } );
-print start_Tr();
-print start_td({ -class => "languagebar" });
-print $kiriwrite_lang{$language_selected}{installertitle};
-print end_td();
-print start_td({ -class => "languagebarselect" });
-print start_form("POST", "install.cgi");
-
-# This is a bodge for the language list.
+print "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
+print "<head>\n<title>$kiriwrite_lang{$language_selected}{installertitle}</title>\n";
+print "<style type=\"text/css\" media=\"screen\">$cssstyle</style>\n</head>\n<body>";
 
+print "<table width=\"100%\">";
 my $language_name_short;
 my $language_list_seek = 0;
+my $installlanguage_out = "";
 
-print "<select name=\"installlanguage\">";
+$installlanguage_out = "<select name=\"installlanguage\">\n";
 
 foreach $language_name_short (@language_list_short){
 
-       print "<option value=\"" . $language_name_short . "\">" . $language_list_long[$language_list_seek] . "</option>";
+       $installlanguage_out = $installlanguage_out . "<option value=\"" . $language_name_short . "\">" . $language_list_long[$language_list_seek] . "</option>\n";
        $language_list_seek++;
 
 }
 
-print "</select> ";
-print submit($kiriwrite_lang{$language_selected}{switch});
+$installlanguage_out = $installlanguage_out . "</select>\n";
 
-print end_form;
-print end_td();
-print end_Tr();
-print end_table();
-
-print h2($kiriwrite_lang{$language_selected}{installertitle});
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{installertitle}, "languagebar", "<form action=\"install.cgi\" method=\"POST\">\n$installlanguage_out\n<input type=\"submit\" value=\"$kiriwrite_lang{$language_selected}{switch}\">\n</form>\n", "languagebarselect");
+print "</table>";
 
+print "<h2>$kiriwrite_lang{$language_selected}{installertitle}</h2>\n";
 print $kiriwrite_lang{$language_selected}{installertext};
-
-print h3($kiriwrite_lang{$language_selected}{dependencytitle});
-print h4($kiriwrite_lang{$language_selected}{requiredmodules});
+print "<h3>$kiriwrite_lang{$language_selected}{dependencytitle}</h3>\n";
+print "<h4>$kiriwrite_lang{$language_selected}{requiredmodules}</h4>\n";
 print $kiriwrite_lang{$language_selected}{perlmodules};
-print br();;
-print br();;
+print "<br /><br />\n";
 
 if ($dependency_error eq 1){
 
        print $kiriwrite_lang{$language_selected}{errormessage};
        print $kiriwrite_lang{$language_selected}{dependencyperlmodulesmissing};
-       print br();
-       print br();
+       print "<br /><br />\n";
 
 }
 
-print start_table();
-print start_Tr();
-print start_td({ -class => "tablecellheader" });
-print $kiriwrite_lang{$language_selected}{module};
-print end_td();
-print start_td({ -class => "tablecellheader" });
-print $kiriwrite_lang{$language_selected}{result};
-print end_td();
-print end_Tr();
+print "<table>\n";
+
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{module}, "tablecellheader", $kiriwrite_lang{$language_selected}{result}, "tablecellheader");
 
 foreach $test (keys %dependency_results) {
 
-       print start_Tr();
-       print start_td({ -class => "tablename" });
-               print $test;
-       print end_td();
-       print start_td({ -class => "tabledata" });
-               print $dependency_results{$test}{result};
-       print end_td();
-       print end_Tr();
+       kiriwrite_addtablerow($test, "tablename", $dependency_results{$test}{result}, "tabledata");
 
 }
 
-print end_table();
+print "</table>";
 
-print h4($kiriwrite_lang{$language_selected}{databasemodules});
+print "<h4>$kiriwrite_lang{$language_selected}{databasemodules}</h4>\n";
 print $kiriwrite_lang{$language_selected}{databasemodulestext};
-print br();
-print br();
+print "<br /><br />\n";
 
 if ($database_error eq 1){
 
        print $kiriwrite_lang{$language_selected}{warningmessage};
        print $kiriwrite_lang{$language_selected}{databaseperlmodulesmissing};
-       print br();
-       print br();
+       print "<br /><br />\n";
 
 }
 
-print start_table();
-print start_Tr();
-print start_td({ -class => "tablecellheader" });
-print $kiriwrite_lang{$language_selected}{module};
-print end_td();
-print start_td({ -class => "tablecellheader" });
-print $kiriwrite_lang{$language_selected}{result};
-print end_td();
-print end_Tr();
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{module}, "tablecellheader", $kiriwrite_lang{$language_selected}{result}, "tablecellheader");
 
 foreach $test (keys %database_results) {
 
-       print start_Tr();
-       print start_td({ -class => "tablename" });
-               print $test;
-       print end_td();
-       print start_td({ -class => "tabledata" });
-               print $database_results{$test}{result};
-       print end_td();
-       print end_Tr();
+       kiriwrite_addtablerow($test, "tablename", $database_results{$test}{result}, "tabledata");
 
 }
 
-print end_table();
+print "</table>";
 
-print h4($kiriwrite_lang{$language_selected}{filepermissions});
+print "<h4>$kiriwrite_lang{$language_selected}{filepermissions}</h4>\n";
 
 print $kiriwrite_lang{$language_selected}{filepermissionstext};
-print br();
-print br();
+print "<br /><br />\n";
 
 if ($file_error eq 1){
 
        print $kiriwrite_lang{$language_selected}{errormessage};
        print $kiriwrite_lang{$language_selected}{filepermissionsinvalid};
-       print br();
-       print br();
+       print "<br /><br />\n";
 
 }
 
-print start_table();
-print start_Tr();
-print start_td({ -class => "tablecellheader" });
-print "Filename";
-print end_td();
-print start_td({ -class => "tablecellheader" });
-print "Result";
-print end_td();
-print end_Tr();
+print "<table>";
+
+kiriwrite_addtablerow("Filename", "tablecellheader", "Result", "tablecellheader");
 
 foreach $test (keys %file_results) {
 
-       print start_Tr();
-       print start_td({ -class => "tablename" });
-               print $test;
-       print end_td();
-       print start_td({ -class => "tabledata" });
-               print $file_results{$test}{result};
-       print end_td();
-       print end_Tr();
+       kiriwrite_addtablerow($test, "tablename", $file_results{$test}{result}, "tabledata");
 
 }
 
-print end_table();
+print "</table>";
 
 if ($dependency_error eq 1){
 
-       print hr();
-       print h4($kiriwrite_lang{$language_selected}{criticalerror});
-       print $kiriwrite_lang{$language_selected}{dependencymodulesnotinstalled};
-       print end_html;
+       print "<hr />\n";
+       print "<h4>$kiriwrite_lang{$language_selected}{criticalerror}</h4>\n";
+       print $kiriwrite_lang{$language_selected}{dependencymodulesnotinstalled} . "\n";
+       print "</body>\n</html>";
        exit;
 
 }
 
 if ($database_onemodule eq 0){
 
-       print hr();
-       print h4($kiriwrite_lang{$language_selected}{criticalerror});
-       print $kiriwrite_lang{$language_selected}{databasemodulesnotinstalled};
-       print end_html;
+       print "<hr />\n";
+       print "<h4>$kiriwrite_lang{$language_selected}{criticalerror}</h4>\n";
+       print $kiriwrite_lang{$language_selected}{databasemodulesnotinstalled} . "\n";
+       print "</body>\n</html>";
        exit;
 
 }
 
 if ($file_error eq 1){
 
-       print hr();
-       print h4($kiriwrite_lang{$language_selected}{criticalerror});
-       print $kiriwrite_lang{$language_selected}{filepermissionerrors};
-       print end_html;
+       print "<hr />\n";
+       print "<h4>$kiriwrite_lang{$language_selected}{criticalerror}</h4>\n";
+       print $kiriwrite_lang{$language_selected}{filepermissionerrors} . "\n";
+       print "</body>\n</html>";
        exit;
 
 }
@@ -1935,32 +1999,35 @@ my @language_short;
 my (%available_languages, $available_languages);
 my @presentation_modules;
 my @database_modules;
-
-my $presentation_modules_ref = \@presentation_modules;
-my $database_modules_ref = \@database_modules;
+my $select_data = "";
+my $language_data;
+my $language_out = "";
+my ($presmodule_name, $presmodule_out) = "";
+my ($dbmodule_name, $dbmodule_out) = "";
 
 # Get the list of available languages.
 
 tie(%available_languages, 'Tie::IxHash');
 
 opendir(LANGUAGEDIR, "lang");
-my @language_directory = grep /m*\.xml$/, readdir(LANGUAGEDIR);
+my @language_directory = grep /m*\.lang$/, readdir(LANGUAGEDIR);
 closedir(LANGUAGEDIR);
 
-my $xsl = XML::Simple->new();
-
 foreach my $language_file (@language_directory){
 
-       # Load the XML data.
+       # Load the language file.
+
+       $language_data = Config::Auto::parse("lang/" . $language_file, format => "ini");
 
-       $language_xml_data = $xsl->XMLin("lang/" . $language_file);
+       # Load the XML data.
+       #$language_xml_data = $xsl->XMLin("lang/" . $language_file);
 
        # Get the friendly name for the language file.
 
        $language_file_friendly = $language_file;
-       $language_file_friendly =~ s/.xml$//g;
+       $language_file_friendly =~ s/.lang$//g;
 
-       $language_name = $language_xml_data->{about}->{name};
+       $language_name = $language_data->{about}->{name};
 
        $available_languages{$language_file_friendly} = $language_name . " (" . $language_file_friendly . ")";
 
@@ -1977,7 +2044,6 @@ foreach my $presmodule_file (@presmodule_directory){
        # Get the friendly name for the database module.
 
        $presmodule_file =~ s/.pm$//g;
-
        push(@presentation_modules, $presmodule_file);
 
 }
@@ -1993,244 +2059,69 @@ foreach my $dbmodule_file (@dbmodule_directory){
        # Get the friendly name for the database module.
 
        $dbmodule_file =~ s/.pm$//g;
-
        push(@database_modules, $dbmodule_file);
 
 }
 
-print h3($kiriwrite_lang{$language_selected}{settingstitle});
-
+print "<h3>$kiriwrite_lang{$language_selected}{settingstitle}</h3>";
 print $kiriwrite_lang{$language_selected}{settingstext};
-print br();
-print br();
-
-print start_form("POST", "install.cgi");
-print hidden( -name => 'confirm', -default => '1');
-print hidden( -name => 'installlanguage', -default => $language_selected);
-
-print start_table({ -width => "100%" });
-
-print start_Tr();
-print start_td({ -class => "tablecellheader" });
-print $kiriwrite_lang{$language_selected}{setting};
-print end_td();
-print start_td({ -class => "tablecellheader" });
-print $kiriwrite_lang{$language_selected}{value};
-print end_td();
-print end_Tr();
-
-print start_Tr();
-print start_td({ -class => "tablecellheader" });
-print $kiriwrite_lang{$language_selected}{directories};
-print end_td();
-print start_td({ -class => "tablecellheader" });
-print end_td();
-print end_Tr();
-
-print start_Tr();
-print start_td({ -class => "tablename" });
-print $kiriwrite_lang{$language_selected}{databasedirectory};
-print end_td();
-print start_td({ -class => "tabledata" });
-print textfield({ -name => "dbdirectory", -size => 32, -maxlength => 64, -value => $default_dbdirectory });
-print end_td();
-print end_Tr();
-
-print start_Tr();
-print start_td({ -class => "tablename" });
-print $kiriwrite_lang{$language_selected}{outputdirectory};
-print end_td();
-print start_td({ -class => "tabledata" });
-print textfield({ -name => "outputdirectory", -size => 32, -maxlength => 64, -value => $default_outputdirectory });
-print end_td();
-print end_Tr();
-
-print start_Tr();
-print start_td({ -class => "tablename" });
-print $kiriwrite_lang{$language_selected}{imagesuripath};
-print end_td();
-print start_td({ -class => "tabledata" });
-print textfield({ -name => "imagesuripath", -size => 32, -maxlength => 64, -value => $default_imagesuri });
-print end_td();
-print end_Tr();
-
-print start_Tr();
-print start_td({ -class => "tablecellheader" });
-print $kiriwrite_lang{$language_selected}{date};
-print end_td();
-print start_td({ -class => "tablecellheader" });
-print "";
-print end_td();
-print end_Tr();
-
-print start_Tr();
-print start_td({ -class => "tablename" });
-print $kiriwrite_lang{$language_selected}{dateformat};
-print end_td();
-print start_td({ -class => "tabledata" });
-
-print popup_menu( -name => "dateformat", -values => @datetime_formats );
-print textfield({ -name => "customdateformat", -size => 32, -maxlength => 64, });
-
-print end_td();
-print end_Tr();
-
-print start_Tr();
-print start_td({ -class => "tablecellheader" });
-print $kiriwrite_lang{$language_selected}{language};
-print end_td();
-print start_td({ -class => "tablecellheader" });
-print end_td();
-print end_Tr();
-
-print start_Tr();
-print start_td({ -class => "tablename" });
-print $kiriwrite_lang{$language_selected}{systemlanguage};
-print end_td();
-print start_td({ -class => "tabledata" });
-
-# Note: This the following code is bodge. If anyone can fix it so that it all works
-# with popup_menu properly it will be appriciated.
-
-print "<select name=\"language\">";
+print "<br /><br />\n";
+
+print "<form action=\"install.cgi\" method=\"POST\">";
+print "<input type=\"hidden\" name=\"confirm\" value=\"1\">\n<input type=\"hidden\" name=\"installlanguage\" value=\"$language_selected\">\n";
+
+print "<table width=\"100%\">";
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{setting}, "tablecellheader", $kiriwrite_lang{$language_selected}{value}, "tablecellheader");
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{directories}, "tablecellheader", "", "tablecellheader");
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{databasedirectory}, "tablname", "<input type=\"text\" name=\"dbdirectory\" size=\"32\" maxlength=\"64\" value=\"$default_dbdirectory\">", "tabledata");
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{outputdirectory}, "tablename", "<input type=\"text\" name=\"outputdirectory\" size=\"32\" maxlength=\"64\" value=\"$default_outputdirectory\">", "tabledata");
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{imagesuripath}, "tablename", "<input type=\"text\" name=\"imagesuripath\" size=\"32\" maxlength=\"64\" value=\"$default_imagesuri\">", "tabledata");
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{display}, "tablecellheader", "", "tablecellheader");
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{textarearows}, "tablename", "<input type=\"text\" name=\"textarearows\" size=\"3\" maxlength=\"3\" value=\"$default_textarearows\">", "tabledata");
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{textareacols}, "tablename", "<input type=\"text\" name=\"textareacols\" size=\"3\" maxlength=\"3\" value=\"$default_textareacols\">", "tabledata");
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{date}, "tablecellheader", "", "tablecellheader");
+
+foreach my $select_name (@datetime_formats){
+       $select_data = $select_data . "<option value=\"$select_name\">" . $select_name . "</option>\n";
+}
 
-foreach my $language (keys %available_languages){
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{dateformat}, "tablename", "<select>$select_data</select>\n<input type=\"text\" size=\"32\" maxlength=\"64\" name=\"customdateformat\">", "tabledata");
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{language}, "tablecellheader", "", "tablecellheader");
 
+foreach my $language (keys %available_languages){
        if ($language eq $language_selected){
-
-               print "<option value=\"" . $language . "\" selected=selected>" . $available_languages{$language} . "</option>";
-
+               $language_out = $language_out . "<option value=\"" . $language . "\" selected=selected>" . $available_languages{$language} . "</option>\n";
        } else {
-
-               print "<option value=\"" . $language . "\">" . $available_languages{$language} . "</option>";
-
+               $language_out = $language_out . "<option value=\"" . $language . "\">" . $available_languages{$language} . "</option>\n";
        }
+}
 
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{systemlanguage}, "tablename", $language_out, "tabledata");
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{modules}, "tablecellheader", "", "tablecellheader");
+foreach $presmodule_name (@presentation_modules){
+       $presmodule_out = $presmodule_out . "<option value=\"$presmodule_name\">$presmodule_name</option>";
+}
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{presentationmodule}, "tablename", "<select name=\"presmodule\">$presmodule_out</select>", "tabledata");
+foreach $dbmodule_name (@database_modules){
+       $dbmodule_out = $dbmodule_out . "<option value=\"$dbmodule_name\">$dbmodule_name</option>";
 }
 
-print "</select>";
-
-print end_td();
-print end_Tr();
-
-print start_Tr();
-print start_td({ -class => "tablecellheader" });
-print $kiriwrite_lang{$language_selected}{modules};
-print end_td();
-print start_td({ -class => "tablecellheader" });
-print "";
-print end_td();
-print end_Tr();
-
-print start_Tr();
-print start_td({ -class => "tablename" });
-print $kiriwrite_lang{$language_selected}{presentationmodule};
-print end_td();
-print start_td({ -class => "tabledata" });
-print popup_menu({ -name => 'presmodule', -values => $presentation_modules_ref });
-print end_td();
-print end_Tr();
-
-print start_Tr();
-print start_td({ -class => "tablename" });
-print $kiriwrite_lang{$language_selected}{databasemodule};
-print end_td();
-print start_td({ -class => "tabledata" });
-print popup_menu({ -name => 'dbmodule', -values => $database_modules_ref });
-print end_td();
-print end_Tr();
-
-print start_Tr();
-print start_td({ -class => "tablename" });
-print $kiriwrite_lang{$language_selected}{databaseserver};
-print end_td();
-print start_td({ -class => "tabledata" });
-print textfield({ -name => "databaseserver", -size => 32, -maxlength => 128, -value => $default_server });
-print end_td();
-print end_Tr();
-
-print start_Tr();
-print start_td({ -class => "tablename" });
-print $kiriwrite_lang{$language_selected}{databaseport};
-print end_td();
-print start_td({ -class => "tabledata" });
-print textfield({ -name => "databaseport", -maxlength => 5, -size => 5, -value => $default_port });
-print end_td();
-print end_Tr();
-
-print start_Tr();
-print start_td({ -class => "tablename" });
-print $kiriwrite_lang{$language_selected}{databaseprotocol};
-print end_td();
-print start_td({ -class => "tabledata" });
-print popup_menu( -name => "databaseprotocol", -values => [ 'tcp', 'udp' ], -default => $default_protocol);
-print end_td();
-print end_Tr();
-
-print start_Tr();
-print start_td({ -class => "tablename" });
-print $kiriwrite_lang{$language_selected}{databasename};
-print end_td();
-print start_td({ -class => "tabledata" });
-print textfield({ -name => "databasename", -size => 32, -maxlength => 32, -default => $default_name });
-print end_td();
-print end_Tr();
-
-print start_Tr();
-print start_td({ -class => "tablename" });
-print $kiriwrite_lang{$language_selected}{databaseusername};
-print end_td();
-print start_td({ -class => "tabledata" });
-print textfield({ -name => "databaseusername", -size => 16, -maxlength => 16, -default => $default_username });
-print end_td();
-print end_Tr();
-
-print start_Tr();
-print start_td({ -class => "tablename" });
-print $kiriwrite_lang{$language_selected}{databasepassword};
-print end_td();
-print start_td({ -class => "tabledata" });
-print password_field({ -name => "databasepassword", -size => 32, -maxlength => 64 });
-print end_td();
-print end_Tr();
-
-print start_Tr();
-print start_td({ -class => "tablename" });
-print $kiriwrite_lang{$language_selected}{databasetableprefix};
-print end_td();
-print start_td({ -class => "tabledata" });
-print textfield({ -name => "databasetableprefix", -size => 32, -maxlength => 32, -default => $default_prefix });
-print end_td();
-print end_Tr();
-
-print start_Tr();
-print start_td({ -class => "tablecellheader" });
-print $kiriwrite_lang{$language_selected}{installationoptions};
-print end_td();
-print start_td({ -class => "tablecellheader" });
-print "";
-print end_td();
-print end_Tr();
-
-print start_Tr();
-print start_td({ -class => "tablename" });
-print $kiriwrite_lang{$language_selected}{installoptions};
-print end_td();
-print start_td({ -class => "tabledata" });
-print checkbox( -name => 'removeinstallscript', -checked => 1, -label => " " . $kiriwrite_lang{$language_selected}{removeinstallscript});
-print end_td();
-print end_Tr();
-
-print end_table();
-
-print br();
-print submit($kiriwrite_lang{$language_selected}{savesettingsbutton});
-print " | ";
-print reset($kiriwrite_lang{$language_selected}{resetsettingsbutton});
-
-print end_form();
-
-print end_html;
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{databasemodule}, "tablename", "<select name=\"dbmodule\">$dbmodule_out</select>", "tabledata");
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{databaseserver}, "tablename", "<input type=\"text\" name=\"databaseserver\" size=\"32\" maxlength=\"128\" value=\"$default_server\">\n", "tabledata");
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{databaseport}, "tablename", "<input type=\"text\" name=\"databaseport\" maxlength=\"5\" size=\"5\" value=\"$default_port\">\n", "tabledata");
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{databaseprotocol}, "tablename", "<select name=\"databaseprotocol\">\n<option value=\"tcp\">tcp</option>\n<option value=\"udp\">udp</option>\n</select>\n", "tabledata");
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{databasename}, "tablename", "<input type=\"text\" name=\"databasename\" size=\"32\" maxlength=\"32\" value=\"$default_name\">\n", "tabledata");
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{databaseusername}, "tablename", "<input type=\"text\" name=\"databaseusername\" size=\"16\" maxlength=\"16\" value=\"$default_username\">\n", "tabledata");
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{databasepassword}, "tablename", "<input type=\"password\" name=\"databasepassword\" size=\"32\" maxlength=\"64\">\n", "tabledata");
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{databasetableprefix}, "tablename", "<input type=\"text\" name=\"databasetableprefix\" size=\"32\" maxlength=\"32\" value=\"$default_prefix\">\n", "tabledata");
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{installationoptions}, "tablecellheader", "", "tablecellheader");
+kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{installoptions}, "tablename", "<input type=\"checkbox\" name=\"removeinstallscript\" checked=checked value=\"on\"> $kiriwrite_lang{$language_selected}{removeinstallscript}\n", "tabledata");
+
+print "</table>\n";
+
+print "<br />\n<input type=\"submit\" value=\"$kiriwrite_lang{$language_selected}{savesettingsbutton}\"> | <input type=\"reset\" value=\"$kiriwrite_lang{$language_selected}{resetsettingsbutton}\">\n";
+
+print "</form>\n</body>\n</html>";
 exit;
 
 __END__
\ No newline at end of file
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy