intro wiki download guestbook contact

Macros

Ok, wir können jetzt einen (den ersten) Artikel anzeigen, und beliebig viele weitere anlegen, aber noch nicht anzeigen, zumindest nicht dynamisch. Dieses Problem werden wir jetzt beheben.

Als erstes wollen wir jetzt mal eine Liste aller Artikeln anzeigen. Hierzu definieren wir uns ein Macro, welches diese Aufgabe übernimmt. Wir gehen in die Root Page und fügen folgende Funktion hinzu:


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) {
      $html .= "<li>" . $article->title . "</li>\n";
   }
    
   # der retournierte string wird dann im template angezeigt.
   return $html;
}

Soda... damit dieses Macro überhaupt verwendet wird, bauen wir es in unser Root index.tpl ein. Wir ändern also das /WebTek/app/Wiki/templates/Root/index.tpl wie folgt:


<h3>Webtek Wiki</h3>
<h4>Artikel:</h4>
<% articles prefix="<ul>" suffix="</ul>" %>
<br />
einen neuen artikel <a href="<% href %>">anlegen</a>

und die index Action in der Root Page ändern wir wieder nach:


sub index :Action :Public { }

Wenn wir jetzt auf http://localhost/wiki gehen, sollte uns eine Liste mit allen bis jetzt erstellen Artikeln aufgelistet werden. Gleich darunter gibt es die Möglichkeit einen neuen Artikel anzulegen.

zurück weiter