diff --git a/addons/website_blog/controllers/main.py b/addons/website_blog/controllers/main.py index ecb6d47aca7..8adb6c5b9e6 100644 --- a/addons/website_blog/controllers/main.py +++ b/addons/website_blog/controllers/main.py @@ -149,11 +149,15 @@ class WebsiteBlog(http.Controller): tag_ids.append(current_tag) tag_ids = request.env['blog.tag'].browse(tag_ids).exists() return ','.join(slug(tag) for tag in tag_ids) + + tag_category = sorted(all_tags.mapped('category_id'), key=lambda category: category.name.upper()) + other_tags = sorted(all_tags.filtered(lambda x: not x.category_id), key=lambda tag: tag.name.upper()) + values = { 'blog': blog, 'blogs': blogs, 'main_object': blog, - 'tags': all_tags, + 'other_tags': other_tags, 'state_info': {"state": state, "published": published_count, "unpublished": unpublished_count}, 'active_tag_ids': active_tag_ids, 'tags_list' : tags_list, @@ -163,6 +167,7 @@ class WebsiteBlog(http.Controller): 'nav_list': self.nav_list(blog), 'blog_url': blog_url, 'date': date_begin, + 'tag_category': tag_category, } response = request.render("website_blog.blog_post_short", values) return response diff --git a/addons/website_blog/models/website_blog.py b/addons/website_blog/models/website_blog.py index e6957a34412..038bc6ce778 100644 --- a/addons/website_blog/models/website_blog.py +++ b/addons/website_blog/models/website_blog.py @@ -77,6 +77,19 @@ class Blog(models.Model): return tag_by_blog +class BlogTagCategory(models.Model): + _name = 'blog.tag.category' + _description = 'Blog Tag Category' + _order = 'name' + + name = fields.Char('Name', required=True, translate=True) + tag_ids = fields.One2many('blog.tag', 'category_id', string='Tags') + + _sql_constraints = [ + ('name_uniq', 'unique (name)', "Tag category already exists !"), + ] + + class BlogTag(models.Model): _name = 'blog.tag' _description = 'Blog Tag' @@ -84,6 +97,7 @@ class BlogTag(models.Model): _order = 'name' name = fields.Char('Name', required=True, translate=True) + category_id = fields.Many2one('blog.tag.category', 'Category', index=True) post_ids = fields.Many2many('blog.post', string='Posts') _sql_constraints = [ diff --git a/addons/website_blog/security/ir.model.access.csv b/addons/website_blog/security/ir.model.access.csv index c3f549640ae..c357d62525f 100644 --- a/addons/website_blog/security/ir.model.access.csv +++ b/addons/website_blog/security/ir.model.access.csv @@ -5,3 +5,5 @@ blog_post_all,blog.post,model_blog_post,,1,0,0,0 blog_post,blog.post,model_blog_post,website.group_website_designer,1,1,1,1 blog_tag,blog.tag,model_blog_tag,,1,0,0,0 blog_tag_edition,blog.tag,model_blog_tag,website.group_website_designer,1,1,1,1 +blog_tag_category,blog.tag.category,model_blog_tag_category,,1,0,0,0 +blog_tag_category,blog.tag.category,model_blog_tag_category,website.group_website_designer,1,1,1,1 diff --git a/addons/website_blog/static/src/js/website_blog.js b/addons/website_blog/static/src/js/website_blog.js index 7985e0ebecc..df4733e5a6e 100644 --- a/addons/website_blog/static/src/js/website_blog.js +++ b/addons/website_blog/static/src/js/website_blog.js @@ -62,6 +62,16 @@ $(document).ready(function() { $('.cover_footer').on('click', page_transist); $('a[href^="#blog_content"]').on('click', animate); $('.o_twitter, .o_facebook, .o_linkedin, .o_google, .o_twitter_complete, .o_facebook_complete, .o_linkedin_complete, .o_google_complete').on('click', shareArticle); + /* Archives years collapse */ + $('.blog_post_year_collapse').on('click', function() { + $(this).find('i.fa').toggleClass('fa-chevron-down fa-chevron-right'); + }); + /* Collapse in active year */ + var $activeYear = $('.blog_post_year li.active'); + if ($activeYear.length) { + var id = $activeYear.closest('ul').attr('id'); + $("li.blog_post_year_collapse[data-target='#"+ id +"']").click(); + } } /* Sharing links hover in blogpost */ diff --git a/addons/website_blog/static/src/less/website_blog.less b/addons/website_blog/static/src/less/website_blog.less index 9bfa937071c..f14b771df53 100644 --- a/addons/website_blog/static/src/less/website_blog.less +++ b/addons/website_blog/static/src/less/website_blog.less @@ -220,4 +220,15 @@ margin-top: 10px; } } + + .blog_post_year_collapse { + cursor: pointer; + > i { + color: @brand-primary; + } + } + + section.blog_tags ul.nav-pills li a { + padding: 2px 15px; + } } diff --git a/addons/website_blog/views/website_blog_templates.xml b/addons/website_blog/views/website_blog_templates.xml index 2e5d467c3a0..cf60aa669a4 100644 --- a/addons/website_blog/views/website_blog_templates.xml +++ b/addons/website_blog/views/website_blog_templates.xml @@ -392,23 +392,43 @@ + + + @@ -424,19 +444,19 @@

Archives

diff --git a/addons/website_blog/views/website_blog_views.xml b/addons/website_blog/views/website_blog_views.xml index 4ed5bb928f2..bb0b3833cab 100644 --- a/addons/website_blog/views/website_blog_views.xml +++ b/addons/website_blog/views/website_blog_views.xml @@ -187,8 +187,9 @@ blog_tag_tree blog.tag - + + @@ -202,6 +203,7 @@ +