##// END OF EJS Templates
Implements #734 repo switcher should be available in all views
marcink -
r3209:e7600fe1 beta
parent child Browse files
Show More
@@ -1,371 +1,364 b''
1 1 ## -*- coding: utf-8 -*-
2 2 <%inherit file="root.html"/>
3 3
4 4 <!-- HEADER -->
5 5 <div id="header">
6 6 <div id="header-inner" class="title hover">
7 7 <div id="logo">
8 8 <h1><a href="${h.url('home')}">${c.rhodecode_name}</a></h1>
9 9 </div>
10 10 <!-- MENU -->
11 11 ${self.page_nav()}
12 12 <!-- END MENU -->
13 13 ${self.body()}
14 14 </div>
15 15 </div>
16 16 <!-- END HEADER -->
17 17
18 18 <!-- CONTENT -->
19 19 <div id="content">
20 20 <div class="flash_msg">
21 21 <% messages = h.flash.pop_messages() %>
22 22 % if messages:
23 23 <ul id="flash-messages">
24 24 % for message in messages:
25 25 <li class="${message.category}_msg">${message}</li>
26 26 % endfor
27 27 </ul>
28 28 % endif
29 29 </div>
30 30 <div id="main">
31 31 ${next.main()}
32 32 </div>
33 33 </div>
34 34 <!-- END CONTENT -->
35 35
36 36 <!-- FOOTER -->
37 37 <div id="footer">
38 38 <div id="footer-inner" class="title">
39 39 <div>
40 40 <p class="footer-link">
41 41 <a href="${h.url('bugtracker')}">${_('Submit a bug')}</a>
42 42 </p>
43 43 <p class="footer-link-right">
44 44 <a href="${h.url('rhodecode_official')}">RhodeCode${'-%s' % c.rhodecode_instanceid if c.rhodecode_instanceid else ''}</a>
45 45 ${c.rhodecode_version} &copy; 2010-${h.datetime.today().year} by Marcin Kuzminski
46 46 </p>
47 47 </div>
48 48 </div>
49 49 </div>
50 50 <!-- END FOOTER -->
51 51
52 52 ### MAKO DEFS ###
53 53 <%def name="page_nav()">
54 54 ${self.menu()}
55 55 </%def>
56 56
57 57 <%def name="breadcrumbs()">
58 58 <div class="breadcrumbs">
59 59 ${self.breadcrumbs_links()}
60 60 </div>
61 61 </%def>
62 62
63 63 <%def name="usermenu()">
64 64 ## USER MENU
65 65 <li>
66 66 <a class="menu_link" id="quick_login_link">
67 67 <span class="icon" style="padding:5px 5px 0px 5px">
68 68 <img src="${h.gravatar_url(c.rhodecode_user.email,20)}" alt="avatar">
69 69 </span>
70 70 %if c.rhodecode_user.username != 'default':
71 71 <span class="menu_link_user">${c.rhodecode_user.username}</span>
72 72 %if c.unread_notifications != 0:
73 73 <span class="menu_link_notifications">${c.unread_notifications}</span>
74 74 %endif
75 75 %else:
76 76 <span>${_('Not logged in')}</span>
77 77 %endif
78 78 </a>
79 79
80 80 <div class="user-menu">
81 81 <div id="quick_login">
82 82 %if c.rhodecode_user.username == 'default':
83 83 <h4>${_('Login to your account')}</h4>
84 84 ${h.form(h.url('login_home',came_from=h.url.current()))}
85 85 <div class="form">
86 86 <div class="fields">
87 87 <div class="field">
88 88 <div class="label">
89 89 <label for="username">${_('Username')}:</label>
90 90 </div>
91 91 <div class="input">
92 92 ${h.text('username',class_='focus',size=40)}
93 93 </div>
94 94
95 95 </div>
96 96 <div class="field">
97 97 <div class="label">
98 98 <label for="password">${_('Password')}:</label>
99 99 </div>
100 100 <div class="input">
101 101 ${h.password('password',class_='focus',size=40)}
102 102 </div>
103 103
104 104 </div>
105 105 <div class="buttons">
106 106 <div class="password_forgoten">${h.link_to(_('Forgot password ?'),h.url('reset_password'))}</div>
107 107 <div class="register">
108 108 %if h.HasPermissionAny('hg.admin', 'hg.register.auto_activate', 'hg.register.manual_activate')():
109 109 ${h.link_to(_("Don't have an account ?"),h.url('register'))}
110 110 %endif
111 111 </div>
112 112 <div class="submit">
113 113 ${h.submit('sign_in',_('Log In'),class_="ui-btn xsmall")}
114 114 </div>
115 115 </div>
116 116 </div>
117 117 </div>
118 118 ${h.end_form()}
119 119 %else:
120 120 <div class="links_left">
121 121 <div class="full_name">${c.rhodecode_user.full_name_or_username}</div>
122 122 <div class="email">${c.rhodecode_user.email}</div>
123 123 <div class="big_gravatar"><img alt="gravatar" src="${h.gravatar_url(c.rhodecode_user.email,48)}" /></div>
124 124 <div class="inbox"><a href="${h.url('notifications')}">${_('Inbox')}: ${c.unread_notifications}</a></div>
125 125 </div>
126 126 <div class="links_right">
127 127 <ol class="links">
128 128 <li>${h.link_to(_(u'Home'),h.url('home'))}</li>
129 129 <li>${h.link_to(_(u'Journal'),h.url('journal'))}</li>
130 130 <li>${h.link_to(_(u'My account'),h.url('admin_settings_my_account'))}</li>
131 131 <li class="logout">${h.link_to(_(u'Log Out'),h.url('logout_home'))}</li>
132 132 </ol>
133 133 </div>
134 134 %endif
135 135 </div>
136 136 </div>
137 137
138 138 </li>
139 139 </%def>
140 140
141 141 <%def name="menu(current=None)">
142 142 <%
143 143 def is_current(selected):
144 144 if selected == current:
145 145 return h.literal('class="current"')
146 146 %>
147 ## we render this menu only not for those pages
148 %if current not in ['home','admin', 'search', 'journal']:
149 ##REGULAR MENU
150 147 <ul id="quick">
151 148 <!-- repo switcher -->
152 149 <li>
153 150 <a class="menu_link" id="repo_switcher" title="${_('Switch repository')}" href="#">
154 151 <span class="icon">
155 152 <img src="${h.url('/images/icons/database.png')}" alt="${_('Products')}" />
156 153 </span>
157 154 <span>${_('Repositories')}</span>
158 155 </a>
159 156 <ul id="repo_switcher_list" class="repo_switcher">
160 157 <li>
161 158 <a href="#">${_('loading...')}</a>
162 159 </li>
163 160 </ul>
164 161 </li>
165
162 ## we render this menu only not for those pages
163 %if current not in ['home','admin', 'search', 'journal']:
164 ##REGULAR MENU
166 165 <li ${is_current('summary')}>
167 166 <a class="menu_link" title="${_('Summary')}" href="${h.url('summary_home',repo_name=c.repo_name)}">
168 167 <span class="icon">
169 168 <img src="${h.url('/images/icons/clipboard_16.png')}" alt="${_('Summary')}" />
170 169 </span>
171 170 <span>${_('Summary')}</span>
172 171 </a>
173 172 </li>
174 173 <li ${is_current('changelog')}>
175 174 <a class="menu_link" title="${_('Changelog')}" href="${h.url('changelog_home',repo_name=c.repo_name)}">
176 175 <span class="icon">
177 176 <img src="${h.url('/images/icons/time.png')}" alt="${_('Changelog')}" />
178 177 </span>
179 178 <span>${_('Changelog')}</span>
180 179 </a>
181 180 </li>
182
183 181 <li ${is_current('switch_to')}>
184 182 <a class="menu_link" id="branch_tag_switcher" title="${_('Switch to')}" href="#">
185 183 <span class="icon">
186 184 <img src="${h.url('/images/icons/arrow_switch.png')}" alt="${_('Switch to')}" />
187 185 </span>
188 186 <span>${_('Switch to')}</span>
189 187 </a>
190 188 <ul id="switch_to_list" class="switch_to">
191 189 <li><a href="#">${_('loading...')}</a></li>
192 190 </ul>
193 191 </li>
194 192 <li ${is_current('files')}>
195 193 <a class="menu_link" title="${_('Files')}" href="${h.url('files_home',repo_name=c.repo_name)}">
196 194 <span class="icon">
197 195 <img src="${h.url('/images/icons/file.png')}" alt="${_('Files')}" />
198 196 </span>
199 197 <span>${_('Files')}</span>
200 198 </a>
201 199 </li>
202
203 200 <li ${is_current('options')}>
204 201 <a class="menu_link" title="${_('Options')}" href="#">
205 202 <span class="icon">
206 203 <img src="${h.url('/images/icons/table_gear.png')}" alt="${_('Admin')}" />
207 204 </span>
208 205 <span>${_('Options')}</span>
209 206 </a>
210 207 <ul>
211 208 %if h.HasRepoPermissionAll('repository.admin')(c.repo_name):
212 209 %if h.HasPermissionAll('hg.admin')('access settings on repository'):
213 210 <li>${h.link_to(_('repository settings'),h.url('edit_repo',repo_name=c.repo_name),class_='settings')}</li>
214 211 %else:
215 212 <li>${h.link_to(_('repository settings'),h.url('repo_settings_home',repo_name=c.repo_name),class_='settings')}</li>
216 213 %endif
217 214 %endif
218 215
219 216 <li>${h.link_to(_('fork'),h.url('repo_fork_home',repo_name=c.repo_name),class_='fork')}</li>
220 217 %if h.is_hg(c.rhodecode_repo):
221 218 <li>${h.link_to(_('open new pull request'),h.url('pullrequest_home',repo_name=c.repo_name),class_='pull_request')}</li>
222 219 %endif
223 220 %if c.rhodecode_db_repo.fork:
224 221 <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>
225 222 %endif
226 223 <li>${h.link_to(_('search'),h.url('search_repo',search_repo=c.repo_name),class_='search')}</li>
227 224
228 225 %if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name) and c.rhodecode_db_repo.enable_locking:
229 226 %if c.rhodecode_db_repo.locked[0]:
230 227 <li>${h.link_to(_('unlock'), h.url('toggle_locking',repo_name=c.repo_name),class_='locking_del')}</li>
231 228 %else:
232 229 <li>${h.link_to(_('lock'), h.url('toggle_locking',repo_name=c.repo_name),class_='locking_add')}</li>
233 230 %endif
234 231 %endif
235 232
236 233 % if h.HasPermissionAll('hg.admin')('access admin main page'):
237 234 <li>
238 235 ${h.link_to(_('admin'),h.url('admin_home'),class_='admin')}
239 236 <%def name="admin_menu()">
240 237 <ul>
241 238 <li>${h.link_to(_('journal'),h.url('admin_home'),class_='journal')}</li>
242 239 <li>${h.link_to(_('repositories'),h.url('repos'),class_='repos')}</li>
243 240 <li>${h.link_to(_('repositories groups'),h.url('repos_groups'),class_='repos_groups')}</li>
244 241 <li>${h.link_to(_('users'),h.url('users'),class_='users')}</li>
245 242 <li>${h.link_to(_('users groups'),h.url('users_groups'),class_='groups')}</li>
246 243 <li>${h.link_to(_('permissions'),h.url('edit_permission',id='default'),class_='permissions')}</li>
247 244 <li>${h.link_to(_('ldap'),h.url('ldap_home'),class_='ldap')}</li>
248 245 <li>${h.link_to(_('defaults'),h.url('defaults'),class_='defaults')}</li>
249 246 <li class="last">${h.link_to(_('settings'),h.url('admin_settings'),class_='settings')}</li>
250 247 </ul>
251 248 </%def>
252 249 ## ADMIN MENU
253 250 ${admin_menu()}
254 251 </li>
255 252 % endif
256 253 </ul>
257 254 </li>
258
259 255 <li>
260 256 <a class="menu_link" title="${_('Followers')}" href="${h.url('repo_followers_home',repo_name=c.repo_name)}">
261 257 <span class="icon_short">
262 258 <img src="${h.url('/images/icons/heart.png')}" alt="${_('Followers')}" />
263 259 </span>
264 260 <span id="current_followers_count" class="short">${c.repository_followers}</span>
265 261 </a>
266 262 </li>
267 263 <li>
268 264 <a class="menu_link" title="${_('Forks')}" href="${h.url('repo_forks_home',repo_name=c.repo_name)}">
269 265 <span class="icon_short">
270 266 <img src="${h.url('/images/icons/arrow_divide.png')}" alt="${_('Forks')}" />
271 267 </span>
272 268 <span class="short">${c.repository_forks}</span>
273 269 </a>
274 270 </li>
275 271 <li>
276 272 <a class="menu_link" title="${_('Pull requests')}" href="${h.url('pullrequest_show_all',repo_name=c.repo_name)}">
277 273 <span class="icon_short">
278 274 <img src="${h.url('/images/icons/arrow_join.png')}" alt="${_('Pull requests')}" />
279 275 </span>
280 276 <span class="short">${c.repository_pull_requests}</span>
281 277 </a>
282 278 </li>
283 279 ${usermenu()}
284 </ul>
285 280 <script type="text/javascript">
286 YUE.on('repo_switcher','mouseover',function(){
287 function qfilter(){
288 var nodes = YUQ('ul#repo_switcher_list li a.repo_name');
289 var target = 'q_filter_rs';
290 var func = function(node){
291 return node.parentNode;
292 }
293 q_filter(target,nodes,func);
294 }
295 var loaded = YUD.hasClass('repo_switcher','loaded');
296 if(!loaded){
297 YUD.addClass('repo_switcher','loaded');
298 ypjax("${h.url('repo_switcher')}",'repo_switcher_list',
299 function(o){qfilter();},
300 function(o){YUD.removeClass('repo_switcher','loaded');}
301 ,null);
302 }
303 return false;
304 });
305
306 281 YUE.on('branch_tag_switcher','mouseover',function(){
307 282 var loaded = YUD.hasClass('branch_tag_switcher','loaded');
308 283 if(!loaded){
309 284 YUD.addClass('branch_tag_switcher','loaded');
310 285 ypjax("${h.url('branch_tag_switcher',repo_name=c.repo_name)}",'switch_to_list',
311 286 function(o){},
312 287 function(o){YUD.removeClass('branch_tag_switcher','loaded');}
313 288 ,null);
314 289 }
315 290 return false;
316 291 });
317 292 </script>
318 293 %else:
319 294 ##ROOT MENU
320 <ul id="quick">
321 295 <li ${is_current('home')}>
322 296 <a class="menu_link" title="${_('Home')}" href="${h.url('home')}">
323 297 <span class="icon">
324 298 <img src="${h.url('/images/icons/home_16.png')}" alt="${_('Home')}" />
325 299 </span>
326 300 <span>${_('Home')}</span>
327 301 </a>
328 302 </li>
329 303 %if c.rhodecode_user.username != 'default':
330 304 <li ${is_current('journal')}>
331 305 <a class="menu_link" title="${_('Journal')}" href="${h.url('journal')}">
332 306 <span class="icon">
333 307 <img src="${h.url('/images/icons/book.png')}" alt="${_('Journal')}" />
334 308 </span>
335 309 <span>${_('Journal')}</span>
336 310 </a>
337 311 </li>
338 312 %else:
339 313 <li ${is_current('journal')}>
340 314 <a class="menu_link" title="${_('Public journal')}" href="${h.url('public_journal')}">
341 315 <span class="icon">
342 316 <img src="${h.url('/images/icons/book.png')}" alt="${_('Public journal')}" />
343 317 </span>
344 318 <span>${_('Public journal')}</span>
345 319 </a>
346 320 </li>
347 321 %endif
348 322 <li ${is_current('search')}>
349 323 <a class="menu_link" title="${_('Search')}" href="${h.url('search')}">
350 324 <span class="icon">
351 325 <img src="${h.url('/images/icons/search_16.png')}" alt="${_('Search')}" />
352 326 </span>
353 327 <span>${_('Search')}</span>
354 328 </a>
355 329 </li>
356
357 330 %if h.HasPermissionAll('hg.admin')('access admin main page'):
358 331 <li ${is_current('admin')}>
359 332 <a class="menu_link" title="${_('Admin')}" href="${h.url('admin_home')}">
360 333 <span class="icon">
361 334 <img src="${h.url('/images/icons/cog_edit.png')}" alt="${_('Admin')}" />
362 335 </span>
363 336 <span>${_('Admin')}</span>
364 337 </a>
365 338 ${admin_menu()}
366 339 </li>
367 340 %endif
368 341 ${usermenu()}
369 </ul>
370 342 %endif
343 <script type="text/javascript">
344 YUE.on('repo_switcher','mouseover',function(){
345 function qfilter(){
346 var nodes = YUQ('ul#repo_switcher_list li a.repo_name');
347 var target = 'q_filter_rs';
348 var func = function(node){
349 return node.parentNode;
350 }
351 q_filter(target,nodes,func);
352 }
353 var loaded = YUD.hasClass('repo_switcher','loaded');
354 if(!loaded){
355 YUD.addClass('repo_switcher','loaded');
356 ypjax("${h.url('repo_switcher')}",'repo_switcher_list',
357 function(o){qfilter();},
358 function(o){YUD.removeClass('repo_switcher','loaded');}
359 ,null);
360 }
361 return false;
362 });
363 </script>
371 364 </%def>
General Comments 0
You need to be logged in to leave comments. Login now