{% extends "master.html" %}
{% block title %}{{
repo.namespace + '/' if repo.namespace }}{{ repo.name }}{% endblock %}
{% set tag = "home" %}
{% if g.repo_watch_levels == ['issues', 'commits'] %}
{% set watch_button_title = 'You are watching issues, PRs, and commits on this project' %}
{% set watch_button_class = 'btn-primary' %}
{% elif g.repo_watch_levels == ['issues'] %}
{% set watch_button_title = 'You are watching issues on this project' %}
{% set watch_button_class = 'btn-info' %}
{% elif g.repo_watch_levels == ['commits'] %}
{% set watch_button_title = 'You are watching commits on this project' %}
{% set watch_button_class = 'btn-info' %}
{% else %}
{% set watch_button_title = 'You are not watching this project' %}
{% set watch_button_class = 'btn-secondary' %}
{% endif %}
{% block content %}
<div class="repo-header p-t-1">
<div class="container">
<header>
<h2 class="repo-name m-b-0">
{% if repo.private %}
<span class="oi red-icon" data-glyph="lock-locked"
title="Private project"></span>
{% endif %}
{% if repo.is_fork -%}
<a href="{{ url_for(
'ui_ns.view_user', username=repo.user.user)
}}"><span class="oi" data-glyph="fork">
</span>{{ repo.user.user }}/</a>
{%- endif -%}
{%- if repo.namespace -%}
<a href="{{ url_for(
'ui_ns.view_projects', namespace=repo.namespace, pattern='*')
}}">{{ repo.namespace }}</a> /
{%- endif %} <a href="{{ url_for('ui_ns.view_repo',
repo=repo.name,
username=username,
namespace=repo.namespace)
}}">{{ repo.name }}</a>
{% if g.authenticated %}
<div class="pull-xs-right">
{% if repo.settings.get('issue_tracker', True)
and config.get('ENABLE_TICKETS', True)%}
<a href="{{ url_for('ui_ns.new_issue',
repo=repo.name,
username=username,
namespace=repo.namespace) }}"
class="btn btn-success btn-sm">New Issue</a>
{% endif %}
<div class="btn-group">
{% if not g.repo_starred %}
<form method="POST" name="star_project" id="star_project"
action="{{ url_for(
'ui_ns.star_project',
repo=repo.name,
username=username,
namespace=repo.namespace,
star=1)}}">
{{ g.forkbuttonform.csrf_token }}
</form>
<button class="btn btn-sm btn-secondary"
onclick="$('#star_project').submit();">
<span class="oi" data-glyph="star"></span>Star</button>
<a href="{{url_for(
'ui_ns.view_stargazers',
repo=repo.name,
username=repo.user.user if repo.is_fork else None,
namespace=repo.namespace,
)}}" class="btn btn-sm btn-primary">{{ repo.stargazers|length }}</a>
{% else %}
<form method="POST" name="unstar_project" id="unstar_project"
action="{{ url_for(
'ui_ns.star_project',
repo=repo.name,
username=username,
namespace=repo.namespace,
star=0)}}">
{{ g.forkbuttonform.csrf_token }}
</form>
<button class="btn btn-sm btn-secondary"
onclick="$('#unstar_project').submit();">
<span class="oi" data-glyph="star"></span>Unstar</button>
<a href="{{url_for(
'ui_ns.view_stargazers',
repo=repo.name,
username=repo.user.user if repo.is_fork else None,
namespace=repo.namespace,
)}}" class="btn btn-sm btn-primary">{{repo.stargazers|length}}</a>
{% endif %}
</div>
<div class="btn-group">
{% if not repo.is_fork %}
{% if g.repo_forked %}
<a href="{{ url_for(
'ui_ns.view_repo',
repo=repo.name,
username=g.fas_user.username,
namespace=repo.namespace) }}" class="btn btn-sm btn-secondary">
<span class="oi" data-glyph="fork"></span> View Fork
</a>
{% else %}
<form method="POST" name="fork_project" id="fork_project"
action="{{ url_for(
'ui_ns.fork_project',
repo=repo.name,
username=username,
namespace=repo.namespace) }}">
{{ g.forkbuttonform.csrf_token }}
</form>
<button class="btn btn-sm btn-secondary"
onclick="$('#fork_project').submit();">
<span class="oi" data-glyph="fork"></span>Fork</button>
{% endif %}
{% endif %}
<button title="{{ watch_button_title }}" type="button"
class="btn btn-sm dropdown-toggle {{ watch_button_class }}"
data-toggle="dropdown" id="watch-button">
<span class="oi" data-glyph="eye"></span>
</button>
<div class="dropdown-menu dropdown-menu-right watch-menu">
<form method="POST" id="watch_project" name="watch_project"
action="{{ url_for('ui_ns.watch_repo',
repo=repo.name,
user=repo.user.user if repo.is_fork else None,
namespace=repo.namespace,
watch=0) }}">
<a class="dropdown-item" id="watch_issues_button">
Watch Issues and PRs
</a>
<a class="dropdown-item" id="watch_commits_button">
Watch Commits
</a>
<a class="dropdown-item" id="watch_issues_commits_button">
Watch Issues, PRs, and Commits
</a>
<a class="dropdown-item" id="unwatch_button">
Unwatch
</a>
<a class="dropdown-item" id="reset_button">
Reset Watch Status
</a>
{{ g.forkbuttonform.csrf_token }}
</form>
</div>
{% endif %}
</h2>
{% if repo.is_fork and repo.parent %}
<div class="m-t-0">
Forked from
<a href="{{ url_for(
'ui_ns.view_repo',
repo=repo.parent.name,
username=repo.parent.user.user if repo.parent.is_fork else None,
namespace=repo.parent.namespace)}}">
{{ repo.parent.fullname }}
</a>
</div>
{% elif repo.is_fork and not repo.parent %}
<div class="m-t-0">
Fork from a deleted repository
</div>
{% endif %}
<div class="projectinfo m-t-1 m-b-1">
{% if repo.description %}{{ repo.description | safe }}{% else %}-{% endif -%}
{%- if repo.url %} | <a class="inline" href="{{ repo.url }}">{{ repo.url }}</a>{% endif %}
</div>
</header>
<ul class="nav nav-tabs nav-small">
<li class="nav-item">
<a {%
if select == 'overview' %}class="nav-link active" {%
else %}class="nav-link" {%
endif %}href="{{ url_for(
'ui_ns.view_repo',
repo=repo.name,
username=username,
namespace=repo.namespace) }}">
<span class="oi hidden-md-up" data-glyph="home"></span>
<span class="hidden-sm-down">Overview</span>
</a>
</li>
{% if config['DOC_APP_URL'] and repo and repo.settings.get('project_documentation', True) %}
<li class="nav-item" >
<a {%
if select == 'docs' %}class="active nav-link" {%
else %}class="nav-link" {%
endif %}href="{{ url_for(
'ui_ns.view_docs',
repo=repo.name,
username=username,
namespace=repo.namespace) }}">
<span class="oi hidden-md-up" data-glyph="book"></span>
<span class="hidden-sm-down">Docs</span>
</a>
</li>
{% endif %}
<li class="nav-item{%
if g.repo_obj and g.repo_obj.is_empty %} disabled{% endif %}">
<a {%
if select == 'commits' %}class="active nav-link" {%
else %}class="nav-link" {%
endif %}href="{{ url_for(
'ui_ns.view_commits',
repo=repo.name,
username=username,
namespace=repo.namespace,
branchname=branchname) }}">
<span class="oi hidden-md-up" data-glyph="spreadsheet">
</span><span class="hidden-sm-down">Commits</span>
</a>
</li>
<li class="nav-item{%
if g.repo_obj and g.repo_obj.is_empty %} disabled{% endif %}">
<a {%
if select == 'tree' %}class="active nav-link" {%
else %}class="nav-link"{%
endif %} href="{{ url_for(
'ui_ns.view_tree',
repo=repo.name,
username=username,
namespace=repo.namespace,
identifier=branchname) }}">
<span class="oi hidden-md-up" data-glyph="file"></span>
<span class="hidden-sm-down">Files</span>
</a>
</li>
<li class="nav-item">
<a {%
if select == 'tags' %}class="active nav-link" {%
else %}class="nav-link" {%
endif %}href="{{ url_for(
'ui_ns.view_tags',
repo=repo.name,
username=username,
namespace=repo.namespace) }}">
<span class="oi hidden-md-up" data-glyph="box"></span>
<span class="hidden-sm-down">Releases</span>
</a>
</li>
{% if config.get('ENABLE_TICKETS', True) and repo
and repo.settings.get('issue_tracker', True) %}
<li class="nav-item">
<a {%
if select == 'issues' %}class="active nav-link" {%
else %}class="nav-link" {%
endif %}href="{{ url_for(
'ui_ns.view_issues',
repo=repo.name,
username=username,
namespace=repo.namespace) }}">
<span class="oi hidden-md-up" data-glyph="warning"></span>
<span class="hidden-sm-down">Issues </span>
<span class="label label-default label-pill hidden-sm-down">
{{ repo.open_tickets if g.repo_committer else repo.open_tickets_public }}
</span>
</a>
</li>
{% endif %}
{% if repo and repo.settings.get('pull_requests', True) %}
<li class="nav-item">
<a {%
if select == 'requests' %}class="active nav-link" {%
else %}class="nav-link" {%
endif %}href="{{ url_for(
'ui_ns.request_pulls',
repo=repo.name,
username=username,
namespace=repo.namespace) }}">
<span class="oi hidden-md-up" data-glyph="task"></span>
<span class="hidden-sm-down">Pull Requests </span>
<span class="label label-default label-pill hidden-sm-down">
{{ repo.open_requests }}
</span>
</a>
</li>
{% endif %}
<li class="nav-item">
<a {%
if select == 'stats' %}class="active nav-link" {%
else %}class="nav-link" {%
endif %}href="{{ url_for(
'ui_ns.view_stats',
repo=repo.name,
username=username,
namespace=repo.namespace) }}">
<span class="oi hidden-md-up" data-glyph="task"></span>
<span class="hidden-sm-down">Stats </span>
</a>
</li>
{% if g.authenticated %}
{% if g.repo_admin %}
<li class="nav-item pull-xs-right">
<a title="Settings" {%
if select == 'settings' %}class="active nav-link" {%
else %}class="nav-link" {%
endif %}href="{{ url_for(
'ui_ns.view_settings',
repo=repo.name,
username=username,
namespace=repo.namespace) }}">
<span class="oi" data-glyph="cog"></span>
<span class="hidden-sm-down">Settings</span>
</a>
</li>
{% endif %}
{% endif %}
{% if endpoint == 'view_docs' %}
<li class="nav-item pull-xs-right">
<a class="nav-link" href="{{ config['DOC_APP_URL'] + url_for(
'ui_ns.view_repo',
repo=repo.namespace + '.' + repo.name if repo.namespace else repo.name,
username=username,
filename=filename)
}}" target="_blank" title="Open to a new tab" rel="noopener noreferrer">
<span class="oi" data-glyph="external-link"></span>
</a>
</li>
{% endif %}
</ul>
</div>
</div>
<div class="container p-t-3">
{% if repo.read_only %}
<div class="container p-t-2">
<div class="alert alert-danger alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
<span class="sr-only">Close</span>
</button>
<span class="oi red-icon" data-glyph="file"
title="Read Only"></span>
The permissions on this repository are being updated. This may take a while.
During this time, you or some of the project's contributors may not be able
to push to this repository.
</div>
</div>
{% endif %}
{% if authenticated and repo.settings.get('pull_request_access_only') %}
<div class="container p-t-2">
<div class="alert alert-info alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="info" aria-label="Close">
<span aria-hidden="true">×</span>
<span class="sr-only">Close</span>
</button>
<span class="oi blue-icon" data-glyph="file" title="PR Only"></span>
This project does not support direct push to its git repo, all changes
must be done via pull-requests from forks.
</div>
</div>
{% endif %}
{% block repo %}
{% endblock %}
</div>
{% endblock %}
{% block jscripts %}
{{ super() }}
<script type="text/javascript">
$(document).ready(function() {
{% if g.repo_watch_levels %}
var currentWatchStatusButton = $('#watch_{{ g.repo_watch_levels | join('_') }}_button');
{% else %}
var currentWatchStatusButton = $('#unwatch_button');
{% endif %}
currentWatchStatusButton.prepend('<span class="oi" data-glyph="circle-check" style="padding-right:0.5em"></span>');
$('.watch-menu a').not(currentWatchStatusButton).css('padding-left', '2.85em');
$(".watch-menu a").click(function(){
var selectedValue = $(this).attr('id');
var watchProjectForm = $("#watch_project");
var action = watchProjectForm.attr('action');
if (selectedValue === "watch_issues_button") {
action = action.replace('/settings/0', '/settings/1');
} else if (selectedValue === "watch_commits_button") {
action = action.replace('/settings/0', '/settings/2');
} else if (selectedValue === "watch_issues_commits_button") {
action = action.replace('/settings/0', '/settings/3');
} else if (selectedValue === "reset_button") {
action = action.replace('/settings/0', '/settings/-1');
}
watchProjectForm.attr('action', action);
watchProjectForm.submit();
});
});
</script>
{% endblock %}