1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-05 00:43:53 +00:00

[repo] fixed bug and improved code for setting, new file/dir, rename

This commit is contained in:
llj
2013-01-07 21:15:48 +08:00
parent 4e73754dfd
commit c1323409b9
2 changed files with 71 additions and 133 deletions

View File

@@ -398,16 +398,14 @@ $('#repo-setting-form').submit(function() {
success: function(data) {
if (data['success']) {
location.reload(true);
} else {
apply_form_error('repo-setting-form', data['error']);
enable(submit_btn);
}
},
error: function(data, textStatus, jqXHR) {
var errors = $.parseJSON(data.responseText);
$.each(errors, function(index, value) {
apply_form_error('repo-setting-form', value[0]);
});
error: function(jqXHR, textStatus, errorThrown) {
if (jqXHR.responseText) {
apply_form_error('repo-setting-form', $.parseJSON(jqXHR.responseText).error);
} else {
apply_form_error('repo-setting-form', '{% trans "Failed. Please check the network." %}');
}
enable(submit_btn);
}
});
@@ -764,76 +762,63 @@ function trimFilename(name, n) {
return str;
}
$('#add-new-file-form').submit(function() {
var new_file = $(this).find('input[name="new_file_name"]').val();
if (!$.trim(new_file)) {
apply_form_error('add-new-file-form', "{% trans "File name can't be empty" %}");
$('#add-new-file-form, #add-new-dir-form, #rename-form').submit(function() {
var form = $(this);
var form_id = form.attr('id');
var post_url = '';
var post_data = {
'repo_id': form.find('input[name="repo_id"]').val(),
'parent_dir': form.find('input[name="parent_dir"]').val(),
};
if (form_id == 'add-new-file-form') {
var new_file =$.trim(form.find('input[name="new_file_name"]').val());
if (!new_file) {
apply_form_error(form_id, "{% trans "It can't be blank." %}");
return false;
}
post_url = '{% url 'views.repo_new_file' %}';
post_data['new_file_name'] = new_file;
} else if (form_id == 'add-new-dir-form') {
var new_dir = $.trim(form.find('input[name="new_dir_name"]').val());
if (!new_dir) {
apply_form_error(form_id, "{% trans "It can't be blank." %}");
return false;
}
post_url = '{% url 'views.repo_new_dir' %}';
post_data['new_dir_name'] = new_dir;
} else {
var new_name = $.trim(form.find('input[name="newname"]').val());
if (!new_name) {
apply_form_error(form_id, "{% trans "It can't be blank." %}");
return false;
}
post_url = '{% url 'views.repo_rename_file' %}';
post_data['oldname'] = form.find('input[name="oldname"]').val();
post_data['newname'] = new_name
}
var submit_btn = $(this).children('input[type="submit"]');
var submit_btn = form.children('input[type="submit"]');
disable(submit_btn);
$.ajax({
url: '{% url 'views.repo_new_file' %}',
url: post_url,
type: 'POST',
dataType: 'json',
beforeSend: prepareCSRFToken,
data: {
'repo_id': $('#add-new-file-form input[name="repo_id"]').val(),
'parent_dir': $('#add-new-file-form input[name="parent_dir"]').val(),
'new_file_name': new_file
},
data: post_data,
success: function(data) {
if (data['success']) {
location.reload(true);
}
},
error: function(xhr, textStatus, errorThrown) {
var err;
if (xhr.responseText) {
err = $.parseJSON(xhr.responseText).error;
} else {
apply_form_error('add-new-file-form', data['error']);
enable(submit_btn);
err = '{% trans "Failed. Please check the network." %}';
}
},
error: function(data, textStatus, jqXHR) {
var errors = $.parseJSON(data.responseText);
$.each(errors, function(index, value) {
apply_form_error('add-new-file-form', value[0]);
});
enable(submit_btn);
}
});
return false;
});
$('#add-new-dir-form').submit(function() {
var new_dir = $(this).find('input[name="new_dir_name"]').val();
if (!$.trim(new_dir)) {
apply_form_error('add-new-dir-form', "{% trans "Directory name can not be empty" %}");
return false;
}
var submit_btn = $(this).children('input[type="submit"]');
disable(submit_btn);
$.ajax({
url: '{% url 'views.repo_new_dir' %}',
type: 'POST',
dataType: 'json',
beforeSend: prepareCSRFToken,
data: {
'repo_id': $('#add-new-dir-form input[name="repo_id"]').val(),
'parent_dir': $('#add-new-dir-form input[name="parent_dir"]').val(),
'new_dir_name': new_dir
},
success: function(data) {
if (data['success']) {
location.reload(true);
} else {
apply_form_error('add-new-dir-form', data['error']);
enable(submit_btn);
}
},
error: function(data, textStatus, jqXHR) {
var errors = $.parseJSON(data.responseText);
$.each(errors, function(index, value) {
apply_form_error('add-new-dir-form', value[0]);
});
apply_form_error(form_id, err);
enable(submit_btn);
}
});
@@ -912,47 +897,6 @@ $('#mv-dir-list h5').click(function() {
next.addClass('hide');
}
});
$('#rename-form').submit(function() {
var new_name = $(this).find('input[name="newname"]').val();
if (!$.trim(new_name)) {
apply_form_error('rename-form', "{% trans "File name can't be empty" %}");
return false;
}
var submit_btn = $(this).children('input[type="submit"]');
disable(submit_btn);
$.ajax({
url: '{% url 'views.repo_rename_file' %}',
type: 'POST',
dataType: 'json',
cache: false,
beforeSend: prepareCSRFToken,
data: {
'repo_id': $('#rename-form input[name="repo_id"]').val(),
'parent_dir': $('#rename-form input[name="parent_dir"]').val(),
'oldname': $('#rename-form input[name="oldname"]').val(),
'newname': new_name
},
success: function(data) {
if (data['success']) {
location.reload(true);
} else {
apply_form_error('rename-form', data['error']);
enable(submit_btn);
}
},
error: function(data, textStatus, jqXHR) {
var errors = $.parseJSON(data.responseText);
$.each(errors, function(index, value) {
apply_form_error('rename-form', value[0]);
});
enable(submit_btn);
}
});
return false;
});
{% if path == '/' %}
{% include "snippets/list_commit_detail.html" %}
{% endif %}

View File

@@ -535,7 +535,6 @@ def repo_recycle_view(request, repo_id):
@ctx_switch_required
def repo_save_settings(request):
if request.method == 'POST':
ret = {}
content_type = 'application/json; charset=utf-8'
form = RepoSettingForm(request.POST)
@@ -545,16 +544,14 @@ def repo_save_settings(request):
res = set_repo_history_limit(repo_id, days)
if res == 0:
ret['success'] = True
messages.success(request, _(u'Settings saved.'))
return HttpResponse(json.dumps({'success': True}), content_type=content_type)
else:
ret['success'] = False
ret['error'] = _(u'Failed to save settings on server')
return HttpResponse(json.dumps({'error': _(u'Failed to save settings on server')}),
status=400, content_type=content_type)
else:
ret['success'] = False
ret['error'] = str(form.errors.values()[0])
return HttpResponse(json.dumps(ret),
content_type=content_type)
return HttpResponse(json.dumps({'error': str(form.errors.values()[0])}),
status=400, content_type=content_type)
def upload_error_msg (code):
err_msg = _(u'Internal Server Error')
@@ -2172,11 +2169,11 @@ def repo_new_dir(request):
user = request.user.username
else:
result['error'] = str(form.errors.values()[0])
return HttpResponse(json.dumps(result), content_type=content_type)
return HttpResponse(json.dumps(result), status=400, content_type=content_type)
if get_user_permission(request, repo_id) != 'rw':
result['error'] = 'Permission denied'
return HttpResponse(json.dumps(result), content_type=content_type)
result['error'] = _('Permission denied')
return HttpResponse(json.dumps(result), status=400, content_type=content_type)
new_dir_name = check_filename_with_rename(repo_id, parent_dir, new_dir_name)
@@ -2184,12 +2181,11 @@ def repo_new_dir(request):
seafserv_threaded_rpc.post_dir(repo_id, parent_dir, new_dir_name, user)
except Exception, e:
result['error'] = str(e)
return HttpResponse(json.dumps(result), content_type=content_type)
return HttpResponse(json.dumps(result), status=400, content_type=content_type)
url = reverse('repo', args=[repo_id]) + \
('?p=%s' % urllib2.quote(parent_dir.encode('utf-8')))
return HttpResponse(json.dumps({'success': True}),
content_type=content_type)
return HttpResponse(json.dumps({'success': True}), content_type=content_type)
@login_required
def repo_new_file(request):
@@ -2204,11 +2200,11 @@ def repo_new_file(request):
user = request.user.username
else:
result['error'] = str(form.errors.values()[0])
return HttpResponse(json.dumps(result), content_type=content_type)
return HttpResponse(json.dumps(result), status=400, content_type=content_type)
if get_user_permission(request, repo_id) != 'rw':
result['error'] = 'Permission denied'
return HttpResponse(json.dumps(result), content_type=content_type)
result['error'] = _('Permission denied')
return HttpResponse(json.dumps(result), status=400, content_type=content_type)
new_file_name = check_filename_with_rename(repo_id, parent_dir,
new_file_name)
@@ -2218,12 +2214,11 @@ def repo_new_file(request):
new_file_name, user)
except Exception, e:
result['error'] = str(e)
return HttpResponse(json.dumps(result), content_type=content_type)
return HttpResponse(json.dumps(result), status=400, content_type=content_type)
url = reverse('repo', args=[repo_id]) + \
('?p=%s' % urllib2.quote(parent_dir.encode('utf-8')))
return HttpResponse(json.dumps({'success': True}),
content_type=content_type)
return HttpResponse(json.dumps({'success': True}), content_type=content_type)
@login_required
def repo_rename_file(request):
@@ -2239,11 +2234,11 @@ def repo_rename_file(request):
user = request.user.username
else:
result['error'] = str(form.errors.values()[0])
return HttpResponse(json.dumps(result), content_type=content_type)
return HttpResponse(json.dumps(result), status=400, content_type=content_type)
if get_user_permission(request, repo_id) != 'rw':
result['error'] = 'Permission denied'
return HttpResponse(json.dumps(result), content_type=content_type)
result['error'] = _('Permission denied')
return HttpResponse(json.dumps(result), status=400, content_type=content_type)
if newname == oldname:
return HttpResponse(json.dumps({'success': True}),
@@ -2254,16 +2249,15 @@ def repo_rename_file(request):
try:
seafserv_threaded_rpc.rename_file (repo_id, parent_dir,
oldname, newname, user)
messages.success(request, _(u'Successfully rename %(old)s to %(new)s') % \
messages.success(request, _(u'Successfully renamed %(old)s to %(new)s') % \
{"old":oldname, "new":newname})
except Exception, e:
result['error'] = str(e)
return HttpResponse(json.dumps(result), content_type=content_type)
return HttpResponse(json.dumps(result), status=400, content_type=content_type)
url = reverse('repo', args=[repo_id]) + \
('?p=%s' % urllib2.quote(parent_dir.encode('utf-8')))
return HttpResponse(json.dumps({'success': True}),
content_type=content_type)
return HttpResponse(json.dumps({'success': True}), content_type=content_type)
@login_required
def validate_filename(request):