// // AboutPageConfiguration.cs // // Author: // Carsten Sonne Larsen // // Copyright (c) 2013 Carsten Sonne Larsen // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. using System; using System.Collections.Generic; using Ntp.Analyzer.Config.Destination; using Ntp.Analyzer.Config.Navigation; using Ntp.Config; namespace Ntp.Analyzer.Config.Page { public sealed class AboutPageConfiguration : PageConfigurationBase, ILinkable { private AboutPageConfiguration ( ServerConfiguration server, string configName, int indentLevel, int frequency, bool initialRun, bool fixedRun, string theme, string title, int serverId, string header, string content, DestinationCollection destinations, string link) : base( server, configName, indentLevel, frequency, initialRun, fixedRun, theme, title, destinations, link) { this.header = header; this.content = content; this.serverId = serverId; } private static readonly String[] Params = new[] { "AboutPage", "Frequency", "InitialRun", "FixedRun", "Template", "PageTitle", "ServerID", "ContentTitle", "Content", FileCollection.Identifier, "Link" }; private readonly string content; private readonly string header; private readonly int serverId; public string Header { get { return header; } } public string Content { get { return content; } } public int ServerId { get { return serverId; } } protected override IEnumerable Items { get { return new object[] { ConfigName, Frequency, InitialRun ? 1 : 0, FixedRun ? 1 : 0, Theme, Title, ServerId, Header, Content, Destinations, Link }; } } public override string ToString () { return ConfigText (Params, Items); } public static AboutPageConfiguration Create ( ServerConfiguration server, ConfigurationBlock config) { Dictionary options = GetOptions (Params, config); ConfigurationBlock contentBlock = FindSingleBlock ("Content", config); string content = String.Join (Environment.NewLine, contentBlock.Lines, 1, contentBlock.Lines.Length - 2) .Trim ().Replace ("\t", String.Empty); return new AboutPageConfiguration ( server, GetOptionConfigName (options, Params [0], Params [0], true), config.IndentLevel, GetOptionInteger (options, "Frequency", Params [0], true), GetOptionBoolean (options, "InitialRun", Params [0], false, true), GetOptionBoolean (options, "FixedRun", Params [0], false, true), GetOptionString (options, "Template", Params [0], false, "default"), GetOptionString (options, "PageTitle", Params [0], true), GetOptionInteger (options, "ServerID", Params [0], false), GetOptionString (options, "ContentTitle", Params [0], false, "ContentTitle"), content, FileCollection.Create (server, config), GetOptionString (options, "Link", Params [0], true)); } } }