diff --git a/templates/repo.html b/templates/repo.html index 61ffa90a36..859dc63b95 100644 --- a/templates/repo.html +++ b/templates/repo.html @@ -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" %}"); - return false; - } +$('#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(), + }; - var submit_btn = $(this).children('input[type="submit"]'); - disable(submit_btn); - $.ajax({ - url: '{% url 'views.repo_new_file' %}', - 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 - }, - success: function(data) { - if (data['success']) { - location.reload(true); - } else { - apply_form_error('add-new-file-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-file-form', value[0]); - }); - enable(submit_btn); + 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; } - }); - 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; + 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_dir' %}', + url: post_url, 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 - }, + data: post_data, 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]); - }); + error: function(xhr, textStatus, errorThrown) { + var err; + if (xhr.responseText) { + err = $.parseJSON(xhr.responseText).error; + } else { + err = '{% trans "Failed. Please check the network." %}'; + } + 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 %} diff --git a/views.py b/views.py index 23d77bf1e9..7e3e42f588 100644 --- a/views.py +++ b/views.py @@ -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):