##// END OF EJS Templates
revision extraction function shouldn't be so eager, just extract commits that are...
revision extraction function shouldn't be so eager, just extract commits that are surrounded with spaces, or they are at beginning of the whole string - wrote tests for that - used parametrized for other tests

File last commit:

r3371:199fd214 beta
r3385:d21c762f beta
Show More
base.html
390 lines | 16.8 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">
<a href="${h.url('bugtracker')}">${_('Submit a bug')}</a>
</p>
<p class="footer-link-right">
<a href="${h.url('rhodecode_official')}">RhodeCode${'-%s' % c.rhodecode_instanceid if c.rhodecode_instanceid else ''}</a>
${c.rhodecode_version} &copy; 2010-${h.datetime.today().year} by Marcin Kuzminski
</p>
</div>
</div>
</div>
<!-- END FOOTER -->
### MAKO DEFS ###
<%def name="page_nav()">
${self.menu()}
</%def>
<%def name="breadcrumbs()">
<div class="breadcrumbs">
${self.breadcrumbs_links()}
</div>
</%def>
<%def name="usermenu()">
## USER MENU
<li>
<a class="menu_link" id="quick_login_link">
<span class="icon" style="padding:5px 5px 0px 5px">
<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',size=40)}
</div>
</div>
<div class="field">
<div class="label">
<label for="password">${_('Password')}:</label>
</div>
<div class="input">
${h.password('password',class_='focus',size=40)}
</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="full_name">${c.rhodecode_user.full_name_or_username}</div>
<div class="email">${c.rhodecode_user.email}</div>
<div class="big_gravatar"><img alt="gravatar" src="${h.gravatar_url(c.rhodecode_user.email,48)}" /></div>
<div class="notifications"><a href="${h.url('notifications')}">${_('Notifications')}</a></div>
<div class="unread"><a href="${h.url('notifications')}">${_('Unread')}: ${c.unread_notifications}</a></div>
</div>
<div class="links_right">
<ol class="links">
<li>${h.link_to(_(u'Home'),h.url('home'))}</li>
<li>${h.link_to(_(u'Journal'),h.url('journal'))}</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">
<!-- repo switcher -->
<li ${is_current('home')}>
<a class="menu_link" id="repo_switcher" title="${_('Switch repository')}" href="${h.url('home')}">
<span class="icon">
<img src="${h.url('/images/icons/database.png')}" alt="${_('Products')}" />
</span>
<span>${_('Repositories')}</span>
</a>
<ul id="repo_switcher_list" class="repo_switcher">
<li>
<a href="#">${_('loading...')}</a>
</li>
</ul>
</li>
## we render this menu only not for those pages
%if current not in ['home','admin', 'search', 'journal']:
##REGULAR MENU
<li ${is_current('summary')}>
<a class="menu_link" title="${_('Summary page')}" href="${h.url('summary_home',repo_name=c.repo_name)}">
<span class="icon">
<img src="${h.url('/images/icons/clipboard_16.png')}" alt="${_('Summary')}" />
</span>
<span>${_('Summary')}</span>
</a>
</li>
<li ${is_current('changelog')}>
<a class="menu_link" title="${_('Changeset list')}" href="${h.url('changelog_home',repo_name=c.repo_name)}">
<span class="icon">
<img src="${h.url('/images/icons/time.png')}" alt="${_('Changelog')}" />
</span>
<span>${_('Changelog')}</span>
</a>
</li>
<li ${is_current('switch_to')}>
<a class="menu_link" id="branch_tag_switcher" title="${_('Switch to')}" href="#">
<span class="icon">
<img src="${h.url('/images/icons/arrow_switch.png')}" alt="${_('Switch to')}" />
</span>
<span>${_('Switch to')}</span>
</a>
<ul id="switch_to_list" class="switch_to">
<li><a href="#">${_('loading...')}</a></li>
</ul>
</li>
<li ${is_current('files')}>
<a class="menu_link" title="${_('Show repository content')}" href="${h.url('files_home',repo_name=c.repo_name)}">
<span class="icon">
<img src="${h.url('/images/icons/file.png')}" alt="${_('Files')}" />
</span>
<span>${_('Files')}</span>
</a>
</li>
<li ${is_current('options')}>
<a class="menu_link" title="${_('Options')}" href="#">
<span class="icon">
<img src="${h.url('/images/icons/table_gear.png')}" alt="${_('Admin')}" />
</span>
<span>${_('Options')}</span>
</a>
<ul>
%if h.HasRepoPermissionAll('repository.admin')(c.repo_name):
%if h.HasPermissionAll('hg.admin')('access settings on repository'):
<li>${h.link_to(_('repository settings'),h.url('edit_repo',repo_name=c.repo_name),class_='settings')}</li>
%else:
<li>${h.link_to(_('repository settings'),h.url('repo_settings_home',repo_name=c.repo_name),class_='settings')}</li>
%endif
%endif
<li>${h.link_to(_('fork'),h.url('repo_fork_home',repo_name=c.repo_name),class_='fork')}</li>
%if h.is_hg(c.rhodecode_repo):
<li>${h.link_to(_('open new pull request'),h.url('pullrequest_home',repo_name=c.repo_name),class_='pull_request')}</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'),class_='compare_request')}</li>
%endif
<li>${h.link_to(_('lightweight changelog'),h.url('shortlog_home',repo_name=c.repo_name),class_='shortlog')}</li>
<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
% if h.HasPermissionAll('hg.admin')('access admin main page'):
<li>
${h.link_to(_('admin'),h.url('admin_home'),class_='admin')}
<%def name="admin_menu()">
<ul>
<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(_('repositories groups'),h.url('repos_groups'),class_='repos_groups')}</li>
<li>${h.link_to(_('users'),h.url('users'),class_='users')}</li>
<li>${h.link_to(_('users 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>
## ADMIN MENU
${admin_menu()}
</li>
## if you're a admin of any groups, show admin menu for it
% elif c.rhodecode_user.groups_admin:
<li>
${h.link_to(_('admin'),h.url('admin_home'),class_='admin')}
<%def name="admin_menu_simple()">
<ul>
<li>${h.link_to(_('repositories groups'),h.url('repos_groups'),class_='repos_groups')}</li>
</ul>
</%def>
## ADMIN MENU
${admin_menu_simple()}
</li>
% endif
</ul>
</li>
<li>
<a class="menu_link" title="${_('Followers')}" href="${h.url('repo_followers_home',repo_name=c.repo_name)}">
<span class="icon_short">
<img src="${h.url('/images/icons/heart.png')}" alt="${_('Followers')}" />
</span>
<span id="current_followers_count" class="short">${c.repository_followers}</span>
</a>
</li>
<li>
<a class="menu_link" title="${_('Forks')}" href="${h.url('repo_forks_home',repo_name=c.repo_name)}">
<span class="icon_short">
<img src="${h.url('/images/icons/arrow_divide.png')}" alt="${_('Forks')}" />
</span>
<span class="short">${c.repository_forks}</span>
</a>
</li>
<li>
<a class="menu_link" title="${_('Pull requests')}" href="${h.url('pullrequest_show_all',repo_name=c.repo_name)}">
<span class="icon_short">
<img src="${h.url('/images/icons/arrow_join.png')}" alt="${_('Pull requests')}" />
</span>
<span class="short">${c.repository_pull_requests}</span>
</a>
</li>
${usermenu()}
<script type="text/javascript">
YUE.on('branch_tag_switcher','mouseover',function(){
var loaded = YUD.hasClass('branch_tag_switcher','loaded');
if(!loaded){
YUD.addClass('branch_tag_switcher','loaded');
ypjax("${h.url('branch_tag_switcher',repo_name=c.repo_name)}",'switch_to_list',
function(o){},
function(o){YUD.removeClass('branch_tag_switcher','loaded');}
,null);
}
return false;
});
</script>
%else:
##ROOT MENU
%if c.rhodecode_user.username != 'default':
<li ${is_current('journal')}>
<a class="menu_link" title="${_('Show recent activity')}" href="${h.url('journal')}">
<span class="icon">
<img src="${h.url('/images/icons/book.png')}" alt="${_('Journal')}" />
</span>
<span>${_('Journal')}</span>
</a>
</li>
%else:
<li ${is_current('journal')}>
<a class="menu_link" title="${_('Public journal')}" href="${h.url('public_journal')}">
<span class="icon">
<img src="${h.url('/images/icons/book.png')}" alt="${_('Public journal')}" />
</span>
<span>${_('Public journal')}</span>
</a>
</li>
%endif
<li ${is_current('search')}>
<a class="menu_link" title="${_('Search in repositories')}" href="${h.url('search')}">
<span class="icon">
<img src="${h.url('/images/icons/search_16.png')}" alt="${_('Search')}" />
</span>
<span>${_('Search')}</span>
</a>
</li>
% if h.HasPermissionAll('hg.admin')('access admin main page'):
<li ${is_current('admin')}>
<a class="menu_link" title="${_('Admin')}" href="${h.url('admin_home')}">
<span class="icon">
<img src="${h.url('/images/icons/cog_edit.png')}" alt="${_('Admin')}" />
</span>
<span>${_('Admin')}</span>
</a>
${admin_menu()}
</li>
% elif c.rhodecode_user.groups_admin:
<li ${is_current('admin')}>
<a class="menu_link" title="${_('Admin')}" href="${h.url('admin_home')}">
<span class="icon">
<img src="${h.url('/images/icons/cog_edit.png')}" alt="${_('Admin')}" />
</span>
<span>${_('Admin')}</span>
</a>
${admin_menu_simple()}
</li>
% endif
${usermenu()}
%endif
<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>