dnug35 ak-dev.071111-cookbook

85
DNUG Konferenz: Wie werden wir morgen arbeiten? Social Business becomes real. Wie werden wir morgen arbeiten? The Lotus Code Cookbook 7. bis 9. November 2011 Welcome Kongresshotel Bamberg Ulrich Krause, is@web, industrial services AG 35. DNUG Konferenz Mit freundlicher Unterstützung von:

Upload: ulrich-krause

Post on 08-Dec-2014

1.421 views

Category:

Documents


3 download

DESCRIPTION

In loser Folge werden Tipps und Tricks aus allen Bereichen der Programmierung in Lotus Notes/Domino vorgestellt. @Formula, LotusScript, XPages, LS2CApi.Wie konfiguriere ich den Domino Designer?Welche kostenlosen Tools können mir meine Arbeit erleichtern?Warum ist es wichtig, richtig zu "dimmen"?Richtext kann mit LotusScript im Backend nicht in Richtext eingefügt werden. Oder etwa doch? @Transform / @Sort. Was kann man denn damit machen?8.5.3, was gibt es Neues im Bereich @Formula / LotusScript.Zielgruppe sind alle, die sich mit Applikationsentwicklung beschäftigen. Anfänger und "alte Hasen"; es ist für jeden etwas dabei.Kenntnisse: Grundlagen der Entwicklung in Lotus Notes/Domino

TRANSCRIPT

Page 1: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten? Social Business becomes real.

Wie werden wir morgen arbeiten? The Lotus Code Cookbook

7. bis 9. November 2011 Welcome Kongresshotel Bamberg

Ulrich Krause, is@web, industrial services AG

35. DNUG Konferenz

Mit freundlicher Unterstützung von:

Page 2: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Lotus Notes / Domino Administrator & Entwickler seit 1993 Business Application Developer

bei is@web, Niederlassung Ratingen OpenNTF http://openntf.org

• !!HELP!!, Cebulon, Trigger Happy• diverse XPages Custom Controls

IBM Champion 2011• https://www-304.ibm.com/connections/blogs/socialbusiness/entry/

announcing_the_2011_ibm_champions_for_collaboration_solutions4?lang=de

Blog http://www.eknori.de Notes Forum (http://www.atnotes.de)

About: Ulrich Krause

Page 3: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Allgemeines Optionen des Designers Tools @Formeln LotusScript Bearbeitung von Richtext ( C-Api / LS2CAPI ) Javascript (Frameworks) XPages

Agenda

Page 4: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Alle Sprachen verwenden die gleichen Kernfunktionen Bei gleicher Funktionalität sind Formeln performanter Nicht alle Formeln können in XPages verwendet werden.

• Nur 97 der insgesamt 274 Formeln• http://www-10.lotus.com/ldd/ddwiki.nsf/dx/List_of_Formula_Not_Supported_In_XPages

Warum @Formeln verwenden ?

LotusScript Java @Formula

ByteCode Interpreter FormulaEngine

Notes Core API

Page 5: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Wichtigste Codezeile in LotusScript Option Declare “zwingt” zum Deklarieren aller Variablen und

erspart das Beseitigen von schwer auffindbaren Fehlern Alle Fehler sind runtime Fehler

Option Declare

Page 6: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Ohne Option Declare

Mit Option Declare

Option Declare

Page 7: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Der wichtigste Grund, warum wir „Option Declare“ verwenden MÜSSEN, ist …

Option Declare

Page 8: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Every time you don‘t use „Option Declare“, God will kill a kitten !!

Option Declare

Page 9: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Erstellt eine Referenz zu einem Objekt, ohne das Objekt zu erstellen

Achtung : Dim i, j, k As Integer

Dim i As Integer, j As Integer, k As Integer

Dim Statement

Page 10: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Ausführungszeiten messen mit Getthreadinfo Wird z.B. ein Integerwert in einem Variant gespeichert, so

muss Notes intern eine Typumwandlung vornehmen. Das kostet Zeit !!

Dim Statement und Performance

Page 11: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

16.260 Dokumente 10 Testläufe / Methode Tabelle zeigt die Durchschnittswerte

GetNextDocument vs. GetNthDocument

Page 12: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

113.610 Dokumente 4 Testläufe / Methode Tabelle zeigt die Durchschnittswerte

GetNextDocument vs. GetNthDocument

Page 13: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Script / Comment Templates

Page 14: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Fonts / Colors

Individuelle Einstellungen für bessere Lesbarkeit

http://web.nickshanks.com/fonts/microsoft-core-web-fonts

