Lotus Notes/Domino Social Edition

Matthias Köpp  18 January 2012
Für die in diesem Jahr anstehende Notes/Domino-Version 8.5.4 gibt es die Möglichkeit, sie um ein separates Paket von neuen Features zu erweitern. Dieses Paket nennt sich Notes/Domino Social Edition und enthält hauptsächlich Erweiterungen für Notes und iNotes, welche die Integration erhöhen.

Weitere Details findet man im Blog von Ed Brill sowie in den News von IBM.

Neuer Blog: Soziale Netzwerke und soziale Software

Stefan Gebhardt  18 January 2012
Einmal sei Werbung in eigener Sache erlaubt. FSS hat gestern einen weiteren Blog zum Thema der sozialen Netzwerke und sozialer Software veröffentlicht.

Wir freuen uns, wenn die Leser dieses Blogs auch beim (noch) kleinen Bruder bzw. der kleinen Schwester mit lesen und auch gerne diskutieren.

Der Blog ist erreichbar unter social.fss.de - oder am besten gleich in den Feedreader aufnehmen unter blogs.fss.de/kategorie/social/feed.

Aus LotusLive wird "IBM SmartCloud for Social Business"

Stefan Gebhardt  17 January 2012
Auf der aktuell stattfindenden Lotusphere in Orlando hat IBM verkündet, dass LotusLive der IBM SmartCloud-Familie beitreten wird. Damit hat ein weiteres Produkt sein Lotus-Attribut (nach z.B. IBM Connections - vormals Lotus Connections) verloren.

Zunächst verändert sich nichts, die offizielle Ankündigung spricht aber davon, dass in den nächsten Releases in diesem Jahr die Namensänderung sichtbar wird.

"Today there is no change to the way you and your users log-in and access your LotusLive services. During our planned release cycle this year, you will begin to notice the name change within the service with new features and enhancements.  We will be back in touch in advance of changes within the service."

IBM bleibt also seinem Konzept treu, immer wieder die Namen von Produkten während des Lebenszyklus zu verändern und so zu Intransparenz beizutragen. Oder wer kann noch alle Namen zum aktuellen "Lotus iNotes" (für Domino - nicht für LotusLive) in den richtigen historischen Zusammenhang bringen? ;-)


Development Best Practice

Matthias Köpp  12 January 2012
Seit kurzem findet man auf der IBM Site ein Redbooks Wiki. Dieser Guide enthält fast 50 Artikel mit Informationen zur Anwendungsentwicklung mit Domino. Die Themen reichen dabei von grundlegenden Programmiertechniken bis hin zu Betriebssystemfragen und Strategien zur Infrastruktur.
Ein besonderer Schwerpunkt liegt natürlich auf XPages und Web-Entwicklung.

Rich-Text-Felder unter XPages auf Leer abprüfen

Jörg Fengler  11 January 2012
Rich-Text-Felder waren seit jeher für Überraschungen gut. Dies ist unter XPages nicht anders.

Möchte man zum Beispiel prüfen ob ein Benutzer etwas in ein Rich-Text-Feld eingetragen hat, stellt man verwundert fest, dass das Feld selbst wenn man noch nichts eingegeben hat mitnichten leer ist.
Schaut man sich die XPage im Browser etwas genauer an, stellt man fest, dass der CKEditor gleich am Anfang in das Feld zwei Tags setzt, womit die üblichen Abfragen ob ein Feld leer ist ins Leere laufen.

Will man wissen, ob das Feld wirklich leer ist, muss man zunächst alle Tags aus dem Feld entfernen, danach die Länge ermitteln und diese auf 0 abfragen.

Bei Javascript (clientseitig ab 8.5.2) kann man mit dem folgenden Ausdruck die Textlänge ohne Tags ermitteln:

CKEDITOR.instances['#{id:inputRichText}'].getData().replace( /<[^<|>]+?>/gi,'' ).replace(/^\s+|\s+$|\t+/g, '').length


Serverseitig kann man in Javascript diesen Code verwenden:

@Length(getComponent("inputRichText").getValue().getContentAsText().replace( /<[^<|>]+?>/gi,'' ).replace(/^\s+|\s+$|\t+/g, ''))

    JDBC-Projekt für den Zugriff auf Domino-Daten

    Ralf Ritter  11 January 2012
    Auf OpenNTF.Org ist seit kurzen ein Projekt veröffentlicht, das sich mit dem Zugriff auf Domino-Daten mittels JDBC-Driver - insbesondere über XPages, aber auch Drittanwendungen wie z. B. Reportgeneratoren, die über JDBC kommunizieren können - beschäftigt. Es ermöglicht den Zugriff auf Ansichten über Server- und Datenbankengrenzen hinweg und erlaubt so z. B. die Auswertung und Darstellung verschiedenster Datenbestände.
    Als Basis wird SQLite verwendet. Erforderlich sind Domino 8.5.3, die neueste Extension Library, sowie ein weiteres OpenNTF-Projekt mit dem Namen OSGI Tasklet Service for IBM Lotus Domino.
    Testen konnten wir bisher noch nicht, zumal die Implementierung nicht ganz banal und offenbar etwas aufwendiger ist. Insgesamt aber für bestimmte Szenarien ein recht spannendes Projekt...

    Vollständiger Artikel

    Lotus Notes: effektiver arbeiten mit Plug-ins und Widgets

    Stefan Gebhardt  20 December 2011
    Manfred Lenz und Tom Loske haben auf tecchannel einen sehr schönen und übersichtlichen Artikel zum Umgang mit Widgets und Plug-Ins im Notes-Client geschrieben.

    Hier der Link zum Artikel.

    Symphony Viewer für iOS

    Matthias Köpp  13 December 2011
    Android-Nutzern steht seit einiger Zeit ein Viewer für Lotus Symphony Dateien zur Verfügung. Seit dem 12.12.2011 können nun auch iOS-Nutzer Dateien im ODF-Format betrachten. Details und Download gibt es bei iTunes.

    CKEditor Konfiguration

    Jörg Fengler  28 November 2011
    Nach dem Ausflug in die klassische Notes Web-Entwicklung und dem CKEditor
    Der CKEditor im klassischen Notes Web Entwicklung
    Der CKEditor im klasssichen Notes Web Entwicklung II)
    geht es nun zurück zu den XPages.


    CKEditor Konfiguration in XPages


    Den CKEditor konfiguriert man in XPages am Besten über die Dojo-Attribute.
    So kann man bestimmen welche Funktionen dem Web-Benutzer zur Verfügung stehen sollen. Soll er html-Code eingeben können oder nicht? Soll er Bilder einbinden können? Zudem kann man dem CKEditor auch ein anderes Aussehen verpassen. (Skin)
    Anbei ein kleines Beispiel:
    Image:CKEditor Konfiguration

    In diesem Fall würde er immer als Sprache deutsch verwenden, die mitgelieferte Skin Kama verwenden und eine selbstdefinierte Toolbar anzeigen.
    Wer wissen will was man alles zu konfigurieren vermag, folge einfach diesem Link zur Konfiguration.



    CKEditor Konfiguration bei der klassischen Notes Web Entwicklung


    Bei dem Beispiel aus den vorherigen CKEditor Blogs, passt man am Besten die ckeditor_loader.js Datei an.
    Z.B. wie folgt:


    // Konfiguration des Editors
    function initCKEditor( CKEditorField ){
          var editor = CKEDITOR.replace( CKEditorField, {
                  filebrowserUploadUrl: document.location.pathname.split('.nsf')[0] + '.nsf/ckupload?CreateDocument',
                         
                  // Definiere die Sprache fuer die Tooltipps
                  language : 'de',
                 
                  // toolbar soll nicht auf und zugeklappt werden
                  toolbarCanCollapse : false,

                  // verhindere dass der Elementpfad in der Baseline im CKEditor angezeigt wird
                  removePlugins : 'elementspath,save',

                  // welche Skin soll genutzt werden
                  skin : 'kama',

                  toolbar : [['Bold','Italic','Underline','-', 'TextColor', '-', 'BulletedList','-','Outdent','Indent','-','InsertSKLogo' ]]
          } );
    }


    CKEditor für die klassische Notes-Web-Entwicklung II (Infos zur Demo und Integration)

    Jörg Fengler  28 November 2011
    Auf zum zweiten und vermutlich nicht letzten Eintrag zum CKEditor.
    Im letzten Eintrag hatte ich auf eine Demo-Datenbank verwiesen, wo der Rich-Text-Editor in eine Form eingebunden worden war.

    Auf diese Demo will ich heute genauer eingehen.

    Zur Demo: Die vier wichtigen Stellen

    1. Zum einen muss das Rich-Text-Feld dem Klassennamen ckeditor-field verpasst bekommen (in der Demo-Form)
    Image:CKEditor für die klassische Notes-Web-Entwicklung II (Infos zur Demo und Integration)

    2. Dann müssen die Pfade korrekt gesetzt sein (in der Demo-Form)
    Hier ein Beispiel wie die Pfade aussehen müßten, wenn man die Dojo und den CKEditor-Version auf einem 8.5.2 Server einbinden will.
    Wer die Demo unter 8.5.3 laufen lassen will muss den hervorgehobenen Pfad anpassen
    Image:CKEditor für die klassische Notes-Web-Entwicklung II (Infos zur Demo und Integration)

    3. Die Javascript-Lib ckeditor_loader.js
    Durch diese Routine werden alle Rich-Text Felder durch den Editor ersetzt,
    Man kann die Stelle auch gut dazu nutzem um den CKEditor zu konfigurieren.
    Um die Demo zum Fliegen zu bringen, muss hier nichts verändert werden.

    4. Der Agent PassthuHTML
    Der Agent sorgt dafür dass der eingebene Code im Rich-Text-Feld auch als HTML-Code angezeigt wird.
    Hier muss für jedes Rich-Text-Feld eine Funktion aufgerufen werden.



    Integration des CKEditors in die Notes Datenbank

    Doch was ist wenn man z.B. die aktuelle Version des CKEditors einbinden will?
    Oder wenn man den Editor gerne mit eigenen Plugins erweitern möchte.

    Man könnte eine neue Version des CKEditor auf dem Server mit ablegen.
    Schöner wäre es jedoch, wenn man die neue CKEditor-Version in die Datenbank integrieren könnte.

    Den neuen CKEditor kann man relativ leicht in die Datenbank kopieren.
    Hierzu wechselt man zunächst in die Java-Perspektive (Menu-Punkt: Window/Open Perspective/Java) und kopiert das ckditor-Verzeichnis in die Datenbank.
    Image:CKEditor für die klassische Notes-Web-Entwicklung II (Infos zur Demo und Integration)

    Ändert man den obigen Pfad (2) entsprechend um.
    Image:CKEditor für die klassische Notes-Web-Entwicklung II (Infos zur Demo und Integration)
    greift man nun auf den CKEditor in der Datenbank zu.

    Allerdings läuft nun das komprimierte Javascript des Editors auf den folgenden Fehler:
    m.lang.contextmenu is undefined.

    Wühlt man sich durch verschiedene Foren, stellt man fest, dass bereits mehrere Leute über diese oder ähnliche Meldungen gestolpert sind.  Übrigens unabhängig von Notes.
    Wirft man einen Blick ins Log des Notes-Servers, sieht man, daß der CKEditor beim Nachladen weiterer Javascript-Routinen auf die Nase fällt.
    Beim Nachladen wird an den Pfad der Javascriptroutine ein Parameter angehangen (?t=xxxxx). Domino scheint aufgrund des Parameters fälschlicherweise zu glauben, daß es sich um ein Befehl für ihn handelt und läuft dabei auf einen Fehler.

    Nimmt man nicht den komprimierten Code des Editors, sondern den Orginal-Source Code
    Image:CKEditor für die klassische Notes-Web-Entwicklung II (Infos zur Demo und Integration)
    stellt man verblüfft fest, dass es damit geht.
    Allerdings braucht nun der Editor ungleich länger zum Laden des Javascript-Codes.

    Sum summarum
    Ist das System performant genug, so kann man den CKEditor bereits in eine Notes-Datenbank integrieren,
    Besteht man auf den perfomanteren Weg und will den komprimierten Code des Editors einbinden, so muß entweder der CKEditor auf dem Server liegen oder man muss dem CKEditor abgewöhnen den Parameter mitzugeben. Allerdings dürfte es sehr mühselig sein im komprimierten ckeditor.js-Code die Stelle zu finden und zu beheben.