Home  |  Über den Autor  |  Impressum  |  .NET Developer Group Braunschweig  |  AX Solutions

RSS 2.0 | Atom 1.0 | CDF | Send mail to the author(s)  
 Thursday, April 03, 2008

Heute will ich mal was dazu schreiben, wie man die LATIKA Knowledgebase an seine Bedürfnisse anpassen kann. Als Beispiel habe ich mir überlegt, wie man YouTube Videos in einen Artikel einbetten kann und zwar mit einem eigens "entwickelten" Tag. Aber vielleicht sollte ich erstmal erklären was ein Tag ist.

 

Für LATIKA haben wir die LATIKA Markup Language (LML) entwickelt, dabei handelt es sich um eine erweiterte Markupsprache, um das Schreiben von Artikeln zu vereinfachen. Beispiele für Standardtags findet man hier.

Ein Tag hat folgenden Aufbau:

[[command:param_1;param_2;...;param_n]subject]

Die Parameter und das Subjekt sind je nach Kommando/Tag optional.

 

Ein Wiki-Tag im Bearbeitenmodus sieht zum Beispiel so aus:

LATIKA Tags unterstützen auch [[wiki]Javascript].

Im Lesemodus wird dann folgendes generiert:

LATIKA Tags unterstützen auch Javascript.

 

Die Tag-Konfiguration befindet sich in der Datei ~\Configuration\TagDecrypter\tagdecrypter.config und hat folgenden Aufbau:


