Name
global.KnowledgeUIActionSNC
Description
Common script include to handle knowledge UI action Customers should not change this class directly This class is never called directly.
Script
var KnowledgeUIActionSNC = Class.create();
KnowledgeUIActionSNC.prototype = {
initialize: function() {
},
getEditableFields: function() {
return new KBVersioning().getEditableFields();
},
articleExistsForSource: function(sourceId) {
var gr = new GlideRecord("kb_knowledge");
if(sourceId) {
gr.addQuery("source",sourceId);
gr.query();
if(gr.next())
return true;
}
return false;
},
tableMapExists: function(source,mapName) {
if(source) {
var mapUtil = new CSMTableMapUtil(source);
if(mapName && mapName != '')
return (mapUtil.findMapByName(mapName) && new KBKnowledge().canCreate());
}
return false;
},
showTemplateSelector: function() {
if(new KBViewModel().isVersioningInstalled())
if(new ArticleTemplateUtil().canContributeToTemplates())
return true;
return false;
},
createKnowledgeAnyTemplateOnCase: function(){
return gs.getProperty("sn_customerservice.enable_knowledge_kcs") == 'true' && gs.getProperty("sn_customerservice.kcs.enable_template_on_case_workspace") == 'true' && !(this.articleExistsForSource(current.sys_id)) ;
},
/**
* publishes an article given article id and tablename
*/
publishArticleById: function(tableName, articleId){
if(gs.nil(tableName) || gs.nil(articleId))
return false;
var articleGr = new GlideRecord(tableName);
if(!articleGr.get(articleId))
return false;
return this.publish(articleGr);
},
/**
* publishes an article given article Gliderecord
*/
publish: function(articleGr) {
if (articleGr.scheduled_publish_date.changes()) {
if (new KBCommon().validateScheduledPublishDate(current)) {
gs.addErrorMessage(gs.getMessage("The Scheduled Publish Date must be set at least 24 hr after the current date."));
articleGr.setAbortAction(true);
return ;
}
}
var prevValue = articleGr.workflow_state + '';
if(!(new KBKnowledge().canPublish(articleGr)))
return false;
if(articleGr.getTableName() != articleGr.sys_class_name){
//update current to point to the table extended from kb_knowledge with specified sys_id.
articleGr = new GlideRecordUtil().getGR("kb_knowledge", articleGr.getUniqueValue());
}
if (articleGr.kb_knowledge_base.kb_version == "3" && new KBWorkflow().startWorkflow(articleGr, "workflow")) {
//If publish sub workflow is completed, workflow engine would have already done current.update()
if(articleGr.workflow_state!='published')
articleGr.update();
var knowledge = new GlideRecord("kb_knowledge");
if(knowledge.get(articleGr.sys_id) && prevValue != knowledge.getValue("workflow_state")){
if(knowledge.sys_class_name == 'kb_knowledge_block')
gs.addInfoMessage(new KBBlock().getStateMessage(knowledge.getValue("workflow_state")));
else
gs.addInfoMessage(new KBKnowledge().getStateMessage(knowledge.getValue("workflow_state")));
}
}
else if (articleGr.kb_knowledge_base.kb_version == "2") {
articleGr.workflow_state = 'published';
articleGr.update();
gs.addInfoMessage(new KBKnowledge().getStateMessage(articleGr.getValue("workflow_state")));
}
return true;
},
showModal: function(articleGr){
if(articleGr.sys_class_name != 'kb_knowledge_block' && new KBCommon().checkGuestUserHasAccess(articleGr.getUniqueValue()))
return true;
return false;
},
type: 'KnowledgeUIActionSNC'
};
Sys ID
53f2247bb712230026778d78ee11a971