Autosave function for KB article does not work
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-21-2023 09:06 AM
I created a Client Script to autosave a KB article in every 15 seconds. The Client Script calls a client callable script include that checks if the sys id of the form is already in the database, in that case it updates the record and saves it. If the sys id is not in the database, it should create a new record and save it, but in my case, this latter functionality does not work. The script saves the record but then does not find it again, and after every 15 seconds it creates a new record.
Here is my Client script:
function onLoad() {
// Function savefields() is called in every 15 seconds
//alert('Autosave form runned');
setInterval(savefields, 15000);
function savefields() {
//Ajax call to update the record with the field values on the form
var ga = new GlideAjax('AutoSaveScript');
ga.addParam('sysparm_name', 'saveKB');
ga.addParam('sysparm_sys', g_form.getUniqueValue());
ga.addParam('sysparm_number', g_form.getValue('number'));
ga.addParam('sysparm_author', g_user.userID);
ga.addParam('sysparm_shortdescription', g_form.getValue('short_description'));
ga.addParam('sysparm_text', g_form.getValue('text'));
ga.addParam('sysparm_kb_knowledge_base', g_form.getValue('kb_knowledge_base'));
ga.addParam('sysparm_kb_category', g_form.getValue('kb_category'));
ga.addParam('sysparm_language', g_form.getValue('language'));
ga.addParam('sysparm_scheduled_publish_date', g_form.getValue('scheduled_publish_date'));
ga.addParam('sysparm_valid_to', g_form.getValue('valid_to'));
ga.addParam('sysparm_confidence', g_form.getValue('confidence'));
ga.addParam('sysparm_governance', g_form.getValue('governance'));
ga.addParam('sysparm_parent', g_form.getValue('parent'));
ga.addParam('sysparm_article_type', g_form.getValue('article_type'));
ga.addParam('sysparm_direct', g_form.getValue('direct'));
ga.addParam('sysparm_display_attachments', g_form.getValue('display_attachments'));
ga.addParam('sysparm_flagged', g_form.getValue('flagged'));
ga.getXML(saveForm);
}
//Callback function
function saveForm(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
alert(answer);
}
}
And here is my Script include:
var AutoSaveScript = Class.create();
AutoSaveScript.prototype = Object.extendsObject(AbstractAjaxProcessor, {
//Function to save/update knowledge article record
saveKB: function() {
var kb = new GlideRecord('kb_knowledge');
kb.addQuery('sys_id', this.getParameter('sysparm_sys'));
kb.query();
//If record is already in the database it is updated with the field values passed within the ajax call
if (kb.next()) {
gs.info('Sys_id found: ' + this.getParameter('sysparm_sys'));
if (this.getParameter('sysparm_shortdescription') != kb.short_description) {
kb.short_description = this.getParameter('sysparm_shortdescription');
}
if (this.getParameter('sysparm_text') != kb.text) {
kb.text = this.getParameter('sysparm_text');
}
if (this.getParameter('sysparm_kb_knowledge_base') != kb.kb_knowledge_base) {
kb.kb_knowledge_base = this.getParameter('sysparm_kb_knowledge_base');
}
if (this.getParameter('sysparm_kb_category') != kb.kb_category) {
kb.kb_category = this.getParameter('sysparm_kb_category');
}
if (this.getParameter('sysparm_language') != kb.language) {
kb.language = this.getParameter('sysparm_language');
}
if (this.getParameter('sysparm_scheduled_publish_date') != kb.scheduled_publish_date) {
kb.scheduled_publish_date = this.getParameter('sysparm_scheduled_publish_date');
}
if (this.getParameter('sysparm_valid_to') != kb.valid_to) {
kb.valid_to = this.getParameter('sysparm_valid_to');
}
if (this.getParameter('sysparm_confidence') != kb.confidence) {
kb.confidence = this.getParameter('sysparm_confidence');
}
if (this.getParameter('sysparm_governance') != kb.governance) {
kb.governance = this.getParameter('sysparm_governance');
}
if (this.getParameter('sysparm_parent') != kb.parent) {
kb.parent = this.getParameter('sysparm_parent');
}
if (this.getParameter('sysparm_article_type') != kb.article_type) {
kb.article_type = this.getParameter('sysparm_article_type');
}
if (this.getParameter('sysparm_direct') != kb.direct) {
kb.direct = this.getParameter('sysparm_direct');
}
if (this.getParameter('sysparm_display_attachments') != kb.display_attachments) {
kb.display_attachments = this.getParameter('sysparm_display_attachments');
}
if (this.getParameter('sysparm_flagged') != kb.flagged) {
kb.flagged = this.getParameter('sysparm_flagged');
}
kb.update();
return true;
//If the record is not yet in the database, record is initialized and saved with the field values passed within the ajax call
} else {
gs.info('AutoSaveScript does not find sys_id for ' + this.getParameter('sysparm_number') + ' sys_id: ' + this.getParameter('sysparm_sys'));
kb.initialize();
kb.setValue('sys_id', this.getParameter('sysparm_sys'));
kb.setValue('number', this.getParameter('sysparm_number'));
kb.setValue('author', this.getParameter('sysparm_author'));
kb.setValue('short_description', this.getParameter('sysparm_shortdescription'));
kb.setValue('kb_knowledge_base', this.getParameter('sysparm_kb_knowledge_base'));
kb.setValue('text', this.getParameter('sysparm_text'));
kb.setValue('kb_category', this.getParameter('sysparm_kb_category'));
kb.setValue('language', this.getParameter('sysparm_language'));
kb.setValue('scheduled_publish_date', this.getParameter('sysparm_scheduled_publish_date'));
kb.setValue('valid_to', this.getParameter('sysparm_valid_to'));
kb.setValue('confidence', this.getParameter('sysparm_confidence'));
kb.setValue('governance', this.getParameter('sysparm_governance'));
kb.setValue('parent', this.getParameter('sysparm_parent'));
kb.setValue('article_type', this.getParameter('sysparm_article_type'));
kb.setValue('direct', this.getParameter('sysparm_direct'));
kb.setValue('display_attachments', this.getParameter('sysparm_display_attachments'));
kb.setValue('flagged', this.getParameter('sysparm_flagged'));
var newrecord = kb.insert();
return newrecord;
}
},
type: 'AutoSaveScript'
});
0 REPLIES 0