Quantcast
Channel: SharePoint 2013 - Development and Programming forum
Viewing all articles
Browse latest Browse all 7589

Permissions required for Javascript functions.

$
0
0

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


Viewing all articles
Browse latest Browse all 7589

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>