docs: function createViewOnSiteCommands(serviceRegistry, commandService, options) {
  		var fileService = serviceRegistry.getService("orion.core.file"); //$NON-NLS-0$
  		commandService.addCommand(new Command({
  			name: messages["Add to site"],
  			tooltip: messages["Add the file to this site"],
  			id: "orion.site.add-to", //$NON-NLS-0$
  			visibleWhen: function(item) {
  				// Model tells us whether the file is running on the site configuration
  				return !item.IsFileRunningOn;
  			},
  			/**
  			 * @param {Function} data.userData.addToCallback
  			 * @param {Function} data.userData.errorCallback
  			 * @param {Object} data.userData.file
  			 */
  			callback: function(data) {
  				var file = data.userData.file;
  				var site = data.items.SiteConfiguration;
  				var progress = serviceRegistry.getService("orion.page.progress");
  				return (progress ? progress.progress(fileService.loadWorkspaces(), "Loading workspaces") : fileService.loadWorkspaces()).then(function(workspaces) {
  					return mSiteClient.forFileLocation(serviceRegistry, file.Location).mapOnSiteAndStart(site, file, workspaces[0].Id);
  				}).then(data.userData.addToCallback, data.userData.errorCallback);
  			}}));
  		// Command that generates a href to view the file on the site if it's mapped
  		commandService.addCommand(new Command({
  			name: messages["View"],
  			tooltip: messages["View the file on the site"],
  			id: "orion.site.view-on-link", //$NON-NLS-0$
  			visibleWhen: function(item) {
  				return item.IsFileRunningOn;
  			},
  			hrefCallback: function(data) {
  				var file = data.userData.file;
  				var site = data.items.SiteConfiguration;
  				return mSiteClient.forFileLocation(serviceRegistry, file.Location).getURLOnSite(site, file);
  			}}));
  	}