Name

global.SPSearchResultActions

Description

Get payload field table from action name

Script

var SPSearchResultActions = Class.create();
SPSearchResultActions.prototype = Object.extendsObject(AbstractAjaxProcessor, {
  getPayloadFieldDefTable: function() {
      var actionId = this.getParameter('sysparm_actionId');
      var result = this.newItem('result');
      result.setAttribute('payloadFieldTable', '');
      var gr = new GlideRecord('sys_declarative_action_assignment');
      gr.addQuery('sys_id', actionId);
      gr.query();
      if (gr.next())
          result.setAttribute('payloadFieldTable', gr.client_action.payload_field_table);
  },

  getSuggestionResultAction: function() {
      var tableName = this.getParameter('sysparam_tableName');
      var sysId = this.getParameter('sysparam_sysId');
      var portalId = this.getParameter('sysparam_portalId');

      var answer = this.newItem('answer');

      var className = this._getClassName(tableName, sysId);
      if (className != null) {

          //Retrieve the declarative action from record's EVAM config
          var m2mGr = new GlideRecord('sys_ux_predicate_m2m_action_assignment');
          m2mGr.addQuery('predicate.active', true);
          m2mGr.addQuery('predicate.table', this._checkIfClassNameExistsInViewConfig(className, tableName));
          m2mGr.addQuery('predicate.predicate_bundle', 'IN', this._getEVAMBundle(portalId));
          m2mGr.addActiveQuery();
          m2mGr.query();


          if (m2mGr.next()) {
              answer = m2mGr.declarative_action_assignment;
          }
      }
      return answer;
  },

  _getClassName: function(table, sysId) {
      var sGr = new GlideRecord(table);
      if (sGr.get(sysId))
          return sGr.getValue('sys_class_name');

      return table;
  },

  _checkIfClassNameExistsInViewConfig: function(className, tableName) {
      var sGr = new GlideRecord('sys_ux_composite_data_template_predicate');
      sGr.addQuery('table', className);
      sGr.query();
      if (sGr.next()) {
          return className;
      }
      return tableName;
  },

  //Returns EVAM view config bundle for the portal 
  _getEVAMBundle: function(id) {
      var arr = [];
      var portalGr = new GlideRecord('sp_portal');
      if (portalGr.get(id)) {
          var m2mGr = new GlideRecord('sys_ux_composite_data_m2m_predicate_bundle');
          m2mGr.addQuery('dataset', portalGr.search_results_configuration);
          m2mGr.query();

          while (m2mGr.next()) {
              arr.push("" + m2mGr.predicate_bundle);
          }
      }
      return arr;
  },

  type: 'SPSearchResultActions'
});

Sys ID

a375ded977131010e46abe41a9106124

Offical Documentation

Official Docs: