Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
 public static void SaveModuleSettings(this ControllerContext controllerContext, ModuleSettings moduleSettings)
 {
     ModuleInfo.Get(controllerContext.GetModuleName()).SaveModuleSettings(Site.Current, moduleSettings);
 }
Exemplo n.º 5
0
 public static ModuleSettings GetModuleSettings(this ControllerContext controllerContext)
 {
     return(ModuleInfo.Get(controllerContext.GetModuleName()).GetModuleSettings(Site.Current));
 }
Exemplo n.º 6
0
        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);
        }