Просмотр исходного кода

Moved logic from controllers to components

Rafał Pitoń 10 лет назад
Родитель
Сommit
c93efe5df7
27 измененных файлов с 191 добавлено и 271 удалено
  1. 59 0
      misago/emberapp/app/components/request-link-form.js
  2. 65 0
      misago/emberapp/app/components/set-new-password-form.js
  3. 3 1
      misago/emberapp/app/components/user-nav.js
  4. 0 4
      misago/emberapp/app/controllers/activation/link-sent.js
  5. 0 58
      misago/emberapp/app/controllers/activation/request-link.js
  6. 0 59
      misago/emberapp/app/controllers/forgotten-password/change-form.js
  7. 0 4
      misago/emberapp/app/controllers/forgotten-password/link-sent.js
  8. 0 5
      misago/emberapp/app/controllers/forgotten-password/request-link.js
  9. 0 4
      misago/emberapp/app/controllers/navbar.js
  10. 0 4
      misago/emberapp/app/controllers/register.js
  11. 0 4
      misago/emberapp/app/controllers/site-nav.js
  12. 1 1
      misago/emberapp/app/templates/activation/link-sent.hbs
  13. 1 18
      misago/emberapp/app/templates/activation/request-link.hbs
  14. 14 0
      misago/emberapp/app/templates/components/request-link-form.hbs
  15. 14 0
      misago/emberapp/app/templates/components/set-new-password-form.hbs
  16. 5 0
      misago/emberapp/app/templates/components/user-nav.hbs
  17. 1 18
      misago/emberapp/app/templates/forgotten-password/change-form.hbs
  18. 1 1
      misago/emberapp/app/templates/forgotten-password/link-sent.hbs
  19. 1 18
      misago/emberapp/app/templates/forgotten-password/request-link.hbs
  20. 0 7
      misago/emberapp/app/templates/user-nav.hbs
  21. 13 0
      misago/emberapp/tests/unit/components/request-link-form-test.js
  22. 13 0
      misago/emberapp/tests/unit/components/set-new-password-form-test.js
  23. 0 13
      misago/emberapp/tests/unit/controllers/forgotten-password/change-form-test.js
  24. 0 13
      misago/emberapp/tests/unit/controllers/forgotten-password/link-sent-test.js
  25. 0 13
      misago/emberapp/tests/unit/controllers/forgotten-password/request-link-test.js
  26. 0 13
      misago/emberapp/tests/unit/controllers/site-nav-test.js
  27. 0 13
      misago/emberapp/tests/unit/controllers/user-nav-test.js

+ 59 - 0
misago/emberapp/app/components/request-link-form.js

@@ -0,0 +1,59 @@
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+  tagName: 'form',
+
+  isLoading: false,
+  email: '',
+
+  router: function() {
+    return this.container.lookup('router:main');
+  }.property(),
+
+  submit: function() {
+    if (this.get('isLoading')) {
+      return false;
+    }
+
+    var email = Ember.$.trim(this.get('email'));
+
+    if (email === "") {
+      this.toast.warning(gettext("Enter e-mail address."));
+      return false;
+    }
+
+    this.set('isLoading', true);
+
+    var self = this;
+    this.rpc.ajax(this.get('url'), {
+      email: email
+    }).then(function(requestingUser) {
+      self.success(requestingUser);
+    }, function(jqXHR) {
+      self.error(jqXHR);
+    }).finally(function() {
+      self.set('isLoading', false);
+    });
+
+    return false;
+  },
+
+  success: function(requestingUser) {
+    this.sendAction('action', requestingUser);
+    this.set('email', '');
+  },
+
+  error: function(jqXHR) {
+    if (jqXHR.status === 400){
+      var rejection = jqXHR.responseJSON;
+      if (rejection.code === 'banned') {
+        this.get('router').intermediateTransitionTo('error-banned', rejection.detail);
+        this.set('email', '');
+      } else {
+        this.toast.error(rejection.detail);
+      }
+    } else {
+      this.toast.apiError(jqXHR);
+    }
+  }
+});

+ 65 - 0
misago/emberapp/app/components/set-new-password-form.js

@@ -0,0 +1,65 @@
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+  tagName: 'form',
+
+  isLoading: false,
+  password: '',
+
+  router: function() {
+    return this.container.lookup('router:main');
+  }.property(),
+
+  url: function() {
+    return 'change-password/' + this.get('model.user_id') + '/' + this.get('model.token');
+  }.property('model'),
+
+  submit: function() {
+    if (this.get('isLoading')) {
+      return false;
+    }
+
+    var password = Ember.$.trim(this.get('password'));
+
+    if (password === "") {
+      this.toast.warning(gettext("Enter new password."));
+      return false;
+    }
+
+    this.set('isLoading', true);
+
+    var self = this;
+    this.rpc.ajax(this.get('url'), {
+      password: password
+    }).then(function() {
+      self.success();
+    }, function(jqXHR) {
+      self.error(jqXHR);
+    }).finally(function() {
+      self.set('isLoading', false);
+    });
+
+    return false;
+  },
+
+  success: function() {
+    this.set('password', '');
+
+    this.auth.openLoginModal();
+    this.toast.success(gettext("Your password has been changed."));
+  },
+
+  error: function(jqXHR) {
+    var rejection = jqXHR.responseJSON;
+    if (jqXHR.status === 400){
+      this.toast.error(rejection.detail);
+    } else {
+      if (jqXHR.status === 404) {
+        this.toast.error(rejection.detail);
+        this.get('router').transitionTo('forgotten-password');
+      } else {
+        this.toast.apiError(jqXHR);
+      }
+    }
+  }
+});

+ 3 - 1
misago/emberapp/app/controllers/user-nav.js → misago/emberapp/app/components/user-nav.js

@@ -1,6 +1,8 @@
 import Ember from 'ember';
 
