From 26b7bf388ebf1debda2676e0929a828d05f2a2c5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9gis=20Hanol?= <regis@hanol.fr>
Date: Mon, 20 Jan 2014 14:41:11 +0100
Subject: [PATCH] BUGFIX: JS error when login_required is enabled

---
 app/assets/javascripts/discourse.js                  |  3 +--
 .../discourse/routes/application_routes.js           | 12 ++++++------
 app/models/site.rb                                   | 10 ++++------
 3 files changed, 11 insertions(+), 14 deletions(-)

diff --git a/app/assets/javascripts/discourse.js b/app/assets/javascripts/discourse.js
index 2b0544c7a..9fd444ec6 100644
--- a/app/assets/javascripts/discourse.js
+++ b/app/assets/javascripts/discourse.js
@@ -88,8 +88,7 @@ window.Discourse = Ember.Application.createWithMixins(Discourse.Ajax, {
   },
 
   loginRequired: function() {
-    return Discourse.SiteSettings.login_required &&
-           !Discourse.User.current();
+    return Discourse.SiteSettings.login_required && !Discourse.User.current();
   }.property(),
 
   redirectIfLoginRequired: function(route) {
diff --git a/app/assets/javascripts/discourse/routes/application_routes.js b/app/assets/javascripts/discourse/routes/application_routes.js
index 08c64d7dd..829875468 100644
--- a/app/assets/javascripts/discourse/routes/application_routes.js
+++ b/app/assets/javascripts/discourse/routes/application_routes.js
@@ -7,19 +7,18 @@
 Discourse.Route.buildRoutes(function() {
   var router = this;
 
+  // Generate static page routes
+  _.each(Discourse.StaticController.PAGES, function (page) {
+    router.route(page, { path: '/' + page });
+  });
+
   // Topic routes
   this.resource('topic', { path: '/t/:slug/:id' }, function() {
     this.route('fromParams', { path: '/' });
     this.route('fromParamsNear', { path: '/:nearPost' });
   });
 
-  // Generate static page routes
-  _.each(Discourse.StaticController.PAGES, function (page) {
-    router.route(page, { path: '/' + page });
-  });
-
   this.resource('discovery', { path: '/' }, function() {
-
     router = this;
 
     // top
@@ -41,6 +40,7 @@ Discourse.Route.buildRoutes(function() {
       router.route(top + 'Category', { path: '/category/:parentSlug/:slug/l/top/' + period + '/more' });
     });
 
+    // filters
     Discourse.Site.currentProp('filters').forEach(function(filter) {
       router.route(filter, { path: '/' + filter });
       router.route(filter, { path: '/' + filter + '/more' });
diff --git a/app/models/site.rb b/app/models/site.rb
index 359977b0b..8ae343812 100644
--- a/app/models/site.rb
+++ b/app/models/site.rb
@@ -58,16 +58,14 @@ class Site
   def self.cached_json(guardian)
 
     if guardian.anonymous? && SiteSetting.login_required
-      return {}.to_json
+      return {
+        periods: TopTopic.periods.map(&:to_s),
+        filters: Discourse.filters.map(&:to_s),
+      }.to_json
     end
 
-    # Sam: bumping this way down, SiteSerializer will serialize post actions as well,
-    #   On my local this was not being flushed as post actions types changed, it turn this
-    #   broke local.
     site = Site.new(guardian)
-    #Discourse.cache.fetch(site.cache_key, family: "site", expires_in: 1.minute) do
     MultiJson.dump(SiteSerializer.new(site, root: false))
-    #end
   end
 
   def self.invalidate_cache