UNPKG

spservices

Version:

Work with SharePoint's Web Services using jQuery

86 lines (76 loc) 3.48 kB
define([ 'jquery', '../utils/constants', '../core/SPServices.utils', //--------------------------- // We don't need local variables for these dependencies // because they are added to the jQuery namespace. '../core/SPServices.core' ], function ( $, constants, utils ) { "use strict"; // SPUpdateMultipleListItems allows you to update multiple items in a list based upon some common characteristic or metadata criteria. $.fn.SPServices.SPUpdateMultipleListItems = function (options) { var opt = $.extend({}, { webURL: "", // [Optional] URL of the target Web. If not specified, the current Web is used. listName: "", // The list to operate on. CAMLQuery: "", // A CAML fragment specifying which items in the list will be selected and updated batchCmd: "Update", // The operation to perform. By default, Update. valuepairs: [], // Valuepairs for the update in the form [[fieldname1, fieldvalue1], [fieldname2, fieldvalue2]...] completefunc: null, // Function to call on completion of rendering the change. debug: false // If true, show error messages;if false, run silent }, options); var i; var itemsToUpdate = []; var documentsToUpdate = []; // Call GetListItems to find all of the items matching the CAMLQuery $().SPServices({ operation: "GetListItems", async: false, webURL: opt.webURL, listName: opt.listName, CAMLQuery: opt.CAMLQuery, CAMLQueryOptions: "<QueryOptions><ViewAttributes Scope='Recursive' /></QueryOptions>", completefunc: function (xData) { $(xData.responseXML).SPFilterNode("z:row").each(function () { itemsToUpdate.push($(this).attr("ows_ID")); var fileRef = $(this).attr("ows_FileRef"); fileRef = "/" + fileRef.substring(fileRef.indexOf(constants.spDelim) + 2); documentsToUpdate.push(fileRef); }); } }); var fieldNum; var batch = "<Batch OnError='Continue'>"; for (i = 0; i < itemsToUpdate.length; i++) { batch += "<Method ID='" + i + "' Cmd='" + opt.batchCmd + "'>"; for (fieldNum = 0; fieldNum < opt.valuepairs.length; fieldNum++) { batch += "<Field Name='" + opt.valuepairs[fieldNum][0] + "'>" + utils.escapeColumnValue(opt.valuepairs[fieldNum][1]) + "</Field>"; } batch += "<Field Name='ID'>" + itemsToUpdate[i] + "</Field>"; if (documentsToUpdate[i].length > 0) { batch += "<Field Name='FileRef'>" + documentsToUpdate[i] + "</Field>"; } batch += "</Method>"; } batch += "</Batch>"; // Call UpdateListItems to update all of the items matching the CAMLQuery $().SPServices({ operation: "UpdateListItems", async: false, webURL: opt.webURL, listName: opt.listName, updates: batch, completefunc: function (xData) { // If present, call completefunc when all else is done if (opt.completefunc !== null) { opt.completefunc(xData); } } }); }; // End $.fn.SPServices.SPUpdateMultipleListItems return $; });