コード例 #1
0
ファイル: SetupController.cs プロジェクト: levanvunam/EasyCMS
        public ActionResult Index()
        {
            try
            {
                var configuration = SiteInitializer.GetConfiguration();

                if (configuration != null && !configuration.IsSetupFinish)
                {
                    SiteInitializer.SiteConfigError = true;
                    return(View("Error", new ResponseModel
                    {
                        Success = false,
                        Message =
                            "Site configuration is invalid. Please remove the site.config in /App_Data folder to continue."
                    }));
                }

                if (SiteInitializer.SiteConfigError)
                {
                    WebUtilities.RestartAppDomain();
                }
            }
            catch (Exception)
            {
            }

            return(View());
        }
コード例 #2
0
ファイル: PluginHelper.cs プロジェクト: levanvunam/EasyCMS
        /// <summary>
        /// Get all plugins in Application
        /// </summary>
        /// <returns></returns>
        public static List <PluginInformationModel> GetPlugins()
        {
            var plugins         = new List <PluginInformationModel>();
            var pluginRegisters = new List <PluginInformationModel>();

            // Get all plugins in the Application

            var pluginFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Plugins");

            foreach (var plugin in Directory.GetDirectories(pluginFolder, "*", SearchOption.TopDirectoryOnly))
            {
                var pluginInformationFile = Path.Combine(plugin, EzCMSContants.PluginInformationFileName);
                var setupInformation      = ParseFromPath(pluginInformationFile);

                if (plugin != null)
                {
                    pluginRegisters.Add(setupInformation);
                }
            }

            // Get installed plugins
            var installPlugins = SiteInitializer.GetConfiguration().Plugins;

            // Check plugin is installed or not
            foreach (var plugin in pluginRegisters)
            {
                if (installPlugins.Any(m => m.Name.Equals(plugin.Name)))
                {
                    plugin.IsInstalled      = true;
                    plugin.ConnectionString = installPlugins.First(m => m.Name.Equals(plugin.Name)).ConnectionString;
                }
                plugins.Add(plugin);
            }
            return(plugins);
        }
コード例 #3
0
        /// <summary>
        /// Finish setup and restart AppDomain
        /// </summary>
        /// <returns></returns>
        public ResponseModel FinishSetup()
        {
            ResponseModel response;

            //Finish setup
            var siteConfig = SiteInitializer.GetConfiguration();

            siteConfig.IsSetupFinish = true;
            SiteInitializer.SaveConfiguration(siteConfig);

            //Notify user of new setup site.
            var setupInfo = WorkContext.SetupInformation;
            var url       = HttpContext.Current.Request.Url;

            if (setupInfo.InitialUser != null && setupInfo.SiteConfiguration != null)
            {
                var emailAccount = _emailAccountRepository.FetchFirst(e => e.IsDefault);
                if (emailAccount != null)
                {
                    _emailLogRepository.Insert(new EmailLog
                    {
                        From         = emailAccount.Email,
                        FromName     = emailAccount.DisplayName,
                        EmailAccount = emailAccount,
                        ToName       =
                            string.Format("{0} {1}", setupInfo.InitialUser.FirstName, setupInfo.InitialUser.LastName),
                        To      = setupInfo.InitialUser.Email,
                        Subject = "Website setup",
                        Body    =
                            string.Format("Hello {0},<br/> Your new site has been setup at <a href='{2}'>{1}</a>",
                                          setupInfo.InitialUser.FirstName, url.Host,
                                          url.IsDefaultPort
                                    ? string.Format("{0}://{1}/", url.Scheme, url.Host)
                                    : string.Format("{0}://{1}:{2}/", url.Scheme, url.Host, url.Port))
                    });
                }
            }

            //Restart app domain
            try
            {
                WebUtilities.RestartAppDomain();
                response = new ResponseModel
                {
                    Success = true
                };
            }
            catch (Exception exception)
            {
                response = new ResponseModel
                {
                    Success = false,
                    Message = exception.Message
                };
            }

            return(response);
        }
コード例 #4
0
ファイル: PluginService.cs プロジェクト: levanvunam/EasyCMS
        /// <summary>
        /// Save Plugin
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public ResponseModel SavePluginManageModel(PluginInformationModel model)
        {
            try
            {
                var siteConfig = SiteInitializer.GetConfiguration();

                var plugin = siteConfig.Plugins.FirstOrDefault(m => m.Name.Equals(model.Name));
                if (plugin == null)
                {
                    if (model.IsInstalled)
                    {
                        var pluginInformation = GetByName(model.Name);
                        plugin = new Plugin
                        {
                            Name             = pluginInformation.Name,
                            ConnectionString = model.ConnectionString,
                            Folder           = pluginInformation.Folder
                        };

                        siteConfig.Plugins.Add(plugin);
                        EzWorkContext.IsSystemChanged = true;
                    }
                }
                else
                {
                    if (model.IsInstalled)
                    {
                        plugin.ConnectionString = model.ConnectionString;
                    }
                    else
                    {
                        siteConfig.Plugins.Remove(plugin);
                    }

                    EzWorkContext.IsSystemChanged = true;
                }

                SiteInitializer.SaveConfiguration(siteConfig, false);
            }
            catch (Exception exception)
            {
                EzWorkContext.IsSystemChanged = false;
                return(new ResponseModel
                {
                    Success = true,
                    Message = T("Plugin_Message_UpdateFailure")
                });
            }

            return(new ResponseModel
            {
                Success = true,
                Message = T("Plugin_Message_UpdateSuccessfully")
            });
        }
コード例 #5
0
ファイル: PluginHelper.cs プロジェクト: levanvunam/EasyCMS
        /// <summary>
        /// Load all installed plugin dlls
        /// </summary>
        /// <returns></returns>
        public static List <string> LoadAllInstalledPluginDlls()
        {
            var applicationBinFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
                                                    EzCMSContants.BinDirectory);

            //Get all loaded application dll name
            var applicationDlls = Directory.GetFiles(applicationBinFolder, "*.dll", SearchOption.TopDirectoryOnly).Select(Path.GetFileNameWithoutExtension).ToList();

            var pluginDllPaths   = new List <string>();
            var installedPlugins = SiteInitializer.GetConfiguration().Plugins;

            var pluginFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, EzCMSContants.PluginFolder);

            if (!Directory.Exists(pluginFolder))
            {
                try
                {
                    Directory.CreateDirectory(pluginFolder);
                }
                catch (Exception)
                {
                    return(new List <string>());
                }
            }
            foreach (var plugin in Directory.GetDirectories(pluginFolder, "*", SearchOption.TopDirectoryOnly))
            {
                var pluginInformationFile = Path.Combine(plugin, EzCMSContants.PluginInformationFileName);
                var pluginInformation     = ParseFromPath(pluginInformationFile);
                if (pluginInformation != null && installedPlugins.Any(m => m.Name.Equals(pluginInformation.Name)))
                {
                    var binFolder = Path.Combine(plugin, EzCMSContants.BinDirectory);
                    foreach (var dllFile in Directory.GetFiles(binFolder, "*.dll", SearchOption.TopDirectoryOnly))
                    {
                        var fileName = Path.GetFileNameWithoutExtension(dllFile) ?? string.Empty;

                        var isAdded = pluginDllPaths.Select(Path.GetFileNameWithoutExtension).Any(fileNameWithoutExtension => fileNameWithoutExtension.Equals(dllFile));

                        // Add dll file if it has not been added
                        if (!isAdded && !applicationDlls.Any(fileName.Equals))
                        {
                            pluginDllPaths.Add(dllFile);
                        }
                    }
                }
            }
            return(pluginDllPaths);
        }
コード例 #6
0
        public EzCMSRazorEngine()
        {
            var siteConfig       = SiteInitializer.GetConfiguration();
            var installedPlugins = siteConfig.Plugins.Select(m => m.Folder);

            AreaMasterLocationFormats = new[]
            {
                "~/Areas/{2}/Views/{1}/{0}.cshtml",
                "~/Areas/{2}/Views/{1}/{0}.vbhtml",
                "~/Areas/{2}/Views/Shared/{0}.cshtml",
                "~/Areas/{2}/Views/Shared/{0}.vbhtml"
            };

            AreaPartialViewLocationFormats = new[]
            {
                "~/Areas/{2}/Views/{1}/{0}.cshtml",
                "~/Areas/{2}/Views/{1}/{0}.vbhtml",
                "~/Areas/{2}/Views/Shared/{0}.cshtml",
                "~/Areas/{2}/Views/Shared/{0}.vbhtml"
            };

            var areaViewAndPartialViewLocationFormats = new List <string>
            {
                "~/Areas/{2}/Views/{1}/{0}.cshtml",
                "~/Areas/{2}/Views/{1}/{0}.vbhtml",
                "~/Areas/{2}/Views/Shared/{0}.cshtml",
                "~/Areas/{2}/Views/Shared/{0}.vbhtml"
            };

            var partialViewLocationFormats = new List <string>
            {
                "~/Views/{1}/{0}.cshtml",
                "~/Views/{1}/{0}.vbhtml",
                "~/Views/Shared/{0}.cshtml",
                "~/Views/Shared/{0}.vbhtml"
            };

            var masterLocationFormats = new List <string>
            {
                "~/Views/{1}/{0}.cshtml",
                "~/Views/{1}/{0}.vbhtml",
                "~/Views/Shared/{0}.cshtml",
                "~/Views/Shared/{0}.vbhtml"
            };

            foreach (var plugin in installedPlugins)
            {
                var plugInFolder = string.Format("~/{0}/{1}", EzCMSContants.PluginFolder, plugin);

                //Add master location
                masterLocationFormats.Add(
                    plugInFolder + "/Views/{1}/{0}.cshtml");
                masterLocationFormats.Add(
                    plugInFolder + "/Views/{1}/{0}.vbhtml");
                masterLocationFormats.Add(
                    plugInFolder + "/Views/Shared/{1}/{0}.cshtml");
                masterLocationFormats.Add(
                    plugInFolder + "/Views/Shared/{1}/{0}.vbhtml");

                //Add partial view location
                partialViewLocationFormats.Add(
                    plugInFolder + "/Views/{1}/{0}.cshtml");
                partialViewLocationFormats.Add(
                    plugInFolder + "/Views/{1}/{0}.vbhtml");
                partialViewLocationFormats.Add(
                    plugInFolder + "/Views/Shared/{0}.cshtml");
                partialViewLocationFormats.Add(
                    plugInFolder + "/Views/Shared/{0}.vbhtml");

                //Add area view location
                areaViewAndPartialViewLocationFormats.Add(
                    plugInFolder + "/Views/{1}/{0}.cshtml");
                areaViewAndPartialViewLocationFormats.Add(
                    plugInFolder + "/Views/{1}/{0}.vbhtml");
                areaViewAndPartialViewLocationFormats.Add(
                    plugInFolder + "/Areas/{2}/Views/{1}/{0}.cshtml");
                areaViewAndPartialViewLocationFormats.Add(
                    plugInFolder + "/Areas/{2}/Views/{1}/{0}.vbhtml");
                areaViewAndPartialViewLocationFormats.Add(
                    plugInFolder + "/Areas/{2}/Views/Shared/{0}.cshtml");
                areaViewAndPartialViewLocationFormats.Add(
                    plugInFolder + "/Areas/{2}/Views/Shared/{0}.vbhtml");
            }

            ViewLocationFormats            = partialViewLocationFormats.ToArray();
            MasterLocationFormats          = masterLocationFormats.ToArray();
            PartialViewLocationFormats     = partialViewLocationFormats.ToArray();
            AreaPartialViewLocationFormats = areaViewAndPartialViewLocationFormats.ToArray();
            AreaViewLocationFormats        = areaViewAndPartialViewLocationFormats.ToArray();
        }