mirror of
https://github.com/haiwen/seahub.git
synced 2025-06-29 00:17:18 +00:00
80 lines
2.5 KiB
JavaScript
80 lines
2.5 KiB
JavaScript
|
define([
|
||
|
'jquery',
|
||
|
'underscore',
|
||
|
'backbone',
|
||
|
'common',
|
||
|
'app/collections/repos',
|
||
|
], function($, _, Backbone, Common, Repos) {
|
||
|
'use strict';
|
||
|
|
||
|
var AddRepoView = Backbone.View.extend({
|
||
|
el: '#repo-create-form',
|
||
|
|
||
|
events: {
|
||
|
"submit": "addRepo",
|
||
|
"click #encrypt-switch": "togglePasswdInput"
|
||
|
},
|
||
|
|
||
|
initialize: function() {
|
||
|
this.listenTo(Repos, 'invalid', this.displayValidationErrors);
|
||
|
|
||
|
this.render();
|
||
|
},
|
||
|
|
||
|
render: function() {
|
||
|
this.$el.modal({appendTo: '#main', autoResize: true});
|
||
|
},
|
||
|
|
||
|
// Generate the attributes for a new GroupRepo item.
|
||
|
newAttributes: function() {
|
||
|
return {
|
||
|
name: $('input[name=repo_name]', this.$el).val().trim(),
|
||
|
desc: $('textarea[name=repo_desc]', this.$el).val().trim(),
|
||
|
encrypted: $('#encrypt-switch', this.$el).attr('checked'),
|
||
|
passwd1: $('input[name=passwd]', this.$el).val(),
|
||
|
passwd2: $('input[name=passwd_again]', this.$el).val(),
|
||
|
passwd: $('input[name=passwd]', this.$el).val()
|
||
|
};
|
||
|
},
|
||
|
|
||
|
// TODO: move to common
|
||
|
displayValidationErrors: function(model, error, options) {
|
||
|
this.$('.error').html(error).show();
|
||
|
$("#simplemodal-container").css({'height':'auto'});
|
||
|
},
|
||
|
|
||
|
addRepo: function(e) {
|
||
|
e.preventDefault();
|
||
|
|
||
|
Repos.create(this.newAttributes(), {
|
||
|
wait: true,
|
||
|
validate: true,
|
||
|
prepend: true, // show newly created repo at first line
|
||
|
success: function() {
|
||
|
Common.feedback('Success', 'success', Common.SUCCESS_TIMEOUT);
|
||
|
},
|
||
|
error: function(xhr, textStatus, errorThrown) {
|
||
|
// TODO: handle error gracefully
|
||
|
Common.feedback('Error', 'error', Common.ERROR_TIMEOUT);
|
||
|
},
|
||
|
complete: function() {
|
||
|
Common.closeModal();
|
||
|
}
|
||
|
});
|
||
|
},
|
||
|
|
||
|
togglePasswdInput: function(e) {
|
||
|
var pwd_input = $('input[type="password"]', this.$el);
|
||
|
|
||
|
if ($(e.target).attr('checked')) {
|
||
|
pwd_input.attr('disabled', false).removeClass('input-disabled');
|
||
|
} else {
|
||
|
pwd_input.attr('disabled', true).addClass('input-disabled');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
});
|
||
|
|
||
|
return AddRepoView;
|
||
|
});
|