]> git.mxchange.org Git - mailer.git/commitdiff
Installation NG continued (still not fully working)
authorquix0r <quix0r@mxchange.org>
Sun, 18 Nov 2012 23:45:33 +0000 (23:45 +0000)
committerquix0r <quix0r@mxchange.org>
Sun, 18 Nov 2012 23:45:33 +0000 (23:45 +0000)
37 files changed:
.gitattributes
DOCS/JQUERY-AUTHORS.txt
DOCS/TODOs.txt
DOCS/de/README.txt
ajax.php
inc/ajax-functions.php
inc/ajax/ajax_installer.php
inc/config-functions.php
inc/config-local.php.dist
inc/install-functions.php
inc/install/install_page_finalize.php
inc/language/coupon_de.php
inc/language/de.php
inc/language/install_de.php
inc/sql-functions.php
inc/wrapper-functions.php
js/ajax-common.js
js/install-common.js
templates/de/html/admin/admin_ajax_main.tpl
templates/de/html/install/install_main_ajax.tpl
templates/de/html/install/install_overview_failed.tpl [new file with mode: 0644]
templates/de/html/install/install_page1.tpl
templates/de/html/install/install_page2.tpl
templates/de/html/install/install_page3.tpl
templates/de/html/install/install_page5.tpl
templates/de/html/install/install_page_base_data.tpl
templates/de/html/install/install_page_database_config.tpl
templates/de/html/install/install_page_init.tpl
templates/de/html/install/install_page_other_config.tpl
templates/de/html/install/install_page_overview.tpl [new file with mode: 0644]
templates/de/html/install/install_page_smtp_config.tpl
templates/de/html/install/install_selector.tpl
templates/de/html/js/js_install_ajax.tpl
theme/business/css/ajax.css
theme/default/css/ajax.css
theme/desert/css/ajax.css
theme/org/css/ajax.css

index c7f69ac9c01a83431e396aa343e2af5b40a4c78c..f90a825e2d3ed0b744bcba741698116fc8d3e6bf 100644 (file)
@@ -1832,6 +1832,7 @@ templates/de/html/install/install_header.tpl -text
 templates/de/html/install/install_main_ajax.tpl svneol=native#text/plain
 templates/de/html/install/install_main_plain.tpl svneol=native#text/plain
 templates/de/html/install/install_menu.tpl svneol=native#text/plain
 templates/de/html/install/install_main_ajax.tpl svneol=native#text/plain
 templates/de/html/install/install_main_plain.tpl svneol=native#text/plain
 templates/de/html/install/install_menu.tpl svneol=native#text/plain
+templates/de/html/install/install_overview_failed.tpl svneol=native#text/plain
 templates/de/html/install/install_page1.tpl svneol=native#text/plain
 templates/de/html/install/install_page2.tpl svneol=native#text/plain
 templates/de/html/install/install_page3.tpl svneol=native#text/plain
 templates/de/html/install/install_page1.tpl svneol=native#text/plain
 templates/de/html/install/install_page2.tpl svneol=native#text/plain
 templates/de/html/install/install_page3.tpl svneol=native#text/plain
@@ -1840,6 +1841,7 @@ templates/de/html/install/install_page_base_data.tpl svneol=native#text/plain
 templates/de/html/install/install_page_database_config.tpl svneol=native#text/plain
 templates/de/html/install/install_page_init.tpl svneol=native#text/plain
 templates/de/html/install/install_page_other_config.tpl svneol=native#text/plain
 templates/de/html/install/install_page_database_config.tpl svneol=native#text/plain
 templates/de/html/install/install_page_init.tpl svneol=native#text/plain
 templates/de/html/install/install_page_other_config.tpl svneol=native#text/plain
+templates/de/html/install/install_page_overview.tpl svneol=native#text/plain
 templates/de/html/install/install_page_smtp_config.tpl svneol=native#text/plain
 templates/de/html/install/install_page_welcome.tpl svneol=native#text/plain
 templates/de/html/install/install_selector.tpl svneol=native#text/plain
 templates/de/html/install/install_page_smtp_config.tpl svneol=native#text/plain
 templates/de/html/install/install_page_welcome.tpl svneol=native#text/plain
 templates/de/html/install/install_selector.tpl svneol=native#text/plain
index b2168655ee00713c18176319f13de9df528c245b..eb3b153a256dc9c49cea588909d9067eed969217 100644 (file)
@@ -1,4 +1,4 @@
-jQuery UI Authors (http://jqueryui.com/about)
+jQuery UI Authors (http://jqueryui.com/about)
 
 This software consists of voluntary contributions made by many
 individuals. For exact contribution history, see the revision history
 
 This software consists of voluntary contributions made by many
 individuals. For exact contribution history, see the revision history
index 4eb9c45308f55cd8297a7ddc411698dbf05a6bb9..47f8189435d761e4fef5f30b09286245105e88d6 100644 (file)
@@ -70,7 +70,7 @@
 ./inc/language/de.php:735:// @TODO Are these constants longer used?
 ./inc/language-functions.php:255:      // @TODO These are all valid languages, again hard-coded
 ./inc/language-functions.php:44:// @TODO Rewrite all language constants to this function.
 ./inc/language/de.php:735:// @TODO Are these constants longer used?
 ./inc/language-functions.php:255:      // @TODO These are all valid languages, again hard-coded
 ./inc/language-functions.php:44:// @TODO Rewrite all language constants to this function.
-./inc/language/install_de.php:137:     // @TODO Move this to e.g. ext-smtp
+./inc/language/install_de.php:140:     // @TODO Move this to e.g. ext-smtp
 ./inc/language/newsletter_de.php:13: * @TODO This language file is completely out-dated, please do no       *
 ./inc/language/order_de.php:70:        // @TODO Find better text
 ./inc/language/rallye_de.php:13: * @TODO Naming convention not applied for language strings             *
 ./inc/language/newsletter_de.php:13: * @TODO This language file is completely out-dated, please do no       *
 ./inc/language/order_de.php:70:        // @TODO Find better text
 ./inc/language/rallye_de.php:13: * @TODO Naming convention not applied for language strings             *
index 27c343d73b333f21d4cd824944db2f7a5c0c3991..b9832820eec39cb59e8f07460119ab07aedb60f0 100644 (file)
@@ -148,13 +148,13 @@ Kopieren Sie die Datei inc/config-local.php.dist nach inc/cache/config-local.php
 (Vorsicht! Kein .dist mehr!).
 
 Stellen Sie dann in der inc/cache/config-local.php den Eintrag
 (Vorsicht! Kein .dist mehr!).
 
 Stellen Sie dann in der inc/cache/config-local.php den Eintrag
-MXCHANGE_INSTALLED um auf 'Y': (zirka Zeile 68)
+MAILER_INSTALLED um auf 'Y': (zirka Zeile 68)
 
 Vorher:
 
 Vorher:
-setConfigEntry('MXCHANGE_INSTALLED', 'N');
+setConfigEntry('MAILER_INSTALLED', 'N');
 
 Nachher:
 
 Nachher:
-setConfigEntry('MXCHANGE_INSTALLED', 'Y');
+setConfigEntry('MAILER_INSTALLED', 'Y');
 
 Anschliessend stellen Sie die MySQL-Zugangsdaten, den Titel Ihres Mailtausches,
 Werbspruch (Slogan) und Ihre EMail-Adresse (zum Empfangen von Anmelde-EMails
 
 Anschliessend stellen Sie die MySQL-Zugangsdaten, den Titel Ihres Mailtausches,
 Werbspruch (Slogan) und Ihre EMail-Adresse (zum Empfangen von Anmelde-EMails
@@ -173,21 +173,22 @@ Ebenfalls viel Glueck dabei! :-)
 Schauen Sie unter "10. Weiterfuehrende, wichtige Links" nach, wenn Sie nicht
 weiter wissen.
 
 Schauen Sie unter "10. Weiterfuehrende, wichtige Links" nach, wenn Sie nicht
 weiter wissen.
 
+********************************************************************************
+*          Bis hier die veraltete Anleitung zur manuellen Installation         *
+********************************************************************************
+
 ----------------------------
 3. b) Zugriffsrechte (CHMOD)
 ----------------------------
 
 Es sind fuer Mailer-Project nur Leserechte auf Dateien und Verzeichnisse, sowie
 Ausfuehrbar/Durchsuchbar fuer Verzeichnisse noetig. Schreibrechte brauchen Sie
 ----------------------------
 3. b) Zugriffsrechte (CHMOD)
 ----------------------------
 
 Es sind fuer Mailer-Project nur Leserechte auf Dateien und Verzeichnisse, sowie
 Ausfuehrbar/Durchsuchbar fuer Verzeichnisse noetig. Schreibrechte brauchen Sie
-auf das Verzeichnis inc/.secret/, inc/cache/ und inc/cache/_compiled/html/, da
-dort Dateien angelegt werden muessen. Nach der fertigen Installation koennen Sie
-sogar Schreibrechte vom Verzeichnis inc/.secret/ entfernen. Sie sollten dies
-aber erst nach der Installation von ext-sql_patches tun, da die Erweiterung
-dort Schreibzugriff braucht.
+auf das Verzeichnis inc/cache/ und inc/cache/_compiled/html/, da dort Dateien
+angelegt werden muessen.
 
 Einfacher dargestellt bedeutet dies: (Oktalwerte)
 
 Einfacher dargestellt bedeutet dies: (Oktalwerte)
-- CHMOD 0555 auf alle Verzeichnisse, plus CHMOD 0777 auf inc/.secret/,
-  inc/cache/ und inc/cache/_compiled/html/
+- CHMOD 0555 auf alle Verzeichnisse, plus CHMOD 0777 auf inc/cache/ und
+  inc/cache/_compiled/(email|html|xml)/ (alle drei)
 - CHMOD 0444 auf alle Dateien, bis auf die Dateien in den oben besagten
   Verzeichnissen.
 
 - CHMOD 0444 auf alle Dateien, bis auf die Dateien in den oben besagten
   Verzeichnissen.
 
@@ -499,7 +500,7 @@ FEHLER:
   Ihr Hoster leitet alle nicht eingerichteten Subdomains auf Ihre Hauptseite
   weiter. Er hat eine Wildcat-Domain eingrichtet, die alle nicht eingerichteten
   Subdomains auffaengt.
   Ihr Hoster leitet alle nicht eingerichteten Subdomains auf Ihre Hauptseite
   weiter. Er hat eine Wildcat-Domain eingrichtet, die alle nicht eingerichteten
   Subdomains auffaengt.
-OESUNG:
+LOESUNG:
   Editieren Sie die Datei inc/cache/config-local.php und tragen Sie dort
   die URL Ihrer Webseite ein:
 
   Editieren Sie die Datei inc/cache/config-local.php und tragen Sie dort
   die URL Ihrer Webseite ein:
 
index f6c06483392262583de762d78b0bae666892a39d..be378a274a910ab1e3d56eb1fd28ac011927a62e 100644 (file)
--- a/ajax.php
+++ b/ajax.php
@@ -72,8 +72,8 @@ if ((getHttpRequestMethod() == 'POST') && (isPostRequestElementSet('level'))) {
                // Process the request
                processAjaxRequest();
 
                // Process the request
                processAjaxRequest();
 
-               // Is there an error? ('200 OK' is fine)
-               if ((getHttpStatus() != '200 OK') && (getHttpStatus() != '404 NOT FOUND')) {
+               // Is there an error which is not fine?
+               if (!isAjaxHttpStatusAccepted()) {
                        // The process was handled but didn't work
                        reportBug(__FUNCTION__, __LINE__, 'AJAX request is valid but does not do anything.');
                } // END - if
                        // The process was handled but didn't work
                        reportBug(__FUNCTION__, __LINE__, 'AJAX request is valid but does not do anything.');
                } // END - if
index 6524909cfc6d082e4a9a1276d6a4b00c1ad4afcb..1b46e221bb35960c19dc067811c00cbd545ac01e 100644 (file)
@@ -66,6 +66,9 @@ function initAjax () {
 
 // Setter for AJAX reply content
 function setAjaxReplyContent ($content) {
 
 // Setter for AJAX reply content
 function setAjaxReplyContent ($content) {
+       // Log message
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'content()=' . strlen($content));
+
        // Set it, but with URL encoding
        $GLOBALS['ajax_reply']['reply_content'] = urlencode(doFinalCompilation($content, FALSE));
 }
        // Set it, but with URL encoding
        $GLOBALS['ajax_reply']['reply_content'] = urlencode(doFinalCompilation($content, FALSE));
 }
@@ -127,11 +130,20 @@ function processAjaxRequest () {
 // Send AJAX content
 function sendAjaxContent () {
        // Is the status fine or template not found (404)?
 // Send AJAX content
 function sendAjaxContent () {
        // Is the status fine or template not found (404)?
-       if ((getHttpStatus() == '200 OK') || (getHttpStatus() == '404 NOT FOUND')) {
+       if (isAjaxHttpStatusAccepted()) {
                // Then output the JSON
                outputHtml(json_encode($GLOBALS['ajax_reply'], JSON_FORCE_OBJECT));
        } // END - if
 }
 
                // Then output the JSON
                outputHtml(json_encode($GLOBALS['ajax_reply'], JSON_FORCE_OBJECT));
        } // END - if
 }
 
+// Checks whether the HTTP status is accepted
+function isAjaxHttpStatusAccepted () {
+       // Is it accepted?
+       $isAccepted = in_array(strtoupper(getHttpStatus()), array('200 OK', '404 NOT FOUND'));
+
+       // Return it
+       return $isAccepted;
+}
+
 // [EOF]
 ?>
 // [EOF]
 ?>
index f6fd6e781108444c5aeeed2a8682bf851727d944..425c81b0295faad77ea8ca548954e1df6e08ac92 100644 (file)
@@ -56,7 +56,7 @@ function doAjaxProcessInstall () {
        } // END - if
 
        // Notify all modules that we are installing
        } // END - if
 
        // Notify all modules that we are installing
-       $GLOBALS['__mailer_installing'] =  true;
+       $GLOBALS['__mailer_installing'] = TRUE;
 
        // Again we do a call-back, so generate a function name depending on 'do'
        $callbackName = 'doAjaxInstaller' . capitalizeUnderscoreString(postRequestElement('do'));
 
        // Again we do a call-back, so generate a function name depending on 'do'
        $callbackName = 'doAjaxInstaller' . capitalizeUnderscoreString(postRequestElement('do'));
@@ -107,6 +107,10 @@ function doAjaxInstallerFooterNavigation () {
 
                case 'overview': // Enable only 'previous'
                        array_push($enabledNavigations, 'previous');
 
                case 'overview': // Enable only 'previous'
                        array_push($enabledNavigations, 'previous');
+                       if (isInstallationDataCompleted()) {
+                               // Add 'finish'
+                               array_push($enabledNavigations, 'finish');
+                       } // END - if
                        break;
 
                default: // Unsupported value
                        break;
 
                default: // Unsupported value
@@ -400,12 +404,9 @@ function doAjaxPrepareInstallerOverview () {
        $output     = '';
 
        // Check all data in session
        $output     = '';
 
        // Check all data in session
-       foreach (getSessionArray() as $key => $value) {
-               // Skip 'mailer_theme', 'tab' and 'installer'
-               if (in_array($key, array('mailer_theme', 'tab', 'installer'))) {
-                       // Skip this
-                       continue;
-               } // END - if
+       foreach (array_keys($GLOBALS['installer_groups']) as $key) {
+               // Get values from session
+               $value = getSession($key);
 
                // Is the data valid?
                $verificationStatus['is_valid'] = (isInstallerDataValid($verificationStatus, $key, $value));
 
                // Is the data valid?
                $verificationStatus['is_valid'] = (isInstallerDataValid($verificationStatus, $key, $value));
@@ -422,7 +423,7 @@ function doAjaxPrepareInstallerOverview () {
        } // END - foreach
 
        // Is it still true?
        } // END - foreach
 
        // Is it still true?
-       if ($isAllValid === TRUE) {
+       if ((isInstallationDataCompleted()) && ($isAllValid === TRUE)) {
                // Set 'done' and message
                $verificationStatus['status']  = 'done';
                $verificationStatus['message'] = '{--INSTALLER_OVERVIEW_FINAL_CHECK_DONE--}';
                // Set 'done' and message
                $verificationStatus['status']  = 'done';
                $verificationStatus['message'] = '{--INSTALLER_OVERVIEW_FINAL_CHECK_DONE--}';
@@ -434,27 +435,24 @@ function doAjaxPrepareInstallerOverview () {
        // Is it still valid?
        if ($verificationStatus['status'] != 'done') {
                // Log message away
        // Is it still valid?
        if ($verificationStatus['status'] != 'done') {
                // Log message away
-               logDebugMessage(__FUNCTION__, __LINE__, 'Final check on all stored data failed. message=' . $verificationStatus['message']);
+               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Final check on all stored data failed. message=' . $verificationStatus['message']);
+
+               // Process failed fields
+               $verificationStatus['failed_fields'] = handleInstallerFailedFields($verificationStatus['failed_fields']);
 
                // Output the array for JSON reply
 
                // Output the array for JSON reply
-               setAjaxReplyContent(json_encode($verificationStatus, JSON_FORCE_OBJECT));
+               setAjaxReplyContent(loadTemplate('install_overview_failed', TRUE, $verificationStatus));
 
                /*
                 * Something went wrong, this might happen when e.g. the user has tried
                 * to save invalid database login data but hit reload button on error
                 * message.
                 */
 
                /*
                 * Something went wrong, this might happen when e.g. the user has tried
                 * to save invalid database login data but hit reload button on error
                 * message.
                 */
-               setHttpStatus('500 Internal Server Error');
+               setHttpStatus('200 OK');
 
                // Abort here
                return;
        } // END - if
 
                // Abort here
                return;
        } // END - if
-
-       // Output final rendered content
-       setAjaxReplyContent($output);
-
-       // All okay if we reach this point
-       setHttpStatus('200 OK');
 }
 
 // [EOF]
 }
 
 // [EOF]
index cfa68f5ca1d170b81d66de4a7ddf5d21c121cf2f..aaa1472e200f0ff278db761bee95e64d06cd8ed0 100644 (file)
@@ -148,37 +148,37 @@ function updateOldConfigFile () {
        // Watch out for these lines and execute them as single command
        // @TODO Make this all better... :-/
        $watchLines = array(
        // Watch out for these lines and execute them as single command
        // @TODO Make this all better... :-/
        $watchLines = array(
-               'SITE_KEY'           => 'SITE_KEY',
-               'DEFAULT_LANG'       => 'DEFAULT_LANG',
-               'warn_no_pass'       => 'WARN_NO_PASS',
-               'WRITE_FOOTER'       => 'WRITE_FOOTER',
-               'OUTPUT_MODE'        => 'OUTPUT_MODE',
-               'MAIN_TITLE'         => 'MAIN_TITLE',
-               'SLOGAN'             => 'SLOGAN',
-               'WEBMASTER'          => 'WEBMASTER',
-               'mxchange_installed' => 'MXCHANGE_INSTALLED',
-               'admin_registered'   => 'ADMIN_REGISTERED',
-               '_MYSQL_PREFIX'      => '_MYSQL_PREFIX',
-               '_TABLE_TYPE'        => '_TABLE_TYPE',
-               '_DB_TYPE'           => '_DB_TYPE',
-               'SMTP_HOSTNAME'      => 'SMTP_HOSTNAME',
-               'SMTP_USER'          => 'SMTP_USER',
-               'SMTP_PASSWORD'      => 'SMTP_PASSWORD',
-               'ENABLE_BACKLINK'    => 'ENABLE_BACKLINK',
-               'MAIN_TITLE'         => 'MAIN_TITLE',
-               'SLOGAN'             => 'SLOGAN',
-               'WEBMASTER'          => 'WEBMASTER',
-               'PATH'               => 'PATH',
-               'URL'                => 'URL',
+               'SITE_KEY'         => 'SITE_KEY',
+               'DEFAULT_LANG'     => 'DEFAULT_LANG',
+               'warn_no_pass'     => 'WARN_NO_PASS',
+               'WRITE_FOOTER'     => 'WRITE_FOOTER',
+               'OUTPUT_MODE'      => 'OUTPUT_MODE',
+               'MAIN_TITLE'       => 'MAIN_TITLE',
+               'SLOGAN'           => 'SLOGAN',
+               'WEBMASTER'        => 'WEBMASTER',
+               'mailer_installed' => 'MAILER_INSTALLED',
+               'admin_registered' => 'ADMIN_REGISTERED',
+               '_MYSQL_PREFIX'    => '_MYSQL_PREFIX',
+               '_TABLE_TYPE'      => '_TABLE_TYPE',
+               '_DB_TYPE'         => '_DB_TYPE',
+               'SMTP_HOSTNAME'    => 'SMTP_HOSTNAME',
+               'SMTP_USER'        => 'SMTP_USER',
+               'SMTP_PASSWORD'    => 'SMTP_PASSWORD',
+               'ENABLE_BACKLINK'  => 'ENABLE_BACKLINK',
+               'MAIN_TITLE'       => 'MAIN_TITLE',
+               'SLOGAN'           => 'SLOGAN',
+               'WEBMASTER'        => 'WEBMASTER',
+               'PATH'             => 'PATH',
+               'URL'              => 'URL',
        );
 
        // Make these lower-case! (damn stupid code...)
        );
 
        // Make these lower-case! (damn stupid code...)
-       $lowerCase = array('WARN_NO_PASS', 'MXCHANGE_INSTALLED', 'ADMIN_REGISTERED');
+       $lowerCase = array('WARN_NO_PASS', 'MAILER_INSTALLED', 'ADMIN_REGISTERED');
 
        // Special comments...
        $comments = array(
                'WARN_NO_PASS'       => 'NULLPASS-WARNING',
 
        // Special comments...
        $comments = array(
                'WARN_NO_PASS'       => 'NULLPASS-WARNING',
-               'MXCHANGE_INSTALLED' => 'INSTALLED',
+               'MAILER_INSTALLED  ' => 'INSTALLED',
                'ADMIN_REGISTERED'   => 'ADMIN-SETUP',
                '_MYSQL_PREFIX'      => 'MYSQL-PREFIX',
                '_TABLE_TYPE'        => 'TABLE-TYPE',
                'ADMIN_REGISTERED'   => 'ADMIN-SETUP',
                '_MYSQL_PREFIX'      => 'MYSQL-PREFIX',
                '_TABLE_TYPE'        => 'TABLE-TYPE',
index 87a2e3024c5847b6833a62960c798730eb0e8a17..ebd74c4acca5346c09d02e43c3444724cf738009 100644 (file)
@@ -63,7 +63,7 @@ setConfigEntry('WRITE_FOOTER', 'Y');
 setConfigEntry('OUTPUT_MODE', 'render');
 
 // CFG: INSTALLED
 setConfigEntry('OUTPUT_MODE', 'render');
 
 // CFG: INSTALLED
-setConfigEntry('MXCHANGE_INSTALLED', 'N');
+setConfigEntry('MAILER_INSTALLED', 'N');
 
 // CFG: ADMIN-SETUP
 setConfigEntry('ADMIN_REGISTERED', 'N');
 
 // CFG: ADMIN-SETUP
 setConfigEntry('ADMIN_REGISTERED', 'N');
index fe21fae75537ecfadb136cb6b126cedd44e820d2..c0a939c28668ab9c851a37ece73a20a85ea7d72f 100644 (file)
@@ -54,7 +54,7 @@ function initInstaller () {
                'mysql_host'      => 'database_config',
                'mysql_dbase'     => 'database_config',
                'mysql_prefix'    => 'database_config',
                'mysql_host'      => 'database_config',
                'mysql_dbase'     => 'database_config',
                'mysql_prefix'    => 'database_config',
-               'mysql_engine'      => 'database_config',
+               'mysql_engine'    => 'database_config',
                'mysql_login'     => 'database_config',
                'mysql_password1' => 'database_config',
                'mysql_password2' => 'database_config',
                'mysql_login'     => 'database_config',
                'mysql_password1' => 'database_config',
                'mysql_password2' => 'database_config',
@@ -72,38 +72,44 @@ function initInstaller () {
 }
 
 // Write the local config-local.php file from "template"
 }
 
 // Write the local config-local.php file from "template"
-function doInstallWriteLocalConfigurationFile ($path) {
+function doInstallWriteLocalConfigurationFile ($path, $url, $title, $slogan, $email, $noPassword, $writeFooter, $backLink, $databaseHost, $databaseName, $databaseLogin, $databasePassword, $databasePrefix, $databaseType, $smtpHost, $smtpUser, $smtpPassword) {
        // Copy the config template and verify it
        // Copy the config template and verify it
-       copyFileVerified(postRequestElement('spath') . 'inc/config-local.php.dist', postRequestElement('spath') . getCachePath() . 'config-local.php', 0644);
-
-       // Ok, all done. So we can write the config data to the php files
-       // Do only write these if they differ from auto-detected values
-       if (postRequestElement('spath') != getPath()) changeDataInLocalConfigurationFile('SERVER-PATH', "setConfigEntry('PATH', '", "');", postRequestElement('spath'), 0);
-       if (postRequestElement('burl')  != getUrl())  changeDataInLocalConfigurationFile('HOST-URL', "setConfigEntry('URL', '", "');", postRequestElement('burl'), 0);
+       copyFileVerified($path . 'inc/config-local.php.dist', $path . getCachePath() . 'config-local.php', 0644);
+
+       /*
+        * Ok, all done. So we can write the config data to the php files. Do only
+        * write these if they differ from auto-detected values.
+        */
+       if ($path != getPath()) {
+               changeDataInLocalConfigurationFile('SERVER-PATH', "setConfigEntry('PATH', '", "');", $path, 0);
+       } // END - if
+       if ($url != getUrl()) {
+               changeDataInLocalConfigurationFile('HOST-URL', "setConfigEntry('URL', '", "');", $url, 0);
+       } // END - if
 
        // Write more data
 
        // Write more data
-       changeDataInLocalConfigurationFile('MAIN-TITLE', "setConfigEntry('MAIN_TITLE', '", "');", postRequestElement('title'), 0);
-       changeDataInLocalConfigurationFile('SLOGAN', "setConfigEntry('SLOGAN', '", "');", postRequestElement('slogan'), 0);
-       changeDataInLocalConfigurationFile('WEBMASTER', "setConfigEntry('WEBMASTER', '", "');", postRequestElement('email'), 0);
-       changeDataInLocalConfigurationFile('NULLPASS-WARNING', "setConfigEntry('WARN_NO_PASS', '", "');", postRequestElement('warn_no_pass'), 0);
-       changeDataInLocalConfigurationFile('WRITE-FOOTER', "setConfigEntry('WRITE_FOOTER', '", "');", postRequestElement('wfooter'), 0);
-       changeDataInLocalConfigurationFile('BACKLINK', "setConfigEntry('ENABLE_BACKLINK', '", "');", postRequestElement('blink'), 0);
+       changeDataInLocalConfigurationFile('MAIN-TITLE', "setConfigEntry('MAIN_TITLE', '", "');", $title, 0);
+       changeDataInLocalConfigurationFile('SLOGAN', "setConfigEntry('SLOGAN', '", "');", $slogan, 0);
+       changeDataInLocalConfigurationFile('WEBMASTER', "setConfigEntry('WEBMASTER', '", "');", $email, 0);
+       changeDataInLocalConfigurationFile('NULLPASS-WARNING', "setConfigEntry('WARN_NO_PASS', '", "');", $noPassword, 0);
+       changeDataInLocalConfigurationFile('WRITE-FOOTER', "setConfigEntry('WRITE_FOOTER', '", "');", $writeFooter, 0);
+       changeDataInLocalConfigurationFile('BACKLINK', "setConfigEntry('ENABLE_BACKLINK', '", "');", $backLink, 0);
        // @TODO DEACTIVATED: changeDataInLocalConfigurationFile('OUTPUT-MODE', "setConfigEntry('OUTPUT_MODE', '", "');", postRequestElement('omode'), 0);
        // @TODO DEACTIVATED: changeDataInLocalConfigurationFile('OUTPUT-MODE', "setConfigEntry('OUTPUT_MODE', '", "');", postRequestElement('omode'), 0);
-       changeDataInLocalConfigurationFile('MYSQL-HOST', "      'host'     => '", "',", postRequestElement('mysql','host'), 0);
-       changeDataInLocalConfigurationFile('MYSQL-DBASE', "     'dbase'    => '", "',", postRequestElement('mysql','dbase'), 0);
-       changeDataInLocalConfigurationFile('MYSQL-LOGIN', "     'login'    => '", "',", postRequestElement('mysql','login'), 0);
-       changeDataInLocalConfigurationFile('MYSQL-PASSWORD', "  'password' => '", "',", postRequestElement('mysql','pass1'), 0);
-       changeDataInLocalConfigurationFile('MYSQL-PREFIX', "setConfigEntry('_MYSQL_PREFIX', '", "');", postRequestElement('mysql','prefix'), 0);
-       changeDataInLocalConfigurationFile('TABLE-TYPE', "setConfigEntry('_TABLE_TYPE', '", "');", postRequestElement('mysql','type'), 0);
-       changeDataInLocalConfigurationFile('SMTP-HOSTNAME', "setConfigEntry('SMTP_HOSTNAME', '", "');", postRequestElement('smtp_host'), 0);
-       changeDataInLocalConfigurationFile('SMTP-USER', "setConfigEntry('SMTP_USER', '", "');", postRequestElement('smtp_user'), 0);
-       changeDataInLocalConfigurationFile('SMTP-PASSWORD', "setConfigEntry('SMTP_PASSWORD', '", "');", postRequestElement('smtp_pass1'), 0);
+       changeDataInLocalConfigurationFile('MYSQL-HOST', "      'host'     => '", "',", $databaseHost, 0);
+       changeDataInLocalConfigurationFile('MYSQL-DBASE', "     'dbase'    => '", "',", $databaseName, 0);
+       changeDataInLocalConfigurationFile('MYSQL-LOGIN', "     'login'    => '", "',", $databaseLogin, 0);
+       changeDataInLocalConfigurationFile('MYSQL-PASSWORD', "  'password' => '", "',", $databasePassword, 0);
+       changeDataInLocalConfigurationFile('MYSQL-PREFIX', "setConfigEntry('_MYSQL_PREFIX', '", "');", $databasePrefix, 0);
+       changeDataInLocalConfigurationFile('TABLE-TYPE', "setConfigEntry('_TABLE_TYPE', '", "');", $databaseType, 0);
+       changeDataInLocalConfigurationFile('SMTP-HOSTNAME', "setConfigEntry('SMTP_HOSTNAME', '", "');", $smtpHost, 0);
+       changeDataInLocalConfigurationFile('SMTP-USER', "setConfigEntry('SMTP_USER', '", "');", $smtpUser, 0);
+       changeDataInLocalConfigurationFile('SMTP-PASSWORD', "setConfigEntry('SMTP_PASSWORD', '", "');", $smtpPassword, 0);
 
        // Generate a long site-key and write it
        changeDataInLocalConfigurationFile('SITE-KEY', "setConfigEntry('SITE_KEY', '", "');", generatePassword(50), 0);
 
        // Script is now installed
 
        // Generate a long site-key and write it
        changeDataInLocalConfigurationFile('SITE-KEY', "setConfigEntry('SITE_KEY', '", "');", generatePassword(50), 0);
 
        // Script is now installed
-       changeDataInLocalConfigurationFile('INSTALLED', "setConfigEntry('MXCHANGE_INSTALLED', '", "');", 'Y', 0);
+       changeDataInLocalConfigurationFile('INSTALLED', "setConfigEntry('MAILER_INSTALLED', '", "');", 'Y', 0);
 }
 
 // Adds a given template with content to install output stream
 }
 
 // Adds a given template with content to install output stream
@@ -211,6 +217,26 @@ function isPlainInstaller () {
        return $isPlainInstaller;
 }
 
        return $isPlainInstaller;
 }
 
+// Handle all given failed fields
+function handleInstallerFailedFields ($failedFields) {
+       // Don't do anything with no array or no entries
+       if ((!is_array($failedFields)) || (count($failedFields) == 0)) {
+               // Abort here
+               reportBug(__FUNCTION__, __LINE__, 'failedFields[]=' . gettype($failedFields) . ' verification failed');
+       } // END - if
+
+       // Handle all
+       $out = '<ol>';
+       foreach ($failedFields as $key => $field) {
+               // "Translate" it
+               $out .= '<li>{--INSTALLER_FIELD_FAILED_' . strtoupper($field) . '--}</li>';
+       } // END - foreach
+       $out .= '</ol>';
+
+       // Return it
+       return $out;
+}
+
 // Checks given key/value pair if it is valid by a call-back
 function isInstallerDataValid (&$saveStatus, $key, $value) {
        //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',value=' . $value . ' - ENTERED!');
 // Checks given key/value pair if it is valid by a call-back
 function isInstallerDataValid (&$saveStatus, $key, $value) {
        //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',value=' . $value . ' - ENTERED!');
@@ -227,7 +253,7 @@ function isInstallerDataValid (&$saveStatus, $key, $value) {
        } // END - if
 
        // Then call it back
        } // END - if
 
        // Then call it back
-       $isValid = (bool) call_user_func($callbackName, $value);
+       $isValid = (bool) call_user_func($callbackName, trim($value));
 
        // Is it not valid?
        //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',value=' . $value . ',isValid=' . intval($isValid));
 
        // Is it not valid?
        //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',value=' . $value . ',isValid=' . intval($isValid));
@@ -322,6 +348,9 @@ function isInstallerBasePathValid ($value) {
        $isValid = (
                // Is it a directory?
                (isDirectory($value))
        $isValid = (
                // Is it a directory?
                (isDirectory($value))
+       &&
+               // Doesn't contain dots
+               (strpos($value, '..') === FALSE)
        &&
                // Is there a trailing slash?
                (substr($value, -1, 1) == '/')
        &&
                // Is there a trailing slash?
                (substr($value, -1, 1) == '/')
@@ -331,6 +360,9 @@ function isInstallerBasePathValid ($value) {
        &&
                // What about gen_sql_patches.php?
                (isFileReadable($value . 'inc/gen_sql_patches.php'))
        &&
                // What about gen_sql_patches.php?
                (isFileReadable($value . 'inc/gen_sql_patches.php'))
+       &&
+               // And how about referral-functions.php?
+               (isFileReadable($value . 'inc/referral-functions.php'))
        );
 
        // Return it
        );
 
        // Return it
@@ -364,17 +396,39 @@ function isInstallerBaseUrlValid ($value) {
        return $isValid;
 }
 
        return $isValid;
 }
 
+// Call-back function to checl validity of 'main_title'
+function isInstallerMainTitleValid ($value) {
+       // Is it valid?
+       // @TODO Comparing with DEFAULT_MAIN_TITLE doesn't work
+       $isValid = ((strlen($value) >= 4) && ($value != getMessage('DEFAULT_MAIN_TITLE')));
+
+       // Return it
+       return $isValid;
+}
+
+// Call-back function to checl validity of 'slogan'
+function isInstallerSloganValid ($value) {
+       // Is it valid?
+       $isValid = ((strlen($value) >= 4) && ($value != getMessage('DEFAULT_SLOGAN')));
+
+       // Return it
+       return $isValid;
+}
+
 // Call-back function to check validity of 'webmaster'
 function isInstallerWebmasterValid ($value) {
        //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'value=' . $value . ' - ENTERED!');
        // Is it a valid email address?
 // Call-back function to check validity of 'webmaster'
 function isInstallerWebmasterValid ($value) {
        //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'value=' . $value . ' - ENTERED!');
        // Is it a valid email address?
-       $isValid = (
+       $isValid = ((
                // Is it a valid email address?
                (isEmailValid($value))
        ||
                // Or is there 'localhost/127.0.0.1' as hostname? Then don't check email address (e.g. you@localhost)
                (in_array(detectServerName(), array('localhost', '127.0.0.1')))
                // Is it a valid email address?
                (isEmailValid($value))
        ||
                // Or is there 'localhost/127.0.0.1' as hostname? Then don't check email address (e.g. you@localhost)
                (in_array(detectServerName(), array('localhost', '127.0.0.1')))
-       );
+       ) && (
+               // Is not default "email address"
+               $value != getMessage('DEFAULT_WEBMASTER')
+       ));
 
        // Return it
        //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'value=' . $value . ',isValid=' . intval($isValid) . ' - EXIT');
 
        // Return it
        //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'value=' . $value . ',isValid=' . intval($isValid) . ' - EXIT');
@@ -387,6 +441,8 @@ function isInstallerWebmasterValid ($value) {
 function isInstallerMysqlHostValid ($value) {
        // This value must match a hostname or IP address
        $isValid = (
 function isInstallerMysqlHostValid ($value) {
        // This value must match a hostname or IP address
        $isValid = (
+               // Shall not be empty
+               (!empty($value)) && (
                // Is localhost/127.0.0.1? (mostly the case)
                (in_array($value, array('localhost', '127.0.0.1')))
        ||
                // Is localhost/127.0.0.1? (mostly the case)
                (in_array($value, array('localhost', '127.0.0.1')))
        ||
@@ -395,14 +451,14 @@ function isInstallerMysqlHostValid ($value) {
        ||
                // Host name match
                (preg_match('/([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}/', $value))
        ||
                // Host name match
                (preg_match('/([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}/', $value))
-       );
+       ));
 
        // Return it
        return $isValid;
 }
 
 // Call-back function to check validity of 'mysql_engine'
 
        // Return it
        return $isValid;
 }
 
 // Call-back function to check validity of 'mysql_engine'
-function isInstallerMysqlTypeValid ($value) {
+function isInstallerMysqlEngineValid ($value) {
        // This value must be 'MyISAM' or 'InnoDB'
        $isValid = in_array($value, array('MyISAM', 'InnoDB'));
 
        // This value must be 'MyISAM' or 'InnoDB'
        $isValid = in_array($value, array('MyISAM', 'InnoDB'));
 
@@ -410,6 +466,33 @@ function isInstallerMysqlTypeValid ($value) {
        return $isValid;
 }
 
        return $isValid;
 }
 
+// Call-back function to check validity of 'mysql_dbase'
+function isInstallerMysqlDbaseValid ($value) {
+       // This value must not be empty
+       $isValid = ((!empty($value)) && ($value != 'your_database'));
+
+       // Return it
+       return $isValid;
+}
+
+// Call-back function to check validity of 'mysql_login'
+function isInstallerMysqlLoginValid ($value) {
+       // This value must not be empty
+       $isValid = ((!empty($value)) && ($value != 'your_login'));
+
+       // Return it
+       return $isValid;
+}
+
+// Call-back function to check validity of 'mysql_prefix'
+function isInstallerMysqlPrefixValid ($value) {
+       // This value must not be empty
+       $isValid = !empty($value);
+
+       // Return it
+       return $isValid;
+}
+
 // ----------------- SMTP configuration -----------------
 
 // ----------------- Other configuration -----------------
 // ----------------- SMTP configuration -----------------
 
 // ----------------- Other configuration -----------------
@@ -418,6 +501,49 @@ function isInstallerMysqlTypeValid ($value) {
 //                 Call-back functions to post-check validity
 //-----------------------------------------------------------------------------
 
 //                 Call-back functions to post-check validity
 //-----------------------------------------------------------------------------
 
+// Call-back function to check if base data is valid
+function isInstallerPostBaseDataValid ($currentTab) {
+       // By default it is not valid
+       $isValid = FALSE;
+
+       // Is the base path valid?
+       if (!isInstallerBasePathValid(postRequestElement('base_path'))) {
+               // Then mark it
+               $GLOBALS['installer_post_error'][$currentTab] = '{--INSTALLER_POST_BASE_PATH_INVALID--}';
+               array_push($GLOBALS['installer_failed_fields'][$currentTab], 'base_path');
+               return FALSE;
+       } elseif (!isInstallerBaseUrlValid(postRequestElement('base_url'))) {
+               // Then mark it
+               $GLOBALS['installer_post_error'][$currentTab] = '{--INSTALLER_POST_BASE_URL_INVALID--}';
+               array_push($GLOBALS['installer_failed_fields'][$currentTab], 'base_url');
+               return FALSE;
+       } elseif (strlen(postRequestElement('main_title')) < 3) {
+               // To short
+               $GLOBALS['installer_post_error'][$currentTab] = '{--INSTALLER_POST_MAIN_TITLE_INVALID--}';
+               array_push($GLOBALS['installer_failed_fields'][$currentTab], 'main_title');
+               return FALSE;
+       } elseif (strlen(postRequestElement('slogan')) < 3) {
+               // To short
+               $GLOBALS['installer_post_error'][$currentTab] = '{--INSTALLER_POST_SLOGAN_INVALID--}';
+               array_push($GLOBALS['installer_failed_fields'][$currentTab], 'slogan');
+               return FALSE;
+       } elseif (!isInstallerWebmasterValid(postRequestElement('webmaster'))) {
+               // Then mark it
+               $GLOBALS['installer_post_error'][$currentTab] = '{--INSTALLER_POST_WEBMASTER_INVALID--}';
+               array_push($GLOBALS['installer_failed_fields'][$currentTab], 'webmaster');
+               return FALSE;
+       } else {
+               // All fine
+               $isValid = TRUE;
+
+               // Remember this tab in session
+               installTabOkay($currentTab);
+       }
+
+       // Return it
+       return $isValid;
+}
+
 // Call-back function to check if database configuration in POST is valid
 function isInstallerPostDatabaseConfigValid ($currentTab) {
        // By default nothing is valid
 // Call-back function to check if database configuration in POST is valid
 function isInstallerPostDatabaseConfigValid ($currentTab) {
        // By default nothing is valid
@@ -580,12 +706,44 @@ function isInstallerPostDatabaseConfigValid ($currentTab) {
                // Still something bad happened (e.g. tables found)
                $GLOBALS['installer_post_error'][$currentTab] = '{--INSTALLER_POST_DATABASE_IN_USE--}';
                array_push($GLOBALS['installer_failed_fields'][$currentTab], 'mysql_dbase');
                // Still something bad happened (e.g. tables found)
                $GLOBALS['installer_post_error'][$currentTab] = '{--INSTALLER_POST_DATABASE_IN_USE--}';
                array_push($GLOBALS['installer_failed_fields'][$currentTab], 'mysql_dbase');
-       } // END - if
+       } else {
+               // Remember this tab in session
+               installTabOkay($currentTab);
+       }
 
        // Return status
        return $isValid;
 }
 
 
        // Return status
        return $isValid;
 }
 
+// Store given tab in session
+function installTabOkay ($currentTab) {
+       // Is it set?
+       if (isSessionVariableSet('installer_okay')) {
+               // Is this tab already found?
+               if (strpos(getSession('installer_okay'), $currentTab) === FALSE) {
+                       // Then extend it
+                       setSession('installer_okay', getSession('installer_okay') . ';' . $currentTab);
+               } // END - if
+       } else {
+               // Initially set it
+               setSession('installer_okay', $currentTab);
+       }
+}
+
+// Checks whether at least the required tabs are completed
+function isInstallationDataCompleted () {
+       // Check both
+       $isCompleted = (
+               (isSessionVariableSet('installer_okay')) &&
+               (strpos(getSession('installer_okay'), 'base_data') !== FALSE) &&
+               (strpos(getSession('installer_okay'), 'database_config') !== FALSE)
+       );
+
+       // Return it
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'isCompleted=' . intval($isCompleted) . ',installer_okay=' . getSession('installer_okay'));
+       return $isCompleted;
+}
+
 // Call-back function to check if enable_backlink is Y/N
 function isInstallerEnableBacklinkValid ($currentTab) {
        // Check and return it
 // Call-back function to check if enable_backlink is Y/N
 function isInstallerEnableBacklinkValid ($currentTab) {
        // Check and return it
@@ -610,5 +768,11 @@ function isInstallerOutputModeValid ($currentTab) {
        return in_array($currentTab, array('render', 'direct'));
 }
 
        return in_array($currentTab, array('render', 'direct'));
 }
 
+// Wrapper to import given installation SQL dump
+function importInstallSqlDump ($dumpName) {
+       // Import the file
+       importSqlDump('install', $dumpName);
+}
+
 // [EOF]
 ?>
 // [EOF]
 ?>
index b8e2f287c4b210db747028aaee4c658049a3de73..6cd0f3032f783e8ed68ad636b3e26781a704a4e7 100644 (file)
@@ -69,23 +69,13 @@ if ((isPostRequestElementSet('finalize')) && (!isInstalled())) {
                                setConfigEntry('_MYSQL_PREFIX', postRequestElement('mysql', 'prefix'));
                                setConfigEntry('__DB_NAME'    , $GLOBALS['install_mysql']['dbase']);
 
                                setConfigEntry('_MYSQL_PREFIX', postRequestElement('mysql', 'prefix'));
                                setConfigEntry('__DB_NAME'    , $GLOBALS['install_mysql']['dbase']);
 
-                               // Both exists so import them
-                               foreach (array('tables', 'menu-'.getLanguage()) as $dump) {
-                                       // Should be save here because file_exists() is there but we check it again. :)
-                                       $FQFN = postRequestElement('spath') . 'install/' . $dump . '.sql';
-
-                                       // Is the file readable?
-                                       if (isFileReadable($FQFN)) {
-                                               // Read the file
-                                               $fileContent = readSqlDump($FQFN);
+                               // Set path
+                               setConfigEntry('PATH', postRequestElement('spath'));
+                               unset($GLOBALS['getPath']);
 
 
-                                               // Split it up against ";\n" and merge it into existing SQLs
-                                               mergeSqls(explode(";\n", $fileContent), 'install');
-                                       } else {
-                                               // Not readable!
-                                               reportBug(__FILE__, __LINE__, sprintf("SQL dump %s is not readable.", $dump));
-                                       }
-                               } // END - foreach
+                               // Both exists so import them
+                               importInstallSqlDump('tables');
+                               importInstallSqlDump('menu-' . getLanguage());
                                //* DEBUG: */ die(__FUNCTION__.'['.__LINE__.']:'<pre>'.print_r(getSqls(), TRUE).'</pre>');
 
                                // Are some SQLs found?
                                //* DEBUG: */ die(__FUNCTION__.'['.__LINE__.']:'<pre>'.print_r(getSqls(), TRUE).'</pre>');
 
                                // Are some SQLs found?
@@ -97,9 +87,6 @@ if ((isPostRequestElementSet('finalize')) && (!isInstalled())) {
 
                                // Now run all queries through
                                runFilterChain('run_sqls');
 
                                // Now run all queries through
                                runFilterChain('run_sqls');
-
-                               // Copy the config template and verify it
-                               doInstallWriteLocalConfigurationFile(postRequestElement('spath'));
                        } // END - if
                } // END - if
        } // END - if
                        } // END - if
                } // END - if
        } // END - if
@@ -119,6 +106,8 @@ if ((isPostRequestElementSet('finalize')) && (!isInstalled())) {
                $content['spath']      = postRequestElement('spath');
                $content['burl']       = postRequestElement('burl');
                $content['title']      = postRequestElement('title');
                $content['spath']      = postRequestElement('spath');
                $content['burl']       = postRequestElement('burl');
                $content['title']      = postRequestElement('title');
+               $content['slogan']     = postRequestElement('slogan');
+               $content['email']      = postRequestElement('email');
                $content['smtp_host']  = postRequestElement('smtp_host');
                $content['smtp_user']  = postRequestElement('smtp_user');
                $content['smtp_pass']  = postRequestElement('smtp_pass1');
                $content['smtp_host']  = postRequestElement('smtp_host');
                $content['smtp_user']  = postRequestElement('smtp_user');
                $content['smtp_pass']  = postRequestElement('smtp_pass1');
@@ -129,6 +118,27 @@ if ((isPostRequestElementSet('finalize')) && (!isInstalled())) {
                // We have handled all fatal errors here
                initFatalMessages();
        } else {
                // We have handled all fatal errors here
                initFatalMessages();
        } else {
+               // Copy the config template and verify it
+               doInstallWriteLocalConfigurationFile(
+                       postRequestElement('spath'),
+                       postRequestElement('burl'),
+                       postRequestElement('title'),
+                       postRequestElement('slogan'),
+                       postRequestElement('email'),
+                       postRequestElement('warn_no_pass'),
+                       postRequestElement('wfooter'),
+                       postRequestElement('blink'),
+                       postRequestElement('mysql', 'host'),
+                       postRequestElement('mysql', 'dbase'),
+                       postRequestElement('mysql', 'login'),
+                       postRequestElement('mysql', 'pass1'),
+                       postRequestElement('mysql', 'prefix'),
+                       postRequestElement('mysql', 'type'),
+                       postRequestElement('smtp_host'),
+                       postRequestElement('smtp_user'),
+                       postRequestElement('smtp_pass1')
+               );
+
                // Register ext-sql_patches and ext-task
                if ((registerExtension('sql_patches', NULL)) && (registerExtension('task', NULL))) {
                        // Installation is done!
                // Register ext-sql_patches and ext-task
                if ((registerExtension('sql_patches', NULL)) && (registerExtension('task', NULL))) {
                        // Installation is done!
index bd9f73ee485ea953f621a8334ff9213a0cc3b4c6..993cfcdc504521b8673c5a8350106e854a67cc99 100644 (file)
@@ -72,7 +72,7 @@ addMessages(array(
        'MEMBER_CASH_COUPON' => "Gutschein einl&ouml;sen",
        'MEMBER_ENTER_COUPON_CODE' => "Gutschein-Code eingeben:",
        'MEMBER_COUPON_CODE_EMPTY' => "Sie haben keinen Gutschein-Code eingegeben. Bitte versuchen Sie es erneut.",
        'MEMBER_CASH_COUPON' => "Gutschein einl&ouml;sen",
        'MEMBER_ENTER_COUPON_CODE' => "Gutschein-Code eingeben:",
        'MEMBER_COUPON_CODE_EMPTY' => "Sie haben keinen Gutschein-Code eingegeben. Bitte versuchen Sie es erneut.",
-       'MEMBER_COUPON_CODE_ALREADY_CASHED' => "Der von Ihnen eingegebene Gutschein-Code ist entweder ung&uuml;tig, Ihnen nicht zugewiesen, bereits abgelaufen, oder Sie haben ihn bereits eingel&ouml;st.",
+       'MEMBER_COUPON_CODE_ALREADY_CASHED' => "Der von Ihnen eingegebene Gutschein-Code ist entweder ung&uuml;ltig, Ihnen nicht zugewiesen, bereits abgelaufen, oder Sie haben ihn bereits eingel&ouml;st.",
        'MEMBER_COUPON_CODE_CASHED' => "Ihr Gutschein im Wert von <span class=\"data\">{%%pipe,translateComma=%s%%} {?POINTS?}</span> wurde soeben eingel&ouml;st und Ihrem Konto gutgeschrieben.",
        'MEMBER_COUPON_CASHED_404' => "Sie haben noch keinen Gutschein eingel&ouml;st oder es wurde noch keiner erstellt. Bitte pr&uuml;fen Sie Ihre Emails, ob Sie eventuell einen erhalten haben, den Sie noch einl&ouml;sen k&ouml;nnen.",
        'MEMBER_LIST_CASHED_COUPONS_TITLE' => "Alle Ihre eingel&ouml;sten Gutscheine",
        'MEMBER_COUPON_CODE_CASHED' => "Ihr Gutschein im Wert von <span class=\"data\">{%%pipe,translateComma=%s%%} {?POINTS?}</span> wurde soeben eingel&ouml;st und Ihrem Konto gutgeschrieben.",
        'MEMBER_COUPON_CASHED_404' => "Sie haben noch keinen Gutschein eingel&ouml;st oder es wurde noch keiner erstellt. Bitte pr&uuml;fen Sie Ihre Emails, ob Sie eventuell einen erhalten haben, den Sie noch einl&ouml;sen k&ouml;nnen.",
        'MEMBER_LIST_CASHED_COUPONS_TITLE' => "Alle Ihre eingel&ouml;sten Gutscheine",
index 1f514ff9c168fdf5221ca10807ce19eda6d264ff..9ea81d38f0999b21de787835e531dfcc46f1da37 100644 (file)
@@ -962,7 +962,7 @@ addMessages(array(
        'MEMBER_ORDER_TEST_STARTED' => "Framekiller-Test startet...",
        'MEMBER_ORDER_PLEASE_WAIT_1' => "Ihre Seite wird auf Framekiller getestet. Bitte noch ",
        'MEMBER_ORDER_PLEASE_WAIT_2' => " Sekunden warten.",
        'MEMBER_ORDER_TEST_STARTED' => "Framekiller-Test startet...",
        'MEMBER_ORDER_PLEASE_WAIT_1' => "Ihre Seite wird auf Framekiller getestet. Bitte noch ",
        'MEMBER_ORDER_PLEASE_WAIT_2' => " Sekunden warten.",
-       'ADMIN_SESSION_SAVE_PATH_INVALID' => "Pfad f&uuml;r Sitzungsdateien ung&uuml;tig.",
+       'ADMIN_SESSION_SAVE_PATH_INVALID' => "Pfad f&uuml;r Sitzungsdateien ung&uuml;ltig.",
        'ADMIN_CONFIG_SESSION_SAVE_PATH' => "Speicherpfad f. Sitzungsdateien",
        'ADMIN_BASE_PATH' => "Absoluter Server-Pfad",
        'ADMIN_SESSION_SAVE_PATH_NOTICE' => "Sie sollten f&uuml;r Sitzungsdateien einen Pfad w&auml;hlen der ausserhalb des Server-Pfades liegt, da sonst eventuell die Sitzungsdateien vom Web erreichbar sind, was ein hohes Sicherheitsrisiko darstellt.",
        'ADMIN_CONFIG_SESSION_SAVE_PATH' => "Speicherpfad f. Sitzungsdateien",
        'ADMIN_BASE_PATH' => "Absoluter Server-Pfad",
        'ADMIN_SESSION_SAVE_PATH_NOTICE' => "Sie sollten f&uuml;r Sitzungsdateien einen Pfad w&auml;hlen der ausserhalb des Server-Pfades liegt, da sonst eventuell die Sitzungsdateien vom Web erreichbar sind, was ein hohes Sicherheitsrisiko darstellt.",
index c3cfb87c0081072e77ead02331ceda53e5658649..e5984660f333484e95d1960f9bf02baada32ab1a 100644 (file)
@@ -56,6 +56,7 @@ addMessages(array(
        'INSTALLER_FINISHED' => "Die Installation ist abgeschlossen.",
        'INSTALLER_FIN_SECU' => "Sie sollten jetzt die Dateien <u>install.php</u> und <u>inc/install-inc.php</u> von Ihrem Server l&ouml;schen. Dies ist zwar normalerweise nicht erforderlich, Sie sollten es aber dennoch tun, um die Sicherheit zus&auml;tzlich zu erh&ouml;hen.",
        'INSTALLER_CONTINUE_ADMIN' => "Weiter zum Administrationsbereich...",
        'INSTALLER_FINISHED' => "Die Installation ist abgeschlossen.",
        'INSTALLER_FIN_SECU' => "Sie sollten jetzt die Dateien <u>install.php</u> und <u>inc/install-inc.php</u> von Ihrem Server l&ouml;schen. Dies ist zwar normalerweise nicht erforderlich, Sie sollten es aber dennoch tun, um die Sicherheit zus&auml;tzlich zu erh&ouml;hen.",
        'INSTALLER_CONTINUE_ADMIN' => "Weiter zum Administrationsbereich...",
+       'INSTALLER_INIT_PLEASE_WAIT' => "Einen Augenblick, die Installation wird vorbereitet ...",
 
        // Plain installer - general
        'INSTALLER_SQL_IMPORT_FAILED' => "Konnte die SQL-Dateien aus <strong>install/</strong> nicht nachladen. Bitte Zugriffsrechte (CHMOD) auf die Dateien &uuml;berpr&uuml;fen. Diese sollten 644 mindestens aufweisen.",
 
        // Plain installer - general
        'INSTALLER_SQL_IMPORT_FAILED' => "Konnte die SQL-Dateien aus <strong>install/</strong> nicht nachladen. Bitte Zugriffsrechte (CHMOD) auf die Dateien &uuml;berpr&uuml;fen. Diese sollten 644 mindestens aufweisen.",
@@ -80,16 +81,17 @@ addMessages(array(
 
        // Installation pages titles
        'INSTALLER_PAGE_INIT_TITLE' => "Installationsroute initialisiert gerade",
 
        // Installation pages titles
        'INSTALLER_PAGE_INIT_TITLE' => "Installationsroute initialisiert gerade",
-       'INSTALLER_PAGE_WELCOME_TITLE' => "Willkommen zur Installation von {?TITLE?}, dem freien {?mt_word?}-Script.",
-       'INSTALLER_BASE_DATA_TITLE' => "Server-Pfad, Basis-URL und Webseitentitel",
-       'INSTALLER_DATABASE_CONFIG_TITLE' => "Datenbankzugangsdaten: Hostname, Login, Passwort, Tabellentyp usw.",
-       'INSTALLER_SMTP_CONFIG_TITLE' => "SMTP-Server Einstellungen",
-       'INSTALLER_OTHER_CONFIG_TITLE' => "Verschiedene Einstellungen",
+       'INSTALLER_PAGE_WELCOME_TITLE' => "Willkommen zur Installation von {?TITLE?}, dem freien {?mt_word?}-Script",
+       'INSTALLER_PAGE_BASE_DATA_TITLE' => "Server-Pfad, Basis-URL und Webseitentitel",
+       'INSTALLER_PAGE_DATABASE_CONFIG_TITLE' => "Zugangsdaten zur Datenbank",
+       'INSTALLER_PAGE_SMTP_CONFIG_TITLE' => "SMTP-Server Einstellungen",
+       'INSTALLER_PAGE_OTHER_CONFIG_TITLE' => "Verschiedene Einstellungen",
+       'INSTALLER_PAGE_OVERVIEW_TITLE' => "Die Installation kann beginnen",
 
        // Installation pages descriptions
        'INSTALLER_BASE_DATA_DESCRIPTION' => "Geben Sie hier den absoluten Server-Pfad (/ihr/server/pfad/) <strong>mit</strong> abschliessendem Slash (/), die Basis-URL (vorgegebene Werte stimmen meistens) und den Titel Ihres {?mt_word2?} ein.",
        'INSTALLER_DATABASE_CONFIG_DESCRIPTION' => "Geben Sie hier die Daten vom Datenbankserver ein, die Ihnen vom Hoster mitgeteilt wurden. Es wird dann anschliessend versucht, eine Testverbindung aufzubauen.",
 
        // Installation pages descriptions
        'INSTALLER_BASE_DATA_DESCRIPTION' => "Geben Sie hier den absoluten Server-Pfad (/ihr/server/pfad/) <strong>mit</strong> abschliessendem Slash (/), die Basis-URL (vorgegebene Werte stimmen meistens) und den Titel Ihres {?mt_word2?} ein.",
        'INSTALLER_DATABASE_CONFIG_DESCRIPTION' => "Geben Sie hier die Daten vom Datenbankserver ein, die Ihnen vom Hoster mitgeteilt wurden. Es wird dann anschliessend versucht, eine Testverbindung aufzubauen.",
-       'INSTALLER_SMTP_CONFIG_DESCRIPTION' => "Geben Sie hier die Ihre Zugangsdaten zum SMTP-Server (ausgehender Mailserver) ein, wenn der mail()-Befehl auf Ihrem Server deaktiviert sein sollte. Oder lassen Sie alle Felder leer f&uuml;r Standard-Einstellungen.",
+       'INSTALLER_SMTP_CONFIG_DESCRIPTION' => "Geben Sie hier Ihre Zugangsdaten zum SMTP-Server (ausgehender Mailserver) ein, wenn der mail()-Befehl auf Ihrem Server deaktiviert sein sollte. Oder lassen Sie alle Felder leer f&uuml;r Standard-Einstellungen.",
        'INSTALLER_OTHER_CONFIG_DESCRIPTION' => "Hier k&ouml;nnen Sie weitere Einstellungen vornehmen, wie zum Beispiel den Ausgabe-Modus festlegen, in der der HTML-Code ausgegeben werden soll, usw.",
 
        // Installation page - Base data
        'INSTALLER_OTHER_CONFIG_DESCRIPTION' => "Hier k&ouml;nnen Sie weitere Einstellungen vornehmen, wie zum Beispiel den Ausgabe-Modus festlegen, in der der HTML-Code ausgegeben werden soll, usw.",
 
        // Installation page - Base data
@@ -116,22 +118,23 @@ addMessages(array(
        'INSTALLER_MODE_RENDER' => "In &#36;GLOBALS &quot;rendern&quot;",
        'INSTALLER_MODE_DIRECT' => "Im Ausgabebuffer cachen",
        'INSTALLER_ENABLE_BACKLINK' => "Backlink zu {?SERVER_URL?} setzen?",
        'INSTALLER_MODE_RENDER' => "In &#36;GLOBALS &quot;rendern&quot;",
        'INSTALLER_MODE_DIRECT' => "Im Ausgabebuffer cachen",
        'INSTALLER_ENABLE_BACKLINK' => "Backlink zu {?SERVER_URL?} setzen?",
-       'INSTALLER_ENABLE_BACKLINK_NOTICE' => "Derzeit ist <span class=\"notice\">rel=&quot;external&quot;</span> f&uuml;r den Backlink gesetzt. Bitte nicht den Backlink eingebaut lassen und <strong>rel=&quot;nofollow&quot;</strong> verwenden. Das schadet allen.",
+       'INSTALLER_ENABLE_BACKLINK_NOTICE' => "<strong>Hinweis:</strong> Derzeit ist <span class=\"notice\">rel=&quot;external&quot;</span> f&uuml;r den Backlink gesetzt. Bitte nicht den Backlink eingebaut lassen und <strong>rel=&quot;nofollow&quot;</strong> verwenden. Das schadet allen.",
 
        // Installation notes
        'INSTALLER_BASE_PATH_NOTICE' => "Mit abschlie&szlig;endem &#47.",
 
        // Installation notes
        'INSTALLER_BASE_PATH_NOTICE' => "Mit abschlie&szlig;endem &#47.",
-       'INSTALLER_BASE_URL_NOTICE' => "Ohne abschlie&szlig;endem &#47.",
+       'INSTALLER_BASE_URL_NOTICE'  => "Ohne abschlie&szlig;endem &#47.",
        'INSTALLER_SMTP_HOST_NOTICE' => "Zum Beispiel <strong>mail.ihre-domain.example</strong>",
 
        // AJAX title
        'INSTALLER_SMTP_HOST_NOTICE' => "Zum Beispiel <strong>mail.ihre-domain.example</strong>",
 
        // AJAX title
-       'INSTALLER_AJAX_ERROR_TITLE' => "AJAX-Abfrage im Installer fehlgeschlagen",
+       'INSTALLER_AJAX_ERROR_TITLE'   => "AJAX-Abfrage im Installer fehlgeschlagen",
        'INSTALLER_AJAX_WARNING_TITLE' => "Warnung: Es sind ungespeicherte &Auml;nderungen vorhanden",
        'INSTALLER_AJAX_WARNING_TITLE' => "Warnung: Es sind ungespeicherte &Auml;nderungen vorhanden",
-       'INSTALLER_AJAX_TEST_TITLE' => "AJAX-Testergebnis positiv",
+       'INSTALLER_AJAX_TEST_TITLE'    => "AJAX-Testergebnis positiv",
+       'INSTALLER_AJAX_FINISH_TITLE'  => "Installation l&auml;uft . . .",
 
        // Installer switches
        'INSTALLER_SWITCH_PLAIN' => "Kompatiblit&auml;tsmodus",
        'INSTALLER_SWITCH_START' => "Zur Startseite zur&uuml;ckkehren ...",
 
        // Installer switches
        'INSTALLER_SWITCH_PLAIN' => "Kompatiblit&auml;tsmodus",
        'INSTALLER_SWITCH_START' => "Zur Startseite zur&uuml;ckkehren ...",
-       'INSTALLER_SWITCH_AJAX' => "Zur &quot;interaktiven&quot; AJAX-Version ...",
+       'INSTALLER_SWITCH_AJAX'  => "Zur &quot;interaktiven&quot; AJAX-Version ...",
 
        // SMTP input
        // @TODO Move this to e.g. ext-smtp
 
        // SMTP input
        // @TODO Move this to e.g. ext-smtp
@@ -201,6 +204,13 @@ addMessages(array(
        // Post-Check - General failure messages
        'INSTALLER_POST_CHECK_DATABASE_CONFIG_FAILED' => "Beim testweisen Aufbauen einer Datenbankverbindung ist ein Fehler entstanden: %s",
 
        // Post-Check - General failure messages
        'INSTALLER_POST_CHECK_DATABASE_CONFIG_FAILED' => "Beim testweisen Aufbauen einer Datenbankverbindung ist ein Fehler entstanden: %s",
 
+       // Post-Check - Base configuration
+       'INSTALLER_POST_BASE_PATH_INVALID' => "Der Basis-Pfad f&uuml;r Include-Dateien ist ung&uuml;ltig.",
+       'INSTALLER_POST_BASE_URL_INVALID' => "Die Basis-URL ist ung&uuml;ltig.",
+       'INSTALLER_POST_MAIN_TITLE_INVALID' => "Der {?mt_word?}-Titel ist zu kurz.",
+       'INSTALLER_POST_SLOGAN_INVALID' => "Der Werbespruch ist zu kurz.",
+       'INSTALLER_POST_EMAIL_INVALID' => "Die eMail-Adresse ist ung&uuml;ltig.",
+
        // Post-Check - Database connection
        'INSTALLER_POST_DATABASE_PASSWORD1_EMPTY' => "Das Passwort zur Datenbank ist leer, jedoch ist die Passwortwiederholung gesetzt.",
        'INSTALLER_POST_DATABASE_PASSWORD2_EMPTY' => "Das Passwort zur Datenbank ist gesetzt, jedoch ist die Passwortwiederholung leer.",
        // Post-Check - Database connection
        'INSTALLER_POST_DATABASE_PASSWORD1_EMPTY' => "Das Passwort zur Datenbank ist leer, jedoch ist die Passwortwiederholung gesetzt.",
        'INSTALLER_POST_DATABASE_PASSWORD2_EMPTY' => "Das Passwort zur Datenbank ist gesetzt, jedoch ist die Passwortwiederholung leer.",
@@ -215,6 +225,33 @@ addMessages(array(
        // Final check on 'overview' page
        'INSTALLER_OVERVIEW_FINAL_CHECK_FAILED' => "Leider kann die Installation nicht abgeschlossen werden, da nicht alle Angaben vollst&auml;ndig und korrekt sind.",
        'INSTALLER_OVERVIEW_FINAL_CHECK_DONE' => "Die Installation kann nun abgeschlossen werden.",
        // Final check on 'overview' page
        'INSTALLER_OVERVIEW_FINAL_CHECK_FAILED' => "Leider kann die Installation nicht abgeschlossen werden, da nicht alle Angaben vollst&auml;ndig und korrekt sind.",
        'INSTALLER_OVERVIEW_FINAL_CHECK_DONE' => "Die Installation kann nun abgeschlossen werden.",
+       'INSTALLER_READY_TO_FINISH' => "Es wurden alle n&ouml;tigen Daten zur Installation gesammelt. Sie k&ouml;nnen die Installation beginnen, indem Sie auf <strong>{--PAGE_FINISH_SUBMIT--}</strong> klicken. Es wird dann der Verlauf der Installation Ihnen angezeigt. Danach sollten Sie als erstes den ersten Administrator-Account anlegen, damit niemand Ihren {?mt_word?} &uuml;bernehmen kann.",
+
+       // "Failed overview"
+       'INSTALLER_OVERVIEW_FAILED_TITLE' => "Es sind nicht alle ben&ouml;tigten Daten zur Installation vorhanden",
+       'INSTALLER_FAILED_FIELDS' => "Die folgenden Angaben entsprechen nicht den erwarteten Werten:",
+
+       // Failed checks on POST fields
+       'INSTALLER_FIELD_FAILED_BASE_PATH' => "Der Basis-Pfad stimmt nicht (nicht lesbar, existiert nicht, verweist auf falsche Installation usw.).",
+       'INSTALLER_FIELD_FAILED_BASE_URL' => "Die Basis-URL ist nicht richtig eingegeben worden.",
+       'INSTALLER_FIELD_FAILED_MAIN_TITLE' => "Der Titel des {?mt_word3?} ist zu kurz (mindestens 4 Zeichen).",
+       'INSTALLER_FIELD_FAILED_SLOGAN' => "Der Werbespruch ist zu kurz (mindestens 4 Zeichen) oder wurde nicht ge&auml;ndert.",
+       'INSTALLER_FIELD_FAILED_WEBMASTER' => "Die EMail-Adresse der Webmaster-Adresse stimmt nicht.",
+       'INSTALLER_FIELD_FAILED_MYSQL_HOST' => "Der Hostname f&uuml;r die Datenbankanbindung stimmt nicht.",
+       'INSTALLER_FIELD_FAILED_MYSQL_DBASE' => "Der Datenbankname stimmt nicht.",
+       'INSTALLER_FIELD_FAILED_MYSQL_PREFIX' => "Der Pr&auml;fix ist leer.",
+       'INSTALLER_FIELD_FAILED_MYSQL_ENGINE' => "Die Ausgew&auml;hlte Engine wurde nicht erkannt.",
+       'INSTALLER_FIELD_FAILED_MYSQL_LOGIN' => "Das Datenbanklogin stimmt nicht (leer).",
+       'INSTALLER_FIELD_FAILED_MYSQL_PASSWORD1' => "Das erste Datenbankpasswort stimmt nicht.",
+       'INSTALLER_FIELD_FAILED_MYSQL_PASSWORD2' => "Das zweite Datenbankpasswort stimmt nicht.",
+       'INSTALLER_FIELD_FAILED_SMTP_HOST' => "Der SMTP-Hostname stimmt nicht.",
+       'INSTALLER_FIELD_FAILED_SMTP_USER' => "Das SMTP-Login stimmt nicht.",
+       'INSTALLER_FIELD_FAILED_SMTP_PASSWORD1' => "Das erste SMTP-Password stimmt nicht.",
+       'INSTALLER_FIELD_FAILED_SMTP_PASSWORD2' => "Das zweite SMTP-Password stimmt nicht.",
+       'INSTALLER_FIELD_FAILED_OUTPUT_MODE' => "Der Ausgabemodus wird nicht unterst&uuml;tzt.",
+       'INSTALLER_FIELD_FAILED_WARN_NO_PASS' => "Es wurde weder <strong>Y</strong> noch <strong>N</strong> f&uuml;r &#39;WARN_NO_PASS&#39; &uuml;bergeben.",
+       'INSTALLER_FIELD_FAILED_WRITE_FOOTER' => "Es wurde weder <strong>Y</strong> noch <strong>N</strong> f&uuml;r &#39;WRITE_FOOTER&#39; &uuml;bergeben.",
+       'INSTALLER_FIELD_FAILED_ENABLE_BACKLINK' => "Es wurde weder <strong>Y</strong> noch <strong>N</strong> f&uuml;r &#39;ENABLE_BACKLINK&#39; &uuml;bergeben.",
 ));
 
 // [EOF]
 ));
 
 // [EOF]
index c1840fa1bcb278ccfeabe081afc20c7b6600bdbe..4f57bf88ca1a5a919899947f4d3fcbaf78c1f11e 100644 (file)
@@ -260,5 +260,23 @@ function initSqlLink () {
        }
 }
 
        }
 }
 
+// Imports given SQL dump from given (relative) path
+function importSqlDump ($path, $dumpName) {
+       // Construct FQFN
+       $FQFN = getPath() . $path . '/' . $dumpName . '.sql';
+
+       // Is the file readable?
+       if (!isFileReadable($FQFN)) {
+               // Not found, which is bad
+               reportBug(__FILE__, __LINE__, sprintf("SQL dump %s/%s.sql is not readable.", $path, $dumpName));
+       } // END - if
+
+       // Then read it
+       $fileContent = readSqlDump($FQFN);
+
+       // Merge it with existing SQL statements
+       mergeSqls(explode(";\n", $fileContent), 'install');
+}
+
 // [EOF]
 ?>
 // [EOF]
 ?>
index 708b2c4b1af27fc5dffc48feb2f1e92dcfe3733a..e312c565a0b4e2bb68128b12c89709e88792274d 100644 (file)
@@ -343,9 +343,9 @@ function isInstalled () {
                        // First is config
                        (
                                (
                        // First is config
                        (
                                (
-                                       isConfigEntrySet('MXCHANGE_INSTALLED')
+                                       isConfigEntrySet('MAILER_INSTALLED')
                                ) && (
                                ) && (
-                                       getConfig('MXCHANGE_INSTALLED') == 'Y'
+                                       getConfig('MAILER_INSTALLED') == 'Y'
                                )
                        )
                ) || (
                                )
                        )
                ) || (
index bc21661064bd09dee2931f13fce8074b43b35752..5430232af831b8d403442c1fd8ea2a533ade8dc6 100644 (file)
@@ -28,6 +28,7 @@
 
 // Init variables
 var currentTabId       = null;
 
 // Init variables
 var currentTabId       = null;
+var processDisplayed   = false;
 var errorDisplayed     = false;
 var warningDisplayed   = false;
 var defaultTabId       = null;
 var errorDisplayed     = false;
 var warningDisplayed   = false;
 var defaultTabId       = null;
@@ -51,6 +52,12 @@ function setCurrentTabId (tabId) {
 
 // Marks a tab navigation entry
 function markTabNavigation (prefix, tab) {
 
 // Marks a tab navigation entry
 function markTabNavigation (prefix, tab) {
+       // Is process working?
+       if (processDisplayed == true) {
+               // Then exit silently
+               return;
+       } // END - if
+
        // Get all li-tags
        var li = document.getElementsByTagName('li');
 
        // Get all li-tags
        var li = document.getElementsByTagName('li');
 
@@ -101,7 +108,12 @@ function disableElement (element) {
 // Enables a given footer navigation element
 function enableFooterNavigationPage (element) {
        // Remove the 'disabled' class and attribute
 // Enables a given footer navigation element
 function enableFooterNavigationPage (element) {
        // Remove the 'disabled' class and attribute
-       enableElement('input#' + element + '_page');
+       if (element == 'finish') {
+               enableElement('input#finish');
+       } else {
+               enableElement('input#' + element + '_page');
+               disableElement('input#finish');
+       }
 }
 
 // Resets footer navigation by adding CSS class 'disabled'
 }
 
 // Resets footer navigation by adding CSS class 'disabled'
@@ -189,10 +201,10 @@ function sendAjaxRequest (level, doValue, extra, isJson) {
                        // Is ajax_content set?
                        if (ajax_content.reply_content == undefined) {
                                // This shall not happen
                        // Is ajax_content set?
                        if (ajax_content.reply_content == undefined) {
                                // This shall not happen
-                               throw new 'ajax_content.reply_content not returned from ajax.php, please fix your scripts.';
+                               throw new 'ajax_content.reply_content not returned from ajax.php, please fix your scripts. (1)';
                        } else if (ajax_content.reply_content == null) {
                                // This shall not happen, too
                        } else if (ajax_content.reply_content == null) {
                                // This shall not happen, too
-                               throw new 'ajax_content.reply_content=null from ajax.php, please fix your scripts.';
+                               throw new 'ajax_content.reply_content=null from ajax.php, please fix your scripts. (2)';
                        }
 
                        // Set AJAX reply
                        }
 
                        // Set AJAX reply
@@ -206,11 +218,27 @@ function sendAjaxRequest (level, doValue, extra, isJson) {
                error: function (ajax_content) {
                        // Is ajax_content set?
                        if (ajax_content.reply_content == undefined) {
                error: function (ajax_content) {
                        // Is ajax_content set?
                        if (ajax_content.reply_content == undefined) {
-                               // This shall not happen
-                               throw new 'ajax_content.reply_content not returned from ajax.php, please fix your scripts.';
+                               // Is 'responseText' there?
+                               if (ajax_content.responseText != undefined) {
+                                       // Then parse it
+                                       var obj = jQuery.parseJSON(ajax_content.responseText.replace('%20', ' '));
+
+                                       // Is 'reply_content' set?
+                                       if (obj.reply_content == undefined) {
+                                               // This shall not happen
+                                               throw new 'obj.reply_content not returned from ajax.php, please fix your scripts. (3)';
+                                       } // END - if
+
+                                       // Set it
+                                       setAjaxReply(obj.reply_content, false);
+                                       return false;
+                               } else {
+                                       // This shall not happen
+                                       throw new 'ajax_content.reply_content not returned from ajax.php, please fix your scripts. (4)';
+                               }
                        } else if (ajax_content.reply_content == null) {
                                // This shall not happen, too
                        } else if (ajax_content.reply_content == null) {
                                // This shall not happen, too
-                               throw new 'ajax_content.reply_content=null from ajax.php, please fix your scripts.';
+                               throw new 'ajax_content.reply_content=null from ajax.php, please fix your scripts. (5)';
                        }
 
                        // Set AJAX reply
                        }
 
                        // Set AJAX reply
@@ -224,6 +252,12 @@ function sendAjaxRequest (level, doValue, extra, isJson) {
 
 // Enables footer navigation buttons
 function enableFooterNavigation (prefix, tabId) {
 
 // Enables footer navigation buttons
 function enableFooterNavigation (prefix, tabId) {
+       // Is process working?
+       if (processDisplayed == true) {
+               // Then exit silently
+               return;
+       } // END - if
+
        // Reset both footer navigation first
        resetFooterNavigation();
 
        // Reset both footer navigation first
        resetFooterNavigation();
 
@@ -242,6 +276,12 @@ function enableFooterNavigation (prefix, tabId) {
 
 // Requests an AJAX content
 function requestAjaxContent (prefix, htmlId, tabId, footerNavigation) {
 
 // Requests an AJAX content
 function requestAjaxContent (prefix, htmlId, tabId, footerNavigation) {
+       // Is process working?
+       if (processDisplayed == true) {
+               // Then exit silently
+               return;
+       } // END - if
+
        // Check if this request is disabled
        if ($('#' + prefix + '_' + tabId).hasClass('tab_disabled')) {
                // Clicked on a disabled tabId so blur it
        // Check if this request is disabled
        if ($('#' + prefix + '_' + tabId).hasClass('tab_disabled')) {
                // Clicked on a disabled tabId so blur it
@@ -386,6 +426,38 @@ function displayErrorWindow (prefix, ajax_content) {
        });
 }
 
        });
 }
 
+// Displays the process window for given prefix and content
+function displayProcessWindow (prefix, ajax_content) {
+       // Fade out warning window, if open
+       //* DEBUG: */ alert('displayProcessWindow(): prefix=' + prefix + ' - calling closeWarningWindow()');
+       closeWarningWindow(prefix);
+
+       // Fade it out for eye-candy
+       closeErrorWindow(prefix);
+
+       // Fade it out for eye-candy
+       closeProcessWindow(prefix);
+
+       // Abort here if processDisplayed is still true
+       if (processDisplayed == true) {
+               // Make sure this doesn't happen
+               return;
+       } // END - if
+
+       // Copy the response text to the process variable
+       if (ajax_content.reply_content != undefined) {
+               $('#' + prefix + '_process_content').html(ajax_content.reply_content);
+       } else {
+               $('#' + prefix + '_process_content').html(ajax_content);
+       }
+
+       // Fade the process in
+       $('#' + prefix + '_process').fadeIn('slow', function() {
+               // Mark process as displayed
+               processDisplayed = true;
+       });
+}
+
 // Waits until the window has been closed
 function closeErrorLocked () {
        // Has all been loaded?
 // Waits until the window has been closed
 function closeErrorLocked () {
        // Has all been loaded?
@@ -398,6 +470,18 @@ function closeErrorLocked () {
        }
 }
 
        }
 }
 
+// Waits until the window has been closed
+function closeProcessLocked () {
+       // Has all been loaded?
+       if (processDisplayed == false) {
+               // Then release ready()
+               $.holdReady(false);
+       } else {
+               // Recursive call again
+               window.setTimeout('closeProcessLocked()', 10);
+       }
+}
+
 // Closes an error window
 function closeErrorWindow (prefix, waitClose, resetCurrentTabId) {
        // Is the error displayed?
 // Closes an error window
 function closeErrorWindow (prefix, waitClose, resetCurrentTabId) {
        // Is the error displayed?
@@ -427,6 +511,35 @@ function closeErrorWindow (prefix, waitClose, resetCurrentTabId) {
        } // END - if
 }
 
        } // END - if
 }
 
+// Closes an process window
+function closeProcessWindow (prefix, waitClose, resetCurrentTabId) {
+       // Is the process displayed?
+       if (processDisplayed == true) {
+               // Shall we wait ("sync") until the animation has completed?
+               if (waitClose == true) {
+                       // Hold the ready status
+                       $.holdReady(true);
+               } // END - if
+
+               // Yes, then fade it out
+               $('#' + prefix + '_process').fadeOut('fast', function() {
+                       // Set current tab id to default
+                       if (resetCurrentTabId == true) {
+                               setCurrentTabId(defaultTabId);
+                       } // END - if
+
+                       // Mark it as closed
+                       processDisplayed = false;
+               });
+
+               // Shall this animation be "synchronized"?
+               if (waitClose == true) {
+                       // Wait for the window has been closed
+                       closeProcessLocked();
+               } // END - if
+       } // END - if
+}
+
 // Waits until the window has been closed
 function closeWarningLocked () {
        // Has all been loaded?
 // Waits until the window has been closed
 function closeWarningLocked () {
        // Has all been loaded?
@@ -485,6 +598,12 @@ function doFooterPage (prefix, htmlId, button) {
                return;
        } // END - if
 
                return;
        } // END - if
 
+       // Is process working?
+       if (processDisplayed == true) {
+               // Then exit silently
+               return;
+       } // END - if
+
        // Is there a 'next' entry?
        //* DEBUG: */ alert('doFooterPage(): button=' + button + ',currentTabId=' + currentTabId + ',nextPage[currentTabId]=' + nextPage[currentTabId]);
        if ((button == 'next') && (nextPage[currentTabId] != null)) {
        // Is there a 'next' entry?
        //* DEBUG: */ alert('doFooterPage(): button=' + button + ',currentTabId=' + currentTabId + ',nextPage[currentTabId]=' + nextPage[currentTabId]);
        if ((button == 'next') && (nextPage[currentTabId] != null)) {
@@ -589,6 +708,12 @@ function processAjaxResponseContent (prefix, ajax_content) {
 
 // Saves changes by sending the data to the AJAX backend script
 function saveChanges (prefix) {
 
 // Saves changes by sending the data to the AJAX backend script
 function saveChanges (prefix) {
+       // Is process working?
+       if (processDisplayed == true) {
+               // Then exit silently
+               return;
+       } // END - if
+
        // Mark all elements as unchanged
        markAllElementsAsUnchanged();
 
        // Mark all elements as unchanged
        markAllElementsAsUnchanged();
 
@@ -681,6 +806,12 @@ function doSaveChangesPage (prefix, htmlId, page) {
 
 // Saves changed settings and continues with given tab
 function doSaveChangesContinue (prefix, htmlId, tab) {
 
 // Saves changed settings and continues with given tab
 function doSaveChangesContinue (prefix, htmlId, tab) {
+       // Is process working?
+       if (processDisplayed == true) {
+               // Then exit silently
+               return;
+       } // END - if
+
        // Save the changes
        saveChanges(prefix);
 
        // Save the changes
        saveChanges(prefix);
 
index 7a08d54063b0470564c9d5daa51dbc5160325a6a..87fcbda4b0b577d8f9d87ba2d90cc0e8296ad492 100644 (file)
  * MA  02110-1301  USA
  */
 
  * MA  02110-1301  USA
  */
 
+// Installation steps array
+var installSteps = new Array();
+
+// Init all installation steps
+installSteps[0] = '';
+installSteps[1] = '';
+installSteps[2] = '';
+installSteps[3] = '';
+
 // Switches instaler by redirecting
 function switchInstaller (installer) {
        // Switch installer
        document.location.href='install.php?installer=' + installer;
 }
 // Switches instaler by redirecting
 function switchInstaller (installer) {
        // Switch installer
        document.location.href='install.php?installer=' + installer;
 }
+
+// User has clicked on 'finish'
+function doFinishInstallation () {
+       // First disable all buttons button
+       disableElement('input#next_page');
+       disableElement('input#previous_page');
+       disableElement('input#finish');
+
+       // Display process window
+       displayProcessWindow('install', '');
+}
index 9b16d2f42b7f042ae7ef6150882310d3f5c6bb7b..ede91534c35d4802a9f2973441470bff4e2d164f 100644 (file)
@@ -44,7 +44,7 @@
 // These scripts shall be loaded
 var scripts = new Array();
 scripts[0] = '{%url,js=js/ajax-common.js%}';
 // These scripts shall be loaded
 var scripts = new Array();
 scripts[0] = '{%url,js=js/ajax-common.js%}';
-scripts[1] = '{%url,js=js/jquery-ui.custom.js%}';
+scripts[1] = '{%jquery,js=ui%}';
 scripts[2] = '{%url,js=js/admin-data.js%}';
 scripts[3] = '{%url,js=js/admin-common.js%}';
 
 scripts[2] = '{%url,js=js/admin-data.js%}';
 scripts[3] = '{%url,js=js/admin-common.js%}';
 
index 6271a22bc1efb9bbc38f55b5c624a2644a4b1689..f080c43cf9c8dd7ee2738268748f4ec2246307f8 100644 (file)
        </div>
 </div>
 
        </div>
 </div>
 
+<div id="install_process" class="ajax_process">
+       <div class="ajax_process_title">
+               <strong>{--INSTALLER_AJAX_FINISH_TITLE--}</strong>
+       </div>
+       <div class="ajax_process_close">
+               <strong id="install_process_close" style="padding-left:1.5px;cursor:wait">X</strong>
+       </div>
+       <div style="clear:both"></div>
+       <div class="ajax_process_content" id="install_process_content">
+               <!-- Content will be inserted here by AJAX //-->
+       </div>
+</div>
+
 <div style="clear:both"></div>
 
 <div class="install_content_container">
 <div style="clear:both"></div>
 
 <div class="install_content_container">
@@ -54,7 +67,7 @@
 // These scripts shall be loaded
 var scripts = new Array();
 scripts[0] = '{%url,js=js/ajax-common.js%}';
 // These scripts shall be loaded
 var scripts = new Array();
 scripts[0] = '{%url,js=js/ajax-common.js%}';
-scripts[1] = '{%url,js=js/jquery-ui.custom.js%}';
+scripts[1] = '{%jquery,js=ui%}';
 scripts[2] = '{%url,js=js/install-data.js%}';
 scripts[3] = '{%url,js=js/install-common.js%}';
 
 scripts[2] = '{%url,js=js/install-data.js%}';
 scripts[3] = '{%url,js=js/install-common.js%}';
 
diff --git a/templates/de/html/install/install_overview_failed.tpl b/templates/de/html/install/install_overview_failed.tpl
new file mode 100644 (file)
index 0000000..e4ad789
--- /dev/null
@@ -0,0 +1,14 @@
+<div align="center">
+<div class="install_title">
+       {--INSTALLER_OVERVIEW_FAILED_TITLE--}
+</div>
+
+<div class="para">
+       $content[message]
+</div>
+
+<div class="para">
+       {--INSTALLER_FAILED_FIELDS--}
+       $content[failed_fields]
+</div>
+</div>
index 22c966f4a5edda4695f64a8e679472c46090026d..6ec8597fcb88adb7b990b698028146dcec09582d 100644 (file)
@@ -3,7 +3,7 @@
 <table border="0" cellspacing="0" cellpadding="0" class="install_content">
        <tr>
                <td colspan="2" align="center" class="install_title">
 <table border="0" cellspacing="0" cellpadding="0" class="install_content">
        <tr>
                <td colspan="2" align="center" class="install_title">
-                       {--INSTALLER_BASE_DATA_TITLE--}
+                       {--INSTALLER_PAGE_BASE_DATA_TITLE--}
                </td>
        </tr>
        <tr>
                </td>
        </tr>
        <tr>
index 9b1d8b5f0ede4245abb95d3a4946198d86dd320d..48482634b58f7edd72819956e2489db897b326fd 100644 (file)
@@ -3,7 +3,7 @@
 <table border="0" cellspacing="0" cellpadding="0" class="install_content">
        <tr>
                <td colspan="2" align="center" class="install_title">
 <table border="0" cellspacing="0" cellpadding="0" class="install_content">
        <tr>
                <td colspan="2" align="center" class="install_title">
-                       {--INSTALLER_DATABASE_CONFIG_TITLE--}
+                       {--INSTALLER_PAGE_DATABASE_CONFIG_TITLE--}
                </td>
        </tr>
        <tr>
                </td>
        </tr>
        <tr>
index fdedb163287d108b765ca84f89875c2dd2acf1b9..1d6e898bd75c6d22b5e0f19bd6195b1e7950e7fa 100644 (file)
@@ -3,7 +3,7 @@
 <table border="0" cellspacing="0" cellpadding="0" class="install_content">
        <tr>
                <td colspan="2" align="center" class="install_title">
 <table border="0" cellspacing="0" cellpadding="0" class="install_content">
        <tr>
                <td colspan="2" align="center" class="install_title">
-                       {--INSTALLER_SMTP_CONFIG_TITLE--}
+                       {--INSTALLER_PAGE_SMTP_CONFIG_TITLE--}
                </td>
        </tr>
        <tr>
                </td>
        </tr>
        <tr>
index 6934267b52e7bd250ec92f6c5125564ac8689168..83ecc7830affe419fa80574ac901d042a4a8def7 100644 (file)
@@ -3,7 +3,7 @@
 <table border="0" cellspacing="0" cellpadding="0" class="install_content">
 <tr>
        <td colspan="2" align="center" class="install_title">
 <table border="0" cellspacing="0" cellpadding="0" class="install_content">
 <tr>
        <td colspan="2" align="center" class="install_title">
-               {--INSTALLER_OTHER_CONFIG_TITLE--}
+               {--INSTALLER_PAGE_OTHER_CONFIG_TITLE--}
        </td>
 </tr>
 <tr>
        </td>
 </tr>
 <tr>
index acce43db69c2d4257bc1ea7bd2ffc7f572ec9646..81d4e551914db0c911a7f5cacd2ad541f55c1f0d 100644 (file)
@@ -1,7 +1,7 @@
 <div align="center">
 
 <div class="install_title">
 <div align="center">
 
 <div class="install_title">
-       {--INSTALLER_BASE_DATA_TITLE--}
+       {--INSTALLER_PAGE_BASE_DATA_TITLE--}
 </div>
 
 <div class="para">
 </div>
 
 <div class="para">
index 337c06af2ac94dd1cb1abc7459bfbc242d3b4d1d..4645204edfd711ace4a45bc29a255021bb0f163a 100644 (file)
@@ -1,6 +1,6 @@
 <div align="center">
 <div class="install_title">
 <div align="center">
 <div class="install_title">
-       {--INSTALLER_DATABASE_CONFIG_TITLE--}
+       {--INSTALLER_PAGE_DATABASE_CONFIG_TITLE--}
 </div>
 
 <div class="para">
 </div>
 
 <div class="para">
index 4ea300966fb4dc514d7317b60821f50e6ff50687..04e40d5df2379e3d8fa9de6aabd0faa7336cea05 100644 (file)
@@ -4,7 +4,6 @@
 </div>
 
 <div class="para">
 </div>
 
 <div class="para">
-       Einen Augenblick, die Installation wird vorbereitet ...
+       {--INSTALLER_INIT_PLEASE_WAIT--}
 </div>
 </div>
-
 </div>
 </div>
index 9e729065e79a5b1a68921b911719c311bd5d224b..93502e365ffc499df5c42e6258d946e85cd3257b 100644 (file)
@@ -1,6 +1,6 @@
 <div align="center">
 <div class="install_title">
 <div align="center">
 <div class="install_title">
-       {--INSTALLER_OTHER_CONFIG_TITLE--}
+       {--INSTALLER_PAGE_OTHER_CONFIG_TITLE--}
 </div>
 
 <div class="para">
 </div>
 
 <div class="para">
diff --git a/templates/de/html/install/install_page_overview.tpl b/templates/de/html/install/install_page_overview.tpl
new file mode 100644 (file)
index 0000000..626e26e
--- /dev/null
@@ -0,0 +1,9 @@
+<div align="center">
+<div class="install_title">
+       {--INSTALLER_PAGE_OVERVIEW_TITLE--}
+</div>
+
+<div class="para">
+       {--INSTALLER_READY_TO_FINISH--}
+</div>
+</div>
index 7dfba3dd8db6c59dd81862f87948bf927fd71c5e..b9204b87ab02475b1281d18fa6e86782fc6a0227 100644 (file)
@@ -1,6 +1,6 @@
 <div align="center">
 <div class="install_title">
 <div align="center">
 <div class="install_title">
-       {--INSTALLER_SMTP_CONFIG_TITLE--}
+       {--INSTALLER_PAGE_SMTP_CONFIG_TITLE--}
 </div>
 
 <div class="para">
 </div>
 
 <div class="para">
index 60999c8822b32f03bc443ea2a54f797d2bd39ce3..0561ff86639600ddc9a16db20c2f543c4bbb57fe 100644 (file)
@@ -84,6 +84,9 @@ scripts[2] = '{%jquery,js=ui%}';
 if (loadScripts(scripts) == true) {
        // Wait for loadScripts() finishing loading all scripts
        $().ready(function () {
 if (loadScripts(scripts) == true) {
        // Wait for loadScripts() finishing loading all scripts
        $().ready(function () {
+               // Process window
+               $("#install_process").draggable({opacity: 0.85});
+
                // Warning window
                $("#install_warning").draggable({opacity: 0.85});
 
                // Warning window
                $("#install_warning").draggable({opacity: 0.85});
 
index 611dfffb3331170a8d25e5dbef1430a9016cebad..067fca16baf7621165f3c8a06329b581a4ea9a0d 100644 (file)
@@ -25,7 +25,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
  * MA  02110-1301  USA
  */
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
  * MA  02110-1301  USA
  */
-// Make both windows drag'n'drop-able
+
+// Initialize all navigations
 $().ready(function() {
        // Fade default content in
        window.setTimeout("requestAjaxContent('install', 'install_content', '$content[install_page]', true)", 250);
 $().ready(function() {
        // Fade default content in
        window.setTimeout("requestAjaxContent('install', 'install_content', '$content[install_page]', true)", 250);
@@ -68,6 +69,11 @@ $().ready(function() {
        //-----------------------------------------
        //           Footer navigation
        //-----------------------------------------
        //-----------------------------------------
        //           Footer navigation
        //-----------------------------------------
+       $('#finish').click(function () {
+               // 'finish' button has been clicked
+               doFinishInstallation();
+       });
+
        $('#next_page').click(function () {
                // 'next' button has been clicked
                doFooterPage('install', 'install_content', 'next');
        $('#next_page').click(function () {
                // 'next' button has been clicked
                doFooterPage('install', 'install_content', 'next');
@@ -94,6 +100,10 @@ $().ready(function() {
        //-----------------------------------------
        //              Drag'N'Drop
        //-----------------------------------------
        //-----------------------------------------
        //              Drag'N'Drop
        //-----------------------------------------
+       $('#install_process').draggable({
+               opacity: 0.85
+       });
+
        $('#install_warning').draggable({
                opacity: 0.85
        });
        $('#install_warning').draggable({
                opacity: 0.85
        });
index d3ef0d5f6f1349315d1874f9099f8114b9e3f59b..f58fc8e4b6aaa47f83bec8938bd164248f73f4a1 100644 (file)
@@ -17,7 +17,7 @@ ul#footernav li {
 ul#tabnav {
        list-style-type: none;
        margin: 0px;
 ul#tabnav {
        list-style-type: none;
        margin: 0px;
-       padding-left: 30px;
+       padding-left: 20px;
        padding-bottom: 24px;
        z-index: 0;
 }
        padding-bottom: 24px;
        z-index: 0;
 }
@@ -75,7 +75,8 @@ ul#tabnav li.tab_active {
        color: #e0e0e0;
 }
 
        color: #e0e0e0;
 }
 
-.ajax_error, .ajax_warning {
+.ajax_error, .ajax_warning, .ajax_process {
+       border: 1px solid #ffffff;
        z-index: 200;
        min-height: 10px;
        overflow: visible;
        z-index: 200;
        min-height: 10px;
        overflow: visible;
@@ -94,7 +95,11 @@ ul#tabnav li.tab_active {
        background-color: #999900;
 }
 
        background-color: #999900;
 }
 
-.ajax_error_title, .ajax_warning_title {
+.ajax_process {
+       background-color: #009900;
+}
+
+.ajax_error_title, .ajax_warning_title, .ajax_process_title {
        border: 1px solid #ffffff;
        padding: 3px;
        color: #ffffff;
        border: 1px solid #ffffff;
        padding: 3px;
        color: #ffffff;
@@ -110,7 +115,11 @@ ul#tabnav li.tab_active {
        background-color: #bbbb00;
 }
 
        background-color: #bbbb00;
 }
 
-.ajax_error_close, .ajax_warning_close {
+.ajax_process_title {
+       background-color: #0000dd;
+}
+
+.ajax_error_close, .ajax_warning_close, .ajax_process_close {
        border: 1px solid #ffffff;
        float: right;
        width: 10px;
        border: 1px solid #ffffff;
        float: right;
        width: 10px;
@@ -118,19 +127,26 @@ ul#tabnav li.tab_active {
        min-height: 10x;
        margin-left: 5px;
        padding: 3px;
        min-height: 10x;
        margin-left: 5px;
        padding: 3px;
-       color: #ffffff;
        text-align: center;
 }
 
 .ajax_error_close {
        text-align: center;
 }
 
 .ajax_error_close {
+       color: #ffffff;
        background-color: #bb0000;
 }
 
 .ajax_warning_close {
        background-color: #bb0000;
 }
 
 .ajax_warning_close {
+       color: #ffffff;
        background-color: #bbbb00;
 }
 
        background-color: #bbbb00;
 }
 
-.ajax_error_content, .ajax_warning_content {
+.ajax_process_close {
+       color: #c0c0c0;
+       background-color: #0000dd;
+       cursor: wait;
+}
+
+.ajax_error_content, .ajax_warning_content, .ajax_process_content {
        width: 470px;
        border: 1px solid #ffffff;
        margin-top: 5px;
        width: 470px;
        border: 1px solid #ffffff;
        margin-top: 5px;
index 59ed0a535de7380944cb3e530c115d9764739c2e..af9d78728d4106737c11ec71489dd6fe775851ee 100644 (file)
@@ -17,7 +17,7 @@ ul#footernav li {
 ul#tabnav {
        list-style-type: none;
        margin: 0px;
 ul#tabnav {
        list-style-type: none;
        margin: 0px;
-       padding-left: 30px;
+       padding-left: 20px;
        padding-bottom: 24px;
        z-index: 0;
 }
        padding-bottom: 24px;
        z-index: 0;
 }
@@ -75,7 +75,8 @@ ul#tabnav li.tab_active {
        color: #e0e0e0;
 }
 
        color: #e0e0e0;
 }
 
-.ajax_error, .ajax_warning {
+.ajax_error, .ajax_warning, .ajax_process {
+       border: 1px solid #ffffff;
        z-index: 200;
        min-height: 10px;
        overflow: visible;
        z-index: 200;
        min-height: 10px;
        overflow: visible;
@@ -94,7 +95,11 @@ ul#tabnav li.tab_active {
        background-color: #999900;
 }
 
        background-color: #999900;
 }
 
-.ajax_error_title, .ajax_warning_title {
+.ajax_process {
+       background-color: #0000aa;
+}
+
+.ajax_error_title, .ajax_warning_title, .ajax_process_title {
        border: 1px solid #ffffff;
        padding: 3px;
        color: #ffffff;
        border: 1px solid #ffffff;
        padding: 3px;
        color: #ffffff;
@@ -110,7 +115,11 @@ ul#tabnav li.tab_active {
        background-color: #bbbb00;
 }
 
        background-color: #bbbb00;
 }
 
-.ajax_error_close, .ajax_warning_close {
+.ajax_process_title {
+       background-color: #0000dd;
+}
+
+.ajax_error_close, .ajax_warning_close, .ajax_process_close {
        border: 1px solid #ffffff;
        float: right;
        width: 10px;
        border: 1px solid #ffffff;
        float: right;
        width: 10px;
@@ -118,22 +127,29 @@ ul#tabnav li.tab_active {
        min-height: 10x;
        margin-left: 5px;
        padding: 3px;
        min-height: 10x;
        margin-left: 5px;
        padding: 3px;
-       color: #ffffff;
        text-align: center;
 }
 
 .ajax_error_close {
        text-align: center;
 }
 
 .ajax_error_close {
+       color: #ffffff;
        background-color: #bb0000;
 }
 
 .ajax_warning_close {
        background-color: #bb0000;
 }
 
 .ajax_warning_close {
+       color: #ffffff;
        background-color: #bbbb00;
 }
 
        background-color: #bbbb00;
 }
 
+.ajax_process_close {
+       color: #c0c0c0;
+       background-color: #0000dd;
+       cursor: wait;
+}
+
 .ajax_error_message {
 }
 
 .ajax_error_message {
 }
 
-.ajax_error_content, .ajax_warning_content {
+.ajax_error_content, .ajax_warning_content, .ajax_process_content {
        width: 470px;
        border: 1px solid #ffffff;
        margin-top: 5px;
        width: 470px;
        border: 1px solid #ffffff;
        margin-top: 5px;
index 867689682752616f9a499026a2298822ae692959..f95d638d89af892d799bc90334903fb03659edbf 100644 (file)
@@ -17,7 +17,7 @@ ul#footernav li {
 ul#tabnav {
        list-style-type: none;
        margin: 0px;
 ul#tabnav {
        list-style-type: none;
        margin: 0px;
-       padding-left: 30px;
+       padding-left: 20px;
        padding-bottom: 24px;
        z-index: 0;
 }
        padding-bottom: 24px;
        z-index: 0;
 }
@@ -74,7 +74,8 @@ ul#tabnav li.tab_active {
        color: #e0e0e0;
 }
 
        color: #e0e0e0;
 }
 
-.ajax_error, .ajax_warning {
+.ajax_error, .ajax_warning, .ajax_process {
+       border: 1px solid #ffffff;
        z-index: 200;
        min-height: 10px;
        overflow: visible;
        z-index: 200;
        min-height: 10px;
        overflow: visible;
@@ -93,7 +94,11 @@ ul#tabnav li.tab_active {
        background-color: #999900;
 }
 
        background-color: #999900;
 }
 
-.ajax_error_title, .ajax_warning_title {
+.ajax_process {
+       background-color: #009900;
+}
+
+.ajax_error_title, .ajax_warning_title, .ajax_process_title {
        border: 1px solid #ffffff;
        padding: 3px;
        color: #ffffff;
        border: 1px solid #ffffff;
        padding: 3px;
        color: #ffffff;
@@ -109,7 +114,11 @@ ul#tabnav li.tab_active {
        background-color: #bbbb00;
 }
 
        background-color: #bbbb00;
 }
 
-.ajax_error_close, .ajax_warning_close {
+.ajax_process_title {
+       background-color: #0000dd;
+}
+
+.ajax_error_close, .ajax_warning_close, .ajax_process_close {
        border: 1px solid #ffffff;
        float: right;
        width: 10px;
        border: 1px solid #ffffff;
        float: right;
        width: 10px;
@@ -122,17 +131,25 @@ ul#tabnav li.tab_active {
 }
 
 .ajax_error_close {
 }
 
 .ajax_error_close {
+       color: #ffffff;
        background-color: #bb0000;
 }
 
 .ajax_warning_close {
        background-color: #bb0000;
 }
 
 .ajax_warning_close {
+       color: #ffffff;
        background-color: #bbbb00;
 }
 
        background-color: #bbbb00;
 }
 
+.ajax_process_close {
+       color: #c0c0c0;
+       background-color: #0000dd;
+       cursor: wait;
+}
+
 .ajax_error_message {
 }
 
 .ajax_error_message {
 }
 
-.ajax_error_content, .ajax_warning_content {
+.ajax_error_content, .ajax_warning_content, .ajax_process_content {
        width: 470px;
        border: 1px solid #ffffff;
        margin-top: 5px;
        width: 470px;
        border: 1px solid #ffffff;
        margin-top: 5px;
index 59ed0a535de7380944cb3e530c115d9764739c2e..f0a3196cabfb4ec11f8f3e29fd67a0c18ad1cf00 100644 (file)
@@ -17,7 +17,7 @@ ul#footernav li {
 ul#tabnav {
        list-style-type: none;
        margin: 0px;
 ul#tabnav {
        list-style-type: none;
        margin: 0px;
-       padding-left: 30px;
+       padding-left: 20px;
        padding-bottom: 24px;
        z-index: 0;
 }
        padding-bottom: 24px;
        z-index: 0;
 }
@@ -75,7 +75,8 @@ ul#tabnav li.tab_active {
        color: #e0e0e0;
 }
 
        color: #e0e0e0;
 }
 
-.ajax_error, .ajax_warning {
+.ajax_error, .ajax_warning, .ajax_process {
+       border: 1px solid #ffffff;
        z-index: 200;
        min-height: 10px;
        overflow: visible;
        z-index: 200;
        min-height: 10px;
        overflow: visible;
@@ -94,7 +95,11 @@ ul#tabnav li.tab_active {
        background-color: #999900;
 }
 
        background-color: #999900;
 }
 
-.ajax_error_title, .ajax_warning_title {
+.ajax_process {
+       background-color: #0000aa;
+}
+
+.ajax_error_title, .ajax_warning_title, .ajax_process_title {
        border: 1px solid #ffffff;
        padding: 3px;
        color: #ffffff;
        border: 1px solid #ffffff;
        padding: 3px;
        color: #ffffff;
@@ -110,7 +115,11 @@ ul#tabnav li.tab_active {
        background-color: #bbbb00;
 }
 
        background-color: #bbbb00;
 }
 
-.ajax_error_close, .ajax_warning_close {
+.ajax_process_title {
+       background-color: #0000dd;
+}
+
+.ajax_error_close, .ajax_warning_close, .ajax_process_close {
        border: 1px solid #ffffff;
        float: right;
        width: 10px;
        border: 1px solid #ffffff;
        float: right;
        width: 10px;
@@ -123,17 +132,25 @@ ul#tabnav li.tab_active {
 }
 
 .ajax_error_close {
 }
 
 .ajax_error_close {
+       color: #ffffff;
        background-color: #bb0000;
 }
 
 .ajax_warning_close {
        background-color: #bb0000;
 }
 
 .ajax_warning_close {
+       color: #ffffff;
        background-color: #bbbb00;
 }
 
        background-color: #bbbb00;
 }
 
+.ajax_process_close {
+       color: #c0c0c0;
+       background-color: #0000dd;
+       cursor: wait;
+}
+
 .ajax_error_message {
 }
 
 .ajax_error_message {
 }
 
-.ajax_error_content, .ajax_warning_content {
+.ajax_error_content, .ajax_warning_content, .ajax_process_content {
        width: 470px;
        border: 1px solid #ffffff;
        margin-top: 5px;
        width: 470px;
        border: 1px solid #ffffff;
        margin-top: 5px;