XPages: JQuery Gantt Module

16. September 2012 Posted by airwolf89

In the past weeks I was trying something new, at least new for me…

I realised that using jQuery in Xpages is a wonderful idea. Mark Roden has a nice blog with great things you can do with jQuery in XPages. You can find it here: Xomino Also check out his demo site: Xomino JQinX Demo

In one project I wanted to use a gantt chart. I want to write this article to show you how it’s done and warn you about the problems I had.

Let’s start.

To use jQuery you have to download it and integrate it in your database. Build your own version of jQuery here: JQuery Download It is the download page of JQuery UI, a set of many nice plugins and modules for jQuery. A version of the base jQuery is included. You can also configure a custom theme for your jQuery modules. It is on the right menu when you follow the link “design a custom theme

For the gantt chart I am using this module: Taitems JQuery Gantt Chart Module

So, now you have to integrate these files into your database. You can do this either via the resource category in the database, or via the PackageExplorer (it is an Eclipse View) I recommend using the package explorer, because you can manage your files more easily. Simply drag and drop your files and create some folders to organize them.

Now you have to load them into your application. You can do this easily via a theme with the following statement:


Or you load them directly into your code via the resource properties of the XPage/ Custom Control

<xp:script src="js/jquery-ui-1.8.23.custom.min.js" clientSide="true"/>

You have to do this for the jQuery base module, the UI module and the gantt module, also you have to load the CSS files.

First problem I had to face: The gantt module doesn’t work with every jQuery version. I was using jQuery 1.8.0. But when using this module, I had an error message which complained about some undefined variables (TypeError: m is undefined) Using the 1.7 version was a solution to this.

Now we can get started. On the page of the gantt module is an easy manual how to use this module. It is quite self explaining.

To implement a gantt chart, you only have to put in these few lines of code (client side of course)

<xp:scriptBlock id="scriptBlock1">
// + "/ganttJSONBuilder?OpenAgent";
// + "/js/data.js";
jQuery( function() {
var dataPath = location.href.substring(0,
location.href.lastIndexOf('/') + 1)
+ "/ganttJSONBuilder?OpenAgent;

$(".gantt").gantt( {
source : dataPath

As data source the module uses JSON data. Use this site to validate your JSON data easily. The structure of your data is explained in the manual site of the module.

Be aware, the module expects a URL as data source. That means you can’t use server side Javascript in that scriptblock to generate the data source. So, we have two options on how to load the data into the module, either via a file which you can put into the WebContent folder in your database, or you call an agent. The agent is probably the better option because you sure want to load data dynamically.

Using an agent to achieve this is basically easy, you only have to write your JSON string into a variable and then you do this:

PrintWriter pw = getAgentOutput();

The difficulty of generating the JSON string itself depends on your data. In my case it was a simple project management, so some tasks, projects and editors. I used a view. I looped the entries and parsed the information into a JSON String.

There are some nice little things you should know when doing so.

The first line of your JSON string has to be the content type of the output, for JSON it is: Content-type: application/json; charset=utf-8\n
Also, it is very important that you use line breaks in the string, simply by using \n. If you aren’t doing that, your JSON string will not be properly interpreted and the module shows nothing but a nice grey bar.
Easily to overlook, but also important, in JSON you have to use a comma to separate your entries. Be sure you have no comma behind your last entry or parameter. It will result in a misinterpretion of the data.
The next important thing is, in the JSON data, you have to provide all entries defined in the manual. That means, if you forgot to write one of the parameters into the string, it is valid, but not recognized by the gantt module and isn’t doing anything. All of them need a value. providing nothing will have the same result: Nothing =)
I wanted to have my projects and tasks separated. In one line the project and then in the other lines the related tasks. This is possible by writing an extra entry to your JSON string, in which you only write the information about the project. When writing the tasks of the project, you probably don’t want to write the project in front of each task. If you think you can define an empty string for the name parameter of the JSON entry, you are wrong. The module needs a value of at least one character. Using an empty string results in not displaying the chart and some nice error messages. Using a space (” “) is the solution.
Also, you have to provide a start and end date for each entry. I wanted to have no duration for the project, so I didn’t provide the “from” and “to” parameter, it rewarded me with some other javascript errors. So I used the whole duration of the project for the project entry, it’s a good feature anyway.

A nice feature: You can use HTML in your JSON parameters, so, if you use
tags for example in your desc parameter and some formatting tags, you can make the mouseOver of the entries look more beautiful and put some more information into it.

If you think the styleClasses available for your entries in the chart (ganttRed, ganttGreen, ganttOrange) are not that beautiful, or you want to use some more, you can easily define some. There is a css file in the module. Looks like this:

.fn-gantt .ganttOrange {
background-color: #FCD29A;
.fn-gantt .ganttOrange .fn-label {
color: #714715 !important;

Copy those entries and do your own styles, the class at the end of the definition is recognized by the module, so you can use it directly in the “customClass” parameter of your JSON.

But there is one big problem when using this module. Above the chart, I have some buttons. I wanted to load different charts with those buttons. Easily done I thought, just firing a partial execute on the chart container to set another data source or something. But, nothing happens, in fact really nothing, not even an event which I could see in my FireBug. Some other buttons with only clientside code are working fine. All other buttons on the whole page are working fine, only those I have directly above my chart didn’t wanted to work. I haven’t figured out what’s the problem, if I find it, I will let you know.

Another problem is that the gantt chart is not working in the Notes Client. If I open the Xpage in my Notes client, the chart isn’t loaded, only a nice grey bar. Other jQuery modules are working fine, for example the accordion or flip is working, but not the module. If you want to use it in the NotesClient you should think about another solution… or wait until I find a solution for this problem =)

Another thing you should consider are loading times. The loading time is increasing dramatically proportional on how many entries you display (rowsPerPage parameter in the gantt function) and how many years they cover. If you want to display some tasks from a period of 10 years or more, you have to wait a bit. I tried a period of 30 years… not a good idea, my browser crashed… after about 5 minutes of loading.

So, I think that’s all I know about the module and how to use it. Despite all the small and big problems I have a nice application with some really nice gantt charts. If you are interested in such an application, you should visit this page (Cobalt Software GmbH), the new version should be available soon. Ok, sorry for the advertisement…

If you have any questions or solutions for my unsolved problems, the comment section is all yours =)

Hope it was useful for some of you.

Filed under: Notes & XPages Tagged: Chart, Cobalt Software GmbH, CSS, Datasource, Gantt, Javascript, JQuery, JSON, Mark Roden, Notes, Parameter, Plugin, Serverside Javascript, Taitem, Tools, Xomino, XPages, Xpages in NotesClient, XpInc

Stumbling Stone: sessionScope is for everyone…

19. Juli 2012 Posted by airwolf89

Today, I saw something surprising that I want to share with you.

sessionScope is for everyone… Many of us know that one should be careful with the sessionScope because the handling can be quite difficult if you don’t take care whether the sessionScope is deleted or renewd if you don’t need the value anymore. Maybe I will write another article about my favorite topic, because I made a lot of mistakes in my first XPages applications.

So, what do I mean with the heading? Imagine the following example:

User1 writes a value “test 1″ in the sessionScope variable “test container”. We know that means that, as long as the user is logged in, he can access this value and no other user can access this variable with this value.

That’s not correct!

User2 can also access this value, under certain circumstances. It is not very likely to happen, but if User 1 and User2 use the same computer, they share their sessionScope.

The sessionScope is saved in a cookie. And as long as this cookie isn’t deleted, all users who use the computer will have the value of User1 in their sessionScope. Even if you logout, close the browser and reopen the browser. The cookie is still there, and so is the sessionScope value.

You can try it very easily:

<?xml version="1.0" encoding="UTF-8"?>
  <xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:inputText id="inputText1"></xp:inputText>
    <xp:button value="Label" id="button1">
      <xp:eventHandler event="onclick" submit="true"
          synchronized(sessionScope) {
            sessionScope.put("test", getComponent("inputText1").value);
  <xp:text escape="true" id="computedField1">

Open this page as User1, set any value, close the browser and reopen it, login with User2 and open this page. You will see the old value from User1.
So, if anyone has an application which is used in public, or the users of the application could switch their computer, you should be very careful. It could lead to the strangest errors in your application, or cause some trouble because of data security/ data privacy. If you even think of the idea to control some access rights via sessionScope, or store a user related object in the sessionScope, you maybe should think of another solution.

Filed under: Notes & XPages, Stumbling Stones Tagged: cookie, Notes, Security, Serverside Javascript, Session, sessionScope, XPages

Stumbling Stones: Difference between xp:panel and xp:div

2. April 2012 Posted by airwolf89

Today another stumbling stone.

With this post I want to announce that I will write this Blog in english from now on to reach more readers throughout the world. My old posts will be translated step by step. I hope you understand this step and continue reading my Blog.

But back to topic. Today I was customizing a module in one of my applications. The structure was implemented via xp:panel elements. I wanted to save some performance and wanted to change it to xp:div.

By the way, what is the difference between xp:panel and xp:div, you might ask. Well, it is quite easy. Both controls are container controls which are rendered as a <div> element in HTML. The difference is that you can define a datasource in xp:panel elements. Therefore, xp:panel and xp:div references different Java-classes in the backend. The class for xp:panel is more complex, that means you a bit more serverload. Here is the Java code generated:


private UIComponent createPanel2(FacesContext context,
      UIComponent parent, PageExpressionEvaluator evaluator) {
   UIPanelEx result = new UIPanelEx();
   return result;

private UIComponent createDiv(FacesContext context,
      UIComponent parent, PageExpressionEvaluator evaluator) {
   XspDiv result = new XspDiv();
   return result;


It seems not worth to mention, but imagine you have an application with, let’s say 200 div containers throughout the application. With each the server has to load the more complex class and prepare the functionality to create a datasource. If you use xp:div instead, the serverload may decrease a bit. I do not have some statistics to prove how it affects the applications performance in detail, but it is alsways a good idea to reach for maximum performance of an application.

So, what was the problem? I changed the tags to xp:div, and the design of my module was affected. I wondered, because I was thinking both elements are rendered as a <div> element in HTML. But a short glance into the Firebug told me something. For two panels, I didn’t define an ID attribute. So, the second difference between xp:div and xp:panel is that xp:panels without an ID attribute are NOT rendered in an XPage. This could affect either some CSS hierarchies and also, if you need every pixel in a container, affects the way it is displayed. In my case it had the result that an image, which I used as a button was not displayed next to an inputBox, it was displayed below that.

Here an example with the output:


Without IDs:

      test 1


      test 2

test 1
      test 2

With IDs:

<xp:panel id="panel1">
   <xp:panel id="panel2">
      test 1


<xp:div id="div1">
   <xp:div id="div2">
      test 2

<div id="view:_id1:panel1">
   <div id="view:_id1:panel2">
      test 1
<div id="view:_id1:div1">
   <div id="view:_id1:div2">
      test 2


This is not a big deal, if you know that and always set an ID attribut, as it should be, you won’t encounter that problem. But like it is always, you have to know it or you get confused by its consequences.

Filed under: Stumbling Stones Tagged: Attribute, CSS, Datasource, Hierarchy, HTML, Java, Notes, Stumbling Stone, xp:div, xp:panel, XPages

Erfahrungsbericht: Notes Entwickler Camp 2012

28. März 2012 Posted by airwolf89

Ja, schöne Dinge vergehen viel zu schnell. Heute war der letzte Tag des Notes Entwickler Camps 2012. Ich möchte an dieser Stelle meine Erfahrungen teilen und jedem ans Herz legen zu überlegen dort auch mal teilzunehmen.

Tag 1

Nach einer größtenteils unproblematischen Anreise kamen mein Kollege Sven Hasselbach und ich in Gelsenkirchen im Maritim Hotel an. Das Hotel war völlig in Ordnung, nichts über die Maße luxuriöses, aber zu meckern gab’s auch nichts.

Pünktlich um 10:30 Uhr startete das Camp mit der Begrüßung durch Rudi Knegt, dem Initiator und Veranstalter des Camps, welcher scheinbar immer gut gelaunt zu sein scheint =)

Anschließend teilte Philippe Riand in einer Präsentation mit, was in Zukunft in Sachen ICS, Social Business und XPages tun wird. Ein Kommentar, mit Live-Demo stach besonders heraus. Nämlich dass es bald einen richtigen Serverside Javascript Debugger geben wird. Dies wurde durch einen spontanen Begeisterungsausbruch der ca. 230 Teilnehmer kurz unterbrochen.
Quintessenz der Vorstellung war denke ich, dass sich IBM in Zukunft, wie zu erwarten war, auf den Bereich Social Business und XPages konzentrieren wird. Serverside Javascript soll sich zu Lingua Franca entwickeln, denn es wird an vielen Schnittstellen zu anderen Systemen, beispielsweise auch Sharepoint gearbeitet und soll zukünftig eine generische Schnittstelle für eine Vielzahl von Web-Anwendungen bereitstellen.

Anschließend gab es wie immer das kurze “Speed-Agendaing” (wahrscheinlich ein Produkt der von Rudi Knegt zum Leben erweckten Sprache “Rudisch”), in welchem die Referenten ein kurzen Abriss über die anstehenden Präsentationen gaben, um dem Teilnehmer die Entscheidung zu erleichtern an welchem von den 5 gleichzeitigen Sessions man denn teilnehmen sollte.

Ich entschied mich für die Session von Detlev Pöttgen von Midpoints, welche von Widgets, Livetext und Plugins handelte. In dieser Session stellte er die Einsatzmöglichkeiten und die Handhabung von Widgets dar. Wie man eines anlegt, wie man selbst welche mit Hilfe von Plugins erstellt und wie man sie unter den Usern verteilt. Letzteres kam leider aufgrund vieler Fragen ein wenig zu kurz, doch es gab über dieses Thema am nächsten Tag noch eine Session die sich auschließlich mit diesem Thema beschäftigte, von daher nicht so schlimm. Außerdem wurde ein konkretes Pluging gezeigt, welches intern beim Referenten genutzt wird. Es war ein Plugin, welches bei Markierung einer E-Mail Daten über den Absender aufruft und anzeigt welche Tickets und Aufträge dieses Kunden noch offen sind. Coole Idee.

Mein Fazit dazu: Eine sehr schöne Technologie, die meinerseits und bei mir in der Firma bisher ziemlich kurz kam. Jedoch sieht man alleine an den Plugins, welche wir für die Entwicklung verwenden, was damit möglich ist. Auch bieten sie eine schöne Schnittstelle mit denen man auf Web-Anwendungen zugreifen kann, auch auf XPages. Ich werde mir in Zukunft auf jeden Fall mal genauer anschauen was man damit machen kann und schauen dass wir das unseren Kunden anbieten können.

Parallel hielt Ulrich Krause einen Vortrag über die Grundlagen der XPages Entwicklung, Rocky Oliver über die bis heute große Macht von Lotusscript, Manfred Meise einen Vortrag über Security in Notes, sowohl auf Admin, als auch auf Entwickler Seite, was selbst erfahrenen Notes Entwicklern noch das ein oder andere erneut ins Gedächtnis rief bzw. klar gemacht hat, was Security angeht. Manuel Nientit. Zeigte in seiner Hands-On Session praktisch wie man in Javascript einsteigt.

Nach der Kaffepause ging es für mich mit dem Vortrag von Niklas Heidloff weiter, in welchem er kurz die schönsten Projekte auf OpenNTF vorstellte. Dabei zeigte er ein paar interne Zahlen von OpenNTF, beispielsweise dass fast jeden Tag ein neues Projekt auf OpenNTF hochgeladen wird und mittlerweile über 800 Projekte beherbergt. Er ging auf eine Vielzahl von Projekten ein, dessen Erwähnung diesen ohnehin schon viel zu langen Post sprengen würde. Zum größten Teil die wirklich gut gelungenen Projekte für die beiden vergangenen Development Contests und nutzte gleich die Chance den auf dritten Development Contest aufmerksam zu machen. Er zeigte sich stolz auf die Community wie viele Projekte jeden Monat neu hochgeladen werden und welche Qualität diese vorweisen können. Auch kündigte er an dass bereits an einem Plugin gearbeitet wird, mit dem man auf die veröffentlichten XSnippets direkt aus dem Domino Designer zugreifen kann.

Mein Fazit dazu: Man sollte auf jeden Fall einmal ein wenig Zeit investieren sich die Projekte auf OpenNTF anzuschauen und zu evaluieren welche man davon verwenden kann. Ich möchte fast schon garantieren dass für jeden das ein oder andere Projekt interessant sein wird. Auch ich werde, in Zukunft, versuchen mich dort ein wenig mehr einzubringen und XSnippets zu posten und auch mal das ein oder andere Control oder sogar Projekt zu veröffentlichen.

Parallel hielt Matthew Fyleman einen Vortrag darüber wie man bestehende Notes Applikationen am besten in XPages Anwendungen verwandelt. Gerd Hildebrandt zeigte in seinem Vortrag dass LotusScript noch lange nicht tot ist. Christian Habermüller zeigte wie man am besten Workflows analysiert und dokumentiert und dabei auch ein wenig über den Tellerrand des Entwicklerhorizonts schaut. Das Hands-On von Thomas Schneider über Composite Applications fiel leider aufgrund eines Unfalls in der Familie aus. Gute Besserung an dieser Stelle.

Das Abendprogramm bestand dann aus “Speed-Demoing” bei welchem jeder der ein interessantes Problem oder Konzept vorzustellen hatte, 5 bis 10 Minuten Zeit bekam dies mit einer kurzen Präsentation zu zeigen. Anschließend gab es eine offene Fragerunde, in welcher jeder seine Problemchen auf die man während der Entwicklung traf vorstellen und mit allen Teilnehmern diskutieren konnte. Bei diesen Fragerunden, welche jeden Abend stattfanden, wurde eine Vielzahl von Problemen auch direkt gelöst oder zumindest Herangehensweisen vorgeschlagen, was einige Entwickler, denke ich, ziemlich glücklich gemacht haben dürfte. Allerdings ist mir in diesen Veranstaltungen bewusst geworden, wie wenige Leute sich so intensiv mit XPages beschäftigen, so wie ich das bei mir auf Arbeit tue. Der Großteil der Probleme waren allgemeine Probleme mit Notes (im Klassischen Notes Umfeld) oder Probleme mit Lotusscript oder Formelsprache.
Danach gab es dann, moderiert von Gregory Engels, Präsentations-Karaoke.

Anschließend wurden die Teilnehmer von den Veranstaltern dazu genötigt bis 22:30 Uhr die Bier- und Weinreserven des Hotels zu vernichten. Bei dieser überaus unangenehmen Aufgabe wurde viel gefachsimpelt, Erfahrungen ausgetauscht und Bekanntschaften geschlossen und Kontakte geknüpft. Als dann gegen 2 Uhr die letzte Bar im Hotel schloss ging dann auch der letzte Notes-Entwickler glücklich ins Bett und freute sich auf den nächsten Tag.

Tag 2

Pünktlich um 08:10 Uhr startete man dann mit einigen Organisatorischen Dingen und Speed-Agendaing zu den aktuellen Präsentationen in den neuen Tag. Danach machten sich die Teilnehmer, motiviert und ausgeschlafen wie man das nach dem vorherigen Abend erwarten würde auf zu den Sessions.

Ich besuchte die Präsentation von Ulrich Krause in welcher er die Extension Library, wie sie funktioniert, wie man sie installiert und wie man sie verwendet ausführlich beschrieb. Dabei stellte er auch das eine oder andere Modul aus der Extension Library ein. Auch wurden ein paar allgemeine Themen rund um die neuen Features in 8.5.3 vorgestellt. Auch Themen wie Themes wurden angesprochen. Nebenbei wurden natürlich viele Fragen beantwortet.

Mein Fazit: Wie schon vorher für mich feststand wird es für mich, freiwillig, keine Entwicklung mehr ohne die Extension Library geben. Dazu gibt es einfach zu viele geniale Module in der Library welche sich perfekt für die Entwicklung eigener Anwendungen eignen, als dass man sie ignorieren könnte. Außerdem, da durch das Upgrade Pack 1 die Extension Library, in leicht abgespeckter Version, nun vollständig von der IBM supported wird, gibt es nun keinen Grund mehr für Notes Admins sich dagegen zu wehren die “ach so böse openSource Software” auf den eigenen Notes Servern zu installieren.

Parallel hielt Werner Motzet einen Vortrag über agile Software- und Projektmanagementmethoden und gab einige Tipps über eine effizientere Projektführung im Notes Umfeld. Jürgen Kunert stellte vor wie man Richtig(er) kommuniziert, ein Vortrag über Kommunikationsmittel und wie man sie im Entwicklungsumfeld besser nutzen kann. Matthias Schneider stellte den Lotus Protector von IBM ein wenig genauer vor und erläuterte wie man ihn einsetzen und selbst erweitern und anpassen kann. Howard Greenberg lehrte in einer Hands-On Session den Einstieg in die XPages Entwicklung.

Anschliessend besuchte ich die Session von Manfred Meise, in welcher er detailliert die Einsatzmöglichkeiten von Themes darstellte und einen Einstieg in diese Thematik gab. Für mich war leider wenig neues dabei, trotzdem ein interessanter Vortrag.

Mein Fazit: Mit Themes hatte ich mich ja bereits zuvor beschäftigt. Ich wurde jedoch darin bestätigt dass es keinen Grund sie nicht einzusetzen, da sie einem einfach sehr viele Möglichkeiten geben die grafische Gestaltung seiner Anwendungen effektiv aufzubauen und zu verwalten.

Parallel hielt Gregory Engels einen Vortrag, genannt “Ich weiß was du diesen Sommer tun wirst”, in welchem er einen Blick in die Kristallkugel warf und darstellte wie es wahrscheinlich mit Notes und den XPages weitergehen wird und was sich hinter den einzelnen Schlagwörtern, mit welchen die IBM auf der LotusSphere um sich warf, verbirgt und was man damit alles machen könnte. Phil Riand und Niklas Heidloff komprimierten den Inhalt einer Wochenfüllenden Vorstellung über die Features von 8.5.3, der Extension Library, JDBC Datasources, REST Schnittstellen, OAuth, der XPages Workflowengine XFlow, OSGi Tasklets und Plugins. Ich hörte von Teilnehmern die mit Kopfschmerzen und einem von Ideen überquellenden Hirn aus dieser Präsentation herausgingen. Ein Kollege von Thomas Schneider war so freundlich sich mit der Präsentation über Webservices unter Notes auseinanderzusetzen, sodass sie doch noch stattfinden konnte. Vielen Dank für die Anstrengungen. Howard Greenberg setzte sein Hands-On über den Einstieg in XPages fort.

Nach der Mittagspause und einem dringend benötigten, aber viel zu kurzen Mittagsschlaf, besuchte ich die Session von Rocky Oliver, in welcher er über die gute alte Formelsprache referierte und Einsatzmöglichkeiten und das immer noch enorme Potential herausstellte und die wichtigsten Befehle vorstellte und zeigte dass manche Befehle doch mehr können als manch einer denkt. Auch über Stolperfallen und Schwierigkeiten wurden einige Worte verloren. Allerdings gab es auch ein Kapitel wie man Formelsprache in Serverside Javascript einsetzt.

Mein Fazit: Für mich sehr nützlich, da ich ja direkt mit der XPages Entwicklung eingestiegen bin und daher noch die ein oder andere Lücke in Standard Notes Entwicklung habe.

Parallel hielt Niklas Heidloff einen Vortrag wie man XPages Applikationen social macht und ging dabei auf die Möglichkeiten des Social Enablers ein, welcher es aber leider nicht in das Upgrade Pack 1 geschafft hat. Christian Habermüller referierte über agile Methoden im IT-Projektmanagement. Bernhard Köhler hielt einen Vortrag über das leidige Thema wenn man als Entwickler Altlasten erbt und sich mit der Herausforderung konfrontiert sieht alte, historisch gewachsene Anwendungen zu erweitern. Detlev Pöttgen zeigte in seiner Hands-on Session wie man Plugins und Widgets in einer Notes Infrastruktur verteilen kann.

Anschließend besuchte ich den Vortrag von René Winkelmeyer, welcher vorstellte wie man eigene Extensions mit der Extensibility API (!= Extension Library) entwickelt und eigene Module (wie in der Extension Library) entwickelt und installiert. Dabei zeigte er wie man sich eine Entwicklungsumgebung aufsetzt um diese Extensions auf dem Domino Server installiert. Mit dieser Session nahm er einigen Entwicklern, darunter auch mir, die Angst vor diesem Thema, welches nach eigener Aussage von René Winkelmeyer “… nichts für kleine Mädchen ist…”

Mein Fazit: Anhand der Extension Library sieht man ja wie mächtig diese Technologie ist. Extension sind einfach die beste Möglichkeit wiederverwendbare Module zu entwickeln. Mit diesem Thema werde ich mich zukünftig auf jeden Fall auseinandersetzen und hoffentlich auch ein paar Erfolge erzielen. Ich bin ja schließlich kein kleines Mädchen…. =)

Parallel hielt Frank van der Linden wie man das unmögliche mit XPages möglich macht. Dabei ging er auf Themen ein die nur sehr schwer mit Standard Notes Mitteln vor den Xpages umzusetzen waren und nun möglich geworden sind. Matthias Schneider zeigte wie man mit mobilen Anwendungen auf Notes-Daten zugreifen kann. Dabei stellte er zahlreiche Werkzeuge für mobile Anwendungsentwicklung vor, wie z.B die Extension Library, den Lotus Traveler und den Notes Application Player vor. Karsten Lehmann stellte den Einsatz von weiteren NoSQL-Datenbanken und deren Einsatzmöglichkeiten im Notes-Umfeld vor. Peter Klett gab in seiner Hands-On Session einen Einstieg in LotusScript.

Im Abendprogramm gab es wieder eine offene Fragerunde, Speed-Demoing und eine Verlosung in der Dinge wie eine Nintendo Wii, ein Monitor, fernsteuerbare Hubschrauber, Geek-Toys, Entwickler-Treibstoff (Sekt und Wein) und einige T-Shirts von TLCC verlost wurden.
Anschließend wurden wir wieder gezwungen die verbliebenen Bier- und Wein Vorräte des Hotel zu vernichten. Eine Aufgabe der zahlreiche Entwickler widerstrebend aber pflichtbewusst nachgingen und dabei wieder viel fachsimpelten und Erfahrungen austauschten.

Tag 3

Der Endspurt des Entwicklercamps wurde wieder mit organisatorischen Dingen und Speed-Agendaing eingeläutet.

Für mich ging es weiter mit Versionskontrolle im Domino Designer mithilfe von GIT/ eGIT, vorgestellt von Holger Chudek. Hier zeigte er welche Möglichkeiten es im Domino Designer für Versionskontrolle gibt, welche Stolperfallen es gibt und wie man ein solches System einrichten und benutzen kann.

Mein Fazit: Ein sehr schönes Tool, welches natürlich Vor- und Nachteile mit sich bringen kann. Da es in meiner Firma sowieso angedacht war so etwas im Entwicklungsbereich zu verwenden, war dieser Vortrag natürlich sehr hilfreich und aufschlussreich und half bereits einigen Stolpersteinen im vornherein zu umgehen.

Parallel hielt Bernd Hort einen Vortrag über Java-Entwicklung im Notes-Umfeld, in welchem er die Einsatzmöglichkeiten in Agenten, Servlets, Libraries und XPages darstellte. Frank van der Linden hielt einen Vortrag über den Activity Stream und das Social Business Toolkit der IBM, in welchem er darauf einging wie man es verwendet und einsetzten kann. Bernhard Köhler ging in seinem Vortrag “Notes und die Zeit” darauf ein wie man die immer wieder auftretenden Probleme mit Zeit-Daten im Notes-Umfeld in den Griff kriegt. Matthias Schneider zeigte im Hands-On wie man mit mobiler Applikationsentwicklung beginnt.

In der letzten Session lauschte ich den Ausführungen von Richard Sharpe, in welchen er darstellte wie man mobile Applikationen mithilfe der Extension Library entwickelt und gab einige sehr hilfreiche Tipps und nahm vielen Entwicklern die Angst vor diesem Themengebiet.

Mein Fazit: Mobile Applikationsentwicklung ist eigentlich nicht so schwer wie man es sich vielleicht vorstellt. Vor allem mit JQuery hat ein sehr wertvolles und mächtiges Werkzeug an der Hand. Ich werde in Zukunft auf jeden Fall keine Schweissausbrüche bekommen wenn Kunden mal so etwas fordern.

Parallel hielt Matthias Bierl einen Vortrag über die Einsatzmöglichkeiten des Dojo Toolkits zu verfügung, auch abseits der XPages Entwicklung. Peter Klett zeigte Eindrucksvoll wie man im Notes Umfeld Riesenprojekte (nach eigener Aussage ein System mit über 30 Mio. Dokumenten in über 5.500 Datenbanken, was nur ein Projekt von vielen ist) aufsetzen und verwalten kann und räumte mit dem Vorurteil auf dass es mit Notes nicht möglich sei große Systeme zu betreiben. Andreas Artner stellte Schnittstellenentwicklung mit dem Tivoli Directoty Integrator vor und zeigte dass sich hinter diesem Tool mehr verbirgt als der Name glauben lässt. René Winkelmeyer zeigte in einem Hands-On wie man sich eine Entwicklungsumgebung für die Entwicklung mit der Extensibility API aufsetzt und ließ die Teilnehmer erste Erfahrungen in diesem Thema sammeln.

Anschließend startete, während meiner Teilnahme an den kostenlos angebotenen Zertifizierungstests, ein Vortrag von Werner Motzet, in welchem er in sehr interessanter und witziger Art und Weise auf sein Leiden aufmerksam machte, welches er durchleben muss seit seine Firma auf Microsoft Produkte (Outlook und Exchange) umgestiegen ist. Allerdings war dieser Vortrag nicht (nur) eine Hass-Tirade gegen Microsoft Produkte, sondern hinterfragte konstruktiv und kritisch die Unternehmenskultur, das Marketingverhalten und Verhaltensweisen von IBM und Microsoft. Hier stellte er einige sehr wichtige und interessante Fragen, die einige Entwickler nachdenklich stimmten. Damit dies auch bei der IBM passiert kündigte er an auf der nächsten DNUG eine Podiumsdiskussion mit IBM anzustoßen, in welchem Fragen wie Zukunft einiger Produkte, Unternehmenszukunft und Marketingverhalten geklärt werden sollen.

Damit war das Entwicklercamp 2012 vorbei und die Teilnehmer machten sich wieder auf den Heimweg, mit den Köpfen voller Ideen, den Taschen voller Visitenkarten neu geschlossener Kontakte und dem Finger im Terminkalender um nach freier Zeit zu suchen die nötig ist sich mit all den neuen Themen und Ideen auch auseinandersetzen zu können.

Mein Fazit zum Entwicklercamp:

Es macht Spass
Es lohnt sich
Es ist wertvoll

Wenn es in meiner Macht liegt werde ich definitiv wieder teilnehmen. Es waren sehr interessante Themen dabei, von denen ich leider nur einen kleinen Teil mitbekommen konnte. Man konnte sich mit anderen Entwicklern austauschen und Erfahrungen sammeln und tauschen. Auch sehr wertvoll war die Ecke, in welcher man seinen Laptop anschließen konnte um mit anderen Teilnehmern Themen anschaulich besprechen konnte und versuchen neue Ideen und Lösungen für Probleme zu finden. Genau darum ging es auch bei dieser Veranstaltung, welche von Entwicklern für Entwickler gemacht ist, hier geht es nicht darum Technologien oder Dienstleistungen zu verkaufen, sondern um gegenseitig neue Ideen und Lösungen zu entdecken und zu erlernen. Von daher sehr wertvoll für jeden Entwickler, der nicht einfach nur seinen Job macht, sondern das liebt was er tut.

An dieser Stelle nochmal vielen Dank an die Veranstalter, die Referenten und auch an den Sponsor Teamstudio.

Einsortiert unter:Notes & XPages Tagged: Andreas Artner, Android, Apple, Bernd Hort, Bernhard Köhler, Blog, Christian Habermueller, Composite Applications, Datasource, Debugger, Detlev Pöttgen, Development Contest, DNUG, Dojo, Eclipse, eGIT, Extensibility API, ExtLib, Formel, Formula, Frank van der Linden, Gerd Hildebrandt, Gergory Engels, GIT, Holger Chudek, Howard Greenberg, ibm, ICS, Java, Jürgen Kuhnert, JDBC, JQuery, Karsten Lehmann, Livetext, Lotus Protector, Lotus Traveler, Lotusscript, LotusSphere, Manfred Meise, Manuel Nientit, Matthew Fyleman, Matthias Bierl, Matthias Schneider, Mobile, Module, Niklas Heidloff, NoSQL, Notes, Notes 8.5.3, Notes Application Player, Notes Entwickler Camp 2012, OAuth, OpenNTF, OSGi, Peter Klett, Philippe Riand, Plugin, Presentation Karaoke, Rene Winkelmeyer, REST, Richard Sharpe, RKJSoft, Rocky Oliver, Rudi Knegt, Security, Serverside Javascript, Servlet, Social Business, Social Business Toolkit, Social Enabler, Stolperfalle, Tasklet, Teamstudio, Themes, Thomas Schneider, Tivoli Directory Integrator, TLCC, Tools, Ulrich Krause, Werner Motzet, Widget, XFLow, XPages, XSnippets

XPages: Notes Objekte in Java Singleton Patterns

28. März 2012 Posted by airwolf89

Ich hatte ja vor einer Weile in diesem Post am Ende von einem Problem berichtet, welches ich im XPages Forum gepostet habe.

Gestern habe ich mit Philippe Riand, dem Chef-Entwickler der XPages von IBM, über das Problem gesprochen. Hier ist die Erklärung:

Ich habe ja das NoteDatabase Objekt in der Klasseninstanz als Attribut gespeichert. D.h. dass bei jedem Request das gleiche Objekt verwendet wird, wie es ja auch bei einem Singleton Pattern sein soll.
Aber: Nach jedem Request wird ein NotesDatabase Objekt recycled, und zwar schon seit 8.5.1. Das hat einfach den Hintergrund, dass in dem NotesDatabase Objekt die Credentials des Users, der den Request abgeschickt hat, mitgespeichert werden. So würde, wenn User A die Funktion aufruft und die Klasse initialisiert, und dann User B die gleiche Funktion aufruft, die gleiche Instanz verwenden, in dem das NotesDatabase von User gespeichert ist. Würde somit die Funktion mit den Berechtigungen von User A aufrufen. Das darf natürlich nicht passieren. Daher wird, schon seit 8.5.1, ein NotesDatabase Objekt nach jedem Request recycled. Da das ganze in dem Singleton Pattern abläuft ist natürlich das Objekt noch da und nicht Null, hat aber keine Referenz mehr zur eigentlichen Datenbank und wirft somit den Fehler dass das Objekt removed oder recycled wurde.

Macht von dem Gesichtspunkt her natürlich auf jeden Fall Sinn, man muss es halt nur wissen.

Natürlich ist die Frage warum es dann bei mir unter 8.5.1 funktioniert hat. Die einzige Erklärung die wir finden konnten war, dass dies ein Bug unter 8.5.1 sein muss. Das sollte man denke ich auf jeden Fall mal bei sich in den Anwendungen überprüfen, da dies theoretisch ein ziemliches Sicherheitsrisiko sein kann.

Stattdessen sollte man, z.B. beim Aufruf der getInstance Methode die aktuelle Datenbank übergeben oder sich in der Java Klasse das Objekt direkt holen und jedes Mal neu setzen.

Einsortiert unter:Notes & XPages Tagged: Attribute, credentials, Error, ibm, Java, Notes, NotesDatabase, Parameter, Phillipe Riand, Referenz, removed or recycled, Request, Serverside Javascript, Session, Singleton Pattern, XPages

Stolperfalle: “Cycle reference” in Serverside Javascript

24. März 2012 Posted by airwolf89

Mal wieder eine Stolperfalle.

Wochenenden sind doch etwas wunderbares um seine Zeit mit Xpages zu verschwenden =)

Ich war dabei ein bisschen Code zu testen und zum laufen zu bringen. Konkret ging es um ein paar Java Klassen mit ein paar netten Funktionen, auf welche ich von Java und Serverside Javascript aus zugreifen wollte. Daher habe ich dann noch 2 Scriptlibraries geschrieben welche diese Funktionen nutzen können.

Code lief so gesehen eigentlich wunderbar, wenn da nicht diese nervigen OutOfMemoryExceptions gewesen wären…

Nach einigem testen (8 wertvolle Stunden meines Lebens mittlerweile), bin ich dann auf die Lösung bzw. die Ursache des Problem gekommen.

Gegenseitige Referenzierung (Cycle references klingt irgendwie viel cooler =) ) von Scriptlibraries mag Notes scheinbar gar nicht.

Die eine Scriptlibrary war ein Logging Tool, das andere ein Tool um auf meine Konfigurationsdokumente zugreifen zu können. Leider kam ich auf die Idee in der Konfigurationslibrary mein Logging Tool zu verwenden und im Logging Tool die Log Datenbank aus Konfigurationsdokumenten zu laden. Diese Konstruktion war scheinbar schon vorher zum Scheitern verurteilt, denn selbst printouts im Einstiegspunkt der Libraries wurden nicht ausgegeben. Dann bin ich auf die Idee gekommen zu testen ob vielleicht die gegnseitige Refrenzierung der Grund war.

Ich schrieb mir 2 Libraries, jeweils nur mit einer Funktion welche ein Printout enthielten. Beide haben sich gegenseitig referenziert. In einer Test-Xpage habe ich dann nur eine der Libraries geladen. Sonst nichts. Kein weiterer Code, keine Funktionsaufrufe, kein gar nichts.  Auch hier erhielt ich schon die OutOfMemoryExceptions. Scheinbar verträgt Notes das gar nicht. Ob das nun ein Bug (oder normales Verhalten) in XPages oder im Javaumfeld ist weiß ich nicht. Auf jeden Fall war mir dies noch nicht bekannt, im Netz habe ich dazu auch noch nichts gefunden, und hoffe dem einen oder anderen damit vielleicht ein paar Stunden Debugging erspart zu haben.

Als Lösung versuche ich nun eine Wrapperklasse zu schreiben, welche die Libraries verwendet und somit das Problem behebt. Mal schauen obs funktioniert.

Übrigens, im XPages Forum habe ich auch noch ein anderes Phänomen gepostet, auf welches ich während meiner Debugging Orgie gestoßen bin. Hat hiermit zwar nichts zu tun, aber es geht um eine der hier verwendeten Scriptlibraries.

XPages Forum – Disappearing notesDatabase reference in Java under 8.5.3

Kurze Zusammenfassung: Im verwendeten Javacode verschwand nach dem ersten (fehlerfreien) Aufruf der Funktion die Referenz auf die aktuelle Datenbank. Keine Ahnung warum. Sobald dort etwas gepostet wurde werde ich das auch hier rein stellen.

Einsortiert unter:Notes & XPages, Stolperfallen Tagged: Attribute, Bug, Cycle reference, gegenseitige Referenzierung, Java, libraries, Notes, OutOfMemoryException, Scriptlibrary, Serverside Javascript, Stolperfalle, XPages

Stolperfalle: Ids bei clientseitigen Events

20. März 2012 Posted by airwolf89

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:

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

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.

Einsortiert unter:Notes & XPages Tagged: Datasource, Dojo, Event, Firefox, ID, IE, Internet Explorer, mouseover, Notes, Performance, xp:div, xp:panel, xp:repeat, XPages

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

17. März 2012 Posted by airwolf89


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.


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

Einsortiert unter:Tools Tagged: DocViewer, Domiclipse, Eclipse, Formul8, Formula, Jeff Gilfelt, Notes, Plugin, repository, Secret Agent, Sidebar, Tools, Updatesite

Sonstiges: Eine Verschwörung ist im Gange

4. März 2012 Posted by airwolf89

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…

Einsortiert unter:Sonstiges Tagged: Bielefeld, Verschwörung

Notes: Views in Standard-Notes Web-Applikationen

27. Februar 2012 Posted by airwolf89

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.

Einsortiert unter:Notes & XPages Tagged: embedded view, Formel, frameset, line count, Pagination, Paging, Refresh, standard notes, ViewPanel, web

Tools: Austauschen von schlechten Website-Designs im eigenen Browser

23. Februar 2012 Posted by airwolf89

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:


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

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

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

Einsortiert unter:Tools Tagged: Aurora, CSS, Design, Firefox, Mozilla, Stylesheets, Tools

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

15. Februar 2012 Posted by airwolf89

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.

Einsortiert unter:Tools Tagged: David Leedy, Declan Lynch, domino designer, Eclipse, Hedersoft, Mercurial, Notes, Notes in 9, Projektmanagement, Redmine, Source Control, Tools

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

25. Januar 2012 Posted by airwolf89

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

Einsortiert unter:Sonstiges Tagged: Artikel, Kategorie, Permalink, Seite, Wordpress, zuordnen

Fanprojekt: Metal Gear Solid, Philantropy

25. Januar 2012 Posted by airwolf89

Ich bin durch Zufall auf ein Fanprojekt gestoßen. Ein paar Leute aus Italien (Hive Division) haben einen, meiner Meinung nach, sehr schönen Film über die Metal Gear Solid Saga von Hideo Kojima gedreht. Die Handlung stammt von den Produzenten selbst und ist thematisch zwischen dem ersten und dem vierten Teil angesiedelt und soll eine alternative Story zum zweiten Teil der Saga bilden.

Es ist, zugegebenermaßen, nicht gerade neu, er wurde bereits 2009 veröffentlicht, aber ich denke solche Projekte sollten immer unterstützt werden, vor allem weil alles auf non-Profit Basis läuft.

Der Film ist qualitativ, trotz fehlenden Budgets, teilweise recht hochwertig gemacht. Beim Film kommt definitiv MGS-Feeling auf.

Schaut ihn euch an =)

Metal Gear Solid: Philantropy

Einsortiert unter:Sonstiges Tagged: Fanprojekt, Film, Hideo Kojima, Hive Division, Metal Gear Solid, Philantropy, Snake