public string GetModulePositionIdForUrl(ModulePosition modulePosition, RouteValueDictionary routeValues, out Page page) { page = this.PageRequestContext.Page; string modulePositionId = modulePosition.PagePositionId; if (!string.IsNullOrEmpty(modulePosition.Entry.LinkToEntryName)) { foreach (var item in Kooboo.CMS.Sites.Services.ServiceFactory.PageManager.All(this.PageRequestContext.Site, null)) { foreach (var position in item.PagePositions.OfType<ModulePosition>()) { if (position.Entry != null && !string.IsNullOrEmpty(position.Entry.Name) && position.Entry.Name.EqualsOrNullEmpty(modulePosition.Entry.LinkToEntryName, StringComparison.OrdinalIgnoreCase)) { page = item; modulePositionId = position.PagePositionId; } } } } else { modulePositionId = GetModulePositionIdForUrl(modulePosition.ModuleName, modulePosition.PagePositionId, routeValues); } return modulePositionId; }
protected ModuleContext(Site site, string moduleName, ModuleSettings moduleSettings, ModulePosition position) { this.Site = site; ModuleName = moduleName; this.ModuleSettings = moduleSettings; this.ModulePosition = position; }
public static ModuleContext Create(Site site, string moduleName, ModuleSettings moduleSettings, ModulePosition position) { var context = new ModuleContext(site, moduleName, moduleSettings, position); if (!System.IO.Directory.Exists(context.ModulePath.PhysicalPath)) { throw new Exception(string.Format("The module does not exist.Module name:{0}".Localize(), moduleName)); } return context; }
protected override object CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType) { var positionType = controllerContext.HttpContext.Request["PositionType"]; object model = null; switch (positionType) { case "View": model = new ViewPosition(); break; case "Module": model = new ModulePosition(); break; case "Content": model = new HtmlPosition(); break; default: break; } bindingContext.ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(() => model, model.GetType()); return model; }
public ModuleContext(string moduleName, Site site, ModulePosition position) : this(moduleName, site) { this.FrontEndContext = new FrontEndContext(moduleName,this.GetModuleSettings(), position); }
protected virtual string RenderModule(ModulePosition modulePosition) { ModuleActionInvokedContext actionInvokedContext = GetModuleActionResult(modulePosition.PagePositionId); if (actionInvokedContext != null) { var actionResultExecuted = ModuleExecutor.ExecuteActionResult(actionInvokedContext); return actionResultExecuted.ResultHtml; } return string.Empty; }
public virtual IHtmlString RenderModule(string moduleName, string moduleUrl, ModulePosition modulePosition) { var result = ModuleExecutor.InvokeAction(PageContext.ControllerContext, PageContext.PageRequestContext.Site, moduleUrl, modulePosition); var actionResultExecuted = ModuleExecutor.ExecuteActionResult(result); return new HtmlString(actionResultExecuted.ResultHtml); }
public virtual IHtmlString RenderModule(string moduleName, string moduleUrl) { ModulePosition position = new ModulePosition() { Exclusive = false , PagePositionId = moduleName , ModuleName = moduleName , Entry = new Entry() }; return RenderModule(moduleName, moduleUrl, position); }
public virtual IHtmlString RenderModule(string moduleName, string moduleController, string moduleAction, object routeValues) { var routeDictionary = new RouteValueDictionary(); if (routeValues != null) { routeDictionary = new RouteValueDictionary(routeValues); } ModulePosition position = new ModulePosition() { Exclusive = false , PagePositionId = moduleName , ModuleName = moduleName , Entry = new Entry() { Controller = moduleController, Action = moduleAction, Values = routeDictionary } }; return RenderModule(moduleName, null, position); }
public static ModuleActionInvokedContext InvokeAction(ControllerContext controllerContext, Site site, string moduleUrl, ModulePosition modulePosition) { HttpContext context = HttpContext.Current; var moduleSettings = ModuleInfo.GetSiteModuleSettings(modulePosition.ModuleName, site == null ? "" : site.FullName); if (modulePosition.Entry != null) { moduleSettings.Entry = modulePosition.Entry; } var settings = moduleSettings; var positionId = modulePosition.PagePositionId; var moduleName = modulePosition.ModuleName; ModuleContext moduleContext = ModuleContext.Create(site, moduleName, settings, modulePosition); if (string.IsNullOrEmpty(moduleUrl)) { if (settings != null && settings.Entry != null) { moduleUrl = GetEntryUrl(context, moduleContext, settings.Entry); if (!string.IsNullOrEmpty(moduleUrl) && !moduleUrl.StartsWith("~")) { moduleUrl = "~" + moduleUrl; } } } if (string.IsNullOrEmpty(moduleUrl)) { moduleUrl = "~/"; } else if (moduleUrl[0] != '~') { moduleUrl = "~/" + moduleUrl.TrimStart('/'); } var httpContext = new ModuleHttpContext(context , new ModuleHttpRequest(context.Request, moduleUrl, moduleContext, controllerContext), new ModuleHttpResponse(context.Response, moduleContext), moduleContext); var routeData = moduleContext.RouteTable.GetRouteData(httpContext); var requestContext = new ModuleRequestContext(httpContext, routeData, moduleContext) { PageControllerContext = controllerContext }; string controllerName = requestContext.RouteData.GetRequiredString("controller"); string actionName = requestContext.RouteData.GetRequiredString("action"); var controller = (Controller)ControllerBuilder.Current.GetControllerFactory().CreateController(requestContext, controllerName); if (controller == null) { throw new Exception(string.Format("The module '{0}' controller for path '{1}' does not found or does not implement IController.", moduleName, moduleUrl)); } //if (!(controller is ModuleControllerBase)) //{ // throw new Exception(string.Format("The controller type '{0}' must be inherited from ModuleControllerBase.", controller.GetType().FullName)); //} //ModuleControllerBase moduleController = (ModuleControllerBase)controller; //ControllerContext moduleControllerContext = new ControllerContext(requestContext, moduleController); InitializeController(controller, requestContext); var result = actionInvoker.InvokeActionWithoutExecuteResult(controller.ControllerContext, actionName); if (result == null) { HandleUnknownAction(controller, actionName); } return result; }
public PageDesignModuleContent(ModulePosition pos) : base(pos) { this.Parameter.Add("ModuleName", PageDesignContent.Code(pos.ModuleName)); this.Parameter.Add("Exclusive", pos.Exclusive.ToString().ToLower()); if (pos.Entry != null) { this.Parameter.Add("EntryAction", pos.Entry.Action); this.Parameter.Add("EntryController", pos.Entry.Controller); this.Parameter.Add("Values", pos.Entry.Values == null ? "[]" : pos.Entry.Values.ToList().ToJSON()); } }
public FrontEndContext(string moduleName, ModuleSettings moduleSettings, ModulePosition modulePosition) { this._moduleName = moduleName; this._moduleSettings = moduleSettings; this._modulePosition = modulePosition; }
public ModuleActionInvokedContext(ModulePosition modulePosition, ControllerContext controllerContext, ActionResult actionResult) { this.ControllerContext = controllerContext; this.ModulePosition = modulePosition; this.ActionResult = actionResult; }