-export default Ember.Controller.extend({
+export default Ember.Component.extend({
+  classNames: ['user-nav', 'navbar-right'],
+
   actions: {
     logout: function() {
       this.auth.logout();

+ 0 - 4
misago/emberapp/app/controllers/activation/link-sent.js

@@ -1,4 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.ObjectController.extend({
-});

+ 0 - 58
misago/emberapp/app/controllers/activation/request-link.js

@@ -1,58 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.ObjectController.extend({
-  rpcUrl: 'activation/send-link',
-  isLoading: false,
-  email: '',
-
-  router: function() {
-    return this.container.lookup('router:main');
-  }.property(),
-
-  success: function(requestingUser) {
-    this.send('showSentPage', requestingUser);
-    this.set('email', '');
-  },
-
-  error: function(jqXHR) {
-    if (jqXHR.status === 400){
-      var rejection = jqXHR.responseJSON;
-      if (rejection.code === 'banned') {
-        this.get('router').intermediateTransitionTo('error-banned', rejection.detail);
-        this.set('email', '');
-      } else {
-        this.toast.error(rejection.detail);
-      }
-    } else {
-      this.toast.apiError(jqXHR);
-    }
-  },
-
-  actions: {
-    submit: function() {
-      if (this.get('isLoading')) {
-        return;
-      }
-
-      var email = Ember.$.trim(this.get('email'));
-
-      if (email === "") {
-        this.toast.warning(gettext("Enter e-mail address."));
-        return;
-      }
-
-      this.set('isLoading', true);
-
-      var self = this;
-      this.rpc.ajax(this.get('rpcUrl'), {
-        email: email
-      }).then(function(requestingUser) {
-        self.success(requestingUser);
-      }, function(jqXHR) {
-        self.error(jqXHR);
-      }).finally(function() {
-        self.set('isLoading', false);
-      });
-    }
-  }
-});

+ 0 - 59
misago/emberapp/app/controllers/forgotten-password/change-form.js

@@ -1,59 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.ObjectController.extend({
-  isLoading: false,
-  password: '',
-
-  change_password_url: function() {
-    return 'change-password/' + this.get('user_id') + '/' + this.get('token');
-  }.property('user_id', 'token'),
-
-  actions: {
-    submit: function() {
-      if (this.get('isLoading')) {
-        return;
-      }
-
-      var password = Ember.$.trim(this.get('password'));
-
-      if (password === "") {
-        this.toast.warning(gettext("Enter new password."));
-        return;
-      }
-
-      this.set('isLoading', true);
-
-      var self = this;
-      this.rpc.ajax(this.get('change_password_url'), {
-        password: password
-      }).then(function() {
-        self.send('success');
-      }, function(jqXHR) {
-        self.send('error', jqXHR);
-      }).finally(function() {
-        self.set('isLoading', false);
-      });
-    },
-
-    success: function() {
-      this.set('password', '');
-
-      this.auth.openLoginModal();
-      this.toast.success(gettext("Your password has been changed."));
-    },
-
-    error: function(jqXHR) {
-      var rejection = jqXHR.responseJSON;
-      if (jqXHR.status === 400){
-        this.toast.error(rejection.detail);
-      } else {
-        if (jqXHR.status === 404) {
-          this.toast.error(rejection.detail);
-          this.transitionTo('forgotten-password');
-        } else {
-          this.toast.apiError(jqXHR);
-        }
-      }
-    }
-  }
-});

+ 0 - 4
misago/emberapp/app/controllers/forgotten-password/link-sent.js

@@ -1,4 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.ObjectController.extend({
-});

+ 0 - 5
misago/emberapp/app/controllers/forgotten-password/request-link.js

@@ -1,5 +0,0 @@
-import RequestLinkController from 'misago/controllers/activation/request-link';
-
-export default RequestLinkController.extend({
-  rpcUrl: 'change-password/send-link'
-});

+ 0 - 4
misago/emberapp/app/controllers/navbar.js

@@ -1,4 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Controller.extend({
-});

+ 0 - 4
misago/emberapp/app/controllers/register.js

@@ -1,4 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Controller.extend({
-});

+ 0 - 4
misago/emberapp/app/controllers/site-nav.js

@@ -1,4 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Controller.extend({
-});

+ 1 - 1
misago/emberapp/app/templates/activation/link-sent.hbs

@@ -8,7 +8,7 @@
   <div class="container">
 
     <p class="lead">
-      {{gettext "%(username)s, we have sent your activation link to %(email)s." username=username email=email}}
+      {{gettext "%(username)s, we have sent your activation link to %(email)s." username=model.username email=model.email}}
     </p>
 
     <button class="btn btn-default" {{action "retry"}}>

+ 1 - 18
misago/emberapp/app/templates/activation/request-link.hbs

@@ -20,24 +20,7 @@
       <div class="col-md-4">
 
         <div class="well well-form">
-          <form {{action "submit" on="submit"}}>
-
-            <div class="form-group">
-              <div class="control-input">
-                {{input type="text" value=email class="form-control" placeholder=(gettext "Your e-mail address")}}
-              </div>
-            </div>
-
-            {{#if isLoading}}
-            <button type="button" class="btn btn-block btn-primary" disabled="disabled">
-              <span class="fa fa-cog fa-spin"></span>
-              {{gettext "Processing..."}}
-            </button>
-            {{else}}
-            <button type="submit" class="btn btn-primary btn-block">{{gettext "Send link"}}</button>
-            {{/if}}
-
-          </form>
+          {{request-link-form action="showSentPage" url="activation/send-link" placeholder=(gettext "Your e-mail address")}}
         </div>
 
       </div>

+ 14 - 0
misago/emberapp/app/templates/components/request-link-form.hbs

@@ -0,0 +1,14 @@
+<div class="form-group">
+  <div class="control-input">
+    {{input type="text" value=email class="form-control" placeholder=placeholder}}
+  </div>
+</div>
+
+{{#if isLoading}}
+<button type="button" class="btn btn-block btn-primary" disabled="disabled">
+  <span class="fa fa-cog fa-spin"></span>
+  {{gettext "Sending request..."}}
+</button>
+{{else}}
+<button type="submit" class="btn btn-primary btn-block">{{gettext "Send link"}}</button>
+{{/if}}

+ 14 - 0
misago/emberapp/app/templates/components/set-new-password-form.hbs

@@ -0,0 +1,14 @@
+<div class="form-group">
+  <div class="control-input">
+    {{input type="password" value=password class="form-control" placeholder=(gettext "Enter new password")}}
+  </div>
+</div>
+
+{{#if isLoading}}
+<button type="button" class="btn btn-block btn-primary" disabled="disabled">
+  <span class="fa fa-cog fa-spin"></span>
+  {{gettext "Sending request..."}}
+</button>
+{{else}}
+<button type="submit" class="btn btn-primary btn-block">{{gettext "Change password"}}</button>
+{{/if}}

+ 5 - 0
misago/emberapp/app/templates/components/user-nav.hbs

@@ -0,0 +1,5 @@
+<p class="navbar-text">{{user.username}}</p>
+
+<button type="button" class="btn btn-info navbar-btn btn-sm" {{action "logout"}}>
+  {{gettext "Log out"}}
+</button>

+ 1 - 18
misago/emberapp/app/templates/forgotten-password/change-form.hbs

@@ -11,24 +11,7 @@
       <div class="col-md-4 col-md-offset-4">
 
         <div class="well well-form">
-          <form {{action "submit" on="submit"}}>
-
-            <div class="form-group">
-              <div class="control-input">
-                {{input type="password" value=password class="form-control" placeholder=(gettext "Enter new password")}}
-              </div>
-            </div>
-
-            {{#if isLoading}}
-            <button type="button" class="btn btn-block btn-primary" disabled="disabled">
-              <span class="fa fa-cog fa-spin"></span>
-              {{gettext "Processing..."}}
-            </button>
-            {{else}}
-            <button type="submit" class="btn btn-primary btn-block">{{gettext "Change password"}}</button>
-            {{/if}}
-
-          </form>
+          {{set-new-password-form model=model}}
         </div>
 
       </div>

+ 1 - 1
misago/emberapp/app/templates/forgotten-password/link-sent.hbs

@@ -8,7 +8,7 @@
   <div class="container">
 
     <p class="lead">
-      {{gettext "%(username)s, we have sent link to your password change form to %(email)s." username=username email=email}}
+      {{gettext "%(username)s, we have sent link to your password change form to %(email)s." username=model.username email=model.email}}
     </p>
 
     <button class="btn btn-default" {{action "retry"}}>

+ 1 - 18
misago/emberapp/app/templates/forgotten-password/request-link.hbs

@@ -20,24 +20,7 @@
       <div class="col-md-4">
 
         <div class="well well-form">
-          <form {{action "submit" on="submit"}}>
-
-            <div class="form-group">
-              <div class="control-input">
-                {{input type="text" value=email class="form-control" placeholder=(gettext "Your e-mail address")}}
-              </div>
-            </div>
-
-            {{#if isLoading}}
-            <button type="button" class="btn btn-block btn-primary" disabled="disabled">
-              <span class="fa fa-cog fa-spin"></span>
-              {{gettext "Processing..."}}
-            </button>
-            {{else}}
-            <button type="submit" class="btn btn-primary btn-block">{{gettext "Send link"}}</button>
-            {{/if}}
-
-          </form>
+          {{request-link-form action="showSentPage" url="change-password/send-link" placeholder=(gettext "Your e-mail address")}}
         </div>
 
       </div>

+ 0 - 7
misago/emberapp/app/templates/user-nav.hbs

@@ -1,7 +0,0 @@
-<div class="user-nav navbar-right">
-  <p class="navbar-text">{{user.username}}</p>
-
-  <button type="button" class="btn btn-info navbar-btn btn-sm" {{action "logout"}}>
-    {{gettext "Log out"}}
-  </button>
-</div>

+ 13 - 0
misago/emberapp/tests/unit/components/request-link-form-test.js

@@ -0,0 +1,13 @@
+import {
+  moduleFor,
+  test
+} from 'ember-qunit';
+
+moduleFor('component:request-link-form', 'RequestLinkFormComponent');
+
+test('it exists', function(assert) {
+  assert.expect(1);
+
+  var component = this.subject();
+  assert.ok(component);
+});

+ 13 - 0
misago/emberapp/tests/unit/components/set-new-password-form-test.js

@@ -0,0 +1,13 @@
+import {
+  moduleFor,
+  test
+} from 'ember-qunit';
+
+moduleFor('component:set-new-password-form', 'SetNewPasswordFormController');
+
+test('it exists', function(assert) {
+  assert.expect(1);
+
+  var component = this.subject();
+  assert.ok(component);
+});

+ 0 - 13
misago/emberapp/tests/unit/controllers/forgotten-password/change-form-test.js

@@ -1,13 +0,0 @@
-import {
-  moduleFor,
-  test
-} from 'ember-qunit';
-
-moduleFor('controller:forgotten-password/change-form', 'ChangeFormController');
-
-test('it exists', function(assert) {
-  assert.expect(1);
-
-  var controller = this.subject();
-  assert.ok(controller);
-});

+ 0 - 13
misago/emberapp/tests/unit/controllers/forgotten-password/link-sent-test.js

@@ -1,13 +0,0 @@
-import {
-  moduleFor,
-  test
-} from 'ember-qunit';
-
-moduleFor('controller:forgotten-password/link-sent', 'LinkSentController');
-
-test('it exists', function(assert) {
-  assert.expect(1);
-
-  var controller = this.subject();
-  assert.ok(controller);
-});

+ 0 - 13
misago/emberapp/tests/unit/controllers/forgotten-password/request-link-test.js

@@ -1,13 +0,0 @@
-import {
-  moduleFor,
-  test
-} from 'ember-qunit';
-
-moduleFor('controller:forgotten-password/request-link', 'RequestLinkController');
-
-test('it exists', function(assert) {
-  assert.expect(1);
-
-  var controller = this.subject();
-  assert.ok(controller);
-});

+ 0 - 13
misago/emberapp/tests/unit/controllers/site-nav-test.js

@@ -1,13 +0,0 @@
-import {
-  moduleFor,
-  test
-} from 'ember-qunit';
-
-moduleFor('controller:site-nav', 'SiteNavController');
-
-test('it exists', function(assert) {
-  assert.expect(1);
-
-  var controller = this.subject();
-  assert.ok(controller);
-});

+ 0 - 13
misago/emberapp/tests/unit/controllers/user-nav-test.js

@@ -1,13 +0,0 @@
-import {
-  moduleFor,
-  test
-} from 'ember-qunit';
-
-moduleFor('controller:user-nav', 'UserNavController');
-
-test('it exists', function(assert) {
-  assert.expect(1);
-
-  var controller = this.subject();
-  assert.ok(controller);
-});