EditConfigBox.ascx.cs :  » Bloggers » dasBlog » newtelligence » DasBlog » Web » C# / CSharp Open Source

Home
C# / CSharp Open Source
1.2.6.4 mono .net core
2.2.6.4 mono core
3.Aspect Oriented Frameworks
4.Bloggers
5.Build Systems
6.Business Application
7.Charting Reporting Tools
8.Chat Servers
9.Code Coverage Tools
10.Content Management Systems CMS
11.CRM ERP
12.Database
13.Development
14.Email
15.Forum
16.Game
17.GIS
18.GUI
19.IDEs
20.Installers Generators
21.Inversion of Control Dependency Injection
22.Issue Tracking
23.Logging Tools
24.Message
25.Mobile
26.Network Clients
27.Network Servers
28.Office
29.PDF
30.Persistence Frameworks
31.Portals
32.Profilers
33.Project Management
34.RSS RDF
35.Rule Engines
36.Script
37.Search Engines
38.Sound Audio
39.Source Control
40.SQL Clients
41.Template Engines
42.Testing
43.UML
44.Web Frameworks
45.Web Service
46.Web Testing
47.Wiki Engines
48.Windows Presentation Foundation
49.Workflows
50.XML Parsers
C# / C Sharp
C# / C Sharp by API
C# / CSharp Tutorial
C# / CSharp Open Source » Bloggers » dasBlog 
dasBlog » newtelligence » DasBlog » Web » EditConfigBox.ascx.cs
using System;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Net;
using System.Net.Mail;
using System.Reflection;
using System.Resources;
using System.Security;
using System.Security.Permissions;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml.Serialization;

using newtelligence.DasBlog.Runtime;
using newtelligence.DasBlog.Util;
using newtelligence.DasBlog.Util.Html;
using newtelligence.DasBlog.Web.Core;
using System.Web.Caching;


namespace newtelligence.DasBlog.Web{
  public partial class EditConfigBox : UserControl
  {
    const string defaultGravatarSize = "80";
    const string passwordPlaceHolder = "########";
    protected const string SPAM_OPTION_DELETE = "DELETE";
    protected const string SPAM_OPTION_SAVE = "SAVE";
    protected ResourceManager resmgr;

    public PingServiceCollection PingServiceCollection
    {
      get
      {
                DataCache cache = CacheFactory.GetCache();

        PingServiceCollection pingServices = (PingServiceCollection) cache["PingServices"];
        if (pingServices == null)
        {
          pingServices = GetPingServiceInfo();
        }
        return pingServices;
      }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
      if (SiteSecurity.IsInRole("admin") == false)
      {
        Response.Redirect("~/FormatPage.aspx?path=SiteConfig/accessdenied.format.html");
      }

      ID = "EditConfigBox";

      SharedBasePage requestPage = Page as SharedBasePage;
      SiteConfig siteConfig = requestPage.SiteConfig;

      if (!IsPostBack)
      {
        textContact.Text = siteConfig.Contact;
        textCopyright.Text = siteConfig.Copyright;
        textPassword.Text = passwordPlaceHolder;
        textConfirmPassword.Text = passwordPlaceHolder;
        textFrontPageCategory.Text = siteConfig.FrontPageCategory;
        textFrontPageDayCount.Text = siteConfig.FrontPageDayCount.ToString();
        textFrontPageEntryCount.Text = siteConfig.FrontPageEntryCount.ToString();
        textEntriesPerPage.Text = siteConfig.EntriesPerPage.ToString();
        textContentLookaheadDays.Text = siteConfig.ContentLookaheadDays.ToString();
        textMainMaxDaysInRss.Text = siteConfig.RssDayCount.ToString();
        textMainMaxEntriesInRss.Text = siteConfig.RssMainEntryCount.ToString();
        textOtherMaxEntriesInRss.Text = siteConfig.RssEntryCount.ToString();
        checkAlwaysIncludeContentInRSS.Checked = siteConfig.AlwaysIncludeContentInRSS;
        checkEnableRSSItemFooter.Checked = siteConfig.EnableRssItemFooters;
        textRSSItemFooter.Text = siteConfig.RssItemFooter;
        checkPop3Enabled.Checked = siteConfig.EnablePop3;
        textPop3Interval.Text = siteConfig.Pop3Interval.ToString();
        textPop3Server.Text = siteConfig.Pop3Server;
        textPop3SubjectPrefix.Text = siteConfig.Pop3SubjectPrefix;
        textPop3Username.Text = siteConfig.Pop3Username;
        textPop3Password.Text = passwordPlaceHolder;
        textPop3PasswordRepeat.Text = passwordPlaceHolder;
        textRoot.Text = siteConfig.Root;
        textSmtpServer.Text = siteConfig.SmtpServer;
        textSmtpPort.Text = siteConfig.SmtpPort.ToString();
        checkUseSSLForSMTP.Checked = siteConfig.UseSSLForSMTP;
        textNotificationEmailAddress.Text = siteConfig.NotificationEMailAddress;
        textSubtitle.Text = siteConfig.Subtitle;
        textSmtpServer.Text = siteConfig.SmtpServer;
        checkEnableCoComment.Checked = siteConfig.EnableCoComment;
        checkComments.Checked = siteConfig.SendCommentsByEmail;
        checkPingbacks.Checked = siteConfig.SendPingbacksByEmail;
        checkReferrals.Checked = siteConfig.SendReferralsByEmail;
        checkPosts.Checked = siteConfig.SendPostsByEmail;
        checkTrackbacks.Checked = siteConfig.SendTrackbacksByEmail;
        checkShowCommentCounters.Checked = siteConfig.ShowCommentCount;
        checkEnableAutoPingback.Checked = siteConfig.EnableAutoPingback;
        checkEnableBloggerApi.Checked = siteConfig.EnableBloggerApi;
        checkEnableComments.Checked = siteConfig.EnableComments;
        checkEnableCommentApi.Checked = siteConfig.EnableCommentApi;
        checkShowCommentsWhenViewingEntry.Checked = siteConfig.ShowCommentsWhenViewingEntry;
        checkEnableConfigEditService.Checked = siteConfig.EnableConfigEditService;
        checkEnableEditService.Checked = siteConfig.EnableEditService;
        checkEnableAutoSave.Checked = siteConfig.EnableAutoSave;
        checkEnablePingbackService.Checked = siteConfig.EnablePingbackService;
        checkEnableTrackbackService.Checked = siteConfig.EnableTrackbackService;
        checkEnableClickThrough.Checked = siteConfig.EnableClickThrough;
        checkEnableAggregatorBugging.Checked = siteConfig.EnableAggregatorBugging;
        checkXssEnabled.Checked = siteConfig.EnableXSSUpstream;
        textXssEndpoint.Text = siteConfig.XSSUpstreamEndpoint;
        textXssInterval.Text = siteConfig.XSSUpstreamInterval.ToString();
        textXssPassword.Text = passwordPlaceHolder;
        textXssPasswordRepeat.Text = passwordPlaceHolder;
        textXssUsername.Text = siteConfig.XSSUpstreamUsername;
        textXssRssFilename.Text = siteConfig.XSSRSSFilename;
        checkPop3InlineAttachedPictures.Checked = siteConfig.Pop3InlineAttachedPictures;
        textPop3AttachedPicturesPictureThumbnailHeight.Text = siteConfig.Pop3InlinedAttachedPicturesThumbHeight.ToString();
        mailDeletionAll.Checked = siteConfig.Pop3DeleteAllMessages;
        mailDeletionProcessed.Checked = !siteConfig.Pop3DeleteAllMessages;
        logIgnoredEmails.Checked = siteConfig.Pop3LogIgnoredEmails;
        checkShowItemDescriptionInAggregatedViews.Checked = siteConfig.ShowItemDescriptionInAggregatedViews;
        checkEnableStartPageCaching.Checked = siteConfig.EnableStartPageCaching;
        checkEnableBlogrollDescription.Checked = siteConfig.EnableBlogrollDescription;
        checkEntryTitleAsLink.Checked = siteConfig.EntryTitleAsLink;
        checkEnableUrlRewriting.Checked = siteConfig.EnableUrlRewriting;
        checkEnableCrosspost.Checked = siteConfig.EnableCrossposts;
        checkCategoryAllEntries.Checked = siteConfig.CategoryAllEntries;
        checkReferralUrlBlacklist.Checked = siteConfig.EnableReferralUrlBlackList;
        textReferralBlacklist.Text = siteConfig.ReferralUrlBlackList;
        checkCaptchaEnabled.Checked = siteConfig.EnableCaptcha;
        checkReferralBlacklist404s.Checked = siteConfig.EnableReferralUrlBlackList404s;
        textRSSChannelImage.Text = siteConfig.ChannelImageUrl;
        checkEnableTitlePermaLink.Checked = siteConfig.EnableTitlePermaLink;
        checkEnableTitlePermaLinkUnique.Checked = siteConfig.EnableTitlePermaLinkUnique;
        checkEnableTitlePermaLinkSpaces.Checked = siteConfig.EnableTitlePermaLinkSpaces;
        checkEnableEncryptLoginPassword.Checked = siteConfig.EncryptLoginPassword;
        checkEnableSmtpAuthentication.Checked = siteConfig.EnableSmtpAuthentication;
        textSmtpUsername.Text = siteConfig.SmtpUserName;
        textSmtpPassword.Text = passwordPlaceHolder;
        textRssLanguage.Text = siteConfig.RssLanguage;
        checkEnableSearchHighlight.Checked = siteConfig.EnableSearchHighlight;
        checkEnableEntryReferral.Checked = siteConfig.EnableEntryReferrals;
        textFeedBurnerName.Text = siteConfig.FeedBurnerName;
        checkUseFeedScheme.Checked = siteConfig.UseFeedSchemeForSyndication;
        checkLogBlockedReferrals.Checked = siteConfig.LogBlockedReferrals;

                //populate the title space replacement options
                dropDownTitlePermalinkReplacementCharacter.Items.Clear();//in casee someone adds them in the ascx
                foreach (string s in TitleMapperModule.TitlePermalinkSpaceReplacementOptions) dropDownTitlePermalinkReplacementCharacter.Items.Add(s);
                dropDownTitlePermalinkReplacementCharacter.SelectedValue = siteConfig.TitlePermalinkSpaceReplacement;

        checkSpamBlockingEnabled.Checked = siteConfig.EnableSpamBlockingService;
        textSpamBlockingApiKey.Text = siteConfig.SpamBlockingServiceApiKey;
        optionSpamHandling.SelectedValue = siteConfig.EnableSpamModeration ? SPAM_OPTION_SAVE : SPAM_OPTION_DELETE;

        // setup the checkbox list to select which tags to allow
        checkBoxListAllowedTags.DataSource = siteConfig.AllowedTags;
        checkBoxListAllowedTags.DataTextField = "Name";
        checkBoxListAllowedTags.DataValueField = "Name";

        // enable comment moderation 
        checkCommentsRequireApproval.Checked = siteConfig.CommentsRequireApproval;

        // allow html and comments
        checkAllowHtml.Checked = siteConfig.CommentsAllowHtml;

        // populate from config - Gravatar
        GravatarPopulateForm();

        // supress email address display
        checkDisableEmailDisplay.Checked = siteConfig.SupressEmailAddressDisplay;

        checkEnableCommentDays.Checked = siteConfig.EnableCommentDays;

         checkAttemptToHtmlTidyContent.Checked = siteConfig.HtmlTidyContent;
         checkResolveCommenterIP.Checked = siteConfig.ResolveCommenterIP;

        //if ( siteConfig.EnableCommentDays ) 
        //{
        if (siteConfig.DaysCommentsAllowed > 0)
        {
          textDaysCommentsAllowed.Text = siteConfig.DaysCommentsAllowed.ToString();
        }
        //} 
        //else 
        //{
        //  textDaysCommentsAllowed.Text = null;
        //}

        // supress email address display
        checkDisableEmailDisplay.Checked = siteConfig.SupressEmailAddressDisplay;

        checkEnableCommentDays.Checked = siteConfig.EnableCommentDays;

        //if ( siteConfig.EnableCommentDays ) 
        //{
        if (siteConfig.DaysCommentsAllowed > 0)
        {
          textDaysCommentsAllowed.Text = siteConfig.DaysCommentsAllowed.ToString();
        }
        //} 
        //else 
        //{
        //  textDaysCommentsAllowed.Text = null;
        //}

        // email daily report
        checkDailyReport.Text = resmgr.GetString("text_daily_activity_report");
        checkDailyReport.Checked = siteConfig.EnableDailyReportEmail;

        WindowsTimeZoneCollection timeZones = WindowsTimeZone.TimeZones;
        foreach (WindowsTimeZone tz in timeZones)
        {
          listTimeZones.Items.Add(new ListItem(tz.DisplayName, tz.ZoneIndex.ToString()));
        }
        listTimeZones.SelectedValue = siteConfig.DisplayTimeZoneIndex.ToString();
        checkUseUTC.Checked = !siteConfig.AdjustDisplayTimeZone;

        //FIX: hardcoded path
        ThemeDictionary themes = BlogTheme.Load(SiteUtilities.MapPath("themes"));
        foreach (BlogTheme theme in themes.Values)
        {
                    // setting the selected item like this instead of
                    // using   listThemes.SelectedValue = siteConfig.Theme;
                    // prevents the page from breaking.
                    
                    ListItem item = new ListItem(theme.Title, theme.Name);
                    if (item.Value == siteConfig.Theme)
                    {
                        item.Selected = true;
                    }
                    listThemes.Items.Add(item);
        }
      
        textTitle.Text = siteConfig.Title;

        checkBoxListPingServices.DataSource = PingServiceCollection;
        checkBoxListPingServices.DataTextField = "Hyperlink";
        checkBoxListPingServices.DataValueField = "Endpoint";

        drpEntryEditControl.Items.Clear();
        foreach (string potentialAssembly in Directory.GetFiles(HttpRuntime.BinDirectory, "*.dll"))
        {
          try
          {
            Assembly a = Assembly.LoadFrom(potentialAssembly);
            foreach (Type potentialType in a.GetTypes())
            {
              if (potentialType.BaseType == typeof(EditControlAdapter))
              {
                drpEntryEditControl.Items.Add(new ListItem(potentialType.Name, potentialType.AssemblyQualifiedName));
              }
            }
          }
          catch (Exception)
          {
            //swallow
          }
        }

        //Reasonable default
        if (siteConfig.EntryEditControl == null || siteConfig.EntryEditControl.Trim().Length == 0)
        {
          siteConfig.EntryEditControl = typeof(FreeTextBoxAdapter).AssemblyQualifiedName;
        }
        DataBind();

        ListItem li = drpEntryEditControl.Items.FindByValue(siteConfig.EntryEditControl);
        if (li != null)
        {
          li.Selected = true;
        }
        else
        {
          drpEntryEditControl.SelectedIndex = 0;
        }

        foreach (PingService ps in siteConfig.PingServices)
        {
          checkBoxListPingServices.Items.FindByValue(ps.Endpoint).Selected = true;
        }

        foreach (ValidTag tag in siteConfig.AllowedTags)
        {
          checkBoxListAllowedTags.Items.FindByValue(tag.Name).Selected = tag.IsAllowed;
        }

        //check for Smtp permission
        if (SecurityManager.IsGranted(new SmtpPermission(SmtpAccess.ConnectToUnrestrictedPort)))
        {
          phSmtpTrustWarning.Visible = false;
        }
        else
        {
          phSmtpTrustWarning.Visible = true;
        }

        //check for Socket permission
        SocketPermission sp;
        if (String.IsNullOrEmpty(textPop3Server.Text))
        {
          sp = new SocketPermission(PermissionState.Unrestricted);
        }
        else
        {
          sp = new SocketPermission(NetworkAccess.Connect, TransportType.Tcp, textPop3Server.Text, 110);
        }

        if (SecurityManager.IsGranted(sp))
        {
          phPop3TrustWarning.Visible = false;
        }
        else
        {
          phPop3TrustWarning.Visible = true;
        }

        // georss stuff
        checkEnableGeoRss.Checked = siteConfig.EnableGeoRss;
        textGoogleMapsApi.Text = siteConfig.GoogleMapsApiKey;
        textDefaultLatitude.Text = siteConfig.DefaultLatitude.ToString(CultureInfo.InvariantCulture);
        textDefaultLongitude.Text = siteConfig.DefaultLongitude.ToString(CultureInfo.InvariantCulture);
        checkEnableGoogleMaps.Checked = siteConfig.EnableGoogleMaps;
        checkEnableDefaultLatLongForNonGeoCodedPosts.Checked = siteConfig.EnableDefaultLatLongForNonGeoCodedPosts;

                // OpenId
                chkAllowOpenIdAdmin.Checked = siteConfig.AllowOpenIdAdmin;
                chkAllowOpenIdCommenter.Checked = siteConfig.AllowOpenIdComments;
                chkBypassSpamOpenIdCommenter.Checked = siteConfig.BypassSpamOpenIdComment;


      } // end if !postback

      //enable list controls that may have been enabled client-side
      //in 2.0 if they are not enable we won't get there postback data
      checkBoxListAllowedTags.Enabled = true;
      dropGravatarRating.Enabled = true;
    }

    protected override void OnPreRender(EventArgs e)
    {
      CleanGravatar();
      CleanAutoExpire();
      CleanHtmlComments();
      CleanGeoRss();

      CreateClientScript();
    }

    static PingServiceCollection GetPingServiceInfo()
    {
      PingServiceCollection pingServiceCollection = new PingServiceCollection();
      string fullPath = SiteConfig.GetConfigPathFromCurrentContext() + "PingServices.xml";

      if (File.Exists(fullPath))
      {
        FileStream fileStream = FileUtils.OpenForRead(fullPath);

        if (fileStream != null)
        {
          try
          {
            XmlSerializer ser = new XmlSerializer(typeof(PingServiceCollection));
            StreamReader reader = new StreamReader(fileStream);
            pingServiceCollection = (PingServiceCollection) ser.Deserialize(reader);

                        // add to cache
                        DataCache cache = CacheFactory.GetCache();
            cache.Insert("PingServices", pingServiceCollection, new CacheDependency(fullPath));
          }
          catch (Exception e)
          {
            ErrorTrace.Trace(TraceLevel.Error, e);
          }
          finally
          {
            fileStream.Close();
          }
        }
      }

      // add some defaults
      if (pingServiceCollection.Count == 0)
      {
        pingServiceCollection = PingService.GetDefaultPingServices();
      }

      return pingServiceCollection;
    }

    protected void buttonSave_Click(object sender, EventArgs e)
    {
      if (!Page.IsValid)
      {
        // There were validation errors, save client states.
        CleanGravatar();
        CleanAutoExpire();
        CleanHtmlComments();
        CleanGeoRss();
        return;
      }

      SharedBasePage requestPage = Page as SharedBasePage;
      SiteConfig siteConfig = requestPage.SiteConfig;
      siteConfig.Contact = textContact.Text;
      siteConfig.Copyright = textCopyright.Text;
      siteConfig.FrontPageCategory = textFrontPageCategory.Text;
      siteConfig.FrontPageDayCount = int.Parse(textFrontPageDayCount.Text);
      siteConfig.FrontPageEntryCount = int.Parse(textFrontPageEntryCount.Text);
      siteConfig.EntriesPerPage = int.Parse(textEntriesPerPage.Text);
      try
      {
        siteConfig.ContentLookaheadDays = int.Parse(textContentLookaheadDays.Text);
      }
      catch (FormatException)
      {
        siteConfig.ContentLookaheadDays = 0;
      }
      siteConfig.RssDayCount = int.Parse(textMainMaxDaysInRss.Text);
      siteConfig.RssMainEntryCount = int.Parse(textMainMaxEntriesInRss.Text);
      siteConfig.RssEntryCount = int.Parse(textOtherMaxEntriesInRss.Text);
      siteConfig.AlwaysIncludeContentInRSS = checkAlwaysIncludeContentInRSS.Checked;
      siteConfig.EnableRssItemFooters = checkEnableRSSItemFooter.Checked;
      siteConfig.RssItemFooter = textRSSItemFooter.Text;
      siteConfig.EnablePop3 = checkPop3Enabled.Checked;
      siteConfig.Pop3Interval = int.Parse(textPop3Interval.Text);
      siteConfig.Pop3Server = textPop3Server.Text;
      siteConfig.Pop3SubjectPrefix = textPop3SubjectPrefix.Text;
      siteConfig.Pop3Username = textPop3Username.Text;
      if (textPop3Password.Text.Length > 0 &&
          textPop3Password.Text != passwordPlaceHolder)
      {
        siteConfig.Pop3Password = textPop3Password.Text;
      }
      siteConfig.Pop3DeleteAllMessages = mailDeletionAll.Checked;
      siteConfig.Pop3LogIgnoredEmails = logIgnoredEmails.Checked;
      siteConfig.EnableXSSUpstream = checkXssEnabled.Checked;
      siteConfig.XSSUpstreamEndpoint = textXssEndpoint.Text;
      siteConfig.XSSUpstreamInterval = int.Parse(textXssInterval.Text);
      if (textXssPassword.Text.Length > 0 &&
          textXssPassword.Text != passwordPlaceHolder)
      {
        siteConfig.XSSUpstreamPassword = textXssPassword.Text;
      }
      siteConfig.XSSUpstreamUsername = textXssUsername.Text;
      siteConfig.XSSRSSFilename = textXssRssFilename.Text;

      siteConfig.Root = textRoot.Text;
      siteConfig.SmtpServer = textSmtpServer.Text;
      siteConfig.SmtpPort = int.Parse(textSmtpPort.Text);
      siteConfig.UseSSLForSMTP = checkUseSSLForSMTP.Checked;
      siteConfig.NotificationEMailAddress = textNotificationEmailAddress.Text;
      siteConfig.SendCommentsByEmail = checkComments.Checked;
      siteConfig.EnableCoComment = checkEnableCoComment.Checked;
      siteConfig.SendPingbacksByEmail = checkPingbacks.Checked;
      siteConfig.SendReferralsByEmail = checkReferrals.Checked;
      siteConfig.SendTrackbacksByEmail = checkTrackbacks.Checked;
      siteConfig.SendPostsByEmail = checkPosts.Checked;
      siteConfig.EnableAutoPingback = checkEnableAutoPingback.Checked;
      siteConfig.EnableBloggerApi = checkEnableBloggerApi.Checked;
      siteConfig.EnableComments = checkEnableComments.Checked;
      siteConfig.EnableCommentApi = checkEnableCommentApi.Checked;
      siteConfig.ShowCommentsWhenViewingEntry = checkShowCommentsWhenViewingEntry.Checked;
      siteConfig.EnableConfigEditService = checkEnableConfigEditService.Checked;
      siteConfig.EnableEditService = checkEnableEditService.Checked;
      siteConfig.EnableAutoSave = checkEnableAutoSave.Checked;
      siteConfig.EnableTrackbackService = checkEnableTrackbackService.Checked;
      siteConfig.EnablePingbackService = checkEnablePingbackService.Checked;
      siteConfig.EnableClickThrough = checkEnableClickThrough.Checked;
      siteConfig.EnableAggregatorBugging = checkEnableAggregatorBugging.Checked;
      siteConfig.Subtitle = textSubtitle.Text;
      siteConfig.Title = textTitle.Text;
      siteConfig.ShowCommentCount = checkShowCommentCounters.Checked;
      siteConfig.Pop3InlineAttachedPictures = checkPop3InlineAttachedPictures.Checked;
      siteConfig.Pop3InlinedAttachedPicturesThumbHeight = int.Parse(textPop3AttachedPicturesPictureThumbnailHeight.Text);
      siteConfig.ShowItemDescriptionInAggregatedViews = checkShowItemDescriptionInAggregatedViews.Checked;
      siteConfig.EnableStartPageCaching = checkEnableStartPageCaching.Checked;
      siteConfig.EnableBlogrollDescription = checkEnableBlogrollDescription.Checked;
      siteConfig.EnableUrlRewriting = checkEnableUrlRewriting.Checked;
      siteConfig.DisplayTimeZoneIndex = Convert.ToInt32(listTimeZones.SelectedValue);
      siteConfig.AdjustDisplayTimeZone = !checkUseUTC.Checked;
      siteConfig.EntryTitleAsLink = checkEntryTitleAsLink.Checked;
      siteConfig.EnableCrossposts = checkEnableCrosspost.Checked;
      if (textPassword.Text.Length > 0 &&
          textPassword.Text != passwordPlaceHolder)
      {
        SiteSecurity.SetPassword(requestPage.User.Identity.Name, textPassword.Text);
      }
      siteConfig.CategoryAllEntries = checkCategoryAllEntries.Checked;
      requestPage.UserTheme = siteConfig.Theme = listThemes.SelectedValue;

      siteConfig.ReferralUrlBlackList = textReferralBlacklist.Text.TrimEnd(';');
      siteConfig.EnableReferralUrlBlackList = checkReferralUrlBlacklist.Checked;
      siteConfig.EnableCaptcha = checkCaptchaEnabled.Checked;
      siteConfig.EnableReferralUrlBlackList404s = checkReferralBlacklist404s.Checked;
      siteConfig.ChannelImageUrl = textRSSChannelImage.Text;
      siteConfig.EnableTitlePermaLink = checkEnableTitlePermaLink.Checked;
      siteConfig.EnableTitlePermaLinkUnique = checkEnableTitlePermaLinkUnique.Checked;
      siteConfig.EnableTitlePermaLinkSpaces = checkEnableTitlePermaLinkSpaces.Checked;
      siteConfig.EncryptLoginPassword = checkEnableEncryptLoginPassword.Checked;
      siteConfig.EnableSmtpAuthentication = checkEnableSmtpAuthentication.Checked;
      siteConfig.SmtpUserName = textSmtpUsername.Text;
      if (textSmtpPassword.Text.Length > 0 &&
          textSmtpPassword.Text != passwordPlaceHolder)
      {
        siteConfig.SmtpPassword = textSmtpPassword.Text;
      }
      siteConfig.RssLanguage = textRssLanguage.Text;
      siteConfig.EnableSearchHighlight = checkEnableSearchHighlight.Checked;
      siteConfig.EnableEntryReferrals = checkEnableEntryReferral.Checked;

      siteConfig.FeedBurnerName = textFeedBurnerName.Text.Trim();
      siteConfig.UseFeedSchemeForSyndication = checkUseFeedScheme.Checked;
      siteConfig.LogBlockedReferrals = checkLogBlockedReferrals.Checked;
      siteConfig.EnableSpamBlockingService = checkSpamBlockingEnabled.Checked;
      siteConfig.SpamBlockingServiceApiKey = textSpamBlockingApiKey.Text;
      siteConfig.EnableSpamModeration = (optionSpamHandling.SelectedValue != SPAM_OPTION_DELETE);
      siteConfig.EnableCommentDays = checkEnableCommentDays.Checked;
            siteConfig.HtmlTidyContent = checkAttemptToHtmlTidyContent.Checked;
            siteConfig.ResolveCommenterIP = checkResolveCommenterIP.Checked;

        siteConfig.TitlePermalinkSpaceReplacement = dropDownTitlePermalinkReplacementCharacter.SelectedValue;

      if (checkEnableCommentDays.Checked)
      {
        try
        {
          int days = Convert.ToInt32(textDaysCommentsAllowed.Text);
          if (days > 0)
          {
            siteConfig.DaysCommentsAllowed = days;
          }
        }
        catch (FormatException)
        {
          siteConfig.DaysCommentsAllowed = 60;
        }
      }
      else
      {
        siteConfig.DaysCommentsAllowed = 60;
      }

      // comments approval
      siteConfig.CommentsRequireApproval = checkCommentsRequireApproval.Checked;

      // removed the ability to edit the html tags, which are allowed for now
      foreach (ListItem li in checkBoxListAllowedTags.Items)
      {
        ValidTag tag = siteConfig.AllowedTags[li.Value];
        if (tag != null)
        {
          tag.IsAllowed = li.Selected;
        }
      }

      // comments allow html
      siteConfig.CommentsAllowHtml = checkAllowHtml.Checked;

      // comments allow Gravatar and alt path
      GravatarPopulateConfig();

      // supress email address display
      siteConfig.SupressEmailAddressDisplay = checkDisableEmailDisplay.Checked;

      // enable daily report email
      siteConfig.EnableDailyReportEmail = checkDailyReport.Checked;

      PingServiceCollection savePingServices = new PingServiceCollection();

      foreach (PingService pingService in PingServiceCollection)
      {
        if (checkBoxListPingServices.Items.FindByValue(pingService.Endpoint).Selected)
        {
          savePingServices.Add(pingService);
        }
      }

      siteConfig.PingServices = savePingServices;
      siteConfig.EntryEditControl = drpEntryEditControl.SelectedValue;

      // GeoRSS stuff.
      siteConfig.EnableGeoRss = checkEnableGeoRss.Checked;
      if (checkEnableGeoRss.Checked)
      {
        siteConfig.EnableDefaultLatLongForNonGeoCodedPosts = checkEnableDefaultLatLongForNonGeoCodedPosts.Checked;
        if (checkEnableDefaultLatLongForNonGeoCodedPosts.Checked)
        {
          double latitude;
          if (double.TryParse(textDefaultLatitude.Text, NumberStyles.Float, CultureInfo.InvariantCulture, out latitude))
          {
            siteConfig.DefaultLatitude = latitude;
          }

          double longitude;
          if (double.TryParse(textDefaultLongitude.Text, NumberStyles.Float, CultureInfo.InvariantCulture, out longitude))
          {
            siteConfig.DefaultLongitude = longitude;
          }
        }

        siteConfig.EnableGoogleMaps = checkEnableGoogleMaps.Checked;
        if (checkEnableGoogleMaps.Checked)
        {
          siteConfig.GoogleMapsApiKey = textGoogleMapsApi.Text;
        }
      }

            // open id stuff
            siteConfig.AllowOpenIdAdmin = chkAllowOpenIdAdmin.Checked;
            siteConfig.AllowOpenIdComments = chkAllowOpenIdCommenter.Checked;
            siteConfig.BypassSpamOpenIdComment = chkBypassSpamOpenIdCommenter.Checked;

      SiteConfig.Save(siteConfig);

      if (siteConfig.EnableReferralUrlBlackList && siteConfig.ReferralUrlBlackList.Length != 0)
      {
        ReferralBlackListFactory.AddBlacklist(new ReferralUrlBlacklist(), siteConfig.ReferralUrlBlackList);
      }
      else
      {
        ReferralBlackListFactory.RemoveBlacklist(typeof(ReferralUrlBlacklist));
      }

      requestPage.Redirect(Page.Request.Url.AbsoluteUri);
    }

    protected void EditConfigBox_Init(object sender, EventArgs e)
    {
      resmgr = ApplicationResourceTable.Get();
    }

    protected void buttonTestSMTP_Click(object sender, EventArgs e)
    {
      SharedBasePage requestPage = Page as SharedBasePage;
      SiteConfig siteConfig = requestPage.SiteConfig;

      if (textSmtpServer.Text != "" & textNotificationEmailAddress.Text != "")
      {
        MailMessage emailMessage = new MailMessage();

        emailMessage.To.Add(textNotificationEmailAddress.Text);
        emailMessage.Subject = String.Format("dasBlog test message");
        emailMessage.Body =
          String.Format("This is a test message from dasBlog. If you are reading this then everything is working properly.");
        emailMessage.IsBodyHtml = false;
        emailMessage.BodyEncoding = Encoding.UTF8;
        emailMessage.From = new MailAddress(siteConfig.Contact);
        SendMailInfo sendMailInfo = new SendMailInfo(emailMessage, textSmtpServer.Text,
                                                     checkEnableSmtpAuthentication.Checked, checkUseSSLForSMTP.Checked,
                                                     textSmtpUsername.Text, textSmtpPassword.Text,
                                                     int.Parse(textSmtpPort.Text));

        try
        {
          sendMailInfo.SendMyMessage();
        }
        catch (Exception ex)
        {
          //RyanG: Decode the real reason the error occured by looking at the inner exceptions
          StringBuilder exceptionMessage = new StringBuilder();
          Exception lastException = ex;
          while (lastException != null)
          {
            if (exceptionMessage.Length > 0)
            {
              exceptionMessage.Append("; ");
            }
            exceptionMessage.Append(lastException.Message);
            lastException = lastException.InnerException;
          }

          ILoggingDataService logService = requestPage.LoggingService;
          logService.AddEvent(
            new EventDataItem(EventCodes.SmtpError, "", exceptionMessage.ToString()));

          Response.Redirect("FormatPage.aspx?path=SiteConfig/pageerror.format.html", true);
        }
      }
    }

    void CreateClientScript()
    {
      checkAllowHtml.Attributes.Add("onclick",
                                    WebUtil.CreateEnableDisableScript(checkAllowHtml, checkBoxListAllowedTags));

      checkEnableGeoRss.Attributes.Add("onclick",
                                       WebUtil.CreateEnableDisableScript(checkEnableGeoRss,
                                                                         checkEnableDefaultLatLongForNonGeoCodedPosts,
                                                                         textDefaultLatitude,
                                                                         textDefaultLongitude,
                                                                         checkEnableGoogleMaps,
                                                                         textGoogleMapsApi));

      checkEnableGravatar.Attributes.Add("onclick", WebUtil.CreateEnableDisableScript(checkEnableGravatar,
                                                                                      textGravatarSize,
                                                                                      textNoGravatarPath,
                                                                                      textGravatarBorderColor,
                                                                                      dropGravatarRating));

      checkEnableCommentDays.Attributes.Add("onclick",
                                            String.Format(
                                              "{0}if(document.getElementById('{1}').value == ''){{document.getElementById('{1}').value = '60';}}",
                                              WebUtil.CreateEnableDisableScript(checkEnableCommentDays,
                                                                                textDaysCommentsAllowed),
                                              textDaysCommentsAllowed.ClientID));
    }

    #region Cleanup Routines
    void CleanGeoRss()
    {
      checkEnableDefaultLatLongForNonGeoCodedPosts.Enabled = checkEnableGeoRss.Checked;
      textDefaultLatitude.Enabled = checkEnableGeoRss.Checked;
      textDefaultLongitude.Enabled = checkEnableGeoRss.Checked;
      checkEnableGoogleMaps.Enabled = checkEnableGeoRss.Checked;
      textGoogleMapsApi.Enabled = checkEnableGeoRss.Checked;
    }

    void CleanAutoExpire()
    {
      textDaysCommentsAllowed.Enabled = checkEnableCommentDays.Checked;
      textDefaultLatitude.Enabled = checkEnableCommentDays.Checked;
      textDefaultLongitude.Enabled = checkEnableCommentDays.Checked;
      checkEnableGoogleMaps.Enabled = checkEnableCommentDays.Checked;
      textGoogleMapsApi.Enabled = checkEnableCommentDays.Checked;
    }

    void CleanHtmlComments()
    {
      checkBoxListAllowedTags.Enabled = checkAllowHtml.Checked;
    }

    void CleanGravatar()
    {
      textGravatarSize.Enabled = checkEnableGravatar.Checked;
      textNoGravatarPath.Enabled = checkEnableGravatar.Checked;
      textGravatarBorderColor.Enabled = checkEnableGravatar.Checked;
      dropGravatarRating.Enabled = checkEnableGravatar.Checked;
    }
    #endregion

    #region Gravatar Support
    void GravatarPopulateForm()
    {
      SharedBasePage requestPage = Page as SharedBasePage;
      SiteConfig siteConfig = requestPage.SiteConfig;

      checkEnableGravatar.Checked = siteConfig.CommentsAllowGravatar;

      if (!String.IsNullOrEmpty(siteConfig.CommentsGravatarSize))
      {
        int gpix = Convert.ToInt32(siteConfig.CommentsGravatarSize);
        if (gpix > 0)
        {
          textGravatarSize.Text = gpix.ToString();
        }
        else
        {
          textGravatarSize.Text = defaultGravatarSize;
        }
      }

      if (siteConfig.CommentsGravatarNoImgPath != null)
      {
        textNoGravatarPath.Text = siteConfig.CommentsGravatarNoImgPath;
      }

      if (siteConfig.CommentsGravatarBorder != null)
      {
        textGravatarBorderColor.Text = siteConfig.CommentsGravatarBorder;
      }

      if (siteConfig.CommentsGravatarRating != null)
      {
        dropGravatarRating.SelectedValue = siteConfig.CommentsGravatarRating;
      }
    }

    void GravatarPopulateConfig()
    {
      SharedBasePage requestPage = Page as SharedBasePage;
      SiteConfig siteConfig = requestPage.SiteConfig;

      siteConfig.CommentsAllowGravatar = checkEnableGravatar.Checked;
      siteConfig.CommentsGravatarNoImgPath = textNoGravatarPath.Text.Trim();
      siteConfig.CommentsGravatarBorder = textGravatarBorderColor.Text.Trim();
      siteConfig.CommentsGravatarRating = dropGravatarRating.SelectedValue;

      try
      {
        int gpix = Convert.ToInt32(textGravatarSize.Text.Trim());
        if (gpix > 0 && gpix <= 80)
        {
          siteConfig.CommentsGravatarSize = gpix.ToString();
        }
        else
        {
          siteConfig.CommentsGravatarSize = defaultGravatarSize;
        }
      }
      catch (FormatException)
      {
        siteConfig.CommentsGravatarSize = String.Empty;
      }
    }
    #endregion

    #region GeoRSS Validation
    protected void cvDefaultLatitude_ServerValidate(object source, ServerValidateEventArgs args)
    {
      args.IsValid = false;

      CheckBox chkEnableGeoRss = FindControl(checkEnableGeoRss.ID) as CheckBox;
      CheckBox chkEnableDefaultLatLong = FindControl(checkEnableDefaultLatLongForNonGeoCodedPosts.ID) as CheckBox;

      if (chkEnableGeoRss != null && chkEnableGeoRss.Checked &&
        chkEnableDefaultLatLong != null && chkEnableDefaultLatLong.Checked)
      {
        double value;
        if (double.TryParse(args.Value, NumberStyles.Float, CultureInfo.InvariantCulture, out value))
        {
          if (value >= -90d && value <= 90d)
          {
            args.IsValid = true;
          }
        }
      }
      else
      {
        args.IsValid = true;
      }
    }

    protected void cvDefaultLongitude_ServerValidate(object source, ServerValidateEventArgs args)
    {
      args.IsValid = false;
      
      CheckBox chkEnableGeoRss = FindControl(checkEnableGeoRss.ID) as CheckBox;
      CheckBox chkEnableDefaultLatLong = FindControl(checkEnableDefaultLatLongForNonGeoCodedPosts.ID) as CheckBox;
      
      if (chkEnableGeoRss != null && chkEnableGeoRss.Checked &&
        chkEnableDefaultLatLong != null && chkEnableDefaultLatLong.Checked)
      {
        double value;
        if (double.TryParse(args.Value, NumberStyles.Float, CultureInfo.InvariantCulture, out value))
        {
          if (value >= -180d && value <= 180d)
          {
            args.IsValid = true;
          }
        }
      }
      else
      {
        args.IsValid = true;
      }
    }

    protected void cvGoogleMapsApi_ServerValidate(object source, ServerValidateEventArgs args)
    {
      args.IsValid = false;

      CheckBox chkEnableGeoRss = FindControl(checkEnableGeoRss.ID) as CheckBox;
      CheckBox chkGoogleMapsApi = FindControl(checkEnableGoogleMaps.ID) as CheckBox;

      if (chkEnableGeoRss != null && chkEnableGeoRss.Checked &&
          chkGoogleMapsApi != null && chkGoogleMapsApi.Checked)
      {
        args.IsValid = chkGoogleMapsApi.Checked && !String.IsNullOrEmpty(args.Value) ||
                       !chkGoogleMapsApi.Checked;
      }
      else
      {
        args.IsValid = true;
      }
    }
    #endregion

    #region Web Form Designer generated code
    protected override void OnInit(EventArgs e)
    {
      //
      // CODEGEN: This call is required by the ASP.NET Web Form Designer.
      //
      InitializeComponent();
      base.OnInit(e);
      optionSpamHandling.Items.AddRange(new ListItem[]
                                          {
                                            new ListItem(resmgr.GetString("text_save_spam"), SPAM_OPTION_SAVE),
                                            new ListItem(resmgr.GetString("text_delete_spam"), SPAM_OPTION_DELETE)
                                          });
    }

    /// <summary>
    ///    Required method for Designer support - do not modify
    ///    the contents of this method with the code editor.
    /// </summary>
    void InitializeComponent()
    {
      this.Init += new System.EventHandler(this.EditConfigBox_Init);
    }
    #endregion
  }
}
www.java2v.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.