| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 | 
							- const Mn        = require('backbone.marionette');
 
- const App       = require('../main');
 
- const UserModel = require('../../models/user');
 
- const template  = require('./form.ejs');
 
- require('jquery-serializejson');
 
- module.exports = Mn.View.extend({
 
-     template:  template,
 
-     className: 'modal-dialog',
 
-     ui: {
 
-         form:    'form',
 
-         buttons: '.modal-footer button',
 
-         cancel:  'button.cancel',
 
-         save:    'button.save',
 
-         error:   '.secret-error'
 
-     },
 
-     events: {
 
-         'click @ui.save': function (e) {
 
-             e.preventDefault();
 
-             this.ui.error.hide();
 
-             let view = this;
 
-             let data = this.ui.form.serializeJSON();
 
-             let show_password = this.model.get('email') === '[email protected]';
 
-             // [email protected] is not allowed
 
-             if (data.email === '[email protected]') {
 
-                 this.ui.error.text(App.i18n('users', 'default_error')).show();
 
-                 this.ui.buttons.prop('disabled', false).removeClass('btn-disabled');
 
-                 return;
 
-             }
 
-             // Manipulate
 
-             data.roles = [];
 
-             if ((this.model.get('id') === App.Cache.User.get('id') && this.model.isAdmin()) || (typeof data.is_admin !== 'undefined' && data.is_admin)) {
 
-                 data.roles.push('admin');
 
-                 delete data.is_admin;
 
-             }
 
-             data.is_disabled = typeof data.is_disabled !== 'undefined' ? !!data.is_disabled : false;
 
-             this.ui.buttons.prop('disabled', true).addClass('btn-disabled');
 
-             let method = App.Api.Users.create;
 
-             if (this.model.get('id')) {
 
-                 // edit
 
-                 method  = App.Api.Users.update;
 
-                 data.id = this.model.get('id');
 
-             }
 
-             method(data)
 
-                 .then(result => {
 
-                     if (result.id === App.Cache.User.get('id')) {
 
-                         App.Cache.User.set(result);
 
-                     }
 
-                     if (view.model.get('id') !== App.Cache.User.get('id')) {
 
-                         App.Controller.showUsers();
 
-                     }
 
-                     view.model.set(result);
 
-                     App.UI.closeModal(function () {
 
-                         if (method === App.Api.Users.create) {
 
-                             // Show permissions dialog immediately
 
-                             App.Controller.showUserPermissions(view.model);
 
-                         } else if (show_password) {
 
-                             App.Controller.showUserPasswordForm(view.model);
 
-                         }
 
-                     });
 
-                 })
 
-                 .catch(err => {
 
-                     this.ui.error.text(err.message).show();
 
-                     this.ui.buttons.prop('disabled', false).removeClass('btn-disabled');
 
-                 });
 
-         }
 
-     },
 
-     templateContext: function () {
 
-         let view = this;
 
-         return {
 
-             isSelf: function () {
 
-                 return view.model.get('id') === App.Cache.User.get('id');
 
-             },
 
-             isAdmin: function () {
 
-                 return App.Cache.User.isAdmin();
 
-             },
 
-             isAdminUser: function () {
 
-                 return view.model.isAdmin();
 
-             },
 
-             isDisabled: function () {
 
-                 return view.model.isDisabled();
 
-             }
 
-         };
 
-     },
 
-     initialize: function (options) {
 
-         if (typeof options.model === 'undefined' || !options.model) {
 
-             this.model = new UserModel.Model();
 
-         }
 
-     }
 
- });
 
 
  |