Dave, using brevity, here's what I changed in terms of UI:
1. GSP Admin titling, such that it reads "Media Gallery Admin: <action here> | <site name>" in the page title.
2. GSP Task titling, such that it reads "Media Gallery: <album name> Album - <album name> Album - ... - <action here> | <site name>" in the page title.
3. GSP Admin breadcrumbing I believe all I did was Link(Site Home) -> Link(Gallery Home) -> <action here>.
4. GSP Task breadcrumbing == Link(Site Home) -> Link(Gallery Home) -> Link(<album if any> Album) -> <action here>. (I wanted users to easily be able to navigate back to anywhere in the workflow without clicking Back, or using the main menu.)
5. GSP album breadcrumbing only had one change I believe, which was Link(<album name> Album) -> Media Objects whenever the user clicked on a media object in an album.
Explaining how I *planned* on handling the above differs greatly from the rabbit hole in which I fell, which is to say really convoluted for my tastes, in terms of maintenance. I handled the core logic in albummenu's code behind but I also created client scripts via managers on some of the Admin and Task pages using the same logic (i.e. cut-paste).
Forum breadcrumbing is harder to explain, but suffice it to say it now does what I want, albeit I hate its maintenance potential as much as the above. I would have to send you the project whenever I get the chance so you can see what I mean. Forum page titling I revamped as well using PageTitleForumModule.cs, but unfortunately that primarily helped me with Admin and Moderation pages, not all other pages.
In PageLinks.cs in YAF.Controls I only had to make the following change to persist it to the client:
writer.Write("<script type=\"text/javascript\" language=\"javascript\">var _crumbsAry = new Array();");
//writer.WriteLine(@"<div id=""{0}"" class=""yafPageLink"">".FormatWith(this.ClientID));
//bool bFirst = true;
foreach (DataRow row in linkDataTable.Rows)
{
//if (!bFirst)
//{
// writer.WriteLine(@"<span class=""linkSeperator""> » </span>");
//}
//else
//{
// bFirst = false;
//}
string title = this.HtmlEncode(row["Title"].ToString().Trim());
string url = row["URL"].ToString().Trim();
if (url.IsNotSet())
{
// If the current breadcrumb is "All Forums", we want to display the top level
// forum name, which should be "Forums Home" or something similar, so that users
// don't get confused.
if (title == boardsTitle)
{
writer.Write("_crumbsAry.push(\"{0}\",\"{1}\");".FormatWith(homeTitle, ""));
}
else
{
writer.Write("_crumbsAry.push(\"{0}\",\"{1}\");".FormatWith(title, ""));
}
//writer.WriteLine(@"<span class=""currentPageLink"">{0}</span>".FormatWith(title));
}
else
{
// If the current breadcrumb is "All Forums", we want to display the top level
// forum name, which should be "Forums Home" or something similar, so that users
// don't get confused.
if (title == boardsTitle)
{
writer.Write("_crumbsAry.push(\"{0}\",\"{1}\");".FormatWith(homeTitle, url));
}
else
{
writer.Write("_crumbsAry.push(\"{0}\",\"{1}\");".FormatWith(title, url));
}
//writer.WriteLine(@"<a href=""{0}"">{1}</a>".FormatWith(url, title));
}
}
writer.WriteLine("</script>");
Like I said above, I personally think I could extend the pages to handle titling and breadcrumbing instead of the hacky way I did it just as a proof of concept. But it works perfectly for me and at the very least it can give one an idea of how to accomplish it with slick changes later. I attached some sample images that hopefully encapsulates what I was thinking?
Edited by user Saturday, April 7, 2012 3:16:29 PM(UTC)
| Reason: Added some commentary and images.
Traelin attached the following image(s):

GSP Breadcrumb Sample.png
(223kb) downloaded 8 time(s).
YAF Sample Breadcrumb.png
(213kb) downloaded 9 time(s).You cannot view/download attachments. Try to login or register.