diff --git a/app/assets/javascripts/discourse/helpers/application_helpers.js b/app/assets/javascripts/discourse/helpers/application_helpers.js index 89a58dc90..b703ceef5 100644 --- a/app/assets/javascripts/discourse/helpers/application_helpers.js +++ b/app/assets/javascripts/discourse/helpers/application_helpers.js @@ -315,3 +315,21 @@ Handlebars.registerHelper('faqLink', function(property, options) { "'>" + I18n.t('faq') + "" ); }); + + +Ember.Handlebars.registerHelper('link-to-categories', function(){ + + var options = [].slice.call(arguments, -1)[0], + params = Discourse.SiteSettings.enable_wide_category_list ? ['list.wideCategories'] : ['list.categories'], + hash = options.hash; + + hash.disabledBinding = hash.disabledWhen; + + hash.parameters = { + context: this, + options: options, + params: params + }; + + return Ember.Handlebars.helpers.view.call(this, Ember.LinkView, options); +}); diff --git a/app/assets/javascripts/discourse/routes/application_routes.js b/app/assets/javascripts/discourse/routes/application_routes.js index 5772dc6a3..9efe95414 100644 --- a/app/assets/javascripts/discourse/routes/application_routes.js +++ b/app/assets/javascripts/discourse/routes/application_routes.js @@ -29,11 +29,15 @@ Discourse.Route.buildRoutes(function() { }); // the homepage is the first item of the 'top_menu' site setting - var settings = Discourse.SiteSettings || PreloadStore.get('siteSettings'); + var settings = Discourse.SiteSettings; var homepage = settings.top_menu.split("|")[0].split(",")[0]; this.route(homepage, { path: '/' }); - this.route('categories', { path: '/categories' }); + if(settings.enable_wide_category_list) { + this.route('wideCategories', { path: '/categories' }); + } else { + this.route('categories', { path: '/categories' }); + } this.route('category', { path: '/category/:slug/more' }); this.route('category', { path: '/category/:slug' }); }); diff --git a/app/assets/javascripts/discourse/routes/list_categories_route.js b/app/assets/javascripts/discourse/routes/list_categories_route.js index 5ebd12d4d..8a12779b6 100644 --- a/app/assets/javascripts/discourse/routes/list_categories_route.js +++ b/app/assets/javascripts/discourse/routes/list_categories_route.js @@ -8,6 +8,8 @@ **/ Discourse.ListCategoriesRoute = Discourse.Route.extend({ + template: 'listCategories', + redirect: function() { Discourse.redirectIfLoginRequired(this); }, actions: { @@ -32,7 +34,7 @@ Discourse.ListCategoriesRoute = Discourse.Route.extend({ }, renderTemplate: function() { - this.render('listCategories', { into: 'list', outlet: 'listView' }); + this.render(this.get('template'), { into: 'list', outlet: 'listView' }); }, afterModel: function(categoryList) { diff --git a/app/assets/javascripts/discourse/routes/list_wide_categories_route.js b/app/assets/javascripts/discourse/routes/list_wide_categories_route.js new file mode 100644 index 000000000..7d594a309 --- /dev/null +++ b/app/assets/javascripts/discourse/routes/list_wide_categories_route.js @@ -0,0 +1,7 @@ +Discourse.ListWideCategoriesRoute = Discourse.ListCategoriesRoute.extend({ + template: 'listWideCategories' +}); + + +Discourse.ListWideCategoriesController = Discourse.Controller.extend({ +}); diff --git a/app/assets/javascripts/discourse/templates/header.js.handlebars b/app/assets/javascripts/discourse/templates/header.js.handlebars index c3790dde1..38b18f31b 100644 --- a/app/assets/javascripts/discourse/templates/header.js.handlebars +++ b/app/assets/javascripts/discourse/templates/header.js.handlebars @@ -139,7 +139,7 @@ {{#if categories}}