Stolperfalle: Ids bei clientseitigen Events

Heute bin ich mal wieder über einen Fehler gestolpert, welchen ich schonmal begangen habe, und dadurch mal wieder viel Zeit verloren habe. Deshalb landets jetzt hier, in der Hoffnung dass ichs mir auch endlich mal merke =)

Ich hatte ein xp:div Element, welches eingebettet einen Text und ein Bild hatte. Mit einem onMouseover Event wollte ich die URL des zu verwendeten Bildes ändern. Leider reagierte das Element auf keinen MouseOver.

Dies kann man übrigens auf 2 Arten erreichen:

document.getElementById("#{id:zielElement}").src = "url_zum_bild.gif";

oder wenn man sich auf das aktuelle Element beziehen möchte, auf welchem das Event liegt:

try{
	if (thisEvent.originalTarget) {
		thisEvent.originalTarget.src = "btn_go_Hover.gif";
	} else {
		thisEvent.srcElement.src = "btn_go_Hover.gif";
	}
}catch(e){}

Die If-Abfrage hat den Hintergrund dass der Internet Explorer “srcElement” braucht und nicht auf originalTarget zugreifen kann.

Dass mein xp:div auf kein Event gehört hat lag einfach daran dass mein xp:div Element keine ID hatte.

MERKEN: Elemente mit einem clientseitgen Event brauchen IMMER eine ID!!

Btw: Wo wir gerade bei xp:div sind:

Mann sollte immer, wenn man nur ein einfaches div in der Seite braucht, xp:div verwenden. xp:panel hat zwar das gleiche Ergebnis, allerdings werden bei xp:panel noch ein paar Sachen im Hintergrund geladen die es ermöglichen eine Datasource anzubinden. Wenn man dies beachtet kann man noch ein paar Quäntchen Performance aus der Applikation herausholen. Besonders wenn man diese Elemente in einem xp:repeat loopt.

Tools: Formul8 & Secret Agent – Wo sind sie hin?

17/03/2012 3 comments

Hi,

kleine Anmerkung: Heute wollte ich nen neuen Client und natürlich auch meine geliebten Plugins installieren. Leider scheinen die bisherigen Verweise auf die Seite des Entwicklers von Formul8 und Secret Agent nicht mehr zu existieren, scheinbar macht er jetzt nur noch Android Apps: Jeff Gilfelt

Wie auch immer, nach einer gefühlten Ewigkeit auf Google habe ich dann doch noch den Link zum Eclipse Repository gefunden. Dies ist die Adresse die ihr als “Remote Updatesite” angeben müsst.

http://www.jeffgilfelt.com/eclipseplugins/

Für die, die gerade nicht wissen wovon ich rede:

Formul8 ist ein wunderschönes Sidebar Plugin, mit welchem es möglich ist direkt Formelsprachen Code auf ein oder mehrere Dokumente in einer View loszulassen um damit mal eben schnell etwas zu testen. Sehr nützlich.
Secret Agent ist ein Sidebar Plugin welches einem alle verfügbaren Agenten der Anwendung anzeigt. Das ganze halt etwas komfortabler und übersichtlicher als im Standard. Man sieht auch direkt wer den Agent signiert hat, ob er gescheduled ist und ob er aktiviert ist. Natürlich kann man die Agenten auch direkt ausführen.

Ich nutze beide Plugins sehr häufig und kann sie daher nur empfehlen. Natürlich auch wie schon in einem Post erwähnt den DocViewer von Domiclipse

Sonstiges: Eine Verschwörung ist im Gange

Es ist eine weltweite Verschwörung im Gange, ob man es glaubt oder nicht, sie findet hier, in Deutschland, ihren Ursprung, in diesem sogenannten “Bielefeld”

Lasst nicht zu dass euch diese Verschwörung beeinflusst. Macht Zweifel laut, informiert andere. Aber seid vorsichtig, SIE haben euch im Auge.

Auf dieser Seite gibt es weitere Informationen: http://www.bielefeldverschwoerung.de/

Ich habe keine Angst die Wahrheit zu sagen, da ich sowieso schon das zeitliche gesegnet habe. (hier und hier nachzulesen)
Aber SIE sind selbst hier in der Hölle, angebliche Verstorbene aus Bielefeld…

Seid vorsichtig…

Categories: Miscellaneous Tags: ,

Notes: Views in Standard-Notes Web-Applikationen

Heute hatte ich eine (eigentlich) recht einfache Aufgabe: In einer View, welche in einer Standard-Notes Webanwendung (also ausnahmsweise mal keine XPages) sollte ein Paging eingebaut werden, weil nicht alle Einträge angezeigt wurden.

Damit hatte ich mich bisher noch nicht beschäftigt und merkte, dass das (vermeintlich) gar nicht so einfach ist. Die View wird über einen Button innerhalb eines Frames in einem Frameset aufgerufen. Somit hatte ich erstmal keine Möglichkeit etwas an der View einzustellen, wie z.B. den “linecount” bei embeddedViews.

Ich stieß auf eine Option im Server Dokument namens “Default lines per view page”, zu finden im Admin Client unter Configuration -> Web -> Internet Sites -> Domino Web Engine

Diesen zu modifizieren brachte aber kein Ergebnis in der Anwendung.

Schließlich fand ich heraus wie es funktioniert. Die Views, welche in Framesets eingebunden werden, werden über eine Form namens “$$ViewTemplateDefault” aufgerufen. Diese kann man sich natürlich auch selbst erstellen.

Dazu einfach eine Form definieren, eine embeddedView reinpacken und dann kann man auch munter herumkonfigurieren, wie z.B. den lineCount.

Allerdings löste das das Problem des Pagings noch immer nicht. Da half mir aber eine Dokumentation von IBM weiter, zu finden hier.

Dort steht weiter unten wie es geht. Einfach in die Form irgendwo hin einen Button oder eine Action, welche den folgenden Code enthält:

@DbCommand("Domino"; "ViewNextPage")

Damit kann man dann wunderbar durch die View durchblättern.

Tools: Austauschen von schlechten Website-Designs im eigenen Browser

Ab und an kommt es ja mal vor, dass man auf eine Website gerät, auf der man augenblicklich Augenkrebs bekommt. Wenn das nun eine Seite ist die man recht häufig nutzen möchte, wie z.B. ein Forum, dann ist das natürlich sehr ärgerlich.

Mit ein paar Kenntnissen in Webdesign, bzw. dem Schreiben von CSS-Stylesheets, muss das aber nicht sein.
Firefox bietet die Möglichkeit an eigene Styles für bestimmte Seiten zu definieren. Dazu muss einfach nur eine Datei im Firefox ProfilVerzeichnis angelegt werden.

Die Datei heißt userContent.css und muss sich in einem Verzeichnis namens “Chrome” befinden.

Bei Windows 7 sähe das in etwa so aus:

C:\Users\Benutzername\AppData\Roaming\Mozilla\Firefox\Profiles\profilnummer.default\Chrome\userContent.css

Dort kann man mit Firefox-spezifischen CSS Befehlen eine Domain ansteuern und CSS Definitionen kapseln:

@-moz-document domain(“Domain-mit-schlechtem-Design.com”) {
.screwedStyleClass{…}
}

Nun kann man seine eigenen Styles für jede beliebige Seite definieren. Das ganze funktioniert übrigens auch im Aurora, wobei es da Diskrepanzen bei der Interpretierung des Stylesheets geben kann. Bei einem Anwendungsfall bei mir sah das Ergebnis im Aurora anders aus als im Firefox. Da Aurora und Firefox bei paralleler Installation auf das gleiche profil zugreifen muss man die Styles dementsprechend auch nur einmal ablegen.

Wer genauere Informationen zu diesem Thema und rund um das Thema Firefox haben möchte, dem kann ich diese Seite hier empfehlen:

Holger Metzger – Mozilla Tipps & Tricks

Diese Geschichte mit der userContent.css befindet sich in der Mozilla FAQ unter Kapitel 9

Tools: Mercurial & Redmine für Notes/ Domino & XPages

Heute hat mich ein Kollege (an dieser Stelle vielen Dank an Hedersoft GmbH) auf etwas aufmerksam gemacht.

Wir waren intern schon eine Weile auf der Suche nach einer Source Control Lösung für Notes/ Domino und vor allem für XPages. Auf der Seite Notes in 9 gibt es 2 nette Videos von David Leedy, in welchen er eine schöne Lösung vorstellt, welche aber ursprünglich von Declan Lynch zu stammen scheint.

Die Lösung baut auf dem Sourc Controlsystem Mercurial auf, in Verbindung mit der Projektmanagementlösung Redmine.

Benutzt wird das Plugin von Mercurial für Eclipse, welches in einer etwas älteren Version, mit dem Domino Designer kompaibel ist. Bedient wird das ganze über die Navigatoransicht, in welchem die einzelnen Designelemente in das Source Control System geschoben werden. Aber das sieht man alles in den Videos.

Hier sind die Videos:

Notes in 9: XPages Designer – Source Control
Notes in 9: Using Source Control Part 2

Ich denke wir werden das intern auf jeden Fall mal auspobieren. Ich werde euch auf dem Laufenden halten. Für weitere Rückmeldung und Erfahrungsberichte bin ich natürlich immer offen.

Trick 17: Wie ordne ich in WordPress Artikel einer Seite zu?

25/01/2012 8 comments

Tja, wie der eine oder andere vielleicht bemerkt hat, habe ich den Blog ein wenig umgebaut, in der oberen Navigationsleiste gibt es jetzt ein paar Seiten mehr, welche den Kategorien der Seite entsprechen.

Das war gar nicht so einfach einzurichten wie man vielleicht glaubt.

Erstmal habe ich mir alle Seite, die ich brauchte, angelegt. Nun überlegte ich, wie ich die einzelnen Artikel den dazugehörigen Seiten zuordne. Ich habe nur die Standard-Version von WordPress und kann entsprechend nur die Weboberfläche nutzen um alles zu konfigurieren, dementsprechend helfen auch die besten HTML und Web-Programmierkenntnisse nichts.
Leider gibt es keine Möglichkeit einen Artikel einer Seite zuzuordnen. Also musste ein Trick herhalten. Man kann den Link der einzelnen Seiten modifizieren, die Funktion findet dafür findet man direkt unter dem Titel der Seite. Ich hatte auch gesehen, dass es sogenannte Archiv-Seiten für die einzelnen Kategorien gibt, die haben entsprechend einen Link, nämlich http://www.blogadresse.wordpress.com/category/Kategoriename.
Erster Versuch war, einfach die Links zu den einzelnen Archiv-Seiten als Permalink der Seite zu nehmen. Leider mag das WordPress nicht besonders und entfernt den Slash zwischen category und dem Kategorienamen.
Nach einigem hin und her überlegen, kam ich dann auf die Idee eine Seite anzulegen, welche category heißt. Diese Seite hat dann den permalink http://www.blogadresse.wordpress.com/category. Ich dachte mir, wenn ich nun meine verschiedenen Seiten als Unterseite der category-Seite anlege, dann könnte ich im Permalink einfach den Kategorienamen verwenden. Gesagt, getan.
Allerdings hatte ich dann in meiner Hauptnavigation nur einen Tab, welcher category hieß, worunter dann alle anderen Seiten als Unterseiten angezeigt wurden, eigentlich auch logisch. Der Trick besteht nun darin, die Oberseite category als privat zu markieren. Die Unterseiten bleiben ihr zugeordnet, allerdings wird der Tab für category nicht mehr angezeigt, dafür aber die Unterseiten.

Et voila: Nun habe ich meine Kategorieseiten in der Hauptnavigation mit den Kategorien verlinkt.

Einen Pferdefuß hat das ganze aber, andere Seiten, z.B. die Über Mich-Seite, wird jetzt ganz vorn angezeigt, da die Reihenfolge für die Unterseiten nicht mehr verwendet wird. Daher steht ie Über Mich-Seite vor den anderen in der Hauptnavigation. Außerdem muss man, um weitere Seiten mit der category-Seite zu verlinken, die category-Seite wieder von Privat auf Öffentlich umstellen, damit man die entsprechend verlinken kann.

Ziemlich aufwändig, aber was solls. Vielleicht liest ja jemand von WordPress diesen Artikel hier und baut eine Möglichkeit ein die Artikel direkt einer Seite zuzuordnen. Vielleicht gibt es auch einen einfacheren Weg das zu bewerkstelligen, für Hinweise wäre ich sehr dankbar =)

%d bloggers like this: