示例#1
0
        public virtual ActionResult EditWidget(ICoreWidgetInstance instance)
        {
            var widgetModel = new LoginHolderWidgetEditModel();

            if (instance != null)
            {
                NHibernate.Models.LoginHolderWidget widget = null;
                if (instance.InstanceId != null)
                {
                    var existingWidget = loginHolderWidgetService.Find((long)instance.InstanceId);

                    if (existingWidget != null)
                    {
                        widget = existingWidget;
                    }
                }
                if (widget == null)
                {
                    widget = new NHibernate.Models.LoginHolderWidget();
                    loginHolderWidgetService.Save(widget);
                    IWidgetHelper widgetHelper = ServiceLocator.Current.GetInstance <IWidgetHelper>();
                    widgetHelper.UpdatePageWidgetInstance(instance.PageWidgetId ?? 0, widget.Id, this.CorePrincipal());
                }

                widgetModel = widgetModel.MapFrom(widget);
            }

            return(PartialView(widgetModel));
        }
#pragma warning restore 649

        #endregion

        #region Methods
        /// <summary>
        /// Creates an instance of a controller for the specified name.
        /// </summary>
        /// <param name="requestContext">The current request context.</param>
        /// <param name="controllerName">The name of the controller.</param>
        /// <returns>An instance of a controller for the specified name.</returns>
        public override IController CreateController(System.Web.Routing.RequestContext requestContext, String controllerName)
        {
            object areaNameObj = requestContext.RouteData.Values["area"];

            if (String.IsNullOrEmpty(areaNameObj as String))
            {
                requestContext.RouteData.DataTokens.TryGetValue("area", out areaNameObj);
            }
            var areaName = areaNameObj as String;
            PartFactory <IController, IControllerMetadata> factory = null;
            var matchedFactories = controllerFactories.Where(
                f => f.Metadata.Name.Equals(controllerName, StringComparison.InvariantCultureIgnoreCase));
            var matchedFactoriesCount = matchedFactories.Count();

            if (matchedFactoriesCount > 1)
            {
                factory = controllerFactories
                          .Where(
                    f =>
                    f.Metadata.Name.Equals(controllerName, StringComparison.InvariantCultureIgnoreCase) &&
                    (String.IsNullOrEmpty(areaName) || areaName.Equals(f.Metadata.Area))).FirstOrDefault();
            }
            if (factory == null && matchedFactoriesCount > 0)
            {
                factory = matchedFactories.FirstOrDefault();
            }
            if (factory != null)
            {
                IController controller = factory.CreatePart();
                if (controller != null)
                {
                    if (controller is CorePluginController)
                    {
                        IPluginHelper pluginHelper = ServiceLocator.Current.GetInstance <IPluginHelper>();
                        if (pluginHelper.IsPluginEnabled(((CorePluginController)controller).ControllerPluginIdentifier))
                        {
                            return(controller);
                        }
                    }
                    else if (controller is CoreWidgetController)
                    {
                        IWidgetHelper widgetHelper = ServiceLocator.Current.GetInstance <IWidgetHelper>();
                        if (widgetHelper.IsWidgetEnabled(((CoreWidgetController)controller).ControllerWidgetIdentifier))
                        {
                            return(controller);
                        }
                    }
                    else
                    {
                        return(controller);
                    }
                }
            }

            return(base.CreateController(requestContext, controllerName));
        }