base.html
361 lines
| 14.5 KiB
| text/html
|
HtmlLexer
r547 | ## -*- coding: utf-8 -*- | |||
r1157 | <%inherit file="root.html"/> | |||
<!-- HEADER --> | ||||
Mads Kiilerich
|
r3299 | <div id="header-dd"></div> | ||
r1157 | <div id="header"> | |||
Mads Kiilerich
|
r3299 | <div id="header-inner" class="title"> | ||
r1157 | <div id="logo"> | |||
<h1><a href="${h.url('home')}">${c.rhodecode_name}</a></h1> | ||||
</div> | ||||
<!-- MENU --> | ||||
${self.page_nav()} | ||||
<!-- END MENU --> | ||||
${self.body()} | ||||
</div> | ||||
r1888 | </div> | |||
r1157 | <!-- END HEADER --> | |||
r1888 | ||||
r1157 | <!-- CONTENT --> | |||
r1888 | <div id="content"> | |||
r1157 | <div class="flash_msg"> | |||
<% messages = h.flash.pop_messages() %> | ||||
% if messages: | ||||
<ul id="flash-messages"> | ||||
% for message in messages: | ||||
<li class="${message.category}_msg">${message}</li> | ||||
% endfor | ||||
r547 | </ul> | |||
r1157 | % endif | |||
r1888 | </div> | |||
<div id="main"> | ||||
r1157 | ${next.main()} | |||
</div> | ||||
r1888 | </div> | |||
r1157 | <!-- END CONTENT --> | |||
r547 | ||||
r1157 | <!-- FOOTER --> | |||
<div id="footer"> | ||||
r1470 | <div id="footer-inner" class="title"> | |||
r1157 | <div> | |||
<p class="footer-link"> | ||||
Mads Kiilerich
|
r3779 | ${_('Server instance: %s') % c.rhodecode_instanceid if c.rhodecode_instanceid else ''} | ||
r1157 | </p> | |||
Mads Kiilerich
|
r3197 | <p class="footer-link-right"> | ||
r3910 | <a href="${h.url('rhodecode_official')}"> | |||
RhodeCode | ||||
%if c.visual.show_version: | ||||
${c.rhodecode_version} | ||||
%endif | ||||
</a> | ||||
r3667 | © 2010-${h.datetime.today().year} by Marcin Kuzminski and others | |||
Jonathan Sternberg
|
r4006 | %if c.rhodecode_bugtracker: | ||
– <a href="${c.rhodecode_bugtracker}">${_('Report a bug')}</a> | ||||
%endif | ||||
Mads Kiilerich
|
r3197 | </p> | ||
r1157 | </div> | |||
</div> | ||||
</div> | ||||
r3667 | ||||
r1157 | <!-- END FOOTER --> | |||
r547 | ||||
r1157 | ### MAKO DEFS ### | |||
<%def name="breadcrumbs()"> | ||||
<div class="breadcrumbs"> | ||||
${self.breadcrumbs_links()} | ||||
</div> | ||||
r547 | </%def> | |||
leonardo
|
r3529 | <%def name="admin_menu()"> | ||
<ul class="admin_menu"> | ||||
Mads Kiilerich
|
r3654 | <li>${h.link_to(_('Admin journal'),h.url('admin_home'),class_='journal ')}</li> | ||
<li>${h.link_to(_('Repositories'),h.url('repos'),class_='repos')}</li> | ||||
<li>${h.link_to(_('Repository groups'),h.url('repos_groups'),class_='repos_groups')}</li> | ||||
<li>${h.link_to(_('Users'),h.url('users'),class_='users')}</li> | ||||
<li>${h.link_to(_('User groups'),h.url('users_groups'),class_='groups')}</li> | ||||
<li>${h.link_to(_('Permissions'),h.url('edit_permission',id='default'),class_='permissions')}</li> | ||||
<li>${h.link_to(_('LDAP'),h.url('ldap_home'),class_='ldap')}</li> | ||||
<li>${h.link_to(_('Defaults'),h.url('defaults'),class_='defaults')}</li> | ||||
<li class="last">${h.link_to(_('Settings'),h.url('admin_settings'),class_='settings')}</li> | ||||
leonardo
|
r3529 | </ul> | ||
</%def> | ||||
r3865 | <%def name="admin_menu_simple(repositories=None, repository_groups=None, user_groups=None)"> | |||
leonardo
|
r3529 | <ul> | ||
r3865 | %if repositories: | |||
<li>${h.link_to(_('Repositories'),h.url('repos'),class_='repos')}</li> | ||||
%endif | ||||
r3714 | %if repository_groups: | |||
Mads Kiilerich
|
r3654 | <li>${h.link_to(_('Repository groups'),h.url('repos_groups'),class_='repos_groups')}</li> | ||
r3865 | %endif | |||
r3714 | %if user_groups: | |||
<li>${h.link_to(_('User groups'),h.url('users_groups'),class_='groups')}</li> | ||||
%endif | ||||
leonardo
|
r3529 | </ul> | ||
</%def> | ||||
Leonardo
|
r3527 | <%def name="repo_context_bar(current=None)"> | ||
<% | ||||
def follow_class(): | ||||
if c.repository_following: | ||||
return h.literal('following') | ||||
else: | ||||
Mads Kiilerich
|
r3611 | return h.literal('follow') | ||
Leonardo
|
r3527 | %> | ||
<% | ||||
def is_current(selected): | ||||
if selected == current: | ||||
return h.literal('class="current"') | ||||
%> | ||||
<!--- CONTEXT BAR --> | ||||
<div id="context-bar" class="box"> | ||||
Leonardo
|
r3532 | <div id="breadcrumbs"> | ||
Leonardo
|
r3527 | ${h.link_to(_(u'Repositories'),h.url('home'))} | ||
Mads Kiilerich
|
r3599 | » | ||
Leonardo
|
r3527 | ${h.repo_link(c.rhodecode_db_repo.groups_and_repo)} | ||
</div> | ||||
<ul id="context-pages" class="horizontal-list"> | ||||
<li ${is_current('summary')}><a href="${h.url('summary_home', repo_name=c.repo_name)}" class="summary">${_('Summary')}</a></li> | ||||
Leonardo
|
r3534 | <li ${is_current('changelog')}><a href="${h.url('changelog_home', repo_name=c.repo_name)}" class="changelogs">${_('Changelog')}</a></li> | ||
Leonardo
|
r3527 | <li ${is_current('files')}><a href="${h.url('files_home', repo_name=c.repo_name)}" class="files"></span>${_('Files')}</a></li> | ||
leonardo
|
r3529 | <li ${is_current('switch-to')}> | ||
Leonardo
|
r3527 | <a href="#" id="branch_tag_switcher_2" class="dropdown switch-to"></span>${_('Switch To')}</a> | ||
<ul id="switch_to_list_2" class="switch_to submenu"> | ||||
Mads Kiilerich
|
r3986 | <li><a href="#">${_('Loading...')}</a></li> | ||
Leonardo
|
r3527 | </ul> | ||
</li> | ||||
Leonardo Carneiro
|
r3539 | <li ${is_current('options')}> | ||
Takumi IINO
|
r3586 | <a href="#" class="dropdown options"></span>${_('Options')}</a> | ||
Leonardo
|
r3527 | <ul> | ||
%if h.HasRepoPermissionAll('repository.admin')(c.repo_name): | ||||
Leonardo Carneiro
|
r3538 | <li>${h.link_to(_('Settings'),h.url('edit_repo',repo_name=c.repo_name),class_='settings')}</li> | ||
Leonardo
|
r3527 | %endif | ||
%if c.rhodecode_db_repo.fork: | ||||
r3613 | <li>${h.link_to(_('Compare fork'),h.url('compare_url',repo_name=c.rhodecode_db_repo.fork.repo_name,org_ref_type='branch',org_ref='default',other_repo=c.repo_name,other_ref_type='branch',other_ref=request.GET.get('branch') or 'default', merge=1),class_='compare_request')}</li> | |||
Leonardo
|
r3527 | %endif | ||
Leonardo Carneiro
|
r3538 | <li>${h.link_to(_('Search'),h.url('search_repo',repo_name=c.repo_name),class_='search')}</li> | ||
Leonardo
|
r3527 | |||
%if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name) and c.rhodecode_db_repo.enable_locking: | ||||
%if c.rhodecode_db_repo.locked[0]: | ||||
Leonardo Carneiro
|
r3538 | <li>${h.link_to(_('Unlock'), h.url('toggle_locking',repo_name=c.repo_name),class_='locking_del')}</li> | ||
Leonardo
|
r3527 | %else: | ||
Leonardo Carneiro
|
r3538 | <li>${h.link_to(_('Lock'), h.url('toggle_locking',repo_name=c.repo_name),class_='locking_add')}</li> | ||
Leonardo
|
r3527 | %endif | ||
%endif | ||||
r3616 | ## TODO: this check feels wrong, it would be better to have a check for permissions | |||
## also it feels like a job for the controller | ||||
%if c.rhodecode_user.username != 'default': | ||||
<li> | ||||
<a class="${follow_class()}" onclick="javascript:toggleFollowingRepo(this,${c.rhodecode_db_repo.repo_id},'${str(h.get_token())}');"> | ||||
<span class="show-follow">${_('Follow')}</span> | ||||
<span class="show-following">${_('Unfollow')}</span> | ||||
</a> | ||||
</li> | ||||
<li><a href="${h.url('repo_fork_home',repo_name=c.repo_name)}" class="fork">${_('Fork')}</a></li> | ||||
%if h.is_hg(c.rhodecode_repo): | ||||
<li><a href="${h.url('pullrequest_home',repo_name=c.repo_name)}" class="pull-request">${_('Create Pull Request')}</a></li> | ||||
%endif | ||||
%endif | ||||
Leonardo
|
r3527 | </ul> | ||
</li> | ||||
Leonardo Carneiro
|
r3538 | <li ${is_current('showpullrequest')}> | ||
r3581 | <a href="${h.url('pullrequest_show_all',repo_name=c.repo_name)}" title="${_('Show Pull Requests')}" class="pull-request">${_('Pull Requests')} | |||
Leonardo Carneiro
|
r3538 | %if c.repository_pull_requests: | ||
<span>${c.repository_pull_requests}</span> | ||||
%endif | ||||
</a> | ||||
</li> | ||||
Leonardo
|
r3527 | </ul> | ||
</div> | ||||
<script type="text/javascript"> | ||||
YUE.on('branch_tag_switcher_2','mouseover',function(){ | ||||
var loaded = YUD.hasClass('branch_tag_switcher_2','loaded'); | ||||
if(!loaded){ | ||||
YUD.addClass('branch_tag_switcher_2','loaded'); | ||||
ypjax("${h.url('branch_tag_switcher',repo_name=c.repo_name)}",'switch_to_list_2', | ||||
function(o){}, | ||||
function(o){YUD.removeClass('branch_tag_switcher_2','loaded');} | ||||
,null); | ||||
} | ||||
return false; | ||||
}); | ||||
</script> | ||||
<!--- END CONTEXT BAR --> | ||||
</%def> | ||||
r1926 | <%def name="usermenu()"> | |||
Mads Kiilerich
|
r3206 | ## USER MENU | ||
Mads Kiilerich
|
r3205 | <li> | ||
Leonardo Carneiro
|
r3538 | <a class="menu_link childs" id="quick_login_link"> | ||
<span class="icon"> | ||||
r3207 | <img src="${h.gravatar_url(c.rhodecode_user.email,20)}" alt="avatar"> | |||
</span> | ||||
%if c.rhodecode_user.username != 'default': | ||||
<span class="menu_link_user">${c.rhodecode_user.username}</span> | ||||
%if c.unread_notifications != 0: | ||||
<span class="menu_link_notifications">${c.unread_notifications}</span> | ||||
%endif | ||||
%else: | ||||
<span>${_('Not logged in')}</span> | ||||
%endif | ||||
</a> | ||||
Mads Kiilerich
|
r3205 | |||
r1926 | <div class="user-menu"> | |||
Mads Kiilerich
|
r3206 | <div id="quick_login"> | ||
r1926 | %if c.rhodecode_user.username == 'default': | |||
<h4>${_('Login to your account')}</h4> | ||||
${h.form(h.url('login_home',came_from=h.url.current()))} | ||||
<div class="form"> | ||||
<div class="fields"> | ||||
<div class="field"> | ||||
<div class="label"> | ||||
<label for="username">${_('Username')}:</label> | ||||
</div> | ||||
<div class="input"> | ||||
r3422 | ${h.text('username',class_='focus')} | |||
r1926 | </div> | |||
r1944 | ||||
r1926 | </div> | |||
<div class="field"> | ||||
<div class="label"> | ||||
<label for="password">${_('Password')}:</label> | ||||
</div> | ||||
<div class="input"> | ||||
r3422 | ${h.password('password',class_='focus')} | |||
r1926 | </div> | |||
r1944 | ||||
r1926 | </div> | |||
<div class="buttons"> | ||||
<div class="password_forgoten">${h.link_to(_('Forgot password ?'),h.url('reset_password'))}</div> | ||||
<div class="register"> | ||||
%if h.HasPermissionAny('hg.admin', 'hg.register.auto_activate', 'hg.register.manual_activate')(): | ||||
${h.link_to(_("Don't have an account ?"),h.url('register'))} | ||||
%endif | ||||
</div> | ||||
<div class="submit"> | ||||
r1935 | ${h.submit('sign_in',_('Log In'),class_="ui-btn xsmall")} | |||
r1926 | </div> | |||
</div> | ||||
</div> | ||||
</div> | ||||
${h.end_form()} | ||||
%else: | ||||
<div class="links_left"> | ||||
r3658 | <div class="big_gravatar"><img alt="gravatar" src="${h.gravatar_url(c.rhodecode_user.email,48)}" /></div> | |||
r1950 | <div class="full_name">${c.rhodecode_user.full_name_or_username}</div> | |||
r1926 | <div class="email">${c.rhodecode_user.email}</div> | |||
</div> | ||||
<div class="links_right"> | ||||
<ol class="links"> | ||||
r3658 | <li><a href="${h.url('notifications')}">${_('Notifications')}: ${c.unread_notifications}</a></li> | |||
r1926 | <li>${h.link_to(_(u'My account'),h.url('admin_settings_my_account'))}</li> | |||
<li class="logout">${h.link_to(_(u'Log Out'),h.url('logout_home'))}</li> | ||||
</ol> | ||||
</div> | ||||
%endif | ||||
r1944 | </div> | |||
Mads Kiilerich
|
r3206 | </div> | ||
</li> | ||||
r1926 | </%def> | |||
r1157 | ||||
r547 | <%def name="menu(current=None)"> | |||
Mads Kiilerich
|
r3197 | <% | ||
def is_current(selected): | ||||
if selected == current: | ||||
return h.literal('class="current"') | ||||
%> | ||||
Leonardo Carneiro
|
r3538 | <ul id="quick" class="horizontal-list"> | ||
r3209 | <!-- repo switcher --> | |||
Mads Kiilerich
|
r3603 | <li ${is_current('repositories')}> | ||
Leonardo Carneiro
|
r3538 | <a class="menu_link repo_switcher childs" id="repo_switcher" title="${_('Switch repository')}" href="${h.url('home')}"> | ||
${_('Repositories')} | ||||
r3209 | </a> | |||
<ul id="repo_switcher_list" class="repo_switcher"> | ||||
<li> | ||||
Mads Kiilerich
|
r3986 | <a href="#">${_('Loading...')}</a> | ||
r3209 | </li> | |||
</ul> | ||||
</li> | ||||
leonardo
|
r3529 | ##ROOT MENU | ||
%if c.rhodecode_user.username != 'default': | ||||
<li ${is_current('journal')}> | ||||
Leonardo Carneiro
|
r3538 | <a class="menu_link journal" title="${_('Show recent activity')}" href="${h.url('journal')}"> | ||
${_('Journal')} | ||||
leonardo
|
r3529 | </a> | ||
r3209 | </li> | |||
leonardo
|
r3529 | %else: | ||
<li ${is_current('journal')}> | ||||
Leonardo Carneiro
|
r3538 | <a class="menu_link journal" title="${_('Public journal')}" href="${h.url('public_journal')}"> | ||
${_('Public journal')} | ||||
leonardo
|
r3529 | </a> | ||
r3209 | </li> | |||
leonardo
|
r3529 | %endif | ||
r3840 | <li ${is_current('gists')}> | |||
<a class="menu_link gists childs" title="${_('Show public gists')}" href="${h.url('gists')}"> | ||||
${_('Gists')} | ||||
</a> | ||||
<ul class="admin_menu"> | ||||
<li>${h.link_to(_('Create new gist'),h.url('new_gist'),class_='gists-new ')}</li> | ||||
r3847 | <li>${h.link_to(_('All public gists'),h.url('gists'),class_='gists ')}</li> | |||
r3840 | %if c.rhodecode_user.username != 'default': | |||
r3847 | <li>${h.link_to(_('My public gists'),h.url('gists', public=1),class_='gists')}</li> | |||
r3840 | <li>${h.link_to(_('My private gists'),h.url('gists', private=1),class_='gists-private ')}</li> | |||
%endif | ||||
</ul> | ||||
</li> | ||||
leonardo
|
r3529 | <li ${is_current('search')}> | ||
Leonardo Carneiro
|
r3538 | <a class="menu_link search" title="${_('Search in repositories')}" href="${h.url('search')}"> | ||
${_('Search')} | ||||
leonardo
|
r3529 | </a> | ||
</li> | ||||
% if h.HasPermissionAll('hg.admin')('access admin main page'): | ||||
<li ${is_current('admin')}> | ||||
Leonardo Carneiro
|
r3538 | <a class="menu_link admin childs" title="${_('Admin')}" href="${h.url('admin_home')}"> | ||
${_('Admin')} | ||||
leonardo
|
r3529 | </a> | ||
${admin_menu()} | ||||
r3209 | </li> | |||
r3865 | % elif c.rhodecode_user.repositories_admin or c.rhodecode_user.repository_groups_admin or c.rhodecode_user.user_groups_admin: | |||
leonardo
|
r3529 | <li ${is_current('admin')}> | ||
r3660 | <a class="menu_link admin childs" title="${_('Admin')}"> | |||
Leonardo Carneiro
|
r3538 | ${_('Admin')} | ||
leonardo
|
r3529 | </a> | ||
r3865 | ${admin_menu_simple(c.rhodecode_user.repositories_admin, | |||
c.rhodecode_user.repository_groups_admin, | ||||
r3790 | c.rhodecode_user.user_groups_admin or h.HasPermissionAny('hg.usergroup.create.true')())} | |||
leonardo
|
r3529 | </li> | ||
% endif | ||||
${usermenu()} | ||||
r3211 | <script type="text/javascript"> | |||
YUE.on('repo_switcher','mouseover',function(){ | ||||
var target = 'q_filter_rs'; | ||||
var qfilter_activate = function(){ | ||||
var nodes = YUQ('ul#repo_switcher_list li a.repo_name'); | ||||
var func = function(node){ | ||||
return node.parentNode; | ||||
} | ||||
q_filter(target,nodes,func); | ||||
} | ||||
r3216 | ||||
r3211 | var loaded = YUD.hasClass('repo_switcher','loaded'); | |||
if(!loaded){ | ||||
YUD.addClass('repo_switcher','loaded'); | ||||
ypjax("${h.url('repo_switcher')}",'repo_switcher_list', | ||||
function(o){qfilter_activate();YUD.get(target).focus()}, | ||||
function(o){YUD.removeClass('repo_switcher','loaded');} | ||||
,null); | ||||
}else{ | ||||
Mads Kiilerich
|
r3267 | YUD.get(target).focus(); | ||
r3211 | } | |||
return false; | ||||
r3209 | }); | |||
Mads Kiilerich
|
r3299 | |||
YUE.on('header-dd', 'click',function(e){ | ||||
r3315 | YUD.addClass('header-inner', 'hover'); | |||
r3341 | YUD.addClass('content', 'hover'); | |||
Mads Kiilerich
|
r3299 | }); | ||
r3211 | </script> | |||
Augusto Herrmann
|
r1472 | </%def> | ||