public ActionResult DeleteWelcomeField(string id) { var spContext = SharePointContextProvider.Current.GetSharePointContext(HttpContext); using (var clientContext = spContext.CreateUserClientContextForSPHost()) { clientContext.Load(clientContext.Web, w => w.ContentTypes); clientContext.ExecuteQuery(); ContentType docSetContentType = clientContext.Web.ContentTypes.FirstOrDefault(ct => ct.Name == CONTENTTYPENAME); Field selectedField = clientContext.Web.Fields.GetById(new Guid(id)); clientContext.Load(selectedField); clientContext.ExecuteQuery(); if (docSetContentType != null && selectedField.ServerObjectIsNull == false) { DocumentSetTemplate docSetTemplate = DocumentSetTemplate.GetDocumentSetTemplate(clientContext, docSetContentType); clientContext.Load(docSetTemplate, d => d.WelcomePageFields); clientContext.ExecuteQuery(); if (!docSetTemplate.WelcomePageFields.Contains(selectedField)) { docSetTemplate.WelcomePageFields.Remove(new Guid(id)); docSetTemplate.Update(true); clientContext.ExecuteQuery(); } } } return(RedirectToAction("Index", new { SPHostUrl = SharePointContext.GetSPHostUrl(HttpContext.Request).AbsoluteUri })); }
public ActionResult DeleteAllowedContentTypeAction(string id) { var spContext = SharePointContextProvider.Current.GetSharePointContext(HttpContext); using (var clientContext = spContext.CreateUserClientContextForSPHost()) { if (clientContext != null) { Web web = clientContext.Web; clientContext.Load(web, w => w.ContentTypes, w => w.Fields); clientContext.ExecuteQuery(); var query = from ct in web.ContentTypes where ct.Id.StringValue == id select ct; ContentType ctFound = query.First(); DocumentSetTemplate template = GetDocumentSetTemplate(clientContext); if (template != null) { template.AllowedContentTypes.Remove(ctFound.Id); template.Update(true); clientContext.Load(template); clientContext.ExecuteQuery(); } } } return(RedirectToAction("Index", new { SPHostUrl = SharePointContext.GetSPHostUrl(HttpContext.Request).AbsoluteUri })); }
public static void Add(this DocumentSetTemplate documentSet, ListItem documentItem, string documentSetName, string folder, ContentTypeId docId, bool majorVersionOnly) { Trace.TraceInformation($"Adding: {documentItem.File.Name} to {documentSetName}, Document Folder: {folder}"); var ctx = documentSet.Context; Uri webUrl = new Uri(ctx.Url); DocumentStream ds = new DocumentStream((ClientContext)ctx, documentItem); MemoryStream documentStream; if (majorVersionOnly) { documentStream = ds.MajorVersion; } else { documentStream = ds.LatestVersion; } //Use a place holder to workaround filesize limitation with the DefaultDocuments API. //Place holder is inserted via the API, and then overwritten later. if (documentStream != null) { string placeholderPage = "Placeholder"; MemoryStream repo = new MemoryStream(Encoding.UTF8.GetBytes(placeholderPage)); documentSet.DefaultDocuments.Add(folder + ds.FileName, docId, repo.ToArray()); documentSet.Update(true); ctx.ExecuteQuery(); repo.Close(); Trace.TraceInformation("- Placeholder created"); UploadFile((ClientContext)ctx, webUrl.AbsolutePath + "/_cts/" + documentSetName, documentStream, documentItem.File.Name); } }
public static void Clear(this DocumentSetTemplate documentSet) { var ctx = documentSet.Context; string[] docs = new string[200]; int j = 0; foreach (var document in documentSet.DefaultDocuments) { docs[j] = document.Name; j++; } Trace.TraceInformation($"Documents for deletion from Documentset"); foreach (var document in docs) { if (string.IsNullOrEmpty(document)) { break; } documentSet.DefaultDocuments.Remove(document); documentSet.Update(true); ctx.ExecuteQuery(); } }
public void Run() { Trace.TraceInformation("Document Set Manager Initiated"); List documentLibrary = DocumentWeb.Lists.GetByTitle(Config.DocumentLibrary); Folder rootFolder = documentLibrary.RootFolder; Ctx.Load(documentLibrary); Ctx.Load(rootFolder, i => i.Folders, i => i.Name); Ctx.ExecuteQuery(); foreach (KeyValuePair <string, string> folderToDocumentMap in Config.FolderToDocumentSetMapping) { Trace.TraceInformation($"Mapping: {folderToDocumentMap.Key} to {folderToDocumentMap.Value}. Major Versions Only: {Config.MajorVersionsOnly}"); ContentType documentSetCt = DocumentWeb.ContentTypes.GetByName(folderToDocumentMap.Value); Folder folder = rootFolder.Folders.GetByName(folderToDocumentMap.Key); DocumentSetTemplate dst = DocumentSetTemplate.GetDocumentSetTemplate(Ctx, documentSetCt); Ctx.Load(documentSetCt); Ctx.Load(folder); Ctx.Load(dst, i => i.DefaultDocuments); Ctx.ExecuteQuery(); Trace.TraceInformation($"Deleting existing documents from the {folderToDocumentMap.Value}"); dst.Clear(); CamlQuery cq = CreateAllFilesQuery(); cq.FolderServerRelativeUrl = folder.ServerRelativeUrl; ListItemCollection documents = documentLibrary.GetItems(cq); Ctx.Load(documents, icol => icol.Include(i => i.File)); Ctx.Load(documents, icol => icol.Include(i => i.ContentType)); Ctx.Load(documents, icol => icol.Include(i => i.ContentType.Id)); Ctx.ExecuteQuery(); Trace.TraceInformation($"Returned {documents.Count} files for processing"); int count = 0; foreach (ListItem document in documents) { count++; ContentType docCt = DocumentWeb.ContentTypes.GetByName(document.ContentType.Name); Ctx.ExecuteQuery(); string contentTypeFolder = ContentTypeFolder(document, rootFolder, folder); if (Config.ExcludedFolders.Contains(contentTypeFolder.TrimEnd('/'), StringComparer.CurrentCultureIgnoreCase)) { Trace.TraceInformation($"{document.File.Name} not proceesed due to ExcludedFolder rule: {contentTypeFolder.TrimEnd('/')}"); continue; } Trace.TraceInformation($"Adding document {count}: {document.File.Name}"); dst.Add(document, folderToDocumentMap.Value, contentTypeFolder, docCt.Id, Config.MajorVersionsOnly); dst.Update(true); Ctx.ExecuteQuery(); } } }
public ActionResult CreateDocumentSet([Bind(Include = "DocumentLibName,FieldNames,ContentTypeName")] AddDocumentSetViewModel model) { var spContext = SharePointContextProvider.Current.GetSharePointContext(HttpContext); using (var clientContext = spContext.CreateUserClientContextForSPHost()) { List <Field> fields = new List <Field>(); foreach (string fieldName in model.FieldNames) { Field field = CreateDocumentSetField(clientContext, fieldName); fields.Add(field); } ContentType ctTestSow = CreateDocumentSetContentType(clientContext, model.ContentTypeName, fields); DocumentSetTemplate docSetTemplate = DocumentSetTemplate.GetDocumentSetTemplate(clientContext, ctTestSow); clientContext.Load(docSetTemplate, d => d.SharedFields, d => d.WelcomePageFields); clientContext.ExecuteQuery(); if (!docSetTemplate.SharedFields.Contains(fields[0])) { docSetTemplate.SharedFields.Add(fields[0]); docSetTemplate.Update(true); clientContext.ExecuteQuery(); } if (!docSetTemplate.WelcomePageFields.Contains(fields[0])) { docSetTemplate.WelcomePageFields.Add(fields[0]); docSetTemplate.Update(true); clientContext.ExecuteQuery(); } // List listTestDoc = GetTestDocDocumentLibrary(clientContext, ctTestSow, model.DocumentLibName); clientContext.Load(listTestDoc.RootFolder); clientContext.ExecuteQuery(); ClientResult <string> result = DocumentSet.Create(clientContext, listTestDoc.RootFolder, DOCUMENTSETNAME, ctTestSow.Id); clientContext.ExecuteQuery(); } return(RedirectToAction("Index", new { SPHostUrl = SharePointContext.GetSPHostUrl(HttpContext.Request).AbsoluteUri })); }
/// <summary> /// Add fields, content types end event receivers to list /// </summary> /// <param name="web"></param> private void AddFieldsCtToLists(SPWeb web) { SPContentType invoice = web.Site.RootWeb.ContentTypes[new SPContentTypeId("0x0101006667822C2C904046B11878F79EFAF7A6")]; invoice.JSLink = "~sitecollection/SiteAssets/Scripts/jquery-3.1.0.min.js | ~sitecollection/SiteAssets/Scripts/AddMonth.js"; invoice.Update(true); SPContentType ltInvoice = web.Site.RootWeb.ContentTypes[new SPContentTypeId("0x0101006667822C2C904046B11878F79EFAF7A60035D6DBDCBCBB47D8B3D9F882A2652E25")]; ltInvoice.JSLink = "~sitecollection/SiteAssets/Scripts/jquery-3.1.0.min.js | ~sitecollection/SiteAssets/Scripts/AddMonth.js"; ltInvoice.Update(true); SPContentType orderContentType = web.Site.RootWeb.ContentTypes[new SPContentTypeId("0x0120D52000B7FF4D802E3E4631A4AEDDA271D87E78")]; List <string> colnames = new List <string>(); colnames.Add("PredicaNotStandardFee"); colnames.Add("FileLeafRef"); colnames.Add("DocumentSetDescription"); for (int i = 0; i < orderContentType.FieldLinks.Count; i++) { if (colnames.Contains(orderContentType.FieldLinks[i].Name)) { continue; } colnames.Add(orderContentType.FieldLinks[i].Name); } orderContentType.FieldLinks.Reorder(colnames.ToArray()); orderContentType.FieldLinks[SPBuiltInFieldId.FileLeafRef].DisplayName = "$Resources:PredicaOrders,PredicaColOrderName"; orderContentType.FieldLinks[Guid.Parse("{1fc87c65-f371-46d3-bb42-6174eeaeea6e}")].ReadOnly = true; DocumentSetTemplate docsetTemplate = DocumentSetTemplate.GetDocumentSetTemplate(orderContentType); // Setting the content types docsetTemplate.AllowedContentTypes.Remove(web.ContentTypes["Document"].Id); docsetTemplate.AllowedContentTypes.Add(invoice.Id); docsetTemplate.AllowedContentTypes.Add(ltInvoice.Id); docsetTemplate.Update(true); orderContentType.Update(true); string ordersUrl = SPUrlUtility.CombineUrl(web.ServerRelativeUrl.TrimEnd('/'), Orders); SPList ordersList = web.GetList(ordersUrl); ordersList.ContentTypesEnabled = true; ordersList.ContentTypes.Add(orderContentType); ordersList.ContentTypes.Add(invoice); ordersList.ContentTypes.Add(ltInvoice); ordersList.Update(); }