Name

sn_devstudio.UserDefinedModules

Description

No description available

Script

/**
* UserDefined Navigation modules for the ServiceNow Development Studio
*/
var UserDefinedModules = {
  getModules: function(id) {

      /**
       * Return an empty array if no id exists or we are in a global context
       */
      if (!id || id.toLowerCase() === 'null' || id.toLowerCase() === 'global') {
          return [];
      }

      /**
       * Initialize the modules object and query the navigation module table.  Iterate, and
       * add the module objects.  A top level module will not have a parent, and is the root
       * for a specific set of modules (defined in the modules object with the root key).
       *
       * Each module with a populated parent field will use the parent id as the key in
       * the modules object.
       */
      var modules = {};
      var gr = new GlideRecord('sn_devstudio_navigation_module');
  	gr.orderBy('order');
      gr.query();

      while (gr.next()) {
          addModules();
      }

      if (!modules.root) {
          return [];
      }

      /**
       * Recursively inject the children modules based on the parent or root field keys.
       */
      injectSubModules(modules.root);
      return modules.root;

      /**
       * Private functions
       */
      function addModules() {
          var key = gr.getValue('parent') || 'root';
          modules[key] = !modules[key] ? [] : modules[key];

          if (gr.getValue('type') == 'record_list') {
              var evaluator = new GlideScopedEvaluator();
              evaluator.putVariable('result', []);
              evaluator.evaluateScript(gr, 'script_server', null);

              var records = evaluator.getVariable('result');
              if (records && records.length > 0) {
                  modules[gr.getValue('sys_id')] = records;
              } else if (gr.getDisplayValue('has_module_action') == 'true') {
  				modules[gr.getValue('sys_id')] = [];
              } else {
  				return;
  			}
          }

          modules[key].push(UserDefinedFileType.createFileTypeFromGlideRecord(gr));
      }

      function injectSubModules(arr) {
          var children;
          for (var i = 0; i < arr.length; i++) {
              children = modules[arr[i].sysId];
              if (children) {
                  arr[i].children = children;
                  injectSubModules(children);
              }
          }
      }
  }
};

Sys ID

5cc1299a531313004205ddeeff7b1233

Offical Documentation

Official Docs: