spservices
Version:
Work with SharePoint's Web Services using jQuery
980 lines (918 loc) • 67.2 kB
JavaScript
/**
* Original SPServices core modules...
*/
define([
"jquery",
"../utils/constants",
"../core/SPServices.utils"
], function (
$,
constants,
utils
) {
/* jshint undef: true */
"use strict";
var SOAPAction = "";
var 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>",
footer: "</soap:Body></soap:Envelope>",
payload: ""
};
// Caching
var promisesCache = {};
// Web Service names
var webServices = {
ALERTS: "Alerts",
AUTHENTICATION: "Authentication",
COPY: "Copy",
FORMS: "Forms",
LISTS: "Lists",
MEETINGS: "Meetings",
OFFICIALFILE: "OfficialFile",
PEOPLE: "People",
PERMISSIONS: "Permissions",
PUBLISHEDLINKSSERVICE: "PublishedLinksService",
SEARCH: "Search",
SHAREPOINTDIAGNOSTICS: "SharePointDiagnostics",
SITEDATA: "SiteData",
SITES: "Sites",
SOCIALDATASERVICE: "SocialDataService",
SPELLCHECK: "SpellCheck",
TAXONOMYSERVICE: "TaxonomyClientService",
USERGROUP: "usergroup",
USERPROFILESERVICE: "UserProfileService",
VERSIONS: "Versions",
VIEWS: "Views",
WEBPARTPAGES: "WebPartPages",
WEBS: "Webs",
WORKFLOW: "Workflow"
};
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 operation needs to have the SOAPAction passed in the setRequestHeaderfunction.
// true if the operation does a write, else false
var WSops = {};
WSops.GetAlerts = [webServices.ALERTS, false];
WSops.DeleteAlerts = [webServices.ALERTS, true];
WSops.Mode = [webServices.AUTHENTICATION, false];
WSops.Login = [webServices.AUTHENTICATION, false];
WSops.CopyIntoItems = [webServices.COPY, true];
WSops.CopyIntoItemsLocal = [webServices.COPY, true];
WSops.GetItem = [webServices.COPY, false];
WSops.GetForm = [webServices.FORMS, false];
WSops.GetFormCollection = [webServices.FORMS, false];
WSops.AddAttachment = [webServices.LISTS, true];
WSops.AddDiscussionBoardItem = [webServices.LISTS, true];
WSops.AddList = [webServices.LISTS, true];
WSops.AddListFromFeature = [webServices.LISTS, true];
WSops.ApplyContentTypeToList = [webServices.LISTS, true];
WSops.CheckInFile = [webServices.LISTS, true];
WSops.CheckOutFile = [webServices.LISTS, true];
WSops.CreateContentType = [webServices.LISTS, true];
WSops.DeleteAttachment = [webServices.LISTS, true];
WSops.DeleteContentType = [webServices.LISTS, true];
WSops.DeleteContentTypeXmlDocument = [webServices.LISTS, true];
WSops.DeleteList = [webServices.LISTS, true];
WSops.GetAttachmentCollection = [webServices.LISTS, false];
WSops.GetList = [webServices.LISTS, false];
WSops.GetListAndView = [webServices.LISTS, false];
WSops.GetListCollection = [webServices.LISTS, false];
WSops.GetListContentType = [webServices.LISTS, false];
WSops.GetListContentTypes = [webServices.LISTS, false];
WSops.GetListItemChanges = [webServices.LISTS, false];
WSops.GetListItemChangesSinceToken = [webServices.LISTS, false];
WSops.GetListItems = [webServices.LISTS, false];
WSops.GetVersionCollection = [webServices.LISTS, false];
WSops.UndoCheckOut = [webServices.LISTS, true];
WSops.UpdateContentType = [webServices.LISTS, true];
WSops.UpdateContentTypesXmlDocument = [webServices.LISTS, true];
WSops.UpdateContentTypeXmlDocument = [webServices.LISTS, true];
WSops.UpdateList = [webServices.LISTS, true];
WSops.UpdateListItems = [webServices.LISTS, true];
WSops.AddMeeting = [webServices.MEETINGS, true];
WSops.CreateWorkspace = [webServices.MEETINGS, true];
WSops.RemoveMeeting = [webServices.MEETINGS, true];
WSops.SetWorkSpaceTitle = [webServices.MEETINGS, true];
WSops.GetRecordRouting = [webServices.OFFICIALFILE, false];
WSops.GetRecordRoutingCollection = [webServices.OFFICIALFILE, false];
WSops.GetServerInfo = [webServices.OFFICIALFILE, false];
WSops.SubmitFile = [webServices.OFFICIALFILE, true];
WSops.ResolvePrincipals = [webServices.PEOPLE, true];
WSops.SearchPrincipals = [webServices.PEOPLE, false];
WSops.AddPermission = [webServices.PERMISSIONS, true];
WSops.AddPermissionCollection = [webServices.PERMISSIONS, true];
WSops.GetPermissionCollection = [webServices.PERMISSIONS, true];
WSops.RemovePermission = [webServices.PERMISSIONS, true];
WSops.RemovePermissionCollection = [webServices.PERMISSIONS, true];
WSops.UpdatePermission = [webServices.PERMISSIONS, true];
WSops.GetLinks = [webServices.PUBLISHEDLINKSSERVICE, true];
WSops.GetPortalSearchInfo = [webServices.SEARCH, false];
WSops.GetQuerySuggestions = [webServices.SEARCH, false];
WSops.GetSearchMetadata = [webServices.SEARCH, false];
WSops.Query = [webServices.SEARCH, false];
WSops.QueryEx = [webServices.SEARCH, false];
WSops.Registration = [webServices.SEARCH, false];
WSops.Status = [webServices.SEARCH, false];
WSops.SendClientScriptErrorReport = [webServices.SHAREPOINTDIAGNOSTICS, true];
WSops.GetAttachments = [webServices.SITEDATA, false];
WSops.EnumerateFolder = [webServices.SITEDATA, false];
WSops.SiteDataGetList = [webServices.SITEDATA, false];
WSops.SiteDataGetListCollection = [webServices.SITEDATA, false];
WSops.SiteDataGetSite = [webServices.SITEDATA, false];
WSops.SiteDataGetSiteUrl = [webServices.SITEDATA, false];
WSops.SiteDataGetWeb = [webServices.SITEDATA, false];
WSops.CreateWeb = [webServices.SITES, true];
WSops.DeleteWeb = [webServices.SITES, true];
WSops.GetSite = [webServices.SITES, false];
WSops.GetSiteTemplates = [webServices.SITES, false];
WSops.AddComment = [webServices.SOCIALDATASERVICE, true];
WSops.AddTag = [webServices.SOCIALDATASERVICE, true];
WSops.AddTagByKeyword = [webServices.SOCIALDATASERVICE, true];
WSops.CountCommentsOfUser = [webServices.SOCIALDATASERVICE, false];
WSops.CountCommentsOfUserOnUrl = [webServices.SOCIALDATASERVICE, false];
WSops.CountCommentsOnUrl = [webServices.SOCIALDATASERVICE, false];
WSops.CountRatingsOnUrl = [webServices.SOCIALDATASERVICE, false];
WSops.CountTagsOfUser = [webServices.SOCIALDATASERVICE, false];
WSops.DeleteComment = [webServices.SOCIALDATASERVICE, true];
WSops.DeleteRating = [webServices.SOCIALDATASERVICE, true];
WSops.DeleteTag = [webServices.SOCIALDATASERVICE, true];
WSops.DeleteTagByKeyword = [webServices.SOCIALDATASERVICE, true];
WSops.DeleteTags = [webServices.SOCIALDATASERVICE, true];
WSops.GetAllTagTerms = [webServices.SOCIALDATASERVICE, false];
WSops.GetAllTagTermsForUrlFolder = [webServices.SOCIALDATASERVICE, false];
WSops.GetAllTagUrls = [webServices.SOCIALDATASERVICE, false];
WSops.GetAllTagUrlsByKeyword = [webServices.SOCIALDATASERVICE, false];
WSops.GetCommentsOfUser = [webServices.SOCIALDATASERVICE, false];
WSops.GetCommentsOfUserOnUrl = [webServices.SOCIALDATASERVICE, false];
WSops.GetCommentsOnUrl = [webServices.SOCIALDATASERVICE, false];
WSops.GetRatingAverageOnUrl = [webServices.SOCIALDATASERVICE, false];
WSops.GetRatingOfUserOnUrl = [webServices.SOCIALDATASERVICE, false];
WSops.GetRatingOnUrl = [webServices.SOCIALDATASERVICE, false];
WSops.GetRatingsOfUser = [webServices.SOCIALDATASERVICE, false];
WSops.GetRatingsOnUrl = [webServices.SOCIALDATASERVICE, false];
WSops.GetSocialDataForFullReplication = [webServices.SOCIALDATASERVICE, false];
WSops.GetTags = [webServices.SOCIALDATASERVICE, true];
WSops.GetTagsOfUser = [webServices.SOCIALDATASERVICE, true];
WSops.GetTagTerms = [webServices.SOCIALDATASERVICE, true];
WSops.GetTagTermsOfUser = [webServices.SOCIALDATASERVICE, true];
WSops.GetTagTermsOnUrl = [webServices.SOCIALDATASERVICE, true];
WSops.GetTagUrlsOfUser = [webServices.SOCIALDATASERVICE, true];
WSops.GetTagUrlsOfUserByKeyword = [webServices.SOCIALDATASERVICE, true];
WSops.GetTagUrls = [webServices.SOCIALDATASERVICE, true];
WSops.GetTagUrlsByKeyword = [webServices.SOCIALDATASERVICE, true];
WSops.SetRating = [webServices.SOCIALDATASERVICE, true];
WSops.UpdateComment = [webServices.SOCIALDATASERVICE, true];
WSops.SpellCheck = [webServices.SPELLCHECK, false];
// Taxonomy Service Calls
// Updated 2011.01.27 by Thomas McMillan
WSops.AddTerms = [webServices.TAXONOMYSERVICE, true];
WSops.GetChildTermsInTerm = [webServices.TAXONOMYSERVICE, false];
WSops.GetChildTermsInTermSet = [webServices.TAXONOMYSERVICE, false];
WSops.GetKeywordTermsByGuids = [webServices.TAXONOMYSERVICE, false];
WSops.GetTermsByLabel = [webServices.TAXONOMYSERVICE, false];
WSops.GetTermSets = [webServices.TAXONOMYSERVICE, false];
WSops.AddGroup = [webServices.USERGROUP, true];
WSops.AddGroupToRole = [webServices.USERGROUP, true];
WSops.AddRole = [webServices.USERGROUP, true];
WSops.AddRoleDef = [webServices.USERGROUP, true];
WSops.AddUserCollectionToGroup = [webServices.USERGROUP, true];
WSops.AddUserCollectionToRole = [webServices.USERGROUP, true];
WSops.AddUserToGroup = [webServices.USERGROUP, true];
WSops.AddUserToRole = [webServices.USERGROUP, true];
WSops.GetAllUserCollectionFromWeb = [webServices.USERGROUP, false];
WSops.GetGroupCollection = [webServices.USERGROUP, false];
WSops.GetGroupCollectionFromRole = [webServices.USERGROUP, false];
WSops.GetGroupCollectionFromSite = [webServices.USERGROUP, false];
WSops.GetGroupCollectionFromUser = [webServices.USERGROUP, false];
WSops.GetGroupCollectionFromWeb = [webServices.USERGROUP, false];
WSops.GetGroupInfo = [webServices.USERGROUP, false];
WSops.GetRoleCollection = [webServices.USERGROUP, false];
WSops.GetRoleCollectionFromGroup = [webServices.USERGROUP, false];
WSops.GetRoleCollectionFromUser = [webServices.USERGROUP, false];
WSops.GetRoleCollectionFromWeb = [webServices.USERGROUP, false];
WSops.GetRoleInfo = [webServices.USERGROUP, false];
WSops.GetRolesAndPermissionsForCurrentUser = [webServices.USERGROUP, false];
WSops.GetRolesAndPermissionsForSite = [webServices.USERGROUP, false];
WSops.GetUserCollection = [webServices.USERGROUP, false];
WSops.GetUserCollectionFromGroup = [webServices.USERGROUP, false];
WSops.GetUserCollectionFromRole = [webServices.USERGROUP, false];
WSops.GetUserCollectionFromSite = [webServices.USERGROUP, false];
WSops.GetUserCollectionFromWeb = [webServices.USERGROUP, false];
WSops.GetUserInfo = [webServices.USERGROUP, false];
WSops.GetUserLoginFromEmail = [webServices.USERGROUP, false];
WSops.RemoveGroup = [webServices.USERGROUP, true];
WSops.RemoveGroupFromRole = [webServices.USERGROUP, true];
WSops.RemoveRole = [webServices.USERGROUP, true];
WSops.RemoveUserCollectionFromGroup = [webServices.USERGROUP, true];
WSops.RemoveUserCollectionFromRole = [webServices.USERGROUP, true];
WSops.RemoveUserCollectionFromSite = [webServices.USERGROUP, true];
WSops.RemoveUserFromGroup = [webServices.USERGROUP, true];
WSops.RemoveUserFromRole = [webServices.USERGROUP, true];
WSops.RemoveUserFromSite = [webServices.USERGROUP, true];
WSops.RemoveUserFromWeb = [webServices.USERGROUP, true];
WSops.UpdateGroupInfo = [webServices.USERGROUP, true];
WSops.UpdateRoleDefInfo = [webServices.USERGROUP, true];
WSops.UpdateRoleInfo = [webServices.USERGROUP, true];
WSops.UpdateUserInfo = [webServices.USERGROUP, true];
WSops.AddColleague = [webServices.USERPROFILESERVICE, true];
WSops.AddLink = [webServices.USERPROFILESERVICE, true];
WSops.AddMembership = [webServices.USERPROFILESERVICE, true];
WSops.AddPinnedLink = [webServices.USERPROFILESERVICE, true];
WSops.CreateMemberGroup = [webServices.USERPROFILESERVICE, true];
WSops.CreateUserProfileByAccountName = [webServices.USERPROFILESERVICE, true];
WSops.GetCommonColleagues = [webServices.USERPROFILESERVICE, false];
WSops.GetCommonManager = [webServices.USERPROFILESERVICE, false];
WSops.GetCommonMemberships = [webServices.USERPROFILESERVICE, false];
WSops.GetInCommon = [webServices.USERPROFILESERVICE, false];
WSops.GetPropertyChoiceList = [webServices.USERPROFILESERVICE, false];
WSops.GetUserColleagues = [webServices.USERPROFILESERVICE, false];
WSops.GetUserLinks = [webServices.USERPROFILESERVICE, false];
WSops.GetUserMemberships = [webServices.USERPROFILESERVICE, false];
WSops.GetUserPinnedLinks = [webServices.USERPROFILESERVICE, false];
WSops.GetUserProfileByGuid = [webServices.USERPROFILESERVICE, false];
WSops.GetUserProfileByIndex = [webServices.USERPROFILESERVICE, false];
WSops.GetUserProfileByName = [webServices.USERPROFILESERVICE, false];
WSops.GetUserProfileCount = [webServices.USERPROFILESERVICE, false];
WSops.GetUserProfileSchema = [webServices.USERPROFILESERVICE, false];
WSops.GetUserPropertyByAccountName = [webServices.USERPROFILESERVICE, false];
WSops.ModifyUserPropertyByAccountName = [webServices.USERPROFILESERVICE, true];
WSops.RemoveAllColleagues = [webServices.USERPROFILESERVICE, true];
WSops.RemoveAllLinks = [webServices.USERPROFILESERVICE, true];
WSops.RemoveAllMemberships = [webServices.USERPROFILESERVICE, true];
WSops.RemoveAllPinnedLinks = [webServices.USERPROFILESERVICE, true];
WSops.RemoveColleague = [webServices.USERPROFILESERVICE, true];
WSops.RemoveLink = [webServices.USERPROFILESERVICE, true];
WSops.RemoveMembership = [webServices.USERPROFILESERVICE, true];
WSops.RemovePinnedLink = [webServices.USERPROFILESERVICE, true];
WSops.UpdateColleaguePrivacy = [webServices.USERPROFILESERVICE, true];
WSops.UpdateLink = [webServices.USERPROFILESERVICE, true];
WSops.UpdateMembershipPrivacy = [webServices.USERPROFILESERVICE, true];
WSops.UpdatePinnedLink = [webServices.USERPROFILESERVICE, true];
WSops.DeleteAllVersions = [webServices.VERSIONS, true];
WSops.DeleteVersion = [webServices.VERSIONS, true];
WSops.GetVersions = [webServices.VERSIONS, false];
WSops.RestoreVersion = [webServices.VERSIONS, true];
WSops.AddView = [webServices.VIEWS, true];
WSops.DeleteView = [webServices.VIEWS, true];
WSops.GetView = [webServices.VIEWS, false];
WSops.GetViewHtml = [webServices.VIEWS, false];
WSops.GetViewCollection = [webServices.VIEWS, false];
WSops.UpdateView = [webServices.VIEWS, true];
WSops.UpdateViewHtml = [webServices.VIEWS, true];
WSops.AddWebPart = [webServices.WEBPARTPAGES, true];
WSops.AddWebPartToZone = [webServices.WEBPARTPAGES, true];
WSops.DeleteWebPart = [webServices.WEBPARTPAGES, true];
WSops.GetWebPart2 = [webServices.WEBPARTPAGES, false];
WSops.GetWebPartPage = [webServices.WEBPARTPAGES, false];
WSops.GetWebPartProperties = [webServices.WEBPARTPAGES, false];
WSops.GetWebPartProperties2 = [webServices.WEBPARTPAGES, false];
WSops.SaveWebPart2 = [webServices.WEBPARTPAGES, true];
WSops.WebsCreateContentType = [webServices.WEBS, true];
WSops.GetColumns = [webServices.WEBS, false];
WSops.GetContentType = [webServices.WEBS, false];
WSops.GetContentTypes = [webServices.WEBS, false];
WSops.GetCustomizedPageStatus = [webServices.WEBS, false];
WSops.GetListTemplates = [webServices.WEBS, false];
WSops.GetObjectIdFromUrl = [webServices.WEBS, false]; // 2010
WSops.GetWeb = [webServices.WEBS, false];
WSops.GetWebCollection = [webServices.WEBS, false];
WSops.GetAllSubWebCollection = [webServices.WEBS, false];
WSops.UpdateColumns = [webServices.WEBS, true];
WSops.WebsUpdateContentType = [webServices.WEBS, true];
WSops.WebUrlFromPageUrl = [webServices.WEBS, false];
WSops.AlterToDo = [webServices.WORKFLOW, true];
WSops.ClaimReleaseTask = [webServices.WORKFLOW, true];
WSops.GetTemplatesForItem = [webServices.WORKFLOW, false];
WSops.GetToDosForItem = [webServices.WORKFLOW, false];
WSops.GetWorkflowDataForItem = [webServices.WORKFLOW, false];
WSops.GetWorkflowTaskData = [webServices.WORKFLOW, false];
WSops.StartWorkflow = [webServices.WORKFLOW, true];
// 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]] = utils.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 webServices.ALERTS:
SOAPEnvelope.opheader += "xmlns='" + constants.SCHEMASharePoint + "/soap/2002/1/alerts/' >";
SOAPAction = constants.SCHEMASharePoint + "/soap/2002/1/alerts/";
break;
case webServices.MEETINGS:
SOAPEnvelope.opheader += "xmlns='" + constants.SCHEMASharePoint + "/soap/meetings/' >";
SOAPAction = constants.SCHEMASharePoint + "/soap/meetings/";
break;
case webServices.OFFICIALFILE:
SOAPEnvelope.opheader += "xmlns='" + constants.SCHEMASharePoint + "/soap/recordsrepository/' >";
SOAPAction = constants.SCHEMASharePoint + "/soap/recordsrepository/";
break;
case webServices.PERMISSIONS:
SOAPEnvelope.opheader += "xmlns='" + constants.SCHEMASharePoint + "/soap/directory/' >";
SOAPAction = constants.SCHEMASharePoint + "/soap/directory/";
break;
case webServices.PUBLISHEDLINKSSERVICE:
SOAPEnvelope.opheader += "xmlns='http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService/' >";
SOAPAction = "http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService/";
break;
case webServices.SEARCH:
SOAPEnvelope.opheader += "xmlns='urn:Microsoft.Search' >";
SOAPAction = "urn:Microsoft.Search/";
break;
case webServices.SHAREPOINTDIAGNOSTICS:
SOAPEnvelope.opheader += "xmlns='" + constants.SCHEMASharePoint + "/diagnostics/' >";
SOAPAction = "http://schemas.microsoft.com/sharepoint/diagnostics/";
break;
case webServices.SOCIALDATASERVICE:
SOAPEnvelope.opheader += "xmlns='http://microsoft.com/webservices/SharePointPortalServer/SocialDataService' >";
SOAPAction = "http://microsoft.com/webservices/SharePointPortalServer/SocialDataService/";
break;
case webServices.SPELLCHECK:
SOAPEnvelope.opheader += "xmlns='http://schemas.microsoft.com/sharepoint/publishing/spelling/' >";
SOAPAction = "http://schemas.microsoft.com/sharepoint/publishing/spelling/SpellCheck";
break;
case webServices.TAXONOMYSERVICE:
SOAPEnvelope.opheader += "xmlns='" + constants.SCHEMASharePoint + "/taxonomy/soap/' >";
SOAPAction = constants.SCHEMASharePoint + "/taxonomy/soap/";
break;
case webServices.USERGROUP:
SOAPEnvelope.opheader += "xmlns='" + constants.SCHEMASharePoint + "/soap/directory/' >";
SOAPAction = constants.SCHEMASharePoint + "/soap/directory/";
break;
case webServices.USERPROFILESERVICE:
SOAPEnvelope.opheader += "xmlns='http://microsoft.com/webservices/SharePointPortalServer/UserProfileService' >";
SOAPAction = "http://microsoft.com/webservices/SharePointPortalServer/UserProfileService/";
break;
case webServices.WEBPARTPAGES:
SOAPEnvelope.opheader += "xmlns='http://microsoft.com/sharepoint/webpartpages' >";
SOAPAction = "http://microsoft.com/sharepoint/webpartpages/";
break;
case webServices.WORKFLOW:
SOAPEnvelope.opheader += "xmlns='" + constants.SCHEMASharePoint + "/soap/workflow/' >";
SOAPAction = constants.SCHEMASharePoint + "/soap/workflow/";
break;
default:
SOAPEnvelope.opheader += "xmlns='" + constants.SCHEMASharePoint + "/soap/'>";
SOAPAction = constants.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 webURL = opt.webURL !== undefined ? opt.webURL : opt.webUrl;
if (webURL.charAt(webURL.length - 1) === constants.SLASH) {
ajaxURL = webURL + ajaxURL;
} else if (webURL.length > 0) {
ajaxURL = webURL + constants.SLASH + ajaxURL;
} else {
var thisSite = $().SPServices.SPGetCurrentSite();
ajaxURL = thisSite + ((thisSite.charAt(thisSite.length - 1) === constants.SLASH) ? ajaxURL : (constants.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 += constants.wrapNode("string", opt.IDs[i]);
}
SOAPEnvelope.payload += "</IDs>";
break;
// AUTHENTICATION OPERATIONS
case "Mode":
break;
case "Login":
utils.addToPayload(opt, SOAPEnvelope, ["username", "password"]);
break;
// COPY OPERATIONS
case "CopyIntoItems":
utils.addToPayload(opt, SOAPEnvelope, ["SourceUrl"]);
SOAPEnvelope.payload += "<DestinationUrls>";
for (i = 0; i < opt.DestinationUrls.length; i++) {
SOAPEnvelope.payload += utils.wrapNode("string", opt.DestinationUrls[i]);
}
SOAPEnvelope.payload += "</DestinationUrls>";
utils.addToPayload(opt, SOAPEnvelope, ["Fields", "Stream", "Results"]);
break;
case "CopyIntoItemsLocal":
utils.addToPayload(opt, SOAPEnvelope, ["SourceUrl"]);
SOAPEnvelope.payload += "<DestinationUrls>";
for (i = 0; i < opt.DestinationUrls.length; i++) {
SOAPEnvelope.payload += utils.wrapNode("string", opt.DestinationUrls[i]);
}
SOAPEnvelope.payload += "</DestinationUrls>";
break;
case "GetItem":
utils.addToPayload(opt, SOAPEnvelope, ["Url", "Fields", "Stream"]);
break;
// FORM OPERATIONS
case "GetForm":
utils.addToPayload(opt, SOAPEnvelope, ["listName", "formUrl"]);
break;
case "GetFormCollection":
utils.addToPayload(opt, SOAPEnvelope, ["listName"]);
break;
// LIST OPERATIONS
case "AddAttachment":
utils.addToPayload(opt, SOAPEnvelope, ["listName", "listItemID", "fileName", "attachment"]);
break;
case "AddDiscussionBoardItem":
utils.addToPayload(opt, SOAPEnvelope, ["listName", "message"]);
break;
case "AddList":
utils.addToPayload(opt, SOAPEnvelope, ["listName", "description", "templateID"]);
break;
case "AddListFromFeature":
utils.addToPayload(opt, SOAPEnvelope, ["listName", "description", "featureID", "templateID"]);
break;
case "ApplyContentTypeToList":
utils.addToPayload(opt, SOAPEnvelope, ["webUrl", "contentTypeId", "listName"]);
break;
case "CheckInFile":
utils.addToPayload(opt, SOAPEnvelope, ["pageUrl", "comment", "CheckinType"]);
break;
case "CheckOutFile":
utils.addToPayload(opt, SOAPEnvelope, ["pageUrl", "checkoutToLocal", "lastmodified"]);
break;
case "CreateContentType":
utils.addToPayload(opt, SOAPEnvelope, ["listName", "displayName", "parentType", "fields", "contentTypeProperties", "addToView"]);
break;
case "DeleteAttachment":
utils.addToPayload(opt, SOAPEnvelope, ["listName", "listItemID", "url"]);
break;
case "DeleteContentType":
utils.addToPayload(opt, SOAPEnvelope, ["listName", "contentTypeId"]);
break;
case "DeleteContentTypeXmlDocument":
utils.addToPayload(opt, SOAPEnvelope, ["listName", "contentTypeId", "documentUri"]);
break;
case "DeleteList":
utils.addToPayload(opt, SOAPEnvelope, ["listName"]);
break;
case "GetAttachmentCollection":
utils.addToPayload(opt, SOAPEnvelope, ["listName", ["listItemID", "ID"]]);
break;
case "GetList":
utils.addToPayload(opt, SOAPEnvelope, ["listName"]);
break;
case "GetListAndView":
utils.addToPayload(opt, SOAPEnvelope, ["listName", "viewName"]);
break;
case "GetListCollection":
break;
case "GetListContentType":
utils.addToPayload(opt, SOAPEnvelope, ["listName", "contentTypeId"]);
break;
case "GetListContentTypes":
utils.addToPayload(opt, SOAPEnvelope, ["listName"]);
break;
case "GetListItems":
utils.addToPayload(opt, SOAPEnvelope, ["listName", "viewName", ["query", "CAMLQuery"],
["viewFields", "CAMLViewFields"],
["rowLimit", "CAMLRowLimit"],
["queryOptions", "CAMLQueryOptions"]
]);
break;
case "GetListItemChanges":
utils.addToPayload(opt, SOAPEnvelope, ["listName", "viewFields", "since", "contains"]);
break;
case "GetListItemChangesSinceToken":
utils.addToPayload(opt, SOAPEnvelope, ["listName", "viewName", ["query", "CAMLQuery"],
["viewFields", "CAMLViewFields"],
["rowLimit", "CAMLRowLimit"],
["queryOptions", "CAMLQueryOptions"], {
name: "changeToken",
sendNull: false
}, {
name: "contains",
sendNull: false
}
]);
break;
case "GetVersionCollection":
utils.addToPayload(opt, SOAPEnvelope, ["strlistID", "strlistItemID", "strFieldName"]);
break;
case "UndoCheckOut":
utils.addToPayload(opt, SOAPEnvelope, ["pageUrl"]);
break;
case "UpdateContentType":
utils.addToPayload(opt, SOAPEnvelope, ["listName", "contentTypeId", "contentTypeProperties", "newFields", "updateFields", "deleteFields", "addToView"]);
break;
case "UpdateContentTypesXmlDocument":
utils.addToPayload(opt, SOAPEnvelope, ["listName", "newDocument"]);
break;
case "UpdateContentTypeXmlDocument":
utils.addToPayload(opt, SOAPEnvelope, ["listName", "contentTypeId", "newDocument"]);
break;
case "UpdateList":
utils.addToPayload(opt, SOAPEnvelope, ["listName", "listProperties", "newFields", "updateFields", "deleteFields", "listVersion"]);
break;
case "UpdateListItems":
utils.addToPayload(opt, SOAPEnvelope, ["listName"]);
if (typeof opt.updates !== "undefined" && opt.updates.length > 0) {
utils.addToPayload(opt, SOAPEnvelope, ["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] + "'>" + utils.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":
utils.addToPayload(opt, SOAPEnvelope, ["organizerEmail", "uid", "sequence", "utcDateStamp", "title", "location", "utcDateStart", "utcDateEnd", "nonGregorian"]);
break;
case "CreateWorkspace":
utils.addToPayload(opt, SOAPEnvelope, ["title", "templateName", "lcid", "timeZoneInformation"]);
break;
case "RemoveMeeting":
utils.addToPayload(opt, SOAPEnvelope, ["recurrenceId", "uid", "sequence", "utcDateStamp", "cancelMeeting"]);
break;
case "SetWorkspaceTitle":
utils.addToPayload(opt, SOAPEnvelope, ["title"]);
break;
// OFFICIALFILE OPERATIONS
case "GetRecordRouting":
utils.addToPayload(opt, SOAPEnvelope, ["recordRouting"]);
break;
case "GetRecordRoutingCollection":
break;
case "GetServerInfo":
break;
case "SubmitFile":
utils.addToPayload(opt, SOAPEnvelope, ["fileToSubmit"], ["properties"], ["recordRouting"], ["sourceUrl"], ["userName"]);
break;
// PEOPLE OPERATIONS
case "ResolvePrincipals":
utils.addToPayload(opt, SOAPEnvelope, ["principalKeys", "principalType", "addToUserInfoList"]);
break;
case "SearchPrincipals":
utils.addToPayload(opt, SOAPEnvelope, ["searchText", "maxResults", "principalType"]);
break;
// PERMISSION OPERATIONS
case "AddPermission":
utils.addToPayload(opt, SOAPEnvelope, ["objectName", "objectType", "permissionIdentifier", "permissionType", "permissionMask"]);
break;
case "AddPermissionCollection":
utils.addToPayload(opt, SOAPEnvelope, ["objectName", "objectType", "permissionsInfoXml"]);
break;
case "GetPermissionCollection":
utils.addToPayload(opt, SOAPEnvelope, ["objectName", "objectType"]);
break;
case "RemovePermission":
utils.addToPayload(opt, SOAPEnvelope, ["objectName", "objectType", "permissionIdentifier", "permissionType"]);
break;
case "RemovePermissionCollection":
utils.addToPayload(opt, SOAPEnvelope, ["objectName", "objectType", "memberIdsXml"]);
break;
case "UpdatePermission":
utils.addToPayload(opt, SOAPEnvelope, ["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 += utils.wrapNode("queryXml", constants.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 += utils.wrapNode("queryXml", constants.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 += utils.wrapNode("queryXml", constants.encodeXml(opt.queryXml));
break;
case "Registration":
SOAPEnvelope.payload += utils.wrapNode("registrationXml", constants.encodeXml(opt.registrationXml));
break;
case "Status":
break;
// SHAREPOINTDIAGNOSTICS OPERATIONS
case "SendClientScriptErrorReport":
utils.addToPayload(opt, SOAPEnvelope, ["message", "file", "line", "client", "stack", "team", "originalFile"]);
break;
// SITEDATA OPERATIONS
case "EnumerateFolder":
utils.addToPayload(opt, SOAPEnvelope, ["strFolderUrl"]);
break;
case "GetAttachments":
utils.addToPayload(opt, SOAPEnvelope, ["strListName", "strItemId"]);
break;
case "SiteDataGetList":
utils.addToPayload(opt, SOAPEnvelope, ["strListName"]);
// Because this operation has a name which duplicates the Lists WS, need to handle
SOAPEnvelope = constants.siteDataFixSOAPEnvelope(SOAPEnvelope, opt.operation);
break;
case "SiteDataGetListCollection":
// Because this operation has a name which duplicates the Lists WS, need to handle
SOAPEnvelope = constants.siteDataFixSOAPEnvelope(SOAPEnvelope, opt.operation);
break;
case "SiteDataGetSite":
// Because this operation has a name which duplicates the Lists WS, need to handle
SOAPEnvelope = constants.siteDataFixSOAPEnvelope(SOAPEnvelope, opt.operation);
break;
case "SiteDataGetSiteUrl":
utils.addToPayload(opt, SOAPEnvelope, ["Url"]);
// Because this operation has a name which duplicates the Lists WS, need to handle
SOAPEnvelope = constants.siteDataFixSOAPEnvelope(SOAPEnvelope, opt.operation);
break;
case "SiteDataGetWeb":
// Because this operation has a name which duplicates the Lists WS, need to handle
SOAPEnvelope = constants.siteDataFixSOAPEnvelope(SOAPEnvelope, opt.operation);
break;
// SITES OPERATIONS
case "CreateWeb":
utils.addToPayload(opt, SOAPEnvelope, ["url", "title", "description", "templateName", "language", "languageSpecified",
"locale", "localeSpecified", "collationLocale", "collationLocaleSpecified", "uniquePermissions",
"uniquePermissionsSpecified", "anonymous", "anonymousSpecified", "presence", "presenceSpecified"
]);
break;
case "DeleteWeb":
utils.addToPayload(opt, SOAPEnvelope, ["url"]);
break;
case "GetSite":
utils.addToPayload(opt, SOAPEnvelope, ["SiteUrl"]);
break;
case "GetSiteTemplates":
utils.addToPayload(opt, SOAPEnvelope, ["LCID", "TemplateList"]);
break;
// SOCIALDATASERVICE OPERATIONS
case "AddComment":
utils.addToPayload(opt, SOAPEnvelope, ["url", "comment", "isHighPriority", "title"]);
break;
case "AddTag":
utils.addToPayload(opt, SOAPEnvelope, ["url", "termID", "title", "isPrivate"]);
break;
case "AddTagByKeyword":
utils.addToPayload(opt, SOAPEnvelope, ["url", "keyword", "title", "isPrivate"]);
break;
case "CountCommentsOfUser":
utils.addToPayload(opt, SOAPEnvelope, ["userAccountName"]);
break;
case "CountCommentsOfUserOnUrl":
utils.addToPayload(opt, SOAPEnvelope, ["userAccountName", "url"]);
break;
case "CountCommentsOnUrl":
utils.addToPayload(opt, SOAPEnvelope, ["url"]);
break;
case "CountRatingsOnUrl":
utils.addToPayload(opt, SOAPEnvelope, ["url"]);
break;
case "CountTagsOfUser":
utils.addToPayload(opt, SOAPEnvelope, ["userAccountName"]);
break;
case "DeleteComment":
utils.addToPayload(opt, SOAPEnvelope, ["url", "lastModifiedTime"]);
break;
case "DeleteRating":
utils.addToPayload(opt, SOAPEnvelope, ["url"]);
break;
case "DeleteTag":
utils.addToPayload(opt, SOAPEnvelope, ["url", "termID"]);
break;
case "DeleteTagByKeyword":
utils.addToPayload(opt, SOAPEnvelope, ["url", "keyword"]);
break;
case "DeleteTags":
utils.addToPayload(opt, SOAPEnvelope, ["url"]);
break;
case "GetAllTagTerms":
utils.addToPayload(opt, SOAPEnvelope, ["maximumItemsToReturn"]);
break;
case "GetAllTagTermsForUrlFolder":
utils.addToPayload(opt, SOAPEnvelope, ["urlFolder", "maximumItemsToReturn"]);
break;
case "GetAllTagUrls":
utils.addToPayload(opt, SOAPEnvelope, ["termID"]);
break;
case "GetAllTagUrlsByKeyword":
utils.addToPayload(opt, SOAPEnvelope, ["keyword"]);
break;
case "GetCommentsOfUser":
utils.addToPayload(opt, SOAPEnvelope, ["userAccountName", "maximumItemsToReturn", "startIndex"]);
break;
case "GetCommentsOfUserOnUrl":
utils.addToPayload(opt, SOAPEnvelope, ["userAccountName", "url"]);
break;
case "GetCommentsOnUrl":
utils.addToPayload(opt, SOAPEnvelope, ["url", "maximumItemsToReturn", "startIndex"]);
if (typeof opt.excludeItemsTime !== "undefined" && opt.excludeItemsTime.length > 0) {
SOAPEnvelope.payload += utils.wrapNode("excludeItemsTime", opt.excludeItemsTime);
}
break;
case "GetRatingAverageOnUrl":
utils.addToPayload(opt, SOAPEnvelope, ["url"]);
break;
case "GetRatingOfUserOnUrl":
utils.addToPayload(opt, SOAPEnvelope, ["userAccountName", "url"]);
break;
case "GetRatingOnUrl":
utils.addToPayload(opt, SOAPEnvelope, ["url"]);
break;
case "GetRatingsOfUser":
utils.addToPayload(opt, SOAPEnvelope, ["userAccountName"]);
break;
case "GetRatingsOnUrl":
utils.addToPayload(opt, SOAPEnvelope, ["url"]);
break;
case "GetSocialDataForFullReplication":
utils.addToPayload(opt, SOAPEnvelope, ["userAccountName"]);
break;
case "GetTags":
utils.addToPayload(opt, SOAPEnvelope, ["url"]);
break;
case "GetTagsOfUser":
utils.addToPayload(opt, SOAPEnvelope, ["userAccountName", "maximumItemsToReturn", "startIndex"]);
break;
case "GetTagTerms":
utils.addToPayload(opt, SOAPEnvelope, ["maximumItemsToReturn"]);
break;
case "GetTagTermsOfUser":
utils.addToPayload(opt, SOAPEnvelope, ["userAccountName", "maximumItemsToReturn"]);
break;
case "GetTagTermsOnUrl":
utils.addToPayload(opt, SOAPEnvelope, ["url", "maximumItemsToReturn"]);
break;
case "GetTagUrls":
utils.addToPayload(opt, SOAPEnvelope, ["termID"]);
break;
case "GetTagUrlsByKeyword":
utils.addToPayload(opt, SOAPEnvelope, ["keyword"]);
break;
case "GetTagUrlsOfUser":
utils.addToPayload(opt, SOAPEnvelope, ["termID", "userAccountName"]);
break;
case "GetTagUrlsOfUserByKeyword":
utils.addToPayload(opt, SOAPEnvelope, ["keyword", "userAccountName"]);
break;
case "SetRating":
utils.addToPayload(opt, SOAPEnvelope, ["url", "rating", "title", "analysisDataEntry"]);
break;
case "UpdateComment":
utils.addToPayload(opt, SOAPEnvelope, ["url", "lastModifiedTime", "comment", "isHighPriority"]);
break;
// SPELLCHECK OPERATIONS
case "SpellCheck":
utils.addToPayload(opt, SOAPEnvelope, ["chunksToSpell", "declaredLanguage", "useLad"]);
break;
// TAXONOMY OPERATIONS
case "AddTerms":
utils.addToPayload(opt, SOAPEnvelope, ["sharedServiceId", "termSetId", "lcid", "newTerms"]);
break;
case "GetChildTermsInTerm":
utils.addToPayload(opt, SOAPEnvelope, ["sspId", "lcid", "termId", "termSetId"]);
break;
case "GetChildTermsInTermSet":
utils.addToPayload(opt, SOAPEnvelope, ["sspId", "lcid", "termSetId"]);
break;
case "GetKeywordTermsByGuids":
utils.addToPayload(opt, SOAPEnvelope, ["termIds", "lcid"]);
break;
case "GetTermsByLabel":
utils.addToPayload(opt, SOAPEnvelope, ["label", "lcid", "matchOption", "resultCollectionSize", "termIds", "addIfNotFound"]);
break;
case "GetTermSets":
utils.addToPayload(opt, SOAPEnvelope, ["sharedServiceIds", "termSetIds", "lcid", "clientTimeStamps", "clientVersions"]);
break;
// USERS AND GROUPS OPERATIONS
case "AddGroup":
utils.addToPayload(opt, SOAPEnvelope, ["groupName", "ownerIdentifier", "ownerType", "defaultUserLoginName", "description"]);
break;
case "AddGroupToRole":
utils.addToPayload(opt, SOAPEnvelope, ["groupName", "roleName"]);
break;
case "AddRole":
utils.addToPayload(opt, SOAPEnvelope, ["roleName", "description", "permissionMask"]);
break;
case "AddRoleDef":
utils.addToPayload(opt, SOAPEnvelope, ["roleName", "description", "permissionMask"]);
break;
case "AddUserCollectionToGroup":
utils.addToPayload(opt, SOAPEnvelope, ["groupName", "usersInfoXml"]);
break;
case "AddUserCollectionToRole":
utils.addToPayload(opt, SOAPEnvelope, ["roleName", "usersInfoXml"]);
break;
case "AddUserToGroup":
utils.addToPayload(opt, SOAPEnvelope, ["groupName", "userName", "userLoginName", "userEmail", "userNotes"]);
break;
case "AddUserToRole":
utils.addToPayload(opt, SOAPEnvelope, ["roleName", "userName", "userLoginName", "userEmail", "userNotes"]);
break;
case "GetAllUserCollectionFromWeb":
break;
case "GetGroupCollection":
utils.addToPayload(opt, SOAPEnvelope, ["groupNamesXml"]);
break;
case "GetGroupCollectionFromRole":
utils.addToPayload(opt, SOAPEnvelope, ["roleName"]);
break;
case "GetGroupCollectionFromSite":
break;
case "GetGroupCollectionFromUser":
utils.addToPayload(opt, SOAPEnvelope, ["userLoginName"]);
break;
case "GetGroupCollectionFromWeb":
break;
case "GetGroupInfo":
utils.addToPayload(opt, SOAPEnvelope, ["groupName"]);
break;
case "GetRoleCollection":
utils.addToPayload(opt, SOAPEnvelope, ["roleNamesXml"]);
break;
case "GetRoleCollectionFromGroup":
utils.addToPayload(opt, SOAPEnvelope, ["groupName"]);
break;
case "GetRoleCollectionFromUser":
utils.addToPayload(opt, SOAPEnvelope, ["userLoginName"]);
break;
case "GetRoleCollectionFromWeb":
break;
case "GetRoleInfo":
utils.addToPayload(opt, SOAPEnvelope, ["roleName"]);
break;
case "GetRolesAndPermissionsForCurrentUser":
break;
case "GetRolesAndPermissionsForSite":
break;
case "GetUserCollection":
utils.addToPayload(opt, SOAPEnvelope, ["userLoginNamesXml"]);
break;
case "GetUserCollectionFromGroup":
utils.addToPayload(opt, SOAPEnvelope, ["groupName"]);
break;
case "GetUserCollectionFromRole":
utils.addToPayload(opt, SOAPEnvelope, ["roleName"]);
break;
case "GetUserCollectionFromSite":
break;
case "GetUserCollectionFromWeb":
break;
case "GetUserInfo":
utils.addToPayload(opt, SOAPEnvelope, ["userLoginName"]);
break;
case "GetUserLoginFromEmail":
utils.addToPayload(opt, SOAPEnvelope, ["emailXml"]);
break;
case "RemoveGroup":
utils.addToPayload(opt, SOAPEnvelope, ["groupName"]);
break;
case "RemoveGroupFromRole":
utils.addToPayload(opt, SOAPEnvelope, ["roleName", "groupName"]);
break;
case "RemoveRole":
utils.addToPayload(opt, SOAPEnvelope, ["roleName"]);
break;
case "RemoveUserCollectionFromGroup":
utils.addToPayload(opt, SOAPEnvelope, ["groupName", "userLoginNamesXml"]);
break;
case "RemoveUserCollectionFromRole":
utils.addToPayload(opt, SOAPEnvelope, ["roleName", "userLoginNamesXml"]);
break;
case "RemoveUserCollectionFromSite":
utils.addToPayload(opt, SOAPEnvelope, ["userLoginNamesXml"]);
break;
case "RemoveUserFromGroup":
utils.addToPayload(opt, SOAPEnvelope, ["groupName", "userLoginName"]);
break;
case "RemoveUserFromRole":
utils.addToPayload(opt, SOAPEnvelope, ["roleName", "userLoginName"]);
break;
case "RemoveUserFromSite":
utils.addToPayload(opt, SOAPEnvelope, ["userLoginName"]);
break;
case "RemoveUserFromWeb":
utils.addToPayload(opt, SOAPEnvelope, ["userLoginName"]);
break;
case "UpdateGroupInfo":
utils.addToPayload(opt, SOAPEnvelope, ["oldGroupName", "groupName", "ownerIdentifier", "ownerType", "description"]);
break;