温馨提示:代码在线浏览功能只能做为源码浏览参考,不能展示项目的全部,如果想更进一步了解该代码请下载:BlogEngine v1.3 多皮肤多语言版源码
当前文件路径:BlogEngine/admin/Pages/referrers.aspx.cs

1Using 12
13
public partial class admin_Pages_referrers : System.Web.UI.Page 14
{ 15
protected void Page_Load(object sender, EventArgs e) 16
{ 17
if (!Page.IsPostBack) 18
{ 19
if (BlogSettings.Instance.EnableReferrerTracking) 20
{ 21
BindDays(); 22
BindReferrers(DateTime.Now.ToString("dddd", System.Globalization.CultureInfo.InvariantCulture)); 23
} 24
else 25
{ 26
ddlDays.Enabled = false; 27
} 28
29
cbEnableReferrers.Checked = BlogSettings.Instance.EnableReferrerTracking; 30
} 31
32
ddlDays.SelectedIndexChanged += new EventHandler(ddlDays_SelectedIndexChanged); 33
cbEnableReferrers.CheckedChanged += new EventHandler(cbEnableReferrers_CheckedChanged); 34
Page.Title = Resources.labels.referrers; 35
} 36
37
private void cbEnableReferrers_CheckedChanged(object sender, EventArgs e) 38
{ 39
if (cbEnableReferrers.Checked) 40
{ 41
BindDays(); 42
BindReferrers(DateTime.Now.ToString("dddd", System.Globalization.CultureInfo.InvariantCulture)); 43
} 44
else 45
{ 46
ddlDays.Enabled = false; 47
} 48
49
BlogSettings.Instance.EnableReferrerTracking = cbEnableReferrers.Checked; 50
BlogSettings.Instance.Save(); 51
} 52
53
void ddlDays_SelectedIndexChanged(object sender, EventArgs e) 54
{ 55
BindReferrers(ddlDays.SelectedValue); 56
} 57
58
private void BindDays() 59
{ 60
int count = 0; 61
ddlDays.ClearSelection(); 62
ddlDays.Enabled = true; 63
foreach (ListItem item in ddlDays.Items) 64
{ 65
item.Text = DateTime.MinValue.AddDays(count).ToString("dddd"); 66
if (item.Value == DateTime.Now.ToString("dddd", System.Globalization.CultureInfo.InvariantCulture)) 67
{ 68
item.Selected = true; 69
} 70
71
count++; 72
} 73
} 74
75
private void BindReferrers(string day) 76
{ 77
string filename = Server.MapPath("~/App_Data/log/" + day + ".xml"); 78
if (File.Exists(filename)) 79
{ 80
DataSet ds = new DataSet(); 81
ds.ReadXml(filename); 82
83
DataTable table = new DataTable(); 84
table.Columns.Add("url", typeof(string)); 85
table.Columns.Add("shortUrl", typeof(string)); 86
table.Columns.Add("hits", typeof(int)); 87
88
DataTable spamTable = table.Clone(); 89
90
foreach (DataRow row in ds.Tables[0].Rows) 91
{ 92
DataRow newRow = table.NewRow(); 93
if (row.Table.Columns.Contains("isSpam") && row["isSpam"].ToString().ToLowerInvariant() == "true") 94
newRow = spamTable.NewRow(); 95
96
newRow["url"] = Server.HtmlEncode(row["address"].ToString()); 97
newRow["shortUrl"] = MakeShortUrl(row["address"].ToString()); 98
newRow["hits"] = int.Parse(row["url_text"].ToString()); 99
100
if (row.Table.Columns.Contains("isSpam") && row["isSpam"].ToString().ToLowerInvariant() == "true") 101
spamTable.Rows.Add(newRow); 102
else 103
table.Rows.Add(newRow); 104
} 105
106
BindTable(table, grid); 107
BindTable(spamTable, spamGrid); 108
} 109
} 110
111
private void BindTable(DataTable table, GridView grid) 112
{ 113
string total = table.Compute("sum(hits)", null).ToString(); 114
115
DataView view = new DataView(table); 116
view.Sort = "hits desc"; 117
118
grid.DataSource = view; 119
grid.DataBind(); 120
121
if (grid.Rows.Count > 0) 122
{ 123
grid.FooterRow.Cells[0].Text = "Total"; 124
grid.FooterRow.Cells[1].Text = total; 125
} 126
127
PaintRows(grid, 3); 128
} 129
130
private string MakeShortUrl(string url) 131
{ 132
if (url.Length > 150) 133
return url.Substring(0, 150) + "..."; 134
135
return Server.HtmlEncode(url.Replace("http://", string.Empty).Replace("www.", string.Empty)); 136
} 137
138
/// <summary> 139
/// Paints the background color of the alternate rows 140
/// in the gridview. 141
/// </summary> 142
private void PaintRows(GridView grid, int alternateRows) 143
{ 144
if (grid.Rows.Count == 0) 145
return; 146
147
int count = 0; 148
for (int i = 0; i < grid.Controls[0].Controls.Count - 1; i++) 149
{ 150
if (count > alternateRows) 151
(grid.Controls[0].Controls[i] as WebControl).CssClass = "alt"; 152
153
count++; 154
155
if (count == alternateRows + alternateRows + 1) 156
count = 1; 157
} 158
} 159
160
} 161





}