Ejemplo n.º 1
0
        public static MvcHtmlString RenderDashboardArea(this HtmlHelper htmlHelper, DashboardArea dashboardArea)
        {
            var actionMethodsWithAttribute =
                MaterialCMSControllerFactory.GetActionMethodsWithAttribute <DashboardAreaAction>()
                .Where(info => info.Attribute.DashboardArea == dashboardArea);

            return(actionMethodsWithAttribute.OrderBy(info => info.Attribute.Order)
                   .Aggregate(MvcHtmlString.Empty,
                              (current, actionMethodInfo) =>
                              current.Concat(htmlHelper.Action(actionMethodInfo.Descriptor.ActionName,
                                                               actionMethodInfo.Descriptor.ControllerDescriptor.ControllerName))));
        }
Ejemplo n.º 2
0
        public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
        {
            string controllerName = Convert.ToString(values["controller"]);
            string actionName     = Convert.ToString(values["action"]);
            bool   isAdmin        = !string.IsNullOrWhiteSpace(_area) && _area.Equals("Admin", StringComparison.OrdinalIgnoreCase);

            if (routeDirection == RouteDirection.IncomingRequest)
            {
                var mrCMSControllerFactory = ControllerBuilder.Current.GetControllerFactory() as MaterialCMSControllerFactory;
                if (mrCMSControllerFactory != null)
                {
                    bool isValidControllerType = mrCMSControllerFactory.IsValidControllerType(_appName, controllerName, isAdmin);
                    return(isValidControllerType);
                }
                return(false);
            }

            var controllers = isAdmin
                ? MaterialCMSControllerFactory.AppAdminControllers
                : MaterialCMSControllerFactory.AppUiControllers;

            Type controllerType = null;

            if (controllers.ContainsKey(_appName))
            {
                controllerType = controllers[_appName].FirstOrDefault(
                    type => type.Name.Equals(controllerName + "Controller", StringComparison.OrdinalIgnoreCase));
            }

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

            // get controller's methods
            return(MaterialCMSControllerFactory.GetActionMethods(controllerType)
                   .Any(info => info.Name.Equals(actionName, StringComparison.OrdinalIgnoreCase)));
        }