Xpages: Wenn der IE 9 die XPage nicht im Dokumentmodus IE7 öffnen soll

Jörg Fengler  14 May 2012
Browser sind ab und zu für Überraschungen gut.
So öffnet der IE 9 XPages im Dokumentmodus "Internet Explorer 7 Standard" also quasi in einem Kompatibilitätsmodus.

Soll der IE 9 überredet werden, seine aktuelle Rendering-Engine zu verwenden, so muss der jeweiligen XPage der Parameter "X-UA-Compatible" mitgegeben werden.
Hierfür gibt es den Wert  IE=edge

Schreibt man den folgenden Code ins  BeforeRenderingResponse-Event, so lässt der IE 9 das mit dem Kompatibilitätsmode sein.

var exCon = facesContext.getExternalContext();
var response = exCon.getResponse();
response.setHeader("X-UA-Compatible", "IE=edge");

Erstes Release von OpenOffice als Apache Projekt

Matthias Köpp  14 May 2012
Nach der Abspaltung von LibreOffice wurde OpenOffice.org von Oracle an die Apache Software Foundation übertragen. Unter deren Leitung ist nun die Version 3.4 angekündigt worden.

Damit hat sich natürlich auch erneut die Bezeichnung geändert, diesmal von OpenOffice.org zu Apache OpenOffice.

IBM Lotus Symphony wird parallel dazu weiterentwickelt, Anwender von Notes greifen darauf als Teil von Notes 8.5 zurück. Man darf gespannt sein, wie sich die Versionen weiterentwickeln, wenn das Apache Projekt auch den von IBM beigesteuerten Code enthält. Für den Endanwender wird es jedenfalls schwieriger den Überblick zu behalten. Und für den Berater wird es anspruchsvoller als MS Office-Alternative OpenOffice.org / LibreOffice / Apache OpenOffice / IBM Lotus Symphony / [...] zu benennen.

XPages: Readonly Combobox mit Aliasnamen

Jörg Fengler  10 May 2012
Wer bisher unter XPages mit Comboboxen und Alias-Werten arbeitete, erlebte seine Überraschung wenn er die Box nur als "Read-Only" anzeigen wollte.
Statt der Aliasnamen wurde der Originalwert angezeigt.

Ab Notes 8.5.3 gibt es die Option "Show disabled control for read-only"
Über diese lässt sich eine Combobox dazu überreden, die Aliasnamen anzuzeigen.


Image:XPages: Readonly Combobox mit Aliasnamen

AddIn für E-Postbrief

Stefan Gebhardt  9 May 2012
Nach einer Meldung von IBM steht ein Addin für den einfachen und intuitiven Versand von E-Postbriefen direkt aus Lotus Notes heraus zur Verfügung. Damit wird ein schneller Einstieg der Geschäftskunden in die sichere und verbindliche Kommunikation mit Ihren Partnern, Kunden, Lieferanten etc. möglich.

Der Download steht auf openntf.org bereit.

XPages: runWithDocumentContext - wie man Lotus Script Funktionen in XPages nutzen kann

Jörg Fengler  23 April 2012
Wenn eine Lotus Notes Datenbank webfähig gemacht werden soll,
stellt sich die Frage, ob sich nicht zumindest ein Teil der Lotus Script-Codes weiter verwenden lässt.
Bzw. ob wirklich alles noch einmal in Java Script programmiert werden muss.

Ab 8.5.2 gibt es die Möglichkeit einem Agenten das aktuelle Dokument im Speicher zu übergeben.
Der Agent kann dann seinerseits Felder in dem aktuellen Dokument verändern und an den Aufrufer zurückgeben.

Ein Beispiel:
In einer XPage liegt hinter einem Weiterleiten-Button folgender Code:
(serverseitiger Javascript-Code, antragDoc ist hier der Name der aktuellen Dokument-Resource)

var agent:NotesAgent = database.getAgent("(weiterleiten)");
agent.runWithDocumentContext(antragDoc.getDocument());

antragDoc.save();

Dem Agent wird das aktuelle Dokument übergeben. Sobald der Agent mit dem Dokument fertig ist, wird dieses gespeichert.


Beim Agent "(weiterleiten)" wurde unter Security "Run as Webuser" eingestellt.
Der Code des Agenten ist in Lotus Script geschrieben und könnte wie folgt aussehen.

Sub Initialize
     Dim db As NotesDatabase
     Dim agent As NotesAgent
     Dim session As New NotesSession
     Dim actDoc As NotesDocument
             
     Set db = session.CurrentDatabase    
     Set agent = session.CurrentAgent
     Set actDoc = session.DocumentContext          
     
     Call Weiterleiten(actDoc)
End Sub

Call Weiterleiten() ist eine Funktion in der nun beliebig Felder des Dokumentes gesetzt werden können.
Um die Veränderungen zu übergeben muss das Dokument NICHT gespeichert werden.

Sobald der Agent fertig ist, übergibt er dem Aufrufer das veränderte Dokument.

Interim Fix 1 für Domino 8.5.3 Fix Pack 1 erschienen

Henning von Roon  23 April 2012
IBM hat einen Interim Fix für Domino 8.5.3 Fix Pack 1 veröffentlicht.

Dieser Fix ist nur für Windows 64 Bit Systeme, die einen Domino inclusive Traveler betreiben. In dieser Konstellation kann es zu einem Server-Ausfall kommen, wenn eine tief verschachtelte E-Mail via Traveler versendet wird.
IBM empfiehlt diesen Fix unbedingt einzuspielen, um einen Server-Ausfall ausschließen zu können.

Dieser Interim Fix wird in dem kommenden Fix Pack 2 für Domino 8.5.3 eingearbeitet. Bis dahin kann der Fix aus Fix Central heruntergeladen werden.

Quelle und Link zum Fix

Erste Beta von Notes/Domino 8.5.4 Social Edition

Stefan Gebhardt  16 April 2012
Ed Brill hat in seinem Blog mitgeteilt, dass die erste externe Beta von der Notes/Domino Social Edition an die Design Partner ausgeliefert wurde. Die Partner sind zum Stillschweigen darüber verpflichtet. Ed Brill gibt aber einen kurzen Blick auf die Inhalte mit:

Unter anderem ist das Browser-Plug-In enthalten, welches den Betrieb von Domino-Anwendungen im Browser ohne Codeänderung ermöglichen soll. Inzwischen gibt es die Aussage, das Plug-In für Firefox und Internet Explorer zu veröffentlichen. Weiterhin sollen verschiedenste Verbesserungen enthalten sein.

Noch nicht ganz klar geht aus dem Eintrag hervor, ob es eine 8.5.4 und eine Social Edition parallel geben wird oder ob dies eine Version sein wird.

Quelle: Blog von Ed Brill

Lotus Notes/Domino 8.5.3 FP1 Download

Stefan Gebhardt  26 March 2012
IBM hat in Fix Central eine Seite mit allen Downloadlinks für Domino und Notes 8.5.3 FixPack 1 sowie den Passport Advantage Nummern und den Fix Central Fix ID's veröffentlicht.

XPages: Abfragen von radiobuttons mit javascript (clientseitig)

Jörg Fengler  15 March 2012
Nicht selten sind es die kleinen Änderungen, die plötzlich mehr Zeit verschlingen als erwartet.

Die Aufgabe:
Wenn man bei einem Radiobutton einen neuen Wert auswählt, soll über eine Dialogbox nachgefragt werden, ob man dies wirklich ändern will.
Überlegt es sich der Anwender noch einmal anders, so soll der neue Wert ignoriert werden.

Auf den ersten Blick sieht dies nach einer Aufgabe aus, die schnell erledigt ist.
Doch wie so oft liegt die Tücke im Detail.

Zunächst wartet bei den Events eine Überraschung:
Der IE (8 & 9) ignoriert unter XPages beim RadioButton das onChangeEvent()
Somit darf das onChangeEvent über das onClick Event nachgebildet werden.

Beim onClick-Event muss berücksichtigt werden, dass dieses bei der Auswahl eines neuen Wertes zweimal durchlaufen wird.
Einmal mit dem alten und einmal mit dem neuen Wert.

Den alten Wert der RadiobuttonGroup erhält man über folgenden Ausdruck:
alterwert = '#{javascript:getComponent("radioGroup1").getValue();}';


Beim Versuch den neuen Wert zu ermitteln, wartet dann die nächste Überraschung.
Einige empfehlen hier folgende Variante:
  var elements = dojo.byId(id);
 for(i=0;i<elements.elements.length;i++) {
     if (elements[i].value == value) {
         elements[i].checked = true;
     }
 }

Kleiner Schönheitsfehler: Dies klappt zwar mit dem Firefox einwandfrei aber der IE (8 & 9) hält von dieser Variante nichts. Das Element daß der IE zurückgibt enthält schlichtweg keine Elemente durch die man sich durchhangeln könnte.

Allerdings kann man sich recht elegant mit dojo.query den Wert des aktuell ausgewählten Radiobuttons holen:
elements = dojo.query('INPUT[type=radio][name=#{id:radioGroup1}]:checked');
neuerWert = elements[0].value;


Das Deaktivieren eines Radiobuttons ist mit dojo.query nicht mehr als ein Einzeiler:
dojo.query('INPUT[type=radio][name=#{id:radioGroup1}]:checked').forEach(function(n) {n.checked=false;});


Und auch das Setzen eines radiobuttons (z.B. den alten Wert) ist nicht mehr als eine Zeile
dojo.query('INPUT[type=radio][name=#{id:radioGroup1}][value='+alterwert+']').forEach(function(n) {n.checked=true;});


Die dojo.query-Varianten funktionieren mit Firefox und mit dem IE.

jQuery Foundation gegründet

Matthias Köpp  8 March 2012
Bei der Entwicklung von Webapplikationen wird üblicherweise auf JavaScript Bibliotheken zurückgegriffen. Dies ist bei der Verwendung von Notes, wenn aus bestimmten Gründen keine XPages eingesetzt werden, nicht viel anders.
Eine häufig verwendete Bibliothek liefert seit 2006 das jQuery Projekt. Deren Leitung wird nun von der neu gegründeten jQuery Foundation übernommen. Präsident dieser Stiftung ist Dave Methvin, der als Entwickler beim jQuery Projekt, unter anderem als Leiter des jQuery Core, bekannt ist.
Nähere Informationen zu den Möglichkeiten, die jQuery liefert, findet man auf der Website des Projekts.