Category Archives: Developing with IBM Content Navigator

Make a MessageDialog larger

I’ve been really busy for the past three months but I’ll be writing again soon. Meanwhile, here is a quick tip that may be handy sometimes to make any MessageDialog larger, because default size is 350x275px, which is really not much if you have large information to display.

Use the following code just before calling the show function on your MessageDialog.

domClass.add(dialog.domNode, "largeMessageDialog");;

You will have to import dojo/dom-class as domClass of course.

And add the following code in your css file of your plugin:

.ecmBaseDialog.ecmMessageDialog.largeMessageDialog {
    height: 90%;
    width: 90%;

If you’re using this a lot, I would recommend creating a new dialog extending MessageDialog and putting this in the postCreate but that will do the trick for one dialog.

And last quick thing, if you want to pre-positioned/scrolled down the content at the bottom of the div because the bottom is more important (like success/failure…), you can just do this:

dialog.description.scrollTop = dialog.description.scrollHeight;

It has to be after the call to the show function:;
dialog.description.scrollTop = dialog.description.scrollHeight;

Working with Entry Templates

The two states of the Entry Templates

Be careful with the Entry Template, they can have two states, retrieved or not retrieved. They contain a lot less information when they are not retrieved.

Here is how to check if it’s retrieved or not, and retrieve it if you need to:

if (!entryTemplate.isRetrieved) {
    // Retrieve it
    entryTemplate.retrieveEntryTemplate(lang.hitch(this, function (retrievedEntryTemplate) {
        // Do something with retrievedEntryTemplate
    }), false, true);

Here is the JSDoc of the ecm.model.EntryTemplate class, and the one of the retrieveEntryTemplate function. Actually the entry template object itself is updated so most of the time you won’t have to do anything in the callback except wait for it to happen. Example (function converting to classic callback to promise):
Continue reading

Working with documents

Retrieving the ecm.model.ContentItem from the ecm.model.item

repository.retrieveItem(documentOrFolderId, function (contentItem) {
    // Do something with the ContentItem
repository.retrieveItem(folderPath, function (contentItem) {
    // Do something with the ContentItem

Note: Unlike the documentation says, that does not work with an document path (see this), only with a folder path. However that works with both Document and Folder ID.


repository.retrieveItem(, function (contentItem) {
    // Do something with the ContentItem
repository.retrieveItem('/Folder/MySubFolder', function (contentItem) {
    // Do something with the ContentItem

Continue reading

Developing with IBM Content Navigator

I really think IBM Content Navigator lacks a good documentation, especially the JavaScript model. This is definitely not as good as for other IBM’s products, like FileNet P8 for instance. That’s why I thought I would write small examples in the same way that IBM does for developers in the P8 documentation (Working with …).

Of course before looking for information is this post, I can’t recommend you enough the Red Book for developing with IBM Content Navigator, the Javadoc and the JSDoc. This is the first thing every developer should read. However as good as it is, what’s next might come handy for your developments.

Update: Actually the JavaScript model really needs more documentation/examples so I will split the page in several of them to keep this understandable.

Continue reading