1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-01 07:01:12 +00:00

Add library transfer

This commit is contained in:
Daniel Pan
2016-01-14 11:56:01 +08:00
committed by llj
parent b0ccc76bee
commit 54a29bc743
3 changed files with 71 additions and 0 deletions

View File

@@ -1114,3 +1114,12 @@
<script type="text/template" id="repo-share-link-admin-dialog-tmpl">
<h3><%= title %></h3>
</script>
<script type="text/template" id="repo-transfer-form-tmpl">
<form method="post" action="">
<h3>{% trans "Transfer Library To" %}</h3>
<input type="hidden" name="email" /><br />
<p class="error hide"></p>
<input type="submit" value="{% trans "Submit" %}" />
</form>
</script>

View File

@@ -17,6 +17,7 @@ define([
template: _.template($('#repo-tmpl').html()),
repoDelConfirmTemplate: _.template($('#repo-del-confirm-template').html()),
renameTemplate: _.template($("#repo-rename-form-template").html()),
transferTemplate: _.template($('#repo-transfer-form-tmpl').html()),
events: {
'mouseenter': 'highlight',
@@ -25,6 +26,7 @@ define([
'click .repo-share-btn': 'share',
'click .js-toggle-popup': 'togglePopup',
'click .js-repo-rename': 'rename',
'click .js-repo-transfer': 'transfer',
'click .js-popup-history-settings': 'popupHistorySettings',
'click .js-popup-permission-settings': 'popupPermissionSettings',
'click .js-popup-share-link-admin': 'popupShareLinkAdmin'
@@ -218,6 +220,65 @@ define([
return false;
},
transfer: function() {
var _this = this;
this.togglePopup(); // Close the popup
var $form = $(this.transferTemplate());
$form.modal({focus:false});
$('#simplemodal-container').css({'width':'auto', 'height':'auto'});
$('[name="email"]', $form).select2($.extend(
Common.contactInputOptionsForSelect2(), {
width: '300px',
maximumSelectionSize: 1,
placeholder: gettext("Search user or enter email and press Enter"), // to override 'placeholder' returned by `Common.conta...`
formatSelectionTooBig: gettext("You cannot select any more choices")
}));
$form.submit(function() {
var email = $.trim($('[name="email"]', $(this)).val());
if (!email) {
return false;
}
if (email == _this.model.get('owner')) {
return false;
}
var $submitBtn = $('[type="submit"]', $(this));
Common.disableButton($submitBtn);
$.ajax({
url: Common.getUrl({
'name': 'transfer_repo',
'repo_id': _this.model.get('id')
}),
type: 'put',
dataType: 'json',
beforeSend: Common.prepareCSRFToken,
data: {
'owner': email
},
success: function() {
// after the transfer, the former owner becomes a common admin of the group.
$.modal.close();
_this.remove();
Common.feedback(gettext("Transfer library succeeded."), 'success');
},
error: function(xhr) {
var error_msg;
if (xhr.responseText) {
error_msg = $.parseJSON(xhr.responseText).error_msg;
} else {
error_msg = gettext("Failed. Please check the network.");
}
$('.error', $form).html(error_msg).show();
Common.enableButton($submitBtn);
}
});
return false;
});
},
popupHistorySettings: function() {
var options = {
'repo_name': this.model.get('name'),

View File

@@ -99,6 +99,7 @@ define([
case 'shared_repos': return siteRoot + 'api2/shared-repos/' + options.repo_id + '/';
case 'ajax_unset_inner_pub_repo': return siteRoot + 'ajax/unset-inner-pub-repo/' + options.repo_id + '/';
case 'rename_repo': return siteRoot + 'api2/repos/' + options.repo_id + '/?op=rename';
case 'transfer_repo': return siteRoot + 'api2/repos/' + options.repo_id + '/owner/';
// Permission
case 'set_user_folder_perm': return siteRoot + 'ajax/repo/' + options.repo_id + '/set-user-folder-perm/';