|
NAMEJifty::Manual::Tutorial_de - Einführung in JiftyBESCHREIBUNGDieses Tutorial sollte Ihnen alles Wichtige mit auf den Weg geben, um erfolgreich eine erste Applikation mit Jifty zu bauen.WIE?AnforderungenHier steht, was Sie installiert haben sollten -- wenigstens wenn wir es schreiben.Jifty installierenNicht wirklich eine große Sache. Wir glauben stark an das DRY (Don't Repeat Yourself -- Keine Wiederholungen) Prinzip. Das ist einer der großen Gründe, warum wir Perl und das CPAN lieben. Jifty benutzt viel Code aus dem CPAN. Bei der letzten Zählung waren es wenigstens 60 Pakete. Die meisten Module sind auf vielen Plattformen einsetzbare nur in Perl geschriebene Module und sollten ohne Probleme funktionieren.Wir haben einige Anstrengungen unternommen, damit Sie nicht Ihre Zeit damit verbringen müssen, Abhängigkeiten aufzulösen, nur um Jifty zu installieren. Das Jifty Installationsprogramm stellt fest, welche Module Ihr System benötigt und lädt bei Bedarf die erforderlichen Module nach. Also machen Sie sich keine Sorgen, Sie werden immer gefragt, bevor Änderungen vorgenommen werden. Auf den meisten Systemen wird Perl mit dem CPAN Modul ausgeliefert, womit die Jifty Installation einfach wird: # perl -MCPAN -e'install Jifty' # auf Unix-ähnlichen Systemen # perl -MCPAN -e"install Jifty" # auf Win32 Systemen Falls Sie lieber eine ".tar.gz" Datei von Jifty herunterladen wollen, können Sie diese wie folgt installieren: # tar xzvf jifty-<version>.tgz # cd jifty-<version> # perl Makefile.PL # make # make test # make install Falls die Tests nicht erfolgreich verlaufen, wäre eine Rückmeldung an uns interessannt. Bitte melden Sie sich bei der Liste "jifty-devel@lists.jifty.org" und melden den Fehler. (Oder sehen Sie nach unter "HILFE" weiter unten wo beschrieben ist, wie Sie sich uns anschließen können.) Erstellung eines RumpfesWenn Sie Jifty erfolgreich installiert haben, können Sie Ihre erste Applikation erstellen.Jifty ist geplantermaßen Minimalistisch. Wenn Sie eine Applikation erstellen möchten, kopieren Sie einfach das jifty Kommandozeilenprogramm in das bin/ Unterverzeichnis in Ihr Applikations-Verzeichnis. OK, es ist natürlich hilfreich, ein wenig strukturierter vorzugehen. Jifty wird mit Werkzeugen geliefert, die Ihnen helfen, die notwendigen Strukturen anzulegen. Wechseln Sie in ein sicheres Verzeichnis, in dem Sie Ihre Applikation anlegen möchten (Jifty erstellt das notwendige Unterverzeichnis für Sie). # jifty app --name MyWeblog Can't guess application root from current path (/tmp) or bin path (/usr/bin) Creating new application MyWeblog Creating directory lib Creating directory lib/MyWeblog Creating directory bin Creating directory etc Creating directory doc Creating directory log Creating directory var Creating directory var/mason Creating directory share Creating directory share/po Creating directory share/web Creating directory share/web/templates Creating directory share/web/static Creating directory lib/MyWeblog/Model Creating directory lib/MyWeblog/Action Creating directory t Creating configuration file MyWeblog/etc/config.yml Sehen wir uns die einzelnen Verzeichnisse genauer an.
Erstellung eines DatenmodellsWie Sie sich aus der Tatsache, daß diese Tutorial-Applikation MyWeblog heißt, vorstellen können, ist das hier vorgestellte Beispiel ein einfaches Weblog. Künftige Tutorials werden Authentifizierung, Kommentare sowie RSS und Atom Feeds beschreiben.Posts Weblogs konzentrieren sich rund um Posts, daher ist es keine Überraschung, daß unser erstes Model, das wir erzeugen werden, ein "Post" ist. # cd MyWeblog # jifty model --name Post Writing file /tmp/MyWeblog/t/00-model-Post.t Writing file /tmp/MyWeblog/lib/MyWeblog/Model/Post.pm Großartig! Nun haben Sie ein Post Model (Nur, daß es im Augenblick noch nichts modelliert). Öffnen Sie lib/MyWeblog/Model/Post.pm in Ihrem Lieblings-Editor. Sie sollten etwas sehen wie: use strict; use warnings; package MyWeblog::Model::Post; use Jifty::DBI::Schema; use MyWeblog::Record schema { }; # Your model-specific methods go here. 1; Nun ist es an der Zeit, der Model Klasse etwas über Posts zu erzählen. Fangen wir damit an, einem Post einen "body" (Rumpf) und einen "title" (Titel) zu geben. (In einem kommenden Tutorial wird die Applikation voll "Folksonomy"-tauglich werden, was wir durch Anfügen einer "category" (Kategorie) und Erweitern der "category" zu einer "tags" (Indexierung, Etikett) Tabelle erreichen könnten.) Editieren Sie unter dieser Zeile: use MyWeblog::Record schema { Fügen Sie diese Zeilen an: column title => type is 'text', label is 'Title', default is 'Ohne Titel'; column body => type is 'text', label is 'Content', render_as 'Textarea'; Abspeichern bitte nicht vergessen. Erstellung der DatenbankGut. Nun ist es an der Zeit, die Datenbank zu erstellen. Standardgemäß benutzt Jifty eine SQLite Datenbank. Wenn Sie lieber PostgreSQL oder MySQL verwenden möchten, dann können Sie Anpassungen an etc/jifty.yml vornehmen. (Sehen Sie dazu in "Jifty::Config" nach, um mehr darüber zu erfahren.)# jifty schema --setup INFO - Generating SQL for application MyWeblog... INFO - Using MyWeblog::Model::Post INFO - Using Jifty::Model::Session INFO - Using Jifty::Model::Metadata INFO - Using Jifty::Model::Schema INFO - Set up version v0.0.1, jifty version 0.607280 Start des Jifty Application ServerOK. Nun haben Sie eine lauffähige, aber noch einfache Applikation. Starten Sie den Webserver und schauen Sie sich um. Werfen Sie einen Blick auf die AJAX gesteuerte Administrations-Umgebung, die Online Dokumentation und das Pony.# ./bin/jifty server INFO - You can connect to your server at http://localhost:8888/ Starten Sie diese Kommandofolge immer im Hauptverzeichnis Ihrer Jifty Applikation, andernfalls werden etliche Fehlermeldungen die Folge sein. Auf den meisten Plattformen wird ein einfaches "jifty server" Kommando ebenfalls funktionieren. :) Erstellung der BenutzeroberflächeDie Administrations-Umgebung gibt Ihnen zwar alles, was Sie brauchen, um mit den Daten der Applikation zu arbeiten, ist aber noch lange kein Weblog.Erstellung von Posts Erstellen Sie eine Seite zum Posten eines neuen Weblog Eintrages: # cd share/web/templates/ Erstellen Sie eine neue Datei namens post in Ihrem Editor. Stellen Sie sicher, daß diese so aussieht: <%init> my $action = Jifty->web->new_action(class => 'CreatePost'); </%init> <&| /_elements/wrapper, title => "Post Eintrag Erstellen" &> <% Jifty->web->form->start() %> <% Jifty->web->form->next_page( url => '/') %> <% $action->form_field('title') %> <% $action->form_field('body') %> <% Jifty->web->form->submit( label => 'Post' ) %> <% Jifty->web->form->end() %> </&> Ja, dies ist eine Template Datei in HTML::Mason Syntax. Wenn Sie noch nicht genug über Mason wissen, empfehlen wir dessen Online Dokumentation für mehr Details. Mason Templates sollten jeweils in der ersten Spalte der Datei beginnen. Besonders wichtig sind die "<%init>" und "</%init>" Blöcke, die unbedingt lingsbündig geschrieben werden müssen. Anzeige Es ist relativ einfach, eine einfache Auflistung von Einträgen zu erhalten und ein wenig aufwändiger, eine AJAX gesteuerte seitenweise Darstellung zu bekommen. Hier beschreiben wir, wie man beides macht; Sie können entscheiden, welches Ihnen besser gefällt. (Falls Sie per Kopieren und Einfügen den Beispiel-Code von unten übertragen, stellen Sie sicher, daß er in einer Spalte erscheint, ansonsten wird es nicht funktionieren.) Der schnelle Weg Erstellen Sie eine neue Datei index.html im share/web/templates Verzeichnis in Ihrem Editor. (Der Webserver wird die URL "/index.html" als die Standard Seite für Ihre Applikation annehmen.) Befüllen Sie die Datei wie folgt: <%init> my $posts = MyWeblog::Model::PostCollection->new(); $posts->unlimit(); </%init> <&| /_elements/wrapper, title => Jifty->config->framework('ApplicationName') &> <dl> % while (my $post = $posts->next) { <dt><% $post->title %></dt> <dd><% $post->body %></dd> % } </dl> </&> (Entfernen Sie die Leerzeichen am Zeilenanfang!) Die aufwändige Art, mit der Sie viele coole Dinge bekommen Die aufwändige Art benutzt eines von Jifty's fortgeschrittenen Eigenschaften: PageRegions (Seitenbereiche). Diese Bereiche erlauben Ihrer Applikation einzelne Bestandteile einer Seite unabhängig voneinander neu zu laden. Das funktioniert sowohl unter Benutzung von AJAX auf modernen Browsern, als auch mit GET Requests auf nicht JavaScript fähigen Browsern wie "lynx", "w3m" oder dem Browser Ihres Handys. Der Nachteil dieser Methode ist, daß jeder Seiten-Bereich in einer eigenen Fragment Datei vorliegen muß. Die aufwändige Art beginnt zunächst genauso wie der schnelle Weg. Erstellen Sie eine neue Datei mit dem Namen share/web/templates/index.html in Ihrem Editor. Befüllen Sie die Datei mit: <&| /_elements/wrapper, title => Jifty->config->framework('ApplicationName') &> <% Jifty->web->region(name => "myweblog-posts", path => "/fragments/page_of_posts") %> </&> Wenn Sie mitgedacht haben, dann haben Sie bestimmt schon erraten, daß Sie als nächstes eine Datei share/web/templates/fragments/page_of_posts mit dem nachfolgenden Inhalt anlegen dürfen: <%args> $page => 1 </%args> <%init> my $posts = MyWeblog::Model::PostCollection->new(); $posts->unlimit(); $posts->set_page_info( current_page => $page, per_page => 15 ); $m->out("Keine Einträge.") if ($posts->pager->total_entries == 0); </%init> % if ($posts->pager->last_page > 1) { Seite <% $page %> von <% $posts->pager->last_page %> % } <dl class="list"> % while (my $post = $posts->next) { <dt><% $post->title %></dt> <dd><% $post->body %></dd> % } </dl> % if ($posts->pager->previous_page) { <% Jifty->web->link( label => "vorherige Seite", onclick => { args => { page => $posts->pager->previous_page } } ) %> % } % if ($posts->pager->next_page) { <% Jifty->web->link( label => "nächste Seite", onclick => { args => { page => $posts->pager->next_page } } ) %> % } Nun starten Sie den Jifty Webserver erneut. Erstellen Sie einen Post indem Sie die URL "/post" auf Ihrem Webserver anfahren. Erstellen Sie wenigstens 15 Einträge und beobachten Sie dabei, wie Jifty Ihnen die AJAX Knöpfe "vorherige Seite" und "nächste Seite" erstellt. Schalten Sie JavaScript aus oder verwenden Sie lynx und beobachten Sie wie AJAX automatisch zurückfällt zum vollständigen Laden der jeweils neuen Seite. Alles umsonst. Danke, Jifty! Hey, woher kam diese Klasse? Wenn Sie genau aufgepasst haben, dann haben Sie sich sicher gefragt, woher die "MyWeblog::Model::PostCollection" Klasse kam. Es gibt keine Datei mit dem Namen PostCollection.pm. Jifty setzt "Jifty::ClassLoader" ein, um einige Klassen für Sie zu erstellen. Selbstverständlich könnten Sie das ebenfalls tun. Lesen Sie unter Jifty::ClassLoader mehr darüber. NavigationNatürlich ist es unschön, sich die URL der Post Seite merken zu müssen. Um einen Post Eintrag im Menü zu bekommen, müssen Sie die Standard Menüs überschreiben.Jifty's Standard Menüs werden durch _elements/nav in den Standard Applikations Templates (die mit dem Pony) erzeugt. Im Augenblick bleibt Ihnen nichts anderes übrig, als _elements/nav zu überschreiben. (Wir arbeiten an Methoden, dies besser zu gestalten.) Legen Sie innerhalb des Verzeichnisses share/web/templates Ihrer Applikation ein Verzeichnis _elements an. mkdir share/web/templates/_elements Sie möchten bestimmt mit den normalen Jifty Templates arbeiten, also müssen wir nur den "$top->child( Post... )" Teil anfügen. cat $(perl -MJifty::Util -e 'print Jifty::Util->share_root' \ )/web/templates/_elements/nav > share/web/templates/_elements/nav Ansonsten können Sie innerhalb _elements auch gerne eine neue Datei namens "nav" anlegen, die so aussehen könnte: <%init> my $top = Jifty->web->navigation; $top->child( Home => url => "/"); $top->child( Post => url => "/post", label => "Neuen Eintrag"); </%init> Mehr Information über das Menü System können Sie der Dokumentation unter Jifty::Web::Menu entnehmen. Das war'sDas war alles, das Sie benötigen, um anzufangen, Jifty Applikationen zu erstellen. Wir arbeiten hart daran, Jifty noch einfacher einsetzbar zu machen und die dicken Brocken dieses Tutorials so bald als möglich zu vereinfachen.Bitte nehmen Sie auf der "jifty-devel" Mailing Liste Kontakt mit uns auf, wenn Sie Fragen haben, wie man Jifty benutzt oder was Sie schwierig zu benutzen finden. Dies ist eine Mailing Liste in englischer Sprache. HILFEOnline HilfeDas "jifty" Kommandozeilen Programm besitzt eine eingebaute Hilfe Funktion.jifty help jifty help <kommando> Wenn Ihr Server mit eingeschaltetem Administrations-Modus arbeitet (die Konfigurations-Einstellung "AdminMode" fehlt oder sie ist ungleich Null), dann können Sie den "Online Docs" Link in Ihrem Browser benutzen, um eine ausführliche modulweise Dokumentation zu Jifty zu erhalten. Beitreten der Mailing Liste"jifty-devel@lists.jifty.org" ist der Ort, an dem wir besprechen, wie wir Jifty erstellen, was es an Problemen oder Vorschlägen gibt und so weiter.Um der Liste beizutreten, senden Sie eine Mail an "jifty-devel-subscribe@lists.jifty.org". Bitte beachten Sie, daß die Kommunikation in dieser Liste in englischer Sprache geführt wird. Unser WikiWir haben ein Wiki! (Tatsächlich ist das Wiki die hauptsächliche Website von Jifty).Besuchen Sie uns unter <http://jifty.org/>, lesen Sie und tragen Sie etwas bei! Das Wiki wird von Wifty betrieben, einem Wiki das auf Jifty basiert. Sein Code ist frei verfügbar in unserem Subversion Repository. FEHLER MELDENIn dieser frühen Phase von Jifty melden Sie bitte alle Fehler, die Ihnen auffallen, an "jifty-devel@lists.jifty.org".KÜNFTIGE TUTORIALSKünftige Tutorials werden enthalten:
Visit the GSP FreeBSD Man Page Interface. |