예제 #1
0
        public virtual ActionResult Render(ContentPanelModel model)
        {
            var viewModel = new ContentPanelViewModel
            {
                IsImportant    = model.IsImportant,
                TitleLink      = string.IsNullOrEmpty(Convert.ToString(model.TitleLink)) ? null : model.TitleLink.link,
                Title          = model.Title,
                HasTitle       = !string.IsNullOrEmpty(model.Title),
                ImageVideoSize = model.ImageVideoSize,
                Description    = model.Description,
                LinksListTitle = model.LinksListTitle
            };

            viewModel.Target = viewModel.TitleLink.HasValue() ? model.TitleLink?.target : string.Empty;

            viewModel.HasMedia                 = model.Image.HasValue;
            viewModel.PosterImageUrl           = viewModel.HasMedia ? _imageHelper.GetImageWithPreset(GetMediaUrl(model.Image.Value), UmbracoAliases.ImagePresets.Preview) : null;
            viewModel.VideoUrl                 = GetUrl(model.VideoLink);
            viewModel.ShowAsLightbox           = model.VideoType == "lightbox";
            viewModel.VideoLinkAlternativeText = model.VideoLink.altText;

            if (!string.IsNullOrEmpty(viewModel.VideoUrl))
            {
                viewModel.VideoSourceType = (VideoSourceTypes)model.VideoLink.sourceType;
                viewModel.VideoTooltip    = model.VideoLink.altText.ToString();
                viewModel.VideoSrc        = model.VideoLink.embedUrl;
                viewModel.AutoplayVideo   = "autoplay";
                viewModel.AutoplayIframe  = "?autoplay=1";
            }

            if (viewModel.PosterImageUrl.HasValue())
            {
                viewModel.VideoSrc = string.Empty;
            }

            if (viewModel.VideoSourceType == VideoSourceTypes.Vimeo || viewModel.VideoSourceType == VideoSourceTypes.Youtube)
            {
                viewModel.EmbedUrl = model.VideoLink.embedUrl + viewModel.AutoplayIframe;
            }
            else
            {
                viewModel.EmbedUrl = model.VideoLink.embedUrl;
            }

            if (model.Links != null && model.Links.Count > 0)
            {
                foreach (var link in model.Links)
                {
                    viewModel.Links.Add(new ContentPanelLinkViewModel
                    {
                        Caption = link.caption,
                        Target  = link.target,
                        Url     = GetLinkUrl(link)
                    });
                }
            }

            if (model.Files != null)
            {
                var fileIds = model.Files.ToIntCollection();
                viewModel.Files = _umbracoHelper.TypedMedia(fileIds)
                                  .Select(el => new ContentPanelFileViewModel
                {
                    Url       = el.Url,
                    Extension = el.GetMediaExtension().ToExtensionViewString(),
                    Name      = el.Name
                })
                                  .ToList();
            }

            return(View(ViewPath, viewModel));
        }
예제 #2
0
        private ContentPanelModel GetBannerFromCache(AbstractBanner banner)
        {
            if (_contentCache.ContainsKey(banner.Name))
            {
                var cachedContent = _contentCache[banner.Name];
                cachedContent.RestoreOriginalValues();
                return cachedContent;
            }

            var content = new ContentPanelModel(this);
            content.LoadContent<DependencyObject>(banner);

            if (banner.Cache)
                _contentCache[banner.Name] = content;

            return content;
        }