Name

sn_openframe.OpenFrameAjaxUtility

Description

Ajax Helper for Open Frame

Script

var OpenFrameAjaxUtility = Class.create();
OpenFrameAjaxUtility.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {

  checkAccessOpenframe: function() {
      var showFrame = GlidePluginManager.isActive('com.sn_openframe') && gs.hasRole('sn_openframe_user');
      return showFrame ? {
          showFrame: showFrame,
          config: (new global.JSON()).decode(this.getOpenFrameConfiguration()).config
      } : {};
  },

  getOpenFrameConfiguration: function() {
      var ofSettings = {};
      var flag = false;
      var settings = new GlideRecord('sn_openframe_configuration');
      var user = gs.getUser();
      settings.addQuery('active', true);
      settings.orderBy('order');
      settings.query();
      whileloop:
          while (settings.next()) {
              var groupIDs = settings.getValue('user_group');
              if (groupIDs) {
                  var groupID = groupIDs.split(',');
                  for (var i = 0; i < groupID.length; i++) {
                      if (user.isMemberOf(groupID[i])) {
                          flag = true;
                          break whileloop;
                      }
                  }
              } else {
                  flag = true;
                  break whileloop;
              }
          }
      if (flag) {
          var config = {
              title: settings.getValue('title'),
              subTitle: settings.getValue('subtitle'),
              titleIcon: settings.getValue('title_icon'),
              url: settings.getValue('url'),
              height: settings.getValue('height'),
              width: settings.getValue('width'),
              configuration: settings.getValue('configuration'),
              collapsedViewEnabled: settings.getDisplayValue('collapsed_view_enabled'),
              allow: gs.getProperty('sn_openframe.cross.origin.access', ''),
              navIconClass: settings.getValue('icon_class')
          };
          ofSettings["config"] = config;
      }
      return this.encodeJson(ofSettings);
  },

  setUserPreference: function(name, value) {
      name = this.getParameter('name') || name;
      value = this.getParameter('value') || value;
      gs.getUser().savePreference(name, value);
      return [];
  },

  getUserPreference: function(name) {
      var result = {};
      name = this.getParameter('name') || name;
      result[name] = gs.getUser().getPreference(name) || "";
      return this.encodeJson(result);
  },

  getUserGroup: function() {
      var gr = new GlideRecord('sys_user_group');
      gr.addActiveQuery();
      gr.query();
      while (gr.next()) {
          answer.add(gr.getValue('sys_id'), gr.getValue('name'));
      }
  },

  updateAgentPresence: function(state) {
      state = this.getParameter('state') || state;
      var agent = gs.getUserID();
      var gr = new GlideRecord("sn_openframe_agent_presence");
      gr.addQuery("agent", agent);
      gr.query();
      if (gr.next()) {
          gr.setValue("presence", state);
          gr.update();
      } else {
          var grNew = new GlideRecord("sn_openframe_agent_presence");
          grNew.initialize();
          grNew.setValue("agent", agent);
          grNew.setValue("presence", state);
          grNew.insert();
      }
      return [];
  },

  getGlideRecordData: function() {
      var json = new global.JSON();
      var table_name;
      var items = [];
      var result = this.newItem("result");
      var input = JSON.parse(this.getParameter("input"));
      var resultItems = [];
      for (var i = 0; i < input.length; i++) {
          table_name = input[i].sysparm_table_name;
          var sys_id = input[i].sysparm_sys_id;
          var fields = input[i].sysparm_fields ? input[i].sysparm_fields.split(",") : [];
          var gr = new GlideRecordSecure(table_name);
          if (!gr.get(sys_id)) {
              result.setAttribute("error", "NOT_FOUND");
              return;
          }
          for (var j = 0; j < fields.length; j++) {
              var field = fields[j];
              if (!field)
                  continue;
              try {
                  var el = gr.getElement(field);
                  if (el) {
                      var item = {};
                      item.field = field;
                      item.sys_id = gr.getValue(field);
                      item.value = gr.getDisplayValue(field);
                      if (field == "account")
                          item.label = el.getRefRecord().getLabel();
                      items.push(item);
                  }
              } catch (ex) {
                  gs.info("OpenFrameAjaxUtility.getGlideRecordData : " + ex.message);
              }
          }
          resultItems.push({
              "tableName": table_name,
              "items": items
          });
      }
      result.setAttribute("items", json.encode(resultItems));
  },

  createInteractionWithPropertyCheck: function() {
      var context = JSON.parse(this.getParameter('context'));
      var result = new sn_openframe.OpenframeInteractionUtility().createInteractionWithPropertyCheck(context);
      var response = this.newItem("result");
      response.setAttribute("data", JSON.stringify(result));
      return result;
  },

  encodeJson: function(object) {
      /*JSLint assumes you're client-side; however, JSON is a Script Include server-side and hence
      throws the error "Do not use JSON as a constructor". To fix the error using the following*/
      var SNJSON = global.JSON;
      var jsonResponse = new SNJSON().encode(object);
      return jsonResponse;
  },

  type: 'OpenFrameAjaxUtility'
});

Sys ID

6a988971c310020095ccd02422d3ae71

Offical Documentation

Official Docs: