item.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. const Mn = require('backbone.marionette');
  2. const App = require('../../main');
  3. const Tokens = require('../../tokens');
  4. const template = require('./item.ejs');
  5. module.exports = Mn.View.extend({
  6. template: template,
  7. tagName: 'tr',
  8. ui: {
  9. edit: 'a.edit-user',
  10. permissions: 'a.edit-permissions',
  11. password: 'a.set-password',
  12. login: 'a.login',
  13. delete: 'a.delete-user'
  14. },
  15. events: {
  16. 'click @ui.edit': function (e) {
  17. e.preventDefault();
  18. App.Controller.showUserForm(this.model);
  19. },
  20. 'click @ui.permissions': function (e) {
  21. e.preventDefault();
  22. App.Controller.showUserPermissions(this.model);
  23. },
  24. 'click @ui.password': function (e) {
  25. e.preventDefault();
  26. App.Controller.showUserPasswordForm(this.model);
  27. },
  28. 'click @ui.delete': function (e) {
  29. e.preventDefault();
  30. App.Controller.showUserDeleteConfirm(this.model);
  31. },
  32. 'click @ui.login': function (e) {
  33. e.preventDefault();
  34. if (App.Cache.User.get('id') !== this.model.get('id')) {
  35. this.ui.login.prop('disabled', true).addClass('btn-disabled');
  36. App.Api.Users.loginAs(this.model.get('id'))
  37. .then(res => {
  38. Tokens.addToken(res.token, res.user.nickname || res.user.name);
  39. window.location = '/';
  40. window.location.reload();
  41. })
  42. .catch(err => {
  43. alert(err.message);
  44. this.ui.login.prop('disabled', false).removeClass('btn-disabled');
  45. });
  46. }
  47. }
  48. },
  49. templateContext: {
  50. isSelf: function () {
  51. return App.Cache.User.get('id') === this.id;
  52. }
  53. },
  54. initialize: function () {
  55. this.listenTo(this.model, 'change', this.render);
  56. }
  57. });