Show login button on 404 page. Add routes to show login and signup modals when page/route loads. If logged in and showing 404 page, load ember app.

This commit is contained in:
Neil Lalonde 2014-02-18 17:18:42 -05:00
parent 2a8734f0d5
commit 7f6b2e5563
9 changed files with 48 additions and 3 deletions

View File

@ -8,6 +8,7 @@ Discourse.Route.buildRoutes(function() {
var router = this;
// Generate static page routes
// e.g., faq, tos, privacy, login
_.each(Discourse.StaticController.PAGES, function (page) {
router.route(page, { path: '/' + page });
});
@ -90,4 +91,7 @@ Discourse.Route.buildRoutes(function() {
this.route('invited');
});
this.route('signup', {path: '/signup'});
this.route('login', {path: '/login'});
});

View File

@ -0,0 +1,11 @@
Discourse.LoginRoute = Discourse.Route.extend({
beforeModel: function() {
if (!Discourse.SiteSetting.login_required) {
this.transitionTo('discovery.latest').then(function(e) {
Ember.run.next(function() {
e.send('showLogin');
});
});
}
}
});

View File

@ -0,0 +1,9 @@
Discourse.SignupRoute = Discourse.Route.extend({
beforeModel: function() {
this.transitionTo('discovery.latest').then(function(e) {
Ember.run.next(function() {
e.send('showCreateAccount');
});
});
}
});

View File

@ -26,3 +26,15 @@ _.each(Discourse.StaticController.PAGES, function(page) {
});
});
Discourse.LoginRoute.reopen({
beforeModel: function() {
if (!Discourse.SiteSettings.login_required) {
this.transitionTo('discovery.latest').then(function(e) {
Ember.run.next(function() {
e.send('showLogin');
});
});
}
}
});

View File

@ -104,7 +104,7 @@ class ApplicationController < ActionController::Base
# from the above rescue_from blocks will fail because that isn't valid json.
render status: error, layout: false, text: (error == 404) ? build_not_found_page(error) : message
else
render text: build_not_found_page(error, 'no_js')
render text: build_not_found_page(error, current_user ? 'application' : 'no_js')
end
end

View File

@ -24,6 +24,11 @@
<div class="title span13">
<a href="/"><img src="<%=SiteSetting.logo_url%>" alt="<%=SiteSetting.title%>" id="site-logo"></a>
</div>
<% unless current_user %>
<div class='panel clearfix'>
<a href="/login" class='btn btn-primary btn-small'><%= I18n.t('log_in') %></a>
</div>
<% end %>
</div>
</div>
</div>

View File

@ -1 +1,3 @@
<%= markdown_content(:login_required_welcome_message) %>
<% if SiteSetting.login_required %>
<%= markdown_content(:login_required_welcome_message) %>
<% end %>

View File

@ -20,6 +20,7 @@ en:
posts: "posts"
loading: "Loading"
powered_by_html: 'Powered by <a href="http://www.discourse.org">Discourse</a>, best viewed with JavaScript enabled'
log_in: "Log In"
via: "%{username} via %{site_name}"
is_reserved: "is reserved"

View File

@ -14,7 +14,7 @@ Discourse::Application.routes.draw do
match "/404", to: "exceptions#not_found", via: [:get, :post]
mount Sidekiq::Web => "/sidekiq", constraints: AdminConstraint.new
get "site" => "site#index"
resources :forums
@ -155,6 +155,7 @@ Discourse::Application.routes.draw do
get "faq" => "static#show", id: "faq"
get "tos" => "static#show", id: "tos"
get "privacy" => "static#show", id: "privacy"
get "signup" => "list#latest"
get "users/search/users" => "users#search_users"
get "users/password-reset/:token" => "users#password_reset"