We've updated the ServiceNow Community Code of Conduct, adding guidelines around AI usage, professionalism, and content violations. Read more

Need help in report knowledge gap ui action for incident in native UI

Badrinarayan
Kilo Sage

I want to have report knowledge gap button on incident , where a pop up to be displayed with short description populated in that and , when i submit the knowledge gap , feedback task to get created

here is my code , please help

function reportKnowledgeClient() {
    var shortDescription = g_form.getValue("short_description");

    var modalHTML =
        '<div>' +
        '<h3>Report Knowledge Gap</h3><br>' +
        '<label><b>Topic</b></label><br>' +
        '<input id="feedback_topic" class="form-control" type="text" style="width:100%; padding:4px;" value="' + shortDescription + '"/><br><br>' +
        '<label><b>Description</b></label><br>' +
        '<textarea id="feedback_description" style="width:100%; padding:4px;" rows="5"></textarea><br><br>' +
        '<button class="btn btn-primary" id="feedback_submit">Submit</button> ' +
        '<button class="btn btn-secondary" id="feedback_cancel">Cancel</button>' +
        '</div>';

    var modal = new GlideModal("Report Knowledge Gap");
    modal.setSize("default");
    modal.renderWithContent(modalHTML, function() {
        // Handle Submit
        document.getElementById("feedback_submit").addEventListener("click", function () {
			alert("clicked");
            var topic = document.getElementById("feedback_topic").value;
            var description = document.getElementById("feedback_description").value;

            var ga = new GlideAjax("IncidentUtils2");
            ga.addParam("sysparm_name", "getKnowledgeGapMapping");
            ga.addParam("sysparm_incident", g_form.getUniqueValue());
            ga.addParam("sysparm_topic", topic);
            ga.addParam("sysparm_description", description);

            ga.getXMLAnswer(function(response) {
                // Show the response (the answer returned from server)
                alert("Server says: " + response);
                modal.destroy(); // close modal
            });
        });

        // Handle Cancel
        document.getElementById("feedback_cancel").addEventListener("click", function () {
            modal.destroy();
        });
    });
}
1 ACCEPTED SOLUTION

rohanaditya
Kilo Sage

Hi @Badrinarayan , @Rajeevreddy 

Try unchecking List V2 compatible and List V3 Compatible

 

rohanaditya_0-1765523687549.png

 

and Check client check box and onClick to reportKnowledgeClient()

 

rohanaditya_1-1765523867516.png

 

and update the client script to,

function reportKnowledgeClient() {

    var sysID = g_form.getUniqueValue();
    var parentShortDesc = g_form.getValue('short_description');

    var dialog = new GlideModalForm("Report a Knowledge Gap", "kb_feedback_task");

    dialog.setPreference('sys_id', '-1');
    dialog.setPreference('sysparm_view', 'create');

    // Include parent AND short_description in query
    dialog.setPreference(
        'sysparm_query',
        'parent=' + sysID + '^short_description=' + parentShortDesc
    );

    dialog.setPreference("sysparm_titleless", "true");
    dialog.setPreference("sysparm_view_forced", "true");
    dialog.setPreference("sysparm_clear_stack", "true");

    dialog.setOnloadCallback(function (dlg) {
        var frameWin = dlg.getFrameWindow();
        if (!frameWin || !frameWin.g_form) return;

        var kb_form = frameWin.g_form;

        kb_form.setLabelOf('short_description', 'Topic');

        kb_form.setValue('short_description', parentShortDesc);

        kb_form.setMandatory('short_description', true);
        kb_form.setMandatory('description', true);

        kb_form.setReadOnly('assignment_group', true);
    });

    dialog.setCompletionCallback(function (action, newSysId, table, displayValue) {

        var link = '<a href="/kb_feedback_task.do?sys_id=' + newSysId + '">' + displayValue + '</a>';
        g_form.addInfoMessage("Successfully created Knowledge Feedback Task: " + link);

        if (g_form.getControl("knowledge")) {
            g_form.setValue("knowledge", true);
            g_form.setReadOnly("knowledge", true);
        }

        var listID = g_form.getTableName() + '.kb_feedback_task.parent';
        if (typeof GlideList2 !== "undefined" && GlideList2.get(listID)) {
            GlideList2.get(listID).refresh();
        }
    });
	
	dialog.setSize(600,600);

    dialog.render();
}

 

You will get a pop-up in native UI,

rohanaditya_2-1765523936078.png

Thanks,

Rohan

View solution in original post

2 REPLIES 2

Rajeevreddy
Tera Expert

Hi Badri ,

 

Any update on this we are also exploring the option to implement on incident any help 

rohanaditya
Kilo Sage

Hi @Badrinarayan , @Rajeevreddy 

Try unchecking List V2 compatible and List V3 Compatible

 

rohanaditya_0-1765523687549.png

 

and Check client check box and onClick to reportKnowledgeClient()

 

rohanaditya_1-1765523867516.png

 

and update the client script to,

function reportKnowledgeClient() {

    var sysID = g_form.getUniqueValue();
    var parentShortDesc = g_form.getValue('short_description');

    var dialog = new GlideModalForm("Report a Knowledge Gap", "kb_feedback_task");

    dialog.setPreference('sys_id', '-1');
    dialog.setPreference('sysparm_view', 'create');

    // Include parent AND short_description in query
    dialog.setPreference(
        'sysparm_query',
        'parent=' + sysID + '^short_description=' + parentShortDesc
    );

    dialog.setPreference("sysparm_titleless", "true");
    dialog.setPreference("sysparm_view_forced", "true");
    dialog.setPreference("sysparm_clear_stack", "true");

    dialog.setOnloadCallback(function (dlg) {
        var frameWin = dlg.getFrameWindow();
        if (!frameWin || !frameWin.g_form) return;

        var kb_form = frameWin.g_form;

        kb_form.setLabelOf('short_description', 'Topic');

        kb_form.setValue('short_description', parentShortDesc);

        kb_form.setMandatory('short_description', true);
        kb_form.setMandatory('description', true);

        kb_form.setReadOnly('assignment_group', true);
    });

    dialog.setCompletionCallback(function (action, newSysId, table, displayValue) {

        var link = '<a href="/kb_feedback_task.do?sys_id=' + newSysId + '">' + displayValue + '</a>';
        g_form.addInfoMessage("Successfully created Knowledge Feedback Task: " + link);

        if (g_form.getControl("knowledge")) {
            g_form.setValue("knowledge", true);
            g_form.setReadOnly("knowledge", true);
        }

        var listID = g_form.getTableName() + '.kb_feedback_task.parent';
        if (typeof GlideList2 !== "undefined" && GlideList2.get(listID)) {
            GlideList2.get(listID).refresh();
        }
    });
	
	dialog.setSize(600,600);

    dialog.render();
}

 

You will get a pop-up in native UI,

rohanaditya_2-1765523936078.png

Thanks,

Rohan