1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-06-30 00:42:53 +00:00
seahub/static/scripts/app/views/add-repo.js

109 lines
3.3 KiB
JavaScript
Raw Normal View History

2015-01-31 05:17:47 +00:00
define([
'jquery',
'simplemodal',
2015-01-31 05:17:47 +00:00
'underscore',
'backbone',
2015-04-03 04:15:41 +00:00
'common'
], function($, simplemodal, _, Backbone, Common) {
2015-01-31 05:17:47 +00:00
'use strict';
var AddRepoView = Backbone.View.extend({
2015-03-01 02:44:00 +00:00
tagName: 'div',
2015-04-03 04:15:41 +00:00
template: _.template($('#create-repo-tmpl').html()),
2015-01-31 05:17:47 +00:00
2015-02-01 06:15:00 +00:00
initialize: function(repos) {
this.repos = repos;
2015-01-31 05:17:47 +00:00
this.render();
this.$el.modal();
$("#simplemodal-container").css({'height':'auto'});
this.listenTo(repos, 'invalid', this.displayValidationErrors);
2015-03-01 02:44:00 +00:00
},
2015-01-31 05:17:47 +00:00
render: function() {
this.$el.html(this.template(this.templateData()));
return this;
2015-01-31 05:17:47 +00:00
},
templateData: function() {
return {
2015-09-24 09:20:45 +00:00
showSharePerm: false,
2016-09-14 05:47:12 +00:00
enable_encrypted_library: app.pageOptions.enable_encrypted_library,
library_templates: app.pageOptions.library_templates
};
},
events: {
"submit": "addRepo",
"click #encrypt-switch": "togglePasswdInput"
},
2015-01-31 05:17:47 +00:00
// Generate the attributes for a new GroupRepo item.
newAttributes: function() {
var data = {
2015-10-08 09:54:59 +00:00
name: $.trim($('input[name=repo_name]', this.$el).val()),
2015-10-08 12:42:08 +00:00
encrypted: $('#encrypt-switch').prop('checked'),
library_template: $('[name="library_template"]', this.$el).val(),
storage_id: $('[name="storage"]', this.$el).val()
2015-01-31 05:17:47 +00:00
};
if (data.encrypted) {
$.extend(data, {
passwd1: $('input[name=passwd]', this.$el).val(),
passwd2: $('input[name=passwd_again]', this.$el).val(),
passwd: $('input[name=passwd]', this.$el).val()
});
}
return data;
2015-01-31 05:17:47 +00:00
},
// TODO: move to common
displayValidationErrors: function(model, error, options) {
this.$('.error').html(error).show();
2015-11-02 09:11:11 +00:00
Common.enableButton(this.$('[type="submit"]'));
2015-01-31 05:17:47 +00:00
},
2015-02-01 06:15:00 +00:00
2015-01-31 05:17:47 +00:00
addRepo: function(e) {
e.preventDefault();
2015-10-08 12:42:08 +00:00
Common.disableButton(this.$('[type="submit"]'));
var repos = this.repos;
repos.create(this.newAttributes(), {
2015-01-31 05:17:47 +00:00
wait: true,
validate: true,
prepend: true, // show newly created repo at first line
success: function() {
if (repos.length == 1) {
repos.reset(repos.models);
}
2015-01-31 05:17:47 +00:00
},
2018-08-18 03:05:08 +00:00
error: function(collection, response, options) {
var error_msg = Common.prepareAjaxErrorMsg(response);
Common.feedback(error_msg, 'error', Common.ERROR_TIMEOUT);
2015-01-31 05:17:47 +00:00
},
complete: function() {
Common.closeModal();
}
});
},
togglePasswdInput: function(e) {
2015-10-08 12:42:08 +00:00
var $checkbox = $('#encrypt-switch');
var $pwd_input = this.$('input[type="password"]');
2015-01-31 05:17:47 +00:00
2015-10-08 12:42:08 +00:00
if ($checkbox.prop('checked')) {
$pwd_input.attr('disabled', false).removeClass('input-disabled');
2015-01-31 05:17:47 +00:00
} else {
$pwd_input.attr('disabled', true).addClass('input-disabled');
2015-01-31 05:17:47 +00:00
}
}
});
return AddRepoView;
});