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.
My Sessions at MWLUG This Year
Mon, Aug 18th 2014 1:13p Jesse Gallagher As I mentioned at the end of this morning's post about SSL and reverse proxies,
I'm going to be giving a session on using a reverse proxy in front of Domino at
this year's MWLUG next week. Specifically, it will be one of two sessions, both
OS101: Load Balancing, Failover, and More With nginx
I'll be discussing the general reasons why you would use a reverse proxy - not
just the aforementioned SSL benefit, but also load balancing, failover,
multi-app integration, new feature [read] Keywords: domino
Domino SSL and Reverse Proxies
Mon, Aug 18th 2014 7:12a Jesse Gallagher Domino's SSL stack has been long-in-the-tooth and awkward to deal with for a
while. Until recently, this has mostly just resulted in the sort of stilted way
you have to set up SSL keychains, using the Server Certificate Admin database
initially and then "IKeyMan" more and more (specifically, an old version you
need 32-bit Windows XP for, like a barbarian), but the job eventually got done.
However, as a post from Steve Pitcher points out, this is becoming rapidly
impractical. While I gen [read] Keywords: admin
Quicker Tip: Lowering XPage Build Overhead When Using Jars
Thu, Aug 14th 2014 1:13p Jesse Gallagher (Caveat: I don't actually know if this matters with the Jar design element in
9.0+, since the only times I've needed it are with clients using obsolete
If you use Jar files stored in an NSF in your build path with XPages apps,
you've likely noticed that it makes your build times interminable, particularly
if it's a large library. From what I can tell, Designer seems convinced that it
must download the entire Jar file during every build, in order to find out
what's inside of [read] Keywords: xpages archive
Quick Tip: facetName-less Callbacks in XPages
Wed, Aug 13th 2014 5:12p Jesse Gallagher When you're setting up a Custom Control, you likely know by now that you can
set up callback areas to add content to a specified place inside your CC
content when it's rendered. They typically look something like this:
You then drop content in there like so in your XPage:
That works fine. However, you can benefit greatly by learning that both
properties of the callback are optional.
Leaving off the id isn't particularly interesting, [read] Keywords: ibm
How I Learned to Stop Worrying and Love C Structs
Mon, Aug 4th 2014 8:12p Jesse Gallagher Since a large amount of on-site client time has put my framework work on hold
for a bit, I figured I'd continue my dalliance in the world of raw item data.
Specifically, what I've been doing is filling out the collection of structs
with Java wrappers, particularly in the "cd" subpackage. For someone like me
who has only done bits and pieces of C over the years, this is a fruitful
experience, particularly since I'm dealing with just the core concept of the
Notes API data structures wit [read] Keywords: domino
Delving Into NSF Raw Item Data
Tue, Jul 29th 2014 11:12a Jesse Gallagher For the Design package of the OpenNTF Domino API, one of my goals was to add
the ability to access the supporting structures around XPages: file resources,
images, CSS, and, crucially, Java classes and the XPages themselves. My weapon
of choice for the whole API is DXL, and this covered the job nicely for most of
those aspects. DXL has clean representations for the first three in the list:
specialized XML formats containing the pertinent metadata and a single
BASE64-encoded block of the ac [read] Keywords: agent
Building an App with the frostillic.us Framework, Part 6
Wed, Jul 23rd 2014 12:12p Jesse Gallagher 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
Add sorting to the view
This step in the framework example is very similar to the second in that
there's nothing particularly Framework-y about it.
Technically, the work in the title of this step is already done: I had already
enabled click-to-sort and set sortable="true" i [read] Keywords: notes
The Industry's Vileness
Tue, Jul 22nd 2014 9:13p Jesse Gallagher Fair warning: this post isn't technical. It's also full of sweeping
When I attended middle and high school, it was as part of the last group of
geeks and nerds that should face systemic ostracization. Naturally, high school
will still be terrible for most people, just because it's full of high
schoolers, but the world at large has seen a near-complete triumph for geeks
and nerds generally. And this has had some very positive side effects: because
we had to deal with exclu [read] Keywords: community