The Lotus Code CookbookUlrich Krause  EntwicklerCamp, 21. – 23.02.2011, Gelsenkirchen, Deutschland
AgendaAllgemeinesOptionen des DesignersTools@FormelnLotusScriptBearbeitung von Richtext ( C-Api / LS2CAPI )Javascript (Frameworks)XPages
Warum sollten wir @Formeln verwenden?Alle Sprachen verwenden die gleichen KernfunktionenBei gleicher Funktionalität sind Formeln IMMER performanterFormeln sind Performance optimiertLesenswert: Damien Katz,  http://damienkatz.net/2005/01/formula-engine-rewrite.html
Option DeclareWichtigsteCodezeile in LotusScriptOption Declare “zwingt” zumDeklarierenallerVariablen und erspart das Beseitigen von schwerauffindbarenFehlernAlleFehlersind runtime Fehler
Option DeclareOHNE „Option Declare“MIT„OptionDeclare“
Option DeclareDer wichtigste Grund, warum wir „Option Declare“ verwenden MÜSSEN, ist …
Option DeclareEvery time you don‘tuse „Option Declare“, God will kill a kitten !!
Option BaseSets the default lower bound for array subscripts to 0 or 1
Dim StatementErstellt eine Referenz zu einem Objekt, ohne das Objekt zu erstellenAchtung:  Dim i, j, k As IntegerDim i As Integer, j As Integer, k As Integer
Dim Statement und PerformanceAusführungszeiten messen mit GetthreadinfoWird z.B. ein Integerwert in einem Variant gespeichert, so muss Notes intern eine Typumwandlung vornehmen. Das kostet Zeit !!DEMO: DIM - Zeitschleife
GetNextDocument vs. GetNthDocument16.260 Dokumente10 Testläufe / MethodeTabelle zeigt die Durchschnittswerte
GetNextDocument vs. GetNthDocument113.610 Dokumente4 Testläufe / MethodeTabelle zeigt die Durchschnittswerte DEMO - GetNextDocument vs. GetNthDocument
Script / Comment TemplatesEinheitlicher Aufbau von Codesegmenten
Fonts / ColorsIndividuelle Einstellungen für bessere Lesbarkeit
Zeilennummern einblenden
SessionempfehlungAnita DungerEinführung in die neue Designer-Umgebung ( Hands On, Dienstag 9:00 – 10:30 )Julian BussVersionskontrolle mit dem Domino Designer( direkt im Anschluss an diese Session )
Soft-Coded Field NamesOne of the worst traps in LotusScript is using hard-coded field names. LotusScript makes it simple to hard code field names, because of its support for extended attributes of the NotesDocument class. The LotusScript documentation even describes this as a feature, though you should avoid it like the plague.
LoggingKein Code ist absolut fehlerfrei!Auch wenn momentan keine Fehler erkennbar sind, werden Fehler auftauchen.Fehler erkennen, die von Usern nicht immer gemeldet werden.Es gibt Tools, die ein aussagekräftiges Logging mit nur wenigen Codezeilen ermöglichen.Julian Robichaux: OpenLoghttp://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=OpenLog
OpenLog
Source SnifferDomino Designer extensionSucht in einer oder meheren AnwendungenUnterstützt Java, Javascript, Lotusscript,@Formula,Xpageshttp://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=Source%20Sniffer
NotesHoundhttp://domino-80.prominic.net/A55BE4/NotesHoundWeb.nsf/webpages/index.html
LotusScript.docErstellt eine Dokumentationvon LotusScript in einer Datenbank.Syntax wieJavadocLotusScript.doc APIhttp://blog.lsdoc.org/LSDoc Support to DDEhttp://blog.mindoo.com/web/blog.nsf/dx/22.07.2010223240KLES4H.htm?opendocument&comments, Karsten Lehmann
Hide DesignIn kommerziellen AnwendungenTemplate „Hide Design“Problem: keine Anpassungen von Ansichten durch den AnwenderBesser ist es daher, nur Teile der Anwendung zu verbergen.In der Regel enthalten Script Bibliotheken den schützenswerten Code.%Include  „xyz.lss“
Hide DesignDer lesbare Quelltext befindet sich im item $ScriptLib
Hide DesignkannDen Text im item $ScriptLib kann man löschen oder durch ein freundliches „Hello“ ersetzen. Nach dem Speichern ist der Quelltext nicht mehr sichtbar.
NotesView.AutoUpdate = falsePerformancegewinn, da die Ansicht nicht kontinuierlich aktualisiert wird.Zu den technischen Hintergründen; Bob Balaban, http://bobzblog.com/tuxedoguy.nsf/dx/geek-o-terica-10-autoupdating-in-viewshttp://www-10.lotus.com/ldd/ddwiki.nsf/dx/View.AutoUpdate_Bei der Verwendung von NotesViewNavigator können Fehler auftreten, wenn AutoUpdate = true („Entry not found in Index“)Andre Guirard, http://www-10.lotus.com/ldd/bpmpblog.nsf/dx/autoupdate-false
@WhichFoldersNeu ab 8.5.1Nur in Ansichtsspalten zu verwendenOption „Maintainfolderunreadinformation“ muß aktiviert seinOption „ Don'tmaintainUnreadmarks“ darf nicht aktiviert sein“
@WhichFolders in LotusScript Idb.FolderReferencesEnabled = True$FolderInfo und $FolderRefInfoAnsichten können aus der Mailschablone kopiert werdenDemo: @WhichFolders in LS I
@WhichFolders in LotusScript IICreateViewNavFromKeine zusätzlichen Designelemente erforderlichAber langsam bei einer großen Ordneranzahl Demo: @WhichFolders in LS II
@Command( [DiscoverFolders];title)Wie @WhichFolders mit zusätzlichen Möglichkeiten, um die Ordnereigenschaften eines Dokuments zu ändern.Uncheck „Don‘tmaintainunreadmarks“
@TransformSeit Version 6Entspricht LotusScriptstatementForAll x in Liste Führt eine Formel für jedes Element der Liste aus.@Transform(list ; variableName ; formula )Rückgabewert ist die durch die Formel modifizierte ListeKann in Ansichtenspalten verwendet werden
@Transform (Sample)Names.nsf - People\By Client VersionUnübersichtlich, da alle Versionen dargestellt werden.
People\By Client Version (new)Mit wenigen Handgriffen Ordnung schaffen
@NothingSeit Version 6Lt. Designer Hilfe nur mit @Transform zu verwendbar ( „not valid in othercontext“ )Funktioniert aber z.B auch in View Selection
@SortSortiert eine Liste[ACCENTSENSITIVE][ACCENTINSENSITIVE][ASCENDING][CASESENSITIVE][CASEINSENSITIVE][CUSTOMSORT][DESCENDING][PITCHSENSITIVE][PITCHINSENSITiVE]Dies lässt sich auch kombinieren[ASCENDING]:[CASESENSITIVE]
@Sort@Sort kann aber noch mehr – [CustomSort]
@UpdateFormulaContextÄndert den Kontext einer Formel Nachfolgende Befehle werden im neuen Kontext ausgeführt
@Now + [NoCache][SERVERTIME] ermöglicht die Abfrage von @Now für einen Server oder eine Liste von Servern.Problem: Änderung der Systemzeit@Now fragt die Zeit beim ersten Aufruf ab und cached diesen Wert. Bei weiteren Aufrufen wird nur die Zeit seit dem ersten Aufruf zum Wert im Cache addiert.[NOCACHE] umgeht dieses ProblemNicht dokumentiert;  noch nicht
Get the current location name@LocationGetInfo@LocationGetInfo([HomeServer])@LocationGetInfo([InternetMailAddress])@LocationGetInfo([NamePreference])@LocationGetInfo([BookmarksFilename])@LocationGetInfo([SametimeServer])@LocationGetInfo([UNID])http://www.thenorth.com/apblog4.nsf/0/60C5A5C6540A2D648525719F0012BDED
Get the current location name@LocationGetInfo([FullName])@LocationGetInfo([AbbreviatedName])Damit erhalten wir Zugriff auf JEDES beliebige Feld in der aktuellen Arbeitsumgebung
@GetMachineInfo  (8.5.3)New @Function to support MachineSpecificPolicy Settings asof Notes / Domino 8.5.3
@GetMachineInfo vs. @Environment@GetMachineInfo([EnvVariable];"Location");Liefert den gewünschten Wert für alle Variablen in der notes.ini zurückEgal ob mit „$“ oder ohneKann keine Werte setzen@Environment(„Location“)Liefert nur Variablen mit „$“ zurück ($DDM_SERVER)Kann auch Werte in der notes.ini setzen
@CheckFormulaSyntaxÜberprüft Formeln Zeigt den Fehler konkret an
@CheckFormulaSyntax (LotusScript) Verwendet LotusScript EVALUATEDEMO - CheckFormula
@BusinessDaysErmittelt die Anzahl von Werktagen in einem DatumsbereichBestimmte Tage können als Werktage ausgeschlossen werdenEbenso lassen sich Feiertage als Werktage ausschließenBeispiel: Der Wert eines Items soll auf einen Wert @Today + 3 Tage gesetzt werden.Dabei sollen die Wochenenden und bestimmte Datumswerte nicht als Werktage gelten.@BusinessDays wird in XPages nicht unterstützt
@BusinessDays (LS)Evaluate zur Einbindung von @BusinessDays in LS
@DbLookup + [FailSilent]Keine Fehlermeldung, wenn keine Entsprechung in der Ansicht gefunden wird@DbLookup(""; ""; "All"; Source; 2;[FailSilent])
 [ReturnDocumentUniqueID]Gibt die DocumentUNID eines @DBLookup Ergebnisses zurück@DbLookup(""; ""; "All"; “test”; 1; [FailSilent]:[ReturnDocumentUniqueID]);Macht eine zusätzlicheAnsichtmit einer Spaltenformel@Text(@DocumentUniqueID) überflüssig
@ConfigFileWo ist die notes.ini? @Prompt([OK];“notes.ini path“;@configfile)Notes.ini bearbeiten@Command([Execute];"notepad"; @configfile)
Programmatic UseWozu ist die Eigenschaft „Programmatic Use“ da?Keine Redundanz komplizierterSpaltenformeln. Das Ergebnis einer Berechnung kann in einer anderen Spalte verwendet werdenAndre Guirard  http://www-10.lotus.com/ldd/ddwiki.nsf/dx/colprognames.htm
Permutation Comparison In HideFormulasElement nicht anzeigen, wenn User nicht mindestens eine der Rollen hat.@IsNotMember("[GloAdmin]"; @UserRoles) & @IsNotMember("[GloEditor]"; @UserRoles)Läßt sich kürzen auf:@IsNotMember("[GloAdmin]" : "[GloEditor]"; @UserRoles)Noch kürzer!("[GloAdmin]" : "[GloEditor]" *= @UserRoles)
Get Rules From Users MailfileUser mögen Regeln, aber nicht unsere.User erstellen Regel, viele, sehr viele Regeln.Aber welche Regeln haben die User denn erstellt?http://www.eknori.de/2007-02-13/get-rules-from-users-mailfile/
Mail Rules ExtendedRegelnhabenstarre, vorgegebeneBedingungen
Mail Rules ExtendedDer Client speichert die Regeln im KalenderprofilAuf dem Server werden die Regeln in “mailrule” Dokumenten gespeichert
Mail Rules ExtendedMehr Möglichkeiten bei der RegelerstellungErfordert Änderung an names.nsfKein grosser Aufwand beim Upgrade
Tweak Auto-Populated GroupsEinfacheErweiterung in names.nsfCreate a new subformCreate a new field on the subform ( SelectionCriteria, Text, Editable )Give it the name Custom and an alias starting with $AutoPopulate followed by a number of your choice ( i.e. 9999)Save the subformhttp://www.eknori.de/2008-06-10/tweak-the-auto-populated-groups-feature-in-domino-85/
How to get rid of $UpdatedBy?Unter Umständen sollen die Bearbeiter eines Dokuments nicht sichtbar sein.
@AdminDelegateMailFileErstellt AdministrationsprocessUnterzeichner muss Owner der Maildatei sein (!)
Custom Administration ProcessFehlende Funktionen hinzufügenZ.B. : User aus Gruppe entfernenVerlagerung administrativer Aufgaben in den ServicedeskNotesAdministrationProcessclassSeit Release 6AddGroupMembersmethodaber keine RemoveGroupMembersmethod
Custom Administration Process
Custom Administration Processadmin4.nsf anpassen ( neue Maske )
Custom Administration Processadmin4.nsf anpassen ( Ansichten )Neue Ansicht erstellen oderSpalte „Action“ anpassen
Zip and Unzip Verwendung von ZIP/UNZIP mitLotusScriptKostenlos http://www.vcode.no/vcode.nsf/downloads/VCZIPSUP
Auto-Zip Mail AttachmentsAnhänge werden beim Versenden automatisch gepacktGenaue Beschreibung der Anpassungen im Lotus Notes & Domino Wikihttp://www-10.lotus.com/ldd/dominowiki.nsf/page.xsp?documentId=7963EB58BAD528FB852577AE0062A72A&action=openDocument&mode=original
XLS ohne Excel erstellenReports sollen auf einem Server erstellt werden, auf dem kein Excel installiert ist. ( Linux )http://jxls.sourceforge.net/index.htmlSupport for Excel 2007 OOXML (.xlsx) fileformat
XLS ohne Excel erstellen
Lotus SymphonyToolkit%Include"symphonylsx.lss„OpenNTF.org Contacts Experiencehttp://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=OpenNTF.org%20Contacts%20ExperienceMailMergeLetterExport ContactsSymphonyMS Office
Wurde das Dokument gelesen?doc.GetRead([username])Ab Release 8.5Gibt „true“ zurück, wenn das Dokument vom aktuellen User gelesen wurdeWird ein Username angegeben, wird der Lesestatus dieses Users zurückgegeben
@Midas LookupsBen Langhinrichs ( geniisoftware )Auslesen von Daten aus RichTextSyntax wie @DBColumn und @DBLookupFree download: http://www.geniisoft.com/showcase.nsf/MidasLookups
@Midas LookupsErweiterte MöglichkeitenBeispiel: Sortierte Ausgabe aller Listenpunkte
Ist RichText Item leer??@Length(@Text(body))-1@Attachmentsrtitem.ValueLengthrtitem.EmbeddedObjectsAttachments OKAber:  Doclinks,  Inline Images, Hotspots (Button)
Ist RichText Item leer?DEMO - Is Item empty?
Arbeiten mit RichTextC/C++  API oder LS2CAPINormundsKalbernzinLotusScript to Lotus C API Programming Guide ( ls2capi.com )Lee PowellLotusScriptor'sPlain Simple Guide to the Lotus Notes C++ API  Download : http://www.eknori.de/downloads/capibook.pdfEthannCastellGettingstartedwith the C-APIControlrichtextcontentwithprecisionusing the C-APIThe View, 09 / 11 , 2007
Einordnung der C-APILotus ScriptVisual Basic (COM)JAVAJNINotes Object Interface (NOI)C++ APINotes Core ( C API )Betriebssystem
Ist RichText Item leer?LS2CAPI to the rescue!Leeres RTI besitzt nur einen CDRecord von Typ Text
Header / FooterErstellen / ÄndernAnwendungseigenschaften ( global )DokumenteneigenschaftenKeine Möglichkeit über @Formel oder LotusScript
Header / FooterInformationen sind in RichText item gespeichert
Header / FooterLotusScript Library / LS2CAPI
Inline ImagesAuf Inline Images kann nicht über die embedded objects Eigenschaft zugegriffen werdenInline Images werden z.B. nicht bei DAOS berücksichtigt.Es gibt keine Methoden, um Inline Images mit LotusScript so umzuwandeln, daß sie als Anhang im Dokument gespeichert werden.
Inline ImagesWie ist ein Inline Image gespeichert ?
Inline ImagesAndre Guirardhttp://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=LotusScript%20Gold%20Collection
Inline ImagesrtLib: framework of LotusScript classes to work with Notes Rich Text on 32-bit versions of Domino on AIX, Solaris (SPARC), Linux, MacOS, OS X (currently PowerPC only) and Windows.NormundsKalnberzinshttp://www.rtlib.com/
ReplaceInline Image Bilder, die aus der Zwischenablage in ein Dokument eingefügt werden, werden bei DAOS nicht berücksichtigt. Methoden zum Umwandeln in ein Attachment gibt es in Lotus Notes nicht.Funktion muss folgende Voraussetzungen erfüllenUmwandeln des inline image in ein AttachmentErsetzen des inline image durch das AttachmentBeibehalten der Position
ReplaceInline ImageDas Attachment wird an die Position des Inline Image gesetzt.
ReplaceInline Images
Insert RichtextintoRichtextnotesRichTextRange.FindAndReplace( target$ , replacement$ , [ options& ] )Damit lässt sich aber nur Text innerhalb von RichText finden und ersetzenFür das Einfügen eines kompletten RichText Items oder Teile davon an eine definierte Stelle in einem anderen RichText Item gibt es keine Methode.
Insert RichtextintoRichtext
Insert RichtextintoRichtext
JW Player - MediaplayerJW Player: Ein paar Zeilen Code für einen Mediaplayer für Flash und HTML5 supportSkins, Plugins und Playlistshttp://www.longtailvideo.com/players/
JW Player - Mediaplayer
jQueryfreie, umfangreiche JavaScript-Klassenbibliothek, welche komfortable Funktionen zur DOM-Manipulation und -Navigation zur Verfügung stellthttp://www.reizkraft.com/content/die-43-sch%C3%B6nsten-jquery-plugins-f%C3%BCr-webdesignAnimatedgifcreatedwith http://picasion.com/
UIZE – JavaScript Framework„You Eyes“ OpenSource, MIT oder GNU GPLUnterstützung von …Widgets, Ajax, DOM, Templates …Mobile Deviceshttp://www.uize.com/
UIZE – JavaScript FrameworkSample : Resizer
Xpages und @FormulaNur 97 der 274 @Formeln können in SSJS verwendet werdenhttp://www-10.lotus.com/ldd/ddwiki.nsf/dx/List_of_Formula_Not_Supported_In_XPagesMichael Gollmick hat ein paar Formeln umgesetzt@WebDBNamehttp://blog.gollmick.de/mgoblog.nsf/40f2c735481f54dd80256d650047636c/0687660450ad65bdc125754a008357ce?OpenDocument@URLEncode, @URLDecodehttp://blog.gollmick.de/mgoblog.nsf/dx/some-more-Functions-for-XPages-URLEncode-URLDecode.htm
Q + AMail: eknori@eknori.deBlog: http://www.eknori.deSametime: Bleedyellow.comTwitter: Eknori

