How to register a new docicon/progid using CSOM/SharePoint Client object model
I know how to register a new file-type icon in SharePoint 2013 by modifying docicon.xml,
but is it possible via any sort of web-based API? Specifically I'm trying to do it for a SharePoint Online/office 365 site.
Hi Dylan,
For SharePoint Online, the docicon.xml is stored in the SharePoint online Server and there is no such Web API could modify the xml file directly, so there is no easy way to achieve it.
As a workaround, you can add some JavaScript and Jquery in the master page to modify the file type icon to the new one.
<script>
var IMGs = document.getElementsByTagName("IMG")
for (var i=0; i<IMGs.length; i++)
var alt=IMGs[i].alt;
if (alt.substring(alt.length-4,alt.length)==".pdf")
IMGs[i].src="/yourlibrary/yourimage.gif";
</script>
Here is a similar thread for your reference:
https://social.technet.microsoft.com/forums/msonline/en-US/bf5ff648-eefb-4084-8204-9519efaf50e7/modifying-dociconxml-on-sharepoint-online
Best Regards
Forum Support
Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Subscriber Support, contact
[email protected]
Zhengyu Guo
TechNet Community Support
Similar Messages
-
I have a small snippet of code that I use to update the Modified Date of a list item and it works great for users with Full Control permissions. However, for users with just Contribute access to the site the code doesn't work. Instead, SharePoint
just updates the Modified Date to now.
I did some testing, and narrowed down the specific permission level that allows updating of Modified dates and oddly enough, it's the "Manage Permissions" level.
Has anyone run into this issue? If so, how do I work around this and update the Modified date as a user with only Contribute access to a site/library?
Here's the code:
DateTime Test = new DateTime(2012, 5, 4);
ListItem li = list.GetItemById(itemID);
li["Modified"] = Test;
li.Update();
ct.ExecuteQuery();
Thanks,
MaxHello,
As a workaround you can pass admin credential in your code because as per my knowledge contributor can't update default columns like: created by, modified by, modified, created.
ClientContext clientContext = newClientContext(siteUrl);
ClientContext.Credentials = newNetworkCredential(UserName, Password, Domain);
Hope it could help
Hemendra:Yesterday is just a memory,Tomorrow we may never see
Please remember to mark the replies as answers if they help and unmark them if they provide no help -
Using Sharepoint Client Object Model with large libraries (more than 5000 elements)
Hi,
i have issue with acccessing large list with more than 5000 elements. I use a Sharepoint Client Object Model.
It worked till yesterday when in the list was less than 5000. Now there is in the library more than 5000 elements. I have changed in the Central Administration limit for list from 5000 to 10000, but it helped only for list views. Script returns now 0 records.
var clientContext = new SP.ClientContext.get_current();
var currentListId =_spPageContextInfo.pageListId;
oList = clientContext.get_web().get_lists().getById(currentListId);
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml('<View Scope=\"RecursiveAll\">'+
'<Query>'+
'<Where>'+
'<And>'+
'<Eq><FieldRef Name=\"ContentTypeId\"/><Value Type=\"Text\">'+contentTypeId+'</Value></Eq>'+
'<And>'+
'<Eq><FieldRef Name=\"_x0040_Client\" LookupId=\"TRUE\" /><Value Type=\"Lookup\">'+client+'</Value></Eq>'+
'<Eq><FieldRef Name=\"_x0040_Company\" LookupId=\"TRUE\" /><Value Type=\"Lookup\">'+organisation+'</Value></Eq>'+
'</And>'+
'</And>'+
'</Where>'+
'</Query>'+
'<ViewFields>'+
'<FieldRef Name=\"ID\" />'+
'</ViewFields>'+
'</View>'+
'<RowLimit>100</RowLimit>');
camlQuery.ViewAttributes = "Scope='RecursiveAll'";
listItems = oList.getItems(camlQuery);
clientContext.load(listItems);
clientContext.executeQueryAsync(Function.createDelegate(this, onQuerySucceeded), Function.createDelegate(this, onQueryFailed));
Please advice how i can resolve this issue. Thanks a lot!!
from MSDN forum...Thanks you, friends!
That to resolve my issue, i made next things:
1) turn off a limit items for my list
2) used SPQuery.ListItemCollectionPosition
property,
3) and corrected little mistake in my CAML Query.
May be a punkt #2 will be enough, don't you :)
from MSDN forum... -
How to get all previous versions page contents and other field values of a publishing page using SharePoint Client Object Model 2010?
Thanks,
OsmitaHi Osmita,
Greetings.
Here are the links that helps you. It has code attached to it.
http://social.technet.microsoft.com/Forums/sharepoint/en-US/a0d2ab40-99ba-4368-8505-1dc559ef6469/get-content-of-previous-version-of-page-sharepoint-2010?forum=sharepointgeneralprevious
http://social.technet.microsoft.com/Forums/sharepoint/en-US/faaf419f-997e-4150-9911-48cc375c3b46/how-to-get-previous-published-versions-of-publishing-pages-in-sharepoint-2010?forum=sharepointdevelopmentprevious
Please remember to click 'Mark as Answer' on the answer if it helps you -
Through SharePoint Client Object model, how to make color coded events on Sharepoint Calendar
Hi,
Through SharePoint Client Object model, how to make color coded events on Sharepoint Calendar.
Plese share your knowledge.
Regards
TharakHi,
According to your post, my understanding is that you wanted to make a color events Calendar.
We can achieve it using the OOB method by creating the Calendars Overlay.
http://summit7systems.com/color-code-calendar-events-in-sharepoint/
You can also use the JavaScript to achieve it.
http://spsawyer.wordpress.com/2013/07/18/sharepoint-color-calendar/
http://www.planetwilson.co.uk/sharepoint-2013-colour-calendar-v2/
more reference:
http://usermanagedsolutions.com/SharePoint-User-Toolkit/Pages/Color-Coding-Calendar-List.aspx
http://blog.pathtosharepoint.com/2010/04/06/tutorial-add-color-coding-to-your-sharepoint-2007-calendar-in-15-minutes/#comment-7231
Thanks & Regards,
Jason
Jason Guo
TechNet Community Support -
Hi,
I have started using the client object model so that i do not have to go to sharepoint admins to perform some basic operations on remote server. While assigning list item level permission i am getting following error, could you please help. thanks.
The remote server returned an error: (401) Unauthorized.
at
System.Net.HttpWebRequest.GetResponse()
at
Microsoft.SharePoint.Client.SPWebRequestExecutor.Execute()
at
Microsoft.SharePoint.Client.ClientContext.EnsureFormDigest()
at
Microsoft.SharePoint.Client.ClientContext.ExecuteQuery()
at
SetDowntimeItemPermission.SetPermission.Main(String[] args) init seems your request was unauthenticated i'm not sure are you using a web application with FBA or desktop application my suggestion would be try to impersonate your request by passing network credentials (COM works on network credentials )
NetworkCredential credentials = new NetworkCredential("username", "pwd", "domain");
ClientContext context = new ClientContext("http://site-url");
context.Credentials = credentials;
Best Regards, Ashutosh | SharePoint World -
How to delete a custom columns from a content-type in Sharepoint Client object model
I have a windows interface where I create a content-type and then create a column and adds that column to the content-type.
//availableCT is my content-type where the column is present.
//get all available fields within this content-type
FieldCollection fieldColl = availableCT.Fields;
clientContext.Load(fieldColl);
clientContext.ExecuteQuery();
foreach (Field field in fieldColl)
//columnFromList is the column that is to be deleted
if (field.InternalName.Equals(columnFromList))
field.DeleteObject();
clientContext.ExecuteQuery(); // this throws an exception
// Additional information: Site columns which are included in content types or on lists cannot be deleted. Please remove all instances of this site column prior to deleting it.hi,
you can use the below code to delete it
using (ClientContext sourceContext = new ClientContext(cmdSpoSite))
Web web = sourceContext.Web;
sourceContext.Load(web);
sourceContext.Load(web.AvailableContentTypes, type => type.Include(c => c.FieldLinks, c => c.Name));
sourceContext.ExecuteQuery();
List<ContentType> ExistingContentType = web.AvailableContentTypes.ToList();
IEnumerable<ContentType> contentTypesList = ExistingContentType.Where(ct => ct.Name == "<ContentTypeName>");
ContentType ctype = contentTypesList.ElementAt(0);
IQueryable<FieldLink> flinks = ctype.FieldLinks.Where(f => f.Name == "<FiledName");
foreach (FieldLink flink in flinks)
flink.DeleteObject();
ctype.Update(true);
sourceContext.ExecuteQuery();
The difference being in your code and above code is you are removeing fileds which is eventually is deleting site column but a site column cannot be deleted if is alreday being used. So you need to deled the FieldLink in content type taht way column is removed
from content type but not from site column.
Now if you want to delete site column you can use your code to deleted Field.
Whenever you see a reply and if you think is helpful,Vote As Helpful! And whenever you see a reply being an answer to the question of the thread, click Mark As Answer -
Configure site auditing in sharepoint online using powershell or Client object model
Is the any way to configure site collection audit settings in sharepoint online programmatically or using powershell.
Hi Bhism,
The solution given in the article is for sharepoint 2010, i want to enable site auditing in Sharepoint 2013.
When i tried using that for sharepoint 2013 making he neccessary changes required for sharepoint 2013 i got an error :
Unable to find type [Microsoft.SharePoint.SPAuditMaskType]: make sure that the
assembly containing this type is loaded.
I think the assembly is for SP2010, is there anything like that for SP2013
Thanks in Advance. -
How to update list item using client object model without changing created/modified dates?
Hello All,
I want to update list item using the SharePoint Client Object
Model without updating the created / modified date. Is it possible?
Please help.
Thanks.Using the SystemUpdate method should do the trick, according
to its literature.
Additionally, would something like this be of any use for you? Taken from this
Stack Exchange thread: -
public static class SPListItemExtensions
/// <summary>
/// Provides ability to update list item without firing event receiver.
/// </summary>
/// <param name="item"></param>
/// <param name="doNotFireEvents">Disables firing event receiver while updating item.</param>
public static void Update(this SPListItem item, bool doNotFireEvents)
SPItemEventReceiverHandling rh = new SPItemEventReceiverHandling();
if (doNotFireEvents)
try
rh.DisableEventFiring();
item.Update();
finally
rh.EnableEventFiring();
else
item.Update();
/// <summary>
/// Provides ability to update list item without firing event receiver.
/// </summary>
/// <param name="item"></param>
/// <param name="incrementListItemVersion"></param>
/// <param name="doNotFireEvents">Disables firing event receiver while updating item.</param>
public static void SystemUpdate(this SPListItem item, bool incrementListItemVersion, bool doNotFireEvents)
SPItemEventReceiverHandling rh = new SPItemEventReceiverHandling();
if (doNotFireEvents)
try
rh.DisableEventFiring();
item.SystemUpdate(incrementListItemVersion);
finally
rh.EnableEventFiring();
else
item.SystemUpdate(incrementListItemVersion);
/// <summary>
/// Provides ability to update list item without firing event receiver.
/// </summary>
/// <param name="item"></param>
/// <param name="doNotFireEvents">Disables firing event receiver while updating item.</param>
public static void SystemUpdate(this SPListItem item, bool doNotFireEvents)
SPItemEventReceiverHandling rh = new SPItemEventReceiverHandling();
if (doNotFireEvents)
try
rh.DisableEventFiring();
item.SystemUpdate();
finally
rh.EnableEventFiring();
else
item.SystemUpdate();
private class SPItemEventReceiverHandling : SPItemEventReceiver
public SPItemEventReceiverHandling() { }
new public void DisableEventFiring()
base.DisableEventFiring();
new public void EnableEventFiring()
base.EnableEventFiring();
Steven Andrews
SharePoint Business Analyst: LiveNation Entertainment
Blog: baron72.wordpress.com
Twitter: Follow @backpackerd00d
My Wiki Articles:
CodePlex Corner Series
Please remember to mark your question as "answered" if this solves (or helps) your problem. -
Hi,
I am using the Javascript Client object model.
I have a custom list and a custom document library.
Custom list contains 2 columns - dlName , dlValue
The document library contains 2 folders - "folder1" , "folder2" and contains some images.
The image name starts with the "dlValue" available in the custom list
I am using a visual webpart and using javascript client object model.
I am trying to achieve the below functionality:
1) Load a dropdown with the custom list.
2) set the image based on the value in dropdown.
I have achieved the first option, I have set the dropdown, but not sure how to query the folder and set the image.
Below is the code i have used so far:
//In Visual webpart
<select id="ddlTest" >
</select>
<br/>
<div id="PreviewLayer">
<img id="imgPlaceHolder" runat="server" alt="Image" title="imgPlaceHolder" src=" " />
</div>
// In Javascript file
function RenderHtmlOnSuccess() {
var ddlTest = this.document.getElementById("ddlTest");
ddlTest.options.length = 0;
var enumerator = this.customListItems.getEnumerator();
while (enumerator.moveNext()) {
var currentItem = enumerator.get_current();
var dropdownValue = currentItem.get_item("dlValue");
ddlTest.options[ddlTest.options.length] = new Option(currentItem.get_item("dlName"), dropdownValue);
setImage(dropdownValue); // Not sure how to query the folder and set the image based on value.
// Also if dropdown value is changed, corresponding image should be shown
How to query the folder and based on dropdown value, show the image? Also, how to handle the dropdown value change?
ThanksHi,
Here are two links for your reference:
Example of how to Get Files from a Folder using Ecmascript \ Javascript client object model in SharePoint 2010
http://sharepointmantra.wordpress.com/2013/10/19/example-of-how-to-get-files-from-a-folder-using-ecmascript-javascript-client-object-model-in-sharepoint-2010/
SP2010 JSOM Client Object Model: How to get all documents in libraries including all folders recursively
http://sharepoint.stackexchange.com/questions/70185/sp2010-jsom-client-object-model-how-to-get-all-documents-in-libraries-including
In SharePoint 2013, we can also use REST API to achieve it.
http://msdn.microsoft.com/en-us/magazine/dn198245.aspx
Thanks,
Dennis Guo
TechNet Community Support
Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Subscriber Support, contact
[email protected]
Dennis Guo
TechNet Community Support -
The below mentioned code works sometimes and doesn't most of the time. What is the real best way to update multi select managed metadata fields?
Microsoft.SharePoint.Client.File file = site.GetFileByServerRelativeUrl("/sites/myspsite/Documents/Presentation2.pptx");
clientContext.Load(file);
clientContext.ExecuteQuery();
ListItem currentItem = file.ListItemAllFields;
clientContext.Load(currentItem);
clientContext.ExecuteQuery();
currentItem["Country"] = "-1;#India|1d13cfe9-d6f4-4bd3-a6c7-4b46a81f2a96;#-1;#China|9c1dff73-82db-44b1-8d70-f4258dd24e47;#-1;#USA|b9295c0b-67d4-4dc5-99d4-e88af888de48";
currentItem["Title"] = "Demo Doc";
currentItem.Update();
clientContext.ExecuteQuery();
file.CheckIn("test check-in", CheckinType.MajorCheckIn);
clientContext.ExecuteQuery();
Anuradha!!Hi,
Here are two blog for your reference:
How to Work with Managed Metadata Columns by Using the SharePoint Client Object Model
http://blogs.msdn.com/b/sharepointdev/archive/2011/11/18/how-to-work-with-managed-metadata-columns-by-using-the-sharepoint-client-object-model-kaushalendra-kumar.aspx
SharePoint 2010 Code Tips – Setting a Managed Metadata Field with the Client Object Model
http://sharepointfieldnotes.blogspot.com/2011/08/sharepoint-2010-code-tips-setting.html
Best Regards
Dennis Guo
TechNet Community Support -
How to execute XML batch commands using SharePoint Web services or Client Object Model
Hi,
I have a requirement to execute some batch commands to update SharePoint View Style, how can i do it using SharePoint webservices or SharePoint Client Object model.
I need to execute the following Batch command over a particular web.
<Method ID="UpdateView">
<SetVar Name="Cmd">UpdateView</SetVar>
<SetList Scope="Request">{GUID of List}</SetList>
<SetVar Name="View">{GUID of View}</SetVar>
<SetVar Name="ViewStyle">6</SetVar>
<SetVar Name="RowLimit">100</SetVar>
<SetVar Name="Paged">TRUE</SetVar>
</Method>Hi
I tried it already... But UpdateView Method in the Views.asmx and Lists.asmx, both are not supporting for updating the style of the view (like Boxed, Newsletter...).
If you have any code sample which will do this job with any of the SharePoint web services, please share it.. -
Fetching file size using CAML query in Javascript client object model
Hi,
I am using the Javascript client object model to retrieve contents of a document library.
I have a document library, which contains a folder "Folder1" . "Folder1" has a zip file. I would like to get the file size of the zip file.
I have tried the below code, but not sure, how to fetch the file size.
function FetchImage() {
var clientcontext = new SP.ClientContext.get_current();
var oweb = clientcontext.get_web();
var olibrary = oweb.get_lists().getByTitle(DocLibrary);
var query = new SP.CamlQuery();
query.set_folderServerRelativeUrl("Lists/DocLibrary/folder1/");
folder = olibrary.getItems(query);
clientcontext.load(folder, 'Include(Title,ContentType, FileLeafRef,FileDirRef,File)');
clientcontext.executeQueryAsync(Function.createDelegate(this, this.RenderDataOnSuccess), Function.createDelegate(this, this.RenderDataOnFailure));
function RenderDataOnSuccess() {
var ListEnumerator = this.folder.getEnumerator();
while (ListEnumerator.moveNext()) {
var currentItem = ListEnumerator.get_current();
if (_contentType.get_name() != "Folder") {
var File = currentItem.get_file();
if (File != null) {
// Fetch file size
How to fetch the file size?
Thanks<script>
function getSize()
var myFSO = new ActiveXObject("Scripting.FileSystemObject");
var filepath = document.upload.file.value;
var thefile = myFSO.getFile(filepath);
var size = thefile.size;
alert(size + " bytes");
</script>
http://social.msdn.microsoft.com/Forums/en-US/e5d2ff3d-01c7-4cc0-a081-29a4dfbb0fad/getting-the-sharepoint-list-attachment-size-using-javascript?forum=sharepointcustomizationlegacy -
Get current item id using JavaScript Client Object Model
I have a client query that query SharePoint list Items. Lets say it is a document library. I need to get the list item id of each.
I can query the Title of the document using this syntax.
ctx.CurrentItem['Title']
But when I try
ctx.CurrentItem['ID']
for list item ID, it does not give a value. How can I solve this?Hi Malin,
If you're using the JavaScript Client Object Model, try using the SPListItem.get_item('key') method as in the example below:
<script>
ExecuteOrDelayUntilScriptLoaded(function(){
var arrIds = [];
var clientContext = new SP.ClientContext();
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml('<View><Query></Query></View>');
var items = clientContext.get_web().get_lists().getByTitle("Your List Title Here").getItems(camlQuery);
clientContext.load(items);
clientContext.executeQueryAsync(Function.createDelegate(this,function(){
var itemEnumerator = items.getEnumerator();
while(itemEnumerator.moveNext()){
var itemId = itemEnumerator.get_current().get_item('ID');
arrIds.push(itemId);
alert(arrIds);
}), Function.createDelegate(this, function(){
alert("something went wrong");
},"SP.js");
</script> -
Assign Group permission to list item using client object model
Hi,
I am trying to add the list item and assign the permission to the list item by using SP 2010 client object model. The problem which i am facing that when i assign the group as a permission to the item, by automatically the limited access permission
is added to the group. Please find the steps which i have followed,
Step-1: Break role inheritance.
foreach (var item in _listItemCollection)
if (item["FileLeafRef"].ToString().ToLower() == "xxx")
item.BreakRoleInheritance(true, false);
_clientContext.Load(item.RoleAssignments);
_folderItem = item;
_clientContext.ExecuteQuery();
Step 2: Remove all permissions of the list item.
foreach (var assignment in _folderItem.RoleAssignments)
assignment.RoleDefinitionBindings.RemoveAll();
assignment.Update();
_clientContext.ExecuteQuery();
Step 3:
Add Group as a permission to the list item.
var role = _web.RoleDefinitions.GetByType(RoleType.Contributor);
var collRdb = new RoleDefinitionBindingCollection(_clientContext) { role };
Principal principal = _grp;
_folderItem.RoleAssignments.Add(principal, collRdb);
_folderItem.Update();
_clientContext.ExecuteQuery();
After adding the group successfully to the list item, i checked the group permission and it contains the value as "Contribute,Limited Access" to the site level and "Contribute" to the list item. Please guide me how to avoid to create Contribute,Limited
Access role.
BalajiHi Dmitry,
When I create the group and assign contribute permission, the group has the permission at the site level(to see the permission, click group and click view Group Permission). I have added the list item and break the role inheritance permission
and given the unique permission by providing group as a permission to the list item. After providing the permission, the group permission at the site level changed to "Contribute, Limited Access". I dont know how contribute permission changed to contribute,
limited access.
I found the workaround to fix this issue. I created the group and create the folder in the shared document library by using client object model. Due to facing some issue by providing the permission using client object model, i have created the event receiver
to the document library and using server object model, i can able to assign the approprate group permission.
Balaji
Maybe you are looking for
-
Hard Drive Failure on Satellite A660
I bought a new Toshiba A series 9 months ago. Within a week I had to return it because the sound card was not working. The store I bought it from did not have an identical replacement so the replacement model cost me an additional $150. Now the hard
-
How can I get my exported pages document to appear the same in pdf?
When I export my document to pdf, the font color for those that I have reversed (white color) appear black and don't show up because the background is black. I've tried exporting my file 10 times and it appears to be different on many occassions. I c
-
Create a Report with InfoPath to Show Only Some of Data in a Custom List
I have to create a report using InfoPath from a SharePoint 2010 custom list. The report has 8 columns, and there will be four repeating? tables in it, each table including data that is filtered from the bigger list to meet two criteria. All the ite
-
Burn Folder - What Is The Burn Folder's Proper Location?
Good morning. This morning when I started up the computer, upon reaching the Desktop, the Burn Folder [ http://img161.imageshack.us/img161/7752/screencapturetb4.png ] was located on the Desktop. A family member who isn't here right now was using the
-
I'm trying to add some sort of a print function to a custom certificate I have created at the end of my Adobe Captivate 8 project. Captivate 8 comes with a certificate Learning Interaction, but the certificates look cheap. I found some articles whe