Semaphor blog
Blog: Semaphor

Domino 10 Web Development Wish List

IBM asked for our input for the upcoming Domino 10. Here is our response.

The context of these suggestions is Notes Rich-Text in document, forms and pages. XPages are not considered in this text.

It is good web development practice to separate the concerns of the frontend code:

  • HTML - for text content, semantics and document structure.
  • CSS - for layout and look & feel.
  • Javascript - for in-page actions, automation and other behavior.

The default doctype should be changed to HTML5's <!DOCTYPE html>, but still override-able in $$HTMLFrontMatter.

Clean up all invalid HTML

We need to be able to produce valid HTML5 with Domino Forms, Views, Pages and so on. Please make valid HTML a success criteria!

Indented RichText is rendered as a ul tag, but without any li tags inside, which is invalid. It would make more sense to mark it up with blockquote tags.

This bug also exist inside nested lists, if the list items have a too big left margin.

Remove the language and type attributes, from the script tag generated for form, subform and page JS headers. They are no longer required.

Semantic markup

Given that CSS is responsible for the layout and look & feel, Domino must stop rendering HTML with presentational markup.

Drop the text, bgcolor, link, alink and vlink attributes on the body tag.

I never want to see another font tag! Don't just replace them with style attributes.

Drop the type attribute on ul and ol tag, rendered from Notes Rich-text.

Mark up buttons as button tags. No more <input type="submit"> nor <input type="button">. This makes styling easier and makes semantic sense.

Remove table attributes: border="0" cellspacing="0" cellpadding="0", it is up to the application developer to make the CSS.

Leave empty table cells empty. No more <img width="1" height="1" src="/icons/ecblank.gif" border="0" alt="">.

The hr tag should not longer generate width, size and align attributes. A simple <hr> will do.

Regain control of the styling of the content

It must be possible to set id and class attributes on tags generated by Domino, like ul, ol and li tags.

The ability to make headings, not just big bold colored text, is completely missing in Notes Richtext. In HTML h1-h6 has semantic meaning, and is easily styled with CSS. Again with the option to add id and class attributes.

If you feel a style attribute should be auto-generated, you are probably on the wrong track.

Support for custom JSON

When rendering our own JSON formats, we treat the Notes view as HTML and set square brackets on the view template. Since Domino does not support custom JSON from views, we are left with a comma too much at the end of the last row. To solve this we add a null value on the view template. Could Domino please remove the last comma, when the view template has the content-type: application/json!

Add the ability to make closing semantics on categorized columns. The formula in a categorized column could be: "{\"category\" : \"" + category_notes_field + "\", \"elements\" : [", but after the last document in the category we need a place to put "],". I imagine a formula field: "Category End" property under "Column Value". That would also be useful for custom XML.

How about introducing @JSONEncode(text), so we can get rid of code like:

_from := "\\":"\"":"/":"	":@Newline;
_to   := "\\\\":"\\\"":"\\/":"\\t":"\\n";
@ReplaceSubstring(text; _from; _to)

And while we're at it, how about @HTMLEncode(text).

POST'ing JSON to a LotusScript agent, does not support UTF-8. International characters are destroyed. Even if an explicit HTTP request header is set: Content-Type: application/json; charset=utf-8.

HTTP Client in LotusScript

When integrating with other services, we often need to make HTTPS calls from LotusScript. Previously we used CreateObject("Msxml2.ServerXMLHTTP.3.0"), but now when we are migrating to Linux servers, that is no longer an option. What we need is a HTTP Client in LotusScript, with TLS support, supported on all server platforms.

17-01-2018 17:09


Add comment

It may take a moment until your comment is published.