pages.aspx.cs

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

CS
182
字号
#region Using

using System;
using System.IO;
using System.Web;
using System.Text;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using BlogEngine.Core;

#endregion

public partial class admin_Pages_pages : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
    base.MaintainScrollPositionOnPostBack = true;

    if (!Page.IsPostBack && !Page.IsCallback)
    {
      if (!String.IsNullOrEmpty(Request.QueryString["id"]) && Request.QueryString["id"].Length == 36)
      {
        Guid id = new Guid(Request.QueryString["id"]);
        BindPage(id);
        BindParents(id);        
      }
      else
      {
        BindParents(Guid.Empty);
      }

      BindPageList();
    }

    btnSave.Click += new EventHandler(btnSave_Click);
    btnUploadFile.Click += new EventHandler(btnUploadFile_Click);
    btnUploadImage.Click += new EventHandler(btnUploadImage_Click);
    Page.Title = Resources.labels.pages;
    Page.Form.DefaultButton = btnSave.UniqueID;
  }

  private void btnUploadImage_Click(object sender, EventArgs e)
  {
    Upload(BlogSettings.Instance.StorageLocation + "files" + Path.DirectorySeparatorChar, txtUploadImage);
    string path = System.Web.VirtualPathUtility.ToAbsolute("~/");
    string img = string.Format("<img src=\"{0}image.axd?picture={1}\" alt=\"\" />", path, Server.UrlEncode(txtUploadImage.FileName));
    txtContent.Text += string.Format(img, txtUploadImage.FileName);
  }

  private void btnUploadFile_Click(object sender, EventArgs e)
  {
    Upload(BlogSettings.Instance.StorageLocation + "files" + Path.DirectorySeparatorChar, txtUploadFile);

    string a = "<p><a href=\"{0}file.axd?file={1}\">{2}</a></p>";
    string text = txtUploadFile.FileName + " (" + SizeFormat(txtUploadFile.FileBytes.Length, "N") + ")";
    txtContent.Text += string.Format(a, Utils.RelativeWebRoot, Server.UrlEncode(txtUploadFile.FileName), text);
  }

  private void Upload(string virtualFolder, FileUpload control)
  {
    string folder = Server.MapPath(virtualFolder);
    control.PostedFile.SaveAs(folder + control.FileName);
  }

  private string SizeFormat(float size, string formatString)
  {
    if (size < 1024)
      return size.ToString(formatString) + " bytes";

    if (size < Math.Pow(1024, 2))
      return (size / 1024).ToString(formatString) + " kb";

    if (size < Math.Pow(1024, 3))
      return (size / Math.Pow(1024, 2)).ToString(formatString) + " mb";

    if (size < Math.Pow(1024, 4))
      return (size / Math.Pow(1024, 3)).ToString(formatString) + " gb";

    return size.ToString(formatString);
  }

  #region Event handlers

  private void btnSave_Click(object sender, EventArgs e)
  {
    if (!Page.IsValid)
      throw new InvalidOperationException("One or more validators are invalid.");

    Page page;
    if (Request.QueryString["id"] != null)
      page = BlogEngine.Core.Page.GetPage(new Guid(Request.QueryString["id"]));
    else
      page = new Page();

    if (string.IsNullOrEmpty(txtContent.Text))
      txtContent.Text = "[No text]";

    page.Title = txtTitle.Text;
    page.Content = txtContent.Text;
    page.Description = txtDescription.Text;
    page.Keywords = txtKeyword.Text;

    if (cbIsFrontPage.Checked)
    {
      foreach (Page otherPage in BlogEngine.Core.Page.Pages)
      {
        if (otherPage.IsFrontPage)
        {
          otherPage.IsFrontPage = false;
          otherPage.Save();
        }
      }
    }

    page.IsFrontPage = cbIsFrontPage.Checked;
    page.ShowInList = cbShowInList.Checked;
    page.IsPublished = cbIsPublished.Checked;

    if (ddlParent.SelectedIndex != 0)
      page.Parent = new Guid(ddlParent.SelectedValue);

    page.Save();

    Response.Redirect(page.RelativeLink.ToString());
  }

  #endregion

  #region Data binding

  private void BindPage(Guid pageId)
  {
    Page page = BlogEngine.Core.Page.GetPage(pageId);
    txtTitle.Text = page.Title;
    txtContent.Text = page.Content;
    txtDescription.Text = page.Description;
    txtKeyword.Text = page.Keywords;
    cbIsFrontPage.Checked = page.IsFrontPage;
    cbShowInList.Checked = page.ShowInList;
    cbIsPublished.Checked = page.IsPublished;
  }

  private void BindParents(Guid pageId)
  {
    foreach (Page page in BlogEngine.Core.Page.Pages)
    {
      if (pageId != page.Id)
        ddlParent.Items.Add(new ListItem(page.Title, page.Id.ToString()));
    }

    ddlParent.Items.Insert(0, "-- " + Resources.labels.noParent + " --");
    if (pageId != Guid.Empty)
    {
      Page parent = BlogEngine.Core.Page.GetPage(pageId);
      if (parent != null)
        ddlParent.SelectedValue = parent.Parent.ToString();
    }
  }

  private void BindPageList()
  {
    foreach (Page page in BlogEngine.Core.Page.Pages)
    {
        HtmlGenericControl li = new HtmlGenericControl("li");
        HtmlAnchor a = new HtmlAnchor();
        a.HRef = "?id=" + page.Id.ToString();
        a.InnerHtml = page.Title;

        System.Web.UI.LiteralControl text = new System.Web.UI.LiteralControl(" (" + page.DateCreated.ToString("yyyy-dd-MM HH:mm") + ")");

        li.Controls.Add(a);
        li.Controls.Add(text);
        ulPages.Controls.Add(li);
    }

      divPages.Visible = true;
      aPages.InnerHtml = BlogEngine.Core.Page.Pages.Count + " " + Resources.labels.pages;
  }

  #endregion
}

⌨️ 快捷键说明

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