##// END OF EJS Templates
html: random indentation fixes
Mads Kiilerich -
r3198:c20adbaf beta
parent child Browse files
Show More
@@ -1,18 +1,18 b''
1 {% extends "basic/layout.html" %}
1 {% extends "basic/layout.html" %}
2
2
3 {% block sidebarlogo %}
3 {% block sidebarlogo %}
4 <h3>Support RhodeCode development.</h3>
4 <h3>Support RhodeCode development.</h3>
5 <div style="text-align:center">
5 <div style="text-align:center">
6 <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
6 <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
7 <input type="hidden" name="cmd" value="_s-xclick">
7 <input type="hidden" name="cmd" value="_s-xclick">
8 <input type="hidden" name="hosted_button_id" value="8U2LLRPLBKWDU">
8 <input type="hidden" name="hosted_button_id" value="8U2LLRPLBKWDU">
9 <input style="border:0px !important" type="image" src="https://www.paypal.com/en_US/i/btn/btn_donate_SM.gif"
9 <input style="border:0px !important" type="image" src="https://www.paypal.com/en_US/i/btn/btn_donate_SM.gif"
10 border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
10 border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
11 <img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
11 <img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
12 </form>
12 </form>
13 <div style="padding:5px">
13 <div style="padding:5px">
14 <a href="http://flattr.com/thing/167489/RhodeCode" target="_blank">
14 <a href="http://flattr.com/thing/167489/RhodeCode" target="_blank">
15 <img src="http://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" border="0" /></a>
15 <img src="http://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" border="0" /></a>
16 </div>
16 </div>
17 </div>
17 </div>
18 {% endblock %}}
18 {% endblock %}}
@@ -1,64 +1,64 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 %if c.users_log:
2 %if c.users_log:
3 <table>
3 <table>
4 <tr>
4 <tr>
5 <th class="left">${_('Username')}</th>
5 <th class="left">${_('Username')}</th>
6 <th class="left">${_('Action')}</th>
6 <th class="left">${_('Action')}</th>
7 <th class="left">${_('Repository')}</th>
7 <th class="left">${_('Repository')}</th>
8 <th class="left">${_('Date')}</th>
8 <th class="left">${_('Date')}</th>
9 <th class="left">${_('From IP')}</th>
9 <th class="left">${_('From IP')}</th>
10 </tr>
10 </tr>
11
11
12 %for cnt,l in enumerate(c.users_log):
12 %for cnt,l in enumerate(c.users_log):
13 <tr class="parity${cnt%2}">
13 <tr class="parity${cnt%2}">
14 <td>
14 <td>
15 %if l.user is not None:
15 %if l.user is not None:
16 ${h.link_to(l.user.username,h.url('edit_user', id=l.user.user_id))}
16 ${h.link_to(l.user.username,h.url('edit_user', id=l.user.user_id))}
17 %else:
17 %else:
18 ${l.username}
18 ${l.username}
19 %endif
19 %endif
20 </td>
20 </td>
21 <td>${h.action_parser(l)[0]()}
21 <td>${h.action_parser(l)[0]()}
22 <div class="journal_action_params">
22 <div class="journal_action_params">
23 ${h.literal(h.action_parser(l)[1]())}
23 ${h.literal(h.action_parser(l)[1]())}
24 </div>
24 </div>
25 </td>
25 </td>
26 <td>
26 <td>
27 %if l.repository is not None:
27 %if l.repository is not None:
28 ${h.link_to(l.repository.repo_name,h.url('summary_home',repo_name=l.repository.repo_name))}
28 ${h.link_to(l.repository.repo_name,h.url('summary_home',repo_name=l.repository.repo_name))}
29 %else:
29 %else:
30 ${l.repository_name}
30 ${l.repository_name}
31 %endif
31 %endif
32 </td>
32 </td>
33
33
34 <td>${h.fmt_date(l.action_date)}</td>
34 <td>${h.fmt_date(l.action_date)}</td>
35 <td>${l.user_ip}</td>
35 <td>${l.user_ip}</td>
36 </tr>
36 </tr>
37 %endfor
37 %endfor
38 </table>
38 </table>
39
39
40 <script type="text/javascript">
40 <script type="text/javascript">
41 YUE.onDOMReady(function(){
41 YUE.onDOMReady(function(){
42 YUE.delegate("user_log","click",function(e, matchedEl, container){
42 YUE.delegate("user_log","click",function(e, matchedEl, container){
43 ypjax(e.target.href,"user_log",function(){
43 ypjax(e.target.href,"user_log",function(){
44 show_more_event();
44 show_more_event();
45 tooltip_activate();
45 tooltip_activate();
46 show_changeset_tooltip();
46 show_changeset_tooltip();
47 });
47 });
48 YUE.preventDefault(e);
48 YUE.preventDefault(e);
49 },'.pager_link');
49 },'.pager_link');
50
50
51 YUE.delegate("user_log","click",function(e,matchedEl,container){
51 YUE.delegate("user_log","click",function(e,matchedEl,container){
52 var el = e.target;
52 var el = e.target;
53 YUD.setStyle(YUD.get(el.id.substring(1)),'display','');
53 YUD.setStyle(YUD.get(el.id.substring(1)),'display','');
54 YUD.setStyle(el.parentNode,'display','none');
54 YUD.setStyle(el.parentNode,'display','none');
55 },'.show_more');
55 },'.show_more');
56 });
56 });
57 </script>
57 </script>
58
58
59 <div class="pagination-wh pagination-left">
59 <div class="pagination-wh pagination-left">
60 ${c.users_log.pager('$link_previous ~2~ $link_next')}
60 ${c.users_log.pager('$link_previous ~2~ $link_next')}
61 </div>
61 </div>
62 %else:
62 %else:
63 ${_('No actions yet')}
63 ${_('No actions yet')}
64 %endif
64 %endif
@@ -1,95 +1,95 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 <%inherit file="/base/base.html"/>
2 <%inherit file="/base/base.html"/>
3
3
4 <%def name="title()">
4 <%def name="title()">
5 ${_('LDAP administration')} - ${c.rhodecode_name}
5 ${_('LDAP administration')} - ${c.rhodecode_name}
6 </%def>
6 </%def>
7
7
8 <%def name="breadcrumbs_links()">
8 <%def name="breadcrumbs_links()">
9 ${h.link_to(_('Admin'),h.url('admin_home'))}
9 ${h.link_to(_('Admin'),h.url('admin_home'))}
10 &raquo;
10 &raquo;
11 ${_('Ldap')}
11 ${_('Ldap')}
12 </%def>
12 </%def>
13
13
14 <%def name="page_nav()">
14 <%def name="page_nav()">
15 ${self.menu('admin')}
15 ${self.menu('admin')}
16 </%def>
16 </%def>
17
17
18 <%def name="main()">
18 <%def name="main()">
19 <div class="box">
19 <div class="box">
20 <!-- box / title -->
20 <!-- box / title -->
21 <div class="title">
21 <div class="title">
22 ${self.breadcrumbs()}
22 ${self.breadcrumbs()}
23 </div>
23 </div>
24 ${h.form(url('ldap_settings'))}
24 ${h.form(url('ldap_settings'))}
25 <div class="form">
25 <div class="form">
26 <div class="fields">
26 <div class="fields">
27
27
28 <h3>${_('Connection settings')}</h3>
28 <h3>${_('Connection settings')}</h3>
29 <div class="field">
29 <div class="field">
30 <div class="label label-checkbox"><label for="ldap_active">${_('Enable LDAP')}</label></div>
30 <div class="label label-checkbox"><label for="ldap_active">${_('Enable LDAP')}</label></div>
31 <div class="checkboxes"><div class="checkbox">${h.checkbox('ldap_active',True,class_='small')}</div></div>
31 <div class="checkboxes"><div class="checkbox">${h.checkbox('ldap_active',True,class_='small')}</div></div>
32 </div>
32 </div>
33 <div class="field">
33 <div class="field">
34 <div class="label"><label for="ldap_host">${_('Host')}</label></div>
34 <div class="label"><label for="ldap_host">${_('Host')}</label></div>
35 <div class="input">${h.text('ldap_host',class_='small')}</div>
35 <div class="input">${h.text('ldap_host',class_='small')}</div>
36 </div>
36 </div>
37 <div class="field">
37 <div class="field">
38 <div class="label"><label for="ldap_port">${_('Port')}</label></div>
38 <div class="label"><label for="ldap_port">${_('Port')}</label></div>
39 <div class="input">${h.text('ldap_port',class_='small')}</div>
39 <div class="input">${h.text('ldap_port',class_='small')}</div>
40 </div>
40 </div>
41 <div class="field">
41 <div class="field">
42 <div class="label"><label for="ldap_dn_user">${_('Account')}</label></div>
42 <div class="label"><label for="ldap_dn_user">${_('Account')}</label></div>
43 <div class="input">${h.text('ldap_dn_user',class_='small')}</div>
43 <div class="input">${h.text('ldap_dn_user',class_='small')}</div>
44 </div>
44 </div>
45 <div class="field">
45 <div class="field">
46 <div class="label"><label for="ldap_dn_pass">${_('Password')}</label></div>
46 <div class="label"><label for="ldap_dn_pass">${_('Password')}</label></div>
47 <div class="input">${h.password('ldap_dn_pass',class_='small')}</div>
47 <div class="input">${h.password('ldap_dn_pass',class_='small')}</div>
48 </div>
48 </div>
49 <div class="field">
49 <div class="field">
50 <div class="label"><label for="ldap_tls_kind">${_('Connection security')}</label></div>
50 <div class="label"><label for="ldap_tls_kind">${_('Connection security')}</label></div>
51 <div class="select">${h.select('ldap_tls_kind',c.tls_kind_cur,c.tls_kind_choices,class_='small')}</div>
51 <div class="select">${h.select('ldap_tls_kind',c.tls_kind_cur,c.tls_kind_choices,class_='small')}</div>
52 </div>
52 </div>
53 <div class="field">
53 <div class="field">
54 <div class="label"><label for="ldap_tls_reqcert">${_('Certificate Checks')}</label></div>
54 <div class="label"><label for="ldap_tls_reqcert">${_('Certificate Checks')}</label></div>
55 <div class="select">${h.select('ldap_tls_reqcert',c.tls_reqcert_cur,c.tls_reqcert_choices,class_='small')}</div>
55 <div class="select">${h.select('ldap_tls_reqcert',c.tls_reqcert_cur,c.tls_reqcert_choices,class_='small')}</div>
56 </div>
56 </div>
57 <h3>${_('Search settings')}</h3>
57 <h3>${_('Search settings')}</h3>
58 <div class="field">
58 <div class="field">
59 <div class="label"><label for="ldap_base_dn">${_('Base DN')}</label></div>
59 <div class="label"><label for="ldap_base_dn">${_('Base DN')}</label></div>
60 <div class="input">${h.text('ldap_base_dn',class_='small')}</div>
60 <div class="input">${h.text('ldap_base_dn',class_='small')}</div>
61 </div>
61 </div>
62 <div class="field">
62 <div class="field">
63 <div class="label"><label for="ldap_filter">${_('LDAP Filter')}</label></div>
63 <div class="label"><label for="ldap_filter">${_('LDAP Filter')}</label></div>
64 <div class="input">${h.text('ldap_filter',class_='small')}</div>
64 <div class="input">${h.text('ldap_filter',class_='small')}</div>
65 </div>
65 </div>
66 <div class="field">
66 <div class="field">
67 <div class="label"><label for="ldap_search_scope">${_('LDAP Search Scope')}</label></div>
67 <div class="label"><label for="ldap_search_scope">${_('LDAP Search Scope')}</label></div>
68 <div class="select">${h.select('ldap_search_scope',c.search_scope_cur,c.search_scope_choices,class_='small')}</div>
68 <div class="select">${h.select('ldap_search_scope',c.search_scope_cur,c.search_scope_choices,class_='small')}</div>
69 </div>
69 </div>
70 <h3>${_('Attribute mappings')}</h3>
70 <h3>${_('Attribute mappings')}</h3>
71 <div class="field">
71 <div class="field">
72 <div class="label"><label for="ldap_attr_login">${_('Login Attribute')}</label></div>
72 <div class="label"><label for="ldap_attr_login">${_('Login Attribute')}</label></div>
73 <div class="input">${h.text('ldap_attr_login',class_='small')}</div>
73 <div class="input">${h.text('ldap_attr_login',class_='small')}</div>
74 </div>
74 </div>
75 <div class="field">
75 <div class="field">
76 <div class="label"><label for="ldap_attr_firstname">${_('First Name Attribute')}</label></div>
76 <div class="label"><label for="ldap_attr_firstname">${_('First Name Attribute')}</label></div>
77 <div class="input">${h.text('ldap_attr_firstname',class_='small')}</div>
77 <div class="input">${h.text('ldap_attr_firstname',class_='small')}</div>
78 </div>
78 </div>
79 <div class="field">
79 <div class="field">
80 <div class="label"><label for="ldap_attr_lastname">${_('Last Name Attribute')}</label></div>
80 <div class="label"><label for="ldap_attr_lastname">${_('Last Name Attribute')}</label></div>
81 <div class="input">${h.text('ldap_attr_lastname',class_='small')}</div>
81 <div class="input">${h.text('ldap_attr_lastname',class_='small')}</div>
82 </div>
82 </div>
83 <div class="field">
83 <div class="field">
84 <div class="label"><label for="ldap_attr_email">${_('E-mail Attribute')}</label></div>
84 <div class="label"><label for="ldap_attr_email">${_('E-mail Attribute')}</label></div>
85 <div class="input">${h.text('ldap_attr_email',class_='small')}</div>
85 <div class="input">${h.text('ldap_attr_email',class_='small')}</div>
86 </div>
86 </div>
87
87
88 <div class="buttons">
88 <div class="buttons">
89 ${h.submit('save',_('Save'),class_="ui-btn large")}
89 ${h.submit('save',_('Save'),class_="ui-btn large")}
90 </div>
90 </div>
91 </div>
91 </div>
92 </div>
92 </div>
93 ${h.end_form()}
93 ${h.end_form()}
94 </div>
94 </div>
95 </%def>
95 </%def>
@@ -1,86 +1,86 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 <%inherit file="/base/base.html"/>
2 <%inherit file="/base/base.html"/>
3
3
4 <%def name="title()">
4 <%def name="title()">
5 ${_('Edit repos group')} ${c.repos_group.name} - ${c.rhodecode_name}
5 ${_('Edit repos group')} ${c.repos_group.name} - ${c.rhodecode_name}
6 </%def>
6 </%def>
7 <%def name="breadcrumbs_links()">
7 <%def name="breadcrumbs_links()">
8 ${h.link_to(_('Admin'),h.url('admin_home'))}
8 ${h.link_to(_('Admin'),h.url('admin_home'))}
9 &raquo;
9 &raquo;
10 ${h.link_to(_('Repos groups'),h.url('repos_groups'))}
10 ${h.link_to(_('Repos groups'),h.url('repos_groups'))}
11 &raquo;
11 &raquo;
12 ${_('edit repos group')} "${c.repos_group.name}"
12 ${_('edit repos group')} "${c.repos_group.name}"
13 </%def>
13 </%def>
14
14
15 <%def name="page_nav()">
15 <%def name="page_nav()">
16 ${self.menu('admin')}
16 ${self.menu('admin')}
17 </%def>
17 </%def>
18
18
19 <%def name="main()">
19 <%def name="main()">
20 <div class="box">
20 <div class="box">
21 <!-- box / title -->
21 <!-- box / title -->
22 <div class="title">
22 <div class="title">
23 ${self.breadcrumbs()}
23 ${self.breadcrumbs()}
24 <ul class="links">
24 <ul class="links">
25 <li>
25 <li>
26 <span>${h.link_to(_(u'ADD NEW CHILD GROUP'),h.url('new_repos_group', parent_group=c.repos_group.group_id))}</span>
26 <span>${h.link_to(_(u'ADD NEW CHILD GROUP'),h.url('new_repos_group', parent_group=c.repos_group.group_id))}</span>
27 </li>
27 </li>
28 </ul>
28 </ul>
29 </div>
29 </div>
30 <!-- end box / title -->
30 <!-- end box / title -->
31 ${h.form(url('repos_group',id=c.repos_group.group_id),method='put')}
31 ${h.form(url('repos_group',id=c.repos_group.group_id),method='put')}
32 <div class="form">
32 <div class="form">
33 <!-- fields -->
33 <!-- fields -->
34 <div class="fields">
34 <div class="fields">
35 <div class="field">
35 <div class="field">
36 <div class="label">
36 <div class="label">
37 <label for="group_name">${_('Group name')}:</label>
37 <label for="group_name">${_('Group name')}:</label>
38 </div>
38 </div>
39 <div class="input">
39 <div class="input">
40 ${h.text('group_name',class_='medium')}
40 ${h.text('group_name',class_='medium')}
41 </div>
41 </div>
42 </div>
42 </div>
43
43
44 <div class="field">
44 <div class="field">
45 <div class="label label-textarea">
45 <div class="label label-textarea">
46 <label for="group_description">${_('Description')}:</label>
46 <label for="group_description">${_('Description')}:</label>
47 </div>
47 </div>
48 <div class="textarea text-area editor">
48 <div class="textarea text-area editor">
49 ${h.textarea('group_description',cols=23,rows=5,class_="medium")}
49 ${h.textarea('group_description',cols=23,rows=5,class_="medium")}
50 </div>
50 </div>
51 </div>
51 </div>
52
52
53 <div class="field">
53 <div class="field">
54 <div class="label">
54 <div class="label">
55 <label for="group_parent_id">${_('Group parent')}:</label>
55 <label for="group_parent_id">${_('Group parent')}:</label>
56 </div>
56 </div>
57 <div class="input">
57 <div class="input">
58 ${h.select('group_parent_id','',c.repo_groups,class_="medium")}
58 ${h.select('group_parent_id','',c.repo_groups,class_="medium")}
59 </div>
59 </div>
60 </div>
60 </div>
61 <div class="field">
61 <div class="field">
62 <div class="label">
62 <div class="label">
63 <label for="input">${_('Permissions')}:</label>
63 <label for="input">${_('Permissions')}:</label>
64 </div>
64 </div>
65 <div class="input">
65 <div class="input">
66 <%include file="repos_group_edit_perms.html"/>
66 <%include file="repos_group_edit_perms.html"/>
67 </div>
67 </div>
68 </div>
68 </div>
69 <div class="field">
69 <div class="field">
70 <div class="label label-checkbox">
70 <div class="label label-checkbox">
71 <label for="enable_locking">${_('Enable locking')}:</label>
71 <label for="enable_locking">${_('Enable locking')}:</label>
72 </div>
72 </div>
73 <div class="checkboxes">
73 <div class="checkboxes">
74 ${h.checkbox('enable_locking',value="True")}
74 ${h.checkbox('enable_locking',value="True")}
75 <span class="help-block">${_('Enable lock-by-pulling on group. This option will be applied to all other groups and repositories inside')}</span>
75 <span class="help-block">${_('Enable lock-by-pulling on group. This option will be applied to all other groups and repositories inside')}</span>
76 </div>
76 </div>
77 </div>
77 </div>
78 <div class="buttons">
78 <div class="buttons">
79 ${h.submit('save',_('Save'),class_="ui-btn large")}
79 ${h.submit('save',_('Save'),class_="ui-btn large")}
80 ${h.reset('reset',_('Reset'),class_="ui-btn large")}
80 ${h.reset('reset',_('Reset'),class_="ui-btn large")}
81 </div>
81 </div>
82 </div>
82 </div>
83 </div>
83 </div>
84 ${h.end_form()}
84 ${h.end_form()}
85 </div>
85 </div>
86 </%def>
86 </%def>
@@ -1,96 +1,96 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 <%inherit file="/base/base.html"/>
2 <%inherit file="/base/base.html"/>
3
3
4 <%def name="title()">
4 <%def name="title()">
5 ${_('Settings administration')} - ${c.rhodecode_name}
5 ${_('Settings administration')} - ${c.rhodecode_name}
6 </%def>
6 </%def>
7
7
8 <%def name="breadcrumbs_links()">
8 <%def name="breadcrumbs_links()">
9 ${h.link_to(_('Admin'),h.url('admin_home'))} &raquo; ${_('Settings')}
9 ${h.link_to(_('Admin'),h.url('admin_home'))} &raquo; ${_('Settings')}
10 </%def>
10 </%def>
11
11
12 <%def name="page_nav()">
12 <%def name="page_nav()">
13 ${self.menu('admin')}
13 ${self.menu('admin')}
14 </%def>
14 </%def>
15
15
16 <%def name="main()">
16 <%def name="main()">
17 <div class="box">
17 <div class="box">
18 <!-- box / title -->
18 <!-- box / title -->
19 <div class="title">
19 <div class="title">
20 ${self.breadcrumbs()}
20 ${self.breadcrumbs()}
21 </div>
21 </div>
22 <!-- end box / title -->
22 <!-- end box / title -->
23
23
24 <h3>${_('Built in hooks - read only')}</h3>
24 <h3>${_('Built in hooks - read only')}</h3>
25 <div class="form">
25 <div class="form">
26 <div class="fields">
26 <div class="fields">
27 % for hook in c.hooks:
27 % for hook in c.hooks:
28 <div class="field">
28 <div class="field">
29 <div class="label label">
29 <div class="label label">
30 <label for="${hook.ui_key}">${hook.ui_key}</label>
30 <label for="${hook.ui_key}">${hook.ui_key}</label>
31 </div>
32 <div class="input" style="margin-left:280px">
33 ${h.text(hook.ui_key,hook.ui_value,size=60,readonly="readonly")}
34 </div>
31 </div>
35 </div>
32 <div class="input" style="margin-left:280px">
33 ${h.text(hook.ui_key,hook.ui_value,size=60,readonly="readonly")}
34 </div>
35 </div>
36 % endfor
36 % endfor
37 </div>
37 </div>
38 </div>
38 </div>
39
39
40 <h3>${_('Custom hooks')}</h3>
40 <h3>${_('Custom hooks')}</h3>
41 ${h.form(url('admin_setting', setting_id='hooks'),method='put')}
41 ${h.form(url('admin_setting', setting_id='hooks'),method='put')}
42 <div class="form">
42 <div class="form">
43 <div class="fields">
43 <div class="fields">
44
44
45 % for hook in c.custom_hooks:
45 % for hook in c.custom_hooks:
46 <div class="field" id="${'id%s' % hook.ui_id }">
46 <div class="field" id="${'id%s' % hook.ui_id }">
47 <div class="label label">
47 <div class="label label">
48 <label for="${hook.ui_key}">${hook.ui_key}</label>
48 <label for="${hook.ui_key}">${hook.ui_key}</label>
49 </div>
49 </div>
50 <div class="input" style="margin-left:280px">
50 <div class="input" style="margin-left:280px">
51 ${h.hidden('hook_ui_key',hook.ui_key)}
51 ${h.hidden('hook_ui_key',hook.ui_key)}
52 ${h.hidden('hook_ui_value',hook.ui_value)}
52 ${h.hidden('hook_ui_value',hook.ui_value)}
53 ${h.text('hook_ui_value_new',hook.ui_value,size=60)}
53 ${h.text('hook_ui_value_new',hook.ui_value,size=60)}
54 <span class="delete_icon action_button"
54 <span class="delete_icon action_button"
55 onclick="ajaxActionHook(${hook.ui_id},'${'id%s' % hook.ui_id }')">
55 onclick="ajaxActionHook(${hook.ui_id},'${'id%s' % hook.ui_id }')">
56 ${_('remove')}
56 ${_('remove')}
57 </span>
57 </span>
58 </div>
58 </div>
59 </div>
59 </div>
60 % endfor
60 % endfor
61
61
62 <div class="field">
62 <div class="field">
63 <div class="input" style="margin-left:-180px;position: absolute;">
63 <div class="input" style="margin-left:-180px;position: absolute;">
64 <div class="input">
64 <div class="input">
65 ${h.text('new_hook_ui_key',size=30)}
65 ${h.text('new_hook_ui_key',size=30)}
66 </div>
66 </div>
67 </div>
67 </div>
68 <div class="input" style="margin-left:280px">
68 <div class="input" style="margin-left:280px">
69 ${h.text('new_hook_ui_value',size=60)}
69 ${h.text('new_hook_ui_value',size=60)}
70 </div>
70 </div>
71 </div>
71 </div>
72 <div class="buttons" style="margin-left:280px">
72 <div class="buttons" style="margin-left:280px">
73 ${h.submit('save',_('Save'),class_="ui-btn large")}
73 ${h.submit('save',_('Save'),class_="ui-btn large")}
74 </div>
74 </div>
75 </div>
75 </div>
76 </div>
76 </div>
77 ${h.end_form()}
77 ${h.end_form()}
78 </div>
78 </div>
79 <script type="text/javascript">
79 <script type="text/javascript">
80 function ajaxActionHook(hook_id,field_id) {
80 function ajaxActionHook(hook_id,field_id) {
81 var sUrl = "${h.url('admin_setting', setting_id='hooks')}";
81 var sUrl = "${h.url('admin_setting', setting_id='hooks')}";
82 var callback = {
82 var callback = {
83 success: function (o) {
83 success: function (o) {
84 var elem = YUD.get(""+field_id);
84 var elem = YUD.get(""+field_id);
85 elem.parentNode.removeChild(elem);
85 elem.parentNode.removeChild(elem);
86 },
86 },
87 failure: function (o) {
87 failure: function (o) {
88 alert("${_('Failed to remove hook')}");
88 alert("${_('Failed to remove hook')}");
89 },
89 },
90 };
90 };
91 var postData = '_method=delete&hook_id=' + hook_id;
91 var postData = '_method=delete&hook_id=' + hook_id;
92 var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
92 var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
93 };
93 };
94 </script>
94 </script>
95
95
96 </%def>
96 </%def>
@@ -1,338 +1,338 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 <%inherit file="/base/base.html"/>
2 <%inherit file="/base/base.html"/>
3
3
4 <%def name="title()">
4 <%def name="title()">
5 ${_('Settings administration')} - ${c.rhodecode_name}
5 ${_('Settings administration')} - ${c.rhodecode_name}
6 </%def>
6 </%def>
7
7
8 <%def name="breadcrumbs_links()">
8 <%def name="breadcrumbs_links()">
9 ${h.link_to(_('Admin'),h.url('admin_home'))} &raquo; ${_('Settings')}
9 ${h.link_to(_('Admin'),h.url('admin_home'))} &raquo; ${_('Settings')}
10 </%def>
10 </%def>
11
11
12 <%def name="page_nav()">
12 <%def name="page_nav()">
13 ${self.menu('admin')}
13 ${self.menu('admin')}
14 </%def>
14 </%def>
15
15
16 <%def name="main()">
16 <%def name="main()">
17 <div class="box">
17 <div class="box">
18 <!-- box / title -->
18 <!-- box / title -->
19 <div class="title">
19 <div class="title">
20 ${self.breadcrumbs()}
20 ${self.breadcrumbs()}
21 </div>
21 </div>
22 <!-- end box / title -->
22 <!-- end box / title -->
23
23
24 <h3>${_('Remap and rescan repositories')}</h3>
24 <h3>${_('Remap and rescan repositories')}</h3>
25 ${h.form(url('admin_setting', setting_id='mapping'),method='put')}
25 ${h.form(url('admin_setting', setting_id='mapping'),method='put')}
26 <div class="form">
26 <div class="form">
27 <!-- fields -->
27 <!-- fields -->
28
28
29 <div class="fields">
29 <div class="fields">
30 <div class="field">
30 <div class="field">
31 <div class="label label-checkbox">
31 <div class="label label-checkbox">
32 <label for="destroy">${_('rescan option')}:</label>
32 <label for="destroy">${_('rescan option')}:</label>
33 </div>
33 </div>
34 <div class="checkboxes">
34 <div class="checkboxes">
35 <div class="checkbox">
35 <div class="checkbox">
36 ${h.checkbox('destroy',True)}
36 ${h.checkbox('destroy',True)}
37 <label for="destroy">
37 <label for="destroy">
38 <span class="tooltip" title="${h.tooltip(_('In case a repository was deleted from filesystem and there are leftovers in the database check this option to scan obsolete data in database and remove it.'))}">
38 <span class="tooltip" title="${h.tooltip(_('In case a repository was deleted from filesystem and there are leftovers in the database check this option to scan obsolete data in database and remove it.'))}">
39 ${_('destroy old data')}</span> </label>
39 ${_('destroy old data')}</span> </label>
40 </div>
40 </div>
41 <span class="help-block">${_('Rescan repositories location for new repositories. Also deletes obsolete if `destroy` flag is checked ')}</span>
41 <span class="help-block">${_('Rescan repositories location for new repositories. Also deletes obsolete if `destroy` flag is checked ')}</span>
42 </div>
42 </div>
43 </div>
43 </div>
44
44
45 <div class="buttons">
45 <div class="buttons">
46 ${h.submit('rescan',_('Rescan repositories'),class_="ui-btn large")}
46 ${h.submit('rescan',_('Rescan repositories'),class_="ui-btn large")}
47 </div>
47 </div>
48 </div>
48 </div>
49 </div>
49 </div>
50 ${h.end_form()}
50 ${h.end_form()}
51
51
52 <h3>${_('Whoosh indexing')}</h3>
52 <h3>${_('Whoosh indexing')}</h3>
53 ${h.form(url('admin_setting', setting_id='whoosh'),method='put')}
53 ${h.form(url('admin_setting', setting_id='whoosh'),method='put')}
54 <div class="form">
54 <div class="form">
55 <!-- fields -->
55 <!-- fields -->
56
56
57 <div class="fields">
57 <div class="fields">
58 <div class="field">
58 <div class="field">
59 <div class="label label-checkbox">
59 <div class="label label-checkbox">
60 <label>${_('index build option')}:</label>
60 <label>${_('index build option')}:</label>
61 </div>
61 </div>
62 <div class="checkboxes">
62 <div class="checkboxes">
63 <div class="checkbox">
63 <div class="checkbox">
64 ${h.checkbox('full_index',True)}
64 ${h.checkbox('full_index',True)}
65 <label for="full_index">${_('build from scratch')}</label>
65 <label for="full_index">${_('build from scratch')}</label>
66 </div>
66 </div>
67 </div>
67 </div>
68 </div>
68 </div>
69
69
70 <div class="buttons">
70 <div class="buttons">
71 ${h.submit('reindex',_('Reindex'),class_="ui-btn large")}
71 ${h.submit('reindex',_('Reindex'),class_="ui-btn large")}
72 </div>
72 </div>
73 </div>
73 </div>
74 </div>
74 </div>
75 ${h.end_form()}
75 ${h.end_form()}
76
76
77 <h3>${_('Global application settings')}</h3>
77 <h3>${_('Global application settings')}</h3>
78 ${h.form(url('admin_setting', setting_id='global'),method='put')}
78 ${h.form(url('admin_setting', setting_id='global'),method='put')}
79 <div class="form">
79 <div class="form">
80 <!-- fields -->
80 <!-- fields -->
81
81
82 <div class="fields">
82 <div class="fields">
83
83
84 <div class="field">
84 <div class="field">
85 <div class="label">
85 <div class="label">
86 <label for="rhodecode_title">${_('Application name')}:</label>
86 <label for="rhodecode_title">${_('Application name')}:</label>
87 </div>
87 </div>
88 <div class="input">
88 <div class="input">
89 ${h.text('rhodecode_title',size=30)}
89 ${h.text('rhodecode_title',size=30)}
90 </div>
90 </div>
91 </div>
91 </div>
92
92
93 <div class="field">
93 <div class="field">
94 <div class="label">
94 <div class="label">
95 <label for="rhodecode_realm">${_('Realm text')}:</label>
95 <label for="rhodecode_realm">${_('Realm text')}:</label>
96 </div>
96 </div>
97 <div class="input">
97 <div class="input">
98 ${h.text('rhodecode_realm',size=30)}
98 ${h.text('rhodecode_realm',size=30)}
99 </div>
99 </div>
100 </div>
100 </div>
101
101
102 <div class="field">
102 <div class="field">
103 <div class="label">
103 <div class="label">
104 <label for="rhodecode_ga_code">${_('GA code')}:</label>
104 <label for="rhodecode_ga_code">${_('GA code')}:</label>
105 </div>
105 </div>
106 <div class="input">
106 <div class="input">
107 ${h.text('rhodecode_ga_code',size=30)}
107 ${h.text('rhodecode_ga_code',size=30)}
108 </div>
108 </div>
109 </div>
109 </div>
110
110
111 <div class="buttons">
111 <div class="buttons">
112 ${h.submit('save',_('Save settings'),class_="ui-btn large")}
112 ${h.submit('save',_('Save settings'),class_="ui-btn large")}
113 ${h.reset('reset',_('Reset'),class_="ui-btn large")}
113 ${h.reset('reset',_('Reset'),class_="ui-btn large")}
114 </div>
114 </div>
115 </div>
115 </div>
116 </div>
116 </div>
117 ${h.end_form()}
117 ${h.end_form()}
118
118
119 <h3>${_('Visualisation settings')}</h3>
119 <h3>${_('Visualisation settings')}</h3>
120 ${h.form(url('admin_setting', setting_id='visual'),method='put')}
120 ${h.form(url('admin_setting', setting_id='visual'),method='put')}
121 <div class="form">
121 <div class="form">
122 <!-- fields -->
122 <!-- fields -->
123
123
124 <div class="fields">
124 <div class="fields">
125 <div class="field">
125 <div class="field">
126 <div class="label label-checkbox">
126 <div class="label label-checkbox">
127 <label>${_('General')}:</label>
127 <label>${_('General')}:</label>
128 </div>
128 </div>
129 <div class="checkboxes">
129 <div class="checkboxes">
130 <div class="checkbox">
130 <div class="checkbox">
131 ${h.checkbox('rhodecode_lightweight_dashboard','True')}
131 ${h.checkbox('rhodecode_lightweight_dashboard','True')}
132 <label for="rhodecode_lightweight_dashboard">${_('Use lightweight dashboard')}</label>
132 <label for="rhodecode_lightweight_dashboard">${_('Use lightweight dashboard')}</label>
133 </div>
133 </div>
134 </div>
134 </div>
135 </div>
135 </div>
136
136
137 <div class="field">
137 <div class="field">
138 <div class="label label-checkbox">
138 <div class="label label-checkbox">
139 <label>${_('Icons')}:</label>
139 <label>${_('Icons')}:</label>
140 </div>
140 </div>
141 <div class="checkboxes">
141 <div class="checkboxes">
142 <div class="checkbox">
142 <div class="checkbox">
143 ${h.checkbox('rhodecode_show_public_icon','True')}
143 ${h.checkbox('rhodecode_show_public_icon','True')}
144 <label for="rhodecode_show_public_icon">${_('Show public repo icon on repositories')}</label>
144 <label for="rhodecode_show_public_icon">${_('Show public repo icon on repositories')}</label>
145 </div>
145 </div>
146 <div class="checkbox">
146 <div class="checkbox">
147 ${h.checkbox('rhodecode_show_private_icon','True')}
147 ${h.checkbox('rhodecode_show_private_icon','True')}
148 <label for="rhodecode_show_private_icon">${_('Show private repo icon on repositories')}</label>
148 <label for="rhodecode_show_private_icon">${_('Show private repo icon on repositories')}</label>
149 </div>
149 </div>
150 </div>
150 </div>
151 </div>
151 </div>
152
152
153 <div class="field">
153 <div class="field">
154 <div class="label label-checkbox">
154 <div class="label label-checkbox">
155 <label>${_('Meta-Tagging')}:</label>
155 <label>${_('Meta-Tagging')}:</label>
156 </div>
156 </div>
157 <div class="checkboxes">
157 <div class="checkboxes">
158 <div class="checkbox">
158 <div class="checkbox">
159 ${h.checkbox('rhodecode_stylify_metatags','True')}
159 ${h.checkbox('rhodecode_stylify_metatags','True')}
160 <label for="rhodecode_stylify_metatags">${_('Stylify recognised metatags:')}</label>
160 <label for="rhodecode_stylify_metatags">${_('Stylify recognised metatags:')}</label>
161 </div>
161 </div>
162 <div style="padding-left: 20px;">
162 <div style="padding-left: 20px;">
163 <ul> <!-- Fix style here -->
163 <ul> <!-- Fix style here -->
164 <li>[featured] <span class="metatag" tag="featured">featured</span></li>
164 <li>[featured] <span class="metatag" tag="featured">featured</span></li>
165 <li>[stale] <span class="metatag" tag="stale">stale</span></li>
165 <li>[stale] <span class="metatag" tag="stale">stale</span></li>
166 <li>[dead] <span class="metatag" tag="dead">dead</span></li>
166 <li>[dead] <span class="metatag" tag="dead">dead</span></li>
167 <li>[lang =&gt; lang] <span class="metatag" tag="lang" >lang</span></li>
167 <li>[lang =&gt; lang] <span class="metatag" tag="lang" >lang</span></li>
168 <li>[license =&gt; License] <span class="metatag" tag="license"><a href="http://www.opensource.org/licenses/License" >License</a></span></li>
168 <li>[license =&gt; License] <span class="metatag" tag="license"><a href="http://www.opensource.org/licenses/License" >License</a></span></li>
169 <li>[requires =&gt; Repo] <span class="metatag" tag="requires" >requires =&gt; <a href="#" >Repo</a></span></li>
169 <li>[requires =&gt; Repo] <span class="metatag" tag="requires" >requires =&gt; <a href="#" >Repo</a></span></li>
170 <li>[recommends =&gt; Repo] <span class="metatag" tag="recommends" >recommends =&gt; <a href="#" >Repo</a></span></li>
170 <li>[recommends =&gt; Repo] <span class="metatag" tag="recommends" >recommends =&gt; <a href="#" >Repo</a></span></li>
171 <li>[see =&gt; URI] <span class="metatag" tag="see">see =&gt; <a href="#">URI</a> </span></li>
171 <li>[see =&gt; URI] <span class="metatag" tag="see">see =&gt; <a href="#">URI</a> </span></li>
172 </ul>
172 </ul>
173 </div>
173 </div>
174 </div>
174 </div>
175 </div>
175 </div>
176
176
177 <div class="buttons">
177 <div class="buttons">
178 ${h.submit('save',_('Save settings'),class_="ui-btn large")}
178 ${h.submit('save',_('Save settings'),class_="ui-btn large")}
179 ${h.reset('reset',_('Reset'),class_="ui-btn large")}
179 ${h.reset('reset',_('Reset'),class_="ui-btn large")}
180 </div>
180 </div>
181
181
182 </div>
182 </div>
183 </div>
183 </div>
184 ${h.end_form()}
184 ${h.end_form()}
185
185
186
186
187 <h3>${_('VCS settings')}</h3>
187 <h3>${_('VCS settings')}</h3>
188 ${h.form(url('admin_setting', setting_id='vcs'),method='put')}
188 ${h.form(url('admin_setting', setting_id='vcs'),method='put')}
189 <div class="form">
189 <div class="form">
190 <!-- fields -->
190 <!-- fields -->
191
191
192 <div class="fields">
192 <div class="fields">
193
193
194 <div class="field">
194 <div class="field">
195 <div class="label label-checkbox">
195 <div class="label label-checkbox">
196 <label>${_('Web')}:</label>
196 <label>${_('Web')}:</label>
197 </div>
197 </div>
198 <div class="checkboxes">
198 <div class="checkboxes">
199 <div class="checkbox">
199 <div class="checkbox">
200 ${h.checkbox('web_push_ssl', 'True')}
200 ${h.checkbox('web_push_ssl', 'True')}
201 <label for="web_push_ssl">${_('require ssl for vcs operations')}</label>
201 <label for="web_push_ssl">${_('require ssl for vcs operations')}</label>
202 </div>
202 </div>
203 <span class="help-block">${_('RhodeCode will require SSL for pushing or pulling. If SSL is missing it will return HTTP Error 406: Not Acceptable')}</span>
203 <span class="help-block">${_('RhodeCode will require SSL for pushing or pulling. If SSL is missing it will return HTTP Error 406: Not Acceptable')}</span>
204 </div>
204 </div>
205 </div>
205 </div>
206
206
207 <div class="field">
207 <div class="field">
208 <div class="label label-checkbox">
208 <div class="label label-checkbox">
209 <label>${_('Hooks')}:</label>
209 <label>${_('Hooks')}:</label>
210 </div>
210 </div>
211 <div class="checkboxes">
211 <div class="checkboxes">
212 <div class="checkbox">
212 <div class="checkbox">
213 ${h.checkbox('hooks_changegroup_update','True')}
213 ${h.checkbox('hooks_changegroup_update','True')}
214 <label for="hooks_changegroup_update">${_('Update repository after push (hg update)')}</label>
214 <label for="hooks_changegroup_update">${_('Update repository after push (hg update)')}</label>
215 </div>
215 </div>
216 <div class="checkbox">
216 <div class="checkbox">
217 ${h.checkbox('hooks_changegroup_repo_size','True')}
217 ${h.checkbox('hooks_changegroup_repo_size','True')}
218 <label for="hooks_changegroup_repo_size">${_('Show repository size after push')}</label>
218 <label for="hooks_changegroup_repo_size">${_('Show repository size after push')}</label>
219 </div>
219 </div>
220 <div class="checkbox">
220 <div class="checkbox">
221 ${h.checkbox('hooks_changegroup_push_logger','True')}
221 ${h.checkbox('hooks_changegroup_push_logger','True')}
222 <label for="hooks_changegroup_push_logger">${_('Log user push commands')}</label>
222 <label for="hooks_changegroup_push_logger">${_('Log user push commands')}</label>
223 </div>
223 </div>
224 <div class="checkbox">
224 <div class="checkbox">
225 ${h.checkbox('hooks_outgoing_pull_logger','True')}
225 ${h.checkbox('hooks_outgoing_pull_logger','True')}
226 <label for="hooks_outgoing_pull_logger">${_('Log user pull commands')}</label>
226 <label for="hooks_outgoing_pull_logger">${_('Log user pull commands')}</label>
227 </div>
227 </div>
228 </div>
228 </div>
229 <div class="input" style="margin-top:10px">
229 <div class="input" style="margin-top:10px">
230 ${h.link_to(_('advanced setup'),url('admin_edit_setting',setting_id='hooks'),class_="ui-btn")}
230 ${h.link_to(_('advanced setup'),url('admin_edit_setting',setting_id='hooks'),class_="ui-btn")}
231 </div>
231 </div>
232 </div>
232 </div>
233 <div class="field">
233 <div class="field">
234 <div class="label label-checkbox">
234 <div class="label label-checkbox">
235 <label>${_('Mercurial Extensions')}:</label>
235 <label>${_('Mercurial Extensions')}:</label>
236 </div>
236 </div>
237 <div class="checkboxes">
237 <div class="checkboxes">
238 <div class="checkbox">
238 <div class="checkbox">
239 ${h.checkbox('extensions_largefiles','True')}
239 ${h.checkbox('extensions_largefiles','True')}
240 <label for="extensions_hgsubversion">${_('largefiles extensions')}</label>
240 <label for="extensions_hgsubversion">${_('largefiles extensions')}</label>
241 </div>
241 </div>
242 <div class="checkbox">
242 <div class="checkbox">
243 ${h.checkbox('extensions_hgsubversion','True')}
243 ${h.checkbox('extensions_hgsubversion','True')}
244 <label for="extensions_hgsubversion">${_('hgsubversion extensions')}</label>
244 <label for="extensions_hgsubversion">${_('hgsubversion extensions')}</label>
245 </div>
245 </div>
246 <span class="help-block">${_('Requires hgsubversion library installed. Allows clonning from svn remote locations')}</span>
246 <span class="help-block">${_('Requires hgsubversion library installed. Allows clonning from svn remote locations')}</span>
247 ##<div class="checkbox">
247 ##<div class="checkbox">
248 ## ${h.checkbox('extensions_hggit','True')}
248 ## ${h.checkbox('extensions_hggit','True')}
249 ## <label for="extensions_hggit">${_('hg-git extensions')}</label>
249 ## <label for="extensions_hggit">${_('hg-git extensions')}</label>
250 ##</div>
250 ##</div>
251 ##<span class="help-block">${_('Requires hg-git library installed. Allows clonning from git remote locations')}</span>
251 ##<span class="help-block">${_('Requires hg-git library installed. Allows clonning from git remote locations')}</span>
252 </div>
252 </div>
253 </div>
253 </div>
254 <div class="field">
254 <div class="field">
255 <div class="label">
255 <div class="label">
256 <label for="paths_root_path">${_('Repositories location')}:</label>
256 <label for="paths_root_path">${_('Repositories location')}:</label>
257 </div>
257 </div>
258 <div class="input">
258 <div class="input">
259 ${h.text('paths_root_path',size=30,readonly="readonly")}
259 ${h.text('paths_root_path',size=30,readonly="readonly")}
260 <span id="path_unlock" class="tooltip"
260 <span id="path_unlock" class="tooltip"
261 title="${h.tooltip(_('This a crucial application setting. If you are really sure you need to change this, you must restart application in order to make this setting take effect. Click this label to unlock.'))}">
261 title="${h.tooltip(_('This a crucial application setting. If you are really sure you need to change this, you must restart application in order to make this setting take effect. Click this label to unlock.'))}">
262 ${_('unlock')}</span>
262 ${_('unlock')}</span>
263 <span class="help-block">${_('Location where repositories are stored. After changing this value a restart, and rescan is required')}</span>
263 <span class="help-block">${_('Location where repositories are stored. After changing this value a restart, and rescan is required')}</span>
264 </div>
264 </div>
265 </div>
265 </div>
266
266
267 <div class="buttons">
267 <div class="buttons">
268 ${h.submit('save',_('Save settings'),class_="ui-btn large")}
268 ${h.submit('save',_('Save settings'),class_="ui-btn large")}
269 ${h.reset('reset',_('Reset'),class_="ui-btn large")}
269 ${h.reset('reset',_('Reset'),class_="ui-btn large")}
270 </div>
270 </div>
271 </div>
271 </div>
272 </div>
272 </div>
273 ${h.end_form()}
273 ${h.end_form()}
274
274
275 <script type="text/javascript">
275 <script type="text/javascript">
276 YAHOO.util.Event.onDOMReady(function(){
276 YAHOO.util.Event.onDOMReady(function(){
277 YAHOO.util.Event.addListener('path_unlock','click',function(){
277 YAHOO.util.Event.addListener('path_unlock','click',function(){
278 YAHOO.util.Dom.get('paths_root_path').removeAttribute('readonly');
278 YAHOO.util.Dom.get('paths_root_path').removeAttribute('readonly');
279 });
279 });
280 });
280 });
281 </script>
281 </script>
282
282
283 <h3>${_('Test Email')}</h3>
283 <h3>${_('Test Email')}</h3>
284 ${h.form(url('admin_setting', setting_id='email'),method='put')}
284 ${h.form(url('admin_setting', setting_id='email'),method='put')}
285 <div class="form">
285 <div class="form">
286 <!-- fields -->
286 <!-- fields -->
287
287
288 <div class="fields">
288 <div class="fields">
289 <div class="field">
289 <div class="field">
290 <div class="label">
290 <div class="label">
291 <label for="test_email">${_('Email to')}:</label>
291 <label for="test_email">${_('Email to')}:</label>
292 </div>
292 </div>
293 <div class="input">
293 <div class="input">
294 ${h.text('test_email',size=30)}
294 ${h.text('test_email',size=30)}
295 </div>
295 </div>
296 </div>
296 </div>
297
297
298 <div class="buttons">
298 <div class="buttons">
299 ${h.submit('send',_('Send'),class_="ui-btn large")}
299 ${h.submit('send',_('Send'),class_="ui-btn large")}
300 </div>
300 </div>
301 </div>
301 </div>
302 </div>
302 </div>
303 ${h.end_form()}
303 ${h.end_form()}
304
304
305 <h3>${_('System Info and Packages')}</h3>
305 <h3>${_('System Info and Packages')}</h3>
306 <div class="form">
306 <div class="form">
307 <div>
307 <div>
308 <h5 id="expand_modules" style="cursor: pointer">&darr; ${_('show')} &darr;</h5>
308 <h5 id="expand_modules" style="cursor: pointer">&darr; ${_('show')} &darr;</h5>
309 </div>
309 </div>
310 <div id="expand_modules_table" style="display:none">
310 <div id="expand_modules_table" style="display:none">
311 <h5>Python - ${c.py_version}</h5>
311 <h5>Python - ${c.py_version}</h5>
312 <h5>System - ${c.platform}</h5>
312 <h5>System - ${c.platform}</h5>
313
313
314 <table class="table" style="margin:0px 0px 0px 20px">
314 <table class="table" style="margin:0px 0px 0px 20px">
315 <colgroup>
315 <colgroup>
316 <col style="width:220px">
316 <col style="width:220px">
317 </colgroup>
317 </colgroup>
318 <tbody>
318 <tbody>
319 %for key, value in c.modules:
319 %for key, value in c.modules:
320 <tr>
320 <tr>
321 <th style="text-align: right;padding-right:5px;">${key}</th>
321 <th style="text-align: right;padding-right:5px;">${key}</th>
322 <td>${value}</td>
322 <td>${value}</td>
323 </tr>
323 </tr>
324 %endfor
324 %endfor
325 </tbody>
325 </tbody>
326 </table>
326 </table>
327 </div>
327 </div>
328 </div>
328 </div>
329
329
330 <script type="text/javascript">
330 <script type="text/javascript">
331 YUE.on('expand_modules','click',function(e){
331 YUE.on('expand_modules','click',function(e){
332 YUD.setStyle('expand_modules_table','display','');
332 YUD.setStyle('expand_modules_table','display','');
333 YUD.setStyle('expand_modules','display','none');
333 YUD.setStyle('expand_modules','display','none');
334 })
334 })
335 </script>
335 </script>
336
336
337 </div>
337 </div>
338 </%def>
338 </%def>
@@ -1,280 +1,280 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 <%inherit file="/base/base.html"/>
2 <%inherit file="/base/base.html"/>
3
3
4 <%def name="title()">
4 <%def name="title()">
5 ${_('My account')} ${c.rhodecode_user.username} - ${c.rhodecode_name}
5 ${_('My account')} ${c.rhodecode_user.username} - ${c.rhodecode_name}
6 </%def>
6 </%def>
7
7
8 <%def name="breadcrumbs_links()">
8 <%def name="breadcrumbs_links()">
9 ${_('My Account')}
9 ${_('My Account')}
10 </%def>
10 </%def>
11
11
12 <%def name="page_nav()">
12 <%def name="page_nav()">
13 ${self.menu('admin')}
13 ${self.menu('admin')}
14 </%def>
14 </%def>
15
15
16 <%def name="main()">
16 <%def name="main()">
17
17
18 <div class="box box-left">
18 <div class="box box-left">
19 <!-- box / title -->
19 <!-- box / title -->
20 <div class="title">
20 <div class="title">
21 ${self.breadcrumbs()}
21 ${self.breadcrumbs()}
22 </div>
22 </div>
23 <!-- end box / title -->
23 <!-- end box / title -->
24 ${c.form|n}
24 ${c.form|n}
25 </div>
25 </div>
26
26
27 <div class="box box-right">
27 <div class="box box-right">
28 <!-- box / title -->
28 <!-- box / title -->
29 <div class="title">
29 <div class="title">
30 <h5>
30 <h5>
31 <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" value="${_('quick filter...')}" style="display: none"/>
31 <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" value="${_('quick filter...')}" style="display: none"/>
32 </h5>
32 </h5>
33 <ul class="links" style="color:#DADADA">
33 <ul class="links" style="color:#DADADA">
34 <li>
34 <li>
35 <span><a id="show_perms" class="link-white current" href="#perms">${_('My permissions')}</a> </span>
35 <span><a id="show_perms" class="link-white current" href="#perms">${_('My permissions')}</a> </span>
36 </li>
36 </li>
37 <li>
37 <li>
38 <span><a id="show_my" class="link-white" href="#my">${_('My repos')}</a> </span>
38 <span><a id="show_my" class="link-white" href="#my">${_('My repos')}</a> </span>
39 </li>
39 </li>
40 <li>
40 <li>
41 <span><a id="show_pullrequests" class="link-white" href="#pullrequests">${_('My pull requests')}</a> </span>
41 <span><a id="show_pullrequests" class="link-white" href="#pullrequests">${_('My pull requests')}</a> </span>
42 </li>
42 </li>
43 %if h.HasPermissionAny('hg.admin','hg.create.repository')():
43 %if h.HasPermissionAny('hg.admin','hg.create.repository')():
44 <li>
44 <li>
45 <span>${h.link_to(_('Add repo'),h.url('admin_settings_create_repository'))}</span>
45 <span>${h.link_to(_('Add repo'),h.url('admin_settings_create_repository'))}</span>
46 </li>
46 </li>
47 %endif
47 %endif
48 </ul>
48 </ul>
49 </div>
49 </div>
50 <!-- end box / title -->
50 <!-- end box / title -->
51 <div id="perms_container">
51 <div id="perms_container">
52 <div id="perms" class="table">
52 <div id="perms" class="table">
53 %for section in sorted(c.rhodecode_user.permissions.keys()):
53 %for section in sorted(c.rhodecode_user.permissions.keys()):
54 <div class="perms_section_head">${section.replace("_"," ").capitalize()}</div>
54 <div class="perms_section_head">${section.replace("_"," ").capitalize()}</div>
55
55
56 <div id='tbl_list_wrap_${section}' class="yui-skin-sam">
56 <div id='tbl_list_wrap_${section}' class="yui-skin-sam">
57 <table id="tbl_list_${section}">
57 <table id="tbl_list_${section}">
58 <thead>
58 <thead>
59 <tr>
59 <tr>
60 <th class="left">${_('Name')}</th>
60 <th class="left">${_('Name')}</th>
61 <th class="left">${_('Permission')}</th>
61 <th class="left">${_('Permission')}</th>
62 </thead>
62 </thead>
63 <tbody>
63 <tbody>
64 %for k in c.rhodecode_user.permissions[section]:
64 %for k in c.rhodecode_user.permissions[section]:
65 <%
65 <%
66 if section != 'global':
66 if section != 'global':
67 section_perm = c.rhodecode_user.permissions[section].get(k)
67 section_perm = c.rhodecode_user.permissions[section].get(k)
68 _perm = section_perm.split('.')[-1]
68 _perm = section_perm.split('.')[-1]
69 else:
69 else:
70 _perm = section_perm = None
70 _perm = section_perm = None
71 %>
71 %>
72 %if _perm not in ['none']:
72 %if _perm not in ['none']:
73 <tr>
73 <tr>
74 <td>
74 <td>
75 %if section == 'repositories':
75 %if section == 'repositories':
76 <a href="${h.url('summary_home',repo_name=k)}">${k}</a>
76 <a href="${h.url('summary_home',repo_name=k)}">${k}</a>
77 %elif section == 'repositories_groups':
77 %elif section == 'repositories_groups':
78 <a href="${h.url('repos_group_home',group_name=k)}">${k}</a>
78 <a href="${h.url('repos_group_home',group_name=k)}">${k}</a>
79 %else:
79 %else:
80 ${k}
80 ${k}
81 %endif
81 %endif
82 </td>
82 </td>
83 <td>
83 <td>
84 %if section == 'global':
84 %if section == 'global':
85 ${h.bool2icon(True)}
85 ${h.bool2icon(True)}
86 %else:
86 %else:
87 <span class="perm_tag ${_perm}">${section_perm}</span>
87 <span class="perm_tag ${_perm}">${section_perm}</span>
88 %endif
88 %endif
89 </td>
89 </td>
90 </tr>
90 </tr>
91 %endif
91 %endif
92 %endfor
92 %endfor
93 </tbody>
93 </tbody>
94 </table>
94 </table>
95 </div>
95 </div>
96 %endfor
96 %endfor
97 </div>
97 </div>
98 </div>
98 </div>
99 <div id="my_container" style="display:none">
99 <div id="my_container" style="display:none">
100 <div class="table yui-skin-sam" id="repos_list_wrap"></div>
100 <div class="table yui-skin-sam" id="repos_list_wrap"></div>
101 <div id="user-paginator" style="padding: 0px 0px 0px 20px"></div>
101 <div id="user-paginator" style="padding: 0px 0px 0px 20px"></div>
102 </div>
102 </div>
103 <div id="pullrequests_container" class="table" style="display:none">
103 <div id="pullrequests_container" class="table" style="display:none">
104 ## loaded via AJAX
104 ## loaded via AJAX
105 ${_('Loading...')}
105 ${_('Loading...')}
106 </div>
106 </div>
107 </div>
107 </div>
108
108
109 <script type="text/javascript">
109 <script type="text/javascript">
110
110
111 var show_perms = function(e){
111 var show_perms = function(e){
112 YUD.addClass('show_perms', 'current');
112 YUD.addClass('show_perms', 'current');
113 YUD.removeClass('show_my','current');
113 YUD.removeClass('show_my','current');
114 YUD.removeClass('show_pullrequests','current');
114 YUD.removeClass('show_pullrequests','current');
115
115
116 YUD.setStyle('my_container','display','none');
116 YUD.setStyle('my_container','display','none');
117 YUD.setStyle('pullrequests_container','display','none');
117 YUD.setStyle('pullrequests_container','display','none');
118 YUD.setStyle('perms_container','display','');
118 YUD.setStyle('perms_container','display','');
119 YUD.setStyle('q_filter','display','none');
119 YUD.setStyle('q_filter','display','none');
120 }
120 }
121 YUE.on('show_perms','click',function(e){
121 YUE.on('show_perms','click',function(e){
122 show_perms();
122 show_perms();
123 })
123 })
124
124
125 var show_my = function(e){
125 var show_my = function(e){
126 YUD.addClass('show_my', 'current');
126 YUD.addClass('show_my', 'current');
127 YUD.removeClass('show_perms','current');
127 YUD.removeClass('show_perms','current');
128 YUD.removeClass('show_pullrequests','current');
128 YUD.removeClass('show_pullrequests','current');
129
129
130 YUD.setStyle('perms_container','display','none');
130 YUD.setStyle('perms_container','display','none');
131 YUD.setStyle('pullrequests_container','display','none');
131 YUD.setStyle('pullrequests_container','display','none');
132 YUD.setStyle('my_container','display','');
132 YUD.setStyle('my_container','display','');
133 YUD.setStyle('q_filter','display','');
133 YUD.setStyle('q_filter','display','');
134 if(!YUD.hasClass('show_my', 'loaded')){
134 if(!YUD.hasClass('show_my', 'loaded')){
135 table_renderer(${c.data |n});
135 table_renderer(${c.data |n});
136 YUD.addClass('show_my', 'loaded');
136 YUD.addClass('show_my', 'loaded');
137 }
137 }
138 }
138 }
139 YUE.on('show_my','click',function(e){
139 YUE.on('show_my','click',function(e){
140 show_my(e);
140 show_my(e);
141 })
141 })
142
142
143 var show_pullrequests = function(e){
143 var show_pullrequests = function(e){
144 YUD.addClass('show_pullrequests', 'current');
144 YUD.addClass('show_pullrequests', 'current');
145 YUD.removeClass('show_my','current');
145 YUD.removeClass('show_my','current');
146 YUD.removeClass('show_perms','current');
146 YUD.removeClass('show_perms','current');
147
147
148 YUD.setStyle('my_container','display','none');
148 YUD.setStyle('my_container','display','none');
149 YUD.setStyle('perms_container','display','none');
149 YUD.setStyle('perms_container','display','none');
150 YUD.setStyle('pullrequests_container','display','');
150 YUD.setStyle('pullrequests_container','display','');
151 YUD.setStyle('q_filter','display','none');
151 YUD.setStyle('q_filter','display','none');
152
152
153 var url = "${h.url('admin_settings_my_pullrequests')}";
153 var url = "${h.url('admin_settings_my_pullrequests')}";
154 ypjax(url, 'pullrequests_container');
154 ypjax(url, 'pullrequests_container');
155 }
155 }
156 YUE.on('show_pullrequests','click',function(e){
156 YUE.on('show_pullrequests','click',function(e){
157 show_pullrequests(e)
157 show_pullrequests(e)
158 })
158 })
159
159
160 var tabs = {
160 var tabs = {
161 'perms': show_perms,
161 'perms': show_perms,
162 'my': show_my,
162 'my': show_my,
163 'pullrequests': show_pullrequests
163 'pullrequests': show_pullrequests
164 }
164 }
165 var url = location.href.split('#');
165 var url = location.href.split('#');
166 if (url[1]) {
166 if (url[1]) {
167 //We have a hash
167 //We have a hash
168 var tabHash = url[1];
168 var tabHash = url[1];
169 var func = tabs[tabHash]
169 var func = tabs[tabHash]
170 if (func){
170 if (func){
171 func();
171 func();
172 }
172 }
173 }
173 }
174
174
175 function table_renderer(data){
175 function table_renderer(data){
176 var myDataSource = new YAHOO.util.DataSource(data);
176 var myDataSource = new YAHOO.util.DataSource(data);
177 myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
177 myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
178
178
179 myDataSource.responseSchema = {
179 myDataSource.responseSchema = {
180 resultsList: "records",
180 resultsList: "records",
181 fields: [
181 fields: [
182 {key:"menu"},
182 {key:"menu"},
183 {key:"raw_name"},
183 {key:"raw_name"},
184 {key:"name"},
184 {key:"name"},
185 {key:"last_changeset"},
185 {key:"last_changeset"},
186 {key:"action"},
186 {key:"action"},
187 ]
187 ]
188 };
188 };
189 myDataSource.doBeforeCallback = function(req,raw,res,cb) {
189 myDataSource.doBeforeCallback = function(req,raw,res,cb) {
190 // This is the filter function
190 // This is the filter function
191 var data = res.results || [],
191 var data = res.results || [],
192 filtered = [],
192 filtered = [],
193 i,l;
193 i,l;
194
194
195 if (req) {
195 if (req) {
196 req = req.toLowerCase();
196 req = req.toLowerCase();
197 for (i = 0; i<data.length; i++) {
197 for (i = 0; i<data.length; i++) {
198 var pos = data[i].raw_name.toLowerCase().indexOf(req)
198 var pos = data[i].raw_name.toLowerCase().indexOf(req)
199 if (pos != -1) {
199 if (pos != -1) {
200 filtered.push(data[i]);
200 filtered.push(data[i]);
201 }
201 }
202 }
202 }
203 res.results = filtered;
203 res.results = filtered;
204 }
204 }
205 return res;
205 return res;
206 }
206 }
207
207
208 // main table sorting
208 // main table sorting
209 var myColumnDefs = [
209 var myColumnDefs = [
210 {key:"menu",label:"",sortable:false,className:"quick_repo_menu hidden"},
210 {key:"menu",label:"",sortable:false,className:"quick_repo_menu hidden"},
211 {key:"name",label:"${_('Name')}",sortable:true,
211 {key:"name",label:"${_('Name')}",sortable:true,
212 sortOptions: { sortFunction: nameSort }},
212 sortOptions: { sortFunction: nameSort }},
213 {key:"last_changeset",label:"${_('Tip')}",sortable:true,
213 {key:"last_changeset",label:"${_('Tip')}",sortable:true,
214 sortOptions: { sortFunction: revisionSort }},
214 sortOptions: { sortFunction: revisionSort }},
215 {key:"action",label:"${_('Action')}",sortable:false},
215 {key:"action",label:"${_('Action')}",sortable:false},
216 ];
216 ];
217
217
218 var myDataTable = new YAHOO.widget.DataTable("repos_list_wrap", myColumnDefs, myDataSource,{
218 var myDataTable = new YAHOO.widget.DataTable("repos_list_wrap", myColumnDefs, myDataSource,{
219 sortedBy:{key:"name",dir:"asc"},
219 sortedBy:{key:"name",dir:"asc"},
220 paginator: new YAHOO.widget.Paginator({
220 paginator: new YAHOO.widget.Paginator({
221 rowsPerPage: 50,
221 rowsPerPage: 50,
222 alwaysVisible: false,
222 alwaysVisible: false,
223 template : "{PreviousPageLink} {FirstPageLink} {PageLinks} {LastPageLink} {NextPageLink}",
223 template : "{PreviousPageLink} {FirstPageLink} {PageLinks} {LastPageLink} {NextPageLink}",
224 pageLinks: 5,
224 pageLinks: 5,
225 containerClass: 'pagination-wh',
225 containerClass: 'pagination-wh',
226 currentPageClass: 'pager_curpage',
226 currentPageClass: 'pager_curpage',
227 pageLinkClass: 'pager_link',
227 pageLinkClass: 'pager_link',
228 nextPageLinkLabel: '&gt;',
228 nextPageLinkLabel: '&gt;',
229 previousPageLinkLabel: '&lt;',
229 previousPageLinkLabel: '&lt;',
230 firstPageLinkLabel: '&lt;&lt;',
230 firstPageLinkLabel: '&lt;&lt;',
231 lastPageLinkLabel: '&gt;&gt;',
231 lastPageLinkLabel: '&gt;&gt;',
232 containers:['user-paginator']
232 containers:['user-paginator']
233 }),
233 }),
234
234
235 MSG_SORTASC:"${_('Click to sort ascending')}",
235 MSG_SORTASC:"${_('Click to sort ascending')}",
236 MSG_SORTDESC:"${_('Click to sort descending')}",
236 MSG_SORTDESC:"${_('Click to sort descending')}",
237 MSG_EMPTY:"${_('No records found.')}",
237 MSG_EMPTY:"${_('No records found.')}",
238 MSG_ERROR:"${_('Data error.')}",
238 MSG_ERROR:"${_('Data error.')}",
239 MSG_LOADING:"${_('Loading...')}",
239 MSG_LOADING:"${_('Loading...')}",
240 }
240 }
241 );
241 );
242 myDataTable.subscribe('postRenderEvent',function(oArgs) {
242 myDataTable.subscribe('postRenderEvent',function(oArgs) {
243 tooltip_activate();
243 tooltip_activate();
244 quick_repo_menu();
244 quick_repo_menu();
245 });
245 });
246
246
247 var filterTimeout = null;
247 var filterTimeout = null;
248
248
249 updateFilter = function() {
249 updateFilter = function() {
250 // Reset timeout
250 // Reset timeout
251 filterTimeout = null;
251 filterTimeout = null;
252
252
253 // Reset sort
253 // Reset sort
254 var state = myDataTable.getState();
254 var state = myDataTable.getState();
255 state.sortedBy = {key:'name', dir:YAHOO.widget.DataTable.CLASS_ASC};
255 state.sortedBy = {key:'name', dir:YAHOO.widget.DataTable.CLASS_ASC};
256
256
257 // Get filtered data
257 // Get filtered data
258 myDataSource.sendRequest(YUD.get('q_filter').value,{
258 myDataSource.sendRequest(YUD.get('q_filter').value,{
259 success : myDataTable.onDataReturnInitializeTable,
259 success : myDataTable.onDataReturnInitializeTable,
260 failure : myDataTable.onDataReturnInitializeTable,
260 failure : myDataTable.onDataReturnInitializeTable,
261 scope : myDataTable,
261 scope : myDataTable,
262 argument: state
262 argument: state
263 });
263 });
264
264
265 };
265 };
266 YUE.on('q_filter','click',function(){
266 YUE.on('q_filter','click',function(){
267 if(!YUD.hasClass('q_filter', 'loaded')){
267 if(!YUD.hasClass('q_filter', 'loaded')){
268 YUD.get('q_filter').value = '';
268 YUD.get('q_filter').value = '';
269 //TODO: load here full list later to do search within groups
269 //TODO: load here full list later to do search within groups
270 YUD.addClass('q_filter', 'loaded');
270 YUD.addClass('q_filter', 'loaded');
271 }
271 }
272 });
272 });
273
273
274 YUE.on('q_filter','keyup',function (e) {
274 YUE.on('q_filter','keyup',function (e) {
275 clearTimeout(filterTimeout);
275 clearTimeout(filterTimeout);
276 filterTimeout = setTimeout(updateFilter,600);
276 filterTimeout = setTimeout(updateFilter,600);
277 });
277 });
278 }
278 }
279 </script>
279 </script>
280 </%def>
280 </%def>
@@ -1,362 +1,362 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 <%inherit file="root.html"/>
2 <%inherit file="root.html"/>
3
3
4 <!-- HEADER -->
4 <!-- HEADER -->
5 <div id="header">
5 <div id="header">
6 <div id="header-inner" class="title hover">
6 <div id="header-inner" class="title hover">
7 <div id="logo">
7 <div id="logo">
8 <h1><a href="${h.url('home')}">${c.rhodecode_name}</a></h1>
8 <h1><a href="${h.url('home')}">${c.rhodecode_name}</a></h1>
9 </div>
9 </div>
10 <!-- MENU -->
10 <!-- MENU -->
11 ${self.page_nav()}
11 ${self.page_nav()}
12 <!-- END MENU -->
12 <!-- END MENU -->
13 ${self.body()}
13 ${self.body()}
14 </div>
14 </div>
15 </div>
15 </div>
16 <!-- END HEADER -->
16 <!-- END HEADER -->
17
17
18 <!-- CONTENT -->
18 <!-- CONTENT -->
19 <div id="content">
19 <div id="content">
20 <div class="flash_msg">
20 <div class="flash_msg">
21 <% messages = h.flash.pop_messages() %>
21 <% messages = h.flash.pop_messages() %>
22 % if messages:
22 % if messages:
23 <ul id="flash-messages">
23 <ul id="flash-messages">
24 % for message in messages:
24 % for message in messages:
25 <li class="${message.category}_msg">${message}</li>
25 <li class="${message.category}_msg">${message}</li>
26 % endfor
26 % endfor
27 </ul>
27 </ul>
28 % endif
28 % endif
29 </div>
29 </div>
30 <div id="main">
30 <div id="main">
31 ${next.main()}
31 ${next.main()}
32 </div>
32 </div>
33 </div>
33 </div>
34 <!-- END CONTENT -->
34 <!-- END CONTENT -->
35
35
36 <!-- FOOTER -->
36 <!-- FOOTER -->
37 <div id="footer">
37 <div id="footer">
38 <div id="footer-inner" class="title">
38 <div id="footer-inner" class="title">
39 <div>
39 <div>
40 <p class="footer-link">
40 <p class="footer-link">
41 <a href="${h.url('bugtracker')}">${_('Submit a bug')}</a>
41 <a href="${h.url('bugtracker')}">${_('Submit a bug')}</a>
42 </p>
42 </p>
43 <p class="footer-link-right">
43 <p class="footer-link-right">
44 <a href="${h.url('rhodecode_official')}">RhodeCode${'-%s' % c.rhodecode_instanceid if c.rhodecode_instanceid else ''}</a>
44 <a href="${h.url('rhodecode_official')}">RhodeCode${'-%s' % c.rhodecode_instanceid if c.rhodecode_instanceid else ''}</a>
45 ${c.rhodecode_version} &copy; 2010-${h.datetime.today().year} by Marcin Kuzminski
45 ${c.rhodecode_version} &copy; 2010-${h.datetime.today().year} by Marcin Kuzminski
46 </p>
46 </p>
47 </div>
47 </div>
48 </div>
48 </div>
49 </div>
49 </div>
50 <!-- END FOOTER -->
50 <!-- END FOOTER -->
51
51
52 ### MAKO DEFS ###
52 ### MAKO DEFS ###
53 <%def name="page_nav()">
53 <%def name="page_nav()">
54 ${self.menu()}
54 ${self.menu()}
55 </%def>
55 </%def>
56
56
57 <%def name="breadcrumbs()">
57 <%def name="breadcrumbs()">
58 <div class="breadcrumbs">
58 <div class="breadcrumbs">
59 ${self.breadcrumbs_links()}
59 ${self.breadcrumbs_links()}
60 </div>
60 </div>
61 </%def>
61 </%def>
62
62
63 <%def name="usermenu()">
63 <%def name="usermenu()">
64 <div class="user-menu">
64 <div class="user-menu">
65 <div class="container">
65 <div class="container">
66 <div class="gravatar" id="quick_login_link">
66 <div class="gravatar" id="quick_login_link">
67 <img alt="gravatar" src="${h.gravatar_url(c.rhodecode_user.email,24)}" />
67 <img alt="gravatar" src="${h.gravatar_url(c.rhodecode_user.email,24)}" />
68 </div>
68 </div>
69 %if c.rhodecode_user.username != 'default' and c.unread_notifications != 0:
69 %if c.rhodecode_user.username != 'default' and c.unread_notifications != 0:
70 <div class="notifications">
70 <div class="notifications">
71 <a id="notification_counter" href="${h.url('notifications')}">${c.unread_notifications}</a>
71 <a id="notification_counter" href="${h.url('notifications')}">${c.unread_notifications}</a>
72 </div>
72 </div>
73 %endif
73 %endif
74 </div>
74 </div>
75 <div id="quick_login" style="display:none">
75 <div id="quick_login" style="display:none">
76 %if c.rhodecode_user.username == 'default':
76 %if c.rhodecode_user.username == 'default':
77 <h4>${_('Login to your account')}</h4>
77 <h4>${_('Login to your account')}</h4>
78 ${h.form(h.url('login_home',came_from=h.url.current()))}
78 ${h.form(h.url('login_home',came_from=h.url.current()))}
79 <div class="form">
79 <div class="form">
80 <div class="fields">
80 <div class="fields">
81 <div class="field">
81 <div class="field">
82 <div class="label">
82 <div class="label">
83 <label for="username">${_('Username')}:</label>
83 <label for="username">${_('Username')}:</label>
84 </div>
84 </div>
85 <div class="input">
85 <div class="input">
86 ${h.text('username',class_='focus',size=40)}
86 ${h.text('username',class_='focus',size=40)}
87 </div>
87 </div>
88
88
89 </div>
89 </div>
90 <div class="field">
90 <div class="field">
91 <div class="label">
91 <div class="label">
92 <label for="password">${_('Password')}:</label>
92 <label for="password">${_('Password')}:</label>
93 </div>
93 </div>
94 <div class="input">
94 <div class="input">
95 ${h.password('password',class_='focus',size=40)}
95 ${h.password('password',class_='focus',size=40)}
96 </div>
96 </div>
97
97
98 </div>
98 </div>
99 <div class="buttons">
99 <div class="buttons">
100 <div class="password_forgoten">${h.link_to(_('Forgot password ?'),h.url('reset_password'))}</div>
100 <div class="password_forgoten">${h.link_to(_('Forgot password ?'),h.url('reset_password'))}</div>
101 <div class="register">
101 <div class="register">
102 %if h.HasPermissionAny('hg.admin', 'hg.register.auto_activate', 'hg.register.manual_activate')():
102 %if h.HasPermissionAny('hg.admin', 'hg.register.auto_activate', 'hg.register.manual_activate')():
103 ${h.link_to(_("Don't have an account ?"),h.url('register'))}
103 ${h.link_to(_("Don't have an account ?"),h.url('register'))}
104 %endif
104 %endif
105 </div>
105 </div>
106 <div class="submit">
106 <div class="submit">
107 ${h.submit('sign_in',_('Log In'),class_="ui-btn xsmall")}
107 ${h.submit('sign_in',_('Log In'),class_="ui-btn xsmall")}
108 </div>
108 </div>
109 </div>
109 </div>
110 </div>
110 </div>
111 </div>
111 </div>
112 ${h.end_form()}
112 ${h.end_form()}
113 %else:
113 %else:
114 <div class="links_left">
114 <div class="links_left">
115 <div class="full_name">${c.rhodecode_user.full_name_or_username}</div>
115 <div class="full_name">${c.rhodecode_user.full_name_or_username}</div>
116 <div class="email">${c.rhodecode_user.email}</div>
116 <div class="email">${c.rhodecode_user.email}</div>
117 <div class="big_gravatar"><img alt="gravatar" src="${h.gravatar_url(c.rhodecode_user.email,48)}" /></div>
117 <div class="big_gravatar"><img alt="gravatar" src="${h.gravatar_url(c.rhodecode_user.email,48)}" /></div>
118 <div class="inbox"><a href="${h.url('notifications')}">${_('Inbox')}: ${c.unread_notifications}</a></div>
118 <div class="inbox"><a href="${h.url('notifications')}">${_('Inbox')}: ${c.unread_notifications}</a></div>
119 </div>
119 </div>
120 <div class="links_right">
120 <div class="links_right">
121 <ol class="links">
121 <ol class="links">
122 <li>${h.link_to(_(u'Home'),h.url('home'))}</li>
122 <li>${h.link_to(_(u'Home'),h.url('home'))}</li>
123 <li>${h.link_to(_(u'Journal'),h.url('journal'))}</li>
123 <li>${h.link_to(_(u'Journal'),h.url('journal'))}</li>
124 <li>${h.link_to(_(u'My account'),h.url('admin_settings_my_account'))}</li>
124 <li>${h.link_to(_(u'My account'),h.url('admin_settings_my_account'))}</li>
125 <li class="logout">${h.link_to(_(u'Log Out'),h.url('logout_home'))}</li>
125 <li class="logout">${h.link_to(_(u'Log Out'),h.url('logout_home'))}</li>
126 </ol>
126 </ol>
127 </div>
127 </div>
128 %endif
128 %endif
129 </div>
129 </div>
130 </div>
130 </div>
131 </%def>
131 </%def>
132
132
133 <%def name="menu(current=None)">
133 <%def name="menu(current=None)">
134 <%
134 <%
135 def is_current(selected):
135 def is_current(selected):
136 if selected == current:
136 if selected == current:
137 return h.literal('class="current"')
137 return h.literal('class="current"')
138 %>
138 %>
139 %if current not in ['home','admin']:
139 %if current not in ['home','admin']:
140 ##REGULAR MENU
140 ##REGULAR MENU
141 <ul id="quick">
141 <ul id="quick">
142 <!-- repo switcher -->
142 <!-- repo switcher -->
143 <li>
143 <li>
144 <a class="menu_link" id="repo_switcher" title="${_('Switch repository')}" href="#">
144 <a class="menu_link" id="repo_switcher" title="${_('Switch repository')}" href="#">
145 <span class="icon">
145 <span class="icon">
146 <img src="${h.url('/images/icons/database.png')}" alt="${_('Products')}" />
146 <img src="${h.url('/images/icons/database.png')}" alt="${_('Products')}" />
147 </span>
147 </span>
148 <span>&darr;</span>
148 <span>&darr;</span>
149 </a>
149 </a>
150 <ul id="repo_switcher_list" class="repo_switcher">
150 <ul id="repo_switcher_list" class="repo_switcher">
151 <li>
151 <li>
152 <a href="#">${_('loading...')}</a>
152 <a href="#">${_('loading...')}</a>
153 </li>
153 </li>
154 </ul>
154 </ul>
155 </li>
155 </li>
156
156
157 <li ${is_current('summary')}>
157 <li ${is_current('summary')}>
158 <a class="menu_link" title="${_('Summary')}" href="${h.url('summary_home',repo_name=c.repo_name)}">
158 <a class="menu_link" title="${_('Summary')}" href="${h.url('summary_home',repo_name=c.repo_name)}">
159 <span class="icon">
159 <span class="icon">
160 <img src="${h.url('/images/icons/clipboard_16.png')}" alt="${_('Summary')}" />
160 <img src="${h.url('/images/icons/clipboard_16.png')}" alt="${_('Summary')}" />
161 </span>
161 </span>
162 <span>${_('Summary')}</span>
162 <span>${_('Summary')}</span>
163 </a>
163 </a>
164 </li>
164 </li>
165 <li ${is_current('changelog')}>
165 <li ${is_current('changelog')}>
166 <a class="menu_link" title="${_('Changelog')}" href="${h.url('changelog_home',repo_name=c.repo_name)}">
166 <a class="menu_link" title="${_('Changelog')}" href="${h.url('changelog_home',repo_name=c.repo_name)}">
167 <span class="icon">
167 <span class="icon">
168 <img src="${h.url('/images/icons/time.png')}" alt="${_('Changelog')}" />
168 <img src="${h.url('/images/icons/time.png')}" alt="${_('Changelog')}" />
169 </span>
169 </span>
170 <span>${_('Changelog')}</span>
170 <span>${_('Changelog')}</span>
171 </a>
171 </a>
172 </li>
172 </li>
173
173
174 <li ${is_current('switch_to')}>
174 <li ${is_current('switch_to')}>
175 <a class="menu_link" id="branch_tag_switcher" title="${_('Switch to')}" href="#">
175 <a class="menu_link" id="branch_tag_switcher" title="${_('Switch to')}" href="#">
176 <span class="icon">
176 <span class="icon">
177 <img src="${h.url('/images/icons/arrow_switch.png')}" alt="${_('Switch to')}" />
177 <img src="${h.url('/images/icons/arrow_switch.png')}" alt="${_('Switch to')}" />
178 </span>
178 </span>
179 <span>${_('Switch to')}</span>
179 <span>${_('Switch to')}</span>
180 </a>
180 </a>
181 <ul id="switch_to_list" class="switch_to">
181 <ul id="switch_to_list" class="switch_to">
182 <li><a href="#">${_('loading...')}</a></li>
182 <li><a href="#">${_('loading...')}</a></li>
183 </ul>
183 </ul>
184 </li>
184 </li>
185 <li ${is_current('files')}>
185 <li ${is_current('files')}>
186 <a class="menu_link" title="${_('Files')}" href="${h.url('files_home',repo_name=c.repo_name)}">
186 <a class="menu_link" title="${_('Files')}" href="${h.url('files_home',repo_name=c.repo_name)}">
187 <span class="icon">
187 <span class="icon">
188 <img src="${h.url('/images/icons/file.png')}" alt="${_('Files')}" />
188 <img src="${h.url('/images/icons/file.png')}" alt="${_('Files')}" />
189 </span>
189 </span>
190 <span>${_('Files')}</span>
190 <span>${_('Files')}</span>
191 </a>
191 </a>
192 </li>
192 </li>
193
193
194 <li ${is_current('options')}>
194 <li ${is_current('options')}>
195 <a class="menu_link" title="${_('Options')}" href="#">
195 <a class="menu_link" title="${_('Options')}" href="#">
196 <span class="icon">
196 <span class="icon">
197 <img src="${h.url('/images/icons/table_gear.png')}" alt="${_('Admin')}" />
197 <img src="${h.url('/images/icons/table_gear.png')}" alt="${_('Admin')}" />
198 </span>
198 </span>
199 <span>${_('Options')}</span>
199 <span>${_('Options')}</span>
200 </a>
200 </a>
201 <ul>
201 <ul>
202 %if h.HasRepoPermissionAll('repository.admin')(c.repo_name):
202 %if h.HasRepoPermissionAll('repository.admin')(c.repo_name):
203 %if h.HasPermissionAll('hg.admin')('access settings on repository'):
203 %if h.HasPermissionAll('hg.admin')('access settings on repository'):
204 <li>${h.link_to(_('repository settings'),h.url('edit_repo',repo_name=c.repo_name),class_='settings')}</li>
204 <li>${h.link_to(_('repository settings'),h.url('edit_repo',repo_name=c.repo_name),class_='settings')}</li>
205 %else:
205 %else:
206 <li>${h.link_to(_('repository settings'),h.url('repo_settings_home',repo_name=c.repo_name),class_='settings')}</li>
206 <li>${h.link_to(_('repository settings'),h.url('repo_settings_home',repo_name=c.repo_name),class_='settings')}</li>
207 %endif
207 %endif
208 %endif
208 %endif
209
209
210 <li>${h.link_to(_('fork'),h.url('repo_fork_home',repo_name=c.repo_name),class_='fork')}</li>
210 <li>${h.link_to(_('fork'),h.url('repo_fork_home',repo_name=c.repo_name),class_='fork')}</li>
211 %if h.is_hg(c.rhodecode_repo):
211 %if h.is_hg(c.rhodecode_repo):
212 <li>${h.link_to(_('open new pull request'),h.url('pullrequest_home',repo_name=c.repo_name),class_='pull_request')}</li>
212 <li>${h.link_to(_('open new pull request'),h.url('pullrequest_home',repo_name=c.repo_name),class_='pull_request')}</li>
213 %endif
213 %endif
214 %if c.rhodecode_db_repo.fork:
214 %if c.rhodecode_db_repo.fork:
215 <li>${h.link_to(_('compare fork'),h.url('compare_url',repo_name=c.repo_name,org_ref_type='branch',org_ref=request.GET.get('branch') or 'default',other_ref_type='branch',other_ref='default',repo=c.rhodecode_db_repo.fork.repo_name),class_='compare_request')}</li>
215 <li>${h.link_to(_('compare fork'),h.url('compare_url',repo_name=c.repo_name,org_ref_type='branch',org_ref=request.GET.get('branch') or 'default',other_ref_type='branch',other_ref='default',repo=c.rhodecode_db_repo.fork.repo_name),class_='compare_request')}</li>
216 %endif
216 %endif
217 <li>${h.link_to(_('search'),h.url('search_repo',search_repo=c.repo_name),class_='search')}</li>
217 <li>${h.link_to(_('search'),h.url('search_repo',search_repo=c.repo_name),class_='search')}</li>
218
218
219 %if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name) and c.rhodecode_db_repo.enable_locking:
219 %if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name) and c.rhodecode_db_repo.enable_locking:
220 %if c.rhodecode_db_repo.locked[0]:
220 %if c.rhodecode_db_repo.locked[0]:
221 <li>${h.link_to(_('unlock'), h.url('toggle_locking',repo_name=c.repo_name),class_='locking_del')}</li>
221 <li>${h.link_to(_('unlock'), h.url('toggle_locking',repo_name=c.repo_name),class_='locking_del')}</li>
222 %else:
222 %else:
223 <li>${h.link_to(_('lock'), h.url('toggle_locking',repo_name=c.repo_name),class_='locking_add')}</li>
223 <li>${h.link_to(_('lock'), h.url('toggle_locking',repo_name=c.repo_name),class_='locking_add')}</li>
224 %endif
224 %endif
225 %endif
225 %endif
226
226
227 % if h.HasPermissionAll('hg.admin')('access admin main page'):
227 % if h.HasPermissionAll('hg.admin')('access admin main page'):
228 <li>
228 <li>
229 ${h.link_to(_('admin'),h.url('admin_home'),class_='admin')}
229 ${h.link_to(_('admin'),h.url('admin_home'),class_='admin')}
230 <%def name="admin_menu()">
230 <%def name="admin_menu()">
231 <ul>
231 <ul>
232 <li>${h.link_to(_('journal'),h.url('admin_home'),class_='journal')}</li>
232 <li>${h.link_to(_('journal'),h.url('admin_home'),class_='journal')}</li>
233 <li>${h.link_to(_('repositories'),h.url('repos'),class_='repos')}</li>
233 <li>${h.link_to(_('repositories'),h.url('repos'),class_='repos')}</li>
234 <li>${h.link_to(_('repositories groups'),h.url('repos_groups'),class_='repos_groups')}</li>
234 <li>${h.link_to(_('repositories groups'),h.url('repos_groups'),class_='repos_groups')}</li>
235 <li>${h.link_to(_('users'),h.url('users'),class_='users')}</li>
235 <li>${h.link_to(_('users'),h.url('users'),class_='users')}</li>
236 <li>${h.link_to(_('users groups'),h.url('users_groups'),class_='groups')}</li>
236 <li>${h.link_to(_('users groups'),h.url('users_groups'),class_='groups')}</li>
237 <li>${h.link_to(_('permissions'),h.url('edit_permission',id='default'),class_='permissions')}</li>
237 <li>${h.link_to(_('permissions'),h.url('edit_permission',id='default'),class_='permissions')}</li>
238 <li>${h.link_to(_('ldap'),h.url('ldap_home'),class_='ldap')}</li>
238 <li>${h.link_to(_('ldap'),h.url('ldap_home'),class_='ldap')}</li>
239 <li>${h.link_to(_('defaults'),h.url('defaults'),class_='defaults')}</li>
239 <li>${h.link_to(_('defaults'),h.url('defaults'),class_='defaults')}</li>
240 <li class="last">${h.link_to(_('settings'),h.url('admin_settings'),class_='settings')}</li>
240 <li class="last">${h.link_to(_('settings'),h.url('admin_settings'),class_='settings')}</li>
241 </ul>
241 </ul>
242 </%def>
242 </%def>
243 ## ADMIN MENU
243 ## ADMIN MENU
244 ${admin_menu()}
244 ${admin_menu()}
245 </li>
245 </li>
246 % endif
246 % endif
247 </ul>
247 </ul>
248 </li>
248 </li>
249
249
250 <li>
250 <li>
251 <a class="menu_link" title="${_('Followers')}" href="${h.url('repo_followers_home',repo_name=c.repo_name)}">
251 <a class="menu_link" title="${_('Followers')}" href="${h.url('repo_followers_home',repo_name=c.repo_name)}">
252 <span class="icon_short">
252 <span class="icon_short">
253 <img src="${h.url('/images/icons/heart.png')}" alt="${_('Followers')}" />
253 <img src="${h.url('/images/icons/heart.png')}" alt="${_('Followers')}" />
254 </span>
254 </span>
255 <span id="current_followers_count" class="short">${c.repository_followers}</span>
255 <span id="current_followers_count" class="short">${c.repository_followers}</span>
256 </a>
256 </a>
257 </li>
257 </li>
258 <li>
258 <li>
259 <a class="menu_link" title="${_('Forks')}" href="${h.url('repo_forks_home',repo_name=c.repo_name)}">
259 <a class="menu_link" title="${_('Forks')}" href="${h.url('repo_forks_home',repo_name=c.repo_name)}">
260 <span class="icon_short">
260 <span class="icon_short">
261 <img src="${h.url('/images/icons/arrow_divide.png')}" alt="${_('Forks')}" />
261 <img src="${h.url('/images/icons/arrow_divide.png')}" alt="${_('Forks')}" />
262 </span>
262 </span>
263 <span class="short">${c.repository_forks}</span>
263 <span class="short">${c.repository_forks}</span>
264 </a>
264 </a>
265 </li>
265 </li>
266 <li>
266 <li>
267 <a class="menu_link" title="${_('Pull requests')}" href="${h.url('pullrequest_show_all',repo_name=c.repo_name)}">
267 <a class="menu_link" title="${_('Pull requests')}" href="${h.url('pullrequest_show_all',repo_name=c.repo_name)}">
268 <span class="icon_short">
268 <span class="icon_short">
269 <img src="${h.url('/images/icons/arrow_join.png')}" alt="${_('Pull requests')}" />
269 <img src="${h.url('/images/icons/arrow_join.png')}" alt="${_('Pull requests')}" />
270 </span>
270 </span>
271 <span class="short">${c.repository_pull_requests}</span>
271 <span class="short">${c.repository_pull_requests}</span>
272 </a>
272 </a>
273 </li>
273 </li>
274 ${usermenu()}
274 ${usermenu()}
275 </ul>
275 </ul>
276 <script type="text/javascript">
276 <script type="text/javascript">
277 YUE.on('repo_switcher','mouseover',function(){
277 YUE.on('repo_switcher','mouseover',function(){
278 function qfilter(){
278 function qfilter(){
279 var nodes = YUQ('ul#repo_switcher_list li a.repo_name');
279 var nodes = YUQ('ul#repo_switcher_list li a.repo_name');
280 var target = 'q_filter_rs';
280 var target = 'q_filter_rs';
281 var func = function(node){
281 var func = function(node){
282 return node.parentNode;
282 return node.parentNode;
283 }
283 }
284 q_filter(target,nodes,func);
284 q_filter(target,nodes,func);
285 }
285 }
286 var loaded = YUD.hasClass('repo_switcher','loaded');
286 var loaded = YUD.hasClass('repo_switcher','loaded');
287 if(!loaded){
287 if(!loaded){
288 YUD.addClass('repo_switcher','loaded');
288 YUD.addClass('repo_switcher','loaded');
289 ypjax("${h.url('repo_switcher')}",'repo_switcher_list',
289 ypjax("${h.url('repo_switcher')}",'repo_switcher_list',
290 function(o){qfilter();},
290 function(o){qfilter();},
291 function(o){YUD.removeClass('repo_switcher','loaded');}
291 function(o){YUD.removeClass('repo_switcher','loaded');}
292 ,null);
292 ,null);
293 }
293 }
294 return false;
294 return false;
295 });
295 });
296
296
297 YUE.on('branch_tag_switcher','mouseover',function(){
297 YUE.on('branch_tag_switcher','mouseover',function(){
298 var loaded = YUD.hasClass('branch_tag_switcher','loaded');
298 var loaded = YUD.hasClass('branch_tag_switcher','loaded');
299 if(!loaded){
299 if(!loaded){
300 YUD.addClass('branch_tag_switcher','loaded');
300 YUD.addClass('branch_tag_switcher','loaded');
301 ypjax("${h.url('branch_tag_switcher',repo_name=c.repo_name)}",'switch_to_list',
301 ypjax("${h.url('branch_tag_switcher',repo_name=c.repo_name)}",'switch_to_list',
302 function(o){},
302 function(o){},
303 function(o){YUD.removeClass('branch_tag_switcher','loaded');}
303 function(o){YUD.removeClass('branch_tag_switcher','loaded');}
304 ,null);
304 ,null);
305 }
305 }
306 return false;
306 return false;
307 });
307 });
308 </script>
308 </script>
309 %else:
309 %else:
310 ##ROOT MENU
310 ##ROOT MENU
311 <ul id="quick">
311 <ul id="quick">
312 <li>
312 <li>
313 <a class="menu_link" title="${_('Home')}" href="${h.url('home')}">
313 <a class="menu_link" title="${_('Home')}" href="${h.url('home')}">
314 <span class="icon">
314 <span class="icon">
315 <img src="${h.url('/images/icons/home_16.png')}" alt="${_('Home')}" />
315 <img src="${h.url('/images/icons/home_16.png')}" alt="${_('Home')}" />
316 </span>
316 </span>
317 <span>${_('Home')}</span>
317 <span>${_('Home')}</span>
318 </a>
318 </a>
319 </li>
319 </li>
320 %if c.rhodecode_user.username != 'default':
320 %if c.rhodecode_user.username != 'default':
321 <li>
321 <li>
322 <a class="menu_link" title="${_('Journal')}" href="${h.url('journal')}">
322 <a class="menu_link" title="${_('Journal')}" href="${h.url('journal')}">
323 <span class="icon">
323 <span class="icon">
324 <img src="${h.url('/images/icons/book.png')}" alt="${_('Journal')}" />
324 <img src="${h.url('/images/icons/book.png')}" alt="${_('Journal')}" />
325 </span>
325 </span>
326 <span>${_('Journal')}</span>
326 <span>${_('Journal')}</span>
327 </a>
327 </a>
328 </li>
328 </li>
329 %else:
329 %else:
330 <li>
330 <li>
331 <a class="menu_link" title="${_('Public journal')}" href="${h.url('public_journal')}">
331 <a class="menu_link" title="${_('Public journal')}" href="${h.url('public_journal')}">
332 <span class="icon">
332 <span class="icon">
333 <img src="${h.url('/images/icons/book.png')}" alt="${_('Public journal')}" />
333 <img src="${h.url('/images/icons/book.png')}" alt="${_('Public journal')}" />
334 </span>
334 </span>
335 <span>${_('Public journal')}</span>
335 <span>${_('Public journal')}</span>
336 </a>
336 </a>
337 </li>
337 </li>
338 %endif
338 %endif
339 <li>
339 <li>
340 <a class="menu_link" title="${_('Search')}" href="${h.url('search')}">
340 <a class="menu_link" title="${_('Search')}" href="${h.url('search')}">
341 <span class="icon">
341 <span class="icon">
342 <img src="${h.url('/images/icons/search_16.png')}" alt="${_('Search')}" />
342 <img src="${h.url('/images/icons/search_16.png')}" alt="${_('Search')}" />
343 </span>
343 </span>
344 <span>${_('Search')}</span>
344 <span>${_('Search')}</span>
345 </a>
345 </a>
346 </li>
346 </li>
347
347
348 %if h.HasPermissionAll('hg.admin')('access admin main page'):
348 %if h.HasPermissionAll('hg.admin')('access admin main page'):
349 <li ${is_current('admin')}>
349 <li ${is_current('admin')}>
350 <a class="menu_link" title="${_('Admin')}" href="${h.url('admin_home')}">
350 <a class="menu_link" title="${_('Admin')}" href="${h.url('admin_home')}">
351 <span class="icon">
351 <span class="icon">
352 <img src="${h.url('/images/icons/cog_edit.png')}" alt="${_('Admin')}" />
352 <img src="${h.url('/images/icons/cog_edit.png')}" alt="${_('Admin')}" />
353 </span>
353 </span>
354 <span>${_('Admin')}</span>
354 <span>${_('Admin')}</span>
355 </a>
355 </a>
356 ${admin_menu()}
356 ${admin_menu()}
357 </li>
357 </li>
358 %endif
358 %endif
359 ${usermenu()}
359 ${usermenu()}
360 </ul>
360 </ul>
361 %endif
361 %endif
362 </%def>
362 </%def>
@@ -1,123 +1,123 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 <!DOCTYPE html>
2 <!DOCTYPE html>
3 <html xmlns="http://www.w3.org/1999/xhtml">
3 <html xmlns="http://www.w3.org/1999/xhtml">
4 <head>
4 <head>
5 <title>${self.title()}</title>
5 <title>${self.title()}</title>
6 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
6 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
7 <meta name="robots" content="index, nofollow"/>
7 <meta name="robots" content="index, nofollow"/>
8 <link rel="icon" href="${h.url('/images/icons/database_gear.png')}" type="image/png" />
8 <link rel="icon" href="${h.url('/images/icons/database_gear.png')}" type="image/png" />
9
9
10 ## CSS ###
10 ## CSS ###
11 <%def name="css()">
11 <%def name="css()">
12 <link rel="stylesheet" type="text/css" href="${h.url('/css/style.css', ver=c.rhodecode_version)}" media="screen"/>
12 <link rel="stylesheet" type="text/css" href="${h.url('/css/style.css', ver=c.rhodecode_version)}" media="screen"/>
13 <link rel="stylesheet" type="text/css" href="${h.url('/css/pygments.css', ver=c.rhodecode_version)}"/>
13 <link rel="stylesheet" type="text/css" href="${h.url('/css/pygments.css', ver=c.rhodecode_version)}"/>
14 ## EXTRA FOR CSS
14 ## EXTRA FOR CSS
15 ${self.css_extra()}
15 ${self.css_extra()}
16 </%def>
16 </%def>
17 <%def name="css_extra()">
17 <%def name="css_extra()">
18 </%def>
18 </%def>
19
19
20 ${self.css()}
20 ${self.css()}
21
21
22 %if c.ga_code:
22 %if c.ga_code:
23 <!-- Analytics -->
23 <!-- Analytics -->
24 <script type="text/javascript">
24 <script type="text/javascript">
25 var _gaq = _gaq || [];
25 var _gaq = _gaq || [];
26 _gaq.push(['_setAccount', '${c.ga_code}']);
26 _gaq.push(['_setAccount', '${c.ga_code}']);
27 _gaq.push(['_trackPageview']);
27 _gaq.push(['_trackPageview']);
28
28
29 (function() {
29 (function() {
30 var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
30 var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
31 ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
31 ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
32 var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
32 var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
33 })();
33 })();
34 </script>
34 </script>
35 %endif
35 %endif
36
36
37 ## JAVASCRIPT ##
37 ## JAVASCRIPT ##
38 <%def name="js()">
38 <%def name="js()">
39 <script type="text/javascript">
39 <script type="text/javascript">
40 //JS translations map
40 //JS translations map
41 var TRANSLATION_MAP = {
41 var TRANSLATION_MAP = {
42 'add another comment':'${_("add another comment")}',
42 'add another comment':'${_("add another comment")}',
43 'Stop following this repository':"${_('Stop following this repository')}",
43 'Stop following this repository':"${_('Stop following this repository')}",
44 'Start following this repository':"${_('Start following this repository')}",
44 'Start following this repository':"${_('Start following this repository')}",
45 'Group':"${_('Group')}",
45 'Group':"${_('Group')}",
46 'members':"${_('members')}",
46 'members':"${_('members')}",
47 'loading...':"${_('loading...')}",
47 'loading...':"${_('loading...')}",
48 'search truncated': "${_('search truncated')}",
48 'search truncated': "${_('search truncated')}",
49 'no matching files': "${_('no matching files')}",
49 'no matching files': "${_('no matching files')}",
50 'Open new pull request': "${_('Open new pull request')}",
50 'Open new pull request': "${_('Open new pull request')}",
51 'Open new pull request for selected changesets': "${_('Open new pull request for selected changesets')}",
51 'Open new pull request for selected changesets': "${_('Open new pull request for selected changesets')}",
52 'Show selected changes __S -> __E': "${_('Show selected changes __S -> __E')}",
52 'Show selected changes __S -> __E': "${_('Show selected changes __S -> __E')}",
53 'Selection link': "${_('Selection link')}",
53 'Selection link': "${_('Selection link')}",
54 };
54 };
55 var _TM = TRANSLATION_MAP;
55 var _TM = TRANSLATION_MAP;
56 var TOGGLE_FOLLOW_URL = "${h.url('toggle_following')}";
56 var TOGGLE_FOLLOW_URL = "${h.url('toggle_following')}";
57 var LAZY_CS_URL = "${h.url('changeset_info', repo_name='__NAME__', revision='__REV__')}"
57 var LAZY_CS_URL = "${h.url('changeset_info', repo_name='__NAME__', revision='__REV__')}"
58 </script>
58 </script>
59 <script type="text/javascript" src="${h.url('/js/yui.2.9.js', ver=c.rhodecode_version)}"></script>
59 <script type="text/javascript" src="${h.url('/js/yui.2.9.js', ver=c.rhodecode_version)}"></script>
60 <!--[if lt IE 9]>
60 <!--[if lt IE 9]>
61 <script language="javascript" type="text/javascript" src="${h.url('/js/excanvas.min.js')}"></script>
61 <script language="javascript" type="text/javascript" src="${h.url('/js/excanvas.min.js')}"></script>
62 <![endif]-->
62 <![endif]-->
63 <script type="text/javascript" src="${h.url('/js/yui.flot.js', ver=c.rhodecode_version)}"></script>
63 <script type="text/javascript" src="${h.url('/js/yui.flot.js', ver=c.rhodecode_version)}"></script>
64 <script type="text/javascript" src="${h.url('/js/native.history.js', ver=c.rhodecode_version)}"></script>
64 <script type="text/javascript" src="${h.url('/js/native.history.js', ver=c.rhodecode_version)}"></script>
65 <script type="text/javascript" src="${h.url('/js/rhodecode.js', ver=c.rhodecode_version)}"></script>
65 <script type="text/javascript" src="${h.url('/js/rhodecode.js', ver=c.rhodecode_version)}"></script>
66 ## EXTRA FOR JS
66 ## EXTRA FOR JS
67 ${self.js_extra()}
67 ${self.js_extra()}
68 <script type="text/javascript">
68 <script type="text/javascript">
69 (function(window,undefined){
69 (function(window,undefined){
70 // Prepare
70 // Prepare
71 var History = window.History; // Note: We are using a capital H instead of a lower h
71 var History = window.History; // Note: We are using a capital H instead of a lower h
72 if ( !History.enabled ) {
72 if ( !History.enabled ) {
73 // History.js is disabled for this browser.
73 // History.js is disabled for this browser.
74 // This is because we can optionally choose to support HTML4 browsers or not.
74 // This is because we can optionally choose to support HTML4 browsers or not.
75 return false;
75 return false;
76 }
76 }
77 })(window);
77 })(window);
78
78
79 YUE.onDOMReady(function(){
79 YUE.onDOMReady(function(){
80 tooltip_activate();
80 tooltip_activate();
81 show_more_event();
81 show_more_event();
82 show_changeset_tooltip();
82 show_changeset_tooltip();
83
83
84 YUE.on('quick_login_link','click',function(e){
84 YUE.on('quick_login_link','click',function(e){
85 // make sure we don't redirect
85 // make sure we don't redirect
86 YUE.preventDefault(e);
86 YUE.preventDefault(e);
87
87
88 if(YUD.hasClass('quick_login_link','enabled')){
88 if(YUD.hasClass('quick_login_link','enabled')){
89 YUD.setStyle('quick_login','display','none');
89 YUD.setStyle('quick_login','display','none');
90 YUD.removeClass('quick_login_link','enabled');
90 YUD.removeClass('quick_login_link','enabled');
91 }
91 }
92 else{
92 else{
93 YUD.setStyle('quick_login','display','');
93 YUD.setStyle('quick_login','display','');
94 YUD.addClass('quick_login_link','enabled');
94 YUD.addClass('quick_login_link','enabled');
95 var usr = YUD.get('username');
95 var usr = YUD.get('username');
96 if(usr){
96 if(usr){
97 usr.focus();
97 usr.focus();
98 }
98 }
99 }
99 }
100 });
100 });
101 })
101 })
102 </script>
102 </script>
103 </%def>
103 </%def>
104 <%def name="js_extra()"></%def>
104 <%def name="js_extra()"></%def>
105 ${self.js()}
105 ${self.js()}
106 <%def name="head_extra()"></%def>
106 <%def name="head_extra()"></%def>
107 ${self.head_extra()}
107 ${self.head_extra()}
108 </head>
108 </head>
109 <body id="body">
109 <body id="body">
110 ## IE hacks
110 ## IE hacks
111 <!--[if IE 7]>
111 <!--[if IE 7]>
112 <script>YUD.addClass(document.body,'ie7')</script>
112 <script>YUD.addClass(document.body,'ie7')</script>
113 <![endif]-->
113 <![endif]-->
114 <!--[if IE 8]>
114 <!--[if IE 8]>
115 <script>YUD.addClass(document.body,'ie8')</script>
115 <script>YUD.addClass(document.body,'ie8')</script>
116 <![endif]-->
116 <![endif]-->
117 <!--[if IE 9]>
117 <!--[if IE 9]>
118 <script>YUD.addClass(document.body,'ie9')</script>
118 <script>YUD.addClass(document.body,'ie9')</script>
119 <![endif]-->
119 <![endif]-->
120
120
121 ${next.body()}
121 ${next.body()}
122 </body>
122 </body>
123 </html>
123 </html>
@@ -1,33 +1,33 b''
1 %if c.repo_bookmarks:
1 %if c.repo_bookmarks:
2 <div id="table_wrap" class="yui-skin-sam">
2 <div id="table_wrap" class="yui-skin-sam">
3 <table id="bookmarks_data">
3 <table id="bookmarks_data">
4 <thead>
4 <thead>
5 <tr>
5 <tr>
6 <th class="left">${_('Name')}</th>
6 <th class="left">${_('Name')}</th>
7 <th class="left">${_('Date')}</th>
7 <th class="left">${_('Date')}</th>
8 <th class="left">${_('Author')}</th>
8 <th class="left">${_('Author')}</th>
9 <th class="left">${_('Revision')}</th>
9 <th class="left">${_('Revision')}</th>
10 </tr>
10 </tr>
11 </thead>
11 </thead>
12 %for cnt,book in enumerate(c.repo_bookmarks.items()):
12 %for cnt,book in enumerate(c.repo_bookmarks.items()):
13 <tr class="parity${cnt%2}">
13 <tr class="parity${cnt%2}">
14 <td>
14 <td>
15 <span class="logbooks">
15 <span class="logbooks">
16 <span class="bookbook">${h.link_to(book[0],
16 <span class="bookbook">${h.link_to(book[0],
17 h.url('files_home',repo_name=c.repo_name,revision=book[1].raw_id))}</span>
17 h.url('files_home',repo_name=c.repo_name,revision=book[1].raw_id))}</span>
18 </span>
18 </span>
19 </td>
19 </td>
20 <td><span class="tooltip" title="${h.tooltip(h.age(book[1].date))}">${h.fmt_date(book[1].date)}</span></td>
20 <td><span class="tooltip" title="${h.tooltip(h.age(book[1].date))}">${h.fmt_date(book[1].date)}</span></td>
21 <td title="${book[1].author}">${h.person(book[1].author)}</td>
21 <td title="${book[1].author}">${h.person(book[1].author)}</td>
22 <td>
22 <td>
23 <div>
23 <div>
24 <pre><a href="${h.url('files_home',repo_name=c.repo_name,revision=book[1].raw_id)}">r${book[1].revision}:${h.short_id(book[1].raw_id)}</a></pre>
24 <pre><a href="${h.url('files_home',repo_name=c.repo_name,revision=book[1].raw_id)}">r${book[1].revision}:${h.short_id(book[1].raw_id)}</a></pre>
25 </div>
25 </div>
26 </td>
26 </td>
27 </tr>
27 </tr>
28 %endfor
28 %endfor
29 </table>
29 </table>
30 </div>
30 </div>
31 %else:
31 %else:
32 ${_('There are no bookmarks yet')}
32 ${_('There are no bookmarks yet')}
33 %endif
33 %endif
@@ -1,92 +1,92 b''
1 <%inherit file="/base/base.html"/>
1 <%inherit file="/base/base.html"/>
2
2
3 <%def name="title()">
3 <%def name="title()">
4 ${_('%s Edit file') % c.repo_name} - ${c.rhodecode_name}
4 ${_('%s Edit file') % c.repo_name} - ${c.rhodecode_name}
5 </%def>
5 </%def>
6
6
7 <%def name="js_extra()">
7 <%def name="js_extra()">
8 <script type="text/javascript" src="${h.url('/js/codemirror.js')}"></script>
8 <script type="text/javascript" src="${h.url('/js/codemirror.js')}"></script>
9 </%def>
9 </%def>
10 <%def name="css_extra()">
10 <%def name="css_extra()">
11 <link rel="stylesheet" type="text/css" href="${h.url('/css/codemirror.css')}"/>
11 <link rel="stylesheet" type="text/css" href="${h.url('/css/codemirror.css')}"/>
12 </%def>
12 </%def>
13
13
14 <%def name="breadcrumbs_links()">
14 <%def name="breadcrumbs_links()">
15 ${h.link_to(_(u'Home'),h.url('/'))}
15 ${h.link_to(_(u'Home'),h.url('/'))}
16 &raquo;
16 &raquo;
17 ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
17 ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
18 &raquo;
18 &raquo;
19 ${_('add file')} @ R${c.cs.revision}:${h.short_id(c.cs.raw_id)}
19 ${_('add file')} @ R${c.cs.revision}:${h.short_id(c.cs.raw_id)}
20 </%def>
20 </%def>
21
21
22 <%def name="page_nav()">
22 <%def name="page_nav()">
23 ${self.menu('files')}
23 ${self.menu('files')}
24 </%def>
24 </%def>
25 <%def name="main()">
25 <%def name="main()">
26 <div class="box">
26 <div class="box">
27 <!-- box / title -->
27 <!-- box / title -->
28 <div class="title">
28 <div class="title">
29 ${self.breadcrumbs()}
29 ${self.breadcrumbs()}
30 <ul class="links">
30 <ul class="links">
31 <li>
31 <li>
32 <span style="text-transform: uppercase;">
32 <span style="text-transform: uppercase;">
33 <a href="#">${_('branch')}: ${c.cs.branch}</a></span>
33 <a href="#">${_('branch')}: ${c.cs.branch}</a></span>
34 </li>
34 </li>
35 </ul>
35 </ul>
36 </div>
36 </div>
37 <div class="table">
37 <div class="table">
38 <div id="files_data">
38 <div id="files_data">
39 ${h.form(h.url.current(),method='post',id='eform',enctype="multipart/form-data")}
39 ${h.form(h.url.current(),method='post',id='eform',enctype="multipart/form-data")}
40 <h3>${_('Add new file')}</h3>
40 <h3>${_('Add new file')}</h3>
41 <div class="form">
41 <div class="form">
42 <div class="fields">
42 <div class="fields">
43 <div id="filename_container" class="field file">
43 <div id="filename_container" class="field file">
44 <div class="label">
44 <div class="label">
45 <label for="filename">${_('File Name')}:</label>
45 <label for="filename">${_('File Name')}:</label>
46 </div>
46 </div>
47 <div class="input">
47 <div class="input">
48 <input type="text" value="" size="30" name="filename" id="filename">
48 <input type="text" value="" size="30" name="filename" id="filename">
49 ${_('or')} <span class="ui-btn" id="upload_file_enable">${_('Upload file')}</span>
49 ${_('or')} <span class="ui-btn" id="upload_file_enable">${_('Upload file')}</span>
50 </div>
50 </div>
51 </div>
51 </div>
52 <div id="upload_file_container" class="field" style="display:none">
52 <div id="upload_file_container" class="field" style="display:none">
53 <div class="label">
53 <div class="label">
54 <label for="location">${_('Upload file')}</label>
54 <label for="location">${_('Upload file')}</label>
55 </div>
55 </div>
56 <div class="file">
56 <div class="file">
57 <input type="file" size="30" name="upload_file" id="upload_file">
57 <input type="file" size="30" name="upload_file" id="upload_file">
58 ${_('or')} <span class="ui-btn" id="file_enable">${_('Create new file')}</span>
58 ${_('or')} <span class="ui-btn" id="file_enable">${_('Create new file')}</span>
59 </div>
59 </div>
60 </div>
60 </div>
61 <div class="field">
61 <div class="field">
62 <div class="label">
62 <div class="label">
63 <label for="location">${_('Location')}</label>
63 <label for="location">${_('Location')}</label>
64 </div>
64 </div>
65 <div class="input">
65 <div class="input">
66 <input type="text" value="${c.f_path}" size="30" name="location" id="location">
66 <input type="text" value="${c.f_path}" size="30" name="location" id="location">
67 ${_('use / to separate directories')}
67 ${_('use / to separate directories')}
68 </div>
68 </div>
69 </div>
69 </div>
70 </div>
70 </div>
71 </div>
71 </div>
72 <div id="body" class="codeblock">
72 <div id="body" class="codeblock">
73 <div id="editor_container">
73 <div id="editor_container">
74 <pre id="editor_pre"></pre>
74 <pre id="editor_pre"></pre>
75 <textarea id="editor" name="content" style="display:none"></textarea>
75 <textarea id="editor" name="content" style="display:none"></textarea>
76 </div>
76 </div>
77 <div style="padding: 10px;color:#666666">${_('commit message')}</div>
77 <div style="padding: 10px;color:#666666">${_('commit message')}</div>
78 <textarea id="commit" name="message" style="height: 100px;width: 99%;margin-left:4px"></textarea>
78 <textarea id="commit" name="message" style="height: 100px;width: 99%;margin-left:4px"></textarea>
79 </div>
79 </div>
80 <div style="text-align: l;padding-top: 5px">
80 <div style="text-align: l;padding-top: 5px">
81 ${h.submit('commit',_('Commit changes'),class_="ui-btn")}
81 ${h.submit('commit',_('Commit changes'),class_="ui-btn")}
82 ${h.reset('reset',_('Reset'),class_="ui-btn")}
82 ${h.reset('reset',_('Reset'),class_="ui-btn")}
83 </div>
83 </div>
84 ${h.end_form()}
84 ${h.end_form()}
85 <script type="text/javascript">
85 <script type="text/javascript">
86 var reset_url = "${h.url('files_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path)}";
86 var reset_url = "${h.url('files_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path)}";
87 initCodeMirror('editor',reset_url);
87 initCodeMirror('editor',reset_url);
88 </script>
88 </script>
89 </div>
89 </div>
90 </div>
90 </div>
91 </div>
91 </div>
92 </%def>
92 </%def>
@@ -1,116 +1,116 b''
1 <%def name="file_class(node)">
1 <%def name="file_class(node)">
2 %if node.is_file():
2 %if node.is_file():
3 <%return "browser-file" %>
3 <%return "browser-file" %>
4 %else:
4 %else:
5 <%return "browser-dir"%>
5 <%return "browser-dir"%>
6 %endif
6 %endif
7 </%def>
7 </%def>
8 <div id="body" class="browserblock">
8 <div id="body" class="browserblock">
9 <div class="browser-header">
9 <div class="browser-header">
10 <div class="browser-nav">
10 <div class="browser-nav">
11 ${h.form(h.url.current())}
11 ${h.form(h.url.current())}
12 <div class="info_box">
12 <div class="info_box">
13 <span class="rev">${_('view')}@rev</span>
13 <span class="rev">${_('view')}@rev</span>
14 <a class="ui-btn ypjax-link" href="${c.url_prev}" title="${_('previous revision')}">&laquo;</a>
14 <a class="ui-btn ypjax-link" href="${c.url_prev}" title="${_('previous revision')}">&laquo;</a>
15 ${h.text('at_rev',value=c.changeset.revision,size=5)}
15 ${h.text('at_rev',value=c.changeset.revision,size=5)}
16 <a class="ui-btn ypjax-link" href="${c.url_next}" title="${_('next revision')}">&raquo;</a>
16 <a class="ui-btn ypjax-link" href="${c.url_next}" title="${_('next revision')}">&raquo;</a>
17 ## ${h.submit('view',_('view'),class_="ui-btn")}
17 ## ${h.submit('view',_('view'),class_="ui-btn")}
18 </div>
18 </div>
19 ${h.end_form()}
19 ${h.end_form()}
20 </div>
20 </div>
21 <div class="browser-branch">
21 <div class="browser-branch">
22 ${h.checkbox('stay_at_branch',c.changeset.branch,c.changeset.branch==c.branch)}
22 ${h.checkbox('stay_at_branch',c.changeset.branch,c.changeset.branch==c.branch)}
23 <label>${_('follow current branch')}</label>
23 <label>${_('follow current branch')}</label>
24 </div>
24 </div>
25 <div class="browser-search">
25 <div class="browser-search">
26 <div id="search_activate_id" class="search_activate">
26 <div id="search_activate_id" class="search_activate">
27 <a class="ui-btn" id="filter_activate" href="#">${_('search file list')}</a>
27 <a class="ui-btn" id="filter_activate" href="#">${_('search file list')}</a>
28 </div>
28 </div>
29 % if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
29 % if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
30 <div id="add_node_id" class="add_node">
30 <div id="add_node_id" class="add_node">
31 <a class="ui-btn" href="${h.url('files_add_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.f_path)}">${_('add new file')}</a>
31 <a class="ui-btn" href="${h.url('files_add_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.f_path)}">${_('add new file')}</a>
32 </div>
32 </div>
33 % endif
33 % endif
34 <div>
34 <div>
35 <div id="node_filter_box_loading" style="display:none">${_('Loading file list...')}</div>
35 <div id="node_filter_box_loading" style="display:none">${_('Loading file list...')}</div>
36 <div id="node_filter_box" style="display:none">
36 <div id="node_filter_box" style="display:none">
37 ${h.files_breadcrumbs(c.repo_name,c.changeset.raw_id,c.file.path)}/<input class="init" type="text" value="type to search..." name="filter" size="25" id="node_filter" autocomplete="off">
37 ${h.files_breadcrumbs(c.repo_name,c.changeset.raw_id,c.file.path)}/<input class="init" type="text" value="type to search..." name="filter" size="25" id="node_filter" autocomplete="off">
38 </div>
38 </div>
39 </div>
39 </div>
40 </div>
40 </div>
41 </div>
41 </div>
42
42
43 <div class="browser-body">
43 <div class="browser-body">
44 <table class="code-browser">
44 <table class="code-browser">
45 <thead>
45 <thead>
46 <tr>
46 <tr>
47 <th>${_('Name')}</th>
47 <th>${_('Name')}</th>
48 <th>${_('Size')}</th>
48 <th>${_('Size')}</th>
49 <th>${_('Mimetype')}</th>
49 <th>${_('Mimetype')}</th>
50 <th>${_('Last Revision')}</th>
50 <th>${_('Last Revision')}</th>
51 <th>${_('Last modified')}</th>
51 <th>${_('Last modified')}</th>
52 <th>${_('Last commiter')}</th>
52 <th>${_('Last commiter')}</th>
53 </tr>
53 </tr>
54 </thead>
54 </thead>
55
55
56 <tbody id="tbody">
56 <tbody id="tbody">
57 %if c.file.parent:
57 %if c.file.parent:
58 <tr class="parity0">
58 <tr class="parity0">
59 <td>
59 <td>
60 ${h.link_to('..',h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.file.parent.path),class_="browser-dir ypjax-link")}
60 ${h.link_to('..',h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.file.parent.path),class_="browser-dir ypjax-link")}
61 </td>
61 </td>
62 <td></td>
62 <td></td>
63 <td></td>
63 <td></td>
64 <td></td>
64 <td></td>
65 <td></td>
65 <td></td>
66 <td></td>
66 <td></td>
67 </tr>
67 </tr>
68 %endif
68 %endif
69
69
70 %for cnt,node in enumerate(c.file):
70 %for cnt,node in enumerate(c.file):
71 <tr class="parity${cnt%2}">
71 <tr class="parity${cnt%2}">
72 <td>
72 <td>
73 %if node.is_submodule():
73 %if node.is_submodule():
74 ${h.link_to(node.name,node.url or '#',class_="submodule-dir ypjax-link")}
74 ${h.link_to(node.name,node.url or '#',class_="submodule-dir ypjax-link")}
75 %else:
75 %else:
76 ${h.link_to(node.name, h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=h.safe_unicode(node.path)),class_=file_class(node)+" ypjax-link")}
76 ${h.link_to(node.name, h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=h.safe_unicode(node.path)),class_=file_class(node)+" ypjax-link")}
77 %endif:
77 %endif:
78 </td>
78 </td>
79 <td>
79 <td>
80 %if node.is_file():
80 %if node.is_file():
81 ${h.format_byte_size(node.size,binary=True)}
81 ${h.format_byte_size(node.size,binary=True)}
82 %endif
82 %endif
83 </td>
83 </td>
84 <td>
84 <td>
85 %if node.is_file():
85 %if node.is_file():
86 ${node.mimetype}
86 ${node.mimetype}
87 %endif
87 %endif
88 </td>
88 </td>
89 <td>
89 <td>
90 %if node.is_file():
90 %if node.is_file():
91 <div class="tooltip" title="${h.tooltip(node.last_changeset.message)}">
91 <div class="tooltip" title="${h.tooltip(node.last_changeset.message)}">
92 <pre>${'r%s:%s' % (node.last_changeset.revision,node.last_changeset.short_id)}</pre>
92 <pre>${'r%s:%s' % (node.last_changeset.revision,node.last_changeset.short_id)}</pre>
93 </div>
93 </div>
94 %endif
94 %endif
95 </td>
95 </td>
96 <td>
96 <td>
97 %if node.is_file():
97 %if node.is_file():
98 <span class="tooltip" title="${h.tooltip(h.fmt_date(node.last_changeset.date))}">
98 <span class="tooltip" title="${h.tooltip(h.fmt_date(node.last_changeset.date))}">
99 ${h.age(node.last_changeset.date)}</span>
99 ${h.age(node.last_changeset.date)}</span>
100 %endif
100 %endif
101 </td>
101 </td>
102 <td>
102 <td>
103 %if node.is_file():
103 %if node.is_file():
104 <span title="${node.last_changeset.author}">
104 <span title="${node.last_changeset.author}">
105 ${h.person(node.last_changeset.author)}
105 ${h.person(node.last_changeset.author)}
106 </span>
106 </span>
107 %endif
107 %endif
108 </td>
108 </td>
109 </tr>
109 </tr>
110 %endfor
110 %endfor
111 </tbody>
111 </tbody>
112 <tbody id="tbody_filtered" style="display:none">
112 <tbody id="tbody_filtered" style="display:none">
113 </tbody>
113 </tbody>
114 </table>
114 </table>
115 </div>
115 </div>
116 </div>
116 </div>
@@ -1,78 +1,78 b''
1 <%inherit file="/base/base.html"/>
1 <%inherit file="/base/base.html"/>
2
2
3 <%def name="title()">
3 <%def name="title()">
4 ${_('%s Edit file') % c.repo_name} - ${c.rhodecode_name}
4 ${_('%s Edit file') % c.repo_name} - ${c.rhodecode_name}
5 </%def>
5 </%def>
6
6
7 <%def name="js_extra()">
7 <%def name="js_extra()">
8 <script type="text/javascript" src="${h.url('/js/codemirror.js')}"></script>
8 <script type="text/javascript" src="${h.url('/js/codemirror.js')}"></script>
9 </%def>
9 </%def>
10 <%def name="css_extra()">
10 <%def name="css_extra()">
11 <link rel="stylesheet" type="text/css" href="${h.url('/css/codemirror.css')}"/>
11 <link rel="stylesheet" type="text/css" href="${h.url('/css/codemirror.css')}"/>
12 </%def>
12 </%def>
13
13
14 <%def name="breadcrumbs_links()">
14 <%def name="breadcrumbs_links()">
15 ${h.link_to(_(u'Home'),h.url('/'))}
15 ${h.link_to(_(u'Home'),h.url('/'))}
16 &raquo;
16 &raquo;
17 ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
17 ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
18 &raquo;
18 &raquo;
19 ${_('edit file')} @ R${c.cs.revision}:${h.short_id(c.cs.raw_id)}
19 ${_('edit file')} @ R${c.cs.revision}:${h.short_id(c.cs.raw_id)}
20 </%def>
20 </%def>
21
21
22 <%def name="page_nav()">
22 <%def name="page_nav()">
23 ${self.menu('files')}
23 ${self.menu('files')}
24 </%def>
24 </%def>
25 <%def name="main()">
25 <%def name="main()">
26 <div class="box">
26 <div class="box">
27 <!-- box / title -->
27 <!-- box / title -->
28 <div class="title">
28 <div class="title">
29 ${self.breadcrumbs()}
29 ${self.breadcrumbs()}
30 <ul class="links">
30 <ul class="links">
31 <li>
31 <li>
32 <span style="text-transform: uppercase;">
32 <span style="text-transform: uppercase;">
33 <a href="#">${_('branch')}: ${c.cs.branch}</a></span>
33 <a href="#">${_('branch')}: ${c.cs.branch}</a></span>
34 </li>
34 </li>
35 </ul>
35 </ul>
36 </div>
36 </div>
37 <div class="table">
37 <div class="table">
38 <div id="files_data">
38 <div id="files_data">
39 <h3 class="files_location">${_('Location')}: ${h.files_breadcrumbs(c.repo_name,c.cs.revision,c.file.path)}</h3>
39 <h3 class="files_location">${_('Location')}: ${h.files_breadcrumbs(c.repo_name,c.cs.revision,c.file.path)}</h3>
40 ${h.form(h.url.current(),method='post',id='eform')}
40 ${h.form(h.url.current(),method='post',id='eform')}
41 <div id="body" class="codeblock">
41 <div id="body" class="codeblock">
42 <div class="code-header">
42 <div class="code-header">
43 <div class="stats">
43 <div class="stats">
44 <div class="left"><img src="${h.url('/images/icons/file.png')}"/></div>
44 <div class="left"><img src="${h.url('/images/icons/file.png')}"/></div>
45 <div class="left item">${h.link_to("r%s:%s" % (c.file.changeset.revision,h.short_id(c.file.changeset.raw_id)),h.url('changeset_home',repo_name=c.repo_name,revision=c.file.changeset.raw_id))}</div>
45 <div class="left item">${h.link_to("r%s:%s" % (c.file.changeset.revision,h.short_id(c.file.changeset.raw_id)),h.url('changeset_home',repo_name=c.repo_name,revision=c.file.changeset.raw_id))}</div>
46 <div class="left item">${h.format_byte_size(c.file.size,binary=True)}</div>
46 <div class="left item">${h.format_byte_size(c.file.size,binary=True)}</div>
47 <div class="left item last">${c.file.mimetype}</div>
47 <div class="left item last">${c.file.mimetype}</div>
48 <div class="buttons">
48 <div class="buttons">
49 ${h.link_to(_('show annotation'),h.url('files_annotate_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="ui-btn")}
49 ${h.link_to(_('show annotation'),h.url('files_annotate_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="ui-btn")}
50 ${h.link_to(_('show as raw'),h.url('files_raw_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="ui-btn")}
50 ${h.link_to(_('show as raw'),h.url('files_raw_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="ui-btn")}
51 ${h.link_to(_('download as raw'),h.url('files_rawfile_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="ui-btn")}
51 ${h.link_to(_('download as raw'),h.url('files_rawfile_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="ui-btn")}
52 % if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
52 % if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
53 % if not c.file.is_binary:
53 % if not c.file.is_binary:
54 ${h.link_to(_('source'),h.url('files_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="ui-btn")}
54 ${h.link_to(_('source'),h.url('files_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="ui-btn")}
55 % endif
55 % endif
56 % endif
56 % endif
57 </div>
57 </div>
58 </div>
58 </div>
59 <div class="commit">${_('Editing file')}: ${c.file.unicode_path}</div>
59 <div class="commit">${_('Editing file')}: ${c.file.unicode_path}</div>
60 </div>
60 </div>
61 <pre id="editor_pre"></pre>
61 <pre id="editor_pre"></pre>
62 <textarea id="editor" name="content" style="display:none">${h.escape(c.file.content)|n}</textarea>
62 <textarea id="editor" name="content" style="display:none">${h.escape(c.file.content)|n}</textarea>
63 <div style="padding: 10px;color:#666666">${_('commit message')}</div>
63 <div style="padding: 10px;color:#666666">${_('commit message')}</div>
64 <textarea id="commit" name="message" style="height: 60px;width: 99%;margin-left:4px"></textarea>
64 <textarea id="commit" name="message" style="height: 60px;width: 99%;margin-left:4px"></textarea>
65 </div>
65 </div>
66 <div style="text-align: left;padding-top: 5px">
66 <div style="text-align: left;padding-top: 5px">
67 ${h.submit('commit',_('Commit changes'),class_="ui-btn")}
67 ${h.submit('commit',_('Commit changes'),class_="ui-btn")}
68 ${h.reset('reset',_('Reset'),class_="ui-btn")}
68 ${h.reset('reset',_('Reset'),class_="ui-btn")}
69 </div>
69 </div>
70 ${h.end_form()}
70 ${h.end_form()}
71 <script type="text/javascript">
71 <script type="text/javascript">
72 var reset_url = "${h.url('files_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.file.path)}";
72 var reset_url = "${h.url('files_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.file.path)}";
73 initCodeMirror('editor',reset_url);
73 initCodeMirror('editor',reset_url);
74 </script>
74 </script>
75 </div>
75 </div>
76 </div>
76 </div>
77 </div>
77 </div>
78 </%def>
78 </%def>
@@ -1,100 +1,100 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 <%inherit file="/base/base.html"/>
2 <%inherit file="/base/base.html"/>
3
3
4 <%def name="title()">
4 <%def name="title()">
5 ${_('%s Fork') % c.repo_name} - ${c.rhodecode_name}
5 ${_('%s Fork') % c.repo_name} - ${c.rhodecode_name}
6 </%def>
6 </%def>
7
7
8 <%def name="breadcrumbs_links()">
8 <%def name="breadcrumbs_links()">
9 ${h.link_to(_(u'Home'),h.url('/'))}
9 ${h.link_to(_(u'Home'),h.url('/'))}
10 &raquo;
10 &raquo;
11 ${h.link_to(c.repo_info.repo_name,h.url('summary_home',repo_name=c.repo_info.repo_name))}
11 ${h.link_to(c.repo_info.repo_name,h.url('summary_home',repo_name=c.repo_info.repo_name))}
12 &raquo;
12 &raquo;
13 ${_('fork')}
13 ${_('fork')}
14 </%def>
14 </%def>
15
15
16 <%def name="page_nav()">
16 <%def name="page_nav()">
17 ${self.menu('')}
17 ${self.menu('')}
18 </%def>
18 </%def>
19 <%def name="main()">
19 <%def name="main()">
20 <div class="box">
20 <div class="box">
21 <!-- box / title -->
21 <!-- box / title -->
22 <div class="title">
22 <div class="title">
23 ${self.breadcrumbs()}
23 ${self.breadcrumbs()}
24 </div>
24 </div>
25 ${h.form(url('repo_fork_create_home',repo_name=c.repo_info.repo_name))}
25 ${h.form(url('repo_fork_create_home',repo_name=c.repo_info.repo_name))}
26 <div class="form">
26 <div class="form">
27 <!-- fields -->
27 <!-- fields -->
28 <div class="fields">
28 <div class="fields">
29 <div class="field">
29 <div class="field">
30 <div class="label">
30 <div class="label">
31 <label for="repo_name">${_('Fork name')}:</label>
31 <label for="repo_name">${_('Fork name')}:</label>
32 </div>
32 </div>
33 <div class="input">
33 <div class="input">
34 ${h.text('repo_name',class_="small")}
34 ${h.text('repo_name',class_="small")}
35 ${h.hidden('repo_type',c.repo_info.repo_type)}
35 ${h.hidden('repo_type',c.repo_info.repo_type)}
36 ${h.hidden('fork_parent_id',c.repo_info.repo_id)}
36 ${h.hidden('fork_parent_id',c.repo_info.repo_id)}
37 </div>
37 </div>
38 </div>
38 </div>
39 <div class="field">
39 <div class="field">
40 <div class="label">
40 <div class="label">
41 <label for="landing_rev">${_('Landing revision')}:</label>
41 <label for="landing_rev">${_('Landing revision')}:</label>
42 </div>
42 </div>
43 <div class="input">
43 <div class="input">
44 ${h.select('landing_rev','',c.landing_revs,class_="medium")}
44 ${h.select('landing_rev','',c.landing_revs,class_="medium")}
45 <span class="help-block">${_('Default revision for files page, downloads, whoosh and readme')}</span>
45 <span class="help-block">${_('Default revision for files page, downloads, whoosh and readme')}</span>
46 </div>
46 </div>
47 </div>
47 </div>
48 <div class="field">
48 <div class="field">
49 <div class="label">
49 <div class="label">
50 <label for="repo_group">${_('Repository group')}:</label>
50 <label for="repo_group">${_('Repository group')}:</label>
51 </div>
51 </div>
52 <div class="input">
52 <div class="input">
53 ${h.select('repo_group','',c.repo_groups,class_="medium")}
53 ${h.select('repo_group','',c.repo_groups,class_="medium")}
54 <span class="help-block">${_('Optionaly select a group to put this repository into.')}</span>
54 <span class="help-block">${_('Optionaly select a group to put this repository into.')}</span>
55 </div>
55 </div>
56 </div>
56 </div>
57 <div class="field">
57 <div class="field">
58 <div class="label label-textarea">
58 <div class="label label-textarea">
59 <label for="description">${_('Description')}:</label>
59 <label for="description">${_('Description')}:</label>
60 </div>
60 </div>
61 <div class="textarea text-area editor">
61 <div class="textarea text-area editor">
62 ${h.textarea('description',cols=23,rows=5)}
62 ${h.textarea('description',cols=23,rows=5)}
63 <span class="help-block">${_('Keep it short and to the point. Use a README file for longer descriptions.')}</span>
63 <span class="help-block">${_('Keep it short and to the point. Use a README file for longer descriptions.')}</span>
64 </div>
64 </div>
65 </div>
65 </div>
66 <div class="field">
66 <div class="field">
67 <div class="label label-checkbox">
67 <div class="label label-checkbox">
68 <label for="private">${_('Private')}:</label>
68 <label for="private">${_('Private')}:</label>
69 </div>
69 </div>
70 <div class="checkboxes">
70 <div class="checkboxes">
71 ${h.checkbox('private',value="True")}
71 ${h.checkbox('private',value="True")}
72 <span class="help-block">${_('Private repositories are only visible to people explicitly added as collaborators.')}</span>
72 <span class="help-block">${_('Private repositories are only visible to people explicitly added as collaborators.')}</span>
73 </div>
73 </div>
74 </div>
74 </div>
75 <div class="field">
75 <div class="field">
76 <div class="label label-checkbox">
76 <div class="label label-checkbox">
77 <label for="private">${_('Copy permissions')}:</label>
77 <label for="private">${_('Copy permissions')}:</label>
78 </div>
78 </div>
79 <div class="checkboxes">
79 <div class="checkboxes">
80 ${h.checkbox('copy_permissions',value="True", checked="checked")}
80 ${h.checkbox('copy_permissions',value="True", checked="checked")}
81 <span class="help-block">${_('Copy permissions from forked repository')}</span>
81 <span class="help-block">${_('Copy permissions from forked repository')}</span>
82 </div>
82 </div>
83 </div>
83 </div>
84 <div class="field">
84 <div class="field">
85 <div class="label label-checkbox">
85 <div class="label label-checkbox">
86 <label for="private">${_('Update after clone')}:</label>
86 <label for="private">${_('Update after clone')}:</label>
87 </div>
87 </div>
88 <div class="checkboxes">
88 <div class="checkboxes">
89 ${h.checkbox('update_after_clone',value="True")}
89 ${h.checkbox('update_after_clone',value="True")}
90 <span class="help-block">${_('Checkout source after making a clone')}</span>
90 <span class="help-block">${_('Checkout source after making a clone')}</span>
91 </div>
91 </div>
92 </div>
92 </div>
93 <div class="buttons">
93 <div class="buttons">
94 ${h.submit('',_('fork this repository'),class_="ui-btn large")}
94 ${h.submit('',_('fork this repository'),class_="ui-btn large")}
95 </div>
95 </div>
96 </div>
96 </div>
97 </div>
97 </div>
98 ${h.end_form()}
98 ${h.end_form()}
99 </div>
99 </div>
100 </%def>
100 </%def>
@@ -1,43 +1,43 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2
2
3 % if c.forks_pager:
3 % if c.forks_pager:
4 % for f in c.forks_pager:
4 % for f in c.forks_pager:
5 <div>
5 <div>
6 <div class="fork_user">
6 <div class="fork_user">
7 <div class="gravatar">
7 <div class="gravatar">
8 <img alt="gravatar" src="${h.gravatar_url(f.user.email,24)}"/>
8 <img alt="gravatar" src="${h.gravatar_url(f.user.email,24)}"/>
9 </div>
9 </div>
10 <span style="font-size: 20px">
10 <span style="font-size: 20px">
11 <b>${f.user.username}</b> (${f.user.name} ${f.user.lastname}) /
11 <b>${f.user.username}</b> (${f.user.name} ${f.user.lastname}) /
12 ${h.link_to(f.repo_name,h.url('summary_home',repo_name=f.repo_name))}
12 ${h.link_to(f.repo_name,h.url('summary_home',repo_name=f.repo_name))}
13 </span>
13 </span>
14 <div style="padding:5px 3px 3px 42px;">${f.description}</div>
14 <div style="padding:5px 3px 3px 42px;">${f.description}</div>
15 </div>
15 </div>
16 <div style="clear:both;padding-top: 10px"></div>
16 <div style="clear:both;padding-top: 10px"></div>
17 <div class="follower_date">${_('forked')} -
17 <div class="follower_date">${_('forked')} -
18 <span class="tooltip" title="${h.tooltip(h.fmt_date(f.created_on))}"> ${h.age(f.created_on)}</span>
18 <span class="tooltip" title="${h.tooltip(h.fmt_date(f.created_on))}"> ${h.age(f.created_on)}</span>
19 <a title="${_('compare fork with %s' % c.repo_name)}"
19 <a title="${_('compare fork with %s' % c.repo_name)}"
20 href="${h.url('compare_url',repo_name=f.repo_name,org_ref_type='branch',org_ref='default',other_ref_type='branch',other_ref='default', repo=c.repo_name)}"
20 href="${h.url('compare_url',repo_name=f.repo_name,org_ref_type='branch',org_ref='default',other_ref_type='branch',other_ref='default', repo=c.repo_name)}"
21 class="ui-btn small">${_('Compare fork')}</a>
21 class="ui-btn small">${_('Compare fork')}</a>
22 </div>
22 </div>
23 <div style="border-bottom: 1px solid #DDD;margin:10px 0px 10px 0px"></div>
23 <div style="border-bottom: 1px solid #DDD;margin:10px 0px 10px 0px"></div>
24 </div>
24 </div>
25 % endfor
25 % endfor
26 <div class="pagination-wh pagination-left">
26 <div class="pagination-wh pagination-left">
27 <script type="text/javascript">
27 <script type="text/javascript">
28 YUE.onDOMReady(function(){
28 YUE.onDOMReady(function(){
29 YUE.delegate("forks","click",function(e, matchedEl, container){
29 YUE.delegate("forks","click",function(e, matchedEl, container){
30 ypjax(e.target.href,"forks",function(){
30 ypjax(e.target.href,"forks",function(){
31 show_more_event();
31 show_more_event();
32 tooltip_activate();
32 tooltip_activate();
33 show_changeset_tooltip();
33 show_changeset_tooltip();
34 });
34 });
35 YUE.preventDefault(e);
35 YUE.preventDefault(e);
36 },'.pager_link');
36 },'.pager_link');
37 });
37 });
38 </script>
38 </script>
39 ${c.forks_pager.pager('$link_previous ~2~ $link_next')}
39 ${c.forks_pager.pager('$link_previous ~2~ $link_next')}
40 </div>
40 </div>
41 % else:
41 % else:
42 ${_('There are no forks yet')}
42 ${_('There are no forks yet')}
43 % endif
43 % endif
@@ -1,91 +1,91 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 <%inherit file="base/root.html"/>
2 <%inherit file="base/root.html"/>
3
3
4 <%def name="title()">
4 <%def name="title()">
5 ${_('Sign Up')} - ${c.rhodecode_name}
5 ${_('Sign Up')} - ${c.rhodecode_name}
6 </%def>
6 </%def>
7
7
8 <div id="register">
8 <div id="register">
9
9
10 <div class="title top-left-rounded-corner top-right-rounded-corner">
10 <div class="title top-left-rounded-corner top-right-rounded-corner">
11 <h5>${_('Sign Up to')} ${c.rhodecode_name}</h5>
11 <h5>${_('Sign Up to')} ${c.rhodecode_name}</h5>
12 </div>
12 </div>
13 <div class="inner">
13 <div class="inner">
14 ${h.form(url('register'))}
14 ${h.form(url('register'))}
15 <div class="form">
15 <div class="form">
16 <!-- fields -->
16 <!-- fields -->
17 <div class="fields">
17 <div class="fields">
18 <div class="field">
18 <div class="field">
19 <div class="label">
19 <div class="label">
20 <label for="username">${_('Username')}:</label>
20 <label for="username">${_('Username')}:</label>
21 </div>
21 </div>
22 <div class="input">
22 <div class="input">
23 ${h.text('username',class_="medium")}
23 ${h.text('username',class_="medium")}
24 </div>
24 </div>
25 </div>
25 </div>
26
26
27 <div class="field">
27 <div class="field">
28 <div class="label">
28 <div class="label">
29 <label for="password">${_('Password')}:</label>
29 <label for="password">${_('Password')}:</label>
30 </div>
30 </div>
31 <div class="input">
31 <div class="input">
32 ${h.password('password',class_="medium")}
32 ${h.password('password',class_="medium")}
33 </div>
33 </div>
34 </div>
34 </div>
35
35
36 <div class="field">
36 <div class="field">
37 <div class="label">
37 <div class="label">
38 <label for="password">${_('Re-enter password')}:</label>
38 <label for="password">${_('Re-enter password')}:</label>
39 </div>
39 </div>
40 <div class="input">
40 <div class="input">
41 ${h.password('password_confirmation',class_="medium")}
41 ${h.password('password_confirmation',class_="medium")}
42 </div>
42 </div>
43 </div>
43 </div>
44
44
45 <div class="field">
45 <div class="field">
46 <div class="label">
46 <div class="label">
47 <label for="firstname">${_('First Name')}:</label>
47 <label for="firstname">${_('First Name')}:</label>
48 </div>
48 </div>
49 <div class="input">
49 <div class="input">
50 ${h.text('firstname',class_="medium")}
50 ${h.text('firstname',class_="medium")}
51 </div>
51 </div>
52 </div>
52 </div>
53
53
54 <div class="field">
54 <div class="field">
55 <div class="label">
55 <div class="label">
56 <label for="lastname">${_('Last Name')}:</label>
56 <label for="lastname">${_('Last Name')}:</label>
57 </div>
57 </div>
58 <div class="input">
58 <div class="input">
59 ${h.text('lastname',class_="medium")}
59 ${h.text('lastname',class_="medium")}
60 </div>
60 </div>
61 </div>
61 </div>
62
62
63 <div class="field">
63 <div class="field">
64 <div class="label">
64 <div class="label">
65 <label for="email">${_('Email')}:</label>
65 <label for="email">${_('Email')}:</label>
66 </div>
66 </div>
67 <div class="input">
67 <div class="input">
68 ${h.text('email',class_="medium")}
68 ${h.text('email',class_="medium")}
69 </div>
69 </div>
70 </div>
70 </div>
71
71
72 <div class="buttons">
72 <div class="buttons">
73 <div class="nohighlight">
73 <div class="nohighlight">
74 ${h.submit('sign_up',_('Sign Up'),class_="ui-btn large")}
74 ${h.submit('sign_up',_('Sign Up'),class_="ui-btn large")}
75 %if c.auto_active:
75 %if c.auto_active:
76 <div class="activation_msg">${_('Your account will be activated right after registration')}</div>
76 <div class="activation_msg">${_('Your account will be activated right after registration')}</div>
77 %else:
77 %else:
78 <div class="activation_msg">${_('Your account must wait for activation by administrator')}</div>
78 <div class="activation_msg">${_('Your account must wait for activation by administrator')}</div>
79 %endif
79 %endif
80 </div>
80 </div>
81 </div>
81 </div>
82 </div>
82 </div>
83 </div>
83 </div>
84 ${h.end_form()}
84 ${h.end_form()}
85 <script type="text/javascript">
85 <script type="text/javascript">
86 YUE.onDOMReady(function(){
86 YUE.onDOMReady(function(){
87 YUD.get('username').focus();
87 YUD.get('username').focus();
88 })
88 })
89 </script>
89 </script>
90 </div>
90 </div>
91 </div>
91 </div>
General Comments 0
You need to be logged in to leave comments. Login now