Page 15: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Zeilennummern einblenden

Page 16: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

One 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.

Soft-Coded Field Names

Page 17: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Kein 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: OpenLog

– http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=OpenLog

Logging

Page 18: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

OpenLog

Page 19: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Domino Designer extension Sucht in einer oder meheren Anwendungen Unterstützt

• Java, • Javascript, • Lotusscript,• @Formula,• Xpages

Source Sniffer

http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=Source%20Sniffer

Page 20: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

NotesHound

http://domino-80.prominic.net/A55BE4/NotesHoundWeb.nsf/webpages/index.html

Page 21: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Performancegewinn, 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-views

• http://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

NotesView.AutoUpdate = false

Page 22: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Neu ab 8.5.1 Nur in Ansichtsspalten zu verwenden Option „Maintain folder unread

information“ muß aktiviert sein Option „ Don't maintain

Unread marks“ darf nicht aktiviert sein“

@WhichFolders

Page 23: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

db.FolderReferencesEnabled = True $FolderInfo und $FolderRefInfo

– Ansichten können aus der Mailschablone kopiert werden

@WhichFolders in LotusScript I

Page 24: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

CreateViewNavFrom Keine zusätzlichen Designelemente erforderlich Aber langsam bei einer großen Ordneranzahl

@WhichFolders in LotusScript II

Page 25: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Wie @WhichFolders mit zusätzlichen Möglichkeiten, um die Ordnereigenschaften eines Dokuments zu ändern.

Uncheck „Don‘t maintain unread marks“

@Command( [DiscoverFolders];title)

Page 26: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Seit Version 6 Entspricht LotusScript statement ForAll 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 Liste Kann in Ansichtenspalten verwendet werden

@Transform

Page 27: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Names.nsf - People\By Client Version Unübersichtlich, da alle

Versionen dargestellt werden.

@Transform (Sample)

Page 28: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Mit wenigen Handgriffen Ordnung schaffen

People\By Client Version (new)

Page 29: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

@Transform + @DocFields

http://www.eknori.de/2011-07-23/formula-magic/

Page 30: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Seit Version 6 Lt. Designer Hilfe nur mit @Transform zu verwendbar ( „not

valid in other context“ ) Funktioniert aber z.B auch in View Selection

@Nothing

Page 31: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Sortiert eine Liste– [ACCENTSENSITIVE]– [ACCENTINSENSITIVE]– [ASCENDING]– [CASESENSITIVE]– [CASEINSENSITIVE]– [CUSTOMSORT]– [DESCENDING]– [PITCHSENSITIVE]– [PITCHINSENSITiVE]

Dies lässt sich auch kombinieren– [ASCENDING]:[CASESENSITIVE]

@Sort

Page 32: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

@Sort kann aber noch mehr – [CustomSort]

@Sort

Page 33: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Ändert den Kontext einer Formel Nachfolgende Befehle werden

im neuen Kontext ausgeführt

@UpdateFormulaContext

Page 34: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

@LocationGetInfo• @LocationGetInfo([HomeServer])• @LocationGetInfo([InternetMailAddress])• @LocationGetInfo([NamePreference])• @LocationGetInfo([BookmarksFilename])• @LocationGetInfo([SametimeServer])

@LocationGetInfo([UNID])• http://www.thenorth.com/apblog4.nsf/0/60C5A5C6540A2D648525719F0012BDE

Get the current location name

Page 35: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

@LocationGetInfo([FullName])• @LocationGetInfo([AbbreviatedName])

Damit erhalten wir Zugriff auf JEDES beliebige Feld in der aktuellen Arbeitsumgebung

Get the current location name

Page 36: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

New @Function to support Machine Specific Policy Settings as of Notes / Domino 8.5.3

@GetMachineInfo (8.5.3)

Page 37: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

@GetMachineInfo([EnvVariable];"Location");• Liefert den gewünschten Wert für alle Variablen in der notes.ini

zurück• Egal ob mit „$“ oder ohne• Kann keine Werte setzen

@Environment(„Location“)• Liefert nur Variablen mit „$“ zurück ($DDM_SERVER)• Kann auch Werte in der notes.ini setzen

@GetMachineInfo vs. @Environment

Page 38: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Überprüft Formeln

@CheckFormulaSyntax

Page 39: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

@CheckFormulaSyntax (LotusScript)

Verwendet LotusScript EVALUATE

Page 40: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Schade

Und was macht IBM?

Page 41: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Ermittelt die Anzahl von Werktagen in einem Datumsbereich• Bestimmte Tage können als Werktage ausgeschlossen werden• Ebenso lassen sich Feiertage als Werktage ausschließen

@BusinessDays

Beispiel: 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

Page 42: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Evaluate zur Einbindung von @BusinessDays in LS

@BusinessDays (LS)

Page 43: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Keine Fehlermeldung, wenn keine Entsprechung in der Ansicht gefunden wird

@DbLookup(""; ""; "All"; Source; 2;[FailSilent])

@DbLookup + [FailSilent]

Page 44: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Gibt die DocumentUNID eines @DBLookup Ergebnisses zurück

@DbLookup(""; ""; "All"; “test”; 1; [FailSilent]:[ReturnDocumentUniqueID]);

Macht eine zusätzliche Ansicht mit einer Spaltenformel @Text(@DocumentUniqueID) überflüssig

[ReturnDocumentUniqueID]

Page 45: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Wo ist die notes.ini? • @Prompt([OK];“notes.ini path“;@configfile)

Notes.ini bearbeiten• @Command([Execute];"

@ConfigFile

Page 46: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Wozu ist die Eigenschaft „Programmatic Use“ da?

Keine Redundanz komplizierterSpaltenformeln. Das Ergebnis einer Berechnung kann in einer anderen Spalte verwendet werden

Programmatic Use

Page 47: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Element 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)

Permutation Comparison In Hide Formulas

Page 48: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Regeln haben starre, vorgegebene Bedingungen

Mail Rules Extended

Page 49: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Der Client speichert die Regeln im Kalenderprofil Auf dem Server werden die Regeln in “mailrule”

Dokumenten gespeichert

Mail Rules Extended

Page 50: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Mehr Möglichkeiten bei der Regelerstellung Erfordert Änderung an names.nsf Kein grosser Aufwand beim Upgrade

Mail Rules Extended

Page 51: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Einfache Erweiterung in names.nsf• Create a new subform• Create 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 subform

• http://www.eknori.de/2008-06-10/tweak-the-auto-populated-groups-feature-in-domino-85

Tweak Auto-Populated Groups

UPDATE 8.5.3 :http://bodek.uwindsor.ca/users/b/bodek/bodekblog.nsf/d6plinks/BFRK-8MRPWN

Page 52: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Unter Umständen sollen die Bearbeiter eines Dokuments nicht sichtbar sein.

How to get rid of $UpdatedBy?

Page 53: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Fehlende Funktionen hinzufügen• Z.B. : User aus Gruppe entfernen

Verlagerung administrativer Aufgaben in den Servicedesk NotesAdministrationProcess class Seit Release 6 AddGroupMembers method aber keine RemoveGroupMembers method

Custom Administration Process

LotusScript Gold Collection (1.3):[*] NotesGroupManager: makes it easy to scan and manage group memberships in public and private address books, including groups with subgroups.

http://www.openntf.org/projects/pmt.nsf/ProjectLookup/LotusScript%20Gold%20Collection

Page 54: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Custom Administration Process

Page 55: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

admin4.nsf anpassen

• Neue Ansicht erstellen oder• Spalte „Action“ anpassen

Custom Administration Process

http://www.eknori.de/2007-12-15/delete-group-members-using-the-administration-process/

Page 56: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Verwendung von ZIP/UNZIP mit LotusScript Kostenlos

Zip / UnZip

http://www.vcode.no/vcode.nsf/downloads/VCZIPSUP

Page 57: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Anhänge werden beim Versenden automatisch gepackt Genaue Beschreibung der Anpassungen

im Lotus Notes & Domino Wiki

• http://www-10.lotus.com/ldd/dominowiki.nsf/page.xsp?documentId=7963EB58BAD528FB852577AE0062A72A&action=openDocument&mode=original

Auto-Zip Mail Attachments

Page 58: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Reports sollen auf einem Server erstellt werden, auf dem kein Excel installiert ist. ( Linux )

http://jxls.sourceforge.net/index.html• Support for Excel 2007 OOXML (.xlsx) file format

XLS ohne Excel erstellen

Page 59: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

XLS ohne Excel erstellen

Page 60: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

%Include "symphonylsx.lss„ OpenNTF.org Contacts Experience

– http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=OpenNTF.org%20Contacts%20Experience

MailMerge Letter Export Contacts

• Symphony• MS Office

Lotus Symphony Toolkit

Page 61: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

doc.GetRead([username])• Ab Release 8.5• Gibt „true“ zurück, wenn das Dokument vom aktuellen User gelesen

wurde• Wird ein Username angegeben, wird der Lesestatus dieses Users

zurückgegeben

Wurde das Dokument gelesen?

Page 62: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Ben Langhinrichs ( genii software ) Auslesen von Daten aus RichText Syntax wie @DBColumn und @DBLookup

@Midas Lookups

Free download: http://www.geniisoft.com/showcase.nsf/MidasLookups

Page 63: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Erweiterte Möglichkeiten Beispiel: Sortierte Ausgabe aller Listenpunkte

@Midas Lookups

Page 64: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

@Length(@Text(body))-1

@Attachments

rtitem.ValueLength

rtitem.EmbeddedObjects• Attachments OK• Aber: Doclinks, Inline Images, Hotspots (Button)

Ist RichText Item leer??

Page 65: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Ist RichText Item leer?

Page 66: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

C/C++ API oder LS2CAPI Normunds Kalbernzin

• LotusScript to Lotus C API Programming Guide ( ls2capi.com )

Lee Powell• LotusScriptor's Plain Simple Guide to the

Lotus Notes C++ API • Download :

http://www.eknori.de/downloads/capibook.pdf

Ethann Castell• Getting started with the C-API• Control rich text content with precision using the C-API• The View, 09 / 11 , 2007

Arbeiten mit RichText

Page 67: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Einordnung der C-API

Betriebssystem

Notes Object Interface (NOI)

Lotus Script

C++ API

Notes Core ( C API )

Visual Basic (COM)JAVA

JNI

Page 68: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

LS2CAPI to the rescue!• Leeres RTI besitzt nur einen CDRecord von Typ Text

Ist RichText Item leer?

Page 69: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Erstellen / Ändern• Anwendungseigenschaften ( global )• Dokumenteneigenschaften

Keine Möglichkeit über @Formel oder LotusScript

Header / Footer

Page 70: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Informationen sind in RichText item gespeichert

Header / Footer

Page 71: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

LotusScript Library / LS2CAPI

Header / Footer

Page 72: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Auf Inline Images kann nicht über die embedded objects Eigenschaft zugegriffen werden

Inline 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 Images

Page 73: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Wie ist ein Inline Image gespeichert ?

Inline Images

Page 74: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Inline Images

Andre Guirard

http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=LotusScript%20Gold%20Collection

Page 75: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

rtLib: 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.

Inline Images

Normunds Kalnberzins http://www.rtlib.com/

Page 76: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

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üllen• Umwandeln des inline image in ein Attachment• Ersetzen des inline image durch das Attachment• Beibehalten der Position

Replace Inline Image

Page 77: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Replace Inline Image

Das Attachment wird an die Position des Inline Image gesetzt.

Page 78: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

notesRichTextRange.FindAndReplace( target$ , replacement$ , [ options& ] )

Damit lässt sich aber nur Text innerhalb von RichText finden und ersetzen

Fü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 Richtext into Richtext

Page 79: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Insert Richtext into Richtext

Page 80: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Insert Richtext into Richtext

Page 81: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

JW Player: Ein paar Zeilen Code für einen Mediaplayer für Flash und HTML5 support

Skins

JW Player - Mediaplayer

http://www.longtailvideo.com/players/

Page 82: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

JW Player - Mediaplayer

Page 83: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

freie, umfangreiche JavaScript-Klassenbibliothek, welche komfortable Funktionen zur DOM-Manipulation und -Navigation zur Verfügung stellt

jQuery

http://www.reizkraft.com/content/die-43-sch%C3%B6nsten-jquery-plugins-f%C3%BCr-webdesignAnimated gif created with http://picasion.com/

Page 84: Dnug35 ak-dev.071111-cookbook

DNUG Konferenz: Wie werden wir morgen arbeiten?

Nur 97 der 274 @Formeln können in SSJS verwendet werden

– http://www-10.lotus.com/ldd/ddwiki.nsf/dx/List_of_Formula_Not_Supported_In_XPages

Michael Gollmick hat ein paar Formeln umgesetzt• @WebDBName

– http://blog.gollmick.de/mgoblog.nsf/40f2c735481f54dd80256d650047636c/0687660450ad65bdc125754a008357ce?OpenDocument

• @URLEncode, @URLDecode– http://blog.gollmick.de/mgoblog.nsf/dx/some-more-Functions-for-XPages-

URLEncode-URLDecode.htm

Xpages und @Formula

Page 85: Dnug35 ak-dev.071111-cookbook

• Mail: [email protected]• Blog: http://www.eknori.de• Sametime: bleedyellow.com• Twitter: eknori

Q + A