示例#1
0
        public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
        {
            object value;

            if (values.TryGetValue(parameterName, out value))
            {
                var parameterValue = Convert.ToString(value);

                var path = FindPath(parameterValue);
                if (path == null)
                {
                    return(false);
                }

                var archiveData = FindArchiveData(parameterValue);
                if (archiveData == null)
                {
                    return(false);
                }

                try {
                    // is this a valid date ?
                    archiveData.ToDateTime();
                }
                catch {
                    return(false);
                }

                IDictionary <string, string> routeValues;
                if (!_aliasHolder.GetMap("Orchard.Blogs").TryGetAlias(path, out routeValues))
                {
                    return(false);
                }

                var isBlog =
                    //routeValues.ContainsKey("area") &&
                    //routeValues["area"] == "Orchard.Blogs" &&
                    routeValues.ContainsKey("controller") &&
                    routeValues["controller"] == "Blog" &&
                    routeValues.ContainsKey("action") &&
                    routeValues["action"] == "Item"
                ;

                return(isBlog);
            }

            return(false);
        }
        public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
        {
            object value;

            if (values.TryGetValue(parameterName, out value))
            {
                var parameterValue = Convert.ToString(value);

                var path = FindPath(parameterValue);
                if (path == null)
                {
                    return(false);
                }

                var archiveData = FindArchiveData(parameterValue);
                if (archiveData == null)
                {
                    return(false);
                }

                try {
                    // is this a valid date ?
                    archiveData.ToDateTime();
                }
                catch {
                    return(false);
                }

                AliasInfo aliasInfo;
                if (!_aliasHolder.GetMap(" LawBookCases.Module").TryGetAlias(path, out aliasInfo))
                {
                    return(false);
                }

                var isCase =
                    //routeValues.ContainsKey("area") &&
                    //routeValues["area"] == " LawBookCases.Module" &&
                    aliasInfo.RouteValues.ContainsKey("controller") &&
                    aliasInfo.RouteValues["controller"] == "Case" &&
                    aliasInfo.RouteValues.ContainsKey("action") &&
                    aliasInfo.RouteValues["action"] == "Item"
                ;

                return(isCase);
            }

            return(false);
        }
示例#3
0
 public ExtendedAliasRoute(string url, IRouteHandler routeHandler, IAliasHolder aliasHolder)
     : base(
         url,
         new RouteValueDictionary
 {
     { "httproute", true },
     { "area", "dcp.Routing" }
 },
         new RouteValueDictionary(),
         new RouteValueDictionary
 {
     { "area", "dcp.Routing" }
 }, routeHandler)
 {
     _url         = url;
     _aliasHolder = aliasHolder;
     _aliasMap    = aliasHolder.GetMap("Contents");
 }
示例#4
0
        private string LookupAlias(RouteValueDictionary routeValues)
        {
            object area;

            if (!routeValues.TryGetValue("area", out area))
            {
                return(null);
            }

            var map = _aliasHolder.GetMap(area.ToString());

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

            var alias = map.GetAliases().FirstOrDefault(x => IsSameRoute(x.RouteValues, routeValues) && !String.IsNullOrWhiteSpace(x.Path));

            return(alias != null ? alias.Path : null);
        }
示例#5
0
        public static AliasInfo GetAlias(string requestPath, IAliasHolder aliasHolder)
        {
            var alias = GetClosestParentAlias(requestPath, aliasHolder.GetMap("Contents"), true);

            if (alias != null)
            {
                return(alias);
            }

            foreach (var map in aliasHolder.GetMaps())
            {
                alias = GetClosestParentAlias(requestPath, map, true);
                if (alias != null)
                {
                    return(alias);
                }
            }

            return(null);
        }
示例#6
0
        public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
        {
            if (routeDirection == RouteDirection.UrlGeneration)
            {
                return(true);
            }

            object value;

            if (values.TryGetValue(parameterName, out value))
            {
                var parameterValue = Convert.ToString(value);

                var path = FindPath(parameterValue);
                if (path == null)
                {
                    return(false);
                }

                AliasInfo aliasInfo;
                if (!_aliasHolder.GetMap("Orchard.Blogs").TryGetAlias(path, out aliasInfo))
                {
                    return(false);
                }

                var isBlog =
                    //routeValues.ContainsKey("area") &&
                    //routeValues["area"] == "Orchard.Blogs" &&
                    aliasInfo.RouteValues.ContainsKey("controller") &&
                    aliasInfo.RouteValues["controller"] == "Blog" &&
                    aliasInfo.RouteValues.ContainsKey("action") &&
                    aliasInfo.RouteValues["action"] == "Item"
                ;

                return(isBlog);
            }

            return(false);
        }
示例#7
0
        public IDictionary <string, string> Get(string path)
        {
            // All aliases are already in memory, and updated. We don't need to query the
            // database to lookup an alias by path.

            AliasInfo alias;

            // Optimized code path on Contents as it's the main provider of aliases
            if (_aliasHolder.GetMap("Contents").TryGetAlias(path, out alias))
            {
                return(alias.RouteValues);
            }

            foreach (var map in _aliasHolder.GetMaps())
            {
                if (map.TryGetAlias(path, out alias))
                {
                    return(alias.RouteValues);
                }
            }

            return(null);
        }
 public AliasRoute(IAliasHolder aliasHolder, string areaName, IRouteHandler routeHandler)
 {
     Area          = areaName;
     _aliasMap     = aliasHolder.GetMap(areaName);
     _routeHandler = routeHandler;
 }
 public PartialAliasRoute(IAliasHolder aliasHolder, string areaName, IRouteHandler routeHandler)
     : base(aliasHolder, areaName, routeHandler)
 {
     mAliasMap     = aliasHolder.GetMap(areaName);
     mRouteHandler = routeHandler;
 }
示例#10
0
 public AliasRoute(IAliasHolder aliasHolder, string areaName, IRouteHandler routeHandler) {
     Area = areaName;
     _aliasMap = aliasHolder.GetMap(areaName);
     _routeHandler = routeHandler;
 }
示例#11
0
 public HomeRoute(IAliasHolder aliasHolder, IWorkContextAccessor workContextAccessor)
 {
     _workContextAccessor = workContextAccessor;
     _aliasMap = aliasHolder.GetMap(AreaName);
 }