From b38137218428acc81e386026d6cb42f5c6170884 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Tue, 2 May 2017 13:21:46 -0400 Subject: [PATCH] Use Ember.js for the `/u/account-created` path so we can add controls --- .../discourse/initializers/url-redirects.js.es6 | 4 +++- app/assets/javascripts/discourse/lib/url.js.es6 | 11 ++++++++--- .../discourse/routes/account-created.js.es6 | 7 +++++++ .../discourse/routes/app-route-map.js.es6 | 1 + .../discourse/templates/account-created.hbs | 3 +++ .../stylesheets/common/base/activation.scss | 5 +++++ app/controllers/application_controller.rb | 1 + app/controllers/users_controller.rb | 4 +++- app/views/users/account_created.html.erb | 9 --------- .../acceptance/account-created-test.js.es6 | 17 +++++++++++++++++ 10 files changed, 48 insertions(+), 14 deletions(-) create mode 100644 app/assets/javascripts/discourse/routes/account-created.js.es6 create mode 100644 app/assets/javascripts/discourse/templates/account-created.hbs delete mode 100644 app/views/users/account_created.html.erb create mode 100644 test/javascripts/acceptance/account-created-test.js.es6 diff --git a/app/assets/javascripts/discourse/initializers/url-redirects.js.es6 b/app/assets/javascripts/discourse/initializers/url-redirects.js.es6 index e183bda7424..6ed604872e3 100644 --- a/app/assets/javascripts/discourse/initializers/url-redirects.js.es6 +++ b/app/assets/javascripts/discourse/initializers/url-redirects.js.es6 @@ -20,6 +20,8 @@ export default { DiscourseURL.rewrite(new RegExp(`^/u/${username}/?$`, "i"), `/u/${username}/activity`); } - DiscourseURL.rewrite(/^\/u\/([^\/]+)\/?$/, "/u/$1/summary"); + DiscourseURL.rewrite(/^\/u\/([^\/]+)\/?$/, "/u/$1/summary", { + exceptions: ['/u/account-created'] + }); } }; diff --git a/app/assets/javascripts/discourse/lib/url.js.es6 b/app/assets/javascripts/discourse/lib/url.js.es6 index a08aa5810c6..b92662e3682 100644 --- a/app/assets/javascripts/discourse/lib/url.js.es6 +++ b/app/assets/javascripts/discourse/lib/url.js.es6 @@ -22,7 +22,12 @@ export function rewritePath(path) { const params = path.split("?"); let result = params[0]; - rewrites.forEach(rw => result = result.replace(rw.regexp, rw.replacement)); + rewrites.forEach(rw => { + if (((rw.opts.exceptions || []).some(ex => path.indexOf(ex) === 0))) { + return; + } + result = result.replace(rw.regexp, rw.replacement); + }); if (params.length > 1) { result += `?${params[1]}`; @@ -219,8 +224,8 @@ const DiscourseURL = Ember.Object.extend({ return this.handleURL(path, opts); }, - rewrite(regexp, replacement) { - rewrites.push({ regexp, replacement }); + rewrite(regexp, replacement, opts) { + rewrites.push({ regexp, replacement, opts: opts || {} }); }, redirectTo(url) { diff --git a/app/assets/javascripts/discourse/routes/account-created.js.es6 b/app/assets/javascripts/discourse/routes/account-created.js.es6 new file mode 100644 index 00000000000..f0bc8fba88f --- /dev/null +++ b/app/assets/javascripts/discourse/routes/account-created.js.es6 @@ -0,0 +1,7 @@ +import PreloadStore from 'preload-store'; + +export default Ember.Route.extend({ + setupController(controller) { + controller.set('accountCreated', PreloadStore.get('accountCreated')); + } +}); diff --git a/app/assets/javascripts/discourse/routes/app-route-map.js.es6 b/app/assets/javascripts/discourse/routes/app-route-map.js.es6 index cb0bdb8d5d3..1e8dceec05f 100644 --- a/app/assets/javascripts/discourse/routes/app-route-map.js.es6 +++ b/app/assets/javascripts/discourse/routes/app-route-map.js.es6 @@ -64,6 +64,7 @@ export default function() { // User routes this.route('users', { resetNamespace: true, path: '/u' }); this.route('password-reset', { path: '/u/password-reset/:token' }); + this.route('account-created', { path: '/u/account-created' }); this.route('user', { path: '/u/:username', resetNamespace: true }, function() { this.route('summary'); this.route('userActivity', { path: '/activity', resetNamespace: true }, function() { diff --git a/app/assets/javascripts/discourse/templates/account-created.hbs b/app/assets/javascripts/discourse/templates/account-created.hbs new file mode 100644 index 00000000000..45ee8169ba2 --- /dev/null +++ b/app/assets/javascripts/discourse/templates/account-created.hbs @@ -0,0 +1,3 @@ +
+ +
diff --git a/app/assets/stylesheets/common/base/activation.scss b/app/assets/stylesheets/common/base/activation.scss index 0ba3a000570..3894f149dea 100644 --- a/app/assets/stylesheets/common/base/activation.scss +++ b/app/assets/stylesheets/common/base/activation.scss @@ -7,4 +7,9 @@ padding: 20px; width: 550px; margin: 0 auto; + + .account-created { + font-size: 16px; + line-height: 24px; + } } diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 48b38ed88f2..feacb151095 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -10,6 +10,7 @@ require_dependency 'letter_avatar' require_dependency 'distributed_cache' require_dependency 'global_path' require_dependency 'secure_session' +require_dependency 'topic_query' class ApplicationController < ActionController::Base include CurrentUser diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 3bd33fa4fb7..86cbba83ee3 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -534,8 +534,10 @@ class UsersController < ApplicationController def account_created @custom_body_class = "static-account-created" @message = session['user_created_message'] || I18n.t('activation.missing_session') + store_preloaded("accountCreated", MultiJson.dump(message: @message)) + expires_now - render layout: 'no_ember' + render "default/empty" end def activate_account diff --git a/app/views/users/account_created.html.erb b/app/views/users/account_created.html.erb deleted file mode 100644 index 4389b8d6ebd..00000000000 --- a/app/views/users/account_created.html.erb +++ /dev/null @@ -1,9 +0,0 @@ -
- <%= @message.html_safe %> -
- -<%- content_for(:no_ember_head) do %> - <%= render_google_universal_analytics_code %> -<%- end %> - -<%= render_google_analytics_code %> diff --git a/test/javascripts/acceptance/account-created-test.js.es6 b/test/javascripts/acceptance/account-created-test.js.es6 new file mode 100644 index 00000000000..18b50a9a2c2 --- /dev/null +++ b/test/javascripts/acceptance/account-created-test.js.es6 @@ -0,0 +1,17 @@ +import { acceptance } from "helpers/qunit-helpers"; +import PreloadStore from 'preload-store'; + +acceptance("Account Created"); + +test("account created", () => { + visit("/u/account-created"); + PreloadStore.store('accountCreated', { + message: "Hello World" + }); + + andThen(() => { + ok(exists('.account-created')); + equal(find('.account-created').text(), "Hello World", "it displays the message"); + }); +}); +