Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Onkel Domino am 17.08.06 - 18:20:15
-
Hallo,
ich versuche eine Tag Cloud unter Lotus Notes nachzubauen. Tag Clouds sind Navigationsinstrumente, die bei Social Software Applikationen zu finden sind (siehe http://del.icio.us oder http://www.flickr.com).
--> http://de.wikipedia.org/wiki/Tag_cloud
Meine Frage: kann ich per Lotus Script Text erstellen und diesen Text dann verlinken? Ziel des Links ist die Ausführung eines Agenten. Wenn mir die Tag Coud später im Notes Client angezeigt wird, dann soll ein Klick auf ein Schlagwort der Tag Cloud eine Suche nach dem Begriff auslösen.
Wie kann ich so etwas am besten realisieren?
Viele Grüße,
Markus
-
Schau mal hier http://benpoole.com/weblog/200608110617
-
Sehr elegante Sache!
Mein Ziel ist es allerdings die Tag Cloud im Notes Client anzeigen zu lassen... Am besten in einem Frame. Das Ganze muss auch ohne Server, also Lokal, laufen können...
Mein Problem ist die Verlinkung des Texts. Je nachdem welches Wort aus der Tag Cloud gewählt wird, muss ein Agent mit einem entsprechendem Paramter gestartet werden.
Hat da jemand eine Idee?
-
Also ich philosophier mal ein wenig Code :)
Mit DXL und Lotus Script müsste es machbar sein.
Wenn die Cloud auch dynamischen auf dem Client angepasst werden soll, dann erzeuge ein dynamisches Dokument, dass nur ein Bodyfeld enthält. Ansonsten geht es, dass du eine Page "direkt" via DXL bearbeitest.
Dann baust du in den <richtext> element, entsprechend für jedes Tag ein <actionhotspot> ein, mit entsprechender Beschriftung und so weiter.
Das Speicherst/Ersetzt du dann und zeigst du in einem Frame an.
Ich denke, das ist zwar ein größerer Aufwand, aber sicherlich eine interessante Programmieraufgabe :)
Vielleicht hab ich ja noch lust, da herumzuspielen!
Ich wünsch dir auf jeden Fall viel Erfolg!
Grüsse
Chris
-
Hallo Chris,
danke für die Hinweise! Leider gehen meine DXL Kenntnisse gegen Null :-(
Gibt es da nicht irgendwelche anderen Möglichkeiten? Vielleicht mit einem JAVA Applet (obwohl ich da auch nicht unbedingt fit bin...).
Für den Fall dass ich nicht drum herum komme: kennst Du ggf. ein schönes DXL Tutorial mit dem ich mich befassen kann und einen Einstieg in die Materie bekomme?
Danke,
Markus
-
Hallo Markus!
Ein richtig schönes DXL Tutorial kenne ich leider nicht!
Aber ich habe eine Lösung gebaut :) Und das nur in Lotus Script.
Der Code für den Agent sieht in meiner Test-Datenbank so aus:
Sub Initialize
Dim s As New NotesSession
Dim db As NotesDatabase
Dim dxlimporter As NotesDXLImporter
Dim xmlString As String
Dim v As NotesView
Dim entry As notesviewentry, nav As notesviewnavigator
Set db = s.CurrentDatabase
Set v = db.GetView("Tags")
xmlString=|<?xml version='1.0' encoding='utf-8'?>
<document xmlns='http://www.lotus.com/dxl' version='7.0' maintenanceversion='1.0'
replicaid='C12571CD006A0D27' form='CloudTag'>
<noteinfo noteid='95a' unid='C8876C7D20ADABDAC12571CD006E9003' sequence='1'>
</noteinfo>
<item name='CloudTag'><richtext>
<pardef id='1'/>|
Set nav = v.CreateViewNav
Set entry = nav.GetFirst
Do Until entry Is Nothing
If entry.ChildCount > max Then max = entry.childcount
Set entry = nav.GetNextCategory(entry)
Loop
min = 1
diff = max - min
pub = diff / 3
xmlString=xmlString+|<par def='1'>|
Set entry = nav.GetFirst
Do Until entry Is Nothing
tag = entry.ColumnValues(0)
xmlString=xmlString+|<actionhotspot hotspotstyle='none'><code
event='click'><formula>@SetEnvironment("CloudSelection";"|+tag+|");
@Command([ToolsRunMacro];"(OpenDialog)")</formula></code>|
xmlString=xmlString+"<run>"
Select Case entry.childcount
Case min : xmlString=xmlString+|<font size="10pt" style="underline" color="blue"/>|
Case max : xmlString=xmlString+|<font size="20pt" style="underline" color="blue"/>|
Case Is > min + (pub *2) :xmlString=xmlString+ |<font size="18pt" style="underline" color="blue"/>|
Case Is > min + (pub) :xmlString=xmlString+|<font size="16pt" style="underline" color="blue"/>|
Case Else : xmlString=xmlString+|<font size="12pt" style="underline" color="blue"/>|
End Select
xmlString=xmlString+tag
xmlString=xmlString+|</run></actionhotspot><run><font size="16pt"/> </run>|
Set entry = nav.GetNextCategory(entry)
Loop
xmlString=xmlString+|</par>|
xmlString=xmlString+|</richtext></item></document>
|
Set dxlimporter = s.CreateDXLImporter(xmlString,db)
dxlimporter.DocumentImportOption = DXLIMPORTOPTION_REPLACE_ELSE_IGNORE
Call dxlimporter.Process
End Sub
Ich habe euch einen Blog-Eintrag hierzu geschrieben, dort gibt es auch die Datenbank zum herunterladen -> http://smoki.atblogs.de/index.php?op=ViewArticle&articleId=772&blogId=82
Leider bin ich nicht dazu gekommen, das vorgehen genau zu beschreiben. Es ist schon nach Mitternacht.
Die Datenbank ist auch noch nicht perfekt, beispielsweise werden die Tags nicht sofort aktualisiert, sondern man muss die Datenbank neu öffnen. Aber das zu lösen, ist ein anderes Thema
Ich hoffe, dass hilft die schon mal weiter?
Viele Grüße!
Chris
-
Hey Chris,
vielen, vielen Dank für Deine Mühe!!! :D
Das werde ich mir mal genauer anschauen!
Viele Grüße,
Markus
-
Hey Chris,
super Arbeit!!!
Wenn man das NotesDocument, welches Du für die Tag Cloud benutzt, nach der Ausführung des Agents "RewriteCloud", im Frame anzeigen läßt, dann lassen sich die Änderungen sogar ohne ein Schließen der Datenbank gleich anzeigen :-)
Nochmal vielen Dank! Das ist genau das, was ich gebraucht habe!!!
Viele Grüße,
Markus