Changeset 71


Ignore:
Timestamp:
11/03/07 12:34:10 (6 years ago)
Author:
Lantash
Message:

Maintainers can specify general settings such as page title etc. during installation. [Closes #18]

Installation input fields are evaluated using JavaScript?.

Location:
trunk/installation
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/installation/index.php

    r24 r71  
    33// Der Zugriff auf das Klassenbuch darf über diese Datei erfolgen 
    44define("_KBSECURE", true); 
     5 
     6// Fehlermeldungen ganz abschalten 
     7error_reporting(0); 
    58 
    69require_once("wizard.php"); 
     
    4649 
    4750        function setPage() { 
    48                 $this->page = "<p>Gib den Hostnamen des Servers an, auf dem die Klassenbuch-Datenbank installiert werden soll. " . 
     51                $this->page = "<p>Alle Aufgaben, Kommentare usw. im Klassenbuch werden in einer MySQL-Datenbank " . 
     52                        "abgelegt. Deshalb werden die Zugangsdaten zur Datenbank benötigt.</p>" . 
     53                        "Gib den Hostnamen des Servers an, auf dem die Klassenbuch-Datenbank installiert werden soll. " . 
    4954                        "Ferner wird der Name einer bereits existierenden Datenbank benötigt und der Benutzername und das Passwort " . 
    5055                        "eines Datenbank-Benutzers, der über die Rechte zum Erstellen von Tabellen in dieser Datenbank verfügt.</p>" . 
    51                         "<p>Das Tabellen-Präfix wird allen Tabellen vorangestellt und ist v. a. dann nützlich, wenn sich in der " . 
    52                         "Datenbank noch andere Tabellen befinden.</p>" . 
    5356                         
    5457                        "<h3>Basiseinstellungen</h3>" . 
     
    6164                        "       <input type=\"text\" name=\"wiz_db_name\" value=\"[*wiz_db_name*]\"></td>" . 
    6265                        "       <td class=\"configHelp\"> Einige Hoster erlauben nur eine Datenbank pro Webseite. Wenn das der Fall " . 
    63                         "       ist, benutzen Sie bitte die Tabellen-Präfix-Option unter den Erweiterten Einstellungen.</td>" . 
     66                        "       ist, benutzen Sie bitte die Tabellen-Präfix-Option unter den \"Erweiterten Einstellungen\".</td>" . 
    6467                        "</tr><tr>" . 
    6568                        "       <td>Benutzername:<br />" . 
     
    7073                        "       <td>Passwort:<br />" . 
    7174                        "       <input type=\"password\" name=\"wiz_db_password\" value=\"[*wiz_db_password*]\"></td>" . 
    72                         "       <td class=\"configHelp\">Für die Sicherheit der Webseite ist die Verwendung eines MySQL-Zugangs " . 
    73                         "       obligatorisch. Dieses ist das gleiche Passwort für Ihre Datenbank. Dieses könnte von Ihrem Hoster " . 
    74                         "       voreingestellt sein.</td>" . 
     75                        "       <td class=\"configHelp\">Für die Sicherheit der Klassenbuch-Daten ist die Eingabe eines Passworts" . 
     76                        "       obligatorisch. Das Datenbank-Passwort ist möglicherweise von Ihrem Hoster voreingestellt worden.</td>" . 
    7577                        "</tr></table>" . 
    7678                         
     
    7981                        "       <td>Tabellenpräfix:<br />" . 
    8082                        "       <input type=\"text\" name=\"wiz_db_tblprefix\" value=\"[*wiz_db_tblprefix*]\"></td>" . 
    81                         "       <td class=\"configHelp\"></td>" . 
     83                        "       <td class=\"configHelp\">Das Tabellen-Präfix wird allen Tabellen vorangestellt und ist v. a. dann " . 
     84                                "nützlich, wenn sich in der Datenbank noch andere Tabellen befinden.</td>" . 
    8285                        "</tr></table>"; 
    8386        } 
     
    8588 
    8689class InstWiz_DbCheck extends Wizard { 
     90        var $diags; 
     91         
     92        function init() { 
     93                $this->setPrev("dbconfig"); 
     94        } 
     95         
     96        function testDatabase() { 
     97        $this->opendb( 
     98                $this->getVar("wiz_db_host"), 
     99                $this->getVar("wiz_db_name"), 
     100                $this->getVar("wiz_db_user"), 
     101                $this->getVar("wiz_db_password") 
     102        ); 
     103         
     104        $this->diags = $this->checkdb(); 
     105         
     106        if      ( 
     107                !$this->diags["Connect"] || 
     108                !$this->diags["Create"] || 
     109                !$this->diags["Insert"] || 
     110                !$this->diags["Update"] || 
     111                !$this->diags["Select"] || 
     112                !$this->diags["Delete"] || 
     113                !$this->diags["Drop"]) { 
     114                return false; 
     115        } 
     116         
     117        $this->importdb("schema.sql", "kb_", $this->getVar("wiz_db_tblprefix")); 
     118         
     119        return true; 
     120} 
     121         
     122        function setPage() { 
     123                if ($this->testDatabase()) { 
     124                        $this->setTitle("Datenbank erfolgreich eingerichtet"); 
     125                        $this->setNext("general"); 
     126                         
     127                        $msg = "<p>Die Datenbank wurde erfolgreich eingerichtet. Klicke nun auf [Weiter], um mit der Installation " . 
     128                                "fortzufahren.</p>"; 
     129                } else { 
     130                        $this->setTitle("Fehler beim Einrichten der Datenbank"); 
     131                        $this->setNext(null); 
     132                         
     133                        $msg = "<p>Die Datenbankeinstellungen stimmen nicht. Bitte klicke auf [Zurück] und überprüfe deine " . 
     134                                "Eingaben.</p>" . 
     135                                "<h3>Detaillierte Ergebnisse</h3><table border=\"0\">"; 
     136                         
     137                        foreach ($this->diags as $action => $result) { 
     138                                $text = !$result ? "<td style=\"color: red;\">Fehlgeschlagen</td>" : "<td style=\"color: green;\">OK</td>"; 
     139                                 
     140                                $msg .= "<tr><td>" . strtoupper($action) . "</td>$text</tr>"; 
     141                        } 
     142                         
     143                        $msg .= "</table>"; 
     144                } 
     145                 
     146                $this->page = $msg; 
     147        } 
     148} 
     149 
     150class InstWiz_GeneralSettings extends Wizard { 
    87151        function init() { 
    88152                $this->setPrev("dbconfig"); 
    89153                $this->setNext("finish"); 
    90                 $this->setTitle("Überprüfen der Datenbank-Einstellungen"); 
    91         } 
    92          
    93         function action() { 
    94                 $this->displayProgress(); 
    95         } 
    96          
    97         function setPage() { 
    98                 $this->opendb( 
    99                         $this->getVar("wiz_db_host"), 
    100                         $this->getVar("wiz_db_name"), 
    101                         $this->getVar("wiz_db_user"), 
    102                         $this->getVar("wiz_db_password") 
    103                 ); 
    104                  
    105                 $diags = $this->checkdb(); 
    106                  
    107                 $bSuccess = true; 
    108                  
    109                 if      ( 
    110                         !$diags["Connect"] || 
    111                         !$diags["Create"] || 
    112                         !$diags["Insert"] || 
    113                         !$diags["Update"] || 
    114                         !$diags["Select"] || 
    115                         !$diags["Delete"] || 
    116                         !$diags["Drop"]) { 
    117                         $bSuccess = false; 
    118                 } 
    119          
    120                 if ($bSuccess) { 
    121                         $this->importdb("schema.sql", "kb_", $this->getVar("wiz_db_tblprefix")); 
    122                          
    123                         $msg = "Die Datenbank wurde erfolgreich eingerichtet. Klicke nun auf [Weiter], um mit der Installation " . 
    124                                 "fortzufahren.</p>"; 
    125                 } else { 
    126                         $msg = "<span style=\"color: red; font-weight: bold;\">Fehler!</span> - Die Datenbankeinstellungen stimmen " . 
    127                                 "nicht.</p><p>Bitte klicke auf [Zurück] und überprüfe deine Eingaben.</p>"; 
    128                         $this->setNext(null); 
    129                 } 
    130                  
    131                 $msg .= "<h3>Detaillierte Ergebnisse</h3><table border=\"0\">"; 
    132                  
    133                 foreach ($diags as $action => $result) { 
    134                         $text = !$result ? "<td style=\"color: red;\">Fehlgeschlagen</td>" : "<td style=\"color: green;\">OK</td>"; 
    135                          
    136                         $msg .= "<tr><td>" . $action . "</td>$text</tr>"; 
    137                 } 
    138                  
    139                 $msg .= "</table>"; 
    140                  
    141                 $this->page = $msg; 
     154                $this->setTitle("Allgemeine Einstellungen"); 
     155                 
     156                $this->setDefaults(Array( 
     157                        "wiz_title" => "Klassenbuch", 
     158                        "wiz_subtitle" => "der Klasse x an der Schule y" 
     159                )); 
     160        } 
     161         
     162        function setPage() { 
     163                $this->page = "<p></p>" . 
     164                         
     165                        "<table class=\"configTable\"><tr>" . 
     166                        "       <td>Domain:<br />" . 
     167                        "       <input type=\"text\" name=\"wiz_domain\" value=\"[*wiz_domain*]\"></td>" . 
     168                        "       <td class=\"configHelp\">Der absolute Pfad zur Klassenbuch-Installation, inklusive \"http://\"." . 
     169                        "       Befindet sich das Klassenbuch in einem Unterordner auf dem Webserver, muss dieser auch angegeben "  . 
     170                        "       werden: z. B. <em>http://www.meineschule.ch/klasse1c/</em></td>" . 
     171                        "</tr><tr>" . 
     172                        "       <td>Mail-Adresse:<br />" . 
     173                        "       <input type=\"text\" name=\"wiz_mail\" value=\"[*wiz_mail*]\"></td>" . 
     174                        "       <td class=\"configHelp\">Die E-Mail-Adresse, von der alle E-Mails verschickt werden sollen. " . 
     175                        "       z. B. klasse1c@meineschule.ch</td>" . 
     176                        "</tr><tr>" . 
     177                        "       <td>Klassenbuch-Titel:<br />" . 
     178                        "       <input type=\"text\" name=\"wiz_title\" value=\"[*wiz_title*]\"></td>" . 
     179                        "</tr><tr>" . 
     180                        "       <td>Untertitel:<br />" . 
     181                        "       <input type=\"text\" name=\"wiz_subtitle\" value=\"[*wiz_subtitle*]\"></td>" . 
     182                        "       <td class=\"configHelp\">Wird gleich unterhalb des Klassenbuch-Titels angezeigt.</td>" . 
     183                        "</tr><tr>" . 
     184                        "       <td>Ihr Name:<br />" . 
     185                        "       <input type=\"text\" name=\"wiz_adminname\" value=\"[*wiz_adminname*]\"></td>" . 
     186                        "       <td class=\"configHelp\"></td>" . 
     187                        "</tr><tr>" . 
     188                        "       <td>Ihre E-Mailadresse:<br />" . 
     189                        "       <input type=\"text\" name=\"wiz_adminmail\" value=\"[*wiz_adminmail*]\"></td>" . 
     190                        "       <td class=\"configHelp\">An diese Adresse werden Benachrichtigungen über Kontoregistrierungen usw. " . 
     191                        "       gesendet.</td>" . 
     192                        "</tr></table>"; 
    142193        } 
    143194} 
     
    152203        function setPage() { 
    153204                $settings = $this->readFile("../server.settings.default.php"); 
    154                 $keys = Array("db_host", "db_name", "db_user", "db_password", "db_tblprefix"); 
     205                $keys = Array("domain", "mail", "adminmail", "adminname", "title", "subtitle", "db_host", "db_name", 
     206                        "db_user", "db_password", "db_tblprefix"); 
    155207                 
    156208                foreach ($keys as $key => $value) { 
     
    182234$wizard->addPage("dbcheck", $dbcheck); 
    183235 
     236$general = new InstWiz_GeneralSettings("general"); 
     237$wizard->addPage("general", $general); 
     238 
    184239$finish = new InstWiz_Finish("finish"); 
    185240$wizard->addPage("finish", $finish); 
  • trunk/installation/installation.css

    r18 r71  
    2424.configTable input { 
    2525        width: 140px; 
     26        margin-right: 8px; 
    2627} 
    2728 
     
    4344        font-size: 8pt; 
    4445} 
     46 
     47.invalidInputField { 
     48        border: #FF6655 1px solid; 
     49} 
  • trunk/installation/installation.tmpl

    r18 r71  
    55        <link href="../design/{DESIGN}/css/design.css" media="screen, projection" type="text/css" rel="stylesheet" /> 
    66        <link href="installation.css" media="screen, projection" type="text/css" rel="stylesheet" /> 
     7         
     8        <script src="../javascript/prototype.js" type="text/javascript"></script> 
     9         
     10        <script type="text/javascript"> 
     11                document.observe("dom:loaded", function() { 
     12                        var form = $("wizardForm"); 
     13                        var prevButton = $("prevButton"); 
     14                        var nextButton = $("nextButton"); 
     15                         
     16                        document.observe("keypress", function(event) { 
     17                                if (Event.KEY_RETURN === event.keyCode) { 
     18                                        if (nextButton) { 
     19                                                nextButton.click(); 
     20                                        } else if (prevButton) { 
     21                                                prevButton.click(); 
     22                                        } 
     23                                } 
     24                        }); 
     25                         
     26                        nextButton.observe("click", function(event) { 
     27                                var error = false; 
     28                                 
     29                                form.getElements().each(function(element) { 
     30                                        if (element.type !== "hidden" && !element.present()) { 
     31                                                element.addClassName("invalidInputField"); 
     32                                                error = true; 
     33                                        } else { 
     34                                                element.removeClassName("invalidInputField"); 
     35                                        } 
     36                                }); 
     37                                 
     38                                if (error) { 
     39                                        event.stop(); 
     40                                        return false; 
     41                                } 
     42                        }); 
     43                }); 
     44        </script> 
    745         
    846        <title>Klassenbuch - Installation{IF WIZARDTITLE} - {WIZARDTITLE}{ENDIF}</title> 
  • trunk/installation/wizard.php

    r18 r71  
    184184                return $this->out; 
    185185        } 
    186          
    187         /** 
    188          * Private: Helper, displays progress bar 
    189          */ 
    190         function _displayProgress($message = '') { 
    191                 $this->page = <<<EOB 
    192 <script type="text/javascript" language="JavaScript"> 
    193 aimg=new Image(); 
    194 aimg.src="progressbar.gif"; 
    195 </script> 
    196 <br /><br /><br /><br /> 
    197 <table width="100%" border="0"><tr><td align="center"> 
    198 <div id="progresstext"><b>{$message}</b></div> 
    199 <img src="progressbar.gif"> 
    200 </td></tr></table> 
    201 EOB; 
    202         } 
    203186 
    204187        /** 
     
    352335                $tmpl->read_file("installation.tmpl"); 
    353336                 
    354                 $tmpl->set_var("WIZARDTITLE", $this->title); 
    355337                $tmpl->set_var("WIZARDBODY", $this->_getPageBody()); 
    356338                $tmpl->set_var("WIZARDBUTTONS", $this->_getButtons()); 
     339                $tmpl->set_var("WIZARDTITLE", $this->title); 
    357340                 
    358341                $tmpl->parse(); 
     
    458441                $p = $this->wizard == null ? $this->bProgress : $this->wizard->bProgress; 
    459442                 
    460                 // if (!$p) { 
    461                         $this->setPage(); 
    462                 /* } else { 
    463                         $this->setNext($this->wizard->pagename); 
    464                         $this->_displayProgress("Wählen Sie [Weiter] um fortzufahren"); 
    465                 } */ 
     443                $this->setPage(); 
    466444                 
    467445                $out =  $this->page; 
     
    522500                 
    523501                // Done 
    524                 return "<form method=\"post\" action=\"{$_SERVER['PHP_SELF']}\" name=\"WIZARDFORM\">" . $hf . $out; 
     502                return "<form method=\"post\" action=\"{$_SERVER['PHP_SELF']}\" id=\"wizardForm\">" . $hf . $out; 
    525503        } 
    526504 
     
    529507         */ 
    530508        function _getButtons() { 
    531                 $b_out = "<script type=\"text/javascript\" language=\"JavaScript\"> 
    532                         document.onkeypress = function enterHandler(ev) { 
    533                                 if (!ev) { 
    534                                         ev = window.event; 
    535                                 } 
    536                                  
    537                                 k = ev.keyCode; 
    538                                  
    539                                 if (k == 13) { 
    540                                         if (!document.WIZARDFORM.next.disabled) { 
    541                                                 document.WIZARDFORM.next.click(); 
    542                                         } else if (!document.WIZARDFORM.prev.disabled) { 
    543                                                 document.WIZARDFORM.prev.click(); 
    544                                         } 
    545                                 } 
    546                         }; 
    547                         </script>"; 
    548                  
    549509                $b_out = "<div id=\"buttons\">"; 
    550510                 
    551511                if ($this->prevPage) { 
    552512                        $b_out .= "<input type=\"hidden\" name=\"onprev\" value=\"" .  
    553                                 $this->prevPage. "\"><input type=\"submit\" name=\"prev\" tabindex=\"1\" value=\"" .  
     513                                $this->prevPage. "\"><input type=\"submit\" id=\"prevButton\" name=\"prev\" tabindex=\"1\" value=\"" .  
    554514                                $this->prevCaption . "\">"; 
    555515                } 
     
    557517                if ($this->nextPage) { 
    558518                        $b_out .= "<input type=\"hidden\" name=\"onnext\" tabindex=\"0\" value=\"" .  
    559                                 $this->nextPage . "\"><input type=\"submit\" name=\"next\" value=\"" . 
     519                                $this->nextPage . "\"><input type=\"submit\" id=\"nextButton\" name=\"next\" value=\"" . 
    560520                                $this->nextCaption . "\">"; 
    561521                } 
    562  
     522                 
    563523                $b_out .= "</div>"; 
    564524                 
    565                 if ($this->wizard->bProgress) { 
    566                         $b_out .= "<input type=\"hidden\" name=\"autosubmit\" value=\"" . $this->wizard->pagename . "\">"; 
    567                         $b_out .= <<<EOB 
    568  
    569 <script type=\"text/javascript\" language=\"JavaScript\"> 
    570 document.WIZARDFORM.next.disabled=true; 
    571 document.getElementById(\"progresstext\").innerHTML=\"<b>Please Wait</b>\"; 
    572 setTimeout(\"document.WIZARDFORM.submit()\", 1000); 
    573 </script> 
    574  
    575 EOB; 
    576                 } 
    577  
    578525                return $b_out; 
    579526        } 
Note: See TracChangeset for help on using the changeset viewer.