protected override Renderer GetRenderer(global::Sitecore.Mvc.Presentation.Rendering rendering, GetRendererArgs args)
        {
            string viewPath = this.GetViewPath(rendering, args);

            if (viewPath.IsWhiteSpaceOrNull())
            {
                return((Renderer)null);
            }
            if (WebUtil.IsExternalUrl(viewPath))
            {
                if (viewPath.Contains("{0}") && args.PageContext != null && args.PageContext.RequestContext != null &&
                    args.PageContext.RequestContext.HttpContext != null &&
                    args.PageContext.RequestContext.HttpContext.Request != null)
                {
                    var pathAndQuery = args.PageContext.RequestContext.HttpContext.Request.Url.PathAndQuery;
                    if (pathAndQuery.Contains("?") && viewPath.Contains("?"))
                    {
                        viewPath = ReplaceFirst(viewPath, "?", "&");
                    }
                    viewPath = string.Format(viewPath, pathAndQuery);
                }
                return(new UrlWithCookiesRenderer()
                {
                    Url = viewPath
                });
            }
            return((Renderer) new ViewRenderer()
            {
                ViewPath = viewPath,
                Rendering = rendering
            });
        }
Ejemplo n.º 2
0
 protected virtual void AddCachingSettings(global::Sitecore.Mvc.Presentation.Rendering rendering)
 {
     rendering.Caching.VaryByData               = rendering.RenderingItem.Caching.VaryByData;
     rendering.Caching.VaryByDevice             = rendering.RenderingItem.Caching.VaryByDevice;
     rendering.Caching.VaryByLogin              = rendering.RenderingItem.Caching.VaryByLogin;
     rendering.Caching.VaryByParameters         = rendering.RenderingItem.Caching.VaryByParm;
     rendering.Caching.VaryByQueryString        = rendering.RenderingItem.Caching.VaryByQueryString;
     rendering.Caching.VaryByUser               = rendering.RenderingItem.Caching.VaryByUser;
     rendering[this.ClearOnIndexUpdateCacheKey] =
         (rendering.RenderingItem.Caching.ClearOnIndexUpdate ? "1" : string.Empty);
 }
Ejemplo n.º 3
0
        protected override string GetDataPart(global::Sitecore.Mvc.Presentation.Rendering rendering)
        {
            var baseResult = base.GetDataPart(rendering) ?? string.Empty;

            var variation = rendering["data"];

            if (variation == null)
            {
                return(baseResult);
            }

            return(baseResult + "_#data:" + variation);
        }
