コード例 #1
0
        public void OnDisplaying(ShapeDisplayingContext context)
        {
            // Check to see if the markup for this shape is already in the cache, and if so, there is no need to render it! :)
            // We can prevent the render by setting context.ChildContent to anything other than null (the default display manager checks this property before calling render).
            // In our case, we want to set this to the placeholder value, so that it can be replaced with the cached markup later on in the request pipeline.

            if (AdminFilter.IsApplied(mHttpContextAccessor.Current().Request.RequestContext))
            {
                return;
            }

            var contentItem = (IContent)context.Shape.ContentItem;

            var itemLevelTokenizationShouldBeBypassed = ItemLevelTokenizationShouldBeBypassed(context);
            var markupMustNotBeTokenized = !mItemLevelCacheService.MarkupShouldBeTokenized(contentItem, context.ShapeMetadata.DisplayType);

            if (itemLevelTokenizationShouldBeBypassed || markupMustNotBeTokenized)
            {
                return;
            }

            var placeholderText = mItemLevelCacheService.GetPlaceholderText(contentItem, context.ShapeMetadata.DisplayType);

            context.ShapeMetadata.Wrappers = new List <string>(); // TODO: add in ability to toggle debug info wrappers?
            context.ChildContent           = new HtmlString(WrapPlaceholderText(placeholderText));
        }
コード例 #2
0
        public override void Displaying(ShapeDisplayingContext context)
        {
            context.ShapeMetadata.OnDisplaying(displayedContext => {
                if (_acceptAlternates.Value == null || !_acceptAlternates.Value.Any())
                {
                    return;
                }

                // prevent applying alternate again, c.f. http://orchard.codeplex.com/workitem/18298
                if (displayedContext.ShapeMetadata.Alternates.Any(x => x.Contains("__api__")))
                {
                    return;
                }

                // appends alternates to current ones
                displayedContext.ShapeMetadata.Alternates = displayedContext.ShapeMetadata.Alternates.SelectMany(
                    alternate => new[] { alternate }.Union(_acceptAlternates.Value.Select(a => alternate + "__api__" + a))
                    ).ToList();

                // appends [ShapeType]__api__[alternate] alternates
                displayedContext.ShapeMetadata.Alternates = _acceptAlternates.Value.Select(a => displayedContext.ShapeMetadata.Type + "__api__" + a)
                                                            .Union(displayedContext.ShapeMetadata.Alternates)
                                                            .ToList();
            });
        }
        public override void Displaying(ShapeDisplayingContext context)
        {
            context.ShapeMetadata.OnDisplaying(displayedContext => {
                var alternates = displayedContext.ShapeMetadata.Alternates;
                switch (displayedContext.ShapeMetadata.Type)
                {
                case "Parts_MenuWidget":
                    var zoneName = displayedContext.Shape.ContentItem.WidgetPart.Zone;
                    displayedContext.Shape.Menu.Zone = zoneName;
                    break;

                case "Menu":
                    AddAlternates(alternates, displayedContext.Shape.Zone, "Menu");
                    break;

                case "MenuItem":
                    AddAlternates(alternates, displayedContext.Shape.Parent.Zone, "MenuItem");
                    break;

                case "MenuItemLink":
                    AddAlternates(alternates, displayedContext.Shape.Parent.Zone, "MenuItemLink");
                    break;
                }
            });
        }
コード例 #4
0
        public override void Displaying(ShapeDisplayingContext context)
        {
            context.ShapeMetadata.OnDisplaying(displayedContext => {
                if (_urlAlternates.Value == null || !_urlAlternates.Value.Any())
                {
                    return;
                }

                // prevent applying alternate again, c.f. https://github.com/OrchardCMS/Orchard/issues/2125
                if (displayedContext.ShapeMetadata.Alternates.Any(x => x.Contains("__url__")))
                {
                    return;
                }

                // appends Url alternates to current ones
                displayedContext.ShapeMetadata.Alternates = displayedContext.ShapeMetadata.Alternates.SelectMany(
                    alternate => new [] { alternate }.Union(_urlAlternates.Value.Select(a => alternate + "__url__" + a))
                    ).ToList();

                // appends [ShapeType]__url__[Url] alternates
                displayedContext.ShapeMetadata.Alternates = _urlAlternates.Value.Select(url => displayedContext.ShapeMetadata.Type + "__url__" + url)
                                                            .Union(displayedContext.ShapeMetadata.Alternates)
                                                            .ToList();
            });
        }
コード例 #5
0
 public void Displaying(ShapeDisplayingContext context)
 {
     if (_displayBindingTypes.Any())
     {
         context.ShapeMetadata.BindingType = _displayBindingTypes.Peek();
     }
 }
コード例 #6
0
        private void SetAlternateInHierarchy(string alternateName, ShapeDisplayingContext context, string specializedName = null)
        {
            var progressiveHierarchyString = alternateName;
            var found = false;

            if (!context.Shape.Metadata.Alternates.Contains(alternateName))
            {
                while (progressiveHierarchyString.Contains("__"))
                {
                    progressiveHierarchyString = progressiveHierarchyString.Substring(0, progressiveHierarchyString.LastIndexOf("__"));
                    if (context.Shape.Metadata.Alternates.Contains(progressiveHierarchyString))
                    {
                        context.ShapeMetadata.Alternates.Insert(context.Shape.Metadata.Alternates.IndexOf(progressiveHierarchyString) + 1, alternateName);
                        found = true;
                        break;
                    }
                    else if (context.Shape.Metadata.Alternates.Contains(progressiveHierarchyString + "__" + specializedName))   // if it's a field, the type of the field should be placed before the field name alternate
                    {
                        context.ShapeMetadata.Alternates.Insert(context.Shape.Metadata.Alternates.IndexOf(progressiveHierarchyString + "__" + specializedName), alternateName);
                        found = true;
                        break;
                    }
                }
                if (!found)
                {
                    context.ShapeMetadata.Alternates.Add(alternateName);
                }
            }
        }
コード例 #7
0
        public override void Displaying(ShapeDisplayingContext context)
        {
            context.ShapeMetadata.OnDisplaying(displayedContext => {
                if (!IsActivable())
                {
                    return;
                }

                if (context.ShapeMetadata.Type != "EditorTemplate" &&
                    context.ShapeMetadata.Type != "Zone")
                {
                    return;
                }

                ContentItem contentItem = context.Shape.ContentItem;

                // if not, check for ContentPart
                if (contentItem == null)
                {
                    ContentPart contentPart = context.Shape.ContentPart;
                    if (contentPart != null)
                    {
                        contentItem = contentPart.ContentItem;
                    }
                }

                var className = "content-" + _workContext.GetTextDirection(contentItem);

                if (!_workContext.Layout.Content.Classes.Contains(className))
                {
                    _workContext.Layout.Content.Classes.Add(className);
                }
            });
        }
コード例 #8
0
        public void Displaying(ShapeDisplayingContext context)
        {
            if (context.ShapeMetadata.Type.Equals("Zone"))
            {
                return;
            }

            this.profiler.StepStart(StepKeys.ShapeProfiling, context.ShapeMetadata.Type + " - Display");
        }
コード例 #9
0
        public void Displaying(ShapeDisplayingContext context)
        {
            if (context.ShapeMetadata.Type != "LogOn")
            {
                return;
            }

            context.Shape.Title = T("Log in here!").Text;
        }
コード例 #10
0
 private void AddCustomAlternates(
     ShapeDisplayingContext context, string custom,
     Func <string, bool> shouldVary,
     bool considerZone = true)
 {
     if (!string.IsNullOrWhiteSpace(custom))
     {
         // prevent adding these alternates again
         if (!context.ShapeMetadata.Alternates.Any(x => x.Contains(custom)))
         {
             // delegate that will add the alternates to the list of usable ones
             Action <string> AddAlternate = (s) => AddAlternateName(context.ShapeMetadata.Alternates, s);
             // delegate to invoke adding the alternates
             Action <string> AddPersonalized = (s) => AddAlternate(s);
             // delegate that "multiplies" alternates by combining them with the identifier
             Func <string, string[]> AlternateVariations = (baseName) => {
                 // some alternates should not be varied further
                 if (!shouldVary(baseName))
                 {
                     return(new string[] { baseName });
                 }
                 return(new string[] {
                     baseName,
                     baseName + custom
                 });
             };
             // Add alternates for the specific zone
             if (considerZone && !string.IsNullOrWhiteSpace(lastZone))
             {
                 AddPersonalized = (s) => {
                     AddAlternate(s);
                     AddAlternate(s + "__" + lastZone);
                 };
                 AlternateVariations = (baseName) => {
                     // some alternates should not be varied further
                     if (!shouldVary(baseName))
                     {
                         return(new string[] { baseName });
                     }
                     return(new string[] {
                         baseName,
                         baseName + custom,
                         baseName + custom + "__" + lastZone
                     });
                 };
             }
             // appends IdentityPart alternates to current ones
             context.ShapeMetadata.Alternates = context.ShapeMetadata.Alternates
                                                .SelectMany(
                 alternate => AlternateVariations(alternate)
                 ).ToList();
             // appends [ShapeType]__[identifier] alternates
             // appends [ShapeType]__[identifier]__[ZoneName] alternates
             AddPersonalized(context.ShapeMetadata.Type + custom);
         }
     }
 }
コード例 #11
0
        public override void Displaying(ShapeDisplayingContext context)
        {
            if (context.ShapeMetadata.Type != "Weather")
            {
                return;
            }

            context.Shape.WeatherInfo = _weatherService.GetTodaysWeather();
        }
コード例 #12
0
        public void Displaying(ShapeDisplayingContext context)
        {
            if (context.ShapeMetadata.Type.Equals("Zone"))
            {
                return;
            }

            this.profiler.StepStart(StepKeys.ShapeProfiling, context.ShapeMetadata.Type + " - Display");
        }
コード例 #13
0
        private static void AddMenuAlternates(ShapeDisplayingContext displayedContext)
        {
            var    alternates = displayedContext.ShapeMetadata.Alternates;
            var    menu       = displayedContext.Shape;
            string menuName   = menu.MenuName;

            AddAlternates(alternates, "SimpleMenu");
            AddAlternates(alternates, "SimpleMenu__" + EncodeAlternateElement(menuName));
        }
コード例 #14
0
        public override void Displaying(ShapeDisplayingContext context)
        {
            context.ShapeMetadata
                .OnDisplaying(displayedContext => {
                    ContentItem contentItem = displayedContext.Shape.ContentItem;
                    ContentPart contentPart = displayedContext.Shape.ContentPart is ContentPart
                        ? displayedContext.Shape.ContentPart : null;

                    if (contentItem != null && contentPart != null) {
                        var displayType = displayedContext.ShapeMetadata.DisplayType;
                        var shapeName = displayedContext.ShapeMetadata.Type;

                        var andDisplayType = !string.IsNullOrWhiteSpace(displayType)
                            && !displayType.Equals("Detail");

                        var newShape = "";
                        var typeShape = "";

                        if (contentPart is TermPart) {
                            if (contentItem.Is<ProjectionPart>()) {
                                // [ShapeName]-WithProjection.cshtml
                                // [ShapeName]-[ContentTypeName]-WithProjection.cshtml
                                newShape = shapeName + "__WithProjection";
                                typeShape = shapeName + "__"
                                    + contentItem.ContentType + "__WithProjection";

                            }
                        } else if (contentPart is ProjectionPart) {
                            if (contentItem.Is<TermPart>()) {
                                // [ShapeName]-WithTerm.cshtml
                                // [ShapeName]-[ContentTypeName]-WithTerm.cshtml
                                newShape = shapeName + "__WithTerm";
                                typeShape = shapeName + "__"
                                    + contentItem.ContentType + "__WithTerm";
                            }
                        }

                        if (!string.IsNullOrWhiteSpace(newShape)) {
                            if (!displayedContext.ShapeMetadata.Alternates
                                    .Contains(newShape)) {
                                displayedContext.ShapeMetadata.Alternates
                                    .Add(newShape);
                                displayedContext.ShapeMetadata.Alternates
                                    .Add(typeShape);
                                if (andDisplayType) {
                                    displayedContext.ShapeMetadata.Alternates
                                        .Add(newShape + "__" + displayType);
                                    displayedContext.ShapeMetadata.Alternates
                                        .Add(typeShape + "__" + displayType);
                                }
                            }
                        }
                    }

                });
        }
コード例 #15
0
        public override void Displaying(ShapeDisplayingContext context)
        {
            var routeValues = new RouteValueDictionary(mWorkContextAccessor.GetContext().HttpContext.Request.RequestContext.RouteData.Values);
            var list        = new List <string> {
                TakeValue(routeValues, "area"), TakeValue(routeValues, "controller"), TakeValue(routeValues, "action")
            };

            list.AddRange(routeValues.OrderBy(x => x.Key).Select(x => (string)x.Value));
            AddAlternates(context.ShapeMetadata, list);
        }
コード例 #16
0
        public void Displaying(ShapeDisplayingContext context)
        {
            var processors = BuildShapeProcessors();
            Func <dynamic, IHtmlString> processor;

            if (processors.TryGetValue(context.ShapeMetadata.Type, out processor))
            {
                context.ChildContent = processor(context.Shape);
            }
        }
コード例 #17
0
 public override void Displaying(ShapeDisplayingContext context)
 {
     if (String.CompareOrdinal(context.ShapeMetadata.Type, "Body_Editor") != 0)
     {
         return;
     }
     if (!String.Equals(context.Shape.EditorFlavor, "ueditor", StringComparison.InvariantCultureIgnoreCase))
     {
     }
 }
コード例 #18
0
        protected override void OnAlterShape(ShapeDisplayingContext context)
        {
            var eventData   = (IDictionary <string, object>)context.Shape.EventData;
            var oldSettings = _settingsFormatter.Map(XmlHelper.Parse((string)eventData["OldSettings"]));
            var newSettings = _settingsFormatter.Map(XmlHelper.Parse((string)eventData["NewSettings"]));
            var diff        = oldSettings.GetDiff(newSettings);

            context.Shape.OldSettings = oldSettings;
            context.Shape.NewSettings = newSettings;
            context.Shape.Diff        = diff;
        }
コード例 #19
0
        protected override void OnAlterShape(ShapeDisplayingContext context)
        {
            var eventData   = (IDictionary <string, object>)context.Shape.EventData;
            var oldSettings = AuditTrailManagerExtensions.DeserializeEventData((string)eventData["OldSettings"], Logger);
            var newSettings = AuditTrailManagerExtensions.DeserializeEventData((string)eventData["NewSettings"], Logger);
            var diff        = GetDiffQuery(oldSettings, newSettings).ToArray();

            context.Shape.OldSettings = oldSettings;
            context.Shape.NewSettings = newSettings;
            context.Shape.Diff        = diff;
        }
コード例 #20
0
        private static void Ajaxify(ShapeDisplayingContext context, string ajaxifiedShapeType)
        {
            var ajaxifyPart = ((IContent)context.Shape.ContentItem).As <AjaxifyPart>();

            if (ajaxifyPart == null || !ajaxifyPart.Ajaxify || context.Shape.Ajaxified == true)
            {
                return;
            }

            context.ShapeMetadata.Type = ajaxifiedShapeType;
        }
コード例 #21
0
        private static void AddMenuItemAlternates(ShapeDisplayingContext displayedContext)
        {
            var alternates = displayedContext.ShapeMetadata.Alternates;
            var menuItem   = displayedContext.Shape;
            var menu       = menuItem.Menu;
            int level      = menuItem.Level;

            AddAlternates(alternates, "SimpleMenuItem");
            AddAlternates(alternates, "SimpleMenuItem__" + EncodeAlternateElement(menu.MenuName));
            AddAlternates(alternates, "SimpleMenuItem__" + EncodeAlternateElement(menu.MenuName) + "__level__" + level);
        }
コード例 #22
0
 private bool ItemLevelTokenizationShouldBeBypassed(ShapeDisplayingContext context)
 {
     try
     {
         return(context.Shape.BypassDonutTokenization);
     }
     catch (RuntimeBinderException)
     {
         return(false);
     }
 }
コード例 #23
0
ファイル: Shapes.cs プロジェクト: rajimonp/fastreporter2.0
        public void CKEditor_Config_Displaying(ShapeDisplayingContext displaying)
        {
            // Build other key/value pairs
            var context = new CKEditorConfigContext();

            foreach (var provider in _ckEditorConfigProviders.Value)
            {
                provider.PopulateConfiguration(context);
            }
            displaying.Shape.ConfigPairs = context.Config.Values;
        }
