コード例 #1
0
 public override void Process(GetPageRenderingArgs args)
 {
     AssetRepository.Current.AddScriptFile("/Scripts/Commerce/knockout-2.3.0.js", ScriptLocation.Head, true);
     AssetRepository.Current.AddScriptFile("/Scripts/Commerce/knockout.validation-2.0.0.js", ScriptLocation.Head, true);
     AssetRepository.Current.AddScriptFile("/Scripts/Commerce/debug-knockout.js", ScriptLocation.Head, true);
     AssetRepository.Current.AddScriptFile("/Scripts/Commerce/ajax-helpers.js", ScriptLocation.Head, true);
 }
コード例 #2
0
        public override void Process(GetPageRenderingArgs args)
        {
            this.AddRenderingAssets(args.PageContext.PageDefinition.Renderings);

            var bundleName = ReactSettingsProvider.Current.BundleName;

            if (string.IsNullOrWhiteSpace(bundleName))
            {
                bundleName = "~/bundles/react";
            }

            var bundle = new BabelBundle(bundleName);

            foreach (var jsxFile in JsxRepository.Current.Items)
            {
                bundle.Include(jsxFile);

                if (!ReactSiteConfiguration.Configuration.Scripts.Any(s => s.Equals(jsxFile)))
                {
                    ReactSiteConfiguration.Configuration.AddScript(jsxFile);
                }
            }

            BundleTable.Bundles.Add(bundle);
        }
コード例 #3
0
 public override void Process(GetPageRenderingArgs args)
 {
     foreach (Asset asset in SiteAssets)
     {
         AssetRepository.Current.Add(asset, true);
     }
 }
コード例 #4
0
        public override void Process(GetPageRenderingArgs args)
        {
            // Safety check - if the config is set to webpack, don't run this pipeline or it will fail.
            if (ReactSettingsProvider.Current.BundleType == Settings.BundleTypes.Webpack)
            {
                return;
            }

            AddRenderingAssets(args.PageContext.PageDefinition.Renderings);

            // Create the bundle for the render
            var bundle = new BabelBundle(ReactSettingsProvider.Current.BundleName);

            foreach (var jsxFile in JsxRepository.Current.Items)
            {
                bundle.Include(jsxFile);

                if (!ReactSiteConfiguration.Configuration.Scripts.Any(script => script.Equals(jsxFile)))
                {
                    ReactSiteConfiguration.Configuration.AddScript(jsxFile);
                }
            }

            BundleTable.Bundles.Add(bundle);
        }
コード例 #5
0
 public override void Process(GetPageRenderingArgs args)
 {
     if (Settings.CheckSCBEnabledSite())
     {
         scripts = (!string.IsNullOrEmpty(Settings.GetSitecoreSettings("scb_script_assets"))) ? Settings.GetSitecoreSettings("scb_script_assets").Split(',') : null;
         System.Web.HttpContext.Current.Response.Filter = new ScriptStream(System.Web.HttpContext.Current.Response.Filter, this.scripts);
     }
 }
コード例 #6
0
ファイル: AddAssets.cs プロジェクト: alinulms/Habitat
    public override void Process(GetPageRenderingArgs args)
    {
      this.AddDefaultAssetsFromConfiguration();

      this.AddPageAssets(PageContext.Current.Item);

      this.AddRenderingAssets(args.PageContext.PageDefinition.Renderings);
    }
コード例 #7
0
        public override void Process(GetPageRenderingArgs args)
        {
            this.AddDefaultAssetsFromConfiguration();

            this.AddPageAssets(PageContext.Current.Item);

            this.AddRenderingAssets(args.PageContext.PageDefinition.Renderings);
        }
コード例 #8
0
        public override void Process(GetPageRenderingArgs args)
        {
            var item     = args.PageContext.Item;
            var ancestor = item.DescendsFrom(RenderingAssets.TemplateId)
                                ? item
                                : item.Axes.GetAncestors().LastOrDefault(i => i.DescendsFrom(RenderingAssets.TemplateId));

            AddAsset(ancestor);
        }
コード例 #9
0
 public override void Process(GetPageRenderingArgs args)
 {
     if (Sitecore.Context.Device.ID == _pdfRenderingId &&
         !(Sitecore.Context.PageMode.IsPreview || Sitecore.Context.PageMode.IsExperienceEditor))
     {
         Trace.WriteLine("Creating PDF rendering...");
         args.Result = new PdfRendering(args.Result);
     }
 }
        public override void Process(GetPageRenderingArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            if (args.PageContext == null ||
                args.PageContext.RequestContext == null ||
                args.PageContext.RequestContext.HttpContext == null ||
                args.PageContext.RequestContext.HttpContext.Response == null)
            {
                return;
            }

            SetCacheHeaders(args.PageContext.RequestContext.HttpContext.Response);
            if (Context.Item != null)
            {
                SetUpdateHeaders(Context.Item, args.PageContext.RequestContext.HttpContext.Response);
            }
        }
コード例 #11
0
ファイル: AddJsxFIles.cs プロジェクト: kkurys/EasyReact
        public override void Process(GetPageRenderingArgs args)
        {
            this.AddRenderingAssets(args.PageContext.PageDefinition.Renderings);

            // Create the bundle for the render
            var bundle = new BabelBundle("~/bundles/react");

            foreach (var jsxFile in JsxRepository.Current.Items)
            {
                bundle.Include(jsxFile);

                if (!ReactSiteConfiguration.Configuration.Scripts.Any(s => s.Equals(jsxFile)))
                {
                    ReactSiteConfiguration.Configuration.AddScript(jsxFile);
                }
            }

            BundleTable.Bundles.Add(bundle);
        }
		/// <summary>
		/// Applies the rendering specific references to Cassette bundles.
		/// </summary>
		/// <param name="args">The args.</param>
		protected void ApplyRenderingSpecificReferences(GetPageRenderingArgs args)
		{
			foreach (Rendering rendering in args.PageContext.PageDefinition.Renderings)
			{
				switch (rendering.RenderingItem.ID.ToString())
				{
					/* Example of adding Bundle references based on the current item having a specific reference
					 * ItemReference is just a static class to reference ID's of specific items in Sitecore.
					 * 
					case ItemReference.SliderPanelRendering:
						Bundles.Reference("js/vendor/jquery.flexslider.js", "footer");
						Bundles.AddInlineScript("$(document).ready(function() { $('.home-slider').flexslider({ pauseOnHover: true, slideshow: false }); });", "footer");
						break;
					*/
					default:
						break;
				}
			}
		}
 /// <summary>
 /// Applies the rendering specific references to Cassette bundles.
 /// </summary>
 /// <param name="args">The args.</param>
 protected void ApplyRenderingSpecificReferences(GetPageRenderingArgs args)
 {
     foreach (Rendering rendering in args.PageContext.PageDefinition.Renderings)
     {
         switch (rendering.RenderingItem.ID.ToString())
         {
         /* Example of adding Bundle references based on the current item having a specific reference
          * ItemReference is just a static class to reference ID's of specific items in Sitecore.
          *
          * case ItemReference.SliderPanelRendering:
          *      Bundles.Reference("js/vendor/jquery.flexslider.js", "footer");
          *      Bundles.AddInlineScript("$(document).ready(function() { $('.home-slider').flexslider({ pauseOnHover: true, slideshow: false }); });", "footer");
          *      break;
          */
         default:
             break;
         }
     }
 }
コード例 #14
0
        public override void Process(GetPageRenderingArgs args)
        {
            // Loop through all the renderings which are cacheable and might not have had their code executed
            foreach (var rendering in args.PageContext.PageDefinition.Renderings)
            {
                // Only run in "normal" page mode, otherwise we assume renderings are always executed.
                if (Sitecore.Context.PageMode.IsNormal && rendering.Caching.Cacheable)
                {
                    MyContext.AssetRequirementService.AddFromRenderingCache(rendering.RenderingItem.ID);
                }

                var renderingItem = rendering.RenderingItem.InnerItem;

                var javaScriptAssets = renderingItem["JavaScript assets"];
                foreach (var javaScriptAsset in javaScriptAssets.Split(';', ',', '\n'))
                {
                    MyContext.AssetRequirementService.AddJavaScriptFile(javaScriptAsset, true);
                }

                var javaScriptInline = renderingItem["JavaScript inline"];
                if (!string.IsNullOrEmpty(javaScriptInline))
                {
                    MyContext.AssetRequirementService.AddJavaScriptInline(javaScriptInline, renderingItem.ID.ToString(), true);
                }

                var cssAssets = renderingItem["Css assets"];
                foreach (var cssAsset in cssAssets.Split(';', ',', '\n'))
                {
                    MyContext.AssetRequirementService.AddCssFile(cssAsset, true);
                }

                var cssInline = renderingItem["Css inline"];
                if (!string.IsNullOrEmpty(cssInline))
                {
                    MyContext.AssetRequirementService.AddCssInline(cssInline, renderingItem.ID.ToString(), true);
                }
            }
        }
コード例 #15
0
        public override void Process(GetPageRenderingArgs args)
        {
            // Loop through all the renderings which are cacheable and might not have had their code executed
            foreach (var rendering in args.PageContext.PageDefinition.Renderings)
            {
                // Only run in "normal" page mode, otherwise we assume renderings are always executed.
                if (Sitecore.Context.PageMode.IsNormal && rendering.Caching.Cacheable)
                {
                    MyContext.AssetRequirementService.AddFromRenderingCache(rendering.RenderingItem.ID);
                }

                var renderingItem = rendering.RenderingItem.InnerItem;

                var javaScriptAssets = renderingItem["JavaScript assets"];
                foreach (var javaScriptAsset in javaScriptAssets.Split(';', ',', '\n'))
                {
                    MyContext.AssetRequirementService.AddJavaScriptFile(javaScriptAsset, true);
                }

                var javaScriptInline = renderingItem["JavaScript inline"];
                if (!string.IsNullOrEmpty(javaScriptInline))
                {
                    MyContext.AssetRequirementService.AddJavaScriptInline(javaScriptInline, renderingItem.ID.ToString(), true);
                }

                var cssAssets = renderingItem["Css assets"];
                foreach (var cssAsset in cssAssets.Split(';', ',', '\n'))
                {
                    MyContext.AssetRequirementService.AddCssFile(cssAsset, true);
                }

                var cssInline = renderingItem["Css inline"];
                if (!string.IsNullOrEmpty(cssInline))
                {
                    MyContext.AssetRequirementService.AddCssInline(cssInline, renderingItem.ID.ToString(), true);
                }
            }
        }
		public override void Process(GetPageRenderingArgs args)
		{
			ApplyDefaultReferences();
			ApplyRenderingSpecificReferences(args);
		}
 public override void Process(GetPageRenderingArgs args)
 {
     ApplyDefaultReferences();
     ApplyRenderingSpecificReferences(args);
 }
コード例 #18
0
 public override void Process(GetPageRenderingArgs args) => AddAssets(args.PageContext.PageDefinition.Renderings);
コード例 #19
0
ファイル: ItemRenderer.cs プロジェクト: Giardinor2i/Habitat
        /// <summary>
        /// Renders an item with a layout defined to a string for MVC
        /// </summary>
        /// <returns>HTML of item</returns>
        public virtual void Render(TextWriter writer)
        {
            var originalDisplayMode = Context.Site.DisplayMode;

            // keep a copy of the renderings we start with.
            // running the renderPlaceholder pipeline (which runs renderRendering) will overwrite these
            // and we need to set them back how they were when we're done rendering the xBlock
            var originalRenderingDefinitionContext = RenderingContext.CurrentOrNull?.PageContext?.PageDefinition;

            try
            {
                // prevents editing the snippet in context, so you cannot mistakenly change something shared by mistake
                if (Context.PageMode.IsExperienceEditorEditing)
                {
                    Context.Site.SetDisplayMode(DisplayMode.Preview, DisplayModeDuration.Temporary);
                }

                var pageDef = new PageDefinition
                {
                    Renderings = new List <Rendering>()
                };

                //Extracts the item's layout XML, then parses all of the renderings out of it.
                pageDef.Renderings.AddRange(GetRenderings(GetLayoutFromItem()));

                // Uncovers the main layout rendering
                var pageRenderingArgs = new GetPageRenderingArgs(pageDef);
                PipelineService.Get().RunPipeline("mvc.getPageRendering", pageRenderingArgs);

                //Renders all placeholders for the layout rendering, which would be the entire page
                var renderPlaceholderArgs = new RenderPlaceholderArgs(PerformItemRendering.ItemRenderingKey, writer, pageRenderingArgs.Result)
                {
                    PageContext = new PageContext
                    {
                        PageDefinition = pageDef
                    }
                };

                using (PageRenderItemDefinitionContext.Enter(new PageRenderItemDefinitionContext(pageDef, Item, originalDisplayMode)))
                {
                    PipelineService.Get().RunPipeline("mvc.renderPlaceholder", renderPlaceholderArgs);
                }
            }
            catch (Exception e)
            {
                Log.Error("There was a problem rendering an item to string", e, this);
                if (originalDisplayMode == DisplayMode.Edit || originalDisplayMode == DisplayMode.Preview)
                {
                    writer.Write($"<p class=\"edit-only\">Error occurred while rendering {Item.Paths.FullPath}: {e.Message}<br>For error details, <a href=\"{LinkManager.GetItemUrl(Item)}\" onclick=\"window.open(this.href); return false;\">visit the target page</a></p>");
                }
            }
            finally
            {
                // replace the renderings in the current context with the ones that existed before we ran our sideline renderPlaceholder
                // because they have been overwritten with the xBlock's renderings at this point
                if (originalRenderingDefinitionContext != null)
                {
                    RenderingContext.CurrentOrNull.PageContext.PageDefinition = originalRenderingDefinitionContext;
                }

                Context.Site.SetDisplayMode(originalDisplayMode, DisplayModeDuration.Temporary);
            }
        }
コード例 #20
0
 public override void Process(GetPageRenderingArgs args)
 {
     AssetRepository.Current.Clear();
 }
コード例 #21
0
 public override void Process(GetPageRenderingArgs args)
 {
     this.AddSiteAssetsFromConfiguration();
 }
コード例 #22
0
 public override void Process(GetPageRenderingArgs args)
 {
     this.AddAssets();
 }
コード例 #23
0
 public override void Process(GetPageRenderingArgs args)
 {
     this.AddAssets(PageContext.Current.Item);
 }