internal static MvcHtmlString Relation(this HtmlHelper source, string id, IEnumerable <QPSelectListItem> list, ControlOptions options, Field field, int articleId, bool isListOverflow) { const string entityTypeCode = EntityTypeCode.Article; var baseField = field.GetBaseField(articleId); var contentId = baseField.RelateToContentId ?? 0; var fieldId = baseField.Id; var filter = baseField.GetRelationFilter(articleId); var relatedToContent = baseField.RelatedToContent; var addNewActionCode = ActionCode.None; var readActionCode = ActionCode.None; if (relatedToContent != null) { if (!relatedToContent.IsVirtual) { readActionCode = ActionCode.EditArticle; if (relatedToContent.IsAccessible(ActionTypeCode.Update)) { addNewActionCode = ActionCode.AddNewArticle; } } else { readActionCode = ActionCode.ViewVirtualArticle; } } var listArgs = new EntityDataListArgs { EntityTypeCode = entityTypeCode, ParentEntityId = contentId, EntityId = articleId, ListId = fieldId, AddNewActionCode = addNewActionCode, ReadActionCode = readActionCode, SelectActionCode = baseField.RelationType == RelationType.OneToMany ? ActionCode.SelectArticle : ActionCode.MultipleSelectArticle, EnableCopy = field.ExactType != FieldExactTypes.M2ORelation, ReadDataOnInsert = field.OrderByTitle || field.OrderFieldId.HasValue || field.FieldTitleCount > 1, MaxListHeight = 200, MaxListWidth = 350, ShowIds = true, Filter = filter }; return(source.Relation(id, list, options, baseField.RelationType, isListOverflow, listArgs)); }