Пример #1
0
 public override void Process(GetPageItemArgs args)
 {
     if (AbortProcessor(args))
     {
         return;
     }
     args.Result = _context.Item;
 }
Пример #2
0
 public override void Process(GetPageItemArgs args)
 {
     Assert.ArgumentNotNull(args, "args");
     if (args.Result != null)
     {
         return;
     }
     args.Result = this.ResolveItem(args);
 }
Пример #3
0
 /// <summary>
 /// Indicates whether the request should be ignored.
 /// </summary>
 /// <param name="args">The pipeline arguments.</param>
 /// <returns></returns>
 private bool IgnoreRequest(GetPageItemArgs args)
 {
     return(Context.Site == null || Context.Domain == null || Context.Item == null || Context.Database == null ||
            args.Result != null ||
            Configuration.IgnoreSites.Count != 0 && Configuration.IgnoreSites.Contains(Context.Site.Name.ToLower()) ||
            Context.Domain.Name.Equals(Constants.Sitecore.DefaultDomain, StringComparison.InvariantCultureIgnoreCase) && Context.Site.DisplayMode != DisplayMode.Edit ||
            Context.Database.Name.Equals(Constants.Sitecore.CoreDatabse, StringComparison.InvariantCultureIgnoreCase) ||
            Context.Item.IsWilcard());
 }
Пример #4
0
        protected virtual bool WildvardResolvingPossible(GetPageItemArgs args)
        {
            if (args?.Result == null || Context.Site == null || Context.Database == null || Context.Database.Name == "core")
            {
                return(false);
            }

            return(WildcardManager.Current.HasWildcardsPath(args.Result));
        }
        public override void Process(GetPageItemArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            if (args.Result != null)
            {
                return;
            }

            args.Result = this.ResolveItem(args);
        }
Пример #6
0
        protected virtual Item ResolveItem(GetPageItemArgs args)
        {
            if (args.Result == null)
            {
                return null;
            }

            var route = WildcardManager.Current.GetWildcardRouteForItemResolver(args.Result, Context.Site);
            return WildcardItemResolver.Current.ResolveItem(args.Result, route);
        }
Пример #7
0
        protected virtual Item ResolveItem(GetPageItemArgs args)
        {
            if (args.Result == null)
            {
                return(null);
            }

            WildcardRouteItem route = WildcardManager.Current.GetWildcardRouteForItemResolver(args.Result, Context.Site);

            return(WildcardItemResolver.Current.ResolveItem(args.Result, route));
        }
Пример #8
0
        protected virtual bool WildvardResolvingPossible(GetPageItemArgs args)
        {
            if (args == null || args.Result == null || Context.Site == null || Context.Database == null || Context.Database.Name == "core")
            {
                return false;
            }

            if (!WildcardManager.Current.HasWildcardsPath(args.Result))
            {
                return false;
            }

            return true;
        }
Пример #9
0
        public override void Process(GetPageItemArgs args)
        {
            if (!WildvardResolvingPossible(args))
            {
                return;
            }

            HttpContext.Current.Items[OriginalItemCacheKey] = args.Result;
            Item resolvedItem = ResolveItem(args);

            if (resolvedItem != null)
            {
                args.Result = resolvedItem;
            }
        }
Пример #10
0
 private bool AbortProcessor(GetPageItemArgs args)
 {
     if (!_context.Items.Contains(Constants.CustomContextItemKey))
     {
         return(true);
     }
     if (_context.Item == null)
     {
         return(true);
     }
     if (args.Result != null)
     {
         return(true);
     }
     return(false);
 }
Пример #11
0
        public override void Process(GetPageItemArgs args)
        {
            if (!this.WildvardResolvingPossible(args))
            {
                return;
            }

            HttpContext.Current.Items[OriginalItemCacheKey] = args.Result;

            var resolvedItem = this.ResolveItem(args);

            if (resolvedItem != null)
            {
                args.Result = resolvedItem;
            }
        }
Пример #12
0
        protected new virtual Item ResolveItem(GetPageItemArgs args)
        {
            string path = this.GetPath(args.RouteData);

            if (string.IsNullOrEmpty(path))
            {
                return(null);
            }

            Item wildcardItem = this.GetItem(path, args);

            if (wildcardItem == null)
            {
                return(null);
            }

            if (!WildCardProvider.IsWildcardItem(wildcardItem))
            {
                return(wildcardItem);
            }

            ReferenceField datasourceReference = wildcardItem.Fields[Templates.WildCard.Fields.WildCardDatasourceField];

            if (datasourceReference == null || datasourceReference.TargetItem == null)
            {
                return(wildcardItem);
            }

            if (HttpContext.Current.Items.Contains(Templates.WildCard.Fields.ContextItemKey))
            {
                HttpContext.Current.Items[Templates.WildCard.Fields.ContextItemKey] = wildcardItem;
            }
            else
            {
                HttpContext.Current.Items.Add(Templates.WildCard.Fields.ContextItemKey, wildcardItem);
            }

            string itemRelativePath = StringUtil.EnsurePrefix('/', WildCardProvider.GetWildCardItemRelativeSitecorePathFromUrl(path, wildcardItem));
            string itemPath         = string.Concat(datasourceReference.TargetItem.Paths.FullPath, itemRelativePath);

            string[] pathSegments = itemPath.Split('/');
            return(WildCardProvider.GetDatasourceItem(string.Join("/", pathSegments.Take(pathSegments.Length - 1)), pathSegments.LastOrDefault()));
        }
Пример #13
0
        /// <summary>
        /// Processes the specified GetPageItem pipeline arguments.
        /// </summary>
        /// <param name="args">The pipeline arguments.</param>
        public override void Process(GetPageItemArgs args)
        {
            Assert.ArgumentNotNull(args, nameof(args));

            // Ignore requests if it should not be applied (see method for details).
            if (this.IgnoreRequest(args))
            {
                return;
            }

            // Get cache to determine if item has been resolved
            var isResolved = MainUtil.GetBool(Context.Items[Constants.CustomUrlResloverCacheKey], false);

            if (isResolved)
            {
                // Item has previously been resolved
                args.Result = Context.Item;
            }
        }
        protected new virtual Item ResolveItem(GetPageItemArgs args)
        {
            string path = this.GetPath(args.RouteData);
            if (string.IsNullOrEmpty(path))
            {
                return null;
            }

            Item wildcardItem = this.GetItem(path, args);
            if (wildcardItem == null)
            {
                return null;
            }

            if (!wildcardItem.IsWildcardItem())
            {
                return wildcardItem;
            }

            ReferenceField datasourceReference = wildcardItem.Fields[AppConstants.WildcardDatasourceField];
            if (datasourceReference == null || datasourceReference.TargetItem == null)
            {
                return wildcardItem;
            }

            if (HttpContext.Current.Items.Contains(AppConstants.ContextItemKey))
            {
                HttpContext.Current.Items[AppConstants.ContextItemKey] = wildcardItem;
            }
            else
            {
                HttpContext.Current.Items.Add(AppConstants.ContextItemKey, wildcardItem);
            }

            string itemRelativePath = StringUtil.EnsurePrefix('/', WildcardProvider.GetWildCardItemRelativeSitecorePathFromUrl(path, wildcardItem));
            string itemPath = string.Concat(datasourceReference.TargetItem.Paths.FullPath, itemRelativePath);

            string[] pathSegments = itemPath.Split('/');
            return WildcardProvider.GetDatasourceItem(string.Join("/", pathSegments.Take(pathSegments.Length - 1)), pathSegments.LastOrDefault());
        }