Location: PHPKode > projects > Content*Builder > contentbuilder/update.txt
 // +----------------------------------------------------------------------+
 // | User-Guide "Aktualisierung auf Content*Builder 0.5.2"                |
 // +----------------------------------------------------------------------+
 // | Copyright (c) 2003 Content-Builder.de     / deka , 13.06.2003        |
 // +----------------------------------------------------------------------+

----------------------------------------------
	// Intention

Dieses Dokument beschreibt speziell die Aktualisierung von Content*Builder-Installationen auf die Version Content*Builder 0.5.2 .

Fuer die Version 0.5.2 wurde die Layout-Gestaltung der CB-Website drastisch vereinfacht - entsprechend sind zugehoerige Konfigurations und Layout-Dateien anzupassen. Fuer das CB-Redaktionssystem koennen nun eigene Skins entwickelt werden; entsprechend aendert sich hier die Verzeichnistruktur.
Weiterhin wird erstmals eine Gesamtdistribution fuer Website-Ausgabe (ehem. Base-Template / BTPL, jetzt als 'CB-Website' bezeichnet) und Redaktions-System (ehem. 'Content-Builder', jetzt 'CB-Redaktionssystem') ausgeliefert, die als Erstinstallation nach dem Entpacken des Download-Archivs ohne manuelle Aenderungen an den Code-Dateien sofort lauffaehig ist - was fuer Aktualisierungen bestehender Websites leider nicht ganz so einfach funktioniert.

Der Hauptaugenmerk dieses Dokuments liegt jedoch auf der Betrachtung der allg. Aufgabenstellung "Wie aktualisiert man eine Web-Applikation wie Content*Builder?"
Die Beherrschung entsprechender Vorgehensweisen sollte zum Handwerkszeug jeden Webmasters gehoeren, leider sind Literaturquellen zum Thema recht rar ...  aber am praktischen Beispiel laesst es sich ohnehin viel besser lernen.


	// Betroffene Content*Builder-Versionen:
Update von Content*Builder 0.4x/Base-Template 1.11 auf Content*Builder 0.5.2 / Base-Template 1.13, prinzipiell treffen die folgenden Beschreibungen auch auf das Update von Content*Builder 0.5.1/Base-Template 1.12 zu, auf Unterschiede wird jeweils speziell verwiesen.

!Wichtiger Hinweis
Das Update von aelteren Content-Builder-Versionen (Kennzeichen: keine Funktionalitaet 'Media-Manager') wird hier nicht beschrieben, da grundlegende Aenderungen am Datenbank-Modell durchgefuehrt wurden. Prinzipiell kann in diesem Fall nur die Parallel-Installation  der aktuellen Distribution mit manueller Uebernahme der alten Daten ueber das Redaktionsfrontend empfohlen werden - dies duerfte auch bei groesseren Webseiten mit geringerem Aufwand verbunden sein als direkte Manipulationen der Datenbank.


	// Zielplattform dieser Beschreibung:
Vorgehensweise mit MS-Windows-PC als Arbeitsplatz-PC (die Vorgehensweise mit anderen Betriebssystemen unterscheidet sich im wesentlichen nur durch die verwendeten Software-Tools)


	// !!! Grundlegender Hinweis: !!!!
