private void DeployHideContentTypeLinks(object modelHost, SPList list, SPFolder folder, HideContentTypeLinksDefinition contentTypeOrderDefinition) { var oldContentTypeOrder = folder.ContentTypeOrder; var newContentTypeOrder = oldContentTypeOrder; var listContentTypes = list.ContentTypes.OfType<SPContentType>().ToList(); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = folder, ObjectType = typeof(SPFolder), ObjectDefinition = contentTypeOrderDefinition, ModelHost = modelHost }); // re-order foreach (var srcContentTypeDef in contentTypeOrderDefinition.ContentTypes) { SPContentType listContentType = null; if (!string.IsNullOrEmpty(srcContentTypeDef.ContentTypeName)) listContentType = listContentTypes.FirstOrDefault(c => c.Name == srcContentTypeDef.ContentTypeName); if (listContentType == null && !string.IsNullOrEmpty(srcContentTypeDef.ContentTypeId)) listContentType = listContentTypes.FirstOrDefault(c => c.Id.ToString().ToUpper().StartsWith(srcContentTypeDef.ContentTypeId.ToUpper())); if (listContentType != null) { var existingCt = newContentTypeOrder.FirstOrDefault(ct => ct.Name == listContentType.Name || ct.Id == listContentType.Id); if (existingCt != null && newContentTypeOrder.Contains(existingCt)) newContentTypeOrder.Remove(existingCt); } } if (newContentTypeOrder.Count() > 0) folder.UniqueContentTypeOrder = newContentTypeOrder; InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = folder, ObjectType = typeof(SPFolder), ObjectDefinition = contentTypeOrderDefinition, ModelHost = modelHost }); folder.Update(); }
private void DeployHideContentTypeLinks(object modelHost, List list, Folder folder, HideContentTypeLinksDefinition contentTypeOrderDefinition) { var context = folder.Context; TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Fetching list content types and the order"); context.Load(list, l => l.ContentTypes); context.Load(folder, f => f.ContentTypeOrder); context.ExecuteQueryWithTrace(); var oldContentTypeOrder = folder.ContentTypeOrder; var newContentTypeOrder = oldContentTypeOrder; var listContentTypes = list.ContentTypes.ToList(); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = folder, ObjectType = typeof(Folder), ObjectDefinition = contentTypeOrderDefinition, ModelHost = modelHost }); TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Reordeging list content types"); // re-order foreach (var srcContentTypeDef in contentTypeOrderDefinition.ContentTypes) { ContentType listContentType = null; if (!string.IsNullOrEmpty(srcContentTypeDef.ContentTypeName)) { listContentType = listContentTypes.FirstOrDefault(c => c.Name.ToUpper() == srcContentTypeDef.ContentTypeName.ToUpper()); if (listContentType != null) { TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, string.Format("Found content type by name:[{0}]", srcContentTypeDef.ContentTypeName)); } } if (listContentType == null && !string.IsNullOrEmpty(srcContentTypeDef.ContentTypeId)) { listContentType = listContentTypes.FirstOrDefault(c => c.Id.ToString().ToUpper().StartsWith(srcContentTypeDef.ContentTypeId.ToUpper())); if (listContentType != null) { TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, string.Format("Found content type by matching ID start:[{0}]", srcContentTypeDef.ContentTypeId)); } } if (listContentType != null) { var existingCt = newContentTypeOrder.FirstOrDefault(ct => ct.StringValue.ToUpper() == listContentType.StringId.ToUpper()); if (existingCt != null && newContentTypeOrder.Contains(existingCt)) { TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, string.Format("Removing content type from the ordering")); newContentTypeOrder.Remove(existingCt); } } } if (newContentTypeOrder.Count() > 0) folder.UniqueContentTypeOrder = newContentTypeOrder; InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = folder, ObjectType = typeof(Folder), ObjectDefinition = contentTypeOrderDefinition, ModelHost = modelHost }); folder.Update(); context.ExecuteQueryWithTrace(); }
public static ModelNode AddHideContentTypeLinks(this ModelNode model, HideContentTypeLinksDefinition definition, Action<ModelNode> action) { return model.AddDefinitionNode(definition, action); }
public static ModelNode AddHideContentTypeLinks(this ModelNode model, HideContentTypeLinksDefinition definition) { return AddHideContentTypeLinks(model, definition, null); }