From c649959e34aa230de66b6699caf1ca063ea5b4d1 Mon Sep 17 00:00:00 2001 From: Neil Lalonde <neillalonde@gmail.com> Date: Wed, 19 Mar 2014 16:04:53 -0400 Subject: [PATCH] Show parent category on category badges --- .../discourse/helpers/application_helpers.js | 3 +++ app/assets/javascripts/discourse/lib/html.js | 12 +++++++++++- .../components/basic-topic-list.js.handlebars | 2 +- .../list/topic_list_item.js.handlebars | 2 +- .../components/basic-topic-list.js.handlebars | 2 +- .../mobile/list/topic_list_item.js.handlebars | 2 +- .../common/components/badges.css.scss | 19 ++++++++++++++++--- app/assets/stylesheets/mobile/topic-post.scss | 2 +- 8 files changed, 35 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/discourse/helpers/application_helpers.js b/app/assets/javascripts/discourse/helpers/application_helpers.js index 90f2858b2..1c37e8431 100644 --- a/app/assets/javascripts/discourse/helpers/application_helpers.js +++ b/app/assets/javascripts/discourse/helpers/application_helpers.js @@ -79,6 +79,9 @@ function categoryLinkHTML(category, options) { if (options.hash.allowUncategorized) { categoryOptions.allowUncategorized = true; } + if (options.hash.showParent) { + categoryOptions.showParent = true; + } if (options.hash.categories) { categoryOptions.categories = Em.Handlebars.get(this, options.hash.categories, options); } diff --git a/app/assets/javascripts/discourse/lib/html.js b/app/assets/javascripts/discourse/lib/html.js index a47dd63ed..6663f6731 100644 --- a/app/assets/javascripts/discourse/lib/html.js +++ b/app/assets/javascripts/discourse/lib/html.js @@ -83,7 +83,8 @@ Discourse.HTML = { var name = Em.get(category, 'name'), description = Em.get(category, 'description'), restricted = Em.get(category, 'read_restricted'), - html = "<a href=\"" + Discourse.getURL("/category/") + Discourse.Category.slugFor(category) + "\" "; + url = Discourse.getURL("/category/") + Discourse.Category.slugFor(category), + html = "<a href=\"" + url + "\" "; html += "data-drop-close=\"true\" class=\"badge-category" + (restricted ? ' restricted' : '' ) + "\" "; @@ -101,6 +102,15 @@ Discourse.HTML = { html += ">" + name + "</a>"; } + if (opts.showParent && category.get('parent_category_id')) { + var parent = Discourse.Category.findById(category.get('parent_category_id')); + html = "<a class='badge-category-parent' style=\"" + (Discourse.HTML.categoryStyle(parent)||'') + + "\" href=\"" + url + "\"><span class='category-name'>" + + (Em.get(parent, 'read_restricted') ? "<i class='fa fa-group'></i> " : "") + + Em.get(parent, 'name') + "</span></a>" + + html; + } + return html; } diff --git a/app/assets/javascripts/discourse/templates/components/basic-topic-list.js.handlebars b/app/assets/javascripts/discourse/templates/components/basic-topic-list.js.handlebars index b099a8691..1208e1a2d 100644 --- a/app/assets/javascripts/discourse/templates/components/basic-topic-list.js.handlebars +++ b/app/assets/javascripts/discourse/templates/components/basic-topic-list.js.handlebars @@ -42,7 +42,7 @@ {{#unless controller.hideCategory}} <td class="category"> - {{categoryLink topic.category}} + {{categoryLink topic.category showParent=true}} </td> {{/unless}} diff --git a/app/assets/javascripts/discourse/templates/list/topic_list_item.js.handlebars b/app/assets/javascripts/discourse/templates/list/topic_list_item.js.handlebars index 0be03104f..2b292d26b 100644 --- a/app/assets/javascripts/discourse/templates/list/topic_list_item.js.handlebars +++ b/app/assets/javascripts/discourse/templates/list/topic_list_item.js.handlebars @@ -37,7 +37,7 @@ </td> {{#unless hideCategory}} -<td class='category'>{{boundCategoryLink category}}</td> +<td class='category'>{{boundCategoryLink category showParent=true}}</td> {{/unless}} <td class='posters'> diff --git a/app/assets/javascripts/discourse/templates/mobile/components/basic-topic-list.js.handlebars b/app/assets/javascripts/discourse/templates/mobile/components/basic-topic-list.js.handlebars index 668e0140c..7e10d90e6 100644 --- a/app/assets/javascripts/discourse/templates/mobile/components/basic-topic-list.js.handlebars +++ b/app/assets/javascripts/discourse/templates/mobile/components/basic-topic-list.js.handlebars @@ -30,7 +30,7 @@ </div> <div class="topic-item-stats clearfix"> <div class='category'> - {{categoryLink category}} + {{categoryLink category showParent=true}} </div> <div class="pull-right"> <div class='num posts'> diff --git a/app/assets/javascripts/discourse/templates/mobile/list/topic_list_item.js.handlebars b/app/assets/javascripts/discourse/templates/mobile/list/topic_list_item.js.handlebars index 71d2f2679..c687296bd 100644 --- a/app/assets/javascripts/discourse/templates/mobile/list/topic_list_item.js.handlebars +++ b/app/assets/javascripts/discourse/templates/mobile/list/topic_list_item.js.handlebars @@ -28,7 +28,7 @@ <div class="topic-item-stats clearfix"> {{#unless controller.hideCategory}} <div class='category'> - {{categoryLink category}} + {{categoryLink category showParent=true}} </div> {{/unless}} diff --git a/app/assets/stylesheets/common/components/badges.css.scss b/app/assets/stylesheets/common/components/badges.css.scss index a989ec74d..35a806286 100644 --- a/app/assets/stylesheets/common/components/badges.css.scss +++ b/app/assets/stylesheets/common/components/badges.css.scss @@ -18,18 +18,31 @@ // Category badge // -------------------------------------------------- -.badge-category { - padding: 6px; - color: $tertiary_text_color; +.badge-category, .badge-category-parent { font-size: 12px; font-weight: bold; white-space: nowrap; display: inline-block; line-height: 1; +} + +.badge-category { + padding: 6px; + color: $tertiary_text_color; &[href] { color: $tertiary_text_color; } +} +.badge-category-parent { + padding: 6px 2px; + width: 2px; + .category-name { + display: none; + } + &:before { + content: "\a0"; + } } .d-dropdown .badge-category { diff --git a/app/assets/stylesheets/mobile/topic-post.scss b/app/assets/stylesheets/mobile/topic-post.scss index 70cdcd897..c08b74cb3 100644 --- a/app/assets/stylesheets/mobile/topic-post.scss +++ b/app/assets/stylesheets/mobile/topic-post.scss @@ -256,7 +256,7 @@ a.star { display: none; } - a.badge-category { + a.badge-category, a.badge-category-parent { font-size: 10px; }