FSS.social
20Feb 140

Empfehlung: stackoverflow.com für X-Pages-Entwickler

am Donnerstag, den 20. Februar 2014

Niklas Heidloff hat in einem Blogbeitrag einen Hinweis auf die Community stackoverflow.com  anlässlich der 2000. Frage zum Thema X-Pages veröffentlicht, den wir gerne aufgreifen.

Bei einer Beantwortungsquote von 86% hat sich stackoverflow.com damit zu einer guten Quelle für X-Pages-Entwickler etabliert. Nimmt man die Extended Lib und Server Side Javascript Language dazu, kommt man sogar schon auf über 2500 Fragen.

Besonders interessant für reine "Notes-Entwickler" ist die Tatsache, dass viele Java-Fragen auch von Java-Entwicklern beantwortet werden und somit das Inseldenken vielleicht etwas aufgebrochen wird.

stackoverflow

11Jun 130

CKEditor und IE10

am Dienstag, den 11. Juni 2013

Ältere Versionen des CKEditors vertragen sich nicht mit IE10.
(Die Fläche, wo man normalerweise den Text bearbeiten kann, wird ausgegraut angezeigt)
Die Inkompatibilität wurde mit der CKEditor Version 3.6.6 behoben.

Bei Domino tritt die Inkompatibilität unter Domino 8.5.2 auf und ist mit 8.5.3 behoben.

14Jan 130

Connect 2013 in Orlando

am Montag, den 14. Januar 2013

In knapp zwei Wochen startet in Orlando die "IBM Connect 2013", bei der erstmals die altbekannte Lotusphere und die relativ neue IBM Connect zusammengeführt werden. Wie erwartet gibt es dort einige interessante Beiträge zu XPages und mobilen Applikationen.
Details zur Konferenz findet man hier.

9Nov 120

IBM Social Business Toolkit

am Freitag, den 9. November 2012

IBM hat das "Social Business Toolkit" veröffentlicht und will damit Entwicklern vornehmlich den Zugriff auf "IBM Connections" und "IBM SmartCloud für Social Business" (vormals Lotus Live) durch ihre eigenen Anwendungen vereinfachen. Insbesondere für Domino-Entwickler ist dies im Rahmen der bald erscheinenden 8.5.4 Social Edition ein interessantes Tool.

Einen schönen Überblick gibt dieses Video von Niklas Heidloff/IBM.


Link auf die deutsche Seite: http://www.ibm.com/cloud-computing/social/de/de/toolkit/

Link auf die Greenhouse-Seite: https://greenhouse.lotus.com/wpsgh/wcm/connect/ghcontent/lotus+greenhouse+next+site/home/labs/ibm+social+business+toolkit

5Nov 120

XPages und Mehrfachwerten

am Montag, den 5. November 2012

Hat ein Feld mehrere Werte so werden die Werte von XPages standardmäßig zunächst durch Komma getrennt angezeigt.

Sollen Werte eines Eingabefeldes zeilenweise (jeder Wert in einer eigenen Zeile) angezeigt werden,
so muss unter den Properties beim Eintrag <font color='blue'>multipleSeperator </font> der Wert durch den computed Ausdruck <font color='blue'><htmlblock>return("\n")</htmlblock> </font> ersetzt werden,

Xpages und Mehrfachwerte-1

Kleine Anmerkung:
Der Namespicker aus der Extension Library besteht allerdings bei seinem Eingabefeld auf Komma zum Trennen von mehreren Namen.

Möchte man dagegen bei der Anzeige einer Ansichtspalte mehrere Werte zeilenweise getrennt anzeigt werden,
lässt sich dies wie folgt umsetzen.

1) Zunächst müssen die Werte der Spalte als HTML-Code interpretiert werden.

Xpages und Mehrfachwerte-2
2) Danach sorgt man über einen eigenen Konverter, dass die Mehrfachwerte durch <br /> Tags voneinander getrennt werden.
getAsObject: <font color='blue'><htmlblock> return value </htmlblock></font>
getAsString: <font color='blue'><htmlblock> value.constructor == Array ? value.join('<br/>'): value;</htmlblock></font>

Xpages und Mehrfachwerte-3

Weiterführende Links;
Beschreibung von Konvertern
Code-Snippet für einen etwas komplexeren Converter für Mehrfachwerte

25Okt 120

Designer Client: Installation des Upgrade Pack 1 für 8.5.3 wenn man bereits eine ältere extended Lib verwendete

am Donnerstag, den 25. Oktober 2012

