# Anweisungen für AlexGuestbook upgrade
von Version 4.0 oder höher auf Version 5.00

Dieses update bietet einige neue Funktionen, und deshalb der Sprung auf Version 5. Ausserdem ist es eine gut Möglichkeit den Wechsel von AlexPHPTeam auf AlexGuestbook zu markieren.
Die Liste der Änderungen und Verbesserungen findet man in der changelog_en.txt Datei.
Alle Informationen, updates und support für das Gästebuch sind verfügbar auf www.alexguestbook.net

Bevor man irgendwelche Änderungen am aktuellen Gästebuch vornimmt, sollte man ein Backup von der Datenbank (und eigener Skins, sofern man die erstellt/modifiziert hat) machen.

Wir empfehlen stark die Skins dieser neuen Version zu installieren, und diese dann zu modifizieren wenn nötig. Alte Skins Upgraden ist möglich (weiter unten auf der Seite) aber es ist absolut nicht zu empfehlen! Die Änderungen sind vielfältig und es gibt viel Spielraum für Fehler.

1. Vor dem upgrade, überprüfen ob man wirklich die ZIP Datei mit der neuesten version heruntergeladen hat.

2. Mit beliebiger FTP Client-Software alle Dateien auf den Server hinaufladen (alle existierenden Dateien ersetzen). Ausgenommen sind: "setup.php" und Dateien die im "config/" bzw. "templates/" Verzeichnis sind. Dabei allerdings beachten, dass der Inhalt vom "templates/admin/ Verzeichnis ebenfalls ersetzt werden muss!

3. Die Struktur der Tabellen in der Datenbank hat sich geändert. Mit beliebiger Datenbank verwaltungssoftware (z.B. phpMyAdmin) die folgenden SQL Kommandos ausführen:
   Achtung, die Namen der Tabellen können anders sein, die Namen die hier verwendet werden sind die Standardnamen. Eventuell sind auch die Werte der Einstellungen zu ändern, denn hier sind ebenfalls die Standardwerte.

   Code: Select all
     `RENAME TABLE `alex_livre_ip` TO `alex_livre_ban` ;
     ALTER TABLE `alex_livre_ban` CHANGE `id_ip` `id_ban` MEDIUMINT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT ;
     ALTER TABLE `alex_livre_ban` ADD `pseudo` VARCHAR( 40 ) NOT NULL , ADD `email` VARCHAR( 150 ) NOT NULL ;
     ALTER TABLE `alex_livre_users` CHANGE `gestion_ip` `gestion_bannissement` TINYINT( 1 ) NOT NULL DEFAULT '0';
     CREATE TABLE `alex_livre_config` (
     `nom_config` varchar(255) NOT NULL,
     `valeur_config` varchar(255),
     KEY `nom_config` (`nom_config`)
     ) Type=MyISAM;
     INSERT INTO `alex_livre_config` VALUES ('langue', 'francais');
     INSERT INTO `alex_livre_config` VALUES ('skin_to_use', 'AguestNew');
     INSERT INTO `alex_livre_config` VALUES ('temps_session', '1800');
     INSERT INTO `alex_livre_config` VALUES ('send_mail', '1');
     INSERT INTO `alex_livre_config` VALUES ('temps_ip_post', '60');
     INSERT INTO `alex_livre_config` VALUES ('format_date', 'd/m/Y');
     INSERT INTO `alex_livre_config` VALUES ('admin_valide_messages', '0');
     INSERT INTO `alex_livre_config` VALUES ('admin_envoyer_remerciement', '0');
     INSERT INTO `alex_livre_config` VALUES ('admin_add_code_securite', '0');
     INSERT INTO `alex_livre_config` VALUES ('admin_bannir_mot', '0');
     INSERT INTO `alex_livre_config` VALUES ('url_interdites', '1');
     INSERT INTO `alex_livre_config` VALUES ('url_cliquables', '0');
     INSERT INTO `alex_livre_config` VALUES ('color_txt_code', '#000000');
     INSERT INTO `alex_livre_config` VALUES ('color_background_code', '#FFFFFF');
     INSERT INTO `alex_livre_config` VALUES ('champ_pseudo', '0');
     INSERT INTO `alex_livre_config` VALUES ('champ_email', '0');
     INSERT INTO `alex_livre_config` VALUES ('champ_site', '0');
     INSERT INTO `alex_livre_config` VALUES ('champ_pays', '0');
     INSERT INTO `alex_livre_config` VALUES ('champ_note', '0');
     INSERT INTO `alex_livre_config` VALUES ('champ_ville', '0');
     INSERT INTO `alex_livre_config` VALUES ('ok_aff_moteur', '1');
     INSERT INTO `alex_livre_config` VALUES ('nb_pages', '10');
     INSERT INTO `alex_livre_config` VALUES ('cut_mots', '75');
     INSERT INTO `alex_livre_config` VALUES ('maxi_car', '1500');
     INSERT INTO `alex_livre_config` VALUES ('nb_max_smileys', '20');
     INSERT INTO `alex_livre_config` VALUES ('url_recharger', 'index.php');
     INSERT INTO `alex_livre_config` VALUES ('extension_url', '');
     INSERT INTO `alex_livre_config` VALUES ('decalage_horaire', '0');
     INSERT INTO `alex_livre_config` VALUES ('autoriser_smileys', '1');
     INSERT INTO `alex_livre_config` VALUES ('inclure_livre', '0');
     INSERT INTO `alex_livre_config` VALUES ('fichier_inclusion', '');
     INSERT INTO `alex_livre_config` VALUES ('donner_focus', '0');
     INSERT INTO `alex_livre_config` VALUES ('lien_admin', '1');
     INSERT INTO `alex_livre_config` VALUES ('lien_accueil', '1');
     INSERT INTO `alex_livre_config` VALUES ('chemin_lien_accueil', '/');
     INSERT INTO `alex_livre_config` VALUES ('symbole_champ_obligatoire', '*');
     INSERT INTO `alex_livre_config` VALUES ('symbole_champ_prive', '[P]');
     `

4. Die Datei "config/config_base.php" mit Ihrer FTP Client-software herunterladen.

   Öffnen Sie diese Datei mit einem Text editor. Der Inhalt sollte ca. so aussehen:

     `<?php
     $database_type = "MySQL";
     $f_mysql_host = "localhost";
     $f_mysql_user = "root";
     $f_mysql_pass = "****";
     $f_mysql_base = "guestbook";
     $name_table['alex_livre_sessions'] = "alex_livre_sessions";
     $name_table['alex_livre_users'] = "alex_livre_users";
     $name_table['alex_livre_messages'] = "alex_livre_messages";
     $name_table['alex_livre_censure'] = "alex_livre_censure";
     $name_table['alex_livre_ip'] = "alex_livre_ip";
     $name_table['alex_livre_ban'] = "alex_livre_ban";
     $name_table['alex_livre_smileys'] = "alex_livre_smileys";
     $name_table['alex_img_verif_add'] = "alex_img_verif_add";
     $name_table['alex_livre_txt_lang'] = "alex_livre_txt_lang";
     $name_table['alex_livre_config'] = "alex_livre_config";
     ?>`

   Ersetzen Sie die durchgestrichene Zeile mit der roten darunter.
   Danach fügen Sie die zweite rote Zeile am ende des Dokuments ein.
   Speichern Sie die Datei und laden Sie sie auf den Server hinauf. Überprüfen ob die Datei wirklich überschrieben wurde (wenn nötig, löschen sie die Datei bevor Sie sie erneut hochladen).

5. Öffnen Sie die Administration von Ihrem Gästebuch, überprüfen Sie die neuen Funktionen und Optionen und setzen Sie diese auf die von Ihnen gewünschten Werte. Danach klicken Sie auf den "Speichern" Knopf. Dieser Schritt ist notwendig um weitere Probleme zu verhindern.

6. Auf dem Server, löschen Sie beide Dateien /config/config.php und /config/test

7. Falls Sie die Skins nicht verändert haben, können Sie das ganze "/templates/skins/" Verzeichnis hochladen, und somit das alte ersetzen. Dies ist die empfohlene Methode (Der Code in den Skins hat sich start verändert!) und ausserdem sind nun alle Skins gültiges xhtml.
   Falls Sie Ihre alten Skins behalten möchten, so müssen Sie diese upgraden. Falls nicht hat sich das update erledigt.

## Altes Skin upgraden:

Wir möchten Sie daran erinnern, dass es empfohlen wird die neuen Skins zu verwenden und diese zu modifizieren.

Vor dem upgraden Ihres Skins stellen Sie sicher dass es sich um die Version 4.0.5 handelt. Ist das nicht der Fall lesen Sie bitte die Anweisungen in Instructions to upgrade from version 4.0.4 to version 4.0.5.

- add_message.htm

Ersetze:

Code: Select all
  `<div class="add_msg_left"><mx:text id="nom_pseudo_visiteur"/> *</div>
  <div class="add_msg_right"><input class="i_text" type="text" tabindex="1" name="nom" size="34" maxlength="50" onfocus="this.className='i_focus'" onblur="this.className='i_text'"<mx:text id="value_nom"/> /></div>`

Mit:

Code: Select all
  `<mx:bloc id="bloc_pseudo">
  <div class="add_msg_left"><mx:text id="nom_pseudo_visiteur"/> <mx:text id="symbole_champ_obligatoire"/><mx:text id="symbole_champ_prive"/></div>
  <div class="add_msg_right"><input class="i_text" type="text" tabindex="1" name="nom" id="nom" size="34" maxlength="50" onfocus="this.className='i_focus'" onblur="this.className='i_text'"<mx:text id="value_nom"/> /></div>
  </mx:bloc id="bloc_pseudo">`

Ersetze:

Code: Select all
  `<div class="add_msg_left"><mx:text id="email_visiteur"/></div>
  <div class="add_msg_right"><input class="i_text" type="text" tabindex="2" name="email" size="34" maxlength="150" onfocus="this.className='i_focus'" onblur="this.className='i_text'"<mx:text id="value_email"/> /></div>`

Mit:

Code: Select all
  `<div class="add_msg_left"><mx:text id="email_visiteur"/> <mx:text id="symbole_champ_obligatoire"/><mx:text id="symbole_champ_prive"/></div>
  <div class="add_msg_right"><input class="i_text" type="text" tabindex="2" name="email" id="email" size="34" maxlength="150" onfocus="this.className='i_focus'" onblur="this.className='i_text'"<mx:text id="value_email"/> /></div>`

Ersetze:

Code: Select all
  `<div class="add_msg_left"><mx:text id="site_web_visiteur"/></div>
  <div class="add_msg_right"><input class="i_text" type="text" tabindex="3" name="site" size="34" maxlength="150" onfocus="this.className='i_focus'" onblur="this.className='i_text'"<mx:text id="value_site"/> /></div>`

Mit:

Code: Select all
  `<div class="add_msg_left"><mx:text id="site_web_visiteur"/> <mx:text id="symbole_champ_obligatoire"/><mx:text id="symbole_champ_prive"/></div>
  <div class="add_msg_right"><input class="i_text" type="text" tabindex="3" name="site" id="site" size="34" maxlength="150" onfocus="this.className='i_focus'" onblur="this.className='i_text'"<mx:text id="value_site"/> /></div>`

Ersetze:

Code: Select all
  `<!-- city & country -->
  <mx:bloc id="bloc_pays">
  <div class="add_msg_left"><mx:text id="ville_visiteur"/></div>
  <div class="add_msg_right"><input class="i_text" type="text" tabindex="4" name="ville" size="34" maxlength="60" onfocus="this.className='i_focus'" onblur="this.className='i_text'"<mx:text id="value_ville"/> /></div>
  <div class="add_msg_left"><mx:text id="pays_visiteur"/></div>
  <div class="add_msg_right"><select tabindex="5" size="1" name="pays" onchange="update_flag(this)"><option value="">-</option><mx:text id="select_pays"/></select> <img id="img_flags" src="<mx:text id="chem_absolu"/>images/<mx:text id="img_flags"/>" width="18" height="12" alt="" title="<mx:text id="flag"/>" /></div>
  </mx:bloc id="bloc_pays">
  `

Mit:

Code: Select all
  `<!-- city -->
  <mx:bloc id="bloc_ville">
  <div class="add_msg_left"><mx:text id="ville_visiteur"/> <mx:text id="symbole_champ_obligatoire"/><mx:text id="symbole_champ_prive"/></div>
  <div class="add_msg_right"><input class="i_text" type="text" tabindex="4" name="ville" id="ville" size="34" maxlength="60" onfocus="this.className='i_focus'" onblur="this.className='i_text'"<mx:text id="value_ville"/> /></div>
  </mx:bloc id="bloc_ville">
  <!-- country -->
  <mx:bloc id="bloc_pays">
  <div class="add_msg_left"><mx:text id="pays_visiteur"/> <mx:text id="symbole_champ_obligatoire"/><mx:text id="symbole_champ_prive"/></div>
  <div class="add_msg_right"><select tabindex="5" size="1" name="pays" id="pays" onchange="update_flag(this)"><option value="">-</option><mx:text id="select_pays"/></select> <img id="img_flags" src="<mx:text id="chem_absolu"/>images/<mx:text id="img_flags"/>" width="18" height="12" alt="" title="<mx:text id="flag"/>" /></div>
  </mx:bloc id="bloc_pays">`

Ersetze:

Code: Select all
  `<div class="add_msg_left"><mx:text id="note_visiteur"/></div>
  <div class="add_msg_right"><select tabindex="6" size="1" name="note_site">`

Mit:

Code: Select all
  `<div class="add_msg_left"><mx:text id="note_visiteur"/> <mx:text id="symbole_champ_obligatoire"/><mx:text id="symbole_champ_prive"/></div>
  <div class="add_msg_right"><select tabindex="6" size="1" name="note_site" id="note_site">`

Ersetze:

Code: Select all
  `<div class="d_center" style="clear: both;"><mx:text id="message_visiteur"/> *</div>`

Mit:

Code: Select all
  `<div class="d_center" style="clear: both;"><mx:text id="message_visiteur"/> <mx:text id="symbole_champ_obligatoire"/></div>`

Ersetze:

Code: Select all
  `<mx:bloc id="bloc_code_securite">
  <div class="d_center"><br /><mx:text id="veuillez_taper_code"/> : (<a href="javascript:script_popup('<mx:text id="chem_absolu"/>infos_code.php?lang=<mx:text id="lang"/>','down',350,280,'scrollbars=yes')" class="a_info_code"><mx:text id="a_quoi_ca_sert"/></a>)<br />
  <div>
  <div class="d_code1"><img width="82" height="20" src="<mx:text id="chem_absolu"/>genImg/index.php?id=<mx:text id="id_genImg"/>" alt="" title="Code" /></div>
  <div class="d_code2"><input tabindex="8" class="code_sec" maxlength="4" type="text" name="code_securite" size="5" /></div>
  <input type="hidden" name="num_id" value="<mx:text id="id_genImg"/>" />
  </div></div>
  </mx:bloc id="bloc_code_securite">`

Mit:

Code: Select all
  `<mx:bloc id="bloc_code_securite">
  <div class="d_center"><br /><mx:text id="veuillez_taper_code"/> : (<a href="javascript:script_popup('<mx:text id="chem_absolu"/>infos_code.php?lang=<mx:text id="lang"/>','down',350,280,'scrollbars=yes')" class="a_info_code"><mx:text id="a_quoi_ca_sert"/></a>)<br />
  <div>
  <div class="d_code1"><img width="82" height="20" src="<mx:text id="chem_absolu"/>genImg/index.php?id=<mx:text id="id_genImg"/>" alt="" title="Code" /></div>
  <div class="d_code2"><input tabindex="8" class="code_sec" maxlength="4" type="text" name="code_securite" size="5" /></div>
  </div></div>
  </mx:bloc id="bloc_code_securite">
  <input type="hidden" name="num_id" id="num_id" value="<mx:text id="id_genImg"/>" />`

Ersetze:

Code: Select all
  `<!-- submit -->
  <div class="d_submit_msg"><br /><input type="submit" tabindex="9" value="<mx:text id="ajouter_message_visiteur"/>" name="ajouter" class="btn_add" /></div>`

Mit:

Code: Select all
  `<!-- submit -->
  <div class="d_submit_msg"><br /><input type="submit" tabindex="9" value="<mx:text id="ajouter_message_visiteur"/>" name="ajouter" id="ajouter" class="btn_add" /></div>`

- assembly.htm

Just before :

Code: Select all
  `<?xml version="1.0" encoding="<mx:text id="SCRIPT_ENCODAGE"/>"?>`

Add :

Code: Select all
  `<!--=== BLOC HEADER_HTML ===-->`

Just before the </head> tag, add :

Code: Select all
  `<script language="javascript" type="text/javascript">
  <!--
  function donner_focus(champs){
  document.getElementById(champs).focus();
  }
  //-->
  </script>`

Ersetze:

Code: Select all
  `<body>`

Mit:

Code: Select all
  `<body <mx:text id="donner_focus"/>>
  <!--=== /BLOC HEADER_HTML ===-->`

Ersetze:

Code: Select all
  `function verif_mail(adresse) {
  var place = adresse.indexOf("@",1);
  var point = adresse.indexOf(".",place+1);
  if ((place > -1)&&(adresse.length >2)&&(point > 1))
  return true;
  else
  return false;
  }`

Mit:

Code: Select all
  `function verif_mail(adresse){
  if (adresse.match(/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i))
  return true;
  else
  return false;
  }
  function verif_url(adresse){
  if (adresse.match(/^(?:(?:https?)\:\/\/)?\w+([\.\-]\w+)*\.\w{2,4}(\:\d+)*([\/\.\-\?\&\%\#]\w+)*\/?$/i))
  return true;
  else
  return false;
  }`

Ersetze:

Code: Select all
  `function verif_add(){
  var F = document.getElementById("form_add_guest");
  var nom = F.nom.value;
  var message = F.message_textarea.value;
  <mx:bloc id="bloc_verif_mail">
  var mail= F.email.value;
  </mx:bloc id="bloc_verif_mail">
  if (!nom){
  alert("<mx:text id="erreur_add_nom"/> ");
  return false;
  }
  else if (!message){
  alert("<mx:text id="erreur_add_message"/> ");
  return false;
  }
  <mx:bloc id="bloc_verif_mail2">
  else if (!verif_mail(mail) && mail){
  alert("<mx:text id="erreur_mail"/> ");
  return false;
  }
  </mx:bloc id="bloc_verif_mail2">
  else if (F.code_securite && !F.code_securite.value){
  alert("<mx:text id="erreur_code_securite"/>");
  return false;
  }`

Mit:

Code: Select all
  `function verif_add(){
  var F = document.getElementById("form_add_guest");
  var message = F.message_textarea.value;
  <mx:bloc id="bloc_verif_nom">
  var nom = F.nom.value;
  if (!nom){
  alert("<mx:text id="erreur_add_nom"/> ");
  return false;
  }
  </mx:bloc id="bloc_verif_nom">
  <mx:bloc id="bloc_verif_email">
  var email = F.email.value;
  if (!email){
  alert("<mx:text id="erreur_add_email"/> ");
  return false;
  }
  </mx:bloc id="bloc_verif_email">
  <mx:bloc id="bloc_verif_site">
  var site = F.site.value;
  if (!site){
  alert("<mx:text id="erreur_add_site"/> ");
  return false;
  }
  </mx:bloc id="bloc_verif_site">
  <mx:bloc id="bloc_verif_ville">
  var ville = F.ville.value;
  if (!ville){
  alert("<mx:text id="erreur_add_ville"/> ");
  return false;
  }
  </mx:bloc id="bloc_verif_ville">
  <mx:bloc id="bloc_verif_pays">
  var pays = F.pays.value;
  if (!pays){
  alert("<mx:text id="erreur_add_pays"/> ");
  return false;
  }
  </mx:bloc id="bloc_verif_pays">
  <mx:bloc id="bloc_verif_note">
  var note = F.note_site.value;
  if (!note){
  alert("<mx:text id="erreur_add_note"/> ");
  return false;
  }
  </mx:bloc id="bloc_verif_note">
  if (!message){
  alert("<mx:text id="erreur_add_message"/> ");
  return false;
  }
  <mx:bloc id="bloc_verif_email2">
  var email = F.email.value;
  if (!verif_mail(email) && email){
  alert("<mx:text id="erreur_mail"/> ");
  return false;
  }
  </mx:bloc id="bloc_verif_email2">
  <mx:bloc id="bloc_verif_site2">
  var site = F.site.value;
  if (!verif_url(site) && site){
  alert("<mx:text id="erreur_url"/> ");
  return false;
  }
  </mx:bloc id="bloc_verif_site2">
  else if (F.code_securite && !F.code_securite.value){
  alert("<mx:text id="erreur_code_securite"/>");
  return false;
  }
  }`

Just before :

Code: Select all
  `<mx:text id="message_alert"/>`

Add :

Code: Select all
  `<div id="alexguestbook">
  <mx:text id="lien_accueil"/>`

Ersetze:

Code: Select all
  `</body>
  </html>`

Mit:

Code: Select all
  `<mx:text id="lien_admin"/>
  </div>
  <!--=== BLOC FOOTER_HTML ===-->
  </body>
  </html>
  <!--=== /BLOC FOOTER_HTML ===-->`

- corps_messages.htm

Ersetze:

Code: Select all
  `<div class="d_pseudo"><a name="id<mx:text id="idMsg"/>"><mx:text id="flag"/> <mx:text id="pseudo"/> <mx:text id="pays_ville"/> <mx:text id="img_home"/> <mx:text id="img_mail"/></a></div>`

Mit:

Code: Select all
  `<div class="d_pseudo"><a name="id<mx:text id="idMsg"/>"><mx:text id="flag"/> <mx:text id="pseudo"/> <mx:text id="ville"/><mx:text id="pays"/> <mx:text id="img_home"/> <mx:text id="img_mail"/></a></div>`

- alex_livre.css

To avoid conflicts between the styles of the guestbook and of the rest of the site, the guestbook is now placed inside a container (DIV tags). You therefore have to add the #alexguestbook prefix (the ID of the container) before the name of each style.

Example :

Code: Select all
  `input, textarea, select {
  font-family: Verdana, Helvetica, sans-serif;
  font-size: 1em;
  border: 1px solid #757575;
  }`

Becomes :

Code: Select all
  `#alexguestbook input, #alexguestbook textarea, #alexguestbook select {
  font-family: Verdana, Helvetica, sans-serif;
  font-size: 1em;
  border: 1px solid #757575;
  }`

Or else :

Code: Select all
  `input.btn_add {
  font-size: 1em;
  cursor: pointer;
  font-weight: bold;
  color: #373737;
  }`

Becomes :

Code: Select all
  `#alexguestbook input.btn_add {
  font-size: 1em;
  cursor: pointer;
  font-weight: bold;
  color: #373737;
  }`

The style applied to the BODY tag is now applied to the #alexguestbook container.

Ersetze:

Code: Select all
  `body {
  background-color: #FFFFFF;
  font-family: Verdana, Helvetica, sans-serif;
  color: #000000;
  font-size: 0.7em;
  }`

Mit:

Code: Select all
  `#alexguestbook {
  background-color: #FFFFFF;
  font-family: Verdana, Helvetica, sans-serif;
  color: #000000;
  font-size: 0.7em;
  }`

Almost done on this file : add (i.e. at the end of the file) :

Code: Select all
  `#alexguestbook #lien_accueil a:link, #alexguestbook #lien_accueil a:hover, #alexguestbook #lien_accueil a:visited, #alexguestbook #lien_administration a:link, #alexguestbook #lien_administration a:hover, #alexguestbook #lien_administration a:visited {
  text-decoration: underline;
  color: #4A7DAC;
  }
  #alexguestbook #lien_accueil img, #alexguestbook #lien_administration img {
  vertical-align: text-bottom;
  width: 16px;
  height: 16px;
  border: 0;
  margin: 0 2px 0 0;
  }
  #alexguestbook #lien_administration {
  text-align: center;
  margin-top: 10px;
  }
  #alexguestbook .symbole_champ_obligatoire {
  color: #FF0000;
  }
  #alexguestbook .symbole_champ_prive {
  color: #0000FF;
  }`

- Neue Bilder hinzufügen

Öffnen Sie das ZIP Dokument der neuen version und kopieren Sie die Bilder "templates/skins/AguestNew/img/administration.png" und "templates/skins/AguestNew/img/accueil.png". Erzeugen Sie den Ordner "img" im Verzeichnis Ihres Skins und fügen Sie diese Bilder ein.

## OK, das wars, Ihr Gästebuch ist nun aktualisiert :o)