Name

global.SPWidgetCloneUtils

Description

javascript new SPWidgetCloneUtils().createCloneRelationship(oldID, newID)

Script

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

  createCloneRelationship: function(oldID, newID) {
  	var oldWidgetGR = new GlideRecord("sp_widget");
  	oldWidgetGR.query("sys_id", oldID);
  	if (!oldWidgetGR.next())
  		return;

  	if (this.isServiceNowWidget(oldWidgetGR)) {
  		var newRelGR = new GlideRecord("sp_rel_widget_clone");
  		newRelGR.payload = new GlideRecordSimpleSerializer().serialize(oldWidgetGR);
  		newRelGR.parent = oldID;
  		newRelGR.child = newID;
  		newRelGR.cloned = gs.nowDateTime();
  		newRelGR.last_validated = gs.nowDateTime();
  		newRelGR.insert();
  	} else {
  		var cloneRel = this.getExistingCloneRelationshipGR(oldID);
  		if (cloneRel != null) {
  			cloneRel.child = newID;
  			cloneRel.insert();
  		}
  	}
  },

  isServiceNowWidget: function(oldWidgetGR) {
  	if (oldWidgetGR.servicenow)
  		return true;

  	if (oldWidgetGR.sys_package.source.nil())
  		return false;

  	if (oldWidgetGR.sys_package.source.startsWith("sn_") || oldWidgetGR.sys_package.source.startsWith("com."))
  		return true;

  	return false;
  },

  getExistingCloneRelationshipGR: function(oldID) {
  	var relGR = new GlideRecord("sp_rel_widget_clone");
  	if (!relGR.get("child", oldID))
  		return null;

  	return relGR;
  },

  type: 'SPWidgetCloneUtils'
};

Sys ID

be6fdb835bf33200a9ad09ed5a62bc6f

Offical Documentation

Official Docs: