Ejemplo n.º 1
0
        public IContent Get(ContentAreaItem contentAreaItem)
        {
            if ((PageEditing.PageIsInEditMode || _contextModeResolver.CurrentMode == ContextMode.Preview) &&
                ContentDraftView.IsInContentDraftViewMode)
            {
                var languageResolver = ServiceLocator.Current.GetInstance <LanguageResolver>();
                var commonDraft      = ServiceLocator.Current.GetInstance <IContentVersionRepository>()
                                       .LoadCommonDraft(contentAreaItem.ContentLink, languageResolver.GetPreferredCulture().Name);
                if (commonDraft != null)
                {
                    var contentLoader = ServiceLocator.Current.GetInstance <IContentLoader>();

                    var content = contentLoader.Get <IContent>(commonDraft.ContentLink);
                    if (content.IsPublished())
                    {
                        var defaultContent = _defaultContentAreaLoader.Get(contentAreaItem);
                        return(defaultContent);
                    }

                    if (!contentAreaItem.IsReadOnly)
                    {
                        contentAreaItem.ContentLink = commonDraft.ContentLink;
                    }

                    return(content);
                }
            }

            return(_defaultContentAreaLoader.Get(contentAreaItem));
        }
        public IContent Get(ContentAreaItem contentAreaItem)
        {
            if (!ExternalReview.IsInExternalReviewContext)
            {
                return(_defaultContentAreaLoader.Get(contentAreaItem));
            }

            // load common draft instead of published version
            var commonDraft = _contentVersionRepository.LoadCommonDraft(contentAreaItem.ContentLink,
                                                                        _languageResolver.GetPreferredCulture().Name);

            if (commonDraft != null)
            {
                var content = _contentLoader.Get <IContent>(commonDraft.ContentLink);
                if (content.IsPublished())
                {
                    // for published version return the original method result
                    var defaultContent = _defaultContentAreaLoader.Get(contentAreaItem);
                    return(defaultContent);
                }

                contentAreaItem.ContentLink = commonDraft.ContentLink;

                return(content);
            }

            return(_defaultContentAreaLoader.Get(contentAreaItem));
        }
        public IContent Get(ContentAreaItem contentAreaItem)
        {
            if (!ExternalReview.IsInExternalReviewContext)
            {
                return(_defaultContentAreaLoader.Get(contentAreaItem));
            }

            var referenceToLoad = _reviewsContentLoader.LoadUnpublishedVersion(contentAreaItem.ContentLink);

            if (referenceToLoad == null)
            {
                // fallback to default implementation if there is no common draft in a given language
                return(_defaultContentAreaLoader.Get(contentAreaItem));
            }

            var content = _contentLoader.Get <IContent>(referenceToLoad);

            if (_reviewsContentLoader.HasExpired(content as IVersionable))
            {
                return(null);
            }

            if (content.IsPublished())
            {
                // for published version return the original method result
                return(_defaultContentAreaLoader.Get(contentAreaItem));
            }

            if (!contentAreaItem.IsReadOnly)
            {
                contentAreaItem.ContentLink = referenceToLoad;
            }

            return(content);
        }
Ejemplo n.º 4
0
        public IContent Get(ContentAreaItem contentAreaItem)
        {
            if (!PageEditing.PageIsInEditMode)
            {
                return(_defaultContentAreaLoader.Get(contentAreaItem));
            }

            var maxContentDate = MaxContentDate;

            if (maxContentDate.HasValue == false)
            {
                return(_defaultContentAreaLoader.Get(contentAreaItem));
            }

            var languageResolver         = ServiceLocator.Current.GetInstance <LanguageResolver>();
            var contentVersionRepository = ServiceLocator.Current.GetInstance <IContentVersionRepository>();

            var language = languageResolver.GetPreferredCulture().Name;

            var contentVersions = contentVersionRepository.List(contentAreaItem.ContentLink.ToReferenceWithoutVersion(), language).ToList();

            if (contentVersions.Count < 2)
            {
                return(_defaultContentAreaLoader.Get(contentAreaItem));
            }
            var version = contentVersions.Where(x => x.Saved < maxContentDate).OrderByDescending(x => x.Saved).FirstOrDefault();

            var contentLoader = ServiceLocator.Current.GetInstance <IContentLoader>();

            if (version == null)
            {
                var oldestVersion = contentVersions.OrderBy(x => x.Saved).First();
                if (maxContentDate.Value <= oldestVersion.Saved)
                {
                    var oldestContent = contentLoader.Get <IContent>(oldestVersion.ContentLink);
                    contentAreaItem.ContentLink = oldestVersion.ContentLink;
                    return(oldestContent);
                }
                var newestVersion = contentVersions.OrderByDescending(x => x.Saved).First();
                if (maxContentDate.Value <= newestVersion.Saved)
                {
                    var newestContent = contentLoader.Get <IContent>(newestVersion.ContentLink);
                    contentAreaItem.ContentLink = newestVersion.ContentLink;
                    return(newestContent);
                }

                return(_defaultContentAreaLoader.Get(contentAreaItem));
            }

            var content = contentLoader.Get <IContent>(version.ContentLink);

            contentAreaItem.ContentLink = version.ContentLink;
            return(content);
        }
        public IContent Get(ContentAreaItem contentAreaItem)
        {
            if (!ExternalReview.IsInExternalReviewContext)
            {
                return(_defaultContentAreaLoader.Get(contentAreaItem));
            }

            ContentReference referenceToLoad;

            if (ExternalReview.ProjectId.HasValue)
            {
                // load version from project
                referenceToLoad = _projectContentResolver.GetProjectReference(contentAreaItem.ContentLink,
                                                                              ExternalReview.ProjectId.Value);
            }
            else
            {
                // load common draft instead of published version
                var loadCommonDraft = _contentVersionRepository.LoadCommonDraft(contentAreaItem.ContentLink,
                                                                                _languageResolver.GetPreferredCulture().Name);
                if (loadCommonDraft == null)
                {
                    // fallback to default implementation if there is no common draft in a given language
                    return(_defaultContentAreaLoader.Get(contentAreaItem));
                }
                referenceToLoad = loadCommonDraft.ContentLink;
            }

            if (referenceToLoad != null)
            {
                var content = _contentLoader.Get <IContent>(referenceToLoad);
                if (HasExpired(content as IVersionable))
                {
                    return(null);
                }

                if (content.IsPublished())
                {
                    // for published version return the original method result
                    return(_defaultContentAreaLoader.Get(contentAreaItem));
                }

                if (!contentAreaItem.IsReadOnly)
                {
                    contentAreaItem.ContentLink = referenceToLoad;
                }

                return(content);
            }

            return(_defaultContentAreaLoader.Get(contentAreaItem));
        }
Ejemplo n.º 6
0
 protected override void RenderContentAreaItem(HtmlHelper htmlHelper, ContentAreaItem contentAreaItem, string templateTag, string htmlTag,
                                               string cssClass)
 {
     _renderingContext.BeginRenderingItem(contentAreaItem, _contentAreaLoader.Get(contentAreaItem), _contentAreaLoader.LoadDisplayOption(contentAreaItem));
     base.RenderContentAreaItem(htmlHelper, contentAreaItem, templateTag, htmlTag, cssClass);
     _renderingContext.FinishRenderingItem();
 }
        protected override void RenderContentAreaItem(
            HtmlHelper htmlHelper,
            ContentAreaItem contentAreaItem,
            string templateTag,
            string htmlTag,
            string cssClass)
        {
            var renderSettings = new Dictionary <string, object>
            {
                ["childrencustomtagname"] = htmlTag,
                ["childrencssclass"]      = cssClass,
                ["tag"] = templateTag
            };

            renderSettings = contentAreaItem.RenderSettings.Concat(
                from r in renderSettings
                where !contentAreaItem.RenderSettings.ContainsKey(r.Key)
                select r).ToDictionary(r => r.Key, r => r.Value);

            htmlHelper.ViewBag.RenderSettings = renderSettings;
            var content = _contentAreaLoader.Get(contentAreaItem);

            if (content == null)
            {
                return;
            }

            bool isInEditMode = IsInEditMode(htmlHelper);

            using (new ContentAreaContext(htmlHelper.ViewContext.RequestContext, content.ContentLink))
            {
                var templateModel = ResolveTemplate(htmlHelper, content, templateTag);
                if (templateModel != null || isInEditMode)
                {
                    bool renderWrappingElement = ShouldRenderWrappingElementForContentAreaItem(htmlHelper);

                    // The code for this method has been c/p from EPiServer.Web.Mvc.Html.ContentAreaRenderer.
                    // The only difference is this if/else block.
                    if (isInEditMode || renderWrappingElement)
                    {
                        var tagBuilder = new TagBuilder(htmlTag);
                        AddNonEmptyCssClass(tagBuilder, cssClass);
                        tagBuilder.MergeAttributes(_attributeAssembler.GetAttributes(
                                                       contentAreaItem,
                                                       isInEditMode,
                                                       templateModel != null));
                        BeforeRenderContentAreaItemStartTag(tagBuilder, contentAreaItem);
                        htmlHelper.ViewContext.Writer.Write(tagBuilder.ToString(TagRenderMode.StartTag));
                        htmlHelper.RenderContentData(content, true, templateModel, _contentRenderer);
                        htmlHelper.ViewContext.Writer.Write(tagBuilder.ToString(TagRenderMode.EndTag));
                    }
                    else
                    {
                        // This is the extra code: don't render wrapping elements in view mode
                        htmlHelper.RenderContentData(content, true, templateModel, _contentRenderer);
                    }
                }
            }
        }
        public IContent Get(ContentAreaItem contentAreaItem)
        {
            if (!ExternalReview.IsInExternalReviewContext)
            {
                return(_defaultContentAreaLoader.Get(contentAreaItem));
            }

            ContentReference referenceToLoad;

            if (ExternalReview.ProjectId.HasValue)
            {
                // load version from project
                referenceToLoad = _projectContentResolver.GetProjectReference(contentAreaItem.ContentLink,
                                                                              ExternalReview.ProjectId.Value);
            }
            else
            {
                // load common draft instead of published version
                referenceToLoad = _contentVersionRepository.LoadCommonDraft(contentAreaItem.ContentLink,
                                                                            _languageResolver.GetPreferredCulture().Name).ContentLink;
            }

            if (referenceToLoad != null)
            {
                var content = _contentLoader.Get <IContent>(referenceToLoad);
                if (content.IsPublished())
                {
                    // for published version return the original method result
                    var defaultContent = _defaultContentAreaLoader.Get(contentAreaItem);
                    return(defaultContent);
                }

                contentAreaItem.ContentLink = referenceToLoad;

                return(content);
            }

            return(_defaultContentAreaLoader.Get(contentAreaItem));
        }