Ejemplo n.º 4
0
        protected override bool IsCacheable(global::Sitecore.Mvc.Presentation.Rendering rendering,
                                            RenderRenderingArgs args)
        {
            if (rendering.RenderingItem != null && rendering.RenderingItem.Caching != null)
            {
                rendering.Caching.Cacheable = rendering.RenderingItem.Caching.Cacheable;
            }
            bool flag = rendering.Caching.Cacheable && this.DoesContextAllowCaching(args);

            if (flag)
            {
                this.AddCachingSettings(rendering);
            }
            return(flag);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Gets the renderer.
        /// </summary>
        /// <param name="rendering">The rendering.</param>
        /// <param name="args">The args.</param>
        /// <returns>Sitecore.Mvc.Presentation.Renderer.</returns>
        protected override global::Sitecore.Mvc.Presentation.Renderer GetRenderer(
            global::Sitecore.Mvc.Presentation.Rendering rendering,
            GetRendererArgs args)
        {
            var renderItem = rendering.Item.Database.GetItem(new ID(rendering.RenderingItemPath));

            if (renderItem.TemplateName == "GlassDynamicRazor")
            {
                DynamicViewRenderer render = new DynamicViewRenderer();
                render.Path        = renderItem["Name"];
                render.ContextName = renderItem["ContextName"];
                render.DataSource  = rendering.DataSource;
                return(render);
            }

            return(null);
        }
Ejemplo n.º 6
0
        protected override string GenerateKey(global::Sitecore.Mvc.Presentation.Rendering rendering, RenderRenderingArgs args)
        {
            string text = rendering.Caching.CacheKey.OrIfEmpty(args.Rendering.Renderer.ValueOrDefault((Renderer renderer) => renderer.CacheKey));
            string result;

            if (StringExtensions.IsEmptyOrNull(text))
            {
                result = null;
            }
            else
            {
                string text2 = text + "_#lang:" + Language.Current.Name.ToUpper();
                RenderingCachingDefinition caching = rendering.Caching;
                if (rendering["ClearOnIndexUpdate"] == "1")
                {
                    text2 += "_#index";
                }
                if (caching.VaryByData)
                {
                    text2 += this.GetDataPart(rendering);
                }
                if (caching.VaryByDevice)
                {
                    text2 += this.GetDevicePart(rendering);
                }
                if (caching.VaryByLogin)
                {
                    text2 += this.GetLoginPart(rendering);
                }
                if (caching.VaryByUser)
                {
                    text2 += this.GetUserPart(rendering);
                }
                if (caching.VaryByParameters)
                {
                    text2 += this.GetParametersPart(rendering);
                }
                if (caching.VaryByQueryString)
                {
                    text2 += this.GetQueryStringPart(rendering);
                }
                result = text2;
            }
            return(result);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Gets the renderer.
        /// </summary>
        /// <param name="rendering">The rendering.</param>
        /// <param name="args">The args.</param>
        /// <returns>Sitecore.Mvc.Presentation.Renderer.</returns>
        protected override global::Sitecore.Mvc.Presentation.Renderer GetRenderer(
            global::Sitecore.Mvc.Presentation.Rendering rendering,
            GetRendererArgs args)
        {
            var renderItem = rendering.Item.Database.GetItem(new ID(rendering.RenderingItemPath));

            if (renderItem.TemplateName == "GlassBehindRazor")
            {
                BehindViewRenderer render = new BehindViewRenderer();
                render.Path     = renderItem["Name"];
                render.Type     = renderItem["Type"];
                render.Assembly = renderItem["assembly"];

                render.DataSource = rendering.DataSource;
                return(render);
            }

            return(null);
        }
Ejemplo n.º 8
0
        private RenderingChrome?GetRenderingChrome(global::Sitecore.Mvc.Presentation.Rendering rendering)
        {
            var result = new RenderingChrome();

            using (var sw = new StringWriter())
                using (RenderingContext.EnterContext(rendering))
                    using (PlaceholderContext.Enter(new PlaceholderContext("dummy"))) //todo: can a rendering chrome differ per placeholder?
                    {
                        var sb      = sw.GetStringBuilder();
                        var wrapper = new global::Sitecore.Mvc.ExperienceEditor.Pipelines.Response.RenderRendering.AddWrapper();
                        var args    = new RenderRenderingArgs(rendering, sw);
                        wrapper.Process(args);
                        result.Start = sb.ToString();
                        sb.Clear();
                        foreach (var disposable in args.Disposables)
                        {
                            disposable.Dispose();
                        }
                        result.End = sb.ToString();
                    }

            return(result);
        }
 /// <summary>
 /// Gets the renderer.
 /// </summary>
 /// <param name="rendering">The rendering.</param>
 /// <param name="args">The args.</param>
 /// <returns>Sitecore.Mvc.Presentation.Renderer.</returns>
 protected abstract global::Sitecore.Mvc.Presentation.Renderer GetRenderer(global::Sitecore.Mvc.Presentation.Rendering rendering, GetRendererArgs args);
Ejemplo n.º 10
0
 protected override TViewModel InitialiseViewModel(global::Sitecore.Mvc.Presentation.Rendering rendering, DataSource dataSource)
 {
     return(this.Map <TViewModel>(rendering.Item));
 }