UI Views

Customized changes to the user interface configuration can be introduced through the use of UI Config documents. UI Config documents are JSON documents that contain one or more configuration blocks.

The UI Config configuration blocks are loaded after the standard configuration document and therefore have the opportunity to either extend or override the base configuration.

UI Configs are scoped either to the platform or to the project. As such, you can use UI Config objects to customize the Platform UI independently from the Project UI.

Platform: UI Config

You must have Manager rights to the Platform. If you do, then go to Platform > Platform Settings > UI Configs.

Click "Create UI Config" to create a new UI Config object. Give it a title and a description.

Click on your generated UI Config object to begin editing it. You'll see something like the following:

{
    "title": "My UI Config",
    "description": "My UI Config Description",
    "config": {
        "blocks": []
    },
    "enabled": true
}

You can now add a configuration block to this Platform UI Config object, such as:

{
    "title": "My Platform UI Config",
    "description": "My Platform UI Config Description",
    "config": {
        "blocks": [{
            "evaluator": "uri-match",
            "condition": "/",
            "config": {
                "context": {
                    "items": [{
                        "key": "platform/resources",
                        "items": [{
                            "key": "platform/custompage",
                            "title": "Custom Page",
                            "uri": "#/custom",
                            "iconClass": "fa fa-smile-o",
                            "allowPermission": [
                                "read"
                            ]            
                        }]
                    }]
                }                
            }
        }]
    },
    "enabled": true
}

This is a simple configuration which will introduce a new page to the left-hand side menu for the Platform view only when looking at the dashboard (where uri is /).

Save your changes.

Platform: Configure for User

As a logged in user, you should now be able to go under My Preferences > UI Configs.

In the drop down, pick the UI Config that you defined in the previous section.

You will now see the Custom Page appear in the left-hand menu.

Project: UI Config

Here is an example of a UI Config block defined at the Project level.

{
    "title": "My Project UI Config",
    "description": "My Project UI Config Description",
    "config": {
        "blocks": [{
            "evaluator": "uri-match",
            "condition": "/projects/{projectId}",
            "config": {
                "context": {
                    "items": [{
                        "key": "project/content/heading",
                        "items": [{
                            "key": "project/custompage",
                            "title": "Custom Page",
                            "uri": "#/projects/{projectId}/custom",
                            "iconClass": "fa fa-smile-o",
                            "allowPermission": [
                                "read"
                            ]            
                        }]
                    }]
                }                
            }
        }]
    },
    "enabled": true
}

Project: Configure for User

As a logged in user, you should now be able to go under Project > My Preferences > UI Configs.

In the drop down, pick the UI Config that you defined in the previous section.

You will now see the Custom Page appear in the left-hand menu for the Dashboard Page.

Enabling and Disable UI Configs

UI Configs can be globally enabled or disabled by adjusting the enabled property on them. Disabled UI Config objects won't be included in the configuration set retrieved by the user interface.

Role Based Provisioning

Cloud CMS intends to allow for role-based provisioning of UI Config documents such that UI Config can be automatically included based on what roles you have within both the Platform and Project scopes. This feature is coming soon.