Despite my grousing about the state of programming for Domino in general and Designer in particular, I'm still mostly a fan of XPages. I use it for my guild's web site and pretty much every new project at work. However, I haven't been able to crack migrating my main work database template over.
Without getting too much into it, the point of the template is to create one database per project to act as a project web site listing online events with arbitrary registration forms and exit evaluations (among other things). Except for custom changes, everything is done via the normal Notes client, not Designer - pages exist as documents with a Body rich text field and associated data and register forms/exit evals, crucially, contain a set of response documents describing their fields. It's important to keep everything as visual as possible, because the users (the people at my company that set up these web sites) are not programmers.
I scrupulously try to avoid modifying the design of the database, so I go out of my way to do custom work via the existing mechanisms as much as possible, and I make pretty good use of rich-text-isms like embedded views, tabbed/computed tables, attachments, buttons, and computed text. In the case of the generated forms, fields can be placed either automatically (with a surrounding template of HTML per-field) or directly into the rich text body via <%FieldName%> placeholders (creating an experience like form design in Designer). Additionally, I have "WebQueryOpen" and "WebQuerySave" fields in the documents for formulas that I pass on into @Eval() in the equivalent places in the actual forms; most of the time, I use these for running agents.
Of the various potential show-stoppers, I think computed text fares the best. For one, it mostly worked - the computed formulas are indeed evaluated and the result is put into place correctly. However, they don't have the same environment you get with the "classic" design elements. The big one that I ran into immediately was @UrlQueryString(...) - it appears that the rich text renderer doesn't inform the rich text about its web environment completely. Prior to 8.5.3, "Display XPage instead" pages didn't know about the real URL, so they couldn't get query parameters at all, but 8.5.3 appears to pass that information along properly. So that means it MIGHT be fixable, if I find a way to properly set fields in the document before the rich text is rendered, so I can set QUERY_STRING - if I can do that, either @UrlQueryString(...) will work or I can manually parse the string as needed.
They work! ...ish. It looks like icon columns get their URLs a bit messed up, but I can't think of a time when I actually used them, particularly in a situation where I couldn't just write out the URL myself.
From a cursory glance, I think I'd be SOL when it comes to these. Tabbed tables render flattened out and computed tables don't seem to work.
These show up as "(See attached file: foo.jpg)". So... not functional. I might be able to fix it by using a filter on the text to replace the HTML with a link to the document, but I don't know if I could get the attachment image properly. Attachment images aren't amazing, but sometimes they do the job.
In some cases, I could run the formulas through session.evaluate(), though I'm not even sure queryOpenDocument/postOpenDocument let me hook into the right spots (sometimes I set fields on document open). I don't think that would run agents, though, so I'd be stuck trying to parse out the text to look for @Command([ToolsRunMacro]; "...").
It's a lot of hurdles! I'd love to switch over to XPages, particularly since, for everything that's more difficult than using classic elements, there are 10 things that are way easier. It'd just be quite an investment of time to merely get up to par with the functionality I already have, if it's even possible in all cases.
Some Notes on Developing with the frostillic.us Framework
Thu, Oct 9th 2014 5:12p Jesse Gallagher Now that I have a few apps under my belt, I've been getting a better idea of
the plusses and minuses of my current development techniques - the
frostillic.us Framework combined with stock controls + renderers. This post is
basically a mostly-unordered list of my overall thoughts on the current state.
Component binding is absolutely the way to go. This pays off in a number of
ways, but just knowing that the component is pointed unambiguously at a model
property - and thus getting its field [read] Keywords: notes
Building an App with the frostillic.us Framework, Part 7
Tue, Oct 7th 2014 6:12p Jesse Gallagher Well, it's been much longer than planned, and this topic isn't actually
particularly groundbreaking, but the series returns!
Define the data model
Create the view and add it to an XPage
Create the editing page
Add validation and translation to the model
Add notification to the model
Add sorting to the view
REST with Angular.js
One of the edge features of the Framework is that it assists in writing
DesignerFacesServlet servlets - which are sort of like XAgents but written
dir [read] Keywords: ibm
NotesIn9 Appearance: Custom Renderers
Thu, Oct 2nd 2014 7:12p Jesse Gallagher In a bout of unintentional timing, Dave Leedy
posted an episode of NotesIn9 I recorded about custom renderers. This should
pair nicely with my last post - the video provides an explanation for what
renderers are, how to attach them to your components, and an example of a basic
renderer for a widget container. So if you're interested in going down that
path (which you should be!), perhaps the video will help.
In it, I recommend looking at the source of Bootstrap4XPages, which remai [read] Keywords: widget
I Posted My WrapBootstrap Ace Renderkit
Tue, Sep 30th 2014 5:12p Jesse Gallagher Since I realized there was no reason not to and it could be potentially useful
to others, I tossed the renderkit I use for the WrapBootstrap Ace theme up on
As implied by the fact that it's not even a top-level project in my own GitHub
profile, there are caveats:
The theme itself is not actually included. That's licensed stuff and you'd have
to buy it yourself if you want to use it. Fortunately, it's dirt cheap for
[read] Keywords: domino
A Note About Installing the OpenNTF API RC2 Release
Fri, Sep 26th 2014 12:16p Jesse Gallagher In the latest release of the OpenNTF Domino API, the installation process has
changed a bit, which is most notable for Designer. The reason for this is due
to the weird requirements in Designer for properly getting source and
When downloading the file, instead of the previous Eclipse update sites, there
are two Update Site NSFs: one for Designer and one for Domino. There are a
couple ways you can use these:
If you're already using Update Sites for Designer or Domin [read] Keywords: domino
Arbitrary Authentication with an nginx Reverse Proxy
Mon, Sep 22nd 2014 4:12p Jesse Gallagher I had intended that this next part of my nginx thread would cover GeoIP, but
that will have to wait: a comment by Tinus Riyanto on my previous post sent my
thoughts aflame. Specifically, the question was whether or not you can use
nginx for authentication and then pass that value along to Domino, and the
answer is yes. One of the aforementioned WebSphere connector headers is $WSRU -
Domino will accept the value of this header as the authenticated username, no
password required (it will als [read] Keywords: domino
Adding Load Balancing to the nginx Setup
Sat, Sep 20th 2014 8:16a Jesse Gallagher In an earlier post, I went over the basic setup of installing nginx on a single
Domino server to get the basic benefits (largely SSL). Next, it's time to
expand the setup to have one nginx server in front of two Domino servers.
The concept is relatively straightforward: when an HTTP request comes in, nginx
will pick one of the back-end servers it knows about and pass the request along
to that. That allows for balancing the load between the two (since the act of
processing the request is m [read] Keywords: domino
Generating JSON in XPages Applications
Thu, Sep 18th 2014 3:13p Jesse Gallagher This topic is fairly well-trodden ground, but there's no harm in trodding it
some more: methods of producing JSON in the XPages environment. Specifically,
this will be primarily about the IBM Commons JSON classes, found in
com.ibm.commons.util.io.json. The reason for that choice is just that they ship
with Domino - other tools (like Gson) are great too, and in some ways better.
Before I go further, I'd like to reiterate a point I made before:
Never, ever, ever generate code without prope [read] Keywords: domino
Setting up nginx in Front of a Domino Server
Thu, Sep 18th 2014 10:18a Jesse Gallagher As I've mentioned before and now presented on, I'm a big proponent of using a
reverse proxy in front of Domino. There are numerous benefits to be gained,
particularly when you expand your infrastructure to include multiple back-end
servers. But even in the case of a single server, I've found it very worthwhile
to set up, and not overly complicated. This example uses nginx and Domino on
Ubuntu Linux, but the ideas and some configuration apply much the same way on
other OSes and with othe [read] Keywords: domino