📄 blogratepost.cs
字号:
//------------------------------------------------------------------------------
// <copyright company="Telligent Systems">
// Copyright (c) Telligent Systems Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
using System;
using System.Text;
using System.Web.UI.WebControls;
using CommunityServer.Blogs.Components;
using CommunityServer.Components;
using CommunityServer.Controls;
namespace CommunityServer.Blogs.Controls
{
/// <summary>
/// Summary description for BlogRatePost.
/// </summary>
public class BlogRatePost : CommunityServer.Controls.RatingControl
{
CSContext csContext = CSContext.Current;
public event EventHandler RatingsChanged;
#region Public Properties
private WeblogPost _p;
public WeblogPost Post
{
get
{
if(_p == null)
{
Weblog wl = Weblogs.GetWeblog(csContext.ApplicationKey);
_p = WeblogPosts.GetWeblogEntry(wl.SectionID,csContext.PostID);
}
return _p;
}
set
{
_p = value;
}
}
#endregion
#region RatingControl Implementation
private double _currentRating = -1;
public override double CurrentRating
{
get
{
if (_currentRating == -1)
_currentRating = this.Post.RatingAverage;
return _currentRating;
}
set
{
_currentRating = value;
}
}
private int _currentVotes = -1;
public override int CurrentVotes
{
get
{
if (_currentVotes == -1)
_currentVotes = this.Post.TotalRatings;
return _currentVotes;
}
set
{
_currentVotes = value;
}
}
private string _viewDetailsScript = String.Empty;
public override string ViewDetailsScript
{
get
{
return _viewDetailsScript;
}
set
{
_viewDetailsScript = value;
}
}
private bool _userCanRate = true;
private bool _calculated = false;
public override bool UserCanRate
{
get
{
if(!_calculated)
{
if(csContext.User.IsAnonymous)
_userCanRate = false;
if(_userCanRate)
{
WeblogPermission permission = Post.Section.ResolvePermission( csContext.User ) as WeblogPermission;
if(!permission.Reply)
_userCanRate = false;
}
_calculated = true;
}
return _userCanRate;
}
}
public override void Rate(double value)
{
int currentRating = Ratings.GetRating(RatingType.Thread, this.Post.ThreadID, csContext.User.UserID);
Rating rating = new Rating(RatingType.Thread, this.Post.ThreadID, csContext.User, (int) value);
Ratings.Rate(rating);
if (currentRating != -1)
{
_currentVotes = this.Post.TotalRatings + 1;
_currentRating = (this.Post.RatingSum + value) / (this.Post.TotalRatings + 1);
}
else
_currentRating = ((this.Post.RatingSum - currentRating) + value) / this.Post.TotalRatings;
OnRatingsChange(new EventArgs());
}
#endregion
protected void OnRatingsChange(EventArgs e)
{
if(RatingsChanged != null)
RatingsChanged(this,e);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -