Ein einmal erzeugtes Plugin lässt sich zu einem späteren Zeitpunkt erneut in den Kickstarter laden und weiter verfeinern. Leider kommt hier aber auch die Warnung "Kickstarter is not an editor." zu tragen: Nach dem Editieren werden alle selbst getätigten Änderungen am Code verworfen. Die Gründe dafür klären ich weiter unten auf. Im Grunde ist dies aber nur eine unwesentliche Einschränkung: Während der Entwicklung werden die wesentlichen Änderung am Code der Plugins und Module vorgenommen - diese Dateien (wie alle anderen auch ) lassen sich aber gezielt vom Überschreiben durch den Kickstarter ausschließen (und die zugehörigen Einstellungen werden selber auch gesichert).
Leider gestaltet sich das Erzeugen von Tabellen mit vielen Feldern sehr mühsam und zeitraubend: Man kann pro Aktion immer nur ein Feld in der Datenbank anlegen, danach muss man einen Seitenreload abwarten. Auf der dann erscheinenden Seite müssen dann noch die "Erweiterten Eigenschaften" des zuletzt angelegten Feldes definiert werden und man hat die Möglichkeit ein weiteres neues Feld anzulegen. Diese Aktion muss wiederum durch drücken eines Buttons gefolgt von einem Seitenreload bestätigt werden...
Alles in allem also eine ziemlich zeitraubende Angelegenheit.
Das Verhalten der Extension erklärt sich, wenn man sich die Funktionsweise des Kickstarters näher anschaut:
Die während der Plugin-Erzeugung gesammelten Informationen werden in der Datei doc/wizard_form.dat gespeichert. Aus dieser kleinen Datei lässt sich der gesamte vom Kickstarter erzeugte Code ableiten. Die bereits durch die Extension erzeugten Dateien werden vom Kickstarter nicht angefasst. (Die Dateien werden höchstens im weiteren Verlauf vom Kickstarter durch neue Exemplare ersetzt. )
Der Inhalt von 'wizard_form.dat' besteht aus einer einzigen langen Textzeile. Unsachgemäße Änderungen quittiert die Kickstarter Extension mit einem ignorieren der Datei.
Wenn man sich einmal die Mühe macht und hinter die Kulissen der Kickstarter Extension schaut, erkennt man, dass an der Datei nicht viel besonderes ist: Es handelt sich schlicht um eine serialisiertes PHP-Array, dass in eine Datei geschrieben wurde. Wenn man das Array deserialisiert kann man es aus PHP heraus beliebig anpassen. Wichtig ist nur, dass die Struktur gültig und durch Kickstarter erkennbar bleibt. Jede Datenbank-Tabelle wird durch einen eigenen Array-Eintrag repräsentiert. Dieser Eintrag widerum hat für jedes Tabellen-Feld ein eigenes Subarray. Durch Kopieren (und späterem Ändern des Feldnames) eines solchen Eintrages kann man leicht neue Felder (und sogar Datenbanken) in die Konfiguration einfügen. (Tipp: Eine zusätzliche Datenbank-Tabelle mit alle relevanten Datentypen im Plugin anlegen; dann hat man eine prima Kopiervorlage).
Jetzt noch ein kleines Code-Beispiel:
$content = file_get_contents("wizard_form.dat"); $content = unserialize($content); print_r($content); // an dieser Stelle kann man das Array beliebig verändern $content_ser = serialize($content); print $content_ser;
Source: 10-change_wizard_form.php.html
Kommentare