Seiten

Freitag, 28. Januar 2011

Java 0.0.1 28.1.2011

Heute war der erste Tag für die Entwicklung unseres eMail-Support-Surveillance-Tools. Einen Großteil des Tages verbrachte ich zusammen mit meinem Ausbilder Sebastian damit, die wunderbare Entwicklungsumgebung Eclipse Helios zu installieren und gangbar zu machen. Probleme bereitete dabei das Visual Editor Plugin.

Wer schon einmal eine GUI in Java programmiert hat ( oder es zumindest wie ich versuchte ) der wird feststellen, dass es eine Menge schreibarbeit ist, die wirklich keinen spass macht (mir jedenfalls). Zusätzlich zu der erzeugten Textwüste auf dem Bildschirm gibt es erst ein Oberflächen Feedback, wenn man das ganze Gerät fehlerfei gecodet hat und ausführt.
Abhilfe dabei gibt das Visual Editor Plugin für Eclipse. Es ermöglicht eine Darstellung der Maske in einem Teil des Editors und zeigt darin die verwendeten Elemente und deren Position an. Ich finde das fast unverzichtbar. Da ich inzwischen auch noch den Luxus von Visual Studio gewöhnt bin, wo man die Elemente passgenau einsetzen und einfach verschieben kann ( selbstverständlich NOCH einfacher, komfortabler und sicherer als in Helios ) könnte ich mich wohl nur mit großen Überwindungen zum reinen GUI-Coding durchkämpfen.

Nunja, nach einiger Zeit des Probierens ( eine ältere Version des Visual-Editors brachte den Durchbruch ) konnten wir dann mit der Implementierung beginnen.
Zuerst wurde die Maske erzeugt und die Datenbankanbindung geschrieben. Ich habe mich dann den Abend lang damit befasst einen Timer zu schreiben, was sich doch als schwieriger darstellte und man sollte sich ein wenig mit Threading auskennen. Als der dann auch lief musste ich feststellen, dass ich nicht weiß, wie ich Attribute der GUI zur Laufzeit ändern kann...   das muss jetzt ein bisschen warten.

Donnerstag, 27. Januar 2011

OXID "Modulentwicklung" IV - 26.1.2011

Heute habe ich mich den ganzen Tag mit der Entwicklung unserer Voucher - Gutscheintools befasst.

Ich habe immer noch keine Ahnung, wie der shop seinen Parametertransfer vornimmt. Es funktioniert im Moment nur die Ausgabe der voucherdaten.
Einmal Festgehalten: Es wurden bis jetzt 3 Klassen mit den zugehörigen .tpl Dateien geschrieben.
Ersteinmal eine voucher.php und eine voucher.tpl. Diese Klassen dienen legilich als Basis für das Modul. Sie bekommen einen Eintrag in die Menu.xml um das Modul anzeigen zu können. Die Syntax muss natürlich an die Vorgaben passen. Wir erzeugten hierbei keine neue Superkategorie, sondern nur einen weiteren Eintrag bei den Shopsettings (deutsch: Shopeinstellungen).

id="mxvouchers" cl="voucherserie" 
  
die id kann frei vergeben werden, dient der Orientierung und wird später durch die Smarty-Engine in der entsprechenden Sprache ausgegeben.

list="voucherserie_list"

Wird an den oben angegebene Teil angefügt und bildet damit den  Eintrag in der menu.xml.

Alle Menüpunkte rufen ein Frameset auf, dass die Anzeige in zwei Teile teilt. Im oberen teil wird normalerweise die Liste angezeit: list="voucherserie_list", im unteren Teil die eigentliche Editierungsansicht.

Die hier angezeigte Klasse bzw Template wird dann in Menu.xml in der zeile darunter unter dem Keyword
angezeigt.
id="tbclvouchercodes_main ist dann die Bezeichnung des Bottom Frame, die ebenfalls von Smarty in der Entsprechenden Sprache angepasst ausgegeben wird.

PS: Textfarbgebung  in diesem Editor ist ein Alptraum!

Montag, 24. Januar 2011

Oxid Entwicklung 24-1-2011

Heute war ein sehr erfolgreicher Montag, was die Weiterentwicklung des Oxid Moduls angeht. Meinem Ausbilder ist bei der Struktur des menu.xml, welches die Einträge des Hauptmenüs festlegt aufgefallen, dass für jeden Unterpunkt nicht nur eine .tpl und .php Datei benötigt wird (zusätzlich zum Eintrag des Menüpunktes) sondern auch eine Hauptklasse, welche den gesamten Eintrag strukturiert.

Jeder Eintrag besteht somit aus mindestens 3 Klassen:
  • eine Basisklasse, welche den Eintrag Groß überschreibt und die Form der beiden Später angezeigten Frames vorgibt ( jede Seite Besteht aus einem Top - und einem Bottom - Frame )
  • eine List - Klasse, welche im oberen Frame angezeigt wird und welche die Navigationsstruktur und Suchfunktionen enthält
  • dem Bottom - Frame, in dem die eigentlichen Bearbeitungen vorgenommen werden.
Es war tatsächlich so, dass alle diese Strukturelemente vorhanden sein müssen, damit die vorgefertigte JavaScript - Methode welche einen Alert ausgibt (wollen Sie diesen Eintrag wirklich löschen...) aufgerufen wird. Zu meinem Glück konnte ich durch das einfache Löschen der überladenen Delete-Methode dafür sorgen, dass einzelne Zeilen aus der Datenbank gelöscht werden.
Das nächste Hauptziel ist es, eine Methode zu schreiben, welche die Daten der Zeile vor dem Löschen in eine weitere Tabelle schreibt. Dies ist evtl. leichter als gedacht, da sich die Notwendigen Informationen bereits in den Template-Variablem befinden und einfach nur zurückgeschrieben werden müssen.

Auf gutes Gelingen hoffe ich natürlich weiterhin.

Donnerstag, 20. Januar 2011

OXID "Modulentwicklung" III

So der zweite Tag in Folge ohne nennenswerte Fortschritte. In der Zeile hinter den erzeugten Einträgen aus der Datenbank erscheint ein kleines X, dass beim  Mouseover rot aufleuchtet und verlinkt ist. Beim Anklicken wird die JaveScript methode deleteThis() ausgeführt. Diese benötigt scheinbar eine sDeleteMessage aus dem Pfad
top.basefrm.list.sDeleteMessage oder aus top.basefrm.edit.sDeleteMessage. Wieso weiß ich nicht.

Ich bin nun davon ausgegangen, dass sich die scheinbar im Gegensatz zu oxid.admin. ... nirgendwo definierte
basefrm auf den in jedem Backendfenster enthaltenen unteren Frame bezieht. Da die Methode nicht weiter ausgeführt wird, wenn das beim Regulären Ablauf aufgerufene Popup Fenster nicht mit ja bestätigt wird und die einzige Möglichkeit dies zu umgehen ein Umschreiben der script datei wäre, was nicht in Frage kommt, muss unbedingt so ein blöder Bottom Frame eingeführt werden. Allerdings ist es mit heute auf Biegen und Brechen nicht gelungen einen vernünftig einzufügen. Ich habe nicht den leisesten Schimmer, was ich falsch gemacht habe. Aber wie ich mich kenne war es etwas, woran ich hätte denken können, es aber nicht getan habe.

Das nächste Ziel wird also sein auf irgend eine weise diese meldung zustande kommen zu lassen, damit ich mich endlich der Parameterübergabe und der zugehörigen Löschfunktion zuwenden kann. Es ist wirklich kaum zu fassen wie schwer mir momentan ein fortkommen in diesem Problem fällt.

Mittwoch, 19. Januar 2011

Oxid Modulentwicklung II 19-1-2010

Heute ging die Modulentwicklung in die zweite Runde.

Ausgehend von dem Gutscheinserieneintrag im Backend der Community - Edition und dem damit verbundenen Template-Code habe ich heute eine Erweiterung fabriziert, welche den Code übernimmt und statt der Voucherseries- direkt die Voucher-Tabelle abfragt.

Die zugehörige Klasse, bzw. das damit verbundene php Dokument war aufgrund seiner einfachen Struktur, welche direkt die in der Template vorhandenen vergebenen Attribute zur SQL-Abfrage nutzt dazu in der Lage die in der Table vorhandenen Gutscheine anzuzeigen.
Aus demselben  Grund funktioniert auch die bereits vorhandene Suchfunktion.

