public override ModelNode ReverseSingleHost(object reverseHost, ReverseOptions options) { var item = (reverseHost as ContentTypeFieldLinkReverseHost).HostFieldLink; var def = new ContentTypeFieldLinkDefinition(); def.FieldInternalName = item.Name; def.FieldId = item.Id; def.Hidden = item.Hidden; def.Required = item.Required; return new ContentTypeFieldLinkModelNode { Options = { RequireSelfProcessing = true }, Value = def }; }
protected SPFieldLink FindExistingFieldLink(SPContentType contentType, ContentTypeFieldLinkDefinition fieldLinkModel) { if (fieldLinkModel.FieldId.HasValue) { return contentType.FieldLinks .OfType<SPFieldLink>() .FirstOrDefault(l => l.Id == fieldLinkModel.FieldId); } else if (!string.IsNullOrEmpty(fieldLinkModel.FieldInternalName)) { return contentType.FieldLinks .OfType<SPFieldLink>() .FirstOrDefault(l => l.Name.ToUpper() == fieldLinkModel.FieldInternalName.ToUpper()); } throw new ArgumentException("FieldId or FieldInternalName must be defined"); }
private SPField FindField(SPFieldCollection fields, ContentTypeFieldLinkDefinition listFieldLinkModel) { if (listFieldLinkModel.FieldId.HasGuidValue()) { return fields .OfType<SPField>() .FirstOrDefault(f => f.Id == listFieldLinkModel.FieldId.Value); } if (!string.IsNullOrEmpty(listFieldLinkModel.FieldInternalName)) { return fields .OfType<SPField>() .FirstOrDefault(f => f.InternalName.ToUpper() == listFieldLinkModel.FieldInternalName.ToUpper()); } throw new ArgumentException("FieldId or FieldInternalName should be defined"); }
public void Can_Reverse_Site_ContentType_FieldLinks() { var model = SPMeta2Model.NewSiteModel(site => { site.AddRandomContentType(ct => { // the definition id verification won't match on different ID/Name // both should be there var randomField = new ContentTypeFieldLinkDefinition { FieldInternalName = "CellPhone", FieldId = BuiltInFieldId.CellPhone }; ct.AddContentTypeFieldLink(randomField); }); site.AddRandomContentType(); }); DeployReverseAndTestModel(model); }
protected FieldLink FindExistingFieldLink(ContentType contentType, ContentTypeFieldLinkDefinition contentTypeFieldLinkModel) { var context = contentType.Context; context.Load(contentType); context.Load(contentType, c => c.FieldLinks); context.ExecuteQuery(); if (contentTypeFieldLinkModel.FieldId.HasGuidValue()) { return contentType.FieldLinks .ToList() .FirstOrDefault(l => l.Id == contentTypeFieldLinkModel.FieldId.Value); } else if (!string.IsNullOrEmpty(contentTypeFieldLinkModel.FieldInternalName)) { return contentType.FieldLinks .ToList() .FirstOrDefault(l => l.Name.ToUpper() == contentTypeFieldLinkModel.FieldInternalName.ToUpper()); } throw new ArgumentException("FieldId or FieldInternalName must be defined"); }
private Field FindField(FieldCollection fields, ContentTypeFieldLinkDefinition listFieldLinkModel) { var context = fields.Context; var scope = new ExceptionHandlingScope(context); Field field = null; if (listFieldLinkModel.FieldId.HasGuidValue()) { var id = listFieldLinkModel.FieldId.Value; using (scope.StartScope()) { using (scope.StartTry()) { fields.GetById(id); } using (scope.StartCatch()) { } } } else if (!string.IsNullOrEmpty(listFieldLinkModel.FieldInternalName)) { var fieldInternalName = listFieldLinkModel.FieldInternalName; using (scope.StartScope()) { using (scope.StartTry()) { fields.GetByInternalNameOrTitle(fieldInternalName); } using (scope.StartCatch()) { } } } context.ExecuteQueryWithTrace(); if (!scope.HasException) { if (listFieldLinkModel.FieldId.HasGuidValue()) { field = fields.GetById(listFieldLinkModel.FieldId.Value); } else if (!string.IsNullOrEmpty(listFieldLinkModel.FieldInternalName)) { field = fields.GetByInternalNameOrTitle(listFieldLinkModel.FieldInternalName); } context.Load(field); context.Load(field, f => f.SchemaXml); context.ExecuteQueryWithTrace(); } return field; }
//protected Field FindExistingListField(List list, ContentTypeFieldLinkDefinition listFieldLinkModel) //{ // return FindField(list.Fields, listFieldLinkModel); //} protected Field FindAvailableField(Web web, ContentTypeFieldLinkDefinition listFieldLinkModel) { return FindField(web.AvailableFields, listFieldLinkModel); }
public static ModelNode AddContentTypeFieldLink(this ModelNode model, ContentTypeFieldLinkDefinition definition, Action<ModelNode> action) { return model.AddDefinitionNode(definition, action); }
public static ModelNode AddContentTypeFieldLink(this ModelNode model, ContentTypeFieldLinkDefinition definition) { return AddContentTypeFieldLink(model, definition, null); }