<?xml version="1.0" encoding="utf-8" ?> 
<Tags>  
...  
<Tag> 
    <Command type="wiki">Verlinkt zu Wikipedia.</Command> 
    <Subject optional="false">Der zu verlinkende Text.</Subject> 
    <Params> 
    </Params> 
    <ErrorReplacement>$subject$</ErrorReplacement> 
    <Transformation type="SimpleTagTransformation" replaceEqualTags="true"
      <Html> 
        <![CDATA[<a href="http://de.wikipedia.org/wiki/$subject$" title="Definition von
'$subject$' bei Wikipedia nachschlagen" target="_blank">$subject$</a>]]>
 
      </Html> 
      <Text>$subject$</Text>       
    </Transformation> 
  </Tag> 
... 
</Tags>

 

Diese XML-Datei kann nach belieben verändert und ergänzt werden. Die Tags können von beliebig implementierbaren TagInterpretern verarbeitet werden. Ein TagInterpreter wiederum benutzt verschiedene TagTransformationen um die Tags zu rendern. Standardmässig wird die Knowledgebase nur mit der SimpleTagTransformation ausgeliefert. Mit einer SimpleTagTransformation können wir ein Tag durch einen statischen Inhalt austauschen, der über Parameter angepasst werden kann. Für die Zwecke meines Beispiels reicht eine SimpleTagTransformation aber vollkommen aus.

 

Ein eigenes Tag erstellen

So, kommen wir nun aber zum Thema: Videos von YouTube einbetten mit einem eigenem Tag.

Dafür hab ich mir mal folgendes Video rausgesucht: http://www.youtube.com/watch?v=U4sjNtH3pRI ...Wer mein Blog schon länger liest weiß warum ;-)

Es gibt auf der YouTube-Seite zu (fast) jedem Video ein Stück HTML-Code das man kopieren kann und somit in seine eigene Seite einbauen kann:

<object width="425" height="355">
  <param name="movie" value="http://www.youtube.com/v/U4sjNtH3pRI&hl=en"></param>
  <param name="wmode" value="transparent"></param>
  <embed src="http://www.youtube.com/v/U4sjNtH3pRI&hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed>
</object>

Natürlich könnten wir diesen Code auch nehmen, um ihn direkt in der Codeansicht des Bearbeitenmodus eines Artikels einzufügen. Ein Tag macht das Ganze aber noch etwas "smoother".

 

Die Basis

Als erstes kopieren wir ein beliebiges Tag aus der Tagkonfiguration und fügen es erneut ein. Nehmen wir zum Beispiel das oben bereits erwähnte wiki-Tag und löschen alle Inhalte:

<Tag> 
    <Command type=""></Command> 
    <Subject optional="false"></Subject> 
    <Params> 
    </Params> 
    <ErrorReplacement>$subject$</ErrorReplacement> 
    <Transformation type="SimpleTagTransformation" replaceEqualTags="true"
      <Html> 
        <![CDATA[...]]> 
      </Html> 
      <Text>$subject$</Text>       
    </Transformation> 
  </Tag> 

 

Als nächstes geben wir dem Tag einen Namen (youtube) und fügen den HTML-Code von der YouTube-Seite ein:

<Tag> 
    <Command type="youtube"></Command> 
    <Subject optional="false"></Subject> 
    <Params> 
    </Params> 
    <ErrorReplacement>$subject$</ErrorReplacement> 
    <Transformation type="SimpleTagTransformation" replaceEqualTags="true"
      <Html> 
        <![CDATA[<object width="425" height="355">
<param name="movie" value="http://www.youtube.com/v/U4sjNtH3pRI&hl=en"></param>
<param name="wmode" value="transparent"></param>
<embed src=http://www.youtube.com/v/U4sjNtH3pRI&hl=en" type="application/x-shockwave-flash"
wmode="transparent" width="425" height="355"></embed>
</object>]]>
 
      </Html> 
      <Text>$subject$</Text>       
    </Transformation> 
  </Tag> 

 

Der Code (U4sjNtH3pRI) über den das Video identifiziert wird, habe ich schwarz markiert. Dies sind die einzigen Stellen an denen sich der Code von den Videos unterscheidet.

Unser Tag könnte also wie folgt aussehen [[youtube:U4sjNtH3pRI]]

 

Dafür müssen wir aber noch einen erforderlichen Parameter definieren und an den entsprechenden Stellen einsetzen. Da wir kein Subjekt benötigen müssen wir das entsprechende Attribut auf "true" setzen.

Schließlich fügen wir für das Kommando und das Subjekt einen beschreibenden Text ein. Dies ist wichtig, da aus der Konfigurationsdatei auch gleichzeitig der Hilfetext für die Tags generiert wird. Jedes neue Tag das wir erstellen erscheint also auch automatisch in der Taghilfe (siehe Ende des Artikels).

 

<Tag> 
    <Command type="youtube">Einbetten eines YouTube-Videos.</Command> 
    <Subject optional="true"></Subject> 
    <Params> 
      <Param id="1" optional="false">Eindeutiger Code des Videos der aus dem URL (Parameter "v=") kopiert werden kann.</Param>
    </Params> 
    <ErrorReplacement>$subject$</ErrorReplacement> 
    <Transformation type="SimpleTagTransformation" replaceEqualTags="true"
      <Html> 
        <![CDATA[<object width="425" height="355">
<param name="movie" value="http://www.youtube.com/v/$param_1$&hl=en"></param>
<param name="wmode" value="transparent"></param>
<embed src=http://www.youtube.com/v/$param_1$&hl=en" type="application/x-shockwave-flash"
wmode="transparent" width="425" height="355"></embed>
</object>]]>
 
      </Html> 
      <Text>$subject$</Text>       
    </Transformation> 
</Tag> 

 

Nun können wir das Ganze auch mal testen:

 

Bearbeitungsmodus

latika_youtube_01

 

Lesemodus

latika_youtube_02

 

Funktionalität ergänzen

Um das Tag noch ein bisschen weiter auszubauen, habe ich mir überlegt, dass es ganz gut wäre, wenn man noch einen Textlink zur YouTube-Seite einbauen könnte. Weiterhin sollte man auswählen können, ob man nur das Video, nur den Link oder beides anzeigen lassen möchte. Mit ein bisschen Javascript-Unterstützung sieht das fertige Tag wie folgt aus:

 

<Tag> 
    <Command type="youtube">Einbetten eines YouTube-Videos.</Command> 
    <Subject optional="true"></Subject> 
    <Params> 
      <Param id="1" optional="false">Eindeutiger Code des Videos der aus dem URL (Parameter "v=") kopiert werden kann.</Param>
      <Param id="2" optional="true">0 = Video nicht einbetten.</Param>
    </Params> 
    <ErrorReplacement>$subject$</ErrorReplacement> 
    <Transformation type="SimpleTagTransformation" replaceEqualTags="true"
      <Html> 
        <![CDATA[
        <script>
          if("$subject$"!="") {
            document.write('<p><a href="http://www.youtube.com/watch?v=$param_1$" target="_blank">$subject$</a></p>');
          }
          if("$param_2$"!="0") {
            document.write('<object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/$param_1$"></param>
<param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/$param_1$&hl=en" type="application/x-shockwave-flash"
wmode="transparent" width="425" height="355"></embed></object>');
          }
        </script>]]>
      </Html> 
      <Text>$subject$</Text>       
    </Transformation> 
</Tag> 

 

Die Syntax für die 3 Fälle sieht wie folgt aus:

Nur Video
[[youtube:U4sjNtH3pRI]]

Video und Link
[[youtube:U4sjNtH3pRI]How We Do!]

Nur Link
[[youtube:U4sjNtH3pRI;0]How We Do!]

 

Zu guter Letzt werfen wir noch einen Blick auf die dynamisch generierte Hilfe:

latika_youtube_03

 

So, das wars erstmal. Ich denke in einem anderen Blogeintrag werde ich zeigen wie man eine eigene TagTransformation implementieren kann, die etwas mehr kann, als nur statisch Texte auszutauschen.

posted on 4/3/2008 1:51:17 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [1]

 Friday, March 28, 2008

Gerade hat der Postbote die neueste Ausgabe des dot.net magazins vorbeigebracht. An sich nichts Besonderes, wenn in dieser Ausgabe nicht die LATIKA Knowledgebase auf der CD wäre :)

 

Zu LATIKA siehe auch:
http://www.eljed.de/blog/PermaLink,guid,ca4b21b9-2546-43ec-8798-7d699303e774.aspx

posted on 3/28/2008 11:18:16 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0]

 Wednesday, January 16, 2008

endlich bin ich mir mal sicher, dass ich einen Produktrelease als erster poste :)

 