Wer bei seinem Notes-Designer bereits eine ältere Version der Extended Lib installiert hat, kann bei der Installation des Update Packs 1 eine kleine Überraschung erleben. Wenn das Installationsprogramm eine ältere Version der extended Lib entdeckt, bricht es die Installation ab und verweist auf seine Log-Dateien.

Anbei eine kleine Beschreibung wie man alle alten Elemente der Extended Lib aus dem Designer entfernt.

Schritt 1: Über den Client die Extended Lib deinstallieren
Im Designer wählt man den Menü-Eintrag "
FileApplicationApplication Management" aus und deinstalliert alle Einträge die mit XPages Extension Library, Domino Access Services und Wink zu tun haben
Um die Deinstallation abzuschließen sollte man Notes neu starten.

Schritt 2: Alte Dateien manuell löschen
Anschließend sollte man die folgenden Verzeichnisse überprüfen und die Dateien löschen in deren Dateinamen "
domino.das", "domino.services", "wink" oder "extlib" steht.

- frameworksharedeclipsefeatures

- frameworksharedeclipseplugins

- datadominoworkspaceapplicationseclipsefeatures

- datadominoworkspaceapplicationseclipseplugins

- dataworkspaceapplicationseclipsefeatures

- dataworkspaceapplicationseclipseplugins



Link zu einer englischen Beschreibung der Installation inkl für verschiedene Betriebssysteme

27Sep 120

XPages und die Previous-Next-Pager-Problematik

am Donnerstag, den 27. September 2012

Früher oder später wird jeder XPage-Entwickler im deutschsprachigem Raum gefragt, warum beim Pager ein "Previous" und "Next" steht. (statt ein "Zurück" und "Weiter")

Auch wenn man bei XPages an unzähligen Stellen Werte verändern kann, gehören zum Leidwesen der Entwickler die Beschriftung "Next" und "Previous" vom Pager nicht dazu.
Durchstöbert man das Internet nach Lösungen trifft man auf Vorschläge einen eigenen Pager zu erstellen und das obwohl man ja im Grunde nur ein paar Labels umbenennen wollte.

Inzwischen lässt sich das Problem auch lösen indem man das deutsche Sprachpaket einspielt.
Anbei das Ergebnis als man einem 8.5.3er Domino-Server mit Upgrade Pack 1 das deutsche Sprachpaket spendierte :

XPages Deutsch

25Sep 120

Mehrsprachige Anwendungen unter XPages

am Dienstag, den 25. September 2012

Laut IBM braucht man nur die Lokalisations-Option (bei den XPage Optionen) aktivieren, angeben in welchen Sprachen die Anwendung zur Verfügung stellen soll und erhält nach einem Clean für alle XPages und Customer Controls Elemente Properties Dateien, die man dann einem Übersetzer in die Hand drücken kann.

Anbei ein Screenshot von den Optionen (hier für Englisch/Deutsch wobei Englisch die Standardsprache bzw Orginalsprache ist)

XPages Mehrsprachig-1
Zunächst eine Warnung: Deaktiviert man die Option "Enable localization" werden alle übersetzten Properties-Dateien gelöscht. Entfernt man eine der Sprachen, werden die zugehörigen Dateien der Sprache gelöscht.

In der Praxis extrahiert die Lokalisationsroutine so gut wie möglich alle Texte wie z.B. Labels, Fehlermeldungen etc. Sie wird jedoch keine Texte aus berechneten Feldern oder Texte aus Javascript-Bibliotheken extrahieren.
Hier muß der Entwickler selbst noch einmal Hand anlegen und den Code mittels Javascript aus einer eigenen Property-Datei auslesen. (Beschreibung hierzu folgt)

Als Ergebnis der Extraktion enthält man dann properties-Dateien die wie folgt aussehen können:
<font color="blue"><blockquote><htmlblock>viewColumnHeader11/@value=[de| For Person/Team ]
switchFacet2/xe\:this.facets[1]/xp\:panel[2]/text()[2]=[de| \u00A0 ]
lnkCancel/xp\:eventHandler[1]/xp\:this.action[1]/xp\:actionGroup[1]/xp\:confirm[1]/@message=[de| Cancel adding a new member? ]</htmlblock></blockquote><font color="black">
Also ein paar Dateien bei denen sich so mancher Übersetzer erst einmal verwirrt die Augen reiben dürfte.

Bei kleinen überschaubaren Anwendungen, die nur aus einer Handvoll XPages/Customer Controls besteht ist dies sicher eine mögliche Variante.
Allerdings sollte man auch hier prüfen ob wirklich alle Texte eingefangen wurden und ob bei der Übersetzung nicht versehentlich ein Leerzeichen zu viel gelöscht wurde.

