Exemple #1
0
        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));
        }