Um überhaupt auf die Idee zu kommen, dass das funktionieren könnte musste aber der Code etwa eineinhalb Stunden durchwühlt werden. Erkundet wurde dabei die Parameterübergabe zwischen Template und den operierenden Klassen. Der Shop ist nach dem Model-View-Controller-Prinzip aufgebaut, die Objekte, Modelle und die Darstellung für den Benutzer oder auch Administrator streng trennt.

Die nächsten Schritte sind nun die ID's der einzelnen Gutscheine entsprechend der zugehörigen Serie aufzulösen und einzelne Einträge gemäß des Planes zeilenweise in eine art Papierkorb-Tabelle zu verschieben und anschließend zu löschen.

Wenn die Fortschritte weiter so gut sind wie heute kann es sogar möglich sein.
Versuche die bestehende Mathode zur Löschung einzelner Einträge zu nutzen war übrigens bis jetzt nicht erfolgreich.

Dienstag, 18. Januar 2011

Gutscheine und OXID 18-1-2011

Heute bin ich nach der Schule noch kurz zur Arbeit gekommen, um mich weiter mit dem Oxid - Skelett zu beschäftigen. Ich habe also die mir bekannten Templates (.tpl) und .php - Dateien geöffnet und wieder zwischen dem ganzen SMARTY Geschreibsel, dem HTML - Code und nicht zu wenig Java Script versucht zu verstehen, wie der Shop mit seiner Template interagiert.
Nachdem ich wieder einige kleine Änderungen zu testzwecken vorgenommen habe konnte ich einige Dinge feststellen. Es gibt wohl für so ziemlich jeden denkbaren Parameter ein oxid - Smarty Kürzel. Ich weiß immer noch nicht, was $edit-> tut, stehen da einfach nur rudimentär werte drin? Weiterhin keine Ahnung, wie man Methoden aufruft, oder die Klassen des Shops dazu bringt irgendetwas zu tun. Die schiere Menge an Java Script lässt mich annehmen, dass es nicht nur der Darstellung dient.
Im Moment habe ich keine Ahnung, wo ich Anfangen soll, weil ich nicht weiß, was ich nicht weiß. Abgesehen davon, dass ich kaum Kenntnisse von Java Script habe und nicht weiß, wofür es außer zur Darstellung sonst noch genutzt wird.

Ich werde mich wohl Morgen mit dem Oxid - Forum beschäftigen. Vielleicht stehen da ja ein paar hilfreiche Informationen drin. Auch die Tutorials werde ich mir noch einmal ansehen, aber ich erinnere mich daran, dass ich mit den Infos nicht allzu viel anfangen konnte.
Dann habe ich heute noch ein paar Gutscheine verschickt.
Das war mein Tag

Montag, 17. Januar 2011

OXID Entwicklung 17-1-2010

Also gut. Nachdem ich heute unser Wochemeeting abgetippt habe verbrachte ich den restlichen Vormittag damit mein Auswertungstool weiter zu vervollständigen. Ich habe noch eine Jahresabfrage für 2012 hinzugefügt um mein nettes kleines Werkzeug bis 2015 gangbar zu machen. Das einzige, was jetzt noch zu tun bleibt, ist regelmäßig die im Shop geschriebenen Daten in die Lokale Workbench zu importieren, damit das Tool diese auswerten kann.

Die Implementierung der von meinem Kollegen Matthias gewünschten Funktion, um eine nach Sprachen getrennte Auswertung zu machen kann ich im Moment aus Zeitgründen nicht ausführen, da ich mich nun ersteinmal um das seit längerem geplante Gutschein - Modul für OXID zu schreiben. - Oder es zumindest zu versuchen.

Die Anforderungen sind eigentlich nicht einmal so hoch:
Die im Shop angelegten Gutscheine sollen nach Gutscheincode gesucht werden können und Gutscheine sollen hier auch entwertet werden können. Allerdings muss man dazu erst einmal wissen, wie das System funktioniert und wie man Daten von den Templatedateien die für die Darstellung zuständig sind übergeben kann.
Die Mysteriöse changeFnc() könnte dabei eine Rolle Spielen? - oder auch nicht.
Die bereits zu Testzwecken angelegten kleinen Erweiterungen und geerbten Klassen werden mich hoffentlich in den nächsten Tagen dazu bringen dieses Geheimnis zu lösen, damit ich mich um die Implementierung kümmern kann.