The CreatorCon Call for Content is officially open! Get started here.

How do you set the template used on Open submissions Create Article UI?

clktester
Tera Contributor

In the UI Action on the Open Submissions form, I want to set the template used. 
Right now the OOB code sets the base, but then defaults to the Knowledge template. I want it to default to another template we've created. 

I've tried using sys_class_name, but had no luck. 
Any ideas would be greatly appreciated. 

Here's the OOB code. 

 

generateKB();

function generateKB() {
    if (current.changes())
      current.update();
    var gr = new GlideRecord('kb_knowledge');
    gr.initialize();
    gr.newRecord();
    gr.text = current.text;
    gr.source = current.sys_id;
    gr.sys_domain = current.sys_domain;
    gr.short_description = current.short_description;
    gr.valid_to = current.valid_to;
    gr.direct = current.direct;
    gr.display_attachments = current.display_attachments;
    gr.kb_knowledge_base = gs.getProperty("glide.knowman.task_kb", "dfc19531bf2021003f07e2c1ac0739ab");
    if (current.hasAttachments()) {
        var ids = GlideSysAttachment.copy('kb_submission', current.sys_id, 'kb_knowledge', gr.sys_id);
        ids = ids.toArray();
        for (var i = 0; i < ids.length; i++) {
            var oldandnew = ids[i].split(',');
            gr.text = gr.text.toString().replaceAll(oldandnew[0],oldandnew[1]);
        }
    }
    var newID = gr.insert();
    gs.addInfoMessage(gs.getMessage("Article {0} created", gr.number));
    action.setRedirectURL(gr);
    action.setReturnURL(current);
}

 

 

1 ACCEPTED SOLUTION

Abhay Kumar1
Giga Sage

@clktester To use your custom template, you need to explicitly set the kb_template field in your code. Assuming you already have a custom knowledge template created, you can specify its sys_id.

Updated Code:

generateKB();

function generateKB() {

    if (current.changes()) {

        current.update();

    }

    var gr = new GlideRecord('kb_knowledge');

    gr.initialize();

    gr.newRecord();

    gr.text = current.text;

    gr.source = current.sys_id;

    gr.sys_domain = current.sys_domain;

    gr.short_description = current.short_description;

    gr.valid_to = current.valid_to;

    gr.direct = current.direct;

    gr.display_attachments = current.display_attachments;

    gr.kb_knowledge_base = gs.getProperty("glide.knowman.task_kb", "dfc19531bf2021003f07e2c1ac0739ab");

    // Set the custom knowledge template (replace with your template's sys_id)

    gr.kb_template = '<your_custom_template_sys_id>';

    if (current.hasAttachments()) {

        var ids = GlideSysAttachment.copy('kb_submission', current.sys_id, 'kb_knowledge', gr.sys_id);

        ids = ids.toArray();

        for (var i = 0; i < ids.length; i++) {

            var oldandnew = ids[i].split(',');

            gr.text = gr.text.toString().replaceAll(oldandnew[0], oldandnew[1]);

        }

    }

    var newID = gr.insert();  gs.addInfoMessage(gs.getMessage("Article {0} created", gr.number));

    action.setRedirectURL(gr);

    action.setReturnURL(current);

}

Hope this will help you.

View solution in original post

1 REPLY 1

Abhay Kumar1
Giga Sage

@clktester To use your custom template, you need to explicitly set the kb_template field in your code. Assuming you already have a custom knowledge template created, you can specify its sys_id.

Updated Code:

generateKB();

function generateKB() {

    if (current.changes()) {

        current.update();

    }

    var gr = new GlideRecord('kb_knowledge');

    gr.initialize();

    gr.newRecord();

    gr.text = current.text;

    gr.source = current.sys_id;

    gr.sys_domain = current.sys_domain;

    gr.short_description = current.short_description;

    gr.valid_to = current.valid_to;

    gr.direct = current.direct;

    gr.display_attachments = current.display_attachments;

    gr.kb_knowledge_base = gs.getProperty("glide.knowman.task_kb", "dfc19531bf2021003f07e2c1ac0739ab");

    // Set the custom knowledge template (replace with your template's sys_id)

    gr.kb_template = '<your_custom_template_sys_id>';

    if (current.hasAttachments()) {

        var ids = GlideSysAttachment.copy('kb_submission', current.sys_id, 'kb_knowledge', gr.sys_id);

        ids = ids.toArray();

        for (var i = 0; i < ids.length; i++) {

            var oldandnew = ids[i].split(',');

            gr.text = gr.text.toString().replaceAll(oldandnew[0], oldandnew[1]);

        }

    }

    var newID = gr.insert();  gs.addInfoMessage(gs.getMessage("Article {0} created", gr.number));

    action.setRedirectURL(gr);

    action.setReturnURL(current);

}

Hope this will help you.