Ich bin endlich mal auf den JSON trip gekommen ;) Gibt es ja schon seit einiger Zeit, aber ich dachte mir immer .. “warum? xml is auch ok..”
Aber direkt in Javascript ein Daten-Objekt zu haben ist einfach göttlich. Vor allem in Verbindung mit Prototype 1.5.0 RC1. Bevor ich jetzt zum eigentlichen Thema des Posts komme möchte ich die Möglichkeit des Zusammenspiels von JSON, CakePHP und Prototype verdeutlichen.
Bei Cake gibt es ja die Model Funktionen findBy, findAll, read, etc… welche ein assoziatives Daten-Array aus der Datenbank liefert. Nun mit meinem JSON View wird das Array in JSON umgewandelt, die Daten als text/x-json geliefert und der notwendige X-JSON header für Prototype gesetzt. Super ist auch das jedes Modell ein eigenes Objekt mit Kindobjekten darstellt!
Um den View zu benutzen braucht man lediglich $this->view = “json”; in die Controller-Action zu schreiben und per $this->set die Daten bereitstellen. Super easy.. :-)
Mit Prototype 1.5.0 RC1 gibt es neue String Funktionen und die Template Klasse. Die Objekt Funktion .each( ) kommt hier zum Einsatz und macht es möglich mit nur wenigen Zeilen ein MySQL Result über AJAX in eine schicke HTML Liste zu verwandeln. JSON ist eben ein purer Datencontainer und genau das gibt uns die Freiheit und Geschwindigkeit die wir wollen.
Read the rest of this entry »
Über Ajax-Info.de bin ich auf qooxdoo aufmerksam geworden. Ich habe mir daraufhin das Demo “At-a-glance” angeschaut und muss sagen das im Vergleich zu Echo2 wohl eher dieses in Betracht ziehen würde. Das Interface und die Elemente scheinen klar und es hat nicht soviel “Schnick-Schnack”.
Was ich besonders gut fand, waren die Anforderungen an die Clients. Das ganze soll sogar noch mit einem IE5.5. funktionieren. Leider hat Safari mal wieder das nachsehen. Das Problem bei Safari und der derzeitigen Entwicklung im Netz ist, dass kaum einer einen Mac hat um seinen Code dort zu testen. Das ist zwar keine Entschuldigung, aber zumindest der Grund für den schwachen Safari-Support. Alle anderen bekannten Browser werden voll unterstütz. Jetzt fehlt nur noch die passende Idee ;-)
Ich weiss das viele gegen die Reinkarnation eines Windows-Desktops im Internet sind, aber dennoch gibt es mit Sicherheit einige Stellen wo solch ein Interface Sinn macht. Zum Beispiel für Intranet Anwendungen für den Kaufmännischen Bereich. FirmenWiki, Anbindung an dass CMS der Homepage, Dateiaustausch, Document-Management.. etc.
Ich denke das es auf jeden Fall mal einen Blick wert ist.
Und wenn nicht für das Frontend, dann aber fürs Backend. :)
Was meint ihr?
Sind solche Windows-Look-A-Likes demnächst öfters anzutrefen,
oder werden unsere Applikationen ihre alte Form behalten?
Seit drei Tagen beschäftige ich mich mit dem CakePHP Framework und kann es kaum erwarten damit das nächste Projekt zu beginnen. Nun damit ich auch zufrieden bin und mich heimisch fühle suche ich mir derzeit ein gutes Set an Helpern, Components und Scripts damit ich auch gleich loslegen kann wenn ich möchte.
Der AjaxHelper und JavascriptHelper ist zwar gut, aber leider produzieren diese Inline-Javascript was natürlich nicht so schön ist. Aber so wie ich im IRC Channel mitbekommen habe wird auch nach Verstärkung in diesem und anderen Sektoren gesucht.
Ich benutze derzeit in all meinen Projekten das Behaviour Javascript von Ben Nolan. Damit kann man über CSS Selektoren jedem beliebigem HTML Element ein Script anhängen. Das hat den Vorteil das man Javascript komplett auslagern kann und der Quelltext viel sauberer ist. Auch in der HTML Produktion selbst hat man viel mehr flexiibilität. Wenn man sich ein Set an Behaviour Regeln angelegt hat kann man jederzeit darauf zurückgreifen. Konventionen und dynamik ist die halbe Miete.
Ich habe heute dne Helper fertiggestellt und bin hellauf begeistert, denn er ist mir wirklich gelungen. Hier mal ein Beispiel wie schnell man damit eine Formularvalidierung mit Ajax realisieren kann:
-
// Einfaches Registrierungsformular. Man beachte die "class"
-
<form action="" method="post" name="register" id="register">
-
-
Benutzername:
-
Passwort:
-
E-Mail:
-
-
Homepage (optional):
-
-
<div id="loading" style="display:none">
-
-
<?php $html->submit('registrieren'); ?>
-
-
<div id="message">Keine Fehler</div>
-
</form>
-
-
// Optionen für AJAX
-
'update' => 'message',
-
'url' => '/users/register_ajax',
-
'method' => 'post',
-
'with' => "Form.serialize('register')",
-
'loading' => "Element.show('loading')",
-
'complete' => "Element.hide('loading');"
-
);
-
-
// und jetzt mein Helper
-
$behaviour->addAjaxRule('#login', 'onsubmit', $options);
Ich erstelle eine Ajax Regel (das heisst prototypes Ajax.updater wird verwendet).
- Parameter 1: Alle Input-Elemente mit der Klasse "required"...
- Parameter 2: ... sollen bei "onsubmit"..
- Parameter 3: .. per Ajax die Felder an users/register_ajax schicken und das Resultat in das DIV 'message' schreiben.
Mehr dazu wird auf meiner offiziellen Seite für diesen Helper erklärt
Während ich so durch diverese Foren surfte stolperte ich über Echo2 und dessen fantastische Demo. Also wenn jemand sagt das er eine Webapplikation geschrieben hat, sollte die auf jedenfall dieses Level haben um auch Applikation genannt werden zu dürfen. Das Look-and-Feel kommt einer Desktop Applikation schon sehr nahe. Absolut beeindruckend!
Das Ganze ist natürlich OpenSource, also kostenlos.
distributed under the terms of the Mozilla Public License (or, if preferred, the GNU LGPL License).
http://demo.nextapp.com/Demo/app
PS: Im Moment schreib ich ja so gut wie überhaupt nicht mehr, was aber daran liegt das ich gerade mich in das CakePHP MVC Framework eingegraben habe und nebenbei noch an ein paar anderen Projekten arbeite. (Keine Panik, kommt bald mehr und natürlich auch was zum angucken ;).
Okay, Freelancer bin ich nicht mehr, aber dennoch brauch ich sowas...
TaskFreak ist eine sehr schicke Todo Liste, geschrieben in PHP und mit AJAX gewürzt. Mit ihr kann man ganz leicht und übersichtlich Projekte pflegen und planen. Es ist nur indirekt eine Groupware, aber wie auf der Seite zu lesen ist hat der Entwickler pläne in diese Richtung (Filesharing soll kommen und kürzlich wurde erst eine Kommentarfunktion eingebaut). Mit TaskFreak bekommt man eine sehr übersichtlichen, auf das wesentliche reduzierten, Aufgabenplaner mit Mehrbenutzerfunktion (Eine Singleuser-Version wird auch angeboten).
In nur 5 Minuten lässt sich das Programm auf jedem beliebigen Server installieren. Man kann also sofort loslegen Projekte anzulegen und Aufgaben einzuteilen. Es gibt mehrere Benutzergruppen und man kann etliche Detaileinstellungen in der gut dokumentierten Konfigurationsdatei ändern. Das Interface ist desweiteren mehrsprachig ausgelegt. Allerdings muss man sich die deutsche Übersetzung zur Zeit noch aus dem Forum herunterladen, was aber auch nicht viel Zeit beansprucht. Was mir besonders gefällt ist, dass die Kategorien nicht angelegt werden müssen. Man kann in der Sprachdatei einfach irgendwas reinschreiben und sich somit in nur wenigen Minuten häuslich einrichten. Ich habe zum Beispiel "Meeting" und "Dokumente" mit "Features" und "Bugs" ersetzt.
Das Interface ist chique, sehr schlank und einfach zu bedienen. Wer also mit einem Kollegen ein Projekt plant und man etwas sucht um online zusammenzusarbeiten ist man bei mittelgrossen Projekten mit TaskFreak bestens bedient. Im übrigen gibt es auch einen RSS Feed zu jedem Aufgabenzetteln, womit man auch mit entsprechender Reader-Software das Geschehen mitverfolgen kann.
Daumen hoch. Ein kostenloses Top-Produkt. So muss das sein!
www.taskfreak.com
Heute habe ich geschlagene 5 Stunden damit verbracht auf meinem Zweitrechner CVSNT zu installieren. Ich kann nach all dem Frust mit NTFS und XP nur noch sagen das es sich absolut gelohnt hat! Die Möglichkeit direkt im Explorer zu sehen welche Dateien verändert wurden, mit rechter Maustaste die Veränderungen nachzuvollziehen und die Gewissheit zu haben Fehler rückgängig zu machen ist schlichtweg genial.
Dank TortoiseCVS kann man sich das geschreibsel in der Shell bzw. DosBox sparen und direkt ins CVS spielen, hinzufügen, kommentieren und auschecken - und das alles über das Kontextmenü. Das Programm ermöglicht auch das problemlose zusammenführen und vergleichen mit externen Tools wie ExamDiff. Um CVSNT nun letztendlich zum laufen zu bringen, bin ich dieser Anleitung gefolgt.
Jetzt muss ich nur noch ein paar Euro für die PHPEdit Erweiterung "CVS & SVN" zusammenkratzen und die Entwicklungsumgebung ist perfekt. Langsam frage ich mich warum ich es mir all die Jahre so schwer gemacht habe...
Links zum Thema:
CVSNT download
CVSNT step-by-step
TortoiseCVS homepage
PHPEdit IDE
Irgendwie brauchte ich mal etwas besseres zum programmieren. Daher habe ich mich ein wenig nach IDEs für PHP umgeschaut und stiess dabei auf PHPEdit. Leider handelte es sich hier nicht um eine Freeware also habe ich mich erstmal mit der Testversion begnügt da mir einige Features wie "Code Beautifier", "Debugger", "Automatic Syntax checker" und der "Code Browser" sehr zusagten. Ich arbeite aktuell an meiner FMOD Audio Klasse und bei den ganzen Methoden verliert man schonmal den Überblick. Mein alter Editor war im Vergleich zu PHPEdit eher eine Notepad als alles andere, nur hat alles gute seinen Preis. Die aktuelle Version 2.0+ kostet 89 Euro ohne Erweiterungen - was immernoch günstig ist - aber leider für meine Verhältnisse etwas zu viel. Ich war wirklich am hin und her überlegen, aber ich programmier ja keine kommerziellen Produkte und genau für diesen Fall fand ich einen netten Hinweis:
Auf der Suche nach einer deutschen Übersetzung stieß ich auf die Info, dass Waterproof Software unter gewissen Vorraussetzungen eine vollwertige PHPEdit Lizenz kostenlos zur Verfügung stellt. Man muss jedoch höflich fragen und erklären was man denn so mit ihrem Produkt vor hat. Ich habe also kurz umrissen was ich den ganzen Tag mache, für wen und in welchen Bereichen und ein paar Stunden später kam auch schon die Antwort das meine Anfrage akzeptiert wurde.
Ich finde sowas absolut klasse und möchte mich an dieser Stelle bei Waterproof bedanken. Es schön zu wissen das es auch noch Firmen gibt die neben dem Geschäftsmodell auch noch ein Herz für Open Source Programmierer haben.
Ich habe vor einiger Zeit begonnen eine Wiki zu starten und habe nun schon einiges an nützlichen Informationen rund um PHP und was ich so veröffentlicht habe hinterlegt. Mithilfe, Korrekturen und Diskussionen zu einzelnen Seiten ist natürlich gerne gesehen, wenn auch nicht zwingend. Ich finde die Form einer Wiki schöner als im Blog und die Wiki macht mir das anfertigen von Dokumentationen leichter. Als Doku sollte das Wiki in erster Linie auch gesehen werden. Allerdings führe ich die Wiki komplett in englisch. Es gibt nichts schlimmeres als eien Dokumentation in einer eher unpopulären, wenn auch eigenen, Sprache zu veröffentlichen. Früher oder später kommt immer jemand aus nicht-deutschen Gefilden und fragt: "What??!". Also erspare ich mir auf diesem Wege die doppelte Arbeit für DE und EN und belasse es bei der Weltsprache "englisch".
Auf den Seiten findet ihr derzeit zum grössten Teil Scripte und Klassen rund um WinBinder. Im übrigen noch die WikiVersionen meiner Plugin Seiten von Wordpress und der Beginn einer Doku zu BloxPress.
Da meine Zeit in den letzten Wochen recht knapp war und ich so gut wie nichts mehr hier oder sonst wo schreiben konnte, besitzen einige Kategorien der Wiki noch nicht ganz die angedachte Fülle. Ich hoffe das für den einen oder anderen etwas dabei ist und freue mich wie immer über jeglichen Kommentar.
Heute morgen, oder war es gestern abend.., kam ein Kommentar zum Auto-Glossary Plugin worin ein kleiner Fehler aufzeigt wurde. Daher habe ich auf die schnelle das Plugin kurzer Hand umgeschrieben. Doppelte Einträge gehören nun der Vergangenheit an. Es wird jedes Acronym, obgleich mehrmals in einem Beitrag genannt, nur einmal in der Definitionsliste angezeigt.
Die Leute von Particletree haben sich das beliebte Lightbox Script geschnappt und um einige Funktionen erweitert. Neben Bildern können nun Texte und sonstiger HTML Kram in den gleichen Form angezeigt werden wie zuvor Bilder. Auf der Demoseite ist beispielsweise ein Kommentarformular innerhalb einer Lightbox zu sehen. Ich persönliche wüsste jetzt nicht ob ich etwas in dieser Art auch machen würde, da es durchaus noch die einen oder anderen Kompatibilitätsschwächen gibt, aber grundsätzlich sicherlich eine nette Angelegenheit.