The Lotus Code Cookbook

  • 1.
    The Lotus CodeCookbookUlrich Krause EntwicklerCamp, 21. – 23.02.2011, Gelsenkirchen, Deutschland
  • 2.
    AgendaAllgemeinesOptionen des DesignersTools@FormelnLotusScriptBearbeitungvon Richtext ( C-Api / LS2CAPI )Javascript (Frameworks)XPages
  • 3.
    Warum sollten wir@Formeln verwenden?Alle Sprachen verwenden die gleichen KernfunktionenBei gleicher Funktionalität sind Formeln IMMER performanterFormeln sind Performance optimiertLesenswert: Damien Katz, http://damienkatz.net/2005/01/formula-engine-rewrite.html
  • 4.
    Option DeclareWichtigsteCodezeile inLotusScriptOption Declare “zwingt” zumDeklarierenallerVariablen und erspart das Beseitigen von schwerauffindbarenFehlernAlleFehlersind runtime Fehler
  • 5.
    Option DeclareOHNE „OptionDeclare“MIT„OptionDeclare“
  • 6.
    Option DeclareDer wichtigsteGrund, warum wir „Option Declare“ verwenden MÜSSEN, ist …
  • 7.
    Option DeclareEvery timeyou don‘tuse „Option Declare“, God will kill a kitten !!
  • 8.
    Option BaseSets thedefault lower bound for array subscripts to 0 or 1
  • 9.
    Dim StatementErstellt eineReferenz zu einem Objekt, ohne das Objekt zu erstellenAchtung: Dim i, j, k As IntegerDim i As Integer, j As Integer, k As Integer
  • 10.
    Dim Statement undPerformanceAusführungszeiten messen mit GetthreadinfoWird z.B. ein Integerwert in einem Variant gespeichert, so muss Notes intern eine Typumwandlung vornehmen. Das kostet Zeit !!DEMO: DIM - Zeitschleife
  • 11.
    GetNextDocument vs. GetNthDocument16.260Dokumente10 Testläufe / MethodeTabelle zeigt die Durchschnittswerte
  • 12.
    GetNextDocument vs. GetNthDocument113.610Dokumente4 Testläufe / MethodeTabelle zeigt die Durchschnittswerte DEMO - GetNextDocument vs. GetNthDocument
  • 13.
    Script / CommentTemplatesEinheitlicher Aufbau von Codesegmenten
  • 14.
    Fonts / ColorsIndividuelleEinstellungen für bessere Lesbarkeit
  • 15.
  • 16.
    SessionempfehlungAnita DungerEinführung indie neue Designer-Umgebung ( Hands On, Dienstag 9:00 – 10:30 )Julian BussVersionskontrolle mit dem Domino Designer( direkt im Anschluss an diese Session )
  • 17.
    Soft-Coded Field NamesOneof the worst traps in LotusScript is using hard-coded field names. LotusScript makes it simple to hard code field names, because of its support for extended attributes of the NotesDocument class. The LotusScript documentation even describes this as a feature, though you should avoid it like the plague.
  • 18.
    LoggingKein Code istabsolut fehlerfrei!Auch wenn momentan keine Fehler erkennbar sind, werden Fehler auftauchen.Fehler erkennen, die von Usern nicht immer gemeldet werden.Es gibt Tools, die ein aussagekräftiges Logging mit nur wenigen Codezeilen ermöglichen.Julian Robichaux: OpenLoghttp://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=OpenLog
  • 19.
  • 20.
    Source SnifferDomino DesignerextensionSucht in einer oder meheren AnwendungenUnterstützt Java, Javascript, Lotusscript,@Formula,Xpageshttp://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=Source%20Sniffer
  • 21.
  • 22.
    LotusScript.docErstellt eine DokumentationvonLotusScript in einer Datenbank.Syntax wieJavadocLotusScript.doc APIhttp://blog.lsdoc.org/LSDoc Support to DDEhttp://blog.mindoo.com/web/blog.nsf/dx/22.07.2010223240KLES4H.htm?opendocument&comments, Karsten Lehmann
  • 23.
    Hide DesignIn kommerziellenAnwendungenTemplate „Hide Design“Problem: keine Anpassungen von Ansichten durch den AnwenderBesser ist es daher, nur Teile der Anwendung zu verbergen.In der Regel enthalten Script Bibliotheken den schützenswerten Code.%Include „xyz.lss“
  • 24.
    Hide DesignDer lesbareQuelltext befindet sich im item $ScriptLib
  • 25.
    Hide DesignkannDen Textim item $ScriptLib kann man löschen oder durch ein freundliches „Hello“ ersetzen. Nach dem Speichern ist der Quelltext nicht mehr sichtbar.
  • 26.
    NotesView.AutoUpdate = falsePerformancegewinn,da die Ansicht nicht kontinuierlich aktualisiert wird.Zu den technischen Hintergründen; Bob Balaban, http://bobzblog.com/tuxedoguy.nsf/dx/geek-o-terica-10-autoupdating-in-viewshttp://www-10.lotus.com/ldd/ddwiki.nsf/dx/View.AutoUpdate_Bei der Verwendung von NotesViewNavigator können Fehler auftreten, wenn AutoUpdate = true („Entry not found in Index“)Andre Guirard, http://www-10.lotus.com/ldd/bpmpblog.nsf/dx/autoupdate-false
  • 27.
    @WhichFoldersNeu ab 8.5.1Nurin Ansichtsspalten zu verwendenOption „Maintainfolderunreadinformation“ muß aktiviert seinOption „ Don'tmaintainUnreadmarks“ darf nicht aktiviert sein“
  • 28.
    @WhichFolders in LotusScriptIdb.FolderReferencesEnabled = True$FolderInfo und $FolderRefInfoAnsichten können aus der Mailschablone kopiert werdenDemo: @WhichFolders in LS I
  • 29.
    @WhichFolders in LotusScriptIICreateViewNavFromKeine zusätzlichen Designelemente erforderlichAber langsam bei einer großen Ordneranzahl Demo: @WhichFolders in LS II
  • 30.
    @Command( [DiscoverFolders];title)Wie @WhichFoldersmit zusätzlichen Möglichkeiten, um die Ordnereigenschaften eines Dokuments zu ändern.Uncheck „Don‘tmaintainunreadmarks“
  • 31.
    @TransformSeit Version 6EntsprichtLotusScriptstatementForAll x in Liste Führt eine Formel für jedes Element der Liste aus.@Transform(list ; variableName ; formula )Rückgabewert ist die durch die Formel modifizierte ListeKann in Ansichtenspalten verwendet werden
  • 32.
    @Transform (Sample)Names.nsf -People\By Client VersionUnübersichtlich, da alle Versionen dargestellt werden.
  • 33.
    People\By Client Version(new)Mit wenigen Handgriffen Ordnung schaffen
  • 34.
    @NothingSeit Version 6Lt.Designer Hilfe nur mit @Transform zu verwendbar ( „not valid in othercontext“ )Funktioniert aber z.B auch in View Selection
  • 35.
  • 36.
    @Sort@Sort kann abernoch mehr – [CustomSort]
  • 37.
    @UpdateFormulaContextÄndert den Kontexteiner Formel Nachfolgende Befehle werden im neuen Kontext ausgeführt
  • 38.
    @Now + [NoCache][SERVERTIME]ermöglicht die Abfrage von @Now für einen Server oder eine Liste von Servern.Problem: Änderung der Systemzeit@Now fragt die Zeit beim ersten Aufruf ab und cached diesen Wert. Bei weiteren Aufrufen wird nur die Zeit seit dem ersten Aufruf zum Wert im Cache addiert.[NOCACHE] umgeht dieses ProblemNicht dokumentiert; noch nicht
  • 39.
    Get the currentlocation name@LocationGetInfo@LocationGetInfo([HomeServer])@LocationGetInfo([InternetMailAddress])@LocationGetInfo([NamePreference])@LocationGetInfo([BookmarksFilename])@LocationGetInfo([SametimeServer])@LocationGetInfo([UNID])http://www.thenorth.com/apblog4.nsf/0/60C5A5C6540A2D648525719F0012BDED
  • 40.
    Get the currentlocation name@LocationGetInfo([FullName])@LocationGetInfo([AbbreviatedName])Damit erhalten wir Zugriff auf JEDES beliebige Feld in der aktuellen Arbeitsumgebung
  • 41.
    @GetMachineInfo (8.5.3)New@Function to support MachineSpecificPolicy Settings asof Notes / Domino 8.5.3
  • 42.
    @GetMachineInfo vs. @Environment@GetMachineInfo([EnvVariable];"Location");Liefertden gewünschten Wert für alle Variablen in der notes.ini zurückEgal ob mit „$“ oder ohneKann keine Werte setzen@Environment(„Location“)Liefert nur Variablen mit „$“ zurück ($DDM_SERVER)Kann auch Werte in der notes.ini setzen
  • 43.
  • 44.
    @CheckFormulaSyntax (LotusScript) VerwendetLotusScript EVALUATEDEMO - CheckFormula
  • 45.
    @BusinessDaysErmittelt die Anzahlvon Werktagen in einem DatumsbereichBestimmte Tage können als Werktage ausgeschlossen werdenEbenso lassen sich Feiertage als Werktage ausschließenBeispiel: Der Wert eines Items soll auf einen Wert @Today + 3 Tage gesetzt werden.Dabei sollen die Wochenenden und bestimmte Datumswerte nicht als Werktage gelten.@BusinessDays wird in XPages nicht unterstützt
  • 46.
    @BusinessDays (LS)Evaluate zurEinbindung von @BusinessDays in LS
  • 47.
    @DbLookup + [FailSilent]KeineFehlermeldung, wenn keine Entsprechung in der Ansicht gefunden wird@DbLookup(""; ""; "All"; Source; 2;[FailSilent])
  • 48.
    [ReturnDocumentUniqueID]Gibt dieDocumentUNID eines @DBLookup Ergebnisses zurück@DbLookup(""; ""; "All"; “test”; 1; [FailSilent]:[ReturnDocumentUniqueID]);Macht eine zusätzlicheAnsichtmit einer Spaltenformel@Text(@DocumentUniqueID) überflüssig
  • 49.
    @ConfigFileWo ist dienotes.ini? @Prompt([OK];“notes.ini path“;@configfile)Notes.ini bearbeiten@Command([Execute];"notepad"; @configfile)
  • 50.
    Programmatic UseWozu istdie Eigenschaft „Programmatic Use“ da?Keine Redundanz komplizierterSpaltenformeln. Das Ergebnis einer Berechnung kann in einer anderen Spalte verwendet werdenAndre Guirard  http://www-10.lotus.com/ldd/ddwiki.nsf/dx/colprognames.htm
  • 51.
    Permutation Comparison InHideFormulasElement nicht anzeigen, wenn User nicht mindestens eine der Rollen hat.@IsNotMember("[GloAdmin]"; @UserRoles) & @IsNotMember("[GloEditor]"; @UserRoles)Läßt sich kürzen auf:@IsNotMember("[GloAdmin]" : "[GloEditor]"; @UserRoles)Noch kürzer!("[GloAdmin]" : "[GloEditor]" *= @UserRoles)
  • 52.
    Get Rules FromUsers MailfileUser mögen Regeln, aber nicht unsere.User erstellen Regel, viele, sehr viele Regeln.Aber welche Regeln haben die User denn erstellt?http://www.eknori.de/2007-02-13/get-rules-from-users-mailfile/
  • 53.
  • 54.
    Mail Rules ExtendedDerClient speichert die Regeln im KalenderprofilAuf dem Server werden die Regeln in “mailrule” Dokumenten gespeichert
  • 55.
    Mail Rules ExtendedMehrMöglichkeiten bei der RegelerstellungErfordert Änderung an names.nsfKein grosser Aufwand beim Upgrade
  • 56.
    Tweak Auto-Populated GroupsEinfacheErweiterungin names.nsfCreate a new subformCreate a new field on the subform ( SelectionCriteria, Text, Editable )Give it the name Custom and an alias starting with $AutoPopulate followed by a number of your choice ( i.e. 9999)Save the subformhttp://www.eknori.de/2008-06-10/tweak-the-auto-populated-groups-feature-in-domino-85/
  • 57.
    How to getrid of $UpdatedBy?Unter Umständen sollen die Bearbeiter eines Dokuments nicht sichtbar sein.
  • 58.
  • 59.
    Custom Administration ProcessFehlendeFunktionen hinzufügenZ.B. : User aus Gruppe entfernenVerlagerung administrativer Aufgaben in den ServicedeskNotesAdministrationProcessclassSeit Release 6AddGroupMembersmethodaber keine RemoveGroupMembersmethod
  • 60.
  • 61.
  • 62.
    Custom Administration Processadmin4.nsfanpassen ( Ansichten )Neue Ansicht erstellen oderSpalte „Action“ anpassen
  • 63.
    Zip and UnzipVerwendung von ZIP/UNZIP mitLotusScriptKostenlos http://www.vcode.no/vcode.nsf/downloads/VCZIPSUP
  • 64.
    Auto-Zip Mail AttachmentsAnhängewerden beim Versenden automatisch gepacktGenaue Beschreibung der Anpassungen im Lotus Notes & Domino Wikihttp://www-10.lotus.com/ldd/dominowiki.nsf/page.xsp?documentId=7963EB58BAD528FB852577AE0062A72A&action=openDocument&mode=original
  • 65.
    XLS ohne ExcelerstellenReports sollen auf einem Server erstellt werden, auf dem kein Excel installiert ist. ( Linux )http://jxls.sourceforge.net/index.htmlSupport for Excel 2007 OOXML (.xlsx) fileformat
  • 66.
  • 67.
    Lotus SymphonyToolkit%Include"symphonylsx.lss„OpenNTF.org ContactsExperiencehttp://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=OpenNTF.org%20Contacts%20ExperienceMailMergeLetterExport ContactsSymphonyMS Office
  • 68.
    Wurde das Dokumentgelesen?doc.GetRead([username])Ab Release 8.5Gibt „true“ zurück, wenn das Dokument vom aktuellen User gelesen wurdeWird ein Username angegeben, wird der Lesestatus dieses Users zurückgegeben
  • 69.
    @Midas LookupsBen Langhinrichs( geniisoftware )Auslesen von Daten aus RichTextSyntax wie @DBColumn und @DBLookupFree download: http://www.geniisoft.com/showcase.nsf/MidasLookups
  • 70.
    @Midas LookupsErweiterte MöglichkeitenBeispiel:Sortierte Ausgabe aller Listenpunkte
  • 71.
    Ist RichText Itemleer??@Length(@Text(body))-1@Attachmentsrtitem.ValueLengthrtitem.EmbeddedObjectsAttachments OKAber: Doclinks, Inline Images, Hotspots (Button)
  • 72.
    Ist RichText Itemleer?DEMO - Is Item empty?
  • 73.
    Arbeiten mit RichTextC/C++ API oder LS2CAPINormundsKalbernzinLotusScript to Lotus C API Programming Guide ( ls2capi.com )Lee PowellLotusScriptor'sPlain Simple Guide to the Lotus Notes C++ API Download : http://www.eknori.de/downloads/capibook.pdfEthannCastellGettingstartedwith the C-APIControlrichtextcontentwithprecisionusing the C-APIThe View, 09 / 11 , 2007
  • 74.
    Einordnung der C-APILotusScriptVisual Basic (COM)JAVAJNINotes Object Interface (NOI)C++ APINotes Core ( C API )Betriebssystem
  • 75.
    Ist RichText Itemleer?LS2CAPI to the rescue!Leeres RTI besitzt nur einen CDRecord von Typ Text
  • 76.
    Header / FooterErstellen/ ÄndernAnwendungseigenschaften ( global )DokumenteneigenschaftenKeine Möglichkeit über @Formel oder LotusScript
  • 77.
    Header / FooterInformationensind in RichText item gespeichert
  • 78.
  • 79.
    Inline ImagesAuf InlineImages kann nicht über die embedded objects Eigenschaft zugegriffen werdenInline Images werden z.B. nicht bei DAOS berücksichtigt.Es gibt keine Methoden, um Inline Images mit LotusScript so umzuwandeln, daß sie als Anhang im Dokument gespeichert werden.
  • 80.
    Inline ImagesWie istein Inline Image gespeichert ?
  • 81.
  • 82.
    Inline ImagesrtLib: frameworkof LotusScript classes to work with Notes Rich Text on 32-bit versions of Domino on AIX, Solaris (SPARC), Linux, MacOS, OS X (currently PowerPC only) and Windows.NormundsKalnberzinshttp://www.rtlib.com/
  • 83.
    ReplaceInline Image Bilder,die aus der Zwischenablage in ein Dokument eingefügt werden, werden bei DAOS nicht berücksichtigt. Methoden zum Umwandeln in ein Attachment gibt es in Lotus Notes nicht.Funktion muss folgende Voraussetzungen erfüllenUmwandeln des inline image in ein AttachmentErsetzen des inline image durch das AttachmentBeibehalten der Position
  • 84.
    ReplaceInline ImageDas Attachmentwird an die Position des Inline Image gesetzt.
  • 85.
  • 86.
    Insert RichtextintoRichtextnotesRichTextRange.FindAndReplace( target$, replacement$ , [ options& ] )Damit lässt sich aber nur Text innerhalb von RichText finden und ersetzenFür das Einfügen eines kompletten RichText Items oder Teile davon an eine definierte Stelle in einem anderen RichText Item gibt es keine Methode.
  • 87.
  • 88.
  • 89.
    JW Player -MediaplayerJW Player: Ein paar Zeilen Code für einen Mediaplayer für Flash und HTML5 supportSkins, Plugins und Playlistshttp://www.longtailvideo.com/players/
  • 90.
    JW Player -Mediaplayer
  • 91.
    jQueryfreie, umfangreiche JavaScript-Klassenbibliothek,welche komfortable Funktionen zur DOM-Manipulation und -Navigation zur Verfügung stellthttp://www.reizkraft.com/content/die-43-sch%C3%B6nsten-jquery-plugins-f%C3%BCr-webdesignAnimatedgifcreatedwith http://picasion.com/
  • 92.
    UIZE – JavaScriptFramework„You Eyes“ OpenSource, MIT oder GNU GPLUnterstützung von …Widgets, Ajax, DOM, Templates …Mobile Deviceshttp://www.uize.com/
  • 93.
    UIZE – JavaScriptFrameworkSample : Resizer
  • 94.
    Xpages und @FormulaNur97 der 274 @Formeln können in SSJS verwendet werdenhttp://www-10.lotus.com/ldd/ddwiki.nsf/dx/List_of_Formula_Not_Supported_In_XPagesMichael Gollmick hat ein paar Formeln umgesetzt@WebDBNamehttp://blog.gollmick.de/mgoblog.nsf/40f2c735481f54dd80256d650047636c/0687660450ad65bdc125754a008357ce?OpenDocument@URLEncode, @URLDecodehttp://blog.gollmick.de/mgoblog.nsf/dx/some-more-Functions-for-XPages-URLEncode-URLDecode.htm
  • 95.
    Q + AMail:eknori@eknori.deBlog: http://www.eknori.deSametime: Bleedyellow.comTwitter: Eknori