Ja, ich gebe es zu, ich mag News-Portale mit Voting-Funktionen wie digg, yigg oder Ähnliche. Im deutschsprachigen Raum, und in dieser Sprache schreibe ich nun mal, sieht es in diesem Bereich aber eher mau aus. Einen echten Ableger von digg wird es hierzulande wohl nicht geben und den anderen Diensten ist der Durchbruch noch nicht recht gelungen.
Ein wie ich finde interessanter Vertreter dieser Gattung ist wikio.de aus Luxemburg, die mit dem Portal unter anderem in Frankreich, Italien, Spanien und Großbritannien vertreten sind. In der letzten Zeit gab es über wikio immer wieder mal rege Diskussionen bis hin zu Vorwürfen des Content-Klaus, aber sehe das etwas gelassener, denn schließlich schreiben wir ja für die Leser "da draußen" und so ist es durchaus legitim, dass Content-Aggregatoren die Artikel verwerten und verbreiten, auch wenn echte Backlinks fehlen. Dafür habe ich meinen Content ja schließlich auch unter die Creative-Common-Lizenz gestellt und die wird eingehalten.

So sauber und stylish wie die wikio-Web-Seite sind auch die Voting-Buttons, die man auf der eigenen Seite einbinden kann. Nichts erinnert in das HTML- und CSS-Chaos der Yigg-Buttons, die ich inzwischen wieder von der Seite genommen habe, weil noch nicht mal der IE7 sie korrekt darstellen konnte. Der einzige Wermutstropfen bei der Implementierung der wikio-Buttons ist, dass wikio für den geneigten Webmaster lediglich etwas Code für Wordpress-, Blogger- und DotClear-Systeme bereitstellt. Wieder einmal Fehlanzeige in Sachen ASP.NET.
Da der PHP-Code des Wordpress-Plugins recht simpel ist, habe ich mich entschlossen Abhilfe zu schaffen und ein Web-Server-Control zu entwickeln, das ASP.NET 2.0-Webmaster leicht in Ihre Seiten einbinden können. Herausgekommen ist WikioButton. Den Download, inklusive Source-Code, findet ihr am Ende dieses Artikels
Hauptmerkmal des Buttons ist die Darstellung der aktuellen Votinganzahl eines Artikels, die über einen URL-Request vom wikio-Server geholt werden kann. Dazu bedarf es ein paar Angaben, die dem Web-Server-Control über folgende Eigenschaften mitgeteilt werden:
| Eigenschaft | Beschreibung |
| ButtonStyle | Tall oder Large (Enumeration) |
| ArticleUrl | Kompletter Pfad zum Beitrag (Permalink) |
| ClientIP | IP-Adresse des Requests |
| RequestTimeout | Zeitspanne in Millisekunden, die auf eine Antwort des wikio-Servers gewartet werden soll |
| RefererUrl | Referer-URL (optional) |
Die DLL des Steuerelements ist recht schnell in die Visual Studio-Toolbar eingebunden und kann dann in jede ASPX-Seite gezogen werden. Wer wie ich lieber in der Code-Ansicht arbeitet, muss WikioButton lediglich auf der Seite (oder zentral in der web.config) registrieren und etwas ASP-Markup in die Stelle setzen wo der Button angezeigt werden soll.
<%@ Register Assembly="WikioButton"
Namespace="zerbit.WebControls"
TagPrefix="sct" %>
...
<sct:WikioButton ID="WikioButton1" runat="server" />
Für die Bestückung des Controls mit den Eigenschaften eignet sich das Event Page_Load am ehesten, da Server-Control-Eigenschaften bekanntlich nicht mit Inline-Code versehen werden können:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles Me.Load
...
Me.WikioButton1.ButtonStyle = _
zerbit.WebControls.WikioButton.WikioButtonStyle.Large
Me.WikioButton1.ArticleUrl = Request.Url.AbsoluteUri
Me.WikioButton1.ClientIP = Request.UserHostAddress.ToString
Me.WikioButton1.RequestTimeout = 2000
End Sub
Das wäre es dann schon. Die einzig schwierige Aufgabe ist, sich zu entscheiden wohin der Button auf der Seite hinkommen soll.
Viel Spass damit.
zum Download...
P.S. Es würde mich freuen, wenn jemand mit dem Source-Code Verbesserungen entwickelt, davon zu erfahren.