*******************************************************************
*******             Explanation about menu.json             *******
*******************************************************************

The menu.json defines the menu to show for each type of "roles":

Supported roles:
-----------------------------
ADMIN
DESIGNER

The JSON is separated to roles, and for each role we define "states",
what menu to show the user for each state of the component:

Supported states:
-----------------------------
NOT_CERTIFIED_CHECKOUT
NOT_CERTIFIED_CHECKIN
CERTIFIED

For each state we can define the user that will see this menu, the available parameters are:

Supported users:
-----------------------------
ANY
NOT_OWNER

Example:
For designer, if the component state is checkout and the component was created by other user, the NOT_OWNER will be used.

"DESIGNER":{
            "states":{
                "NOT_CERTIFIED_CHECKOUT":{
                    "ANY":[
                        {"text":"Edit"    ,"action":"goToEntity"},
                        {"text":"Check in","action":"changeLifecycleState", "url":"lifecycleState/CHECKIN", "confirmationModal": "lifecycleState/CHECKIN"},
                        {"text":"View"    ,"action":"openViewerModal"}
                    ],
                    "NOT_OWNER":[
                        {"text":"View"    ,"action":"openViewerModal"}
                    ]
                },


Definition of the menu item:
-----------------------------
text                - The text to show
action              - Function that will be called when pressing on the menu item
url                 - Data added to menu item, in case the function need to use it, example: for function "changeLifecycleState", I need to pass also the url "lifecycleState/CHECKOUT" that I want the state to change to.
confirmationModal   - Open confirmation modal (user should select "OK" or "Cancel"), and continue with the action.
blockedForTypes     - This item will not be shown for specific components types.
