Publish a UI page in a dashboard

Stewe Lundin
Mega Guru

Hi!

I'm trying to publish a UI Page as a Widget on a dashboard.

I'm getting;
Security constraints prevent access to requested page
Its a simple UI page writing out Hello World on the screen.
No JavaScript no nothing.
The code for the widget;

function sections() {

      return {

              'widget_name': { 'uiPageName' : 'hello_world'},

      };

}

function render() {

      var uiPageName = renderer.getPreferences().get("uiPageName");

      return renderer.getRenderedPage(uiPageName);

}

function getEditLink() {

      return "sys_ui_page.do?sysparm_query=name=" + renderer.getPreferences().get("uiPageName");

}

I have given the widget one of out public roles, and I'm running this with full admin.


What am I missing.  

10 REPLIES 10

@Yash Agarwal here is a full working version. Hopefully this helps you.

 

function sections() {
    return {
        'Friendly Widget Name': {
            'name': 'sample_ui_page_name'
        },
        'Friendly Widget Name2': {
            'name': 'sample_ui_page_name2'
        },
    };
}

function render() {
    var name = renderer.getPreferences().get("name");
    var gf = new GlideForm(renderer.getGC(), name, 0);
    gf.setDirect(true);
    gf.setRenderProperties(renderer.getRenderProperties());
    return gf.getRenderedPage();
}

function getEditLink() {
    return "sys_ui_page.do?sysparm_query=name=" + renderer.getPreferences().get("name");
}

Hi @Todd O!

When I run this script it returns null.

I used gs.log("sys_ui_page.do?sysparm_query=name=" + renderer.getPreferences().get("name") and the result is sys_ui_page.do?sysparm_query=name=null. I don't know why the name returns as null. Any ideas?

Hi @shadzhipasev, can you paste your code? These records are in the sys_widgets table and I don't think you can just gs.log the data but I'm not 100% sure. The only trouble I've run into with this script is typos. Also, I'm providing the SN documentation on this that may help you as well. 

Here is the widget, my UI Page name is "agent_approvals", I have tried every variety of this code that I found.

function sections() {
    return {
        'widget_name': { 'name' : 'agent_approvals'},
        //'widget_name2': {'uiPageName': 'UI_page_name_2'}
    };
}
function render() {
    var name = renderer.getPreferences().get("name");
    var gf = new GlideForm(renderer.getGC(), name, 0);
    gf.setDirect(true);
    gf.setRenderProperties(renderer.getRenderProperties());
    return gf.getRenderedPage();
}


function getEditLink() {
    return "sys_ui_page.do?sysparm_query=name=" + renderer.getPreferences().get("name");
}

 That is the error I get:

shadzhipasev_1-1696224381844.png

 

Your syntax looks correct. Have you tried to go to a dashboard and see if your new widget category is showing there. See images below. 

 

ToddO_0-1696257248536.png

 

ToddO_1-1696257258317.png