##// END OF EJS Templates
Allow RhodeCode maintainers to specify a custom bug tracker....
Allow RhodeCode maintainers to specify a custom bug tracker. This allows people who maintain large RhodeCode installations to setup their own bug tracker and respond to requests against their specific installation. The maintainer is then free to forward problems with RhodeCode to the canonical issue tracker on bitbucket. If the config option "bugtracker" is present, its value will be used with the "Report a bug" button. If left blank, this disables the button. If no value is present, then the default is used. This is so that the new config option doesn't break installations of RhodeCode upgrading to a newer version and to allow easier installation for the common use case.

File last commit:

r4006:cdf10b3d default
r4006:cdf10b3d default
Show More
base.html
361 lines | 14.5 KiB | text/html | HtmlLexer
## -*- coding: utf-8 -*-
<%inherit file="root.html"/>
<!-- HEADER -->
<div id="header-dd"></div>
<div id="header">
<div id="header-inner" class="title">
<div id="logo">
<h1><a href="${h.url('home')}">${c.rhodecode_name}</a></h1>
</div>
<!-- MENU -->
${self.page_nav()}
<!-- END MENU -->
${self.body()}
</div>
</div>
<!-- END HEADER -->
<!-- CONTENT -->
<div id="content">
<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
</ul>
% endif
</div>
<div id="main">
${next.main()}
</div>
</div>
<!-- END CONTENT -->
<!-- FOOTER -->
<div id="footer">
<div id="footer-inner" class="title">
<div>
<p class="footer-link">
${_('Server instance: %s') % c.rhodecode_instanceid if c.rhodecode_instanceid else ''}
</p>
<p class="footer-link-right">
<a href="${h.url('rhodecode_official')}">
RhodeCode
%if c.visual.show_version:
${c.rhodecode_version}
%endif
</a>
&copy; 2010-${h.datetime.today().year} by Marcin Kuzminski and others
%if c.rhodecode_bugtracker:
&ndash; <a href="${c.rhodecode_bugtracker}">${_('Report a bug')}</a>
%endif
</p>
</div>
</div>
</div>
<!-- END FOOTER -->
### MAKO DEFS ###
<%def name="breadcrumbs()">
<div class="breadcrumbs">
${self.breadcrumbs_links()}
</div>
</%def>
<%def name="admin_menu()">
<ul class="admin_menu">
<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>
</ul>
</%def>
<%def name="admin_menu_simple(repositories=None, repository_groups=None, user_groups=None)">
<ul>
%if repositories:
<li>${h.link_to(_('Repositories'),h.url('repos'),class_='repos')}</li>
%endif
%if repository_groups:
<li>${h.link_to(_('Repository groups'),h.url('repos_groups'),class_='repos_groups')}</li>
%endif
%if user_groups:
<li>${h.link_to(_('User groups'),h.url('users_groups'),class_='groups')}</li>
%endif
</ul>
</%def>
<%def name="repo_context_bar(current=None)">
<%
def follow_class():
if c.repository_following:
return h.literal('following')
else:
return h.literal('follow')
%>
<%
def is_current(selected):
if selected == current:
return h.literal('class="current"')
%>
<!--- CONTEXT BAR -->
<div id="context-bar" class="box">
<div id="breadcrumbs">
${h.link_to(_(u'Repositories'),h.url('home'))}
&raquo;
${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>
<li ${is_current('changelog')}><a href="${h.url('changelog_home', repo_name=c.repo_name)}" class="changelogs">${_('Changelog')}</a></li>
<li ${is_current('files')}><a href="${h.url('files_home', repo_name=c.repo_name)}" class="files"></span>${_('Files')}</a></li>
<li ${is_current('switch-to')}>
<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">
<li><a href="#">${_('Loading...')}</a></li>
</ul>
</li>
<li ${is_current('options')}>
<a href="#" class="dropdown options"></span>${_('Options')}</a>
<ul>
%if h.HasRepoPermissionAll('repository.admin')(c.repo_name):
<li>${h.link_to(_('Settings'),h.url('edit_repo',repo_name=c.repo_name),class_='settings')}</li>
%endif
%if c.rhodecode_db_repo.fork:
<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>
%endif
<li>${h.link_to(_('Search'),h.url('search_repo',repo_name=c.repo_name),class_='search')}</li>
%if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name) and c.rhodecode_db_repo.enable_locking:
%if c.rhodecode_db_repo.locked[0]:
<li>${h.link_to(_('Unlock'), h.url('toggle_locking',repo_name=c.repo_name),class_='locking_del')}</li>
%else:
<li>${h.link_to(_('Lock'), h.url('toggle_locking',repo_name=c.repo_name),class_='locking_add')}</li>
%endif
%endif
## 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
</ul>
</li>
<li ${is_current('showpullrequest')}>
<a href="${h.url('pullrequest_show_all',repo_name=c.repo_name)}" title="${_('Show Pull Requests')}" class="pull-request">${_('Pull Requests')}
%if c.repository_pull_requests:
<span>${c.repository_pull_requests}</span>
%endif
</a>
</li>
</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>
<%def name="usermenu()">
## USER MENU
<li>
<a class="menu_link childs" id="quick_login_link">
<span class="icon">
<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>
<div class="user-menu">
<div id="quick_login">
%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">
${h.text('username',class_='focus')}
</div>
</div>
<div class="field">
<div class="label">
<label for="password">${_('Password')}:</label>
</div>
<div class="input">
${h.password('password',class_='focus')}
</div>
</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">
${h.submit('sign_in',_('Log In'),class_="ui-btn xsmall")}
</div>
</div>
</div>
</div>
${h.end_form()}
%else:
<div class="links_left">
<div class="big_gravatar"><img alt="gravatar" src="${h.gravatar_url(c.rhodecode_user.email,48)}" /></div>
<div class="full_name">${c.rhodecode_user.full_name_or_username}</div>
<div class="email">${c.rhodecode_user.email}</div>
</div>
<div class="links_right">
<ol class="links">
<li><a href="${h.url('notifications')}">${_('Notifications')}: ${c.unread_notifications}</a></li>
<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
</div>
</div>
</li>
</%def>
<%def name="menu(current=None)">
<%
def is_current(selected):
if selected == current:
return h.literal('class="current"')
%>
<ul id="quick" class="horizontal-list">
<!-- repo switcher -->
<li ${is_current('repositories')}>
<a class="menu_link repo_switcher childs" id="repo_switcher" title="${_('Switch repository')}" href="${h.url('home')}">
${_('Repositories')}
</a>
<ul id="repo_switcher_list" class="repo_switcher">
<li>
<a href="#">${_('Loading...')}</a>
</li>
</ul>
</li>
##ROOT MENU
%if c.rhodecode_user.username != 'default':
<li ${is_current('journal')}>
<a class="menu_link journal" title="${_('Show recent activity')}" href="${h.url('journal')}">
${_('Journal')}
</a>
</li>
%else:
<li ${is_current('journal')}>
<a class="menu_link journal" title="${_('Public journal')}" href="${h.url('public_journal')}">
${_('Public journal')}
</a>
</li>
%endif
<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>
<li>${h.link_to(_('All public gists'),h.url('gists'),class_='gists ')}</li>
%if c.rhodecode_user.username != 'default':
<li>${h.link_to(_('My public gists'),h.url('gists', public=1),class_='gists')}</li>
<li>${h.link_to(_('My private gists'),h.url('gists', private=1),class_='gists-private ')}</li>
%endif
</ul>
</li>
<li ${is_current('search')}>
<a class="menu_link search" title="${_('Search in repositories')}" href="${h.url('search')}">
${_('Search')}
</a>
</li>
% if h.HasPermissionAll('hg.admin')('access admin main page'):
<li ${is_current('admin')}>
<a class="menu_link admin childs" title="${_('Admin')}" href="${h.url('admin_home')}">
${_('Admin')}
</a>
${admin_menu()}
</li>
% elif c.rhodecode_user.repositories_admin or c.rhodecode_user.repository_groups_admin or c.rhodecode_user.user_groups_admin:
<li ${is_current('admin')}>
<a class="menu_link admin childs" title="${_('Admin')}">
${_('Admin')}
</a>
${admin_menu_simple(c.rhodecode_user.repositories_admin,
c.rhodecode_user.repository_groups_admin,
c.rhodecode_user.user_groups_admin or h.HasPermissionAny('hg.usergroup.create.true')())}
</li>
% endif
${usermenu()}
<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);
}
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{
YUD.get(target).focus();
}
return false;
});
YUE.on('header-dd', 'click',function(e){
YUD.addClass('header-inner', 'hover');
YUD.addClass('content', 'hover');
});
</script>
</%def>