/// <summary> /// Gets all posts by the specified user in the specified category name /// </summary> /// <param name="username"></param> /// <param name="categoryName"></param> /// <param name="numberOfPosts"></param> public PostCollection PostsByUserAndCategory(string username, string categoryName, int numberOfPosts) { Category category = GetCategory(categoryName); IGraffitiUser user = GraffitiUsers.GetUser(username); return(PostsByUserAndCategory(user, category, numberOfPosts)); }
public void RenameUser(string oldUserName, string newUserName) { oldUserName = oldUserName.ToLower(); User user = (User)GraffitiUsers.GetUser(oldUserName); user.Name = newUserName; GraffitiUsers.Save(user, null); }
public static int CommitPost(Post p, IGraffitiUser user, bool isFeaturedPost, bool isFeaturedCategory) { Permission perm = RolePermissionManager.GetPermissions(p.CategoryId, user); bool isMan = perm.Publish; bool isEdit = GraffitiUsers.IsAdmin(user); if (isMan || isEdit) { p.IsPublished = (p.PostStatus == PostStatus.Publish); } else { p.IsPublished = false; if (p.PostStatus != PostStatus.Draft && p.PostStatus != PostStatus.PendingApproval) { p.PostStatus = PostStatus.Draft; } } p.ModifiedBy = user.Name; if (p.IsNew) //No VERSION WORK, just save it. { p.Version = 1; p.Save(user.Name, SiteSettings.CurrentUserTime); } else if (p.IsPublished) //Make a copy of the current post, then save this one. { Post old_Post = new Post(p.Id); //if(old_Post.PostStatus == PostStatus.Publish) VersionPost(old_Post); p.Version = GetNextVersionId(p.Id, p.Version); p.Save(user.Name); } else { p.Version = GetNextVersionId(p.Id, p.Version); VersionPost(p); Post.UpdatePostStatus(p.Id, p.PostStatus); } ProcessFeaturedPosts(p, user, isFeaturedPost, isFeaturedCategory); if (p.PostStatus == PostStatus.PendingApproval) { SendPReqiresApprovalMessage(p, user); } else if (p.PostStatus == PostStatus.RequiresChanges) { SendRequestedChangesMessage(p, user); } return(p.Id); }
public static void SendPReqiresApprovalMessage(Post p, IGraffitiUser user) { var users = new List <IGraffitiUser>(); foreach (IGraffitiUser u in GraffitiUsers.GetUsers("*")) { if (GraffitiUsers.IsAdmin(u) || RolePermissionManager.GetPermissions(p.CategoryId, u).Publish) { users.Add(u); } } Macros m = new Macros(); EmailTemplateToolboxContext pttc = new EmailTemplateToolboxContext(); pttc.Put("sitesettings", SiteSettings.Get()); pttc.Put("post", p); pttc.Put("user", user); pttc.Put("macros", m); pttc.Put("home", m.FullUrl(new Urls().Home)); pttc.Put("adminUrl", m.FullUrl(VirtualPathUtility.ToAbsolute("~/graffiti-admin/posts/write/")) + "?id=" + p.Id + "&v=" + p.Version); string adminApprovalUrl = m.FullUrl(VirtualPathUtility.ToAbsolute("~/api/approve.ashx")) + "?key={0}&u={1}&id={2}&v={3}"; EmailTemplate template = new EmailTemplate(); template.Context = pttc; template.Subject = "You have content to approve: " + p.Title; template.TemplateName = "QueuedPost.view"; foreach (IGraffitiUser admin in users) { template.Context.Put("adminApprovalUrl", string.Format(adminApprovalUrl, admin.UniqueId, admin.Name, p.Id, p.Version)); try { template.To = admin.Email; Emailer.Send(template); //Emailer.Send("QueuedPost.view", admin.Email, "You have content to approve: " + p.Title, pttc); } catch (Exception ex) { Log.Error("Email Error", ex.Message); } } Log.Info("Post approval email", "{0} user(s) were sent an email to approve the post \"{1}\" (id: {2}).", users.Count, p.Title, p.Id); }
protected override void Authenticate() { if (GraffitiUsers.Current == null) { Response.Redirect("~/login/"); } if (!GraffitiUsers.IsAdmin(GraffitiUsers.Current)) { Response.Redirect("~/"); } }
public static RolePermissionsCollection GetRolePermissions() { if (rolePermissions == null) { rolePermissions = RolePermissionsCollection.FetchAll(); #region This block will only run the first time this method is called to insert the everyone/manager/contributor roles // check for and insert the everyone role RolePermissions temp = rolePermissions.Find( delegate(RolePermissions rp) { return(rp.RoleName == GraffitiUsers.EveryoneRole); }); if (temp == null) { GraffitiUsers.AddUpdateRole(GraffitiUsers.EveryoneRole, true, false, false); rolePermissions = RolePermissionsCollection.FetchAll(); } // check for and insert the manager role temp = rolePermissions.Find( delegate(RolePermissions rp) { return(rp.RoleName == GraffitiUsers.ManagerRole); }); if (temp == null) { GraffitiUsers.AddUpdateRole(GraffitiUsers.ManagerRole, true, true, true); rolePermissions = RolePermissionsCollection.FetchAll(); } // check for and insert the comtributor role temp = rolePermissions.Find( delegate(RolePermissions rp) { return(rp.RoleName == GraffitiUsers.ContributorRole); }); if (temp == null) { GraffitiUsers.AddUpdateRole(GraffitiUsers.ContributorRole, true, true, false); rolePermissions = RolePermissionsCollection.FetchAll(); } #endregion } return(rolePermissions); }
protected override void Authenticate() { if (GraffitiUsers.Current == null) { Response.Redirect("~/login/"); } if (!RolePermissionManager.CanViewControlPanel(GraffitiUsers.Current) && !GraffitiUsers.IsAdmin(GraffitiUsers.Current)) { Response.Redirect("~/"); } }
protected static bool ValidateUser(string username, string password) { IGraffitiUser userToLogin = GraffitiUsers.Login(username, password, true); if (userToLogin != null) { //HttpContext.Current.User = userToLogin; return(true); } Log.Warn("Security", "Invalid login attempt by {0}", username); return(false); }
public bool ChangePassword(string username, string old_password, string new_password) { username = username.ToLower(); User user = Login(username, old_password) as User; if (user != null) { user.Password = new_password; GraffitiUsers.Save(user, null); return(true); } return(false); }
public bool ChangePassword(string username, string password) { username = username.ToLower(); User user = User.FetchByColumn(User.Columns.Name, username); if (!user.IsNew) { user.Password = password; GraffitiUsers.Save(user, null); return(true); } return(false); }
public void RemoveUserFromRole(string userName, string roleName) { userName = userName.ToLower(); Query q = UserRole.CreateQuery(); q.AndWhere(UserRole.Columns.UserId, (GraffitiUsers.GetUser(userName) as User).Id); q.AndWhere(UserRole.Columns.RoleName, roleName); UserRoleCollection urCol = new UserRoleCollection(); urCol.LoadAndCloseReader(q.ExecuteReader()); if (urCol.Count > 0) { UserRole.Destroy(urCol[0].Id); } }
public static void SendRequestedChangesMessage(Post p, IGraffitiUser user) { List <IGraffitiUser> users = new List <IGraffitiUser>(); foreach (IGraffitiUser u in GraffitiUsers.GetUsers("*")) { if (GraffitiUsers.IsAdmin(u) || RolePermissionManager.GetPermissions(p.CategoryId, u).Publish) { users.Add(u); } } Macros m = new Macros(); EmailTemplateToolboxContext pttc = new EmailTemplateToolboxContext(); pttc.Put("sitesettings", SiteSettings.Get()); pttc.Put("post", p); pttc.Put("user", user); pttc.Put("macros", m); pttc.Put("home", m.FullUrl(new Urls().Home)); pttc.Put("adminUrl", m.FullUrl(VirtualPathUtility.ToAbsolute("~/graffiti-admin/posts/write/")) + "?id=" + p.Id + "&v=" + p.Version); EmailTemplate template = new EmailTemplate(); template.Context = pttc; template.To = p.User.Email; template.Subject = "Changes Requested: " + p.Title; template.TemplateName = "RequestChanges.view"; try { Emailer.Send(template); //Emailer.Send("RequestChanges.view", p.User.Email, "Changes Requested: " + p.Title, pttc); Log.Info("Post Changes Email", p.User.Email + " was sent an email requesting changes"); } catch (Exception ex) { Log.Error("Email Requested Changes Error", ex.Message); } }
public void AddUserToRole(string userName, string RoleName) { userName = userName.ToLower(); User user = (User)GraffitiUsers.GetUser(userName); Query q = UserRole.CreateQuery(); q.AndWhere(UserRole.Columns.UserId, user.Id); q.AndWhere(UserRole.Columns.RoleName, RoleName); UserRoleCollection urCol = new UserRoleCollection(); urCol.LoadAndCloseReader(q.ExecuteReader()); if (urCol.Count == 0) { UserRole ur = new UserRole(); ur.UserId = user.Id; ur.RoleName = RoleName; ur.Save(); } }
public static void DeleteRole(string roleName) { // Remove users from role List <IGraffitiUser> roleUsers = GraffitiUsers.GetUsers(roleName); if (roleUsers != null && roleUsers.Count > 0) { foreach (IGraffitiUser user in roleUsers) { GraffitiUsers.RemoveUserFromRole(user.Name, roleName); } } RolePermissionsCollection rp = RolePermissionManager.GetRolePermissions(); RoleCategoryPermissionsCollection rpc = RolePermissionManager.GetRoleCategoryPermissions(); foreach (RolePermissions rperm in rp) { if (String.Compare(rperm.RoleName, roleName, StringComparison.InvariantCultureIgnoreCase) == 0) { RolePermissions.Destroy(RolePermissions.Columns.RoleName, rperm.RoleName); break; } } foreach (RoleCategoryPermissions rcatperm in rpc) { if (String.Compare(rcatperm.RoleName, roleName, StringComparison.InvariantCultureIgnoreCase) == 0) { RoleCategoryPermissions.Destroy(RolePermissions.Columns.RoleName, rcatperm.RoleName); break; } } RolePermissionManager.MarkDirty(); // Remove role from other membership databases controller.DeleteRole(roleName); }
public static bool CanViewControlPanel(IGraffitiUser user) { if (user == null) { return(false); } if (GraffitiUsers.IsAdmin(user)) { return(true); } foreach (string role in user.Roles) { foreach (RolePermissions rp in GetRolePermissions()) { if (rp.RoleName == role) { if (rp.HasEdit || rp.HasPublish) { return(true); } } } foreach (RoleCategoryPermissions rcp in GetRoleCategoryPermissions()) { if (rcp.RoleName == role) { if (rcp.HasEdit || rcp.HasPublish) { return(true); } } } } return(false); }
public MetaWeblog.UserInfo getUserInfo(string appKey, string username, string password) { if (ValidateUser(username, password)) { IGraffitiUser gu = GraffitiUsers.GetUser(username); UserInfo ui = new UserInfo(); ui.userid = gu.Name; ui.firstname = gu.ProperName; ui.lastname = ""; ui.email = gu.Email; ui.nickname = gu.ProperName; ui.url = gu.WebSite ?? new Macros().FullUrl(new Urls().Home); return(ui); } throw new XmlRpcFaultException(0, "User does not exist"); }
public static Permission GetPermissions(int categoryId, IGraffitiUser user, bool calledFromMultipleCategoryPage) { string[] roles; // if there is no users, setup the roles collection to be everyone if (user == null) { roles = new string[1] { GraffitiUsers.EveryoneRole }; } else // get the users roles { roles = user.Roles; } Permission p = new Permission(); // if the user is an admin, they have access to everything if (GraffitiUsers.IsAdmin(user)) { p.Read = true; p.Edit = true; p.Publish = true; return(p); } // determines if category permissions are setup, which overrides individual role permissions bool setInCategoryPermissions = false; if (categoryId != -1 || calledFromMultipleCategoryPage) { foreach (string role in roles) { foreach (RoleCategoryPermissions rcp in GetRoleCategoryPermissions()) { if (rcp.RoleName == role) { if (rcp.CategoryId == categoryId || calledFromMultipleCategoryPage) { // only set it if it's false. if another permissions allowed this category, // the user has permissions if (!p.Read) { p.Read = rcp.HasRead; } if (!p.Edit) { p.Edit = rcp.HasEdit; } if (!p.Publish) { p.Publish = rcp.HasPublish; } } setInCategoryPermissions = true; } } } } if (!setInCategoryPermissions) { foreach (string role in roles) { foreach (RolePermissions rp in GetRolePermissions()) { if (rp.RoleName == role) { // only set it if it's false. if another permissions allowed, // the user has permissions if (!p.Read) { p.Read = rp.HasRead; } if (!p.Edit) { p.Edit = rp.HasEdit; } if (!p.Publish) { p.Publish = rp.HasPublish; } } } } } return(p); }
private static Graffiti.Core.Category AddOrFetchCategory(string name, IGraffitiUser user) { int index = name.IndexOf(">"); if (index > -1) { string parentName = name.Substring(0, index).Trim(); string childName = name.Substring(index + 1).Trim(); Graffiti.Core.Category parent = new CategoryController().GetCachedCategory(parentName, true); if (parent != null) { foreach (Graffiti.Core.Category childCategory in parent.Children) { if (Util.AreEqualIgnoreCase(childCategory.Name, childName)) { return(childCategory); } } if (GraffitiUsers.IsAdmin(user)) { Core.Category child = new Core.Category(); child.Name = HttpUtility.HtmlEncode(childName); child.ParentId = parent.Id; child.Save(); return(child); } } else { if (GraffitiUsers.IsAdmin(user)) { parent = new Core.Category(); parent.Name = HttpUtility.HtmlEncode(parentName); parent.Save(); Core.Category child = new Core.Category(); child.Name = HttpUtility.HtmlEncode(childName); child.ParentId = parent.Id; child.Save(); return(child); } } } else { Core.Category category = new CategoryController().GetCachedCategory(name, true); if (category == null) { if (GraffitiUsers.IsAdmin(user)) { category = new Core.Category(); category.Name = name; category.Save(); } } return(category); } Log.Warn("Categories", "The user {0} does not have permission to create the category {1}", user.ProperName, HttpUtility.HtmlEncode(name)); throw new Exception("You do not have permission to create a new category or sub-category"); }
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()); }