private void DeployContentTypeOrder(object modelHost, ContentType contentType, UniqueContentTypeFieldsOrderDefinition reorderFieldLinksModel) { var context = contentType.Context; context.Load(contentType, c => c.FieldLinks); context.Load(contentType, c => c.Fields); context.ExecuteQueryWithTrace(); var fieldLinks = contentType.FieldLinks.ToList(); var fields = contentType.Fields.ToList(); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = contentType, ObjectType = typeof(ContentType), ObjectDefinition = reorderFieldLinksModel, ModelHost = modelHost }); var newOrder = new List<string>(); // re-order foreach (var srcFieldLink in reorderFieldLinksModel.Fields) { Field currentField = null; if (!string.IsNullOrEmpty(srcFieldLink.InternalName)) currentField = fields.FirstOrDefault(c => c.InternalName == srcFieldLink.InternalName); if (currentField == null && srcFieldLink.Id.HasValue) currentField = fields.FirstOrDefault(c => c.Id == srcFieldLink.Id.Value); if (currentField != null) { // must always be internal name of the field if (!newOrder.Contains(currentField.InternalName)) newOrder.Add(currentField.InternalName); } } if (newOrder.Count > 0) contentType.FieldLinks.Reorder(newOrder.ToArray()); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = contentType, ObjectType = typeof(ContentType), ObjectDefinition = reorderFieldLinksModel, ModelHost = modelHost }); }
public static ModelNode AddUniqueContentTypeFieldsOrder(this ModelNode model, UniqueContentTypeFieldsOrderDefinition definition, Action<ModelNode> action) { return model.AddDefinitionNode(definition, action); }
public static ModelNode AddUniqueContentTypeFieldsOrder(this ModelNode model, UniqueContentTypeFieldsOrderDefinition definition) { return AddUniqueContentTypeFieldsOrder(model, definition, null); }