main.js 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. const Mn = require('backbone.marionette');
  2. const App = require('../../main');
  3. const CertificateModel = require('../../../models/certificate');
  4. const ListView = require('./list/main');
  5. const ErrorView = require('../../error/main');
  6. const EmptyView = require('../../empty/main');
  7. const template = require('./main.ejs');
  8. module.exports = Mn.View.extend({
  9. id: 'nginx-certificates',
  10. template: template,
  11. ui: {
  12. list_region: '.list-region',
  13. add: '.add-item',
  14. help: '.help',
  15. dimmer: '.dimmer'
  16. },
  17. regions: {
  18. list_region: '@ui.list_region'
  19. },
  20. events: {
  21. 'click @ui.add': function (e) {
  22. e.preventDefault();
  23. let model = new CertificateModel.Model({provider: $(e.currentTarget).data('cert')});
  24. App.Controller.showNginxCertificateForm(model);
  25. },
  26. 'click @ui.help': function (e) {
  27. e.preventDefault();
  28. App.Controller.showHelp(App.i18n('certificates', 'help-title'), App.i18n('certificates', 'help-content'));
  29. }
  30. },
  31. templateContext: {
  32. showAddButton: App.Cache.User.canManage('certificates')
  33. },
  34. onRender: function () {
  35. let view = this;
  36. App.Api.Nginx.Certificates.getAll(['owner'])
  37. .then(response => {
  38. if (!view.isDestroyed()) {
  39. if (response && response.length) {
  40. view.showChildView('list_region', new ListView({
  41. collection: new CertificateModel.Collection(response)
  42. }));
  43. } else {
  44. let manage = App.Cache.User.canManage('certificates');
  45. view.showChildView('list_region', new EmptyView({
  46. title: App.i18n('certificates', 'empty'),
  47. subtitle: App.i18n('all-hosts', 'empty-subtitle', {manage: manage}),
  48. link: manage ? App.i18n('certificates', 'add') : null,
  49. btn_color: 'pink',
  50. permission: 'certificates',
  51. action: function () {
  52. App.Controller.showNginxCertificateForm();
  53. }
  54. }));
  55. }
  56. }
  57. })
  58. .catch(err => {
  59. view.showChildView('list_region', new ErrorView({
  60. code: err.code,
  61. message: err.message,
  62. retry: function () {
  63. App.Controller.showNginxCertificates();
  64. }
  65. }));
  66. console.error(err);
  67. })
  68. .then(() => {
  69. view.ui.dimmer.removeClass('active');
  70. });
  71. }
  72. });