private static bool WidgetShouldBeSkipped(OnScreenContext onScreenContext, IAbstractWidget widget)
        {
            var widgetType      = widget.GetMetadata(OnScreenWidgetMetadataKeys.Type).ToString();
            var skipWidgetTypes = onScreenContext?.SkipWidgetTypes;

            return(skipWidgetTypes == null ? false : skipWidgetTypes.Contains(widgetType));
        }
Example #2
0
        public override bool Match(IAbstractItem item)
        {
            if (item.IsPage)
            {
                return(false);
            }

            IAbstractWidget widget = item as IAbstractWidget;

            if (widget == null)
            {
                return(false);
            }

            if (!string.Equals(widget.ZoneName, _zone))
            {
                return(false);
            }

            if ((widget.AllowedUrlPatterns == null || widget.AllowedUrlPatterns.Length == 0) &&
                (widget.DeniedUrlPatterns == null || widget.DeniedUrlPatterns.Length == 0))
            {
                return(true);
            }

            if (widget.DeniedUrlPatterns != null && widget.DeniedUrlPatterns.Any())
            {
                var deniedMatcher = new WildcardMatcher(WildcardMatchingOption.FullMatch,
                                                        widget.DeniedUrlPatterns.Select(p => p.Trim('/')));
                if (deniedMatcher.Match(_url).Any())
                {
                    return(false);
                }
            }

            if (widget.AllowedUrlPatterns != null && widget.AllowedUrlPatterns.Any())
            {
                var allowedMatcher = new WildcardMatcher(WildcardMatchingOption.FullMatch,
                                                         widget.AllowedUrlPatterns.Select(p => p.Trim('/')));
                return(allowedMatcher.Match(_url).Any());
            }

            return(true);
        }