}
function failModal(msg) {
- return function() {
+ return function(xhr) {
var $errorModal = $('#error-modal');
$errorModal.find('#error-modal-label').text('Błąd serwera');
$errorModal.find('.modal-body').html($('<h4>', {text: msg}));
+ var error = (xhr.responseJSON || {}).error || undefined;
+
+ if (typeof error === 'string')
+ $errorModal.find('.modal-body').append($('<pre>', {text: error}));
+
filex.idle();
$errorModal.modal();
};
}
+ function conflictingName(name, modal) {
+ if (filex.files.some(function(item) { return item.get('name') == name })) {
+ modal.find('.alert').remove();
+
+ $('<div>', {
+ 'class': 'alert alert-danger',
+ html: '<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> Plik o podanej już nazwie istnieje!'
+ }).prependTo(modal.find('.modal-body'));
+
+ return true;
+ }
+
+ return false;
+ }
+
filex.files.on('change:checked reset', function() {
var selected = filex.selectedFiles().length;
});
$('#btn-upload').on('click', function() {
- var url = '{% url 'gridftp_upload' %}?' + $.param({host: filex.host, path: filex.path.full() + '/'});
+ var url = '{% url 'gridftp_upload' %}?' + $.param({host: filex.host, path: filex.path.full()});
var win = window.open(url, url, 'height=500,width=800');
win.focus();
$('#btn-delete').on('click', function() {
var selected = _.groupBy(filex.selectedFiles(), function(item) { return item.get('type') }),
- dirs = _.map(selected.directory || [], function (item) { return item.get('name') }),
- files = _.map(selected.file || [], function (item) { return item.get('name') }),
+ path = filex.path.full() + '/',
+ dirs = _.map(selected.directory || [], function (item) { return path + item.get('name') }),
+ files = _.map(selected.file || [], function (item) { return path + item.get('name') }),
data = {
host: filex.host,
- path: filex.path.full() + '/',
dirs: dirs,
files: files
},
$errorModal.find('#error-modal-label').text('Błąd');
for (var i in keys) {
- $('<dt>', {text: keys[i]}).appendTo($errorList);
- $('<dd>', {text: response.fail[keys[i]]}).appendTo($errorList);
+ if(keys.hasOwnProperty(i)) {
+ $('<dt>', {text: keys[i].replace(path, '')}).appendTo($errorList);
+ $('<dd>', {text: response.fail[keys[i]]}).appendTo($errorList);
+ }
}
$errorModal.modal();
var $this = $(this);
e.preventDefault();
+
+ if (conflictingName($this.find('#id_name').val(), $this))
+ return;
+
filex.busy();
$this.modal('hide');
});
$('#rename-form').on('show.bs.modal', function() {
- var $this = $(this);
+ $(this).find('#id_dst').val(filex.selectedFiles()[0].get('name'));
+ }).on('submit', function(e) {
+ e.preventDefault();
- var file = filex.selectedFiles()[0];
+ var $this = $(this),
+ path = filex.path.full() + '/',
+ newName = $this.find('#id_dst').val(),
+ data = {
+ host: filex.host,
+ src: path + filex.selectedFiles()[0].get('name'),
+ dst: path + newName
+ };
- $this.find('#id_host').val(filex.host);
- $this.find('#id_path').val(filex.path.full());
- $this.find('#id_src').val(file.get('name'));
- $this.find('#id_dst').val(file.get('name'));
- }).on('submit', function(e) {
- var $this = $(this);
+ if (conflictingName(newName, $this))
+ return;
- e.preventDefault();
filex.busy();
$this.modal('hide');
- $.post($this.attr('action'), $this.serialize(), function() {
+ $.post($this.attr('action'), data, function() {
status('Nazwę zmieniono pomyślnie');
filex.reloadFiles();
}, 'json').fail(failModal('Nie udało się zmienić nazwy'));
e.preventDefault();
var $this = $(this),
- name = $this.find('#id_name').val(),
+ name = $this.find('#id_archive').val(),
type = $this.find('#id_type').val(),
+ path = filex.path.full(),
archive = name + (name.endsWith(type) ? '' : type),
data = {
host: filex.host,
- path: filex.path.full(),
+ path: path,
files: _.map(filex.selectedFiles(), function (item) { return item.get('name') }),
- archive: archive
+ archive: path + '/' + archive
};
- // check if maybe file with given name exists
- if (filex.files.some(function(item) { return item.get('name') == archive })) {
- $this.find('.alert').remove();
-
- $('<div>', {
- 'class': 'alert alert-danger',
- html: '<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> Plik o podanej już nazwie istnieje!'
- }).prependTo($this.find('.modal-body'));
-
+ if (conflictingName(archive, $this))
return;
- }
filex.busy();
$this.modal('hide');
var data = {
host: filex.host,
- archive: filex.path.full() + '/' + filex.selectedFiles()[0].get('name'),
+ path: filex.path.full() + '/' + filex.selectedFiles()[0].get('name'),
dst: filex.path.full()
};