Sobald die Anwendung wesentlich komplexer wird z.B. aus vielen verschachtelten Customer Controls besteht, artet das Übersetzen schnell in eine Form von Schnitzeljagd für Entwickler aus und man fragt sich in welcher der vielen Properties-Dateien das eine oder andere Label noch einmal stand.

Übersetzung hausgemacht:
Alternativ zur obigen Lokalisierungsvariante kann man auch eigene Properties-Dateien erstellen

XPages Mehrsprachig-2

und diese als Datei-Resourcen seiner Anwendung hinzufügen.

XPages Mehrsprachig-3

XPages Mehrsprachig-4
Aus diesen Datei liest man nun die Texte für Labels, Fehlermeldungen, etc

Bei einem Label könnte folgender Javascript-Code stehen: <font color="blue"><blockquote><htmlblock>var message = strings.getString('greeting');
return message</htmlblock></blockquote><font color="black">
In einer Datei steht die passende Begrüßung auf Englisch (strings_en.properties) <font color="blue"><blockquote><htmlblock>greeting=Welcome</htmlblock></blockquote><font color="black">
und in einer anderen die Begrüßung auf Deutsch (strings_de.properties) <font color="blue"><blockquote><htmlblock>greeting=Willkommen</htmlblock></blockquote><font color="black">

Will man beim Willkommen noch den Namen des aktuellen Benutzers mit ausgeben, muss man zwei Stellen anpassen.
Einmal in den properties-Dateien: <font color="blue"><blockquote><htmlblock>greeting=Welcome {0} !</htmlblock></blockquote><font color="black">
Und dann muss man noch dafür sorgen, dass im Javascriptcode das "{0}“ durch den Namen ersetzt wird.
<font color="blue"><blockquote><htmlblock>var message = strings.getString('greeting');
message = I18n.format(message, @UserName());
return message</htmlblock></blockquote><font color="black">

Das Dateisuffix "_en" oder "_de" steht für die entsprechende Browser-Länderkennung. XPages kümmert sich dann selbst darum dass die passende Properties-Datei herangezogen wird.
Die Datei ohne Suffix z.B. strings.properties ist die Datei die gezogen wird, wenn für die Länderkennung keine eigene properties-Datei existiert.

Anbei noch zwei Links zu zwei ausführlichen englischsprachigen Artikeln zum Thema Übersetzung.
Eine Beschreibung wie man über die XPage Optionen eine Übersetzung vornimmt
Eine Beschreibung wie man über Javascripts auf eigene Properties-Dateien zugreifen kann

 

3Aug 120

XPages: Datenbankzugriff mit den Rechten des Signers

am Freitag, den 3. August 2012

Wenn ein Benutzer eine XPage öffnet, so greift der Server mit den Rechten des aktuellen Benutzers auf die Daten zu.
Somit muss - wenn die XPage auf anderen Datenbanken zugreift - für aktuellen Benutzer auch die entsprechenden Rechte in den anderen Datenbanken eingerichtet sein.

Dies ist allerdings nicht immer erwünscht.

Optional kann man ab 8.5.2 mit den Rechten des Signers auf die Datenbank zugreifen.
Dies erreicht man in dem man das Datenbankobjekt mit Hilfe der Funktion
sessionAsSigner.getDatabase() erstellt.
Hier ein kleines Beispiel.


var myDB:NotesDatabase = sessionAsSigner.getDatabase("","");
myDB.openByReplicaID(database.getServer(),myReplicaID);

Mit dem Datenbankobjekt kann anschließend wie gewohnt weitergearbeitet werden.


var myView:NotesView = myDB.getView(viewName);
Nur beim Löschen von Dokumenten gibt es noch ein Problem.
(
Gemeldet in der Version 8.5.3)

31Jul 120

Wenn ein DbLookup nur ein null liefert

am Dienstag, den 31. Juli 2012

Ist man es unter Notes gewohnt, dass @Dblookup im Fehlerfall eine Fehlermeldung zurückgibt,
so erhält man unter XPages nur ein nichtssagendes und wenig hilfreiches null.

Falls man unter XPages rausfinden will, was ein DbLookup moniert. kann man das DbLookup vorrübergehend in einem session.evaluate ausführen lassen.

Und ein DbLookup Aufruf wie z.B.,

var ergebnis = @DbLookup(ReplicaID,viewName,key,"FeldName"); durch ein

var cmd = 'ret:=@DbLookup("";"'+ReplicaID+'";"'+viewName+'";"'+key+'";"FeldName");@if(@isError(ret);@Text(ret);ret)';
var ergebnis = session.evaluate(cmd);
ersetzen und schon findet man im ergebnis die Fehlermeldung.