Name

global.KBRelatedArticlesOrItemsSNC

Description

Customers should not change this class directly, rather override methods in the subclass. This class is never called directly.

Script

var KBRelatedArticlesOrItemsSNC = Class.create();
KBRelatedArticlesOrItemsSNC.prototype = {
  initialize: function() {},

  /**
   * User who can edit the knowledge article can only create relationships.
   *
   * @param GlideRecord: kb_2_kb/kb_2_sc
   * @return Boolean: can logged in user create a m2m relationship with articles/catalog items.
   */
  canCreate: function(knowledgeRef) {
      return this.canWriteArticle(knowledgeRef.kb_knowledge.getRefRecord());
  },

  /**
   * User who can edit the knowledge article can only delete relationships.
   *
   * @param GlideRecord: kb_2_kb/kb_2_sc
   * @return Boolean: can logged in user delete a m2m relationship with articles/catalog items.
   */
  canDelete: function(knowledgeRef) {
      return this.canWriteArticle(knowledgeRef.kb_knowledge.getRefRecord());
  },

  /**
   * User who can read the knowledge article can only read relationships.
   *
   * @param GlideRecord: kb_2_kb/kb_2_sc
   * @return Boolean: can logged in user read a m2m relationship with articles/catalog items.
   */
  canRead: function(knowledgeRef) {
      var knowledge = new KBKnowledge();
      if (knowledgeRef.kb_knowledge && !gs.nil(knowledgeRef.kb_knowledge))
          return knowledge.canRead(knowledgeRef.kb_knowledge.getRefRecord());
      else
          return knowledge.canCreate();
  },

  /**
   * User who can edit the knowledge article can only write relationships.
   *
   * @param GlideRecord: kb_2_kb/kb_2_sc
   * @return Boolean: can logged in user write a m2m relationship with articles/catalog items.
   */
  canWrite: function(knowledgeRef) {
      return this.canWriteArticle(knowledgeRef.kb_knowledge.getRefRecord());
  },

  /**
   * Whether a User can edit the article.
   *
   * @param GlideRecord: kb_2_kb/kb_2_sc
   * @return Boolean: can logged in user edit the article.
   */
  canWriteArticle: function(article) {
     var knowledge = new KBKnowledge();

      if (article && !gs.nil(article)) {
          if (article.workflow_state == "retired" || article.workflow_state == "outdated")
              return false;

          if (knowledge.isVersioningInstalled() && knowledge.isVersioningEnabled())
              if (article.workflow_state == 'published')
                  return new KBVersioning().canCreateRListMappingOnVersionedArticle(article);
              else
                  return article.canWrite();
          else
              return article.canWrite();
      }
      else
          return knowledge.canCreate();
  },

  type: 'KBRelatedArticlesOrItemsSNC'
};

Sys ID

2c2b749d534033003006ddeeff7b1212

Offical Documentation

Official Docs: