Merge pull request !2934 from rhodecode-enterprise-ce feature/svn-bootstrap
Changes from branch: Feature/svn bootstrap
This commit is contained in:
commit
543294ee86
26 changed files with 775 additions and 170 deletions
|
|
@ -24,6 +24,7 @@
|
|||
</%def>
|
||||
|
||||
<%def name="main()">
|
||||
|
||||
<div class="box">
|
||||
${h.secure_form(h.route_path('repo_group_create'), request=request)}
|
||||
<div class="form">
|
||||
|
|
@ -34,24 +35,40 @@
|
|||
<label for="group_name">${_('Group name')}:</label>
|
||||
</div>
|
||||
<div class="input">
|
||||
${h.text('group_name', class_="medium")}
|
||||
<div class="full-repo-name-container">
|
||||
% if c.personal_repo_group:
|
||||
<a class="btn" href="#" id="select_my_group" data-personal-group-id="${c.personal_repo_group.group_id}">
|
||||
<i class="icon-repo-group tooltip"
|
||||
title="${_('Select my personal group ({})').format(c.personal_repo_group.group_name)}"></i>
|
||||
</a>
|
||||
% endif
|
||||
${h.select('group_parent_id', request.GET.get('parent_group'), c.repo_groups,class_="medium")}
|
||||
<div class="repo-create-spacer"> / </div>
|
||||
<div class="repo-name-input-container">
|
||||
${h.text('group_name', class_="medium")}
|
||||
<div class="repo-check-container check-progress" id="group_check" style="display: none"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="repo-header-row">
|
||||
<span class="help-block-repo-create">
|
||||
${_('Parent Repository Group / Repository Group Name')}.
|
||||
</span>
|
||||
</div>
|
||||
|
||||
## COPY PERMS
|
||||
<div id="copy_perms">
|
||||
<div id="checkbox-span">
|
||||
${h.checkbox('group_copy_permissions', value="True", checked="checked")}
|
||||
</div>
|
||||
|
||||
<div class="help-block-inline">
|
||||
${_('Copy permissions from parent repository group.')}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<div class="label">
|
||||
<label for="group_parent_id">${_('Repository group')}:</label>
|
||||
</div>
|
||||
<div class="select">
|
||||
${h.select('group_parent_id', request.GET.get('parent_group'),c.repo_groups,class_="medium")}
|
||||
% if c.personal_repo_group:
|
||||
<a class="btn" href="#" id="select_my_group" data-personal-group-id="${c.personal_repo_group.group_id}">
|
||||
${_('Select my personal group ({})').format(c.personal_repo_group.group_name)}
|
||||
</a>
|
||||
% endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<div class="label">
|
||||
<label for="group_description">${_('Description')}:</label>
|
||||
|
|
@ -73,16 +90,6 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div id="copy_perms" class="field">
|
||||
<div class="label label-checkbox">
|
||||
<label for="group_copy_permissions">${_('Copy Parent Group Permissions')}:</label>
|
||||
</div>
|
||||
<div class="checkboxes">
|
||||
${h.checkbox('group_copy_permissions', value="True", checked="checked")}
|
||||
<span class="help-block">${_('Copy permissions from parent repository group.')}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="buttons">
|
||||
${h.submit('save',_('Create Repository Group'),class_="btn")}
|
||||
</div>
|
||||
|
|
@ -91,31 +98,90 @@
|
|||
${h.end_form()}
|
||||
</div>
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
var setCopyPermsOption = function(group_val){
|
||||
if(group_val !== "-1"){
|
||||
$(document).ready(function () {
|
||||
let setCopyPermsOption = function (group_val) {
|
||||
if (group_val !== "-1") {
|
||||
$('#copy_perms').show()
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
$('#copy_perms').hide();
|
||||
}
|
||||
};
|
||||
|
||||
$("#group_parent_id").select2({
|
||||
'containerCssClass': "drop-menu",
|
||||
'dropdownCssClass': "drop-menu-dropdown",
|
||||
'dropdownAutoWidth': true
|
||||
});
|
||||
|
||||
setCopyPermsOption($('#group_parent_id').val());
|
||||
$("#group_parent_id").on("change", function(e) {
|
||||
setCopyPermsOption(e.val)
|
||||
|
||||
$("#group_parent_id").on("change", function (e) {
|
||||
setCopyPermsOption(e.val);
|
||||
$('#group_name').trigger('input');
|
||||
});
|
||||
|
||||
$('#group_name').focus();
|
||||
|
||||
$('#select_my_group').on('click', function(e){
|
||||
$('#select_my_group').on('click', function (e) {
|
||||
e.preventDefault();
|
||||
$("#group_parent_id").val($(this).data('personalGroupId')).trigger("change");
|
||||
})
|
||||
});
|
||||
|
||||
let debounceTimer;
|
||||
|
||||
$('#group_name').on('input paste', function () {
|
||||
let groupName = $(this).val();
|
||||
|
||||
if (groupName.length > 0) {
|
||||
$('#group_check').text(_gettext('checking availability...'))
|
||||
.show()
|
||||
.removeClass('check-error check-success')
|
||||
.addClass('check-progress');
|
||||
} else {
|
||||
$('#group_check').hide();
|
||||
clearTimeout(debounceTimer);
|
||||
return;
|
||||
}
|
||||
|
||||
clearTimeout(debounceTimer); // Cancel the previous timer
|
||||
debounceTimer = setTimeout(function () {
|
||||
performRepoGroupLookup(groupName);
|
||||
}, 200);
|
||||
|
||||
function performRepoGroupLookup(groupName) {
|
||||
self = this;
|
||||
let repoGroup = $('#group_parent_id').val();
|
||||
|
||||
$.ajax({
|
||||
url: pyroutes.url('repo_group_name_check'),
|
||||
data: {"repo_group_name": groupName, "repo_group": repoGroup},
|
||||
dataType: 'json',
|
||||
type: 'POST',
|
||||
success: function (data) {
|
||||
let result = data.result;
|
||||
if (result.check_error === true) {
|
||||
$('#group_check')
|
||||
.text(result.errors)
|
||||
.removeClass('check-progress check-success')
|
||||
.addClass('check-error');
|
||||
} else {
|
||||
let text = "Repository group `{0}` is available".format(result.repo_group_name);
|
||||
$('#group_check')
|
||||
.text(text)
|
||||
.removeClass('check-progress check-error')
|
||||
.addClass('check-success');
|
||||
}
|
||||
|
||||
},
|
||||
error: function (jqXHR, textStatus, errorThrown) {
|
||||
var prefix = "Error while checking name.\n"
|
||||
var message = formatErrorMessage(jqXHR, textStatus, errorThrown, prefix);
|
||||
alert(message)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
});
|
||||
})
|
||||
</script>
|
||||
</%def>
|
||||
|
|
|
|||
|
|
@ -5,16 +5,49 @@ ${h.secure_form(h.route_path('repo_create'), request=request)}
|
|||
<div class="fields">
|
||||
<div class="field">
|
||||
<div class="label">
|
||||
<label for="repo_name">${_('Repository name')}:</label>
|
||||
<label for="repo_name">${_('Repository')}:</label>
|
||||
</div>
|
||||
|
||||
<div class="input">
|
||||
${h.text('repo_name', class_="medium")}
|
||||
<div class="info-block">
|
||||
<a id="remote_clone_toggle" href="#">${_('Import Existing Repository ?')}</a>
|
||||
<div class="full-repo-name-container">
|
||||
% if c.personal_repo_group:
|
||||
<a class="btn" href="#" id="select_my_group" data-personal-group-id="${c.personal_repo_group.group_id}">
|
||||
<i class="icon-repo-group tooltip"
|
||||
title="${_('Select my personal group ({})').format(c.personal_repo_group.group_name)}"></i>
|
||||
</a>
|
||||
% endif
|
||||
${h.select('repo_group', request.GET.get('parent_group'), c.repo_groups, class_="medium")}
|
||||
<div class="repo-create-spacer"> / </div>
|
||||
<div class="repo-name-input-container">
|
||||
${h.text('repo_name', class_="medium", id="repo_name_input")}
|
||||
<div class="repo-check-container check-progress" id="repo_check" style="display: none"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="repo-header-row">
|
||||
<span class="help-block-repo-create">
|
||||
${_('Repository Group / Repository Name')}.
|
||||
</span>
|
||||
<div class="import-repo">
|
||||
<a id="remote_clone_toggle" href="#">${_('Import an existing repository.')}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
## COPY PERMS
|
||||
<div id="copy_perms">
|
||||
<div id="checkbox-span">
|
||||
${h.checkbox('repo_copy_permissions', value="True", checked="checked")}
|
||||
</div>
|
||||
|
||||
<div class="help-block-inline">
|
||||
${_('Copy permissions from parent repository group.')}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
%if not c.rhodecode_user.is_admin:
|
||||
${h.hidden('user_created',True)}
|
||||
%endif
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div id="remote_clone" class="field" style="display: none;">
|
||||
|
|
@ -37,30 +70,15 @@ ${h.secure_form(h.route_path('repo_create'), request=request)}
|
|||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<div class="label">
|
||||
<label for="repo_group">${_('Repository group')}:</label>
|
||||
</div>
|
||||
<div class="select">
|
||||
${h.select('repo_group',request.GET.get('parent_group'),c.repo_groups,class_="medium")}
|
||||
% if c.personal_repo_group:
|
||||
<a class="btn" href="#" id="select_my_group" data-personal-group-id="${c.personal_repo_group.group_id}">
|
||||
${_('Select my personal group ({})').format(c.personal_repo_group.group_name)}
|
||||
</a>
|
||||
% endif
|
||||
<span class="help-block">${_('Optionally select a group to put this repository into.')}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<div class="label">
|
||||
<label for="repo_type">${_('Type')}:</label>
|
||||
</div>
|
||||
<div class="fields repo-type-radio">
|
||||
|
||||
|
||||
% for backend in c.backends:
|
||||
% if loop.index == 0:
|
||||
|
||||
% if backend == c.default_backend:
|
||||
<input id="repo_type_${backend}" name="repo_type" type="radio" value="${backend}" checked="checked"/>
|
||||
% else:
|
||||
<input id="repo_type_${backend}" name="repo_type" type="radio" value="${backend}" />
|
||||
|
|
@ -73,7 +91,6 @@ ${h.secure_form(h.route_path('repo_create'), request=request)}
|
|||
|
||||
% endfor
|
||||
|
||||
|
||||
<span class="help-block">${_('Set the type of repository to create.')}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -98,15 +115,7 @@ ${h.secure_form(h.route_path('repo_create'), request=request)}
|
|||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="copy_perms" class="field">
|
||||
<div class="label label-checkbox">
|
||||
<label for="repo_copy_permissions">${_('Copy Parent Group Permissions')}:</label>
|
||||
</div>
|
||||
<div class="checkboxes">
|
||||
${h.checkbox('repo_copy_permissions', value="True", checked="checked")}
|
||||
<span class="help-block">${_('Copy permissions from parent repository group.')}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<div class="label label-checkbox">
|
||||
<label for="repo_private">${_('Private Repository')}:</label>
|
||||
|
|
@ -116,31 +125,54 @@ ${h.secure_form(h.route_path('repo_create'), request=request)}
|
|||
<span class="help-block">${_('Private repositories are only visible to people explicitly added as collaborators.')}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field repo-bootstrap-items repo-bootstrap-readme">
|
||||
<div class="label label-checkbox">
|
||||
<label for="repo_bootstrap_readme">${_('Add Readme')}:</label>
|
||||
</div>
|
||||
<div class="checkboxes">
|
||||
${h.checkbox('repo_bootstrap_readme',value="True")}
|
||||
<span class="help-block">${_('Initialize repository with a README. Allows you to immediately clone this project’s repository.')}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field repo-bootstrap-items repo-bootstrap-svn" style="display: none">
|
||||
<div class="label label-checkbox">
|
||||
<label for="repo_bootstrap_svn_branch_struct">${_('Add SVN structure')}:</label>
|
||||
</div>
|
||||
<div class="checkboxes">
|
||||
${h.checkbox('repo_bootstrap_svn_branch_struct',value="True")}
|
||||
<span class="help-block">${_('Initialize repository with a branches/tags DIRS')}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="buttons">
|
||||
${h.submit('save',_('Create Repository'),class_="btn")}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
var setCopyPermsOption = function(group_val){
|
||||
if(group_val != "-1"){
|
||||
$(document).ready(function () {
|
||||
let setCopyPermsOption = function (group_val) {
|
||||
if (group_val !== "-1") {
|
||||
$('#copy_perms').show()
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
$('#copy_perms').hide();
|
||||
}
|
||||
};
|
||||
|
||||
$('#remote_clone_toggle').on('click', function(e){
|
||||
$('#remote_clone_toggle').on('click', function (e) {
|
||||
$('#remote_clone').show();
|
||||
e.preventDefault();
|
||||
$('#remote_clone_toggle').hide();
|
||||
$('.repo-bootstrap-items').remove();
|
||||
});
|
||||
|
||||
if($('#remote_clone input').hasClass('error')){
|
||||
if ($('#remote_clone input').hasClass('error')) {
|
||||
$('#remote_clone').show();
|
||||
}
|
||||
if($('#remote_clone input').val()){
|
||||
if ($('#remote_clone input').val()) {
|
||||
$('#remote_clone').show();
|
||||
}
|
||||
|
||||
|
|
@ -152,15 +184,102 @@ ${h.secure_form(h.route_path('repo_create'), request=request)}
|
|||
});
|
||||
|
||||
setCopyPermsOption($('#repo_group').val());
|
||||
$("#repo_group").on("change", function(e) {
|
||||
setCopyPermsOption(e.val)
|
||||
|
||||
$("#repo_group").on("change", function (e) {
|
||||
setCopyPermsOption(e.val);
|
||||
$('#repo_name_input').trigger('input');
|
||||
});
|
||||
|
||||
$('#repo_name').focus();
|
||||
$('#repo_name_input').focus();
|
||||
|
||||
$('#select_my_group').on('click', function(e){
|
||||
let debounceTimer;
|
||||
|
||||
$('#repo_name_input').on('input paste', function () {
|
||||
let repoName = $(this).val();
|
||||
|
||||
if (repoName.length > 0) {
|
||||
$('#repo_check').text(_gettext('checking availability...'))
|
||||
.show()
|
||||
.removeClass('check-error check-success')
|
||||
.addClass('check-progress');
|
||||
} else {
|
||||
$('#repo_check').hide();
|
||||
clearTimeout(debounceTimer);
|
||||
return;
|
||||
}
|
||||
|
||||
clearTimeout(debounceTimer); // Cancel the previous timer
|
||||
debounceTimer = setTimeout(function () {
|
||||
performRepoLookup(repoName);
|
||||
}, 200);
|
||||
|
||||
function performRepoLookup(repoName) {
|
||||
self = this;
|
||||
let repoGroup = $('#repo_group').val();
|
||||
let repoType = $('input[name="repo_type"]').val();
|
||||
$.ajax({
|
||||
url: pyroutes.url('repo_name_check'),
|
||||
data: {"repo_name": repoName, "repo_group": repoGroup, "repo_type": repoType},
|
||||
dataType: 'json',
|
||||
type: 'POST',
|
||||
success: function (data) {
|
||||
let result = data.result;
|
||||
if (result.check_error === true) {
|
||||
$('#repo_check')
|
||||
.text(result.errors)
|
||||
.removeClass('check-progress check-success')
|
||||
.addClass('check-error');
|
||||
} else {
|
||||
let text = _gettext("Repository `{0}` is available").format(result.repo_name);
|
||||
$('#repo_check')
|
||||
.text(text)
|
||||
.removeClass('check-progress check-error')
|
||||
.addClass('check-success');
|
||||
}
|
||||
|
||||
},
|
||||
error: function (jqXHR, textStatus, errorThrown) {
|
||||
var prefix = "Error while checking name.\n"
|
||||
var message = formatErrorMessage(jqXHR, textStatus, errorThrown, prefix);
|
||||
alert(message)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
$('#select_my_group').on('click', function (e) {
|
||||
e.preventDefault();
|
||||
$("#repo_group").val($(this).data('personalGroupId')).trigger("change");
|
||||
});
|
||||
|
||||
$('#clone_uri').on('input paste', function (e) {
|
||||
let url = $(this).val().trim();
|
||||
if (url) {
|
||||
let parts = url.split('/').filter(Boolean);
|
||||
let lastPart = parts[parts.length - 1];
|
||||
let repoName = lastPart.replace(/\.git$/, "");
|
||||
|
||||
$('#repo_name_input').val(repoName).trigger('input');
|
||||
} else {
|
||||
$('#repo_name_input').val("").trigger('input');
|
||||
}
|
||||
});
|
||||
|
||||
let defaultVcsBackend = "${c.default_backend}";
|
||||
|
||||
if (defaultVcsBackend === "svn") {
|
||||
$('.repo-bootstrap-svn').show();
|
||||
}
|
||||
$('input[name="repo_type"]').on('change', function (e) {
|
||||
let selectedVcs = $(this).val();
|
||||
|
||||
if (selectedVcs === "svn") {
|
||||
$('.repo-bootstrap-svn').show();
|
||||
} else {
|
||||
$('.repo-bootstrap-svn').hide();
|
||||
}
|
||||
})
|
||||
|
||||
})
|
||||
|
|
|
|||
|
|
@ -548,10 +548,10 @@
|
|||
% endif
|
||||
% endif
|
||||
|
||||
<li class="submenu-title">RhodeCode</li>
|
||||
|
||||
## personal group
|
||||
% if c.rhodecode_user.personal_repo_group:
|
||||
<li class="submenu-title">Personal Group</li>
|
||||
|
||||
<li>
|
||||
<a href="${h.route_path('repo_new',_query=dict(parent_group=c.rhodecode_user.personal_repo_group.group_id))}" >${_('New Repository')} </a>
|
||||
</li>
|
||||
|
|
@ -559,25 +559,21 @@
|
|||
<li>
|
||||
<a href="${h.route_path('repo_group_new',_query=dict(parent_group=c.rhodecode_user.personal_repo_group.group_id))}">${_('New Repository Group')} </a>
|
||||
</li>
|
||||
% endif
|
||||
|
||||
## Global actions
|
||||
<li class="submenu-title">RhodeCode</li>
|
||||
% if can_create_repos:
|
||||
% else:
|
||||
% if can_create_repos:
|
||||
<li>
|
||||
<a href="${h.route_path('repo_new')}" >${_('New Repository')}</a>
|
||||
<a href="${h.route_path('repo_new')}">${_('New Repository')}</a>
|
||||
</li>
|
||||
% endif
|
||||
|
||||
% if can_create_repo_groups:
|
||||
% endif
|
||||
% if can_create_repo_groups:
|
||||
<li>
|
||||
<a href="${h.route_path('repo_group_new')}" >${_('New Repository Group')}</a>
|
||||
<a href="${h.route_path('repo_group_new')}">${_('New Repository Group')}</a>
|
||||
</li>
|
||||
% endif
|
||||
% endif
|
||||
|
||||
<li>
|
||||
<a href="${h.route_path('gists_new')}">${_('New Gist')}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="${h.route_path('gists_new')}">${_('New Gist')}</a>
|
||||
</li>
|
||||
|
||||
</ol>
|
||||
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@
|
|||
ico_data = []
|
||||
for line in source.splitlines():
|
||||
line = line.split(':before')
|
||||
line = map(string.strip, line)
|
||||
line = [x.strip() for x in line]
|
||||
if len(line) in [2, 3]:
|
||||
if len(line) == 2:
|
||||
ico_cls, ico_code = line
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue