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

Offical Documentation

Official Docs: