Example #1
0
        public UploadModuleResult Upload(string moduleName, Stream moduleStream, string user)
        {
            var result = _moduleInstaller.Upload(moduleName, moduleStream, user);

            result.SourceModuleInfo = ModuleInfo.Get(result.ModuleName);
            return(result);
        }
Example #2
0
        public void CopyAssemblies(string moduleName, bool @overrideFiles)
        {
            ModuleInfo sourceModuleInfo = ModuleInfo.Get(moduleName);

            _moduleUninstaller.RemoveAssemblies(moduleName);
            _moduleUninstaller.RemoveModuleArea(moduleName);
            _moduleInstaller.CopyFiles(moduleName, overrideFiles);
        }
Example #3
0
        public ModuleInfo_Metadata(string moduleName, string siteName)
        {
            var moduleInfo = ModuleInfo.Get(moduleName);

            this.ModuleName       = moduleInfo.ModuleName;
            this.Version          = moduleInfo.Version;
            this.KoobooCMSVersion = moduleInfo.KoobooCMSVersion;

            this.Settings = ModuleInfo.GetSiteModuleSettings(moduleName, siteName);
        }
Example #4
0
        public void RunInstallation(string moduleName, ControllerContext controllerContext, string user)
        {
            RunEvent(moduleName, controllerContext);
            ModuleInfo moduleInfo       = ModuleInfo.Get(moduleName);
            var        installationFile = this._installationFileManager.ArchiveTempInstallationPath(moduleName, moduleInfo.Version);

            this._installationFileManager.LogInstallation(moduleName, new InstallationContext(moduleInfo.ModuleName, moduleInfo.Version, DateTime.UtcNow)
            {
                User = user, InstallationFileName = installationFile
            });
        }
Example #5
0
        public virtual ActionResult GoingToUninstall(string uuid)
        {
            ModuleInfo moduleInfo = ModuleInfo.Get(uuid);

            //var sites = Manager.AllSitesInModule(uuid);
            //if (sites.Count() > 0)
            //{
            //    return View(sites.Select(it => new SiteModuleRelationModel(it)));
            //}
            return(RedirectToAction("Uninstall", ControllerContext.RequestContext.AllRouteValues()));
        }
Example #6
0
        public void OnInstalling(ControllerContext controllerContext)
        {
            var moduleInfo   = ModuleInfo.Get(SampleAreaRegistration.ModuleName);
            var installModel = new InstallModel();

            Kooboo.CMS.Sites.Extension.ModelBindHelper.BindModel <InstallModel>(installModel, controllerContext);

            moduleInfo.DefaultSettings.CustomSettings["DatabaseServer"] = installModel.DatabaseServer;
            moduleInfo.DefaultSettings.CustomSettings["UserName"]       = installModel.UserName;
            moduleInfo.DefaultSettings.CustomSettings["Password"]       = installModel.Password;
            ModuleInfo.Save(moduleInfo);

            // Add code here that will be executed when the module installing.
        }
Example #7
0
        //#region Unzip
        //public string Unzip(ref string moduleName, Stream moduleStream, string user)
        //{
        //    string error = "";
        //    using (ModuleStreamEntry moduleEntry = new ModuleStreamEntry(moduleName, moduleStream))
        //    {
        //        if (!moduleEntry.IsValid())
        //        {
        //            error = "The module is invalid.".Localize();
        //            return error;
        //        }

        //        var moduleInfo = moduleEntry.ModuleInfo;
        //        if (moduleInfo == null)
        //        {
        //            error = "The module.config file is invalid.".Localize();
        //            return error;
        //        }

        //        moduleName = moduleEntry.ModuleName;

        //        ModulePath modulePath = new ModulePath(moduleEntry.ModuleName);
        //        var modulePhysicalPath = modulePath.PhysicalPath;

        //        if (Directory.Exists(modulePath.PhysicalPath))
        //        {
        //            error = "The module name already exists.".Localize();
        //            return error;
        //        }

        //        //save the module version
        //        var installationFile = this._installationFileManager.SaveInstallationFile(moduleEntry);
        //        this._installationFileManager.LogInstallation(moduleName, new InstallationContext(moduleInfo.ModuleName, moduleInfo.Version, DateTime.UtcNow) { User = user, InstallationFileName = installationFile });


        //        moduleEntry.Extract(modulePhysicalPath);
        //    }
        //    return error;
        //}
        //#endregion

        //#region CheckConflictedAssemblyReferences
        //public IEnumerable<ConflictedAssemblyReference> CheckConflictedAssemblyReferences(string moduleName)
        //{
        //    var assemblyFiles = GetAssemblyFiles(moduleName);
        //    return _assemblyReferences.Check(assemblyFiles);
        //}
        //#endregion

        //#region GetAssemblyFiles
        //private IEnumerable<string> GetAssemblyFiles(string moduleName)
        //{
        //    ModulePath modulePath = new ModulePath(moduleName);
        //    ModuleItemPath moduleBinPath = new ModuleItemPath(moduleName, "Bin");
        //    if (Directory.Exists(moduleBinPath.PhysicalPath))
        //    {
        //        return Directory.EnumerateFiles(moduleBinPath.PhysicalPath);
        //    }
        //    else
        //    {
        //        return new string[0];
        //    }
        //}
        //#endregion

        public UploadModuleResult Upload(string moduleName, Stream moduleStream, string user)
        {
            UploadModuleResult result  = new UploadModuleResult();
            IPath tempInstallationPath = null;

            using (ModuleStreamEntry moduleEntry = new ModuleStreamEntry(moduleName, moduleStream))
            {
                if (!moduleEntry.IsValid())
                {
                    result.IsValid = false;
                }

                var moduleInfo = moduleEntry.ModuleInfo;
                if (moduleInfo == null)
                {
                    result.IsValid = false;
                }

                if (result.IsValid)
                {
                    moduleName = moduleEntry.ModuleName;
                    var existsModule = ModuleInfo.Get(moduleName);
                    if (existsModule != null)
                    {
                        result.ModuleExists = true;
                    }

                    tempInstallationPath = _installationFileManager.GetTempInstallationPath(moduleName);

                    moduleEntry.Extract(tempInstallationPath.PhysicalPath);

                    result.ModuleName           = moduleName;
                    result.TempInstallationPath = tempInstallationPath;
                    result.TargetModuleInfo     = moduleInfo;

                    var binFolder = Path.Combine(tempInstallationPath.PhysicalPath, "Bin");
                    if (Directory.Exists(binFolder))
                    {
                        var assemblyFiles = Directory.EnumerateFiles(binFolder);
                        result.ConflictedAssemblies = _assemblyReferences.Check(assemblyFiles);
                    }
                }
            }



            return(result);
        }
Example #8
0
        public virtual ActionResult ProcessModule(ModulePosition pos)
        {
            if (IsGet())
            {
                var manager = ServiceFactory.GetService <ModuleManager>();
                var modules = manager.AllModulesForSite(Site.FullName);
                var model   = new List <NameValueCollection>();
                foreach (var name in modules)
                {
                    var item = new NameValueCollection();
                    item.Add("ModuleName", name);
                    model.Add(item);
                    var setting = ModuleInfo.GetSiteModuleSettings(name, Site.FullName);
                    if (setting.Entry != null)
                    {
                        item.Add("EntryAction", setting.Entry.Action);
                        item.Add("EntryController", setting.Entry.Controller);
                    }
                    var info = ModuleInfo.Get(name);
                    if (info.EntryOptions != null)
                    {
                        var options = new List <object>();
                        foreach (var op in info.EntryOptions)
                        {
                            options.Add(new
                            {
                                Name            = op.Name,
                                EntryAction     = op.Entry.Action,
                                EntryController = op.Entry.Controller
                            });
                        }
                        var serializer  = new JavaScriptSerializer();
                        var optionsJson = serializer.Serialize(options);
                        item.Add("EntryOptions", HttpUtility.HtmlAttributeEncode(optionsJson));
                    }
                }
                return(View(model));
            }

            if (string.IsNullOrWhiteSpace(pos.Entry.Action) ||
                string.IsNullOrWhiteSpace(pos.Entry.Controller))
            {
                pos.Entry = null;
            }
            return(Json(new { html = new PageDesignModuleContent(pos).ToHtmlString() }));
        }
Example #9
0
        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                ModuleName + "_default",
                ModuleName + "/{controller}/{action}",
                new { action = "Index" }
                , null
                , new[] { "Kooboo.CMS.ExtensionTemplate.Areas.BlogModule.Controllers", "Kooboo.Web.Mvc", "Kooboo.Web.Mvc.WebResourceLoader" }
                );

            var areaPath = AreaHelpers.CombineAreaFilePhysicalPath(AreaName);

            if (Directory.Exists(areaPath))
            {
                var menuFile = AreaHelpers.CombineAreaFilePhysicalPath(AreaName, "CMSMenu.config");
                if (File.Exists(menuFile))
                {
                    Kooboo.Web.Mvc.Menu.MenuFactory.RegisterAreaMenu(AreaName, menuFile);
                }
                var resourceFile = Path.Combine(Settings.BaseDirectory, "Areas", AreaName, "WebResources.config");
                if (File.Exists(resourceFile))
                {
                    Kooboo.Web.Mvc.WebResourceLoader.ConfigurationManager.RegisterSection(AreaName, resourceFile);
                }

                ModuleInfo moduleInfo = ModuleInfo.Get(ModuleAreaRegistration.ModuleName);
                if (moduleInfo.DefaultSettings.CustomSettings.ContainsKey("ConnectionString"))
                {
                    BlogDbContext.DefaultConnectionString = moduleInfo.DefaultSettings.CustomSettings["ConnectionString"];
                }

                #region RegisterPermissions
                var roleManager = Kooboo.CMS.Common.Runtime.EngineContext.Current.Resolve <RoleManager>();
                roleManager.AddPermission(new Permission()
                {
                    AreaName = "Blog", Group = "", Name = "Blog"
                });
                roleManager.AddPermission(new Permission()
                {
                    AreaName = "Blog", Group = "", Name = "Category"
                });
                #endregion
            }
        }
Example #10
0
        public virtual ActionResult GoingToUninstall(string uuid)
        {
            ModuleInfo moduleInfo = ModuleInfo.Get(uuid);

            var sites = Manager.AllSitesInModule(uuid);

            if (sites.Count() > 0)
            {
                return(View(sites.Select(it => new SiteModuleRelationModel(it))));
            }
            if (!string.IsNullOrEmpty(moduleInfo.UninstallingTemplate))
            {
                return(RedirectToAction("OnUninstalling", ControllerContext.RequestContext.AllRouteValues()));
            }
            else
            {
                return(RedirectToAction("DeleteModuleFiles", ControllerContext.RequestContext.AllRouteValues()));
            }
        }
Example #11
0
        public void OnInstalling(ControllerContext controllerContext)
        {
            var installationModel = new InstallationModel();
            var connectString     = controllerContext.HttpContext.Request.Form["ConnectionString"];

            if (Kooboo.CMS.Sites.Extension.ModelBindHelper.BindModel(installationModel, controllerContext))
            {
                try
                {
                    _dbInitializer.InitializeDb(installationModel.ConnectionString);
                    ModuleInfo moduleInfo = ModuleInfo.Get(ModuleAreaRegistration.ModuleName);
                    moduleInfo.DefaultSettings.CustomSettings["ConnectionString"] = installationModel.ConnectionString;
                    ModuleInfo.Save(moduleInfo);
                }
                catch (Exception e)
                {
                    controllerContext.Controller.ViewData.ModelState.AddModelError("ConnectionString", e);
                }
            }
        }
Example #12
0
 public virtual ModuleInfo Get(string moduleName)
 {
     return(ModuleInfo.Get(moduleName));
 }
Example #13
0
        public virtual ActionResult OnInstalling(string moduleName)
        {
            ModuleInfo moduleInfo = ModuleInfo.Get(moduleName);

            return(View(moduleInfo));
        }
Example #14
0
        public virtual ActionResult OnUninstalling(string uuid)
        {
            ModuleInfo moduleInfo = ModuleInfo.Get(uuid);

            return(View(moduleInfo));
        }
Example #15
0
        public virtual ActionResult ProcessModule(ModulePosition pos)
        {
            this.ValueProvider.GetValue("q");

            if (IsGet())
            {
                var serializer = new JavaScriptSerializer();
                var manager    = ServiceFactory.GetService <ModuleManager>();
                var modules    = manager.AllModulesForSite(Site.FullName);
                var model      = new List <NameValueCollection>();
                foreach (var name in modules)
                {
                    var item = new NameValueCollection();
                    item.Add("ModuleName", name);
                    model.Add(item);
                    var moduleInfo = ModuleInfo.Get(name);
                    var setting    = moduleInfo.GetModuleSettings(Site);
                    if (setting.Entry != null)
                    {
                        item.Add("EntryAction", setting.Entry.Action);
                        item.Add("EntryController", setting.Entry.Controller);
                        item.Add("Values", setting.Entry.Values == null ? "[]" : serializer.Serialize(setting.Entry.Values.ToList()));
                    }
                    if (moduleInfo.EntryOptions != null)
                    {
                        var options = new List <object>();
                        foreach (var op in moduleInfo.EntryOptions)
                        {
                            options.Add(new
                            {
                                Name            = op.Name,
                                EntryAction     = op.Entry.Action,
                                EntryController = op.Entry.Controller,
                                Values          = op.Entry.Values == null ? new List <KeyValuePair <string, object> >() : op.Entry.Values.ToList()
                            });
                        }

                        var optionsJson = serializer.Serialize(options);
                        item.Add("EntryOptions", optionsJson);
                    }
                }
                return(View(model));
            }

            if (pos.Entry != null && pos.Entry.Values != null)
            {
                var newValues = new RouteValueDictionary();
                foreach (var item in pos.Entry.Values)
                {
                    if (item.Value is string[])
                    {
                        newValues[item.Key] = ((string[])item.Value).FirstOrDefault();
                    }
                    else
                    {
                        newValues[item.Key] = item.Value;
                    }
                }
                pos.Entry.Values = newValues;
            }

            return(Json(new { html = new PageDesignModuleContent(pos).ToHtmlString() }));
        }