Bitte NICHT die Setup-Routine der neuen Distribution ausfuehren: das Ausfuehren des Setup-Skriptes zerstoert ohne Nachfrage alle bestehenden Datenbank-Inhalte, sprich alle Artikel, Rubriken etc. ... :-(


	// Zeitaufwand
Bei einer etwas aufwendiger angepassten Installation von CB mit mehr als 10-20 Artikeln ist von ca. 1 Tag Aufwand auszugehen; also 2-24h (je nach zur Verfuegung stehendem Zeitfenster lt. Murphys law).

----------------------------------------------
Step 1: // Vorbereitungen

	// * Mysql-Backup anlegen.

Hierzu eignet sich in der Regel das Tool PHPMyAdmin (s. Referenzen unten). Bitte: mach es.

	/ Hinweis zur Vorgehensweise: 
Nach dem Login in PHPMyAdmin die Content*Builder-Datenbank auswaehlen; auf dieser Seite gibt es weiter unten ein Formular "Dump (Schema) der Datenbank anzeigen" (o.„. - je nach Version von phpMyAdmin). In diesem Formular die CB-Tabellen auswaehlen (das sind standardmaessig jene, welche mit "cms_" beginnen), "Struktur und Daten" markieren und das Formular absenden - der vom Browser zurueckgelieferte Text kann einfach als Textdatei abgespeichert werden.

	/ Noch einmal der Hinweis: 
Software-Aktualisierungen ohne DB-Backup sind wie das Laufen ueber einen Abgrund mit verbundenen Augen ohne Gelaender zum Festhalten ...


	// * Code-Backup anlegen!
Wie fuer die Datenbank-Daten gilt auch hier: Backup als unbedingte Notwendigkeit. Please do it!
Am besten einfach in ein Archiv einpacken. Wer Probleme damit hat, dem sei das Windows-Explorer-Ersatz-Tool "Total Commander" (ehemals "Windows Commander") von Christian Ghisler ans Herz gelegt: die "Packen-Funktionalitaet" ist hier m.E. am besten visualisiert.


----------------------------------------------
Step 2: // Nutzerspezifische Anpassungen "retten"

	/ Problem: 
Wahrscheinlich wurde gegenueber der Distribution so einige Dinge geaendert / angepasst: aber was war das gleich?

	/ Vorgehensweise:
(Annahme: die zu aktualisierenden CB-Dateien befinden sich im Verzeichnis "public_html/".)


Step 2.a // Vorbereitung

- Umbenennen des Verzeichnisses "public_html/" in "old_html/".

- Anlegen eines Verzeichnisses "old_distri/"

- Entpacken der alten Basis-Distributionen in das Verzeichnis "old_distri/" - hierbei sind die getrennten Archivdateien von 'Base-Template' und 'Content-Builder' so zu entpacken, dass die Verzeichnisse dem Stand von "old_html/" entsprechen. Um der Aenderung der Verzeichnisstruktur fuer die HTML-Templates des Redaktionssystems (wurde geaendert fuer Skin-Feature) zu entsprechen, legen wir noch das Verzeichnis "old_distri/<Pfad-zu-cb-Redaktionssystem>/templates/default/" an und duplizieren in dieses Verzeichnis die Unterverzeichnisse aus "old_distri/<Pfad-zu-cb-Redaktionssystem>/templates/".

- Neuanlegen des (jetzt leeren) Verzeichnisses "public_html/"

- Entpacken der CB-Distribution nach "public_html/"

- neue CB-Distribution an die "alte" Verzeichnisstruktur anpassen 
(Hinweis: ohne diese Anpassung funktionieren die Pfade zu den Mediendateien (CB-Uploads) nicht mehr; bei einer Anpassung in 'die andere Richtung' treten i.d.R. groessere Problem auf ...)

Beispiel: 
Der Redaktionssystem-Pfad befindet sich im Unterverzeichnis "cb/" der Website (Base-Template). 
Das Verzeichnis "public_html/contentbuilder/" ist dann umzubenennen in "public_html/cb/", in der Config-Datei "public_html/prepend.php" ist entsprechend anzupassen die Zeile
   $path["cb"] = $rel."contentbuilder/";
      wird zu 
   $path["cb"] = $rel."cb/";

- Datenbank-Zugangsdaten bernehmen; kopieren von "old_html/contentbuilder/system/inc/db.php" nach "public_html/contentbuilder/system/inc/db.php".

Jetzt sollte sich die neue Website bereits aufrufen lassen: allerdings noch mit dem Standard-Content*Builder-Layout. Wenn es noch nicht funktioniert, muessen wir in den folgenden Punkten noch ein wenig an der Konfiguration schrauben ...


Step 2.b // Vergleich der alten und neuen Dateien
(!falls definitiv keine Dateien angepasst wurden, kann dieser Schritt entfallen - dies duerfte bei groesseren Seiten jedoch relativ selten der Fall sein)

Wir benutzen die aktuelle Version des Tools "WinMerge" fr rekursiven Datei-Vergleich (s. unten "Referenzen")

	/ Vorgehensweise:

- WinMerge ggf. downloaden und installieren

- WinMerge starten; Befehl "File Open" - die Verzeichnisse "old_distri/" und "old_html/" auswaehlen, die Option "recursive" aktivieren - nach Klick auf der "OK"-Button beginnt der Dateivergleich. (Hinweis: der Text "Directory Selection" muss bei der Dateiauswahl im Feld "Dateiname" erhalten bleiben, um die Auswahl von Verzeichnissen zum Vergleich zu ermoeglichen)

- In der Ergebnisliste des Vergleichs werden einzelne Dateien als ungleich gekennzeichnet: per Doppelklick kann man sich durch diese Dateien "klicken" und erhaelt Datei-Unterschiede visuell dargestellt ..

Wir notieren uns die Unterschiede zur Orginal-Distribution (Dateinamen) und gehen zum naechsten Vergleichs-Schritt mit WinMerge ueber:

- Vergleich von "old_distri/" und "public_html/"
Die interessierende Fragestellung: wurde eine der in "old_html/" angepassten Dateien durch die neue Distri veraendert? (in jedem Fall wird das bei den Template-Dateien der Fall sein: aber dazu spaeter ..)
Wenn ja (ausser bei Datei "contentbuilder.template"), gehen wir zurueck zum Vergleich dieser Datei in "old_distri/" und "old_html/": wie schwierig sind diese Aenderungen in die neue Version einzubringen (in der Regel sollte das sehr einfach sein; man muss sich nur daran erinnern, dass der entsprechende Arbeitsschritt zu tun ist).

Hinweis: Haeufigste Anpassungen sind Layout-Aenderungen in den Templates der Module, das Hinzufuegen von Layout-Images und aehnliches.

Tool-Vorschlag fuer das Editieren des PHP-Code: "Maguma Studio fuer PHP" bzw. "PHPEdit" (jeweils Freeware, s. unten "Referenzen")


----------------------------------------------
Step 3 // Datenbank-Update durchfuehren

	/ Update von Version "0.4x":
* als Admin Login ins neue Redaktionssystem - Aufruf des "Modul Setup" (ggf. das linke Zusatzmen durch Klick auf den Icon-Button "Menu anzeigen an/aus" aktivieren); evtl. liegen fuer einzelne Plugins Datenbank-Updates vor, diese sind in diesem Bereich des Redaktionssystem per Klick auf die Textlinks "Modul-Informationen" einspielbar.
* step 2 des Update der Datenbankstruktur durch Einspielen des Mysql-Codes (Mysql-Dump) aus der beiliegenden Datei "cb_upd_0.4x_0.5.2.sql" (ggf. Nutzung von "phpMyAdmin") - !!! falls das Tabellen-Pr„fix der CB-Datenbank-Tabellen nicht "cms_" ist, muessen per Texteditor und Bearbeiten/Ersetzen alle Vorkommen von "cms_" durch z.B. "cb_" ersetzt werden !!!
Hinweis: in phpMyAdmin nach Auswahl der CB-Datenbank das Formular "SQL-Befehl(e) in Datenbank xyz ausfuehren" benutzen; hier kann ber den Button "Durchsuchen" unsere Mysql-Dump-Datei ausgewaehlt werden.
Hinweis 2: Fehlermeldungen 'Duplicate key ... in table cms_options' koennen ignoriert werden.

	/ Update von Version "0.5.1"
Hier genuegt es, die Dump-Datei der Distribution "public_html/contentbuilder/system/setup2/cb_article2.sql" einzuspielen, wobei die Hinweise von step2 des Updates von Version "0.4x" zu beachten sind.

	/ manuelles Update "relativer Pfad zur CB-Website"
Fuer die Funktion "Artikel-Preview" des CB-Redaktionssystems wurde eine Option "BTPL_location" eingefuehrt. Diese ist nach der Installation (bzw. dem Einspielen obigen DB-Dumps) gesetzt auf "../" (= das unmittelbar uebergeordnete Verzeichnis der Verzeichnis-Hierarchie).
Derzeit kann dieser Wert nur direkt in der Datenbank manipuliert werden (z.B. mit phpMyAdmin); Tabelle 'cms_options', Datensatz mit ' WHERE name="BTPL_location" '. (Hinweis: die Tabelle 'cms_options' ist der zentrale Sammelpunkt fuer nahezu alle grundlegenden Optionen des Redaktionssystems, die in der Regel allerdings ueber die Dialoge des CB-Redaktionssystems geaendert werden sollten).


----------------------------------------------
Step 4 // Anpassung der CB-Website (Base-Template 1.13) 

	/ Allg.
Weiterhin wird die Template-Engine 'patTemplate' fuer die Generierung aller Ausgaben von Content*Builder verwendet.
Die Struktur des Base-Template wurde jedoch drastisch vereinfacht: in '<cb-root>/templates/default/contentbuilder.template' wurden alle Schleifen, Rueckbezuege, Sonderbehandlungen und Wiederholungen entfernt bzw. eingaengig visualisiert.
Gleichzeitig wurde die Konfiguration der Module komplett umgestellt - eine Aktualisierung ist zwingend notwendig, sollte allerdings bei konsequenter Arbeit in wenigen Minuten realisiert werden koennen.

	/ Struktur der Datei 'contentbuilder.template'
Die Datei '<cbroot>/templates/default/contentbuilder.template' ist bzgl. Ihrer patTemplate-Tags nun prinzipiell XML-well-formed - bei konsequenter Verwendung von XHTML-Code kann die patTemplate-Syntax nun mit einem XML-Check-Tool geprueft werden.
Die Struktur sieht in vereinfachter Form wie folgt aus:
<btpl>
  <btpl:head>
	normaler HTML-Start-Code fuer die Website-Ausgabe, sollte z.B. beginnen 
	mit '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">'
	i.d.R. Start HTML-Table fuer den folgenden Templates, 
	endet haeufig mit '<table><tr>'
  </btpl:head>
  <btpl:left>
	Start Umrahmung linke Spalte, im einfachsten Fall steht hier nur '<td>'
	Bestehendes Layout kann sicher auch ganz anders aussehen: evtl. ist 
	'<td>' aber auch ein guter Vorschlag fuer eine einfache
	Layout-Struktur ...
    <btpl:left:modules>
	Hier wird der Inhalt der fuer die linke Spalte konfigurierten 
	Module ausgegeben; falls mehr als ein Modul in der linken Spalte angezeigt
	werden soll, wird dieses Template entsprechend oft durchlaufen.
	Im einfachsten Fall steht hier nur '{MODULE_CONTENT}' (Platzhalter fuer
	den HTML-Code des jeweiligen Modules - !! die Platzhalter-Variable 
	{PLUGIN_CONTENT} wurde durch '{MODULE_CONTENT}' ersetzt - unbedingt
	aendern !!
    </btpl:left:modules>
	Schliesst die linke Spalte ab; einfachster Fall: '</td>'
  </btpl:left>
  <btpl:center>
	wie linke Spalte (<btpl:left>)
    <btpl:center:modules>
	Dieses Sub-Module wird in der Regel nur einmal durchlaufen: es enthaelt
	in der Regel den Artikeltext / die Artikel-šbersicht.
	Dies ist jedoch nur eine Annahme, die im Zusammenspiel mit der 
	Konfiguration des "Haupt-Moduls" in '<cb-root>/modules.php' angepasst 
	werden kann.
    </btpl:center:modules>
	wie linke Spalte (</btpl:left>)
  </btpl:center>
  <btpl:right>
	wie linke Spalte (<btpl:left>)
    <btpl:right:modules>
	wie linke Spalte
    </btpl:right:modules>
	wie linke Spalte (</btpl:left>)
  </btpl:right>
  <btpl:foot>
	normaler HTML-Start-Code fuer die Website-Ausgabe
	i.d.R. Ende HTML-Table der vorherigen Templates, 
	beginnt meist mit '</tr></table>' und sollte enden mit 
	'</body></html>'
  </btpl:foot>
</btpl>

	/ Modul-Konfigurationsdatei 'modules.php'
s. Beschreibung in '<cb-root>/btpl-module.txt' bzw. Kommentare in '<cb-root>/modules.php'.
In diese Datei muessen die ehemals in 'modules_left.php' und 'modules_right.php' vorgenommenen Konfigurationen zwingend uebernommen werden.
Evtl. gibt es Probleme mit dem Module 'Menu'; in diesem Fall sollte das Modul 'menu2' verwendet werden.


	/ HTML-Code der Module
Dieser befindet sich in <cb-root>/modules/<module-name>/templates/ und sollte bereits in Step 2 aktualisiert worden sein, ebenso wie Anpassungen der Module-Funktionaliaet.

----------------------------------------------
Step 5 // Ende und Nacharbeiten

Alles sollte jetzt wie gewuenscht funktionieren. Es empfiehlt sich aber in jedem Fall das Experimentieren mit neuen Funktionen des CB-Redaktions-Systems wie "rubrikspezifische Gruppenrechte", "Artikel-Einstellungen", Festlegen der beim Aufruf der Website zuerst anzuzeigende Rubrik ("Main-Folder").

Falls es weitere Fragen gibt, stehen wir im Forum auf www.content-builder.de gern Rede und Antwort.



Viel Spass und Vorfreude auf neue Features wuenschen Eure "Content*Builder" ;-)

----------------------------------------------


	// Referenzen:

* WinMerge: Tool zum rekursiven Vergleichen von Dateien und Verzeichnissen - http://winmerge.sourceforge.net/
* PHPMyAdmin: Mysql-Datenbank-Adminstrationstool - http://www.phpmyadmin.net/
* Total-Commander: Windows-Explorer-Ersatz-Tool mit vielen Zusatzfeatures inkl. FTP, etc. - http://www.ghisler.com
* Maguma Studio for PHP: Code-Editor fuer PHP mit integriertem Debugger und Manuals zu PHP, Mysql, HTML/CSS (Freeware-Version) - http://www.maguma.com
* PHPEdit: Freeware PHP-Code-Editor mit vielen genialen Funktionen und Debugger-Vorbereitung - http://www.phpedit.com
* patTemplate: von Content*Builder verwendete Template-Engine fuer die Generierung des HTML-Codes - http://www.php-tools.de

Return current item: Content*Builder