|
|
<%inherit file="/base/base.mako"/>
|
|
|
|
|
|
<%def name="main()">
|
|
|
<div class="box">
|
|
|
<!-- box / title -->
|
|
|
<div class="title">
|
|
|
<div class="block-left breadcrumbs">
|
|
|
<input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" placeholder="${_('quick filter...')}" value=""/>
|
|
|
${self.breadcrumbs()}
|
|
|
<span id="match_container" style="display:none">» <span id="match_count">0</span> ${_('matches')}</span>
|
|
|
</div>
|
|
|
%if c.rhodecode_user.username != h.DEFAULT_USER:
|
|
|
<div class="block-right">
|
|
|
<%
|
|
|
is_admin = h.HasPermissionAny('hg.admin')('can create repos index page')
|
|
|
create_repo = h.HasPermissionAny('hg.create.repository')('can create repository index page')
|
|
|
create_repo_group = h.HasPermissionAny('hg.repogroup.create.true')('can create repository groups index page')
|
|
|
create_user_group = h.HasPermissionAny('hg.usergroup.create.true')('can create user groups index page')
|
|
|
|
|
|
gr_name = c.repo_group.group_name if c.repo_group else None
|
|
|
# create repositories with write permission on group is set to true
|
|
|
create_on_write = h.HasPermissionAny('hg.create.write_on_repogroup.true')()
|
|
|
group_admin = h.HasRepoGroupPermissionAny('group.admin')(gr_name, 'group admin index page')
|
|
|
group_write = h.HasRepoGroupPermissionAny('group.write')(gr_name, 'can write into group index page')
|
|
|
%>
|
|
|
|
|
|
%if not c.repo_group:
|
|
|
## no repository group context here
|
|
|
%if is_admin or create_repo:
|
|
|
<a href="${h.url('new_repo')}" class="btn btn-small btn-success btn-primary">${_('Add Repository')}</a>
|
|
|
%endif
|
|
|
|
|
|
%if is_admin or create_repo_group:
|
|
|
<a href="${h.url('new_repo_group')}" class="btn btn-small btn-default">${_(u'Add Repository Group')}</a>
|
|
|
%endif
|
|
|
%else:
|
|
|
##we're inside other repository group other terms apply
|
|
|
%if is_admin or group_admin or (group_write and create_on_write):
|
|
|
<a href="${h.url('new_repo',parent_group=c.repo_group.group_id)}" class="btn btn-small btn-success btn-primary">${_('Add Repository')}</a>
|
|
|
%endif
|
|
|
%if is_admin or group_admin:
|
|
|
<a href="${h.url('new_repo_group', parent_group=c.repo_group.group_id)}" class="btn btn-small btn-default">${_(u'Add Repository Group')}</a>
|
|
|
%endif
|
|
|
%if is_admin or group_admin:
|
|
|
<a href="${h.url('edit_repo_group',group_name=c.repo_group.group_name)}" title="${_('You have admin right to this group, and can edit it')}" class="btn btn-small btn-primary">${_('Edit Repository Group')}</a>
|
|
|
%endif
|
|
|
%endif
|
|
|
</div>
|
|
|
%endif
|
|
|
</div>
|
|
|
<!-- end box / title -->
|
|
|
<div class="table">
|
|
|
<div id="groups_list_wrap">
|
|
|
<table id="group_list_table" class="display"></table>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="table">
|
|
|
<div id="repos_list_wrap">
|
|
|
<table id="repo_list_table" class="display"></table>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<script>
|
|
|
$(document).ready(function() {
|
|
|
|
|
|
var get_datatable_count = function() {
|
|
|
var api = $('#repo_list_table').dataTable().api();
|
|
|
var pageInfo = api.page.info();
|
|
|
var repos = pageInfo.recordsDisplay;
|
|
|
var reposTotal = pageInfo.recordsTotal;
|
|
|
|
|
|
api = $('#group_list_table').dataTable().api();
|
|
|
pageInfo = api.page.info();
|
|
|
var repoGroups = pageInfo.recordsDisplay;
|
|
|
var repoGroupsTotal = pageInfo.recordsTotal;
|
|
|
|
|
|
if (repoGroups !== repoGroupsTotal) {
|
|
|
$('#match_count').text(repos+repoGroups);
|
|
|
}
|
|
|
if (repos !== reposTotal) {
|
|
|
$('#match_container').show();
|
|
|
}
|
|
|
if ($('#q_filter').val() === '') {
|
|
|
$('#match_container').hide();
|
|
|
}
|
|
|
};
|
|
|
|
|
|
// repo group list
|
|
|
$('#group_list_table').DataTable({
|
|
|
data: ${c.repo_groups_data|n},
|
|
|
dom: 'rtp',
|
|
|
pageLength: ${c.visual.dashboard_items},
|
|
|
order: [[ 0, "asc" ]],
|
|
|
columns: [
|
|
|
{ data: {"_": "name",
|
|
|
"sort": "name_raw"}, title: "${_('Name')}", className: "td-componentname" },
|
|
|
{ data: 'menu', "bSortable": false, className: "quick_repo_menu" },
|
|
|
{ data: {"_": "desc",
|
|
|
"sort": "desc"}, title: "${_('Description')}", className: "td-description" },
|
|
|
{ data: {"_": "owner",
|
|
|
"sort": "owner"}, title: "${_('Owner')}", className: "td-user" }
|
|
|
],
|
|
|
language: {
|
|
|
paginate: DEFAULT_GRID_PAGINATION,
|
|
|
emptyTable: _gettext("No repository groups available yet.")
|
|
|
},
|
|
|
"drawCallback": function( settings, json ) {
|
|
|
timeagoActivate();
|
|
|
quick_repo_menu();
|
|
|
}
|
|
|
});
|
|
|
|
|
|
// repo list
|
|
|
$('#repo_list_table').DataTable({
|
|
|
data: ${c.repos_data|n},
|
|
|
dom: 'rtp',
|
|
|
order: [[ 0, "asc" ]],
|
|
|
pageLength: ${c.visual.dashboard_items},
|
|
|
columns: [
|
|
|
{ data: {"_": "name",
|
|
|
"sort": "name_raw"}, title: "${_('Name')}", className: "truncate-wrap td-componentname" },
|
|
|
{ data: 'menu', "bSortable": false, className: "quick_repo_menu" },
|
|
|
{ data: {"_": "desc",
|
|
|
"sort": "desc"}, title: "${_('Description')}", className: "td-description" },
|
|
|
{ data: {"_": "last_change",
|
|
|
"sort": "last_change_raw",
|
|
|
"type": Number}, title: "${_('Last Change')}", className: "td-time" },
|
|
|
{ data: {"_": "last_changeset",
|
|
|
"sort": "last_changeset_raw",
|
|
|
"type": Number}, title: "${_('Commit')}", className: "td-hash" },
|
|
|
{ data: {"_": "owner",
|
|
|
"sort": "owner"}, title: "${_('Owner')}", className: "td-user" },
|
|
|
],
|
|
|
language: {
|
|
|
paginate: DEFAULT_GRID_PAGINATION,
|
|
|
emptyTable: _gettext("No repositories available yet.")
|
|
|
},
|
|
|
"drawCallback": function( settings, json ) {
|
|
|
timeagoActivate();
|
|
|
quick_repo_menu();
|
|
|
}
|
|
|
});
|
|
|
|
|
|
// update the counter when doing search
|
|
|
$('#repo_list_table, #group_list_table').on( 'search.dt', function (e,settings) {
|
|
|
get_datatable_count();
|
|
|
});
|
|
|
|
|
|
// filter, filter both grids
|
|
|
$('#q_filter').on( 'keyup', function () {
|
|
|
var repo_api = $('#repo_list_table').dataTable().api();
|
|
|
repo_api
|
|
|
.columns( 0 )
|
|
|
.search( this.value )
|
|
|
.draw();
|
|
|
|
|
|
var repo_group_api = $('#group_list_table').dataTable().api();
|
|
|
repo_group_api
|
|
|
.columns( 0 )
|
|
|
.search( this.value )
|
|
|
.draw();
|
|
|
});
|
|
|
|
|
|
// refilter table if page load via back button
|
|
|
$("#q_filter").trigger('keyup');
|
|
|
|
|
|
});
|
|
|
</script>
|
|
|
</%def>
|
|
|
|