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()); }
/// <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); }
/// <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); }
/// <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") }); }
/// <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); }
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(); }