(Post_Serving);
// set page that extension manager will use
// instead of default settings page
ExtensionManager.SetAdminPage("mp3player", "~/audio/Admin.aspx");
// set default setting values
SetDefaultSettings();
}
///
/// An event that handles ServingEventArgs
///
///
///
private void Post_Serving(object sender, ServingEventArgs e)
{
if (!string.IsNullOrEmpty(e.Body))
{
// only process the posts
if (e.Location == ServingLocation.PostList || e.Location == ServingLocation.SinglePost)
{
string regex = @"\[mp3:.*?\.mp3]";
MatchCollection matches = Regex.Matches(e.Body, regex);
if (matches.Count > 0)
{
AddJsToTheHeader();
string filename = string.Empty;
string filepath = string.Empty;
string player = string.Empty;
foreach (Match match in matches)
{
filename = match.Value.Replace("[mp3:", "").Replace("]", "").Trim();
player = PlayerObject(filename);
player = "";
e.Body = e.Body.Replace(match.Value, player);
}
}
}
}
}
///
/// Inject JavaScript file into the header of the post
///
private void AddJsToTheHeader()
{
// get a page handler
System.Web.UI.Page pg = (System.Web.UI.Page)HttpContext.Current.CurrentHandler;
bool added = false;
// check if script already added to the page header
foreach (Control ctl in pg.Header.Controls)
{
if (ctl.GetType() == typeof(HtmlGenericControl))
{
HtmlGenericControl gc = (HtmlGenericControl)ctl;
if (gc.Attributes["src"] != null)
{
if (gc.Attributes["src"].Contains(_jsfile))
{
added = true;
}
}
}
}
if (!added)
{
HtmlGenericControl js = new HtmlGenericControl("script");
js.Attributes.Add("type", "text/javascript");
js.Attributes.Add("src", AudioRoot() + _jsfile);
pg.Header.Controls.Add(js);
}
}
///
/// Build object tag
///
/// Name of the mp3 file ("my song.mp3")
/// Flash object markup
private string PlayerObject(string soundFile)
{
string sFile = string.Empty;
string[] sFiles = soundFile.Split(",".ToCharArray());
foreach (string file in sFiles)
{
if (file.Substring(0, 7) == "http://")
{
sFile += file;
}
else
{
sFile += AudioRoot() + file;
}
sFile += ",";
}
sFile = sFile.Substring(0, sFile.Length - 1);
sFile = HttpUtility.UrlEncode(sFile);
string s = ""
+ ""
+ "
";
_cnt++;
return String.Format(s, AudioRoot(), _cnt, sFile, "No",
_settings.GetSingleValue(_bgColor),
_settings.GetSingleValue(_bg),
_settings.GetSingleValue(_leftbg),
_settings.GetSingleValue(_lefticon),
_settings.GetSingleValue(_rightbg),
_settings.GetSingleValue(_rightbghover),
_settings.GetSingleValue(_righticon),
_settings.GetSingleValue(_righticonhover),
_settings.GetSingleValue(_text),
_settings.GetSingleValue(_slider),
_settings.GetSingleValue(_track),
_settings.GetSingleValue(_border),
_settings.GetSingleValue(_loader),
_settings.GetSingleValue(_width),
_settings.GetSingleValue(_height));
}
///
/// Initializes settings with default values
///
protected void SetDefaultSettings()
{
ExtensionSettings settings = new ExtensionSettings(_ext);
settings.AddParameter(_width);
settings.AddParameter(_height);
settings.AddParameter(_bgColor);
settings.AddParameter(_bg);
settings.AddParameter(_leftbg);
settings.AddParameter(_lefticon);
settings.AddParameter(_rightbg);
settings.AddParameter(_rightbghover);
settings.AddParameter(_righticon);
settings.AddParameter(_righticonhover);
settings.AddParameter(_text);
settings.AddParameter(_slider);
settings.AddParameter(_track);
settings.AddParameter(_border);
settings.AddParameter(_loader);
settings.AddValue(_width, "290");
settings.AddValue(_height, "24");
settings.AddValue(_bgColor, "ffffff");
settings.AddValue(_bg, "f8f8f8");
settings.AddValue(_leftbg, "eeeeee");
settings.AddValue(_lefticon, "666666");
settings.AddValue(_rightbg, "cccccc");
settings.AddValue(_rightbghover, "999999");
settings.AddValue(_righticon, "666666");
settings.AddValue(_righticonhover, "ffffff");
settings.AddValue(_text, "666666");
settings.AddValue(_slider, "666666");
settings.AddValue(_track, "ffffff");
settings.AddValue(_border, "666666");
settings.AddValue(_loader, "9FFFB8");
settings.IsScalar = true;
ExtensionManager.ImportSettings(settings);
_settings = ExtensionManager.GetSettings(_ext);
}
///
/// Virtual path to audio folder
///
/// Path to the audio folder
private string AudioRoot()
{
string VirtualPath = HttpContext.Current.Request.Path;
string audioRoot = VirtualPath.Substring(0, VirtualPath.LastIndexOf("/") + 1) + _audioroot;
return audioRoot;
}
}