📄 portalentrylisting.cs
字号:
//------------------------------------------------------------------------------
// <copyright company="Telligent Systems">
// Copyright (c) Telligent Systems Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
using System;
using System.ComponentModel;
using System.Web.UI.WebControls;
using CommunityServer.Components;
using CommunityServer.Controls;
using CommunityServer.Files.Components;
using System.Web.UI;
namespace CommunityServer.Files.Controls
{
/// <summary>
/// Summary description for PortalPictureListing.
/// </summary>
public class PortalEntryListing : FileGalleryTemplatedWebControl
{
CSContext csContext = CSContext.Current;
#region Public Properties
[DefaultValue( 5 )]
public int Count = 5;
[DefaultValue( EntriesSortBy.PostDate )]
public EntriesSortBy SortBy = EntriesSortBy.PostDate;
public SortOrder SortOrder = SortOrder.Descending;
private int categoryID = 0;
public int CategoryID
{
get
{
if (categoryID == 0 && !IgnoreCurrentCategory)
categoryID = csContext.CategoryID;
return categoryID;
}
set { categoryID = value; }
}
private int groupID = 0;
public int GroupID
{
get
{
if (groupID == 0 && ! IgnoreCurrentGroup)
groupID = csContext.GroupID;
return groupID;
}
set { groupID = value; }
}
private int sectionID = 0;
public int SectionID
{
get
{
if (sectionID == 0 && !IgnoreCurrentSection && !Globals.IsNullorEmpty(csContext.ApplicationKey))
sectionID = Folders.GetFolderID(csContext.ApplicationKey);
return sectionID;
}
set { sectionID = value; }
}
private bool ignoreCurrentSection = false;
public bool IgnoreCurrentSection
{
get{ return ignoreCurrentSection;}
set{ ignoreCurrentSection = value;}
}
private bool ignoreCurrentCategory = false;
public bool IgnoreCurrentCategory
{
get { return ignoreCurrentCategory; }
set { ignoreCurrentCategory = value; }
}
private bool ignoreCurrentGroup = false;
public bool IgnoreCurrentGroup
{
get { return ignoreCurrentGroup; }
set { ignoreCurrentGroup = value; }
}
#endregion
#region Child Controls
private IText sectionTitle;
private RepeaterPlusNone entryList;
#endregion
#region Skin
protected override void AttachChildControls()
{
sectionTitle = FindText( "SectionTitle" );
entryList = (RepeaterPlusNone)FindControl( "Entries" );
InitializeChildControls();
}
private void InitializeChildControls()
{
entryList.ItemDataBound += new RepeaterItemEventHandler(pictureList_ItemDataBound);
entryList.NoneItemsDataBound += new RepeaterItemEventHandler(pictureList_NoneItemsDataBound);
}
#endregion
protected override void OnLoad(EventArgs e)
{
base.OnLoad (e);
DataBind();
}
public override void DataBind()
{
base.DataBind();
BindEntries();
}
public void BindEntries()
{
// Set the area title
if (sectionTitle != null)
{
switch(SortBy)
{
case EntriesSortBy.PostDate:
sectionTitle.Text = FileGalleryResourceManager.GetString( "Files_PortalEntryListing_TitlePostDate" );
break;
case EntriesSortBy.Rating:
sectionTitle.Text = FileGalleryResourceManager.GetString( "Files_PortalEntryListing_TitleRating" );
break;
case EntriesSortBy.Comments:
sectionTitle.Text = FileGalleryResourceManager.GetString( "Files_PortalEntryListing_TitleReplies" );
break;
case EntriesSortBy.Views:
sectionTitle.Text = FileGalleryResourceManager.GetString( "Files_PortalEntryListing_TitleViews" );
break;
case EntriesSortBy.Downloads:
sectionTitle.Text = FileGalleryResourceManager.GetString( "Files_PortalEntryListing_TitleDownloads" );
break;
}
}
FileGalleryThreadQuery query = new FileGalleryThreadQuery();
if(this.CategoryID > 0)
query.CategoryID = this.CategoryID;
if(this.GroupID > 0)
query.GroupID = this.GroupID;
query.PageSize = Count;
query.SortBy = SortBy;
query.SortOrder = SortOrder;
query.OnlyApproved = true;
query.FilterByList = new System.Collections.ArrayList();
query.RequireSectionIsActive = true;
if (this.SectionID == 0)
{
foreach (Folder folder in Folders.GetFolders())
if (Permissions.ValidatePermissions(folder, Permission.View, csContext.User) && (folder.GroupID == this.GroupID || this.GroupID <= 0))
query.FilterByList.Add(folder);
if (query.FilterByList.Count == 0)
return;
}
else
{
query.SectionID = this.SectionID;
}
entryList.DataSource = Entries.GetEntries(query).Threads;
entryList.DataBind();
}
private void pictureList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Entry dataItem = e.Item.DataItem as Entry;
switch( e.Item.ItemType )
{
case ListItemType.Item:
case ListItemType.AlternatingItem:
HyperLink nameLink = (HyperLink)e.Item.FindControl( "Name" );
IText fieldName = TextControlHelper.Create(e.Item.FindControl( "SortedName"));
IText field = TextControlHelper.Create(e.Item.FindControl( "SortedField"));
IText description = TextControlHelper.Create(e.Item.FindControl( "Description" ));
IText fileSize = TextControlHelper.Create(e.Item.FindControl( "FileSize"));
HyperLink postedBy = (HyperLink)e.Item.FindControl( "PostedBy" );
IText dateAdded = TextControlHelper.Create(e.Item.FindControl( "DateAdded" ));
IText downloads = TextControlHelper.Create(e.Item.FindControl( "Downloads"));
Control downloadLink = e.Item.FindControl("DownloadLink");
Control editLink = e.Item.FindControl("EditLink");
Control deleteLink = e.Item.FindControl("DeleteLink");
FileThumbnail thumbnail = (FileThumbnail) e.Item.FindControl("FileThumbnail");
User user = csContext.User;
if (nameLink != null)
{
if(dataItem.Subject != "")
nameLink.Text = dataItem.Subject;
else
nameLink.Text = FileGalleryResourceManager.GetString( "NoTitle" );
nameLink.NavigateUrl = FileGalleryUrls.Instance().ViewEntry(dataItem.Section.ApplicationKey, dataItem.PostID);
}
if (description != null)
{
string desc = CommunityServer.Components.Formatter.RemoveHtml(dataItem.RenderedBody(PostTarget.Web));
if(desc.Length > 50)
description.Text = desc.Substring(0, 50) + "...";
else
description.Text = desc;
}
if (thumbnail != null)
thumbnail.Post = dataItem;
if (downloads != null)
downloads.Text = dataItem.Downloads.ToString();
if (dateAdded != null)
{
if(!user.IsAnonymous)
dateAdded.Text = user.GetTimezone(dataItem.PostDate).ToString(user.Profile.DateFormat);
else
dateAdded.Text = dataItem.PostDate.ToString(csContext.SiteSettings.DateFormat);
}
if (fileSize != null)
{
if (dataItem.FileSize >= 0)
{
if(dataItem.FileSize < 1024)
fileSize.Text = dataItem.FileSize.ToString() + " bytes";
else if(dataItem.FileSize < 1024*1024)
fileSize.Text = ((double)dataItem.FileSize / 1024).ToString("0.#") + "kB";
else
fileSize.Text = ((double)dataItem.FileSize / (1024*1024)).ToString("0.#") + "MB";
}
else
fileSize.Text = "Unknown";
}
if (postedBy != null)
{
postedBy.Text = dataItem.DisplayName;
postedBy.NavigateUrl = Globals.GetSiteUrls().UserProfile(dataItem.AuthorID);
}
RatingListing ratingListing = (RatingListing)e.Item.FindControl( "RatingListing" );
if (ratingListing != null)
{
ratingListing.PictureID = dataItem.PostID;
ratingListing.Entry = dataItem;
ratingListing.ApplicationKey = dataItem.Section.ApplicationKey;
ratingListing.DataBind();
}
if (downloadLink != null)
{
if (downloadLink is HyperLink)
{
((HyperLink) downloadLink).NavigateUrl = FileGalleryUrls.Instance().Download(dataItem);
downloadLink.Visible = true;
}
else if (downloadLink is FileGalleryImageButton)
{
FileGalleryImageButton downloadIB = (FileGalleryImageButton) downloadLink;
downloadIB.Post = dataItem;
downloadIB.ApplicationKey = dataItem.Section.ApplicationKey;
downloadIB.Visible = true;
}
}
if (editLink != null)
{
if (Permissions.ValidatePermissions(dataItem.Section, Permission.Edit, user, dataItem))
{
if (editLink is HyperLink)
{
HyperLink editLinkHL = (HyperLink) editLink;
editLinkHL.Visible = true;
editLinkHL.NavigateUrl = FileGalleryUrls.Instance().EntryAdmin(dataItem.Section.ApplicationKey, dataItem.PostID);
}
else if (editLink is FileGalleryImageButton)
{
FileGalleryImageButton editLinkIB = (FileGalleryImageButton) editLink;
editLinkIB.Post = dataItem;
editLinkIB.ApplicationKey = dataItem.Section.ApplicationKey;
editLinkIB.Visible = true;
}
}
else
{
editLink.Visible = false;
}
}
if (deleteLink != null)
{
if (Permissions.ValidatePermissions(dataItem.Section, Permission.Delete, user, dataItem))
{
if (deleteLink is HyperLink)
{
HyperLink deleteLinkHL = (HyperLink) deleteLink;
deleteLinkHL.Visible = true;
deleteLinkHL.NavigateUrl = FileGalleryUrls.Instance().DeleteEntry(dataItem.Section.ApplicationKey, dataItem.PostID);
}
else if (deleteLink is FileGalleryImageButton)
{
FileGalleryImageButton deleteLinkIB = (FileGalleryImageButton) deleteLink;
deleteLinkIB.Visible = true;
deleteLinkIB.Post = dataItem;
deleteLinkIB.ApplicationKey = dataItem.Section.ApplicationKey;
}
}
else
{
deleteLink.Visible = false;
}
}
switch(SortBy)
{
case EntriesSortBy.PostDate:
DateTime postDate = dataItem.PostDate;
string dateFormat;
if(!user.IsAnonymous)
{
postDate = user.GetTimezone(dataItem.PostDate);
dateFormat = user.Profile.DateFormat;
}
else
dateFormat = csContext.SiteSettings.DateFormat;
if (fieldName != null)
fieldName.Text = FileGalleryResourceManager.GetString( "Files_PortalEntryListing_FieldPostDate" );
if (field != null)
field.Text = postDate.ToString(dateFormat) + " " + postDate.ToString(csContext.SiteSettings.TimeFormat);
break;
case EntriesSortBy.Rating:
if (fieldName != null)
fieldName.Text = FileGalleryResourceManager.GetString( "Files_PortalEntryListing_FieldRating" );
if (field != null)
field.Text = dataItem.RatingAverage.ToString("0.0#");
break;
case EntriesSortBy.Comments:
if (fieldName != null)
fieldName.Text = FileGalleryResourceManager.GetString( "Files_PortalEntryListing_FieldReplies" );
if (field != null)
field.Text = dataItem.Replies.ToString();
break;
case EntriesSortBy.Views:
if (fieldName != null)
fieldName.Text = FileGalleryResourceManager.GetString( "Files_PortalEntryListing_FieldViews" );
if (field != null)
field.Text = dataItem.Views.ToString();
break;
case EntriesSortBy.Downloads:
if (fieldName != null)
fieldName.Text = FileGalleryResourceManager.GetString( "Files_PortalEntryListing_FieldDownloads" );
if (field != null)
field.Text = dataItem.Downloads.ToString();
break;
}
break;
}
}
private void pictureList_NoneItemsDataBound(object sender, RepeaterItemEventArgs e)
{
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -