Setting the Active Menu for Reactive Application's Default Screen
Application Type
Reactive
Service Studio Version
11.10.18 (Build 41212)
Platform Version
11.0.615

I have a simple Reactive with three web pages all using the LayoutTopMenu.  The Menu block has been updated such that each page has a link in the PageLinks container.

When directly navigating to a web page, the menu for the page is being set properly to active and rendered properly.  However when navigating to the application url, the application's Default Screen page is rendered as expected, but the page's corresponding menu is not being set to active.

Application.Default Screen = MainFlow\PageA

URLRendered PageMenu ActivatedCommon.Menu.mvc.js
 internalRender._idProps.uuid
/ApplicationName PageAnone
/ApplicationName/PageA PageAPageA5
/ApplicationName/PageB PageBPageB6
/ApplicationName/PageC PageCPageC7

There are some magic uuids generated in the OutSystems js for each Menu/Page link.  The  onReadyAction js code does have callContext._viewName = "MainFlow.PageX" 

Stepping through the Menu controller code around SetActiveMenuItems, the ActiveItem and ActiveSubItem are always set to "-1" no matter if the menu being set or not set to active when rendered in the browser.

What is the proper and safest way to correct the OutSystemsUI template/code infrastructure such that an application would be smart enough to set the proper menu for when the Application's Default Screen renders a page that contains a menu that points to itself?

Hi Erik,

euhm, so what you describe is the normal way it works, right ?  

And i guess you would like to work with URL's with only the ApplicationName for appearance purpose ?  So we are talking about URL's typed in the browser rather than screen flows ?  

And maybe also concerned about how it looks when a user clicks on the application name top left corner of the screen ?

Here are a few "low code" options, I'm sure there are more sophisticated ways to do it if you know your way around redirects, which I don't.  And maybe there are drawbacks I don't know of when it comes to things like SEO, again something I know nothing about.

So if it is only about the click on the Application Title, you could maybe replace the redirect in that webblock to a hard flow to the default screen, and of course you have to maintain this when the default screen changes.

Another option that will also catch both the click on the application title AND url's being typed into the browser address, is to add an on initialise to your layout block, checking in some way whether they are requesting "/ApplicationName' and in that case a hard flow to the default screen, again with the point that this needs to be maintained.

Another option is maybe to have some sort of dummy default screen that has as only function to flow to the real default screen on initialize.  This is maybe the most silly, but I like it's simplicity.

Or you could decide to live with the way OS works.

Dorine

Community GuidelinesBe kind and respectful, give credit to the original source of content, and search for duplicates before posting.