コード例 #24
0
ファイル: Shapes.cs プロジェクト: sebastienros/Orchard.Disqus
        private void AddShapeWrapper(ShapeDisplayingContext shapeDisplayingContext, string wrapperName, bool includeUniqueIndentifier = true)
        {
            var settings = _orchardServices.WorkContext.CurrentSite.As <DisqusSettingsPart>();

            shapeDisplayingContext.Shape.DisqusSettings = settings;
            shapeDisplayingContext.ShapeMetadata.Wrappers.Add(wrapperName);

            if (includeUniqueIndentifier)
            {
                shapeDisplayingContext.Shape.DisqusUniqueId = GetUniqueIdentifier(shapeDisplayingContext.Shape.ContentPart.ContentItem);
            }
        }
コード例 #25
0
 public override void Displaying(ShapeDisplayingContext context)
 {
     context.ShapeMetadata.OnDisplaying(displayedContext => {
         if (displayedContext.ShapeMetadata.Type == "Layout" && IsActivable())
         {
             var supportedCultures = _cultureManager.ListCultures().ToList();
             if (supportedCultures.Count() > 1)
             {
                 _workContext.Layout.Header.Add(Shape.AdminCultureSelector(SupportedCultures: supportedCultures));
             }
         }
     });
 }
 public override void Displaying(ShapeDisplayingContext context)
 {
     context.ShapeMetadata.OnDisplaying(displayedContext =>
     {
         if (displayedContext.ShapeMetadata.Type == "Layout" && IsActivable())
         {
             var userNameList = _contentManager.Query <UserPart, UserPartRecord>()
                                .OrderBy(userPart => userPart.UserName)
                                .List().Select(user => user.UserName).ToList();
             _workContextAccessor.GetContext().Layout.Header.Add(Shape.AdminSwitchUser(Users: userNameList));
         }
     });
 }
コード例 #27
0
        public override void Displaying(ShapeDisplayingContext context)
        {
            if (String.CompareOrdinal(context.ShapeMetadata.Type, "Body_Editor") != 0)
            {
                return;
            }

            if (!String.Equals(context.Shape.EditorFlavor, "html", StringComparison.InvariantCultureIgnoreCase))
            {
                return;
            }

            context.Shape.Language = GetTinyMceLanguageIdentifier();
        }
コード例 #28
0
        public override void Displaying(ShapeDisplayingContext context)
        {
            context.ShapeMetadata.OnDisplaying(displayedContext => {
                // appends Url alternates to current ones
                displayedContext.ShapeMetadata.Alternates = displayedContext.ShapeMetadata.Alternates.SelectMany(
                    alternate => new [] { alternate }.Union(_urlAlternates.Select(a => alternate + "__url__" + a))
                    ).ToList();

                // appends [ShapeType]__url__[Url] alternates
                displayedContext.ShapeMetadata.Alternates = _urlAlternates.Select(url => displayedContext.ShapeMetadata.Type + "__url__" + url)
                                                            .Union(displayedContext.ShapeMetadata.Alternates)
                                                            .ToList();
            });
        }
コード例 #29
0
        protected override void OnAlterShape(ShapeDisplayingContext context)
        {
            var eventData             = (IDictionary <string, object>)context.Shape.EventData;
            var previousDefinitionXml = eventData.GetXml("PreviousDefinition");
            var newDefinitionXml      = eventData.GetXml("NewDefinition");
            var diffGram = eventData.GetXml("DiffGram");

            context.Shape.NewDefinitionXml = newDefinitionXml;

            if (diffGram != null)
            {
                var diffNodes = _analyzer.Analyze(previousDefinitionXml, diffGram).ToArray();
                context.Shape.DiffNodes = diffNodes;
            }
        }
コード例 #30
0
 public override void Displaying(ShapeDisplayingContext context)
 {
     context.ShapeMetadata
     .OnDisplaying(displayedContext => {
         if (displayedContext.ShapeMetadata.Type == "Zone")
         {
             lastZone = displayedContext.Shape.ZoneName;
         }
         else if (displayedContext.Shape.ContentItem is ContentItem)
         {
             ContentItem contentItem   = displayedContext.Shape.ContentItem;
             ContentPart contentPart   = displayedContext.Shape.ContentPart is ContentPart ? displayedContext.Shape.ContentPart : null;
             ContentField contentField = displayedContext.Shape.ContentField is ContentField ? displayedContext.Shape.ContentField : null;
             var displayType           = displayedContext.ShapeMetadata.DisplayType;
             var shapeName             = displayedContext.ShapeMetadata.Type;
             var zoneName = lastZone;
             if (contentPart.Is <ProjectionPart>() && contentPart.PartDefinition.Name == "ProjectionPart")
             {
                 var suffix = "";
                 if (displayedContext.ShapeMetadata.Type == "List" && displayedContext.Shape.PagerId != null)     // è una lista ma all'interno c'è il pager
                 {
                     suffix = "__Pager";
                     if (!displayedContext.ShapeMetadata.Alternates.Contains(shapeName + "__" + contentItem.ContentType + suffix))
                     {
                         displayedContext.ShapeMetadata.Alternates.Add(shapeName + "__" + contentItem.ContentType + suffix);
                     }
                 }
                 if (contentPart.As <ProjectionPart>().Record.QueryPartRecord != null)
                 {
                     var queryName = _queryService.GetQuery(contentPart.As <ProjectionPart>().Record.QueryPartRecord.Id).Name;
                     queryName     = queryName.Normalize(System.Text.NormalizationForm.FormD).ToLower().Replace(" ", "");
                     if (!displayedContext.ShapeMetadata.Alternates.Contains(shapeName + "__" + contentItem.ContentType + suffix + "__ForQuery__" + queryName))
                     {
                         displayedContext.ShapeMetadata.Alternates.Add(shapeName + "__" + contentItem.ContentType + suffix + "__ForQuery__" + queryName);
                     }
                     if (!String.IsNullOrWhiteSpace(zoneName))
                     {
                         if (!displayedContext.ShapeMetadata.Alternates.Contains(shapeName + "__" + contentItem.ContentType + suffix + "__ForQuery__" + queryName + "__" + zoneName))
                         {
                             displayedContext.ShapeMetadata.Alternates.Add(shapeName + "__" + contentItem.ContentType + suffix + "__ForQuery__" + queryName + "__" + zoneName);
                         }
                     }
                 }
             }
         }
     });
 }
コード例 #31
0
        public void Displaying(ShapeDisplayingContext context)
        {
            if (!IsMobileDevice())
            {
                return;
            }

            var shapeMetadata = context.ShapeMetadata;

            if (shapeMetadata.Type != "HeadLinks" && shapeMetadata.Type != "Metas")
            {
                return;
            }

            var workContext     = _workContextAccessor.GetContext(_httpContextAccessor.Current());
            var resourceManager = workContext.Resolve <IResourceManager>();

            if (shapeMetadata.Type == "HeadLinks")
            {
                // <link rel="alternate" type="text/html" media="handheld" href="" />
                var handheldLink = new LinkEntry
                {
                    Type = "text/html",
                    Rel  = "alternate",
                    Href = ""
                };

                handheldLink.AddAttribute("media", "handheld");

                resourceManager.RegisterLink(handheldLink);

                // Set the transcoding protection http response headers
                workContext.HttpContext.Response.Cache.SetNoTransforms();
                workContext.HttpContext.Response.AppendHeader("Vary", "User-Agent");
            }
            else if (shapeMetadata.Type == "Metas")
            {
                resourceManager.SetMeta(new MetaEntry
                {
                    // HACK: Orchard doesn't allow metas without a name.
                    Name      = "no-transform",
                    HttpEquiv = "Cache-control",
                    Content   = "no-transform"
                });
            }
        }
コード例 #32
0
        public void OnDisplaying(ShapeDisplayingContext context)
        {
            IContent content = null;
            if (context.Shape.ContentItem != null)
            {
                content = context.Shape.ContentItem;
            }
            else if (context.Shape.ContentPart != null)
            {
                content = context.Shape.ContentPart;
            }

            var message = string.Format(
                "Shape Display: {0} ({1}) ({2})",
                context.ShapeMetadata.Type,
                context.ShapeMetadata.DisplayType,
                (string)(content != null ? content.ContentItem.ContentType : "non-content"));

            this.profiler.StepStart(StepKeys.ShapeProfiling, message, true);
        }