intro wiki download guestbook contact

Finish

Zum Abschluß wollen wir noch die Liste auf der Übersichtsseite mit den Artikeln verlinken und eine Möglichkeit anbieten, die Artikel zu editieren oder auch löschen.

Überischtsseite

gut wir verändern noch einmal das articles Macro in der Root Page:


sub articles :Macro {
   my $self = shift;

   # liefert eine list-reference mit allen artikeln aus der datenbank zurück
   my $articles = Wiki::Model::Article->find;

   # jetzt erstellen wir die liste
   my $html = "";
   foreach my $article (@$articles) {
      my $page = Wiki::Page::Article->new_for_article($article);
      my $title = $page->link("href" => $self->href, "display" => $article->title);
      $html .= "<li>$title</li>\n";
   }
   
   # der retournierte string wird dann im template angezeigt.
   return $html;
}

Was wurde hier geändert. Also wir zeigen jetzt nicht mehr die Titel als Text an, sondern verlinken jeden Titel mit dem dazugehörigen Artikel. So... gleich mal ausprobieren http://localhost/wiki .

Textile Funktionaliät einbaun

Als nächstes wollen wir die Wiki Funktionalität im Artikel-Text einbaun. Dazu ändern wir einfach nur das index.tpl vom Article wie folgt:


<h4><% title %></h4>
<% text | textile %>

und schon kann man im Text die Textile Formatierung verwenden.

Artikel editieren und löschen

So, zum Abschluss bauen wir noch eine edit und delete Action wie folgt:


sub edit :Action {
   my $self = shift;

   if (request->is_post) {
      $self->article->text(request->param('text'));
      $self->article->modify_time(date('now'));
      $self->article->save;
      response->message('Artikel ge&auml;ndert');
      response->redirect($self->href);
   }
}

sub delete :Action {
   my $self = shift;

   $self->article->delete;
   response->redirect($self->parent->href);
}

So das wars mal in Page/Article.pm. Jetzt kommt noch das edit.tpl. Für delete brauchen wir kein Template, da ja auch nix angezeigt wird.
Wir erstellen also /Webtek/app/Wiki/templates/Article/edit.tpl:


<h4>Artikel <i><% title %></i> bearbeiten</h4>
<% form %>
   text:<br />
   <% textarea cols="70" rows="20" model="article" name="text" %><br />
   <% input type="submit" name="cancel" value="Abbrechen" %>
   <% input type="submit" name="create" value="Speichern" %>
<% form_end %>

Dann ändern wir noch das index.tpl vom Article und verlinken auf die edit und delete Action.


<h4><% title %></h4>
<% text | textile %>
<hr />
Artikel geändert/erstellt am <% create_time %> / <% modify_time %><br />
Artikel <% link href="<% href action="edit" %>" display="ändern" %>,
Artikel <% link href="<% href action="delete" %>" display="löschen" %>

So... und jetzt sind wir fertig. Ich hoffe ich habs halbwegs verständlich erklärt, und es hat euch Spaß gemacht. Etwaige Anregungen bitte an mich.

max ( max@xaok.org )

zurück