main.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. const $ = require('jquery');
  2. const Mn = require('backbone.marionette');
  3. const i18n = require('../../i18n');
  4. const Cache = require('../../cache');
  5. const Controller = require('../../controller');
  6. const Tokens = require('../../tokens');
  7. const template = require('./main.ejs');
  8. module.exports = Mn.View.extend({
  9. id: 'header',
  10. className: 'header',
  11. template: template,
  12. ui: {
  13. link: 'a',
  14. details: 'a.edit-details',
  15. password: 'a.change-password'
  16. },
  17. events: {
  18. 'click @ui.details': function (e) {
  19. e.preventDefault();
  20. Controller.showUserForm(Cache.User);
  21. },
  22. 'click @ui.password': function (e) {
  23. e.preventDefault();
  24. Controller.showUserPasswordForm(Cache.User);
  25. },
  26. 'click @ui.link': function (e) {
  27. e.preventDefault();
  28. let href = $(e.currentTarget).attr('href');
  29. switch (href) {
  30. case '/':
  31. Controller.showDashboard();
  32. break;
  33. case '/logout':
  34. Controller.logout();
  35. break;
  36. }
  37. }
  38. },
  39. templateContext: {
  40. getUserField: function (field, default_val) {
  41. return Cache.User.get(field) || default_val;
  42. },
  43. getRole: function () {
  44. return i18n('roles', Cache.User.isAdmin() ? 'admin' : 'user');
  45. },
  46. getLogoutText: function () {
  47. if (Tokens.getTokenCount() > 1) {
  48. return i18n('main', 'sign-in-as', {name: Tokens.getNextTokenName()});
  49. }
  50. return i18n('str', 'sign-out');
  51. }
  52. },
  53. initialize: function () {
  54. this.listenTo(Cache.User, 'change', this.render);
  55. }
  56. });