I have a script that runs fine with Contributor but not with Read access to the site. I want to ensure Read users can read a document and create an entry in a task list. I've give the users edit permission to the Task list.
function MarkAsRead() { //get current user id var currentUser=_spPageContextInfo.userId; getSelectedItems().then(function(items){ for (var i =0 ; i < items.length;i++) { //get file name var fileName=items[i].get_item('FileLeafRef'); clientContext = SP.ClientContext.get_current(); //get workflow task list oList = clientContext.get_web().get_lists().getByTitle('Workflow Tasks'); itemCreateInfo = new SP.ListItemCreationInformation(); this.oListItem = oList.addItem(itemCreateInfo); //oListItem.set_item('ContentType', 'Mark As Read'); this.oListItem.set_item('Title', 'Read Notification: Javascript'+fileName); this.oListItem.set_item('AssignedTo', currentUser); //oListItem.set_item('Body', 'Hello World!'); this.oListItem.set_item('Status', 'Completed'); this.oListItem.update(); clientContext.load(this.oListItem); clientContext.executeQueryAsync( function() { console.log("Success"); }, function (sender, args) { alert('request failed ' + args.get_message() + '\n' + args.get_stackTrace()); } ); } }); } function getSelectedItems(){ var dfd = $.Deferred(function () { var context = SP.ClientContext.get_current(); var listId = SP.ListOperation.Selection.getSelectedList(); //get selected list Id var selectedItemIds = SP.ListOperation.Selection.getSelectedItems(context); //get selected objects var list = context.get_web().get_lists().getById(listId); var listItems = []; for (idx in selectedItemIds) { var item = list.getItemById(parseInt(selectedItemIds[idx].id)); listItems.push(item); context.load(item); } context.executeQueryAsync( function() { dfd.resolve(listItems); }, function (sender, args) { dfd.reject(args.get_message()); } ); }); return dfd.promise(); }
David Jenkins