spservices
Version:
Work with SharePoint's Web Services using jQuery
1,134 lines (1,068 loc) • 219 kB
JavaScript
/*
* SPServices - Work with SharePoint's Web Services using jQuery
* Version 2014.02
* @requires jQuery v1.8 or greater - jQuery 1.10.x+ recommended
*
* Copyright (c) 2009-2014 Sympraxis Consulting LLC
* Examples and docs at:
* http://spservices.codeplex.com
* Licensed under the MIT license:
* http://www.opensource.org/licenses/mit-license.php
*/
/*
* @description Work with SharePoint's Web Services using jQuery
* @type jQuery
* @name SPServices
* @category Plugins/SPServices
* @author Sympraxis Consulting LLC/marc.anderson@sympraxisconsulting.com
*/
/* jshint undef: true */
/* global L_Menu_BaseUrl, _spUserId, _spPageContextInfo, GipAddSelectedItems, GipRemoveSelectedItems, GipGetGroupData */
(function ($) {
"use strict";
// Version info
var VERSION = "2014.02"; // TODO: Update version
// String constants
// General
var SLASH = "/";
var spDelim = ";#";
var TXTColumnNotFound = "Column not found on page";
var SCHEMASharePoint = "http://schemas.microsoft.com/sharepoint";
var multiLookupPrefix = "MultiLookupPicker";
var multiLookupPrefix2013 = "MultiLookup";
// Dropdown Types
var dropdownType = {
simple: "S",
complex: "C",
multiSelect: "M"
};
// Known list field types - See: http://msdn.microsoft.com/en-us/library/office/microsoft.sharepoint.spfieldtype(v=office.15).aspx
var spListFieldTypes = [
"Integer",
"Text",
"Note",
"DateTime",
"Counter",
"Choice",
"Lookup",
"Boolean",
"Number",
"Currency",
"URL",
// "Computed", // NEW
// "Threading", // NEW
// "Guid", // NEW
"MultiChoice",
// "GridChoice", // NEW
"Calculated",
"File",
"Attachments",
"User",
// "Recurrence", // NEW
// "CrossProjectLink", // NEW
"ModStat",
"ContentTypeId",
// "PageSeparator", // NEW
// "ThreadIndex", // NEW
"WorkflowStatus", // NEW
// "AllDayEvent", // NEW
// "WorkflowEventType", // NEW
// "Geolocation", // NEW
// "OutcomeChoice", // NEW
// Also seen
"UserMulti", // Multiselect users
"LookupMulti", // Multi-select lookup
"datetime", // Calculated date/time result
"float", // Calculated float
"Calc" // General calculated
];
// Caching
var promisesCache = {};
// Web Service names
var ALERTS = "Alerts";
var AUTHENTICATION = "Authentication";
var COPY = "Copy";
var FORMS = "Forms";
var LISTS = "Lists";
var MEETINGS = "Meetings";
var OFFICIALFILE = "OfficialFile";
var PEOPLE = "People";
var PERMISSIONS = "Permissions";
var PUBLISHEDLINKSSERVICE = "PublishedLinksService";
var SEARCH = "Search";
var SHAREPOINTDIAGNOSTICS = "SharePointDiagnostics";
var SITEDATA = "SiteData";
var SITES = "Sites";
var SOCIALDATASERVICE = "SocialDataService";
var SPELLCHECK = "SpellCheck";
var TAXONOMYSERVICE = "TaxonomyClientService";
var USERGROUP = "usergroup";
var USERPROFILESERVICE = "UserProfileService";
var VERSIONS = "Versions";
var VIEWS = "Views";
var WEBPARTPAGES = "WebPartPages";
var WEBS = "Webs";
var WORKFLOW = "Workflow";
// Global variables
var currentContext = new SPServicesContext(); // Variable to hold the current context as we figure it out
var i = 0; // Generic loop counter
var encodeOptionList = ["listName", "description"]; // Used to encode options which may contain special characters
// Array to store Web Service information
// WSops.OpName = [WebService, needs_SOAPAction];
// OpName The name of the Web Service operation -> These names are unique
// WebService The name of the WebService this operation belongs to
// needs_SOAPAction Boolean indicating whether the operatio needs to have the SOAPAction passed in the setRequestHeaderfunction.
// true if the operation does a write, else false
var WSops = [];
WSops.GetAlerts = [ALERTS, false];
WSops.DeleteAlerts = [ALERTS, true];
WSops.Mode = [AUTHENTICATION, false];
WSops.Login = [AUTHENTICATION, false];
WSops.CopyIntoItems = [COPY, true];
WSops.CopyIntoItemsLocal = [COPY, true];
WSops.GetItem = [COPY, false];
WSops.GetForm = [FORMS, false];
WSops.GetFormCollection = [FORMS, false];
WSops.AddAttachment = [LISTS, true];
WSops.AddDiscussionBoardItem = [LISTS, true];
WSops.AddList = [LISTS, true];
WSops.AddListFromFeature = [LISTS, true];
WSops.ApplyContentTypeToList = [LISTS, true];
WSops.CheckInFile = [LISTS, true];
WSops.CheckOutFile = [LISTS, true];
WSops.CreateContentType = [LISTS, true];
WSops.DeleteAttachment = [LISTS, true];
WSops.DeleteContentType = [LISTS, true];
WSops.DeleteContentTypeXmlDocument = [LISTS, true];
WSops.DeleteList = [LISTS, true];
WSops.GetAttachmentCollection = [LISTS, false];
WSops.GetList = [LISTS, false];
WSops.GetListAndView = [LISTS, false];
WSops.GetListCollection = [LISTS, false];
WSops.GetListContentType = [LISTS, false];
WSops.GetListContentTypes = [LISTS, false];
WSops.GetListItemChanges = [LISTS, false];
WSops.GetListItemChangesSinceToken = [LISTS, false];
WSops.GetListItems = [LISTS, false];
WSops.GetVersionCollection = [LISTS, false];
WSops.UndoCheckOut = [LISTS, true];
WSops.UpdateContentType = [LISTS, true];
WSops.UpdateContentTypesXmlDocument = [LISTS, true];
WSops.UpdateContentTypeXmlDocument = [LISTS, true];
WSops.UpdateList = [LISTS, true];
WSops.UpdateListItems = [LISTS, true];
WSops.AddMeeting = [MEETINGS, true];
WSops.CreateWorkspace = [MEETINGS, true];
WSops.RemoveMeeting = [MEETINGS, true];
WSops.SetWorkSpaceTitle = [MEETINGS, true];
WSops.GetRecordRouting = [OFFICIALFILE, false];
WSops.GetRecordRoutingCollection = [OFFICIALFILE, false];
WSops.GetServerInfo = [OFFICIALFILE, false];
WSops.SubmitFile = [OFFICIALFILE, true];
WSops.ResolvePrincipals = [PEOPLE, true];
WSops.SearchPrincipals = [PEOPLE, false];
WSops.AddPermission = [PERMISSIONS, true];
WSops.AddPermissionCollection = [PERMISSIONS, true];
WSops.GetPermissionCollection = [PERMISSIONS, true];
WSops.RemovePermission = [PERMISSIONS, true];
WSops.RemovePermissionCollection = [PERMISSIONS, true];
WSops.UpdatePermission = [PERMISSIONS, true];
WSops.GetLinks = [PUBLISHEDLINKSSERVICE, true];
WSops.GetPortalSearchInfo = [SEARCH, false];
WSops.GetQuerySuggestions = [SEARCH, false];
WSops.GetSearchMetadata = [SEARCH, false];
WSops.Query = [SEARCH, false];
WSops.QueryEx = [SEARCH, false];
WSops.Registration = [SEARCH, false];
WSops.Status = [SEARCH, false];
WSops.SendClientScriptErrorReport = [SHAREPOINTDIAGNOSTICS, true];
WSops.GetAttachments = [SITEDATA, false];
WSops.EnumerateFolder = [SITEDATA, false];
WSops.SiteDataGetList = [SITEDATA, false];
WSops.SiteDataGetListCollection = [SITEDATA, false];
WSops.SiteDataGetSite = [SITEDATA, false];
WSops.SiteDataGetSiteUrl = [SITEDATA, false];
WSops.SiteDataGetWeb = [SITEDATA, false];
WSops.CreateWeb = [SITES, true];
WSops.DeleteWeb = [SITES, true];
WSops.GetSite = [SITES, false];
WSops.GetSiteTemplates = [SITES, false];
WSops.AddComment = [SOCIALDATASERVICE, true];
WSops.AddTag = [SOCIALDATASERVICE, true];
WSops.AddTagByKeyword = [SOCIALDATASERVICE, true];
WSops.CountCommentsOfUser = [SOCIALDATASERVICE, false];
WSops.CountCommentsOfUserOnUrl = [SOCIALDATASERVICE, false];
WSops.CountCommentsOnUrl = [SOCIALDATASERVICE, false];
WSops.CountRatingsOnUrl = [SOCIALDATASERVICE, false];
WSops.CountTagsOfUser = [SOCIALDATASERVICE, false];
WSops.DeleteComment = [SOCIALDATASERVICE, true];
WSops.DeleteRating = [SOCIALDATASERVICE, true];
WSops.DeleteTag = [SOCIALDATASERVICE, true];
WSops.DeleteTagByKeyword = [SOCIALDATASERVICE, true];
WSops.DeleteTags = [SOCIALDATASERVICE, true];
WSops.GetAllTagTerms = [SOCIALDATASERVICE, false];
WSops.GetAllTagTermsForUrlFolder = [SOCIALDATASERVICE, false];
WSops.GetAllTagUrls = [SOCIALDATASERVICE, false];
WSops.GetAllTagUrlsByKeyword = [SOCIALDATASERVICE, false];
WSops.GetCommentsOfUser = [SOCIALDATASERVICE, false];
WSops.GetCommentsOfUserOnUrl = [SOCIALDATASERVICE, false];
WSops.GetCommentsOnUrl = [SOCIALDATASERVICE, false];
WSops.GetRatingAverageOnUrl = [SOCIALDATASERVICE, false];
WSops.GetRatingOfUserOnUrl = [SOCIALDATASERVICE, false];
WSops.GetRatingOnUrl = [SOCIALDATASERVICE, false];
WSops.GetRatingsOfUser = [SOCIALDATASERVICE, false];
WSops.GetRatingsOnUrl = [SOCIALDATASERVICE, false];
WSops.GetSocialDataForFullReplication = [SOCIALDATASERVICE, false];
WSops.GetTags = [SOCIALDATASERVICE, true];
WSops.GetTagsOfUser = [SOCIALDATASERVICE, true];
WSops.GetTagTerms = [SOCIALDATASERVICE, true];
WSops.GetTagTermsOfUser = [SOCIALDATASERVICE, true];
WSops.GetTagTermsOnUrl = [SOCIALDATASERVICE, true];
WSops.GetTagUrlsOfUser = [SOCIALDATASERVICE, true];
WSops.GetTagUrlsOfUserByKeyword = [SOCIALDATASERVICE, true];
WSops.GetTagUrls = [SOCIALDATASERVICE, true];
WSops.GetTagUrlsByKeyword = [SOCIALDATASERVICE, true];
WSops.SetRating = [SOCIALDATASERVICE, true];
WSops.UpdateComment = [SOCIALDATASERVICE, true];
WSops.SpellCheck = [SPELLCHECK, false];
// Taxonomy Service Calls
// Updated 2011.01.27 by Thomas McMillan
WSops.AddTerms = [TAXONOMYSERVICE, true];
WSops.GetChildTermsInTerm = [TAXONOMYSERVICE, false];
WSops.GetChildTermsInTermSet = [TAXONOMYSERVICE, false];
WSops.GetKeywordTermsByGuids = [TAXONOMYSERVICE, false];
WSops.GetTermsByLabel = [TAXONOMYSERVICE, false];
WSops.GetTermSets = [TAXONOMYSERVICE, false];
WSops.AddGroup = [USERGROUP, true];
WSops.AddGroupToRole = [USERGROUP, true];
WSops.AddRole = [USERGROUP, true];
WSops.AddRoleDef = [USERGROUP, true];
WSops.AddUserCollectionToGroup = [USERGROUP, true];
WSops.AddUserCollectionToRole = [USERGROUP, true];
WSops.AddUserToGroup = [USERGROUP, true];
WSops.AddUserToRole = [USERGROUP, true];
WSops.GetAllUserCollectionFromWeb = [USERGROUP, false];
WSops.GetGroupCollection = [USERGROUP, false];
WSops.GetGroupCollectionFromRole = [USERGROUP, false];
WSops.GetGroupCollectionFromSite = [USERGROUP, false];
WSops.GetGroupCollectionFromUser = [USERGROUP, false];
WSops.GetGroupCollectionFromWeb = [USERGROUP, false];
WSops.GetGroupInfo = [USERGROUP, false];
WSops.GetRoleCollection = [USERGROUP, false];
WSops.GetRoleCollectionFromGroup = [USERGROUP, false];
WSops.GetRoleCollectionFromUser = [USERGROUP, false];
WSops.GetRoleCollectionFromWeb = [USERGROUP, false];
WSops.GetRoleInfo = [USERGROUP, false];
WSops.GetRolesAndPermissionsForCurrentUser = [USERGROUP, false];
WSops.GetRolesAndPermissionsForSite = [USERGROUP, false];
WSops.GetUserCollection = [USERGROUP, false];
WSops.GetUserCollectionFromGroup = [USERGROUP, false];
WSops.GetUserCollectionFromRole = [USERGROUP, false];
WSops.GetUserCollectionFromSite = [USERGROUP, false];
WSops.GetUserCollectionFromWeb = [USERGROUP, false];
WSops.GetUserInfo = [USERGROUP, false];
WSops.GetUserLoginFromEmail = [USERGROUP, false];
WSops.RemoveGroup = [USERGROUP, true];
WSops.RemoveGroupFromRole = [USERGROUP, true];
WSops.RemoveRole = [USERGROUP, true];
WSops.RemoveUserCollectionFromGroup = [USERGROUP, true];
WSops.RemoveUserCollectionFromRole = [USERGROUP, true];
WSops.RemoveUserCollectionFromSite = [USERGROUP, true];
WSops.RemoveUserFromGroup = [USERGROUP, true];
WSops.RemoveUserFromRole = [USERGROUP, true];
WSops.RemoveUserFromSite = [USERGROUP, true];
WSops.RemoveUserFromWeb = [USERGROUP, true];
WSops.UpdateGroupInfo = [USERGROUP, true];
WSops.UpdateRoleDefInfo = [USERGROUP, true];
WSops.UpdateRoleInfo = [USERGROUP, true];
WSops.UpdateUserInfo = [USERGROUP, true];
WSops.AddColleague = [USERPROFILESERVICE, true];
WSops.AddLink = [USERPROFILESERVICE, true];
WSops.AddMembership = [USERPROFILESERVICE, true];
WSops.AddPinnedLink = [USERPROFILESERVICE, true];
WSops.CreateMemberGroup = [USERPROFILESERVICE, true];
WSops.CreateUserProfileByAccountName = [USERPROFILESERVICE, true];
WSops.GetCommonColleagues = [USERPROFILESERVICE, false];
WSops.GetCommonManager = [USERPROFILESERVICE, false];
WSops.GetCommonMemberships = [USERPROFILESERVICE, false];
WSops.GetInCommon = [USERPROFILESERVICE, false];
WSops.GetPropertyChoiceList = [USERPROFILESERVICE, false];
WSops.GetUserColleagues = [USERPROFILESERVICE, false];
WSops.GetUserLinks = [USERPROFILESERVICE, false];
WSops.GetUserMemberships = [USERPROFILESERVICE, false];
WSops.GetUserPinnedLinks = [USERPROFILESERVICE, false];
WSops.GetUserProfileByGuid = [USERPROFILESERVICE, false];
WSops.GetUserProfileByIndex = [USERPROFILESERVICE, false];
WSops.GetUserProfileByName = [USERPROFILESERVICE, false];
WSops.GetUserProfileCount = [USERPROFILESERVICE, false];
WSops.GetUserProfileSchema = [USERPROFILESERVICE, false];
WSops.GetUserPropertyByAccountName = [USERPROFILESERVICE, false];
WSops.ModifyUserPropertyByAccountName = [USERPROFILESERVICE, true];
WSops.RemoveAllColleagues = [USERPROFILESERVICE, true];
WSops.RemoveAllLinks = [USERPROFILESERVICE, true];
WSops.RemoveAllMemberships = [USERPROFILESERVICE, true];
WSops.RemoveAllPinnedLinks = [USERPROFILESERVICE, true];
WSops.RemoveColleague = [USERPROFILESERVICE, true];
WSops.RemoveLink = [USERPROFILESERVICE, true];
WSops.RemoveMembership = [USERPROFILESERVICE, true];
WSops.RemovePinnedLink = [USERPROFILESERVICE, true];
WSops.UpdateColleaguePrivacy = [USERPROFILESERVICE, true];
WSops.UpdateLink = [USERPROFILESERVICE, true];
WSops.UpdateMembershipPrivacy = [USERPROFILESERVICE, true];
WSops.UpdatePinnedLink = [USERPROFILESERVICE, true];
WSops.DeleteAllVersions = [VERSIONS, true];
WSops.DeleteVersion = [VERSIONS, true];
WSops.GetVersions = [VERSIONS, false];
WSops.RestoreVersion = [VERSIONS, true];
WSops.AddView = [VIEWS, true];
WSops.DeleteView = [VIEWS, true];
WSops.GetView = [VIEWS, false];
WSops.GetViewHtml = [VIEWS, false];
WSops.GetViewCollection = [VIEWS, false];
WSops.UpdateView = [VIEWS, true];
WSops.UpdateViewHtml = [VIEWS, true];
WSops.AddWebPart = [WEBPARTPAGES, true];
WSops.AddWebPartToZone = [WEBPARTPAGES, true];
WSops.DeleteWebPart = [WEBPARTPAGES, true];
WSops.GetWebPart2 = [WEBPARTPAGES, false];
WSops.GetWebPartPage = [WEBPARTPAGES, false];
WSops.GetWebPartProperties = [WEBPARTPAGES, false];
WSops.GetWebPartProperties2 = [WEBPARTPAGES, false];
WSops.SaveWebPart2 = [WEBPARTPAGES, true];
WSops.CreateContentType = [WEBS, true];
WSops.GetColumns = [WEBS, false];
WSops.GetContentType = [WEBS, false];
WSops.GetContentTypes = [WEBS, false];
WSops.GetCustomizedPageStatus = [WEBS, false];
WSops.GetListTemplates = [WEBS, false];
WSops.GetObjectIdFromUrl = [WEBS, false]; // 2010
WSops.GetWeb = [WEBS, false];
WSops.GetWebCollection = [WEBS, false];
WSops.GetAllSubWebCollection = [WEBS, false];
WSops.UpdateColumns = [WEBS, true];
WSops.UpdateContentType = [WEBS, true];
WSops.WebUrlFromPageUrl = [WEBS, false];
WSops.AlterToDo = [WORKFLOW, true];
WSops.ClaimReleaseTask = [WORKFLOW, true];
WSops.GetTemplatesForItem = [WORKFLOW, false];
WSops.GetToDosForItem = [WORKFLOW, false];
WSops.GetWorkflowDataForItem = [WORKFLOW, false];
WSops.GetWorkflowTaskData = [WORKFLOW, false];
WSops.StartWorkflow = [WORKFLOW, true];
// Set up SOAP envelope
var SOAPEnvelope = {};
SOAPEnvelope.header = "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'><soap:Body>";
SOAPEnvelope.footer = "</soap:Body></soap:Envelope>";
SOAPEnvelope.payload = "";
var SOAPAction;
// Main function, which calls SharePoint's Web Services directly.
$.fn.SPServices = function (options) {
// If there are no options passed in, use the defaults. Extend replaces each default with the passed option.
var opt = $.extend({}, $.fn.SPServices.defaults, options);
// Encode options which may contain special character, esp. ampersand
for (var i = 0; i < encodeOptionList.length; i++) {
if (typeof opt[encodeOptionList[i]] === "string") {
opt[encodeOptionList[i]] = encodeXml(opt[encodeOptionList[i]]);
}
}
// Put together operation header and SOAPAction for the SOAP call based on which Web Service we're calling
SOAPEnvelope.opheader = "<" + opt.operation + " ";
switch (WSops[opt.operation][0]) {
case ALERTS:
SOAPEnvelope.opheader += "xmlns='" + SCHEMASharePoint + "/soap/2002/1/alerts/' >";
SOAPAction = SCHEMASharePoint + "/soap/2002/1/alerts/";
break;
case MEETINGS:
SOAPEnvelope.opheader += "xmlns='" + SCHEMASharePoint + "/soap/meetings/' >";
SOAPAction = SCHEMASharePoint + "/soap/meetings/";
break;
case OFFICIALFILE:
SOAPEnvelope.opheader += "xmlns='" + SCHEMASharePoint + "/soap/recordsrepository/' >";
SOAPAction = SCHEMASharePoint + "/soap/recordsrepository/";
break;
case PERMISSIONS:
SOAPEnvelope.opheader += "xmlns='" + SCHEMASharePoint + "/soap/directory/' >";
SOAPAction = SCHEMASharePoint + "/soap/directory/";
break;
case PUBLISHEDLINKSSERVICE:
SOAPEnvelope.opheader += "xmlns='http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService/' >";
SOAPAction = "http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService/";
break;
case SEARCH:
SOAPEnvelope.opheader += "xmlns='urn:Microsoft.Search' >";
SOAPAction = "urn:Microsoft.Search/";
break;
case SHAREPOINTDIAGNOSTICS:
SOAPEnvelope.opheader += "xmlns='" + SCHEMASharePoint + "/diagnostics/' >";
SOAPAction = "http://schemas.microsoft.com/sharepoint/diagnostics/";
break;
case SOCIALDATASERVICE:
SOAPEnvelope.opheader += "xmlns='http://microsoft.com/webservices/SharePointPortalServer/SocialDataService' >";
SOAPAction = "http://microsoft.com/webservices/SharePointPortalServer/SocialDataService/";
break;
case SPELLCHECK:
SOAPEnvelope.opheader += "xmlns='http://schemas.microsoft.com/sharepoint/publishing/spelling/' >";
SOAPAction = "http://schemas.microsoft.com/sharepoint/publishing/spelling/SpellCheck";
break;
case TAXONOMYSERVICE:
SOAPEnvelope.opheader += "xmlns='" + SCHEMASharePoint + "/taxonomy/soap/' >";
SOAPAction = SCHEMASharePoint + "/taxonomy/soap/";
break;
case USERGROUP:
SOAPEnvelope.opheader += "xmlns='" + SCHEMASharePoint + "/soap/directory/' >";
SOAPAction = SCHEMASharePoint + "/soap/directory/";
break;
case USERPROFILESERVICE:
SOAPEnvelope.opheader += "xmlns='http://microsoft.com/webservices/SharePointPortalServer/UserProfileService' >";
SOAPAction = "http://microsoft.com/webservices/SharePointPortalServer/UserProfileService/";
break;
case WEBPARTPAGES:
SOAPEnvelope.opheader += "xmlns='http://microsoft.com/sharepoint/webpartpages' >";
SOAPAction = "http://microsoft.com/sharepoint/webpartpages/";
break;
case WORKFLOW:
SOAPEnvelope.opheader += "xmlns='" + SCHEMASharePoint + "/soap/workflow/' >";
SOAPAction = SCHEMASharePoint + "/soap/workflow/";
break;
default:
SOAPEnvelope.opheader += "xmlns='" + SCHEMASharePoint + "/soap/'>";
SOAPAction = SCHEMASharePoint + "/soap/";
break;
}
// Add the operation to the SOAPAction and opfooter
SOAPAction += opt.operation;
SOAPEnvelope.opfooter = "</" + opt.operation + ">";
// Build the URL for the Ajax call based on which operation we're calling
// If the webURL has been provided, then use it, else use the current site
var ajaxURL = "_vti_bin/" + WSops[opt.operation][0] + ".asmx";
var thisSite = $().SPServices.SPGetCurrentSite();
var webURL = opt.webURL !== undefined ? opt.webURL : opt.webUrl;
if (webURL.charAt(webURL.length - 1) === SLASH) {
ajaxURL = webURL + ajaxURL;
} else if (webURL.length > 0) {
ajaxURL = webURL + SLASH + ajaxURL;
} else {
ajaxURL = thisSite + ((thisSite.charAt(thisSite.length - 1) === SLASH) ? ajaxURL : (SLASH + ajaxURL));
}
SOAPEnvelope.payload = "";
// Each operation requires a different set of values. This switch statement sets them up in the SOAPEnvelope.payload.
switch (opt.operation) {
// ALERT OPERATIONS
case "GetAlerts":
break;
case "DeleteAlerts":
SOAPEnvelope.payload += "<IDs>";
for (i = 0; i < opt.IDs.length; i++) {
SOAPEnvelope.payload += wrapNode("string", opt.IDs[i]);
}
SOAPEnvelope.payload += "</IDs>";
break;
// AUTHENTICATION OPERATIONS
case "Mode":
break;
case "Login":
addToPayload(opt, ["username", "password"]);
break;
// COPY OPERATIONS
case "CopyIntoItems":
addToPayload(opt, ["SourceUrl"]);
SOAPEnvelope.payload += "<DestinationUrls>";
for (i = 0; i < opt.DestinationUrls.length; i++) {
SOAPEnvelope.payload += wrapNode("string", opt.DestinationUrls[i]);
}
SOAPEnvelope.payload += "</DestinationUrls>";
addToPayload(opt, ["Fields", "Stream", "Results"]);
break;
case "CopyIntoItemsLocal":
addToPayload(opt, ["SourceUrl"]);
SOAPEnvelope.payload += "<DestinationUrls>";
for (i = 0; i < opt.DestinationUrls.length; i++) {
SOAPEnvelope.payload += wrapNode("string", opt.DestinationUrls[i]);
}
SOAPEnvelope.payload += "</DestinationUrls>";
break;
case "GetItem":
addToPayload(opt, ["Url", "Fields", "Stream"]);
break;
// FORM OPERATIONS
case "GetForm":
addToPayload(opt, ["listName", "formUrl"]);
break;
case "GetFormCollection":
addToPayload(opt, ["listName"]);
break;
// LIST OPERATIONS
case "AddAttachment":
addToPayload(opt, ["listName", "listItemID", "fileName", "attachment"]);
break;
case "AddDiscussionBoardItem":
addToPayload(opt, ["listName", "message"]);
break;
case "AddList":
addToPayload(opt, ["listName", "description", "templateID"]);
break;
case "AddListFromFeature":
addToPayload(opt, ["listName", "description", "featureID", "templateID"]);
break;
case "ApplyContentTypeToList":
addToPayload(opt, ["webUrl", "contentTypeId", "listName"]);
break;
case "CheckInFile":
addToPayload(opt, ["pageUrl", "comment", "CheckinType"]);
break;
case "CheckOutFile":
addToPayload(opt, ["pageUrl", "checkoutToLocal", "lastmodified"]);
break;
case "CreateContentType":
addToPayload(opt, ["listName", "displayName", "parentType", "fields", "contentTypeProperties", "addToView"]);
break;
case "DeleteAttachment":
addToPayload(opt, ["listName", "listItemID", "url"]);
break;
case "DeleteContentType":
addToPayload(opt, ["listName", "contentTypeId"]);
break;
case "DeleteContentTypeXmlDocument":
addToPayload(opt, ["listName", "contentTypeId", "documentUri"]);
break;
case "DeleteList":
addToPayload(opt, ["listName"]);
break;
case "GetAttachmentCollection":
addToPayload(opt, ["listName", ["listItemID", "ID"]]);
break;
case "GetList":
addToPayload(opt, ["listName"]);
break;
case "GetListAndView":
addToPayload(opt, ["listName", "viewName"]);
break;
case "GetListCollection":
break;
case "GetListContentType":
addToPayload(opt, ["listName", "contentTypeId"]);
break;
case "GetListContentTypes":
addToPayload(opt, ["listName"]);
break;
case "GetListItems":
addToPayload(opt, ["listName", "viewName", ["query", "CAMLQuery"],
["viewFields", "CAMLViewFields"],
["rowLimit", "CAMLRowLimit"],
["queryOptions", "CAMLQueryOptions"]
]);
break;
case "GetListItemChanges":
addToPayload(opt, ["listName", "viewFields", "since", "contains"]);
break;
case "GetListItemChangesSinceToken":
addToPayload(opt, ["listName", "viewName", ["query", "CAMLQuery"],
["viewFields", "CAMLViewFields"],
["rowLimit", "CAMLRowLimit"],
["queryOptions", "CAMLQueryOptions"], {
name: "changeToken",
sendNull: false
}, {
name: "contains",
sendNull: false
}
]);
break;
case "GetVersionCollection":
addToPayload(opt, ["strlistID", "strlistItemID", "strFieldName"]);
break;
case "UndoCheckOut":
addToPayload(opt, ["pageUrl"]);
break;
case "UpdateContentType":
addToPayload(opt, ["listName", "contentTypeId", "contentTypeProperties", "newFields", "updateFields", "deleteFields", "addToView"]);
break;
case "UpdateContentTypesXmlDocument":
addToPayload(opt, ["listName", "newDocument"]);
break;
case "UpdateContentTypeXmlDocument":
addToPayload(opt, ["listName", "contentTypeId", "newDocument"]);
break;
case "UpdateList":
addToPayload(opt, ["listName", "listProperties", "newFields", "updateFields", "deleteFields", "listVersion"]);
break;
case "UpdateListItems":
addToPayload(opt, ["listName"]);
if (typeof opt.updates !== "undefined" && opt.updates.length > 0) {
addToPayload(opt, ["updates"]);
} else {
SOAPEnvelope.payload += "<updates><Batch OnError='Continue'><Method ID='1' Cmd='" + opt.batchCmd + "'>";
for (i = 0; i < opt.valuepairs.length; i++) {
SOAPEnvelope.payload += "<Field Name='" + opt.valuepairs[i][0] + "'>" + escapeColumnValue(opt.valuepairs[i][1]) + "</Field>";
}
if (opt.batchCmd !== "New") {
SOAPEnvelope.payload += "<Field Name='ID'>" + opt.ID + "</Field>";
}
SOAPEnvelope.payload += "</Method></Batch></updates>";
}
break;
// MEETINGS OPERATIONS
case "AddMeeting":
addToPayload(opt, ["organizerEmail", "uid", "sequence", "utcDateStamp", "title", "location", "utcDateStart", "utcDateEnd", "nonGregorian"]);
break;
case "CreateWorkspace":
addToPayload(opt, ["title", "templateName", "lcid", "timeZoneInformation"]);
break;
case "RemoveMeeting":
addToPayload(opt, ["recurrenceId", "uid", "sequence", "utcDateStamp", "cancelMeeting"]);
break;
case "SetWorkspaceTitle":
addToPayload(opt, ["title"]);
break;
// OFFICIALFILE OPERATIONS
case "GetRecordRouting":
addToPayload(opt, ["recordRouting"]);
break;
case "GetRecordRoutingCollection":
break;
case "GetServerInfo":
break;
case "SubmitFile":
addToPayload(opt, ["fileToSubmit"], ["properties"], ["recordRouting"], ["sourceUrl"], ["userName"]);
break;
// PEOPLE OPERATIONS
case "ResolvePrincipals":
addToPayload(opt, ["principalKeys", "principalType", "addToUserInfoList"]);
break;
case "SearchPrincipals":
addToPayload(opt, ["searchText", "maxResults", "principalType"]);
break;
// PERMISSION OPERATIONS
case "AddPermission":
addToPayload(opt, ["objectName", "objectType", "permissionIdentifier", "permissionType", "permissionMask"]);
break;
case "AddPermissionCollection":
addToPayload(opt, ["objectName", "objectType", "permissionsInfoXml"]);
break;
case "GetPermissionCollection":
addToPayload(opt, ["objectName", "objectType"]);
break;
case "RemovePermission":
addToPayload(opt, ["objectName", "objectType", "permissionIdentifier", "permissionType"]);
break;
case "RemovePermissionCollection":
addToPayload(opt, ["objectName", "objectType", "memberIdsXml"]);
break;
case "UpdatePermission":
addToPayload(opt, ["objectName", "objectType", "permissionIdentifier", "permissionType", "permissionMask"]);
break;
// PUBLISHEDLINKSSERVICE OPERATIONS
case "GetLinks":
break;
// SEARCH OPERATIONS
case "GetPortalSearchInfo":
SOAPEnvelope.opheader = "<" + opt.operation + " xmlns='http://microsoft.com/webservices/OfficeServer/QueryService'>";
SOAPAction = "http://microsoft.com/webservices/OfficeServer/QueryService/" + opt.operation;
break;
case "GetQuerySuggestions":
SOAPEnvelope.opheader = "<" + opt.operation + " xmlns='http://microsoft.com/webservices/OfficeServer/QueryService'>";
SOAPAction = "http://microsoft.com/webservices/OfficeServer/QueryService/" + opt.operation;
SOAPEnvelope.payload += wrapNode("queryXml", encodeXml(opt.queryXml));
break;
case "GetSearchMetadata":
SOAPEnvelope.opheader = "<" + opt.operation + " xmlns='http://microsoft.com/webservices/OfficeServer/QueryService'>";
SOAPAction = "http://microsoft.com/webservices/OfficeServer/QueryService/" + opt.operation;
break;
case "Query":
SOAPEnvelope.payload += wrapNode("queryXml", encodeXml(opt.queryXml));
break;
case "QueryEx":
SOAPEnvelope.opheader = "<" + opt.operation + " xmlns='http://microsoft.com/webservices/OfficeServer/QueryService'>";
SOAPAction = "http://microsoft.com/webservices/OfficeServer/QueryService/" + opt.operation;
SOAPEnvelope.payload += wrapNode("queryXml", encodeXml(opt.queryXml));
break;
case "Registration":
SOAPEnvelope.payload += wrapNode("registrationXml", encodeXml(opt.registrationXml));
break;
case "Status":
break;
// SHAREPOINTDIAGNOSTICS OPERATIONS
case "SendClientScriptErrorReport":
addToPayload(opt, ["message", "file", "line", "client", "stack", "team", "originalFile"]);
break;
// SITEDATA OPERATIONS
case "EnumerateFolder":
addToPayload(opt, ["strFolderUrl"]);
break;
case "GetAttachments":
addToPayload(opt, ["strListName", "strItemId"]);
break;
case "SiteDataGetList":
addToPayload(opt, ["strListName"]);
// Because this operation has a name which duplicates the Lists WS, need to handle
SOAPEnvelope = siteDataFixSOAPEnvelope(SOAPEnvelope, opt.operation);
break;
case "SiteDataGetListCollection":
// Because this operation has a name which duplicates the Lists WS, need to handle
SOAPEnvelope = siteDataFixSOAPEnvelope(SOAPEnvelope, opt.operation);
break;
case "SiteDataGetSite":
// Because this operation has a name which duplicates the Lists WS, need to handle
SOAPEnvelope = siteDataFixSOAPEnvelope(SOAPEnvelope, opt.operation);
break;
case "SiteDataGetSiteUrl":
addToPayload(opt, ["Url"]);
// Because this operation has a name which duplicates the Lists WS, need to handle
SOAPEnvelope = siteDataFixSOAPEnvelope(SOAPEnvelope, opt.operation);
break;
case "SiteDataGetWeb":
// Because this operation has a name which duplicates the Lists WS, need to handle
SOAPEnvelope = siteDataFixSOAPEnvelope(SOAPEnvelope, opt.operation);
break;
// SITES OPERATIONS
case "CreateWeb":
addToPayload(opt, ["url", "title", "description", "templateName", "language", "languageSpecified",
"locale", "localeSpecified", "collationLocale", "collationLocaleSpecified", "uniquePermissions",
"uniquePermissionsSpecified", "anonymous", "anonymousSpecified", "presence", "presenceSpecified"
]);
break;
case "DeleteWeb":
addToPayload(opt, ["url"]);
break;
case "GetSite":
addToPayload(opt, ["SiteUrl"]);
break;
case "GetSiteTemplates":
addToPayload(opt, ["LCID", "TemplateList"]);
break;
// SOCIALDATASERVICE OPERATIONS
case "AddComment":
addToPayload(opt, ["url", "comment", "isHighPriority", "title"]);
break;
case "AddTag":
addToPayload(opt, ["url", "termID", "title", "isPrivate"]);
break;
case "AddTagByKeyword":
addToPayload(opt, ["url", "keyword", "title", "isPrivate"]);
break;
case "CountCommentsOfUser":
addToPayload(opt, ["userAccountName"]);
break;
case "CountCommentsOfUserOnUrl":
addToPayload(opt, ["userAccountName", "url"]);
break;
case "CountCommentsOnUrl":
addToPayload(opt, ["url"]);
break;
case "CountRatingsOnUrl":
addToPayload(opt, ["url"]);
break;
case "CountTagsOfUser":
addToPayload(opt, ["userAccountName"]);
break;
case "DeleteComment":
addToPayload(opt, ["url", "lastModifiedTime"]);
break;
case "DeleteRating":
addToPayload(opt, ["url"]);
break;
case "DeleteTag":
addToPayload(opt, ["url", "termID"]);
break;
case "DeleteTagByKeyword":
addToPayload(opt, ["url", "keyword"]);
break;
case "DeleteTags":
addToPayload(opt, ["url"]);
break;
case "GetAllTagTerms":
addToPayload(opt, ["maximumItemsToReturn"]);
break;
case "GetAllTagTermsForUrlFolder":
addToPayload(opt, ["urlFolder", "maximumItemsToReturn"]);
break;
case "GetAllTagUrls":
addToPayload(opt, ["termID"]);
break;
case "GetAllTagUrlsByKeyword":
addToPayload(opt, ["keyword"]);
break;
case "GetCommentsOfUser":
addToPayload(opt, ["userAccountName", "maximumItemsToReturn", "startIndex"]);
break;
case "GetCommentsOfUserOnUrl":
addToPayload(opt, ["userAccountName", "url"]);
break;
case "GetCommentsOnUrl":
addToPayload(opt, ["url", "maximumItemsToReturn", "startIndex"]);
if (typeof opt.excludeItemsTime !== "undefined" && opt.excludeItemsTime.length > 0) {
SOAPEnvelope.payload += wrapNode("excludeItemsTime", opt.excludeItemsTime);
}
break;
case "GetRatingAverageOnUrl":
addToPayload(opt, ["url"]);
break;
case "GetRatingOfUserOnUrl":
addToPayload(opt, ["userAccountName", "url"]);
break;
case "GetRatingOnUrl":
addToPayload(opt, ["url"]);
break;
case "GetRatingsOfUser":
addToPayload(opt, ["userAccountName"]);
break;
case "GetRatingsOnUrl":
addToPayload(opt, ["url"]);
break;
case "GetSocialDataForFullReplication":
addToPayload(opt, ["userAccountName"]);
break;
case "GetTags":
addToPayload(opt, ["url"]);
break;
case "GetTagsOfUser":
addToPayload(opt, ["userAccountName", "maximumItemsToReturn", "startIndex"]);
break;
case "GetTagTerms":
addToPayload(opt, ["maximumItemsToReturn"]);
break;
case "GetTagTermsOfUser":
addToPayload(opt, ["userAccountName", "maximumItemsToReturn"]);
break;
case "GetTagTermsOnUrl":
addToPayload(opt, ["url", "maximumItemsToReturn"]);
break;
case "GetTagUrls":
addToPayload(opt, ["termID"]);
break;
case "GetTagUrlsByKeyword":
addToPayload(opt, ["keyword"]);
break;
case "GetTagUrlsOfUser":
addToPayload(opt, ["termID", "userAccountName"]);
break;
case "GetTagUrlsOfUserByKeyword":
addToPayload(opt, ["keyword", "userAccountName"]);
break;
case "SetRating":
addToPayload(opt, ["url", "rating", "title", "analysisDataEntry"]);
break;
case "UpdateComment":
addToPayload(opt, ["url", "lastModifiedTime", "comment", "isHighPriority"]);
break;
// SPELLCHECK OPERATIONS
case "SpellCheck":
addToPayload(opt, ["chunksToSpell", "declaredLanguage", "useLad"]);
break;
// TAXONOMY OPERATIONS
case "AddTerms":
addToPayload(opt, ["sharedServiceId", "termSetId", "lcid", "newTerms"]);
break;
case "GetChildTermsInTerm":
addToPayload(opt, ["sspId", "lcid", "termId", "termSetId"]);
break;
case "GetChildTermsInTermSet":
addToPayload(opt, ["sspId", "lcid", "termSetId"]);
break;
case "GetKeywordTermsByGuids":
addToPayload(opt, ["termIds", "lcid"]);
break;
case "GetTermsByLabel":
addToPayload(opt, ["label", "lcid", "matchOption", "resultCollectionSize", "termIds", "addIfNotFound"]);
break;
case "GetTermSets":
addToPayload(opt, ["sharedServiceIds", "termSetIds", "lcid", "clientTimeStamps", "clientVersions"]);
break;
// USERS AND GROUPS OPERATIONS
case "AddGroup":
addToPayload(opt, ["groupName", "ownerIdentifier", "ownerType", "defaultUserLoginName", "description"]);
break;
case "AddGroupToRole":
addToPayload(opt, ["groupName", "roleName"]);
break;
case "AddRole":
addToPayload(opt, ["roleName", "description", "permissionMask"]);
break;
case "AddRoleDef":
addToPayload(opt, ["roleName", "description", "permissionMask"]);
break;
case "AddUserCollectionToGroup":
addToPayload(opt, ["groupName", "usersInfoXml"]);
break;
case "AddUserCollectionToRole":
addToPayload(opt, ["roleName", "usersInfoXml"]);
break;
case "AddUserToGroup":
addToPayload(opt, ["groupName", "userName", "userLoginName", "userEmail", "userNotes"]);
break;
case "AddUserToRole":
addToPayload(opt, ["roleName", "userName", "userLoginName", "userEmail", "userNotes"]);
break;
case "GetAllUserCollectionFromWeb":
break;
case "GetGroupCollection":
addToPayload(opt, ["groupNamesXml"]);
break;
case "GetGroupCollectionFromRole":
addToPayload(opt, ["roleName"]);
break;
case "GetGroupCollectionFromSite":
break;
case "GetGroupCollectionFromUser":
addToPayload(opt, ["userLoginName"]);
break;
case "GetGroupCollectionFromWeb":
break;
case "GetGroupInfo":
addToPayload(opt, ["groupName"]);
break;
case "GetRoleCollection":
addToPayload(opt, ["roleNamesXml"]);
break;
case "GetRoleCollectionFromGroup":
addToPayload(opt, ["groupName"]);
break;
case "GetRoleCollectionFromUser":
addToPayload(opt, ["userLoginName"]);
break;
case "GetRoleCollectionFromWeb":
break;
case "GetRoleInfo":
addToPayload(opt, ["roleName"]);
break;
case "GetRolesAndPermissionsForCurrentUser":
break;
case "GetRolesAndPermissionsForSite":
break;
case "GetUserCollection":
addToPayload(opt, ["userLoginNamesXml"]);
break;
case "GetUserCollectionFromGroup":
addToPayload(opt, ["groupName"]);
break;
case "GetUserCollectionFromRole":
addToPayload(opt, ["roleName"]);
break;
case "GetUserCollectionFromSite":
break;
case "GetUserCollectionFromWeb":
break;
case "GetUserInfo":
addToPayload(opt, ["userLoginName"]);
break;
case "GetUserLoginFromEmail":
addToPayload(opt, ["emailXml"]);
break;
case "RemoveGroup":
addToPayload(opt, ["groupName"]);
break;
case "RemoveGroupFromRole":
addToPayload(opt, ["roleName", "groupName"]);
break;
case "RemoveRole":
addToPayload(opt, ["roleName"]);
break;
case "RemoveUserCollectionFromGroup":
addToPayload(opt, ["groupName", "userLoginNamesXml"]);
break;
case "RemoveUserCollectionFromRole":
addToPayload(opt, ["roleName", "userLoginNamesXml"]);
break;
case "RemoveUserCollectionFromSite":
addToPayload(opt, ["userLoginNamesXml"]);
break;
case "RemoveUserFromGroup":
addToPayload(opt, ["groupName", "userLoginName"]);
break;
case "RemoveUserFromRole":
addToPayload(opt, ["roleName", "userLoginName"]);
break;
case "RemoveUserFromSite":
addToPayload(opt, ["userLoginName"]);
break;
case "RemoveUserFromWeb":
addToPayload(opt, ["userLoginName"]);
break;
case "UpdateGroupInfo":
addToPayload(opt, ["oldGroupName", "groupName", "ownerIdentifier", "ownerType", "description"]);
break;
case "UpdateRoleDefInfo":
addToPayload(opt, ["oldRoleName", "roleName", "description", "permissionMask"]);
break;
case "UpdateRoleInfo":
addToPayload(opt, ["oldRoleName", "roleName", "description", "permissionMask"]);
break;
case "UpdateUserInfo":
addToPayload(opt, ["userLoginName", "userName", "userEmail", "userNotes"]);
break;
// USERPROFILESERVICE OPERATIONS
case "AddColleague":
addToPayload(opt, ["accountName", "colleagueAccountName", "group", "privacy", "isInWorkGroup"]);
break;
case "AddLink":
addToPayload(opt, ["accountName", "name", "url", "group", "privacy"]);
break;
case "AddMembership":
addToPayload(opt, ["accountName", "membershipInfo", "group", "privacy"]);
break;
case "AddPinnedLink":
addToPayload(opt, ["accountName", "name", "url"]);
break;
case "CreateMemberGroup":
addToPayload(opt, ["membershipInfo"]);
break;
case "CreateUserProfileByAccountName":
addToPayload(opt, ["accountName"]);
break;
case "GetCommonColleagues":
addToPayload(opt, ["accountName"]);
break;
case "GetCommonManager":
addToPayload(opt, ["accountName"]);
break;
case "GetCommonMemberships":
addToPayload(opt, ["accountName"]);
break;
case "GetInCommon":
addToPayload(opt, ["accountName"]);
break;
case "GetPropertyChoiceList":
addToPayload(opt, ["propertyName"]);
break;
case "GetUserColleagues":
addToPayload(opt, ["accountName"]);
break;
case "GetUserLinks":
addToPayload(opt, ["accountName"]);
break;
case "GetUserMemberships":
addToPayload(opt, ["accountName"]);
break;
case "GetUserPinnedLinks":
addToPayload(opt, ["accountName"]);
break;
case "GetUserProfileByGuid":
addToPayload(opt, ["guid"]);
break;
case "GetUserProfileByIndex":
addToPayload(opt, ["index"]);
break;
case "GetUserProfileByName":
// Note that this operation is inconsistent with the others, using AccountName rather than accountName
if (typeof opt.accountName !== "undefined" && opt.accountName.length > 0) {
addToPayload(opt, [
["AccountName", "accountName"]
]);
} else {
addToPayload(opt, ["AccountName"]);
}
break;
case "GetUserProfileCount":
break;
case "GetUserProfileSchema":
break;
case "GetUserPropertyByAccountName":
addToPayload(opt, ["accountName", "propertyName"]);
break;
case "ModifyUserPropertyByAccountName":
addToPayload(opt, ["accountName", "newData"]);
break;
case "RemoveAllColleagues":
addToPayload(opt, ["accountName"]);
break;
case "Remove