using System;
using BlogEngine.Core.Web.Controls;
using BlogEngine.Core;
using System.Data;
[Extension("Example_04", "1.0", "<a href=\"http://me.net\">Me</a>")]
public class Example_04
{
static protected ExtensionSettings _options = null;
static protected ExtensionSettings _locations = null;
public Example_04()
{
Post.Serving += new EventHandler<ServingEventArgs>(Post_Serving);
Page.Serving += new EventHandler<ServingEventArgs>(Page_Serving);
InitSettings();
}
void Page_Serving(object sender, ServingEventArgs e)
{
if (bool.Parse(_options.GetSingleValue("Page").ToString()))
{
string title = ((Page)(sender)).Title;
string link = ((Page)(sender)).AbsoluteLink.ToString();
Track(title, link);
}
}
private void Post_Serving(object sender, ServingEventArgs e)
{
if (bool.Parse(_options.GetSingleValue("Post").ToString())
&& e.Location == ServingLocation.SinglePost)
{
string title = ((Post)(sender)).Title;
string link = ((Post)(sender)).AbsoluteLink.ToString();
Track(title, link);
}
}
private void Track(string title, string link)
{
DataTable dt = _locations.GetDataTable();
int i = 0;
int cnt = 0;
foreach (DataRow row in dt.Rows)
{
if (row["Link"].ToString() == link)
{
cnt = int.Parse(_locations.Parameters[2].Values[i]) + 1;
_locations.Parameters[2].Values[i] = cnt.ToString();
break;
}
i++;
}
if (cnt == 0)
{
_locations.AddValues(new string[] { title, link, "1" });
}
ExtensionManager.SaveSettings("Locations", _locations);
}
private void InitSettings()
{
ExtensionSettings settings = new ExtensionSettings(this);
settings.IsScalar = true;
settings.AddParameter("Post", "Track post clicks", 10, false, false, ParameterType.Boolean);
settings.AddValue("Post", true);
settings.AddParameter("Page", "Track page clicks", 10, false, false, ParameterType.Boolean);
settings.AddValue("Page", true);
_options = ExtensionManager.InitSettings(this.GetType().Name, settings);
ExtensionSettings locations = new ExtensionSettings("Locations");
locations.AddParameter("Title");
locations.AddParameter("Link", "Link", 150, true, true);
locations.AddParameter("Count", "Count", 10, false, false, ParameterType.Integer);
locations.ShowAdd = false;
locations.ShowEdit = false;
_locations = ExtensionManager.InitSettings(this.GetType().Name, locations);
}
}