blogroll.aspx.cs

来自「个人博客系统」· CS 代码 · 共 145 行

CS
145
字号
#region Using

using System;
using System.IO;
using System.Xml;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

#endregion

using BlogEngine.Core;

public partial class admin_Pages_blogroll : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
    if (!Page.IsPostBack)
    {
      BindSettings();
      BindBlogroll();

      if (!String.IsNullOrEmpty(Request.QueryString["delete"]))
      {
        DeleteBlog();
        Response.Redirect(Request.FilePath, true);
      }
    }

    btnSaveSettings.Text = Resources.labels.save + " " + Resources.labels.settings.ToLowerInvariant();
    btnSave.Click += new EventHandler(btnSave_Click);
    btnSaveSettings.Click += new EventHandler(btnSaveSettings_Click);

    Page.Title = Resources.labels.blogroll;
    btnSave.Text = Resources.labels.add;
  }

  #region Event handlers

  private void btnSaveSettings_Click(object sender, EventArgs e)
  {
    BlogSettings.Instance.BlogrollMaxLength = int.Parse(txtMaxLength.Text);
    BlogSettings.Instance.BlogrollVisiblePosts = int.Parse(ddlVisiblePosts.SelectedValue);
    BlogSettings.Instance.BlogrollUpdateMinutes = int.Parse(txtUpdateFrequency.Text);
    BlogSettings.Instance.Save();
    Response.Redirect(Request.FilePath, true);
  }

  private void btnSave_Click(object sender, EventArgs e)
  {
    AddBlog();
    Response.Redirect(Request.FilePath, true);
  }

  #endregion

  #region Methods

  private void BindBlogroll()
  {
    string fileName = Server.MapPath(BlogSettings.Instance.StorageLocation)  + "blogroll.xml";
    if (File.Exists(fileName))
    {
      XmlDocument doc = new XmlDocument();
      doc.Load(fileName);

      rep.DataSource = doc.SelectNodes("opml/body/outline");
      rep.DataBind();
    }
  }

  private void AddBlog()
  {
    string fileName = Server.MapPath(BlogSettings.Instance.StorageLocation) + "blogroll.xml";
    if (File.Exists(fileName))
    {
      XmlDocument doc = new XmlDocument();
      doc.Load(fileName);

      XmlElement element = doc.CreateElement("outline");

      XmlAttribute title = doc.CreateAttribute("title");
      title.InnerText = txtTitle.Text.Replace("\"", "'");
      element.Attributes.Append(title);

      XmlAttribute desc = doc.CreateAttribute("description");
      desc.InnerText = txtDescription.Text;
      element.Attributes.Append(desc);

      XmlAttribute xfn = doc.CreateAttribute("xfn");
      foreach (ListItem item in cblXfn.Items)
      {
        if (item.Selected)
          xfn.InnerText += item.Text + ";";
      }

      if (xfn.InnerText.Length > 0)
      {
        xfn.InnerText = xfn.InnerText.Substring(0, xfn.InnerText.Length - 1);        
      }

      element.Attributes.Append(xfn);

      XmlAttribute feed = doc.CreateAttribute("xmlUrl");
      feed.InnerText = txtFeedUrl.Text;
      element.Attributes.Append(feed);

      XmlAttribute web = doc.CreateAttribute("htmlUrl");
      web.InnerText = txtWebUrl.Text;
      element.Attributes.Append(web);

      XmlNode body = doc.SelectSingleNode("opml/body");
      body.AppendChild(element);
      doc.Save(fileName);
      Updater.UpdateBlogroll();
    }
  }

  private void BindSettings()
  {
    txtMaxLength.Text = BlogSettings.Instance.BlogrollMaxLength.ToString();
    ddlVisiblePosts.SelectedIndex = BlogSettings.Instance.BlogrollVisiblePosts;
    txtUpdateFrequency.Text = BlogSettings.Instance.BlogrollUpdateMinutes.ToString();
  }

  private void DeleteBlog()
  {
    string title = Request.QueryString["delete"];
    string fileName = Server.MapPath(BlogSettings.Instance.StorageLocation) + "blogroll.xml";
    if (File.Exists(fileName))
    {
      XmlDocument doc = new XmlDocument();
      doc.Load(fileName);

      XmlNode parent = doc.SelectSingleNode("opml/body");
      XmlNode child = doc.SelectSingleNode("opml/body/outline[@title=\"" + title + "\"]");
      parent.RemoveChild(child);
      doc.Save(fileName);
      Updater.UpdateBlogroll();
    }    
  }

  #endregion

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?