Name

sn_templated_snip.TaskTableList

Description

No description available

Script

var TaskTableList = Class.create();
TaskTableList.prototype = {
  initialize: function() {
  },
  
  /*
  * Utility script include that returns list of tables for which templated snippets can be created.
  *
  * @returns
  *   List of tables to create templated snippets.
  */
  process: function() {
  	var tableList = [];
  	var isHRModule = gs.getUrlOnStack().contains('hrmodule');
  	var pluginManager = new GlidePluginManager(); 
  	var HRCoreActive = pluginManager.isActive('com.sn_hr_core');
  	var LEActive = pluginManager.isActive('com.sn_hr_lifecycle_events');
  	
  	//Return HR tables
  	if ( HRCoreActive && isHRModule ) 
  		tableList = sn_hr_core.hr.TABLE_CASE_EXTENSIONS.concat(sn_hr_core.hr.TABLE_TASK_EXTENSIONS);
  	//Return all task tables and interaction table
  	else {
  		//list of task tables
  		var extensions = new GlideTableHierarchy("task").getAllExtensions();
  		//list of interaction tables
  		var interactionTables = new GlideTableHierarchy("interaction").getAllExtensions();

  		tableList = extensions.concat(interactionTables);
  	}
  	
  	//filter HR core tables for sn_hr_core.manager role
  	return HRCoreActive? this._filterHRTables(tableList, LEActive) : tableList;
  },
  
  /*
  * @param: Array list of tables
  * 
  * @return: Filtered list of tables
  *   Filters array list of tables by removing
  *   1. HR tables if user does not have 'sn_hr_core.manager' role
  *   2. LE tables if user does not have 'sn_hr_le.admin' role
  */
  _filterHRTables: function(tables, LEActive) {
  	//Remove HR tables if user has no 'sn_hr_core.manager' role
  	if( !gs.hasRole('sn_hr_core.manager') ) 
  		//remove HR core tables
  		tables = tables.filter( this._filterArrayFor('sn_hr_core') );
  	
  	//Remove LE tables if user has no 'sn_hr_le.admin' role
  	if( LEActive && !gs.hasRole('sn_hr_le.admin') )
  		tables = tables.filter( this._filterArrayFor('sn_hr_le') );
  
  	return tables;
  },
  
  /*
  * @param:
  *   string: type string
  * @returns:
  *   function: a callback filter function that returns
  *      false: if array element contains string   
  *       true: if array element does not contain string
  */
  _filterArrayFor: function(string) {
  	return function(element) {
  		return element.indexOf(string) == -1;
  	};
  },
  
  type: 'TaskTableList'
};

Sys ID

56b9de830b32320036e62c7885673ae1

Offical Documentation

Official Docs: