From e04e02ed9cfceb997aa807e8f11f88269578b9fe Mon Sep 17 00:00:00 2001 From: Dario Solera Date: Wed, 20 Jan 2010 16:00:02 +0000 Subject: [PATCH] Fixed and closed #455: meta-content is reset to defaults only on the first application start. --- AssemblyVersion.cs | 4 +- Core-Tests/TestSettingsStorageProvider.cs | 4 ++ Core/SettingsStorageProvider.cs | 11 ++++ Core/StartupTools.cs | 61 ++++++------------- PluginFramework/ISettingsStorageProvider.cs | 6 ++ .../SqlSettingsStorageProviderBase.cs | 13 ++++ .../SqlServerSettingsStorageProvider.cs | 3 +- 7 files changed, 58 insertions(+), 44 deletions(-) diff --git a/AssemblyVersion.cs b/AssemblyVersion.cs index 1af5381..74e70f4 100644 --- a/AssemblyVersion.cs +++ b/AssemblyVersion.cs @@ -16,5 +16,5 @@ using System.Reflection; // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("3.0.1.460")] -[assembly: AssemblyFileVersion("3.0.1.460")] +[assembly: AssemblyVersion("3.0.1.461")] +[assembly: AssemblyFileVersion("3.0.1.461")] diff --git a/Core-Tests/TestSettingsStorageProvider.cs b/Core-Tests/TestSettingsStorageProvider.cs index 28c3580..43438b2 100644 --- a/Core-Tests/TestSettingsStorageProvider.cs +++ b/Core-Tests/TestSettingsStorageProvider.cs @@ -142,6 +142,10 @@ namespace ScrewTurn.Wiki.Tests { throw new NotImplementedException(); } + public bool IsFirstApplicationStart() { + throw new NotImplementedException(); + } + } } diff --git a/Core/SettingsStorageProvider.cs b/Core/SettingsStorageProvider.cs index b0470b5..6be94c8 100644 --- a/Core/SettingsStorageProvider.cs +++ b/Core/SettingsStorageProvider.cs @@ -59,6 +59,8 @@ namespace ScrewTurn.Wiki { private bool bulkUpdating = false; private Dictionary configData = null; + private bool isFirstStart = false; + private string GetFullPath(string name) { return Path.Combine(host.GetSettingValue(SettingName.PublicDirectory), name); } @@ -95,6 +97,7 @@ namespace ScrewTurn.Wiki { if(!File.Exists(GetFullPath(ConfigFile))) { File.Create(GetFullPath(ConfigFile)).Close(); + isFirstStart = true; } if(!File.Exists(GetFullPath(RecentChangesFile))) { @@ -1234,6 +1237,14 @@ namespace ScrewTurn.Wiki { } } + /// + /// Determines whether the application was started for the first time. + /// + /// true if the application was started for the first time, false otherwise. + public bool IsFirstApplicationStart() { + return isFirstStart; + } + } } diff --git a/Core/StartupTools.cs b/Core/StartupTools.cs index 69f5201..14fc1bd 100644 --- a/Core/StartupTools.cs +++ b/Core/StartupTools.cs @@ -68,39 +68,34 @@ namespace ScrewTurn.Wiki { ISettingsStorageProviderV30 ssp = ProviderLoader.LoadSettingsStorageProvider(WebConfigurationManager.AppSettings["SettingsStorageProvider"]); ssp.Init(Host.Instance, GetSettingsStorageProviderConfiguration()); Collectors.SettingsProvider = ssp; - //Settings.Instance = new Settings(ssp); if(!(ssp is SettingsStorageProvider)) { // Update DLLs from public\Plugins UpdateDllsIntoSettingsProvider(ssp, ProviderLoader.SettingsStorageProviderAssemblyName); } - // Initialize authorization managers - //AuthReader.Instance = new AuthReader(Settings.Provider); - //AuthWriter.Instance = new AuthWriter(Settings.Provider); - //AuthChecker.Instance = new AuthChecker(Settings.Provider); - - if(ssp.GetMetaDataItem(MetaDataItem.AccountActivationMessage, null) == "") - ssp.SetMetaDataItem(MetaDataItem.AccountActivationMessage, null, Defaults.AccountActivationMessageContent); - if(ssp.GetMetaDataItem(MetaDataItem.EditNotice, null) == "") - ssp.SetMetaDataItem(MetaDataItem.EditNotice, null, Defaults.EditNoticeContent); - if(ssp.GetMetaDataItem(MetaDataItem.Footer, null) == "") - ssp.SetMetaDataItem(MetaDataItem.Footer, null, Defaults.FooterContent); - if(ssp.GetMetaDataItem(MetaDataItem.Header, null) == "") - ssp.SetMetaDataItem(MetaDataItem.Header, null, Defaults.HeaderContent); - if(ssp.GetMetaDataItem(MetaDataItem.PasswordResetProcedureMessage, null) == "") - ssp.SetMetaDataItem(MetaDataItem.PasswordResetProcedureMessage, null, Defaults.PasswordResetProcedureMessageContent); - if(ssp.GetMetaDataItem(MetaDataItem.Sidebar, null) == "") - ssp.SetMetaDataItem(MetaDataItem.Sidebar, null, Defaults.SidebarContent); - if(ssp.GetMetaDataItem(MetaDataItem.PageChangeMessage, null) == "") - ssp.SetMetaDataItem(MetaDataItem.PageChangeMessage, null, Defaults.PageChangeMessage); - if(ssp.GetMetaDataItem(MetaDataItem.DiscussionChangeMessage, null) == "") - ssp.SetMetaDataItem(MetaDataItem.DiscussionChangeMessage, null, Defaults.DiscussionChangeMessage); - if(ssp.GetMetaDataItem(MetaDataItem.ApproveDraftMessage, null) == "") { - ssp.SetMetaDataItem(MetaDataItem.ApproveDraftMessage, null, Defaults.ApproveDraftMessage); + if(ssp.IsFirstApplicationStart()) { + if(ssp.GetMetaDataItem(MetaDataItem.AccountActivationMessage, null) == "") + ssp.SetMetaDataItem(MetaDataItem.AccountActivationMessage, null, Defaults.AccountActivationMessageContent); + if(ssp.GetMetaDataItem(MetaDataItem.EditNotice, null) == "") + ssp.SetMetaDataItem(MetaDataItem.EditNotice, null, Defaults.EditNoticeContent); + if(ssp.GetMetaDataItem(MetaDataItem.Footer, null) == "") + ssp.SetMetaDataItem(MetaDataItem.Footer, null, Defaults.FooterContent); + if(ssp.GetMetaDataItem(MetaDataItem.Header, null) == "") + ssp.SetMetaDataItem(MetaDataItem.Header, null, Defaults.HeaderContent); + if(ssp.GetMetaDataItem(MetaDataItem.PasswordResetProcedureMessage, null) == "") + ssp.SetMetaDataItem(MetaDataItem.PasswordResetProcedureMessage, null, Defaults.PasswordResetProcedureMessageContent); + if(ssp.GetMetaDataItem(MetaDataItem.Sidebar, null) == "") + ssp.SetMetaDataItem(MetaDataItem.Sidebar, null, Defaults.SidebarContent); + if(ssp.GetMetaDataItem(MetaDataItem.PageChangeMessage, null) == "") + ssp.SetMetaDataItem(MetaDataItem.PageChangeMessage, null, Defaults.PageChangeMessage); + if(ssp.GetMetaDataItem(MetaDataItem.DiscussionChangeMessage, null) == "") + ssp.SetMetaDataItem(MetaDataItem.DiscussionChangeMessage, null, Defaults.DiscussionChangeMessage); + if(ssp.GetMetaDataItem(MetaDataItem.ApproveDraftMessage, null) == "") { + ssp.SetMetaDataItem(MetaDataItem.ApproveDraftMessage, null, Defaults.ApproveDraftMessage); + } } - // Load MIME Types MimeTypes.Init(); // Load Providers @@ -190,22 +185,6 @@ namespace ScrewTurn.Wiki { Collectors.TryEnable(Settings.DefaultCacheProvider); } - // Load Snippets and templates - //Snippets.Instance = new Snippets(); - //Templates.Instance = new Templates(); - - // Load Pages - //Pages.Instance = new Pages(); - - // Load Nav. Paths - //NavigationPaths.Instance = new NavigationPaths(); - - // Create Collisions class - //Collisions.Instance = new Collisions(); - - // Create Redirections class - //Redirections.Instance = new Redirections(); - // Create the Main Page, if needed if(Pages.FindPage(Settings.DefaultPage) == null) CreateMainPage(); diff --git a/PluginFramework/ISettingsStorageProvider.cs b/PluginFramework/ISettingsStorageProvider.cs index 10e3f7a..415dbbe 100644 --- a/PluginFramework/ISettingsStorageProvider.cs +++ b/PluginFramework/ISettingsStorageProvider.cs @@ -237,6 +237,12 @@ namespace ScrewTurn.Wiki.PluginFramework { /// If or are empty. bool UpdateOutgoingLinksForRename(string oldName, string newName); + /// + /// Determines whether the application was started for the first time. + /// + /// true if the application was started for the first time, false otherwise. + bool IsFirstApplicationStart(); + } /// diff --git a/SqlProvidersCommon/SqlSettingsStorageProviderBase.cs b/SqlProvidersCommon/SqlSettingsStorageProviderBase.cs index 62cc21e..b3442e7 100644 --- a/SqlProvidersCommon/SqlSettingsStorageProviderBase.cs +++ b/SqlProvidersCommon/SqlSettingsStorageProviderBase.cs @@ -19,6 +19,11 @@ namespace ScrewTurn.Wiki.Plugins.SqlCommon { private IAclManager aclManager; + /// + /// Holds a value indicating whether the application was started for the first time. + /// + protected bool isFirstStart = false; + /// /// Initializes the Storage Provider. /// @@ -1300,6 +1305,14 @@ namespace ScrewTurn.Wiki.Plugins.SqlCommon { return somethingUpdated || rows > 0; } + /// + /// Determines whether the application was started for the first time. + /// + /// true if the application was started for the first time, false otherwise. + public bool IsFirstApplicationStart() { + return isFirstStart; + } + #endregion #region AclManager backend methods diff --git a/SqlServerProviders/SqlServerSettingsStorageProvider.cs b/SqlServerProviders/SqlServerSettingsStorageProvider.cs index 331380c..f6a1636 100644 --- a/SqlServerProviders/SqlServerSettingsStorageProvider.cs +++ b/SqlServerProviders/SqlServerSettingsStorageProvider.cs @@ -13,7 +13,7 @@ namespace ScrewTurn.Wiki.Plugins.SqlServer { /// public class SqlServerSettingsStorageProvider : SqlSettingsStorageProviderBase { - private readonly ComponentInformation info = new ComponentInformation("SQL Server Settings Storage Provider", "ScrewTurn Software", "3.0.1.446", "http://www.screwturn.eu", "http://www.screwturn.eu/Version/SQLServerProv/Settings.txt"); + private readonly ComponentInformation info = new ComponentInformation("SQL Server Settings Storage Provider", "ScrewTurn Software", "3.0.1.461", "http://www.screwturn.eu", "http://www.screwturn.eu/Version/SQLServerProv/Settings.txt"); private readonly SqlServerCommandBuilder commandBuilder = new SqlServerCommandBuilder(); @@ -136,6 +136,7 @@ namespace ScrewTurn.Wiki.Plugins.SqlServer { protected override void CreateOrUpdateDatabaseIfNecessary() { if(!SchemaExists()) { CreateStandardSchema(); + isFirstStart = true; } if(SchemaNeedsUpdate()) { // Run minor update batches...