Basically this redirects back to the current document, causing the refresh to do nothing but refresh the current document. I have found this very useful. I am going to include this function whenever I do a document.save() in SSJS.
To implement, but the code below in an SSJS code library. Then call it like this: redirectToCurrentDocument( false, "Invoices" )
I had to make two changes to Tommy's code to get it to work how I needed it.
- First I had to use .getNoteID() instead of .getUniversalID(). I was getting run time errors and this seemed to fix them, why I don't know.
- Second, I added code to take the user back to the tab they were working on. Without the tab parameter and query string it would always take the user back to the first tab.
Here is the code: (Again, credit for this belongs to Tommy Valand)
function redirectToCurrentDocument( switchMode:boolean, tab){
try {
if( typeof currentDocument === 'undefined' || viewScope.stopRedirect ){ return; }
// Gets the name of the XPage. E.g. /Person.xsp
var page = view.getPageName();
// Finds extra parameters, strips away XPages parameters/trims leading &
var parameters = context.getUrl().getQueryString().substring(1);
var extraParameters = parameters.replace(
/([&\?^]*_[a-z0-9=]+[&]{0,1})|(tab=\w{0,}[\&]{0,1})|(action=\w{4}Document[\&]{0,1})|(documentId=[\w]{32}[\&]{0,1})/ig, '').replace( /\&$/, '' );
// Gets the unid of the current document
var unid = document1.getDocument().getNoteID(); //changed to use NoteID since it gave runtime errors
// Sets/changes the action according according to the mode the document is in
var isEditable = currentDocument.isEditable();
if( switchMode ){ isEditable = !isEditable; } // false -> true / true -> false
var action = ( isEditable ) ? 'editDocument' : 'openDocument';
// Open the current document via a get request
var redirectUrl = page + '?documentId=' + unid + '&action=' + action;
if( extraParameters ){ redirectUrl += '&' + extraParameters; }
redirectUrl += '&tab=' + tab
context.redirectToPage( redirectUrl );
} catch(e){ /* Exception logging */ }
}
No comments:
Post a Comment