From 5af08542c102552f16e8705be5331f914979c9a6 Mon Sep 17 00:00:00 2001 From: Brett Smith Date: Mon, 30 Mar 2015 16:06:38 -0400 Subject: [PATCH] 4253: Add Workbench interface to create repositories. Commit includes contributions from Tom Clegg. --- .../app/assets/javascripts/add_repository.js | 38 +++++++++++++++++ .../users/_add_repository_modal.html.erb | 41 +++++++++++++++++++ .../app/views/users/_manage_account.html.erb | 1 + .../views/users/_manage_repositories.html.erb | 5 +++ .../integration/user_manage_account_test.rb | 10 +++++ 5 files changed, 95 insertions(+) create mode 100644 apps/workbench/app/assets/javascripts/add_repository.js create mode 100644 apps/workbench/app/views/users/_add_repository_modal.html.erb diff --git a/apps/workbench/app/assets/javascripts/add_repository.js b/apps/workbench/app/assets/javascripts/add_repository.js new file mode 100644 index 0000000000..9594f9c8fc --- /dev/null +++ b/apps/workbench/app/assets/javascripts/add_repository.js @@ -0,0 +1,38 @@ +$(document).on('shown.bs.modal', '#add-repository-modal', function(event) { + $('input[type=text]', event.target).val(''); + $('#add-repository-error', event.target).hide(); +}).on('submit', '#add-repository-form', function(event) { + var $form = $(event.target), + $submit = $(':submit', $form), + $error = $('#add-repository-error', $form), + repo_owner_uuid = $('input[name="add_repo_owner_uuid"]', $form).val(), + repo_prefix = $('input[name="add_repo_prefix"]', $form).val(), + repo_basename = $('input[name="add_repo_basename"]', $form).val(); + + $submit.prop('disabled', true); + $error.hide(); + $.ajax('/repositories', + {method: 'POST', + dataType: 'json', + data: {repository: {owner_uuid: repo_owner_uuid, + name: repo_prefix + repo_basename}}, + context: $form}). + done(function(data, status, jqxhr) { + location.reload(); + }). + fail(function(jqxhr, status, error) { + var errlist = jqxhr.responseJSON.errors; + var errmsg; + if (Array.isArray(errlist)) { + errmsg = errlist.join(); + } else { + errmsg = ("The server returned an error when making " + + "this repository (status " + jqxhr.status + + ": " + errlist + ")."); + } + $error.text(errmsg); + $error.show(); + $submit.prop('disabled', false); + }); + return false; +}); diff --git a/apps/workbench/app/views/users/_add_repository_modal.html.erb b/apps/workbench/app/views/users/_add_repository_modal.html.erb new file mode 100644 index 0000000000..db74ec5c9f --- /dev/null +++ b/apps/workbench/app/views/users/_add_repository_modal.html.erb @@ -0,0 +1,41 @@ +<% + if current_user.uuid.ends_with?("-000000000000000") + repo_prefix = "" + else + repo_prefix = current_user.username + "/" + end +-%> + diff --git a/apps/workbench/app/views/users/_manage_account.html.erb b/apps/workbench/app/views/users/_manage_account.html.erb index 2d36b30f33..4a362cd629 100644 --- a/apps/workbench/app/views/users/_manage_account.html.erb +++ b/apps/workbench/app/views/users/_manage_account.html.erb @@ -18,4 +18,5 @@ + <%= render partial: "add_repository_modal" %> diff --git a/apps/workbench/app/views/users/_manage_repositories.html.erb b/apps/workbench/app/views/users/_manage_repositories.html.erb index 62c8e8dfcb..bcf0d64319 100644 --- a/apps/workbench/app/views/users/_manage_repositories.html.erb +++ b/apps/workbench/app/views/users/_manage_repositories.html.erb @@ -1,5 +1,10 @@