private string GetBreadCrumbs() { Urls urls = new Urls(); StringBuilder crumbs = new StringBuilder(); if (Page.MasterPageFile.EndsWith("AdminModal.master")) { crumbs.Append("<div class=\"breadcrumbs_modal\">"); } else { crumbs.Append("<div class=\"breadcrumbs\">"); } switch (_sectionName) { case Section.ThemeEdit: { crumbs.Append(GetHyperLink("Presentation", ResolveUrl("~/graffiti-admin/presentation/"), true)); crumbs.Append(GetHyperLink("Themes", ResolveUrl("~/graffiti-admin/presentation/themes/"), true)); string theme = HttpContext.Current.Request.QueryString[QueryStringKey.Theme]; crumbs.Append(GetHyperLink(theme, String.Format("EditTheme.aspx?{0}={1}", QueryStringKey.Theme, theme), false)); } break; case Section.ConfigureTheme: { crumbs.Append(GetHyperLink("Presentation", ResolveUrl("~/graffiti-admin/presentation/"), true)); crumbs.Append(GetHyperLink("Themes", ResolveUrl("~/graffiti-admin/presentation/themes/"), true)); string theme = HttpContext.Current.Request.QueryString[QueryStringKey.Theme]; crumbs.Append(GetHyperLink(theme, String.Format("EditTheme.aspx?{0}={1}", QueryStringKey.Theme, theme), true)); crumbs.Append(GetHyperLink("Configure Theme", ResolveUrl("~/graffiti-admin/presentation/themes/ConfigureTheme.aspx?" + QueryStringKey.Theme + "=" + theme), false)); } break; case Section.Widget: crumbs.Append(GetHyperLink("Presentation", ResolveUrl("~/graffiti-admin/presentation/"), true)); crumbs.Append(GetHyperLink("Widgets", ResolveUrl("~/graffiti-admin/presentation/widgets/"), true)); break; case Section.WidgetEdit: crumbs.Append(GetHyperLink("Presentation", ResolveUrl("~/graffiti-admin/presentation/"), true)); crumbs.Append(GetHyperLink("Widgets", ResolveUrl("~/graffiti-admin/presentation/widgets/"), true)); Widget widget = Widgets.Fetch(new Guid(HttpContext.Current.Request.QueryString[QueryStringKey.Id])); crumbs.Append(GetHyperLink(widget.Name, String.Format("edit.aspx?{0}={1}", QueryStringKey.Id, widget.Id), false)); break; case Section.SiteSettings: crumbs.Append(GetHyperLink("Site Options", ResolveUrl("~/graffiti-admin/site-options/"), true)); crumbs.Append(GetHyperLink("Settings", ResolveUrl("~/graffiti-admin/site-options/settings/"), false)); break; case Section.Configuration: crumbs.Append(GetHyperLink("Site Options", ResolveUrl("~/graffiti-admin/site-options/"), true)); crumbs.Append(GetHyperLink("Configuration", ResolveUrl("~/graffiti-admin/site-options/configuration/"), false)); break; case Section.Utilities: crumbs.Append(GetHyperLink("Site Options", ResolveUrl("~/graffiti-admin/site-options/"), true)); crumbs.Append(GetHyperLink("Utilities", ResolveUrl("~/graffiti-admin/site-options/utilities/"), false)); break; case Section.RebuildPages: crumbs.Append(GetHyperLink("Site Options", ResolveUrl("~/graffiti-admin/site-options/"), true)); crumbs.Append(GetHyperLink("Utilities", ResolveUrl("~/graffiti-admin/site-options/utilities/"), true)); crumbs.Append(GetHyperLink("Rebuild Pages", ResolveUrl("~/graffiti-admin/site-options/utilities/RebuildPages.aspx"), false)); break; case Section.Logs: crumbs.Append(GetHyperLink("Site Options", ResolveUrl("~/graffiti-admin/site-options/"), true)); crumbs.Append(GetHyperLink("Utilities", ResolveUrl("~/graffiti-admin/site-options/utilities/"), true)); crumbs.Append(GetHyperLink("Logs", ResolveUrl("~/graffiti-admin/site-options/utilities/LogViewer.aspx"), false)); break; case Section.Migrator: crumbs.Append(GetHyperLink("Site Options", ResolveUrl("~/graffiti-admin/site-options/"), true)); crumbs.Append(GetHyperLink("Utilities", ResolveUrl("~/graffiti-admin/site-options/utilities/"), true)); crumbs.Append(GetHyperLink("Migrator", ResolveUrl("~/graffiti-admin/site-options/utilities/migrator/"), false)); break; case Section.Comments: crumbs.Append(GetHyperLink("Site Options", ResolveUrl("~/graffiti-admin/site-options/"), true)); crumbs.Append(GetHyperLink("Comments", ResolveUrl("~/graffiti-admin/site-options/comments/"), false)); break; case Section.CustomFields: crumbs.Append(GetHyperLink("Site Options", ResolveUrl("~/graffiti-admin/site-options/"), true)); crumbs.Append(GetHyperLink("Custom Fields", ResolveUrl("~/graffiti-admin/site-options/custom-fields/"), true)); string customFieldId = HttpContext.Current.Request.QueryString[QueryStringKey.Id]; int fieldCategoryId = int.Parse(HttpContext.Current.Request.QueryString["category"] ?? "-1"); if (!String.IsNullOrEmpty(customFieldId)) { CustomFormSettings csf = CustomFormSettings.Get(fieldCategoryId, false); CustomField cf = null; Guid g = new Guid(customFieldId); foreach (CustomField cfx in csf.Fields) { if (cfx.Id == g) { cf = cfx; break; } } if (cf != null) { crumbs.Append(GetHyperLink(cf.Name, ResolveUrl("~/graffiti-admin/site-options/custom-fields/?id=" + cf.Id), false)); } } break; case Section.Themes: crumbs.Append(GetHyperLink("Presentation", ResolveUrl("~/graffiti-admin/presentation/"), true)); crumbs.Append(GetHyperLink("Themes", ResolveUrl("~/graffiti-admin/presentation/themes/"), false)); break; case Section.SortHomePosts: crumbs.Append(GetHyperLink("Site Options", ResolveUrl("~/graffiti-admin/site-options/"), true)); crumbs.Append(GetHyperLink("Home Page", ResolveUrl("~/graffiti-admin/site-options/homesort/"), false)); break; case Section.Licensing: crumbs.Append(GetHyperLink("Site Options", ResolveUrl("~/graffiti-admin/site-options/"), true)); crumbs.Append(GetHyperLink("Licensing", ResolveUrl("~/graffiti-admin/site-options/licensing/"), false)); break; case Section.Categories: { string id = HttpContext.Current.Request.QueryString[QueryStringKey.Id]; if (String.IsNullOrEmpty(id)) { return(string.Empty); } var categories = new List <Category>(); Category c = new Category(id); categories.Add(c); Category parent; if (c.ParentId != -1) { parent = c; bool noMoreParents = false; while (!noMoreParents) { parent = new Category(parent.ParentId); if (parent.Id != 0) { categories.Insert(0, parent); } else { noMoreParents = true; } } } crumbs.Append(GetHyperLink("Categories", ResolveUrl("~/graffiti-admin/categories/"), true)); int counter = 0; int catCount = categories.Count; foreach (Category tempcat in categories) { counter++; bool addArrow = counter == catCount ? false : true; crumbs.Append(GetHyperLink(tempcat.Name, ResolveUrl("~/graffiti-admin/categories/?id=" + tempcat.Id), addArrow)); } } break; case Section.SortPosts: { string id = HttpContext.Current.Request.QueryString[QueryStringKey.Id]; if (String.IsNullOrEmpty(id)) { return(string.Empty); } var categories = new List <Category>(); Category c = new Category(id); categories.Add(c); Category parent; if (c.ParentId != -1) { parent = c; bool noMoreParents = false; while (!noMoreParents) { parent = new Category(parent.ParentId); if (parent.Id != 0) { categories.Insert(0, parent); } else { noMoreParents = true; } } } crumbs.Append(GetHyperLink("Categories", ResolveUrl("~/graffiti-admin/categories/"), true)); foreach (Category tempcat in categories) { crumbs.Append(GetHyperLink(tempcat.Name, ResolveUrl("~/graffiti-admin/categories/?id=" + tempcat.Id), true)); } crumbs.Append(GetHyperLink("Order Posts", ResolveUrl("~/graffiti-admin/categories/PostSortOrder.aspx?id=" + id), false)); } break; case Section.SiteComments: string commentId = HttpContext.Current.Request.QueryString[QueryStringKey.Id]; if (String.IsNullOrEmpty(commentId)) { return(string.Empty); } Comment comment = new Comment(commentId); crumbs.Append(GetHyperLink("Comments", ResolveUrl("~/graffiti-admin/comments/"), true)); crumbs.Append(GetHyperLink(comment.Name + " @ " + comment.Published, ResolveUrl("~/graffiti-admin/comments/?id=" + comment.Id), false)); break; case Section.Navigation: crumbs.Append(GetHyperLink("Presentation", ResolveUrl("~/graffiti-admin/presentation/"), true)); crumbs.Append(GetHyperLink("Navigation", ResolveUrl("~/graffiti-admin/presentation/navigation/"), false)); break; case Section.UserManagement: crumbs.Append(GetHyperLink("User Management", ResolveUrl("~/graffiti-admin/user-management/"), true)); string user = HttpContext.Current.Request.QueryString[QueryStringKey.User]; if (!String.IsNullOrEmpty(user)) { crumbs.Append(GetHyperLink("Users", ResolveUrl("~/graffiti-admin/user-management/users"), true)); IGraffitiUser graffitiUser = GraffitiUsers.GetUser(user); crumbs.Append(GetHyperLink(graffitiUser.Name, ResolveUrl("~/graffiti-admin/user-management/users/?user="******"Users", ResolveUrl("~/graffiti-admin/user-management/users"), false)); } break; case Section.Roles: crumbs.Append(GetHyperLink("User Management", ResolveUrl("~/graffiti-admin/user-management/"), true)); string role = HttpUtility.HtmlEncode( HttpContext.Current.Server.UrlDecode(HttpContext.Current.Request.QueryString[QueryStringKey.Role])); if (!String.IsNullOrEmpty(role)) { crumbs.Append(GetHyperLink("Roles", ResolveUrl("~/graffiti-admin/user-management/roles"), true)); crumbs.Append(GetHyperLink(role, ResolveUrl("~/graffiti-admin/user-management/roles/?role=" + role), false)); } else { crumbs.Append(GetHyperLink("Roles", ResolveUrl("~/graffiti-admin/user-management/roles"), false)); } break; case Section.ChangePassword: string cpUser = HttpContext.Current.Request.QueryString[QueryStringKey.User]; if (String.IsNullOrEmpty(cpUser)) { return(string.Empty); } IGraffitiUser graffitiUser1 = GraffitiUsers.GetUser(cpUser); crumbs.Append(GetHyperLink("User Management", ResolveUrl("~/graffiti-admin/user-management/"), true)); crumbs.Append(GetHyperLink("Users", ResolveUrl("~/graffiti-admin/user-management/users/"), true)); crumbs.Append(GetHyperLink(graffitiUser1.Name, ResolveUrl("~/graffiti-admin/user-management/users/?user="******"Change Password", ResolveUrl("~/graffiti-admin/user-management/users/changepassword.aspx?user="******"Site Options", ResolveUrl("~/graffiti-admin/site-options/"), true)); crumbs.Append(GetHyperLink("Plug-Ins", ResolveUrl("~/graffiti-admin/site-options/plug-ins/"), false)); break; case Section.PlugInsEdit: crumbs.Append(GetHyperLink("Site Options", ResolveUrl("~/graffiti-admin/site-options/"), true)); crumbs.Append(GetHyperLink("Plug-Ins", ResolveUrl("~/graffiti-admin/site-options/plug-ins/"), true)); EventDetails ed = Core.Events.GetEvent(HttpContext.Current.Request.QueryString["t"]); crumbs.Append(GetHyperLink(ed.Event.Name, ResolveUrl("~/graffiti-admin/site-options/plug-ins/edit.aspx?t=") + HttpContext.Current.Request.QueryString["t"], false)); break; case Section.Packages: crumbs.Append(GetHyperLink("Site Options", ResolveUrl("~/graffiti-admin/site-options/"), true)); crumbs.Append(GetHyperLink("Packages", ResolveUrl("~/graffiti-admin/site-options/packages/"), false)); break; case Section.EmailSettings: crumbs.Append(GetHyperLink("Site Options", ResolveUrl("~/graffiti-admin/site-options/"), true)); crumbs.Append(GetHyperLink("Email Settings", ResolveUrl("~/graffiti-admin/site-options/email-settings/"), false)); break; case Section.WidgetMarketplace: crumbs.Append(GetHyperLink("All Widgets", urls.AdminMarketplace("Widgets"), true)); CatalogInfo widgets = Marketplace.Marketplace.Catalogs[CatalogType.Widgets]; int categoryId = 0; string category = HttpContext.Current.Request.QueryString["category"]; if (!string.IsNullOrEmpty(category)) { try { categoryId = int.Parse(category); } catch { } } if ((categoryId != 0) && widgets.Categories.ContainsKey(categoryId)) { CategoryInfo categoryInfo = widgets.Categories[categoryId]; crumbs.Append(GetHyperLink(categoryInfo.Name, urls.AdminMarketplace("Widgets") + "&category=" + categoryInfo.Id.ToString(), false)); } string creatorId = string.Empty; if (!string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["creator"])) { creatorId = HttpUtility.UrlDecode(HttpContext.Current.Request.QueryString["creator"]); } if (!string.IsNullOrEmpty(creatorId) && (Marketplace.Marketplace.Creators.ContainsKey(creatorId))) { CreatorInfo creatorInfo = Marketplace.Marketplace.Creators[creatorId]; crumbs.Append(GetHyperLink(creatorInfo.Name, urls.AdminMarketplace("Widgets") + "&creator=" + HttpUtility.UrlEncode(creatorInfo.Id), false)); } int itemId = 0; string item = HttpContext.Current.Request.QueryString["item"]; if (!string.IsNullOrEmpty(item)) { try { itemId = int.Parse(item); } catch { } } if ((itemId != 0) && (widgets.Items.ContainsKey(itemId))) { ItemInfo itemInfo = widgets.Items[itemId]; CategoryInfo categoryInfo = itemInfo.Category; if (categoryInfo != null) { crumbs.Append(GetHyperLink(categoryInfo.Name, urls.AdminMarketplace("Widgets") + "&category=" + categoryInfo.Id.ToString(), true)); crumbs.Append(GetHyperLink(itemInfo.Name, urls.AdminMarketplaceItem("Widgets", itemInfo.Id), false)); } } break; case Section.ThemeMarketplace: crumbs.Append(GetHyperLink("All Themes", urls.AdminMarketplace("Themes"), true)); CatalogInfo themeCatalog = Marketplace.Marketplace.Catalogs[CatalogType.Themes]; categoryId = 0; category = HttpContext.Current.Request.QueryString["category"]; if (!string.IsNullOrEmpty(category)) { try { categoryId = int.Parse(category); } catch { } } if ((categoryId != 0) && (themeCatalog.Categories.ContainsKey(categoryId))) { CategoryInfo categoryInfo = themeCatalog.Categories[categoryId]; crumbs.Append(GetHyperLink(categoryInfo.Name, urls.AdminMarketplace("Themes") + "&category=" + categoryInfo.Id.ToString(), false)); } creatorId = string.Empty; if (!string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["creator"])) { creatorId = HttpUtility.UrlDecode(HttpContext.Current.Request.QueryString["creator"]); } if (!string.IsNullOrEmpty(creatorId) && (Marketplace.Marketplace.Creators.ContainsKey(creatorId))) { CreatorInfo creatorInfo = Marketplace.Marketplace.Creators[creatorId]; crumbs.Append(GetHyperLink(creatorInfo.Name, urls.AdminMarketplace("Themes") + "&creator=" + HttpUtility.UrlEncode(creatorInfo.Id), false)); } itemId = 0; item = HttpContext.Current.Request.QueryString["item"]; if (!string.IsNullOrEmpty(item)) { try { itemId = int.Parse(item); } catch { } } if ((itemId != 0) && (themeCatalog.Items.ContainsKey(itemId))) { ItemInfo itemInfo = themeCatalog.Items[itemId]; CategoryInfo categoryInfo = itemInfo.Category; if (categoryInfo != null) { crumbs.Append(GetHyperLink(categoryInfo.Name, urls.AdminMarketplace("Themes") + "&category=" + categoryInfo.Id.ToString(), true)); crumbs.Append(GetHyperLink(itemInfo.Name, urls.AdminMarketplaceItem("Themes", itemInfo.Id), false)); } } break; case Section.PluginMarketplace: crumbs.Append(GetHyperLink("All Plugins", urls.AdminMarketplace("Plugins"), true)); CatalogInfo plugins = Marketplace.Marketplace.Catalogs[CatalogType.Plugins]; categoryId = 0; category = HttpContext.Current.Request.QueryString["category"]; if (!string.IsNullOrEmpty(category)) { try { categoryId = int.Parse(category); } catch { } } if ((categoryId != 0) && plugins.Categories.ContainsKey(categoryId)) { CategoryInfo categoryInfo = plugins.Categories[categoryId]; crumbs.Append(GetHyperLink(categoryInfo.Name, urls.AdminMarketplace("Plugins") + "&category=" + categoryInfo.Id.ToString(), false)); } creatorId = string.Empty; if (!string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["creator"])) { creatorId = HttpUtility.UrlDecode(HttpContext.Current.Request.QueryString["creator"]); } if (!string.IsNullOrEmpty(creatorId) && (Marketplace.Marketplace.Creators.ContainsKey(creatorId))) { CreatorInfo creatorInfo = Marketplace.Marketplace.Creators[creatorId]; crumbs.Append(GetHyperLink(creatorInfo.Name, urls.AdminMarketplace("Plugins") + "&creator=" + HttpUtility.UrlEncode(creatorInfo.Id), false)); } itemId = 0; item = HttpContext.Current.Request.QueryString["item"]; if (!string.IsNullOrEmpty(item)) { try { itemId = int.Parse(item); } catch { } } if ((itemId != 0) && (plugins.Items.ContainsKey(itemId))) { ItemInfo itemInfo = plugins.Items[itemId]; CategoryInfo categoryInfo = itemInfo.Category; if (categoryInfo != null) { crumbs.Append(GetHyperLink(categoryInfo.Name, urls.AdminMarketplace("Plugins") + "&category=" + categoryInfo.Id.ToString(), true)); crumbs.Append(GetHyperLink(itemInfo.Name, urls.AdminMarketplaceItem("Plugins", itemInfo.Id), false)); } } break; // more breadcrumb logic here, add a value to the enum } crumbs.Append("</div>"); return(crumbs.ToString()); }