📄 commentlistcontrol.ascx.cs
字号:
//------------------------------------------------------------------------------
// <copyright company="Telligent Systems">
// Copyright (c) Telligent Systems Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
using System;
using System.Web;
using System.Web.UI.WebControls;
using CommunityServer.Blogs.Components;
using CommunityServer.Components;
using CommunityServer.ControlPanel.UI;
using CommunityServer.Controls;
using CommunityServer.Galleries;
using CommunityServer.Galleries.Components;
using CA = ComponentArt.Web.UI;
using ResourceControl = CommunityServer.ControlPanel.Controls.ResourceControl;
using ResourceManager = CommunityServer.ControlPanel.Components.ResourceManager;
using HelpIcon = CommunityServer.ControlPanel.Controls.HelpIcon;
namespace CommunityServer.ControlPanel.Photos
{
/// <summary>
/// Summary description for CommentListControl.
/// </summary>
public class CommentListControl : BaseGalleryGridControl
{
#region Child Controls
protected CA.Grid Grid1;
protected IButton ActionButton;
protected HelpIcon Helpicon1;
protected ResourceControl FeedbackFilterLabel;
protected DropDownList filterPost;
protected DropDownList filterPublished;
protected IButton FilterButton;
protected Modal Modal1;
protected DropDownList ActionList;
#endregion
private void Page_Load(object sender, EventArgs e)
{
//overload the row size because this is a two line grid
this.CurrentGridRowSize = 2;
if(!Page.IsPostBack && !GalleryPage.IsCallBack)
{
BindFilters();
buildGrid();
Grid.DataBind();
}
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
this.Grid.ItemCheckChanged += new CA.Grid.ItemCheckChangedEventHandler(this.Grid_ItemCheckChanged);
this.Grid.DeleteCommand += new CA.Grid.GridItemEventHandler(this.Grid_DeleteCommand);
this.ActionButton.Click += new EventHandler(this.ActionButton_Click);
this.FilterButton.Click += new EventHandler(this.FilterButton_Click);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new EventHandler(this.Page_Load);
}
#endregion
private void BindFilters()
{
ActionButton.Attributes.Add("onclick","return validate_click();");
ActionList.Items.Add(new ListItem(Components.ResourceManager.GetString("CP_Moderate_Actions"),"-1"));
ActionList.Items.Add(new ListItem(Components.ResourceManager.GetString("CP_Moderate_Approve"),"0"));
ActionList.Items.Add(new ListItem(Components.ResourceManager.GetString("CP_Moderate_Disapprove"),"1"));
ActionList.Items.Add(new ListItem(Components.ResourceManager.GetString("CP_Moderate_Delete"),"2"));
ActionButton.Text = Components.ResourceManager.GetString("CP_Moderate_Action");
filterPublished.Items.Add(new ListItem(Components.ResourceManager.GetString("Feedback_SelectAll"), ((int)GalleryPostPublishedFilter.All).ToString()));
filterPublished.Items.Add(new ListItem(Components.ResourceManager.GetString("Feedback_FilterPublished"), ((int)GalleryPostPublishedFilter.Published).ToString()));
filterPublished.Items.Add(new ListItem(Components.ResourceManager.GetString("Feedback_FilterNotPublished"), ((int)GalleryPostPublishedFilter.NotPublished).ToString()));
// Retrieve list of recent blog posts
GalleryThreadQuery query = new GalleryThreadQuery();
query.SectionID = this.CurrentGallery.SectionID;
query.ApplicationPostType = GalleryPostType.Image;
query.GalleryThreadType = GalleryThreadType.Recent;
query.IncludeCategories = false;
query.PublishedFilter = GalleryPostPublishedFilter.All;
query.PageSize = 20;
query.SortOrder = SortOrder.Descending;
query.SortBy = GalleryThreadSortBy.ThreadDate;
ThreadSet threads = GalleryPosts.GetPictures(query,false) ;
// Insert default "All" item
filterPost.Items.Add(new ListItem(ResourceManager.GetString("Feedback_FilterAll"), "-1"));
foreach (GalleryPost post in threads.Threads)
{
filterPost.Items.Add(new ListItem(Globals.HtmlDecode(post.Subject), Convert.ToString(post.PostID)));
}
// Check if preselected values of the filter DropDownLists were passed in the URL
CSContext context = CSContext.Current;
ListItem li = null;
int pid = context.GetIntFromQueryString("pid",-1);
if(pid > -1)
{
li = filterPost.Items.FindByValue(pid.ToString());
if(li != null)
{
li.Selected = true;
}
}
this.GridMode = CA.GridRunningMode.Callback;
li = filterPublished.Items.FindByValue(context.GetIntFromQueryString("ip", (int)BlogPostPublishedFilter.All).ToString());
if(li != null)
li.Selected = true;
}
private void FilterButton_Click(object sender, EventArgs e)
{
string url = "{0}?pid={1}&ip={2}";
url = string.Format(url,Request.Path,filterPost.SelectedValue,filterPublished.SelectedValue);
Response.Redirect(url);
}
private void Grid_DeleteCommand(object sender, CA.GridItemEventArgs e)
{
int postID = Globals.SafeInt(e.Item["PostID"].ToString(), 0) ;
DeletePost(postID);
}
private void DeletePost(int postID)
{
GalleryPosts.DeleteComment(postID);
}
private void PostIsApproved(int postID, bool isApproved)
{
if(isApproved)
GalleryDataProvider.Instance().ApprovePost(postID, CSContext.Current.UserID);
else
throw new NotImplementedException("No way to disapprove a gallery post yet");
}
protected override void buildGrid()
{
CSContext context = CSContext.Current;
int parentid = context.GetIntFromQueryString("pid",-1);
GalleryThreadQuery query = new GalleryThreadQuery();
query.SectionID = CurrentGallery.SectionID;
if(this.GridMode == CA.GridRunningMode.Callback)
{
query.PageSize = this.DefaultPageSize;
query.PageIndex = Grid.CurrentPageIndex;
Grid.ManualPaging = true;
}
query.ParentID = parentid;
query.ApplicationPostType = GalleryPostType.Comment | GalleryPostType.Trackback;
query.PublishedFilter = (GalleryPostPublishedFilter)context.GetIntFromQueryString("ip", (int)GalleryPostPublishedFilter.All);
query.SortOrder = SortOrder.Descending;
int postID = context.GetIntFromQueryString("pid",-1);
if(postID > -1)
query.ParentID = postID;
ThreadSet ts = GalleryPosts.GetPictures(query, false);
Grid.DataSource = ts.Threads;
this.RecordCount = ts.TotalRecords;
base.buildGrid();
}
public void Grid_ItemCheckChanged(object sender, CA.GridItemCheckChangedEventArgs e)
{
//This event is raised on every callback. We only need to handle it on a postback/click
if(!this.GalleryPage.IsCallBack && e.Checked)
{
int postID = Globals.SafeInt(e.Item["PostID"].ToString(), 0) ;
switch (ActionList.SelectedIndex)
{
case 1:
if(!bool.Parse(e.Item["IsApproved"].ToString()))
PostIsApproved(postID, true);
break;
case 2:
if(bool.Parse(e.Item["IsApproved"].ToString()))
PostIsApproved(postID, false);
break;
case 3:
DeletePost(postID);
break;
}
}
}
public void ActionButton_Click(object sender, EventArgs e)
{
//HACK: For now lets redirect the user to the current page to clear any client side checkmarks
Response.Redirect(HttpContext.Current.Request.Url.ToString()) ;
//This event should fire after the ItemCheckChanged and
// is responsible for binding any data changes back to the grid
buildGrid();
Grid.DataBind();
}
protected override void ConfigureGrid()
{
AddGridCheckMarkTemplate("IsApproved");
AddGridPublishedDateTemplate("AuthorUrl", "DisplayName", "FormattedPostDate");
AddGridPagerTemplate("Subject", "DisplayName", "FormattedPostDate","IsApproved");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -