public static ModuleInfo Unzip(string moduleName, Stream moduleStream, ref StringBuilder log) { //ModulePath modulePath = new ModulePath(moduleName); //if (Directory.Exists(modulePath.PhysicalPath)) //{ // log.Append("The module name already exists.".Localize()); // return false; //} ModuleInfo moduleInfo = null; using (ZipFile zipFile = ZipFile.Read(moduleStream)) { string dirName; var moduleConfigEntry = ParseZipFile(zipFile, out dirName); if (moduleConfigEntry == null) { log.Append("The module is invalid.".Localize()); return(null); } using (MemoryStream ms = new MemoryStream()) { moduleConfigEntry.Extract(ms); ms.Position = 0; moduleInfo = ModuleInfo.Get(ms); } if (moduleInfo == null) { return(null); } if (string.IsNullOrEmpty(moduleInfo.ModuleName)) { moduleInfo.ModuleName = moduleName; } ModulePath modulePath = new ModulePath(moduleInfo.ModuleName); var modulePhysicalPath = modulePath.PhysicalPath; if (Directory.Exists(modulePath.PhysicalPath)) { log.Append("The module name already exists.".Localize()); return(null); } var webconfigEntry = zipFile["web.config"]; if (webconfigEntry != null) { zipFile.RemoveEntry(webconfigEntry); } zipFile.ExtractAll(modulePhysicalPath, ExtractExistingFileAction.OverwriteSilently); if (!string.IsNullOrEmpty(dirName)) { var subDir = Path.Combine(modulePhysicalPath, dirName); Kooboo.IO.IOUtility.CopyDirectory(subDir, modulePhysicalPath); Kooboo.IO.IOUtility.DeleteDirectory(subDir, true); } } return(moduleInfo); }
protected ModuleContext(Site site, string moduleName, ModuleSettings moduleSettings, ModulePosition position) { this.Site = site; ModuleName = moduleName; this.ModuleSettings = moduleSettings; this.ModulePosition = position; this.ModuleInfo = ModuleInfo.Get(moduleName); }
public static ModuleInfo Install(string moduleName, Stream moduleStream, ref StringBuilder log) { ModuleInfo moduleInfo = null; if (Unzip(moduleName, moduleStream, ref log)) { moduleInfo = ModuleInfo.Get(moduleName); CopyAssembies(moduleInfo, ref log); } return(moduleInfo); }
public static void SaveModuleSettings(this ControllerContext controllerContext, ModuleSettings moduleSettings) { ModuleInfo.Get(controllerContext.GetModuleName()).SaveModuleSettings(Site.Current, moduleSettings); }
public static ModuleSettings GetModuleSettings(this ControllerContext controllerContext) { return(ModuleInfo.Get(controllerContext.GetModuleName()).GetModuleSettings(Site.Current)); }
public static ModuleActionInvokedContext InvokeAction(ControllerContext controllerContext, Site site, string moduleUrl, ModulePosition modulePosition) { HttpContext context = HttpContext.Current; var moduleSettings = ModuleInfo.Get(modulePosition.ModuleName).GetModuleSettings(site); 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); }