Im Zuge des Redesign der Webseiten von netcreate bieten wir nun auch unsere Software LATIKA Knowledgebase als Freeware zum Download an.

Was ist die LATIKA Knowledgebase werden sich jetzt sicherlich einge (wenn nicht alle) Fragen. Nun am einfachsten erklärt ist sie als Wissensmanagementlösung in Form einer Kreuzung zwischen Blog und Wiki. Aber natürlich steckt etwas mehr dahinter:

 

Die LATIKA Knowledgebase ist eine webbasierte Software (natürlich ASP.NET), um Wissen in Form von Artikeln strukturiert abzulegen. Strukturiert deswegen, weil man die Artikel nicht nur in einer entsprechenden Ordnerstruktur ablegt, sondern weil man bereits die Eingabe der Daten über Formulare definieren kann. Diese Formulare oder Templates können frei programmiert und mit dynamischen Elementen versehen werden. Dem Einen oder Anderen wird jetzt bestimmt InfoPath in den Kopf kommen, was dem Ganzen auch schon sehr nahe kommt. Genau wie bei InfoPath werden die Daten in einer frei definierbaren XML-Struktur abgelegt. Durch die Verwendung von XML bekommen die Daten eine Semantik und können in anderen Applikationen weiterverwendet werden. Anhand von XSLT können die Daten dann in einem gewünschten Layout ausgegeben werden.

Wenn man sein Wissen in Form eines Artikels aufschreiben möchte, dann möchte man in den meisten Fällen sicherlich nicht irgendein Formular ausfüllen, sondern einfach drauflos schreiben. Das ist natürlich auch möglich. Mit dem Standardtemplate (Freetext) kann man mittels eines WYSIWYG-Editors den Text frei gestalten. Dafür kann man dann aber auch vordefinierte Masken in den Editor laden, die bereits eine grobe Struktur des Aufbaus des Artikels vorgeben.

 

Ein weiteres Schmankerl ist der TagDecrypter. Dieser erlaubt es Tags in einen Artikel einzubauen, die einen gewissen Mehrwert schaffen oder die Eingabe vereinfachen. Die Tags können über eine XML-Konfigurationsdatei frei definiert werden, über die auch ein entsprechender Hilfetext für den Autor automatisch generiert wird. Ein Beispiel für ein solches Tag wäre z.B. eine einfache Verlinkung eines Worts mit Wikipedia oder das Anzeigen eines Tooltipps mit weiteren Informationen zu einem Begriff. Der Fantasie sind da (fast) keine Grenzen gesetzt. Ich glaube der TagDecrypter ist mal einen eigenständigen Post wert, da man die Möglichkeiten in Kürze nicht erklären kann...

 

Als Erweiterung zur Software gibt es auch ein paar Plug-Ins, mit denen man z.B. direkt aus dem Browser heraus, Text in die Knowledgebase importieren kann, oder eine PowerPoint-Präsi direkt aus PowerPoint heraus in der Knowledgebase ablegen kann.

 

Wir bei netcreate nutzen die Software selber. Sie ist sozusagen aus Eigenbedarf entstanden und dient uns seither als erste Anlaufstelle für Programmierprobleme und hat uns schon so manche Google-Recherche erspart. Allerdings nutzen wir ein paar Templates die in der Downloadversion nicht verfügbar sind. Dazu gehören z.B. ein VSCodeSnippet-, Sourcecode- und auch ein Kochrezept-Template. Ja richtig, wir sind alle Gourmets bei netcreate ;-P

 

Wer nun mal einen Blick auf die Software werfen möchte kann dies natürlich gerne tun. Unten gibt es einen Link zur Online-Demo. Mit dem Gastlogin kann man allerdings nur Artikel lesen. Man kann aber einen Login auf unseren Seiten beantragen, der dann auch das Schreiben von Artikeln und Erstellen von Rubriken erlaubt.

Wem's gefällt, der kann sich die kostenlose Vollversion bei uns runterladen und privat oder im Unternehmen einsetzen.

 

Weiterführende Links:


LATIKA Knowledgebase
http://www.netcreate.de/de_latika_knowledgebase.net

Online-Demo
http://www.netcreate.de/de_latika_demo.net

Download
http://www.netcreate.de/de_latika_kb_download.net

posted on 1/16/2008 11:02:36 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0]