##// END OF EJS Templates
merge with UI branch
marcink -
r3543:6af65ba4 merge beta
parent child Browse files
Show More
@@ -0,0 +1,367 b''
1 /**
2 * Stylesheets for the context bar
3 */
4
5 #quick .repo_switcher { background-image: url("../images/icons/database.png"); }
6 #quick .journal { background-image: url("../images/icons/book.png"); }
7 #quick .search { background-image: url("../images/icons/search_16.png"); }
8 #quick .admin { background-image: url("../images/icons/cog_edit.png"); }
9
10 #context-bar button.follow { background-image: url("../images/icons/heart.png"); }
11 #context-bar button.following { background-image: url("../images/icons/heart_delete.png"); }
12 #context-bar a.fork { background-image: url("../images/icons/arrow_divide.png"); }
13 #context-bar a.summary { background-image: url("../images/icons/clipboard_16.png"); }
14 #context-bar a.changelogs { background-image: url("../images/icons/time.png"); }
15 #context-bar a.files { background-image: url("../images/icons/file.png"); }
16 #context-bar a.switch-to { background-image: url("../images/icons/arrow_switch.png"); }
17 #context-bar a.options { background-image: url("../images/icons/table_gear.png"); }
18 #context-bar a.pull-request { background-image: url("../images/icons/arrow_join.png"); }
19 #context-bar a.branches { background-image: url("../images/icons/arrow_branch.png"); }
20 #context-bar a.tags { background-image: url("../images/icons/tag_blue.png"); }
21 #context-bar a.bookmarks { background-image: url("../images/icons/tag_green.png"); }
22 #context-bar a.settings { background-image: url("../images/icons/cog.png"); }
23 #context-bar a.shortlog { background-image: url("../images/icons/time.png"); }
24 #context-bar a.search { background-image: url("../images/icons/search_16.png"); }
25 #context-bar a.admin { background-image: url("../images/icons/cog_edit.png"); }
26
27 #context-bar a.journal { background-image: url("../images/icons/book.png"); }
28 #context-bar a.repos { background-image: url("../images/icons/database_edit.png"); }
29 #context-bar a.repos_groups { background-image: url("../images/icons/database_link.png"); }
30 #context-bar a.users { background-image: url("../images/icons/user_edit.png"); }
31 #context-bar a.groups { background-image: url("../images/icons/group_edit.png"); }
32 #context-bar a.permissions { background-image: url("../images/icons/key.png"); }
33 #context-bar a.ldap { background-image: url("../images/icons/server_key.png"); }
34 #context-bar a.defaults { background-image: url("../images/icons/wrench.png"); }
35 #context-bar a.settings { background-image: url("../images/icons/cog_edit.png"); }
36 #context-bar a.compare_request { background-image: url('../images/icons/arrow_inout.png')}
37 #context-bar a.locking_del { background-image: url('../images/icons/lock_delete.png')}
38 #context-bar a.locking_add { background-image: url('../images/icons/lock_add.png')}
39
40 #content #context-bar {
41 position: relative;
42 background-color: #003B76 !important;
43 padding: 0px;
44 overflow: visible;
45 }
46
47 #header #header-inner #quick a,
48 #content #context-bar,
49 #content #context-bar a,
50 #content #context-bar button {
51 color: #FFFFFF;
52 }
53
54 #header #header-inner #quick a:hover,
55 #content #context-bar a:hover,
56 #content #context-bar button:hover {
57 text-decoration: none;
58 }
59
60 #content #context-bar .icon {
61 display: inline-block;
62 width: 16px;
63 height: 16px;
64 vertical-align: text-bottom;
65 }
66
67 ul.horizontal-list {
68 display: block;
69 }
70
71 ul.horizontal-list > li {
72 float: left;
73 position: relative;
74 }
75
76 #header #header-inner #quick ul,
77 ul.horizontal-list > li ul {
78 position: absolute;
79 display: none;
80 right: 0;
81 z-index: 999;
82 }
83
84 #header #header-inner #quick li:hover > ul,
85 ul.horizontal-list li:hover > ul {
86 display: block;
87 }
88
89 #header #header-inner #quick li ul li,
90 ul.horizontal-list ul li {
91 position: relative;
92 border-bottom: 1px solid rgba(0,0,0,0.1);
93 border-top: 1px solid rgba(255,255,255,0.1);
94 }
95
96 ul.horizontal-list > li ul ul {
97 position: absolute;
98 right: 100%;
99 top: -1px;
100 min-width: 200px;
101 max-height: 400px;
102 overflow-x: hidden;
103 overflow-y: auto;
104 }
105
106 #header #header-inner #quick ul a,
107 ul.horizontal-list li a {
108 white-space: nowrap;
109 }
110
111 #breadcrumbs {
112 float: left;
113 padding: 5px 0;
114 padding-left: 5px;
115 font-weight: bold;
116 font-size: 14px;
117 }
118
119 #breadcrumbs span {
120 font-weight: bold;
121 font-size: 2em;
122 }
123
124 #context-top {
125 position: relative;
126 overflow: hidden;
127 border-bottom: 1px solid #003162;
128 padding: 5px;
129 }
130
131 #header #header-inner #quick ul,
132 #revision-changer,
133 #context-pages,
134 #context-pages ul {
135 background: #3b6998; /* Old browsers */
136 background: -moz-linear-gradient(top, #4574a2 0%, #2f5d8b 100%); /* FF3.6+ */
137 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#4574a2), color-stop(100%,#2f5d8b)); /* Chrome,Safari4+ */
138 background: -webkit-linear-gradient(top, #4574a2 0%, #2f5d8b 100%); /* Chrome10+,Safari5.1+ */
139 background: -o-linear-gradient(top, #4574a2 0%, #2f5d8b 100%); /* Opera 11.10+ */
140 background: -ms-linear-gradient(top, #4574a2 0%, #2f5d8b 100%); /* IE10+ */
141 background: linear-gradient(to bottom, #4574a2 0%, #2f5d8b 100%); /* W3C */
142 /*Filter on IE will also use overflow:hidden implicitly, and that would clip our inner menus.*/
143 /*filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#4574a2', endColorstr='#2f5d8b',GradientType=0 ); /* IE6-9 */*/
144 }
145
146 #header #header-inner #quick a,
147 #context-actions a,
148 #context-pages a {
149 background-repeat: no-repeat;
150 background-position: 10px 50%;
151 padding-left: 30px;
152 }
153
154 #quick a,
155 #context-pages ul ul a {
156 padding-left: 10px;
157 }
158
159 ul#context-actions {
160 display: inline-block;
161 float: right;
162 border-radius: 4px;
163 background-image: linear-gradient(top, #4574a2 0%, #2f5d8b 100%);
164 }
165 #content ul#context-actions li {
166 padding: 0px;
167 border-right: 1px solid rgba(0,0,0,0.1);
168 border-left: 1px solid rgba(255,255,255,0.1);
169 }
170
171 #context-actions button,
172 #context-actions a {
173 display: block;
174 cursor: pointer;
175 background: none;
176 border: none;
177 margin: 0px;
178 height: auto;
179 padding: 10px 10px 10px 30px;
180 background-repeat: no-repeat;
181 background-position: 10px 50%;
182 font-size: 1em;
183 }
184
185 #context-actions a {
186 padding: 11px 10px 12px 30px;
187 }
188
189 #header #header-inner #quick li:hover,
190 #revision-changer:hover,
191 #context-pages li:hover,
192 #context-actions li:hover,
193 #content #context-actions li:hover,
194 #header #header-inner #quick li.current,
195 #context-pages li.current {
196 background: #6388ad; /* Old browsers */
197 background: -moz-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* FF3.6+ */
198 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0.1)), color-stop(100%,rgba(255,255,255,0))); /* Chrome,Safari4+ */
199 background: -webkit-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* Chrome10+,Safari5.1+ */
200 background: -o-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* Opera 11.10+ */
201 background: -ms-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* IE10+ */
202 background: linear-gradient(to bottom, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* W3C */
203 /*filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#88bfe8', endColorstr='#70b0e0',GradientType=0 ); /* IE6-9 */*/
204 }
205
206
207 #content #context-actions li:first-child {
208 border-left: none;
209 border-radius: 4px 0 0px 4px;
210 }
211
212 #content #context-actions li:last-child {
213 border-right: none;
214 border-radius: 0 4px 4px 0;
215 }
216
217 #content #context-actions .icon {
218 margin: auto;
219 margin-bottom: 5px;
220 display: block;
221 clear: both;
222 float: none;
223 }
224
225 #content #context-actions button.follow,
226 #content #context-actions button.following {
227 width: auto;
228 float: none;
229 }
230
231 #content #context-actions button .show-following,
232 #content #context-actions button .show-follow {
233 display: none;
234 }
235
236 #content #context-bar #context-actions button.follow .show-follow {
237 display: block;
238 }
239
240 #content #context-bar #context-actions button.following .show-following {
241 display: block;
242 }
243
244 #context-state {
245 background-color: #336699;
246 border-top: 1px solid #517da8;
247 min-height: 36px;
248 }
249
250 #context-pages {
251 float: right;
252 border-left: 1px solid rgba(0,0,0,0.1);
253 }
254
255 #context-pages li.curreasdnt {
256 background: #535353; /* Old browsers */
257 background: -moz-linear-gradient(top, #5d5d5d 0%, #484848 100%); /* FF3.6+ */
258 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#5d5d5d), color-stop(100%,#484848)); /* Chrome,Safari4+ */
259 background: -webkit-linear-gradient(top, #5d5d5d 0%, #484848 100%); /* Chrome10+,Safari5.1+ */
260 background: -o-linear-gradient(top, #5d5d5d 0%, #484848 100%); /* Opera 11.10+ */
261 background: -ms-linear-gradient(top, #5d5d5d 0%, #484848 100%); /* IE10+ */
262 background: linear-gradient(to bottom, #5d5d5d 0%, #484848 100%); /* W3C */
263 }
264
265 #content #context-pages .icon {
266 margin-right: 5px;
267 }
268
269 #header #header-inner #quick li,
270 #content #context-pages li {
271 border-right: 1px solid rgba(0,0,0,0.1);
272 border-left: 1px solid rgba(255,255,255,0.1);
273 padding: 0;
274 }
275 #header #header-inner #quick li:last-child,
276 #content #context-pages li:last-child {
277 border-right: none;
278 }
279
280 #header #header-inner #quick li:first-child {
281 border-left: none;
282 }
283
284 #header #header-inner #quick > li:first-child > a {
285 border-radius: 4px 0 0 4px;
286 }
287
288 #header #header-inner #quick a,
289 #context-pages a,
290 #context-pages .admin_menu a {
291 display: block;
292 padding: 0px 10px 1px 30px;
293 padding-left: 30px;
294 line-height: 35px;
295 }
296
297 #header #header-inner #quick a.thin,
298 #context-pages a.thin,
299 #context-pages .admin_menu a.thin {
300 line-height: 28px !important;
301 }
302
303 #header #header-inner #quick a#quick_login_link {
304 padding-left: 0px;
305 }
306
307 #header #header-inner #quick a {
308 overflow: hidden;
309 }
310 #quick a.childs:after,
311 #revision-changer:before,
312 #context-pages a.childs:after,
313 #context-pages a.dropdown:after {
314 content: ' \25BE';
315 }
316 #context-pages a.childs {
317 padding-right: 20px;
318 }
319 #context-pages a.childs:after {
320 position: absolute;
321 float: right;
322 padding-left: 5px;
323 padding-right: 5px;
324 }
325
326 #revision-changer:before {
327 position: absolute;
328 top: 0px;
329 right: 0px;
330 border-right: 1px solid rgba(0,0,0,0.1);
331 height: 25px;
332 padding-top: 10px;
333 padding-right: 10px;
334 }
335
336 #context-pages li:last-child a {
337 padding-right: 10px;
338 }
339
340 #context-bar #revision-changer {
341 position: relative;
342 cursor: pointer;
343 border: none;
344 padding: 0;
345 margin: 0;
346 color: #FFFFFF;
347 font-size: 0.85em;
348 padding: 2px 15px;
349 padding-bottom: 3px;
350 padding-right: 30px;
351 border-right: 1px solid rgba(255,255,255,0.1);
352 }
353
354 #revision-changer .branch-name,
355 #revision-changer .revision {
356 display: block;
357 text-align: center;
358 line-height: 1.5em;
359 }
360
361 #revision-changer .branch-name {
362 font-weight: bold;
363 }
364
365 #revision-changer .revision {
366 text-transform: uppercase;
367 } No newline at end of file
@@ -72,8 +72,6 b' class SummaryController(BaseRepoControll'
72
72
73 def index(self, repo_name):
73 def index(self, repo_name):
74 c.dbrepo = dbrepo = c.rhodecode_db_repo
74 c.dbrepo = dbrepo = c.rhodecode_db_repo
75 c.following = self.scm_model.is_following_repo(repo_name,
76 self.rhodecode_user.user_id)
77
75
78 def url_generator(**kw):
76 def url_generator(**kw):
79 return url('shortlog_home', repo_name=repo_name, size=10, **kw)
77 return url('shortlog_home', repo_name=repo_name, size=10, **kw)
@@ -313,6 +313,8 b' class BaseRepoController(BaseController)'
313 c.rhodecode_db_repo: instance of db
313 c.rhodecode_db_repo: instance of db
314 c.repository_followers: number of followers
314 c.repository_followers: number of followers
315 c.repository_forks: number of forks
315 c.repository_forks: number of forks
316 c.repository_following: weather the current user is following the current repo
317
316 """
318 """
317
319
318 def __before__(self):
320 def __before__(self):
@@ -333,3 +335,5 b' class BaseRepoController(BaseController)'
333 c.repository_followers = self.scm_model.get_followers(dbr)
335 c.repository_followers = self.scm_model.get_followers(dbr)
334 c.repository_forks = self.scm_model.get_forks(dbr)
336 c.repository_forks = self.scm_model.get_forks(dbr)
335 c.repository_pull_requests = self.scm_model.get_pull_requests(dbr)
337 c.repository_pull_requests = self.scm_model.get_pull_requests(dbr)
338 c.repository_following = self.scm_model.is_following_repo(c.repo_name,
339 self.rhodecode_user.user_id)
@@ -363,7 +363,7 b' from rhodecode.lib.vcs.utils import auth'
363 from rhodecode.lib.utils2 import credentials_filter, age as _age
363 from rhodecode.lib.utils2 import credentials_filter, age as _age
364 from rhodecode.model.db import User, ChangesetStatus
364 from rhodecode.model.db import User, ChangesetStatus
365
365
366 age = lambda x: _age(x)
366 age = lambda x,y=False: _age(x,y)
367 capitalize = lambda x: x.capitalize()
367 capitalize = lambda x: x.capitalize()
368 email = author_email
368 email = author_email
369 short_id = lambda x: x[:12]
369 short_id = lambda x: x[:12]
@@ -914,13 +914,13 b' def repo_link(groups_and_repos, last_url'
914
914
915 if not groups:
915 if not groups:
916 if last_url:
916 if last_url:
917 return last_link
917 return literal('<span>%s</span>' % last_link)
918 return repo_name
918 return literal('<span>%s</span>' % repo_name)
919 else:
919 else:
920 def make_link(group):
920 def make_link(group):
921 return link_to(group.name,
921 return link_to(group.name,
922 url('repos_group_home', group_name=group.group_name))
922 url('repos_group_home', group_name=group.group_name))
923 return literal(' &raquo; '.join(map(make_link, groups) + [last_link]))
923 return literal(' &raquo; '.join(map(make_link, groups) + ['<span>' + last_link + '</span>']))
924
924
925
925
926 def fancy_file_stats(stats):
926 def fancy_file_stats(stats):
@@ -349,11 +349,15 b' def engine_from_config(configuration, pr'
349 return engine
349 return engine
350
350
351
351
352 def age(prevdate):
352 def age(prevdate, show_short_version=False):
353 """
353 """
354 turns a datetime into an age string.
354 turns a datetime into an age string.
355 If show_short_version is True, then it will generate a not so accurate but shorter string,
356 example: 2days ago, instead of 2 days and 23 hours ago.
357
355
358
356 :param prevdate: datetime object
359 :param prevdate: datetime object
360 :param show_short_version: if it should aproximate the date and return a shorter string
357 :rtype: unicode
361 :rtype: unicode
358 :returns: unicode words describing age
362 :returns: unicode words describing age
359 """
363 """
@@ -423,7 +427,7 b' def age(prevdate):'
423 else:
427 else:
424 sub_value = 0
428 sub_value = 0
425
429
426 if sub_value == 0:
430 if sub_value == 0 or show_short_version:
427 if future:
431 if future:
428 return _(u'in %s') % fmt_funcs[part](value)
432 return _(u'in %s') % fmt_funcs[part](value)
429 else:
433 else:
This diff has been collapsed as it changes many lines, (702 lines changed) Show them Hide them
@@ -396,37 +396,14 b' div:hover > a.permalink {'
396 color: #bfe3ff;
396 color: #bfe3ff;
397 }
397 }
398
398
399 #header #header-inner #quick, #header #header-inner #quick ul {
399 #header #header-inner #quick {
400 position: relative;
400 position: relative;
401 float: right;
401 float: right;
402 list-style-type: none;
402 list-style-type: none;
403 list-style-position: outside;
403 list-style-position: outside;
404 margin: 8px 8px 0 0;
404 margin: 4px 8px 0 0;
405 padding: 0;
406 }
407
408 #header #header-inner #quick li {
409 position: relative;
410 float: left;
411 margin: 0 5px 0 0;
412 padding: 0;
405 padding: 0;
413 }
406 border-radius: 4px;
414
415 #header #header-inner #quick li a.menu_link {
416 top: 0;
417 left: 0;
418 height: 1%;
419 display: block;
420 clear: both;
421 overflow: hidden;
422 color: #FFF;
423 font-weight: 700;
424 text-decoration: none;
425 background: #369;
426 padding: 0;
427 -webkit-border-radius: 4px 4px 4px 4px;
428 -khtml-border-radius: 4px 4px 4px 4px;
429 border-radius: 4px 4px 4px 4px;
430 }
407 }
431
408
432 #header #header-inner #quick li span.short {
409 #header #header-inner #quick li span.short {
@@ -434,14 +411,8 b' div:hover > a.permalink {'
434 }
411 }
435
412
436 #header #header-inner #quick li span {
413 #header #header-inner #quick li span {
437 top: 0;
414 display: inline;
438 right: 0;
439 height: 1%;
440 display: block;
441 float: left;
442 border-left: 1px solid #3f6f9f;
443 margin: 0;
415 margin: 0;
444 padding: 10px 12px 8px 10px;
445 }
416 }
446
417
447 #header #header-inner #quick li span.normal {
418 #header #header-inner #quick li span.normal {
@@ -450,13 +421,9 b' div:hover > a.permalink {'
450 }
421 }
451
422
452 #header #header-inner #quick li span.icon {
423 #header #header-inner #quick li span.icon {
453 top: 0;
424
454 left: 0;
455 border-left: none;
425 border-left: none;
456 border-right: 1px solid #2e5c89;
426 padding-left: 10px ;
457 padding: 8px 6px 4px;
458 min-width: 16px;
459 min-height: 16px;
460 }
427 }
461
428
462 #header #header-inner #quick li span.icon_short {
429 #header #header-inner #quick li span.icon_short {
@@ -468,39 +435,8 b' div:hover > a.permalink {'
468 }
435 }
469
436
470 #header #header-inner #quick li span.icon img, #header #header-inner #quick li span.icon_short img {
437 #header #header-inner #quick li span.icon img, #header #header-inner #quick li span.icon_short img {
471 margin: 0px -2px 0px 0px;
438 vertical-align: middle;
472 }
439 margin-bottom: 2px;
473
474 #header #header-inner #quick li.current a,
475 #header #header-inner #quick li a:hover {
476 background: #4e4e4e no-repeat top left;
477 }
478
479 #header #header-inner #quick li.current a span,
480 #header #header-inner #quick li a:hover span {
481 border-left: 1px solid #545454;
482 }
483
484 #header #header-inner #quick li.current a span.icon,
485 #header #header-inner #quick li.current a span.icon_short,
486 #header #header-inner #quick li a:hover span.icon,
487 #header #header-inner #quick li a:hover span.icon_short {
488 border-left: none;
489 border-right: 1px solid #464646;
490 }
491
492 #header #header-inner #quick ul {
493 top: 29px;
494 right: 0;
495 min-width: 200px;
496 display: none;
497 position: absolute;
498 background: #FFF;
499 border: 1px solid #666;
500 border-top: 1px solid #003367;
501 z-index: 100;
502 margin: 0px 0px 0px 0px;
503 padding: 0;
504 }
440 }
505
441
506 #header #header-inner #quick ul.repo_switcher {
442 #header #header-inner #quick ul.repo_switcher {
@@ -510,216 +446,113 b' div:hover > a.permalink {'
510 }
446 }
511
447
512 #header #header-inner #quick ul.repo_switcher li.qfilter_rs {
448 #header #header-inner #quick ul.repo_switcher li.qfilter_rs {
513 float: none;
449 padding: 2px 3px;
514 margin: 0;
450 padding-right: 17px;
515 border-bottom: 2px solid #003367;
451 }
452
453 #header #header-inner #quick ul.repo_switcher li.qfilter_rs input {
454 width: 100%;
455 border-radius: 10px;
456 padding: 2px 7px;
516 }
457 }
517
458
518 #header #header-inner #quick .repo_switcher_type {
459 #header #header-inner #quick .repo_switcher_type {
519 position: absolute;
460 position: absolute;
520 left: 0;
461 left: 0;
521 top: 9px;
462 top: 9px;
522 }
463 margin: 0px 2px 0px 2px;
523
524 #header #header-inner #quick li ul li {
525 border-bottom: 1px solid #ddd;
526 }
527
528 #header #header-inner #quick li ul li a {
529 width: 182px;
530 height: auto;
531 display: block;
532 float: left;
533 background: #FFF;
534 color: #003367;
535 font-weight: 400;
536 margin: 0;
537 padding: 7px 9px;
538 }
539
540 #header #header-inner #quick li ul li a:hover {
541 color: #000;
542 background: #FFF;
543 }
544
545 #header #header-inner #quick ul ul {
546 top: auto;
547 }
548
549 #header #header-inner #quick li ul ul {
550 right: 200px;
551 max-height: 290px;
552 overflow: auto;
553 overflow-x: hidden;
554 white-space: normal;
555 }
464 }
556
465
557 #header #header-inner #quick li ul li a.journal, #header #header-inner #quick li ul li a.journal:hover {
466 #header #header-inner #quick li ul li a.journal, #header #header-inner #quick li ul li a.journal:hover {
558 background: url("../images/icons/book.png") no-repeat scroll 4px 9px
467 background-image: url("../images/icons/book.png");
559 #FFF;
560 width: 167px;
561 margin: 0;
562 padding: 12px 9px 7px 24px;
563 }
468 }
564
469
565 #header #header-inner #quick li ul li a.private_repo, #header #header-inner #quick li ul li a.private_repo:hover {
470 #header #header-inner #quick li ul li a.private_repo, #header #header-inner #quick li ul li a.private_repo:hover {
566 background: url("../images/icons/lock.png") no-repeat scroll 4px 9px
471 background-image: url("../images/icons/lock.png")
567 #FFF;
568 min-width: 167px;
569 margin: 0;
570 padding: 12px 9px 7px 24px;
571 }
472 }
572
473
573 #header #header-inner #quick li ul li a.public_repo, #header #header-inner #quick li ul li a.public_repo:hover {
474 #header #header-inner #quick li ul li a.public_repo, #header #header-inner #quick li ul li a.public_repo:hover {
574 background: url("../images/icons/lock_open.png") no-repeat scroll 4px
475 background-image: url("../images/icons/lock_open.png");
575 9px #FFF;
576 min-width: 167px;
577 margin: 0;
578 padding: 12px 9px 7px 24px;
579 }
476 }
580
477
581 #header #header-inner #quick li ul li a.hg, #header #header-inner #quick li ul li a.hg:hover {
478 #header #header-inner #quick li ul li a.hg, #header #header-inner #quick li ul li a.hg:hover {
582 background: url("../images/icons/hgicon.png") no-repeat scroll 4px 9px
479 background-image: url("../images/icons/hgicon.png");
583 #FFF;
480 padding-left: 42px;
584 min-width: 167px;
481 background-position: 20px 9px;
585 margin: 0 0 0 14px;
586 padding: 12px 9px 7px 24px;
587 }
482 }
588
483
589 #header #header-inner #quick li ul li a.git, #header #header-inner #quick li ul li a.git:hover {
484 #header #header-inner #quick li ul li a.git, #header #header-inner #quick li ul li a.git:hover {
590 background: url("../images/icons/giticon.png") no-repeat scroll 4px 9px
485 background-image: url("../images/icons/giticon.png");
591 #FFF;
486 padding-left: 42px;
592 min-width: 167px;
487 background-position: 20px 9px;
593 margin: 0 0 0 14px;
594 padding: 12px 9px 7px 24px;
595 }
488 }
596
489
597 #header #header-inner #quick li ul li a.repos, #header #header-inner #quick li ul li a.repos:hover {
490 #header #header-inner #quick li ul li a.repos, #header #header-inner #quick li ul li a.repos:hover {
598 background: url("../images/icons/database_edit.png") no-repeat scroll
491 background-image: url("../images/icons/database_edit.png");
599 4px 9px #FFF;
600 width: 167px;
601 margin: 0;
602 padding: 12px 9px 7px 24px;
603 }
492 }
604
493
605 #header #header-inner #quick li ul li a.repos_groups, #header #header-inner #quick li ul li a.repos_groups:hover {
494 #header #header-inner #quick li ul li a.repos_groups, #header #header-inner #quick li ul li a.repos_groups:hover {
606 background: url("../images/icons/database_link.png") no-repeat scroll
495 background-image: url("../images/icons/database_link.png");
607 4px 9px #FFF;
608 width: 167px;
609 margin: 0;
610 padding: 12px 9px 7px 24px;
611 }
496 }
612
497
613 #header #header-inner #quick li ul li a.users, #header #header-inner #quick li ul li a.users:hover {
498 #header #header-inner #quick li ul li a.users, #header #header-inner #quick li ul li a.users:hover {
614 background: #FFF url("../images/icons/user_edit.png") no-repeat 4px 9px;
499 background-image: url("../images/icons/user_edit.png");
615 width: 167px;
616 margin: 0;
617 padding: 12px 9px 7px 24px;
618 }
500 }
619
501
620 #header #header-inner #quick li ul li a.groups, #header #header-inner #quick li ul li a.groups:hover {
502 #header #header-inner #quick li ul li a.groups, #header #header-inner #quick li ul li a.groups:hover {
621 background: #FFF url("../images/icons/group_edit.png") no-repeat 4px 9px;
503 background-image: url("../images/icons/group_edit.png");
622 width: 167px;
623 margin: 0;
624 padding: 12px 9px 7px 24px;
625 }
504 }
626
505
627 #header #header-inner #quick li ul li a.defaults, #header #header-inner #quick li ul li a.defaults:hover {
506 #header #header-inner #quick li ul li a.defaults, #header #header-inner #quick li ul li a.defaults:hover {
628 background: #FFF url("../images/icons/wrench.png") no-repeat 4px 9px;
507 background-image: url("../images/icons/wrench.png");
629 width: 167px;
630 margin: 0;
631 padding: 12px 9px 7px 24px;
632 }
508 }
633
509
634 #header #header-inner #quick li ul li a.settings, #header #header-inner #quick li ul li a.settings:hover {
510 #header #header-inner #quick li ul li a.settings, #header #header-inner #quick li ul li a.settings:hover {
635 background: #FFF url("../images/icons/cog.png") no-repeat 4px 9px;
511 background-image: url("../images/icons/cog.png");
636 width: 167px;
637 margin: 0;
638 padding: 12px 9px 7px 24px;
639 }
512 }
640
513
641 #header #header-inner #quick li ul li a.permissions, #header #header-inner #quick li ul li a.permissions:hover {
514 #header #header-inner #quick li ul li a.permissions, #header #header-inner #quick li ul li a.permissions:hover {
642 background: #FFF url("../images/icons/key.png") no-repeat 4px 9px;
515 background-image: url("../images/icons/key.png");
643 width: 167px;
644 margin: 0;
645 padding: 12px 9px 7px 24px;
646 }
516 }
647
517
648 #header #header-inner #quick li ul li a.ldap, #header #header-inner #quick li ul li a.ldap:hover {
518 #header #header-inner #quick li ul li a.ldap, #header #header-inner #quick li ul li a.ldap:hover {
649 background: #FFF url("../images/icons/server_key.png") no-repeat 4px 9px;
519 background-image: url("../images/icons/server_key.png");
650 width: 167px;
651 margin: 0;
652 padding: 12px 9px 7px 24px;
653 }
520 }
654
521
655 #header #header-inner #quick li ul li a.fork, #header #header-inner #quick li ul li a.fork:hover {
522 #header #header-inner #quick li ul li a.fork, #header #header-inner #quick li ul li a.fork:hover {
656 background: #FFF url("../images/icons/arrow_divide.png") no-repeat 4px
523 background-image: url("../images/icons/arrow_divide.png");
657 9px;
658 width: 167px;
659 margin: 0;
660 padding: 12px 9px 7px 24px;
661 }
524 }
662
525
663 #header #header-inner #quick li ul li a.locking_add, #header #header-inner #quick li ul li a.locking_add:hover {
526 #header #header-inner #quick li ul li a.locking_add, #header #header-inner #quick li ul li a.locking_add:hover {
664 background: #FFF url("../images/icons/lock_add.png") no-repeat 4px
527 background-image: url("../images/icons/lock_add.png");
665 9px;
666 width: 167px;
667 margin: 0;
668 padding: 12px 9px 7px 24px;
669 }
528 }
670
529
671 #header #header-inner #quick li ul li a.locking_del, #header #header-inner #quick li ul li a.locking_del:hover {
530 #header #header-inner #quick li ul li a.locking_del, #header #header-inner #quick li ul li a.locking_del:hover {
672 background: #FFF url("../images/icons/lock_delete.png") no-repeat 4px
531 background-image: url("../images/icons/lock_delete.png");
673 9px;
674 width: 167px;
675 margin: 0;
676 padding: 12px 9px 7px 24px;
677 }
532 }
678
533
679 #header #header-inner #quick li ul li a.pull_request, #header #header-inner #quick li ul li a.pull_request:hover {
534 #header #header-inner #quick li ul li a.pull_request, #header #header-inner #quick li ul li a.pull_request:hover {
680 background: #FFF url("../images/icons/arrow_join.png") no-repeat 4px
535 background-image: url("../images/icons/arrow_join.png") ;
681 9px;
682 width: 167px;
683 margin: 0;
684 padding: 12px 9px 7px 24px;
685 }
536 }
686
537
687 #header #header-inner #quick li ul li a.compare_request, #header #header-inner #quick li ul li a.compare_request:hover {
538 #header #header-inner #quick li ul li a.compare_request, #header #header-inner #quick li ul li a.compare_request:hover {
688 background: #FFF url("../images/icons/arrow_inout.png") no-repeat 4px
539 background-image: url("../images/icons/arrow_inout.png");
689 9px;
690 width: 167px;
691 margin: 0;
692 padding: 12px 9px 7px 24px;
693 }
540 }
694
541
695 #header #header-inner #quick li ul li a.search, #header #header-inner #quick li ul li a.search:hover {
542 #header #header-inner #quick li ul li a.search, #header #header-inner #quick li ul li a.search:hover {
696 background: #FFF url("../images/icons/search_16.png") no-repeat 4px 9px;
543 background-image: url("../images/icons/search_16.png");
697 width: 167px;
698 margin: 0;
699 padding: 12px 9px 7px 24px;
700 }
544 }
701
545
702 #header #header-inner #quick li ul li a.shortlog, #header #header-inner #quick li ul li a.shortlog:hover {
546 #header #header-inner #quick li ul li a.shortlog, #header #header-inner #quick li ul li a.shortlog:hover {
703 background: #FFF url("../images/icons/clock_16.png") no-repeat 4px 9px;
547 background-image: url("../images/icons/clock_16.png");
704 width: 167px;
548 }
705 margin: 0;
706 padding: 12px 9px 7px 24px;
707 }
708
709
549
710 #header #header-inner #quick li ul li a.delete, #header #header-inner #quick li ul li a.delete:hover {
550 #header #header-inner #quick li ul li a.delete, #header #header-inner #quick li ul li a.delete:hover {
711 background: #FFF url("../images/icons/delete.png") no-repeat 4px 9px;
551 background-image: url("../images/icons/delete.png");
712 width: 167px;
713 margin: 0;
714 padding: 12px 9px 7px 24px;
715 }
552 }
716
553
717 #header #header-inner #quick li ul li a.branches, #header #header-inner #quick li ul li a.branches:hover {
554 #header #header-inner #quick li ul li a.branches, #header #header-inner #quick li ul li a.branches:hover {
718 background: #FFF url("../images/icons/arrow_branch.png") no-repeat 4px
555 background-image: url("../images/icons/arrow_branch.png");
719 9px;
720 width: 167px;
721 margin: 0;
722 padding: 12px 9px 7px 24px;
723 }
556 }
724
557
725 #header #header-inner #quick li ul li a.tags,
558 #header #header-inner #quick li ul li a.tags,
@@ -1076,7 +909,6 b' tbody .yui-dt-editable { cursor: pointer'
1076
909
1077 #content div.box {
910 #content div.box {
1078 clear: both;
911 clear: both;
1079 overflow: hidden;
1080 background: #fff;
912 background: #fff;
1081 margin: 0 0 10px;
913 margin: 0 0 10px;
1082 padding: 0 0 10px;
914 padding: 0 0 10px;
@@ -1115,6 +947,7 b' tbody .yui-dt-editable { cursor: pointer'
1115 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76', endColorstr='#00376e', GradientType=0 );
947 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003b76', endColorstr='#00376e', GradientType=0 );
1116 margin: 0 0 20px;
948 margin: 0 0 20px;
1117 padding: 0;
949 padding: 0;
950 border-radius: 4px 4px 0 0;
1118 }
951 }
1119
952
1120 #content div.box div.title h5 {
953 #content div.box div.title h5 {
@@ -1255,6 +1088,7 b' tbody .yui-dt-editable { cursor: pointer'
1255 background: linear-gradient(to bottom,rgba(255,255,255,0),rgba(64,96,128,0.1));
1088 background: linear-gradient(to bottom,rgba(255,255,255,0),rgba(64,96,128,0.1));
1256
1089
1257 display: none;
1090 display: none;
1091 overflow: hidden;
1258 }
1092 }
1259 #content div.box div.expand .expandtext {
1093 #content div.box div.expand .expandtext {
1260 background-color: #ffffff;
1094 background-color: #ffffff;
@@ -1844,7 +1678,71 b' div.form div.fields div.field div.button'
1844 padding: 0 3px 2px;
1678 padding: 0 3px 2px;
1845 }
1679 }
1846
1680
1847 #summary {
1681 #content div.box #summary {
1682 margin-right: 200px;
1683 }
1684
1685 #summary-menu-stats {
1686 float: left;
1687 width: 180px;
1688 position: absolute;
1689 top: 0;
1690 right: 0;
1691 }
1692
1693 #summary-menu-stats ul {
1694 margin: 0 10px;
1695 display: block;
1696 background-color: #f9f9f9;
1697 border: 1px solid #d1d1d1;
1698 border-radius: 4px;
1699 }
1700
1701 #content #summary-menu-stats li {
1702 border-top: 1px solid #d1d1d1;
1703 padding: 0;
1704 }
1705
1706 #content #summary-menu-stats li:hover {
1707 background: #f0f0f0;
1708 }
1709
1710 #content #summary-menu-stats li:first-child {
1711 border-top: none;
1712 }
1713
1714 #summary-menu-stats a.followers { background-image: url('../images/icons/heart.png')}
1715 #summary-menu-stats a.forks { background-image: url('../images/icons/arrow_divide.png')}
1716 #summary-menu-stats a.settings { background-image: url('../images/icons/cog_edit.png')}
1717 #summary-menu-stats a.feed { background-image: url('../images/icons/rss_16.png')}
1718 #summary-menu-stats a.repo-size { background-image: url('../images/icons/server.png')}
1719
1720 #summary-menu-stats a {
1721 display: block;
1722 padding: 12px 30px;
1723 background-repeat: no-repeat;
1724 background-position: 10px 50%;
1725 padding-right: 10px;
1726 }
1727
1728
1729 #repo_size_2 {
1730 margin-left: 30px;
1731 display: block;
1732 padding-right: 10px;
1733 padding-bottom: 7px;
1734 }
1735
1736 #summary-menu-stats a:hover {
1737 text-decoration: none;
1738 }
1739
1740 #summary-menu-stats a span {
1741 background-color: #FFF;
1742 border: 1px inset #f0f0f0;
1743 border-radius: 7px;
1744 padding: 1px;
1745 font-size: 10px;
1848 }
1746 }
1849
1747
1850 #summary .metatag {
1748 #summary .metatag {
@@ -2085,7 +1983,7 b' a.metatag[tag="license"]:hover {'
2085 }
1983 }
2086
1984
2087 #quick_login .password_forgoten {
1985 #quick_login .password_forgoten {
2088 padding-right: 10px;
1986 padding-right: 0px;
2089 padding-top: 0px;
1987 padding-top: 0px;
2090 text-align: left;
1988 text-align: left;
2091 }
1989 }
@@ -2093,6 +1991,8 b' a.metatag[tag="license"]:hover {'
2093 #quick_login .password_forgoten a {
1991 #quick_login .password_forgoten a {
2094 font-size: 10px;
1992 font-size: 10px;
2095 color: #fff;
1993 color: #fff;
1994 padding: 0px !important;
1995 line-height: 20px !important;
2096 }
1996 }
2097
1997
2098 #quick_login .register {
1998 #quick_login .register {
@@ -2104,6 +2004,8 b' a.metatag[tag="license"]:hover {'
2104 #quick_login .register a {
2004 #quick_login .register a {
2105 font-size: 10px;
2005 font-size: 10px;
2106 color: #fff;
2006 color: #fff;
2007 padding: 0px !important;
2008 line-height: 20px !important;
2107 }
2009 }
2108
2010
2109 #quick_login .submit {
2011 #quick_login .submit {
@@ -2127,15 +2029,16 b' a.metatag[tag="license"]:hover {'
2127 padding: 4px 0px 0px 6px;
2029 padding: 4px 0px 0px 6px;
2128 }
2030 }
2129 #quick_login .notifications {
2031 #quick_login .notifications {
2130 padding: 4px 0px 0px 6px;
2032 padding: 2px 0px 0px 6px;
2131 color: #FFFFFF;
2033 color: #FFFFFF;
2132 font-weight: bold;
2034 font-weight: bold;
2035 line-height: 10px !important;
2133 }
2036 }
2134 #quick_login .notifications a,
2037 #quick_login .notifications a,
2135 #quick_login .unread a {
2038 #quick_login .unread a {
2136 color: #FFFFFF;
2039 color: #FFFFFF;
2137 display: block;
2040 display: block;
2138 padding: 2px;
2041 padding: 0px !important;
2139 }
2042 }
2140 #quick_login .notifications a:hover,
2043 #quick_login .notifications a:hover,
2141 #quick_login .unread a:hover {
2044 #quick_login .unread a:hover {
@@ -2462,10 +2365,10 b' h3.files_location {'
2462 text-align: right;
2365 text-align: right;
2463 }
2366 }
2464
2367
2465 #changeset_content .container .left .message {
2368 #changeset_content .container .message {
2466 white-space: pre-wrap;
2369 white-space: pre-wrap;
2467 }
2370 }
2468 #changeset_content .container .left .message a:hover {
2371 #changeset_content .container .message a:hover {
2469 text-decoration: none;
2372 text-decoration: none;
2470 }
2373 }
2471 .cs_files .cur_cs {
2374 .cs_files .cur_cs {
@@ -2561,23 +2464,30 b' h3.files_location {'
2561 text-align: left;
2464 text-align: left;
2562 }
2465 }
2563
2466
2467 .table {
2468 position: relative;
2469 }
2470
2564 #graph {
2471 #graph {
2472 position: relative;
2565 overflow: hidden;
2473 overflow: hidden;
2566 }
2474 }
2567
2475
2568 #graph_nodes {
2476 #graph_nodes {
2569 float: left;
2477 position: absolute;
2570 margin-right: 0px;
2478 }
2571 margin-top: 0px;
2479
2480 #graph_content,
2481 #graph .info_box,
2482 #graph .container_header {
2483 margin-left: 100px;
2572 }
2484 }
2573
2485
2574 #graph_content {
2486 #graph_content {
2575 width: 80%;
2487 position: relative;
2576 float: left;
2488 }
2577 }
2489
2578
2490 #graph .container_header {
2579 #graph_content .container_header {
2580 border-bottom: 1px solid #DDD;
2581 padding: 10px;
2491 padding: 10px;
2582 height: 25px;
2492 height: 25px;
2583 }
2493 }
@@ -2592,49 +2502,143 b' h3.files_location {'
2592 margin: 0px 0px 0px 3px;
2502 margin: 0px 0px 0px 3px;
2593 }
2503 }
2594
2504
2505 #graph_content #changesets {
2506 table-layout: fixed;
2507 border-collapse: collapse;
2508 border-left: none;
2509 border-right: none;
2510 border-color: #cdcdcd;
2511 }
2512
2595 #graph_content .container {
2513 #graph_content .container {
2596 border-bottom: 1px solid #DDD;
2514
2597 height: 56px;
2515 }
2516
2517 #graph_content #changesets td {
2598 overflow: hidden;
2518 overflow: hidden;
2599 }
2519 text-overflow: ellipsis;
2600
2520 white-space: nowrap;
2601 #graph_content .container .right {
2521 height: 31px;
2602 float: right;
2522 border-color: #cdcdcd;
2603 width: 23%;
2523 text-align: left;
2604 text-align: right;
2524 }
2605 }
2525
2606
2526 #graph_content .container .author {
2607 #graph_content .container .left {
2527 width: 105px;
2608 float: left;
2528 }
2609 width: 25%;
2529
2610 padding-left: 5px;
2530 #graph_content .container .hash {
2531 width: 85px;
2532 font-size: 0.85em;
2533 }
2534
2535 #graph_content #changesets .container .date {
2536 width: 76px;
2537 color: #666;
2538 font-size: 10px;
2539 }
2540
2541 #graph_content #changesets .container .right {
2542 width: 120px;
2543 padding-right: 0px;
2544 overflow: visible;
2545 position: relative;
2611 }
2546 }
2612
2547
2613 #graph_content .container .mid {
2548 #graph_content .container .mid {
2549 padding: 0;
2550 }
2551
2552 #graph_content .log-container {
2553 position: relative;
2554 }
2555
2556 #graph_content #changesets td.checkbox {
2557 width: 20px;
2558 }
2559
2560 #graph_content .container .changeset_range {
2614 float: left;
2561 float: left;
2615 width: 49%;
2562 margin: 6px 3px;
2616 }
2563 }
2617
2564
2618
2565 #graph_content .container .author img {
2619 #graph_content .container .left .date {
2566 vertical-align: middle;
2620 color: #666;
2567 }
2621 padding-left: 22px;
2568
2622 font-size: 10px;
2569 #graph_content .container .author .user {
2623 }
2624
2625 #graph_content .container .left .author {
2626 height: 22px;
2627 }
2628
2629 #graph_content .container .left .author .user {
2630 color: #444444;
2570 color: #444444;
2631 float: left;
2632 margin-left: -4px;
2633 margin-top: 4px;
2634 }
2571 }
2635
2572
2636 #graph_content .container .mid .message {
2573 #graph_content .container .mid .message {
2637 white-space: pre-wrap;
2574 white-space: pre-wrap;
2575 padding: 0;
2576 overflow: hidden;
2577 height: 1.1em;
2578 }
2579
2580 #graph_content .container .extra-container {
2581 display: block;
2582 position: absolute;
2583 top: -15px;
2584 right: 0;
2585 padding-left: 5px;
2586 background: #FFFFFF;
2587 height: 41px;
2588 }
2589
2590 #graph_content .comments-container,
2591 #graph_content .logtags {
2592 display: block;
2593 float: left;
2594 overflow: hidden;
2595 padding: 0;
2596 margin: 0;
2597 }
2598
2599 #graph_content .comments-container {
2600 margin: 0.8em 0;
2601 margin-right: 0.5em;
2602 }
2603
2604 #graph_content .tagcontainer {
2605 width: 80px;
2606 position: relative;
2607 float: right;
2608 height: 100%;
2609 top: 7px;
2610 margin-left: 0.5em;
2611 }
2612
2613 #graph_content .logtags {
2614 min-width: 80px;
2615 height: 1.1em;
2616 position: absolute;
2617 left: 0px;
2618 width: auto;
2619 top: 0px;
2620 }
2621
2622 #graph_content .logtags.tags {
2623 top: 14px;
2624 }
2625
2626 #graph_content .logtags:hover {
2627 overflow: visible;
2628 position: absolute;
2629 width: auto;
2630 right: 0;
2631 left: initial;
2632 }
2633
2634 #graph_content .logtags .bookbook,
2635 #graph_content .logtags .tagtag {
2636 float: left;
2637 line-height: 1em;
2638 margin-bottom: 1px;
2639 margin-right: 1px;
2640 padding: 1px 3px;
2641 font-size: 10px;
2638 }
2642 }
2639
2643
2640 #graph_content .container .mid .message a:hover {
2644 #graph_content .container .mid .message a:hover {
@@ -2676,17 +2680,18 b' h3.files_location {'
2676 .code-header .changeset-status-container .changeset-status-ico, .container .changeset-status-ico {
2680 .code-header .changeset-status-container .changeset-status-ico, .container .changeset-status-ico {
2677 float: left;
2681 float: left;
2678 }
2682 }
2679 .right .comments-container {
2683
2680 padding-right: 5px;
2684 #graph_content .comments-cnt {
2681 margin-top: 1px;
2682 float: right;
2683 height: 14px;
2684 }
2685
2686 .right .comments-cnt {
2687 float: left;
2688 color: rgb(136, 136, 136);
2685 color: rgb(136, 136, 136);
2689 padding-right: 2px;
2686 padding: 5px 0;
2687 }
2688
2689 #graph_content .comments-cnt a {
2690 background-image: url('../images/icons/comments.png');
2691 background-repeat: no-repeat;
2692 background-position: 100% 50%;
2693 padding: 5px 0;
2694 padding-right: 20px;
2690 }
2695 }
2691
2696
2692 .right .changes {
2697 .right .changes {
@@ -2731,7 +2736,6 b' h3.files_location {'
2731 padding: 1px 3px 1px 3px;
2736 padding: 1px 3px 1px 3px;
2732 background-color: #fca062;
2737 background-color: #fca062;
2733 font-size: 10px;
2738 font-size: 10px;
2734 font-weight: bold;
2735 color: #ffffff;
2739 color: #ffffff;
2736 text-transform: uppercase;
2740 text-transform: uppercase;
2737 white-space: nowrap;
2741 white-space: nowrap;
@@ -2745,65 +2749,101 b' h3.files_location {'
2745 clear: both;
2749 clear: both;
2746 }
2750 }
2747 .right .logtags {
2751 .right .logtags {
2748 padding: 2px 2px 2px 2px;
2752 line-height: 2.2em;
2749 }
2753 }
2750 .right .logtags .branchtag, .right .logtags .tagtag, .right .logtags .booktag {
2754 .branchtag, .logtags .tagtag, .logtags .booktag {
2751 margin: 0px 2px;
2755 margin: 0px 2px;
2752 }
2756 }
2753
2757
2758 .branchtag,
2759 .tagtag,
2760 .bookbook,
2761 .spantag {
2762 padding: 1px 3px 1px 3px;
2763 font-size: 10px;
2764 color: #336699;
2765 white-space: nowrap;
2766 -webkit-border-radius: 4px;
2767 border-radius: 4px;
2768 border: 1px solid #d9e8f8;
2769 line-height: 1.5em;
2770 }
2771
2772 #graph_content .branchtag,
2773 #graph_content .tagtag,
2774 #graph_content .bookbook {
2775 margin: 1.1em 0;
2776 margin-right: 0.5em;
2777 }
2778
2779 .branchtag,
2780 .tagtag,
2781 .bookbook {
2782 float: left;
2783 }
2784
2754 .right .logtags .branchtag,
2785 .right .logtags .branchtag,
2755 .logtags .branchtag,
2786 .logtags .tagtag,
2756 .spantag {
2787 .right .merge {
2788 float: right;
2789 line-height: 1em;
2790 margin: 1px 1px !important;
2791 display: block;
2792 }
2793
2794 .bookbook {
2795 border-color: #46A546;
2796 color: #46A546;
2797 }
2798
2799 .tagtag {
2800 border-color: #62cffc;
2801 color: #62cffc;
2802 }
2803
2804 .logtags .branchtag a:hover,
2805 .logtags .branchtag a,
2806 .branchtag a,
2807 .branchtag a:hover {
2808 text-decoration: none;
2809 color: inherit;
2810 }
2811 .logtags .tagtag {
2757 padding: 1px 3px 1px 3px;
2812 padding: 1px 3px 1px 3px;
2758 background-color: #bfbfbf;
2813 background-color: #62cffc;
2759 font-size: 10px;
2814 font-size: 10px;
2760 font-weight: bold;
2761 color: #ffffff;
2815 color: #ffffff;
2762 white-space: nowrap;
2816 white-space: nowrap;
2763 -webkit-border-radius: 3px;
2817 -webkit-border-radius: 3px;
2764 border-radius: 3px;
2818 border-radius: 3px;
2765 }
2819 }
2766 .right .logtags .branchtag a:hover, .logtags .branchtag a {
2820
2767 color: #ffffff;
2821 .tagtag a,
2768 }
2822 .tagtag a:hover,
2769 .right .logtags .branchtag a:hover, .logtags .branchtag a:hover {
2823 .logtags .tagtag a,
2824 .logtags .tagtag a:hover {
2770 text-decoration: none;
2825 text-decoration: none;
2771 color: #ffffff;
2826 color: inherit;
2772 }
2827 }
2773 .right .logtags .tagtag, .logtags .tagtag {
2828 .logbooks .bookbook, .logbooks .bookbook, .logtags .bookbook, .logtags .bookbook {
2774 padding: 1px 3px 1px 3px;
2829 padding: 1px 3px 1px 3px;
2775 background-color: #62cffc;
2830 background-color: #46A546;
2776 font-size: 10px;
2831 font-size: 10px;
2777 font-weight: bold;
2778 color: #ffffff;
2832 color: #ffffff;
2779 white-space: nowrap;
2833 white-space: nowrap;
2780 -webkit-border-radius: 3px;
2834 -webkit-border-radius: 3px;
2781 border-radius: 3px;
2835 border-radius: 3px;
2782 }
2836 }
2783 .right .logtags .tagtag a:hover, .logtags .tagtag a {
2837 .logbooks .bookbook, .logbooks .bookbook a, .right .logtags .bookbook, .logtags .bookbook a {
2784 color: #ffffff;
2785 }
2786 .right .logtags .tagtag a:hover, .logtags .tagtag a:hover {
2787 text-decoration: none;
2788 color: #ffffff;
2838 color: #ffffff;
2789 }
2839 }
2790 .right .logbooks .bookbook, .logbooks .bookbook, .right .logtags .bookbook, .logtags .bookbook {
2840
2791 padding: 1px 3px 1px 3px;
2841 .logbooks .bookbook, .logbooks .bookbook a:hover,
2792 background-color: #46A546;
2842 .logtags .bookbook, .logtags .bookbook a:hover,
2793 font-size: 10px;
2843 .bookbook a,
2794 font-weight: bold;
2844 .bookbook a:hover {
2795 color: #ffffff;
2796 text-transform: uppercase;
2797 white-space: nowrap;
2798 -webkit-border-radius: 3px;
2799 border-radius: 3px;
2800 }
2801 .right .logbooks .bookbook, .logbooks .bookbook a, .right .logtags .bookbook, .logtags .bookbook a {
2802 color: #ffffff;
2803 }
2804 .right .logbooks .bookbook, .logbooks .bookbook a:hover, .right .logtags .bookbook, .logtags .bookbook a:hover {
2805 text-decoration: none;
2845 text-decoration: none;
2806 color: #ffffff;
2846 color: inherit;
2807 }
2847 }
2808 div.browserblock {
2848 div.browserblock {
2809 overflow: hidden;
2849 overflow: hidden;
@@ -3468,7 +3508,6 b' div.gravatar img {'
3468
3508
3469 #content {
3509 #content {
3470 clear: both;
3510 clear: both;
3471 overflow: hidden;
3472 padding: 10px 10px 14px 10px;
3511 padding: 10px 10px 14px 10px;
3473 }
3512 }
3474
3513
@@ -3616,7 +3655,6 b' ins, div.options a:hover {'
3616
3655
3617 img,
3656 img,
3618 #header #header-inner #quick li a:hover span.normal,
3657 #header #header-inner #quick li a:hover span.normal,
3619 #header #header-inner #quick li ul li.last,
3620 #content div.box div.form div.fields div.field div.textarea table td table td a,
3658 #content div.box div.form div.fields div.field div.textarea table td table td a,
3621 #clone_url,
3659 #clone_url,
3622 #clone_url_id
3660 #clone_url_id
@@ -3660,8 +3698,17 b' div#legend_data, div#legend_container, d'
3660 padding: 0 10px 10px;
3698 padding: 0 10px 10px;
3661 }
3699 }
3662
3700
3663 #content div.box div.title ul.links li a:hover, #content div.box div.title ul.links li.ui-tabs-selected a {
3701 #content div.box div.title ul.links li a:hover,
3664 color: #bfe3ff;
3702 #content div.box div.title ul.links li.ui-tabs-selected a {
3703
3704 background: #6388ad; /* Old browsers */
3705 background: -moz-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* FF3.6+ */
3706 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0.1)), color-stop(100%,rgba(255,255,255,0))); /* Chrome,Safari4+ */
3707 background: -webkit-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* Chrome10+,Safari5.1+ */
3708 background: -o-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* Opera 11.10+ */
3709 background: -ms-linear-gradient(top, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* IE10+ */
3710 background: linear-gradient(to bottom, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 100%); /* W3C */
3711 /*filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#88bfe8', endColorstr='#70b0e0',GradientType=0 ); /* IE6-9 */*/
3665 }
3712 }
3666
3713
3667 #content div.box ol.lower-roman, #content div.box ol.upper-roman, #content div.box ol.lower-alpha, #content div.box ol.upper-alpha, #content div.box ol.decimal {
3714 #content div.box ol.lower-roman, #content div.box ol.upper-roman, #content div.box ol.lower-alpha, #content div.box ol.upper-alpha, #content div.box ol.decimal {
@@ -3669,6 +3716,7 b' div#legend_data, div#legend_container, d'
3669 }
3716 }
3670
3717
3671 #content div.box div.form, #content div.box div.table, #content div.box div.traffic {
3718 #content div.box div.form, #content div.box div.table, #content div.box div.traffic {
3719 position: relative;
3672 clear: both;
3720 clear: both;
3673 overflow: hidden;
3721 overflow: hidden;
3674 margin: 0;
3722 margin: 0;
@@ -3752,7 +3800,6 b' div.form div.fields div.field div.button'
3752 #content div.box div.form div.fields div.buttons input
3800 #content div.box div.form div.fields div.buttons input
3753 div.form div.fields div.buttons input,
3801 div.form div.fields div.buttons input,
3754 #content div.box div.action div.button input {
3802 #content div.box div.action div.button input {
3755 /*color: #000;*/
3756 font-size: 11px;
3803 font-size: 11px;
3757 font-weight: 700;
3804 font-weight: 700;
3758 margin: 0;
3805 margin: 0;
@@ -3926,13 +3973,7 b' div.form div.fields div.field div.highli'
3926 width: 600px;
3973 width: 600px;
3927 }
3974 }
3928
3975
3929 #changeset_content .container .left {
3976 #changeset_content .container .date, .ac .match {
3930 float: left;
3931 width: 75%;
3932 padding-left: 5px;
3933 }
3934
3935 #changeset_content .container .left .date, .ac .match {
3936 font-weight: 700;
3977 font-weight: 700;
3937 padding-top: 5px;
3978 padding-top: 5px;
3938 padding-bottom: 5px;
3979 padding-bottom: 5px;
@@ -4352,21 +4393,6 b' div.comment-inline-form {'
4352 padding: 4px 0px 6px 0px;
4393 padding: 4px 0px 6px 0px;
4353 }
4394 }
4354
4395
4355
4356 tr.hl-comment {
4357 /*
4358 background-color: #FFFFCC !important;
4359 */
4360 }
4361
4362 /*
4363 tr.hl-comment pre {
4364 border-top: 2px solid #FFEE33;
4365 border-left: 2px solid #FFEE33;
4366 border-right: 2px solid #FFEE33;
4367 }
4368 */
4369
4370 .comment-inline-form strong {
4396 .comment-inline-form strong {
4371 display: block;
4397 display: block;
4372 margin-bottom: 15px;
4398 margin-bottom: 15px;
@@ -4467,22 +4493,16 b' form.comment-inline-form {'
4467 margin: 2px 0px 8px 5px !important
4493 margin: 2px 0px 8px 5px !important
4468 }
4494 }
4469
4495
4470
4471 .notification-paginator {
4496 .notification-paginator {
4472 padding: 0px 0px 4px 16px;
4497 padding: 0px 0px 4px 16px;
4473 float: left;
4498 float: left;
4474 }
4499 }
4475
4500
4476 .menu_link_user {
4501 #context-pages .pull-request span,
4477 padding: 10px 8px 8px 8px !important;
4478 }
4479
4480 .menu_link_notifications {
4502 .menu_link_notifications {
4481 padding: 4px 4px !important;
4503 padding: 4px 4px !important;
4482 margin: 7px 4px 0px 0px !important;
4483 text-align: center;
4504 text-align: center;
4484 color: #888 !important;
4505 color: #888 !important;
4485 font-size: 10px;
4486 background-color: #DEDEDE !important;
4506 background-color: #DEDEDE !important;
4487 border-radius: 4px !important;
4507 border-radius: 4px !important;
4488 -webkit-border-radius: 4px !important;
4508 -webkit-border-radius: 4px !important;
@@ -509,7 +509,7 b' var show_changeset_tooltip = function(){'
509 };
509 };
510
510
511 var onSuccessFollow = function(target){
511 var onSuccessFollow = function(target){
512 var f = YUD.get(target.id);
512 var f = YUD.get(target);
513 var f_cnt = YUD.get('current_followers_count');
513 var f_cnt = YUD.get('current_followers_count');
514
514
515 if(YUD.hasClass(f, 'follow')){
515 if(YUD.hasClass(f, 'follow')){
@@ -576,6 +576,7 b' var showRepoSize = function(target, repo'
576 return false;
576 return false;
577 }
577 }
578
578
579
579 /**
580 /**
580 * TOOLTIP IMPL.
581 * TOOLTIP IMPL.
581 */
582 */
@@ -6,11 +6,7 b''
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 ${_('Edit Repository Settings')}
10 &raquo;
11 ${h.repo_link(c.rhodecode_db_repo.groups_and_repo)}
12 &raquo;
13 ${_('edit')}
14 </%def>
10 </%def>
15
11
16 <%def name="page_nav()">
12 <%def name="page_nav()">
@@ -18,6 +14,7 b''
18 </%def>
14 </%def>
19
15
20 <%def name="main()">
16 <%def name="main()">
17 ${self.context_bar('options')}
21 <div class="box box-left">
18 <div class="box box-left">
22 <!-- box / title -->
19 <!-- box / title -->
23 <div class="title">
20 <div class="title">
@@ -61,11 +61,144 b''
61 </div>
61 </div>
62 </%def>
62 </%def>
63
63
64 <%def name="context_bar(current=None)">
65 %if c.repo_name:
66 ${repo_context_bar(current)}
67 %endif
68 </%def>
69
70 <%def name="admin_menu()">
71 <ul class="admin_menu">
72 <li>${h.link_to(_('admin journal'),h.url('admin_home'),class_='journal ')}</li>
73 <li>${h.link_to(_('repositories'),h.url('repos'),class_='repos')}</li>
74 <li>${h.link_to(_('repository groups'),h.url('repos_groups'),class_='repos_groups')}</li>
75 <li>${h.link_to(_('users'),h.url('users'),class_='users')}</li>
76 <li>${h.link_to(_('user groups'),h.url('users_groups'),class_='groups')}</li>
77 <li>${h.link_to(_('permissions'),h.url('edit_permission',id='default'),class_='permissions')}</li>
78 <li>${h.link_to(_('ldap'),h.url('ldap_home'),class_='ldap')}</li>
79 <li>${h.link_to(_('defaults'),h.url('defaults'),class_='defaults')}</li>
80 <li class="last">${h.link_to(_('settings'),h.url('admin_settings'),class_='settings')}</li>
81 </ul>
82 </%def>
83
84 <%def name="admin_menu_simple()">
85 <ul>
86 <li>${h.link_to(_('repositories groups'),h.url('repos_groups'),class_='repos_groups')}</li>
87 </ul>
88 </%def>
89
90 <%def name="repo_context_bar(current=None)">
91 <%
92 def follow_class():
93 if c.repository_following:
94 return h.literal('following')
95 else:
96 return h.literal('follow')
97 %>
98 <%
99 def is_current(selected):
100 if selected == current:
101 return h.literal('class="current"')
102 %>
103
104 <!--- CONTEXT BAR -->
105 <div id="context-bar" class="box">
106 <div id="context-top">
107 <div id="breadcrumbs">
108 ${h.link_to(_(u'Repositories'),h.url('home'))}
109 »
110 ${h.repo_link(c.rhodecode_db_repo.groups_and_repo)}
111 </div>
112 ## TODO: this check feels wrong, it would be better to have a check for permissions
113 ## also it feels like a job for the controller
114 %if c.rhodecode_user.username != 'default':
115 <ul id="context-actions" class="horizontal-list">
116 <li>
117 <button class="${follow_class()}" onclick="javascript:toggleFollowingRepo(this,${c.rhodecode_db_repo.repo_id},'${str(h.get_token())}');">
118 <!--span class="icon show-follow follow"></span>
119 <span class="icon show-following following"></span-->
120 <span class="show-follow">${_('Follow')}</span>
121 <span class="show-following">${_('Unfollow')}</span>
122 </button>
123 </li>
124 <li><a href="${h.url('repo_fork_home',repo_name=c.repo_name)}" class="fork">${_('Fork')}</a></li>
125 %if h.is_hg(c.rhodecode_repo):
126 <li><a href="${h.url('pullrequest_home',repo_name=c.repo_name)}" class="pull-request">${_('Create Pull Request')}</a></li>
127 %endif
128 </ul>
129 %endif
130 </div>
131 <div id="context-state">
132 <!--button id="revision-changer">
133 <span class="branch-name">graphics/shader-move</span>
134 <span class="revision">@73318:8d3d6ee94072</span>
135 </button-->
136 <ul id="context-pages" class="horizontal-list">
137 <li ${is_current('summary')}><a href="${h.url('summary_home', repo_name=c.repo_name)}" class="summary">${_('Summary')}</a></li>
138 <li ${is_current('changelog')}><a href="${h.url('changelog_home', repo_name=c.repo_name)}" class="changelogs">${_('Changelog')}</a></li>
139 <li ${is_current('files')}><a href="${h.url('files_home', repo_name=c.repo_name)}" class="files"></span>${_('Files')}</a></li>
140 <li ${is_current('switch-to')}>
141 <a href="#" id="branch_tag_switcher_2" class="dropdown switch-to"></span>${_('Switch To')}</a>
142 <ul id="switch_to_list_2" class="switch_to submenu">
143 <li><a href="#">${_('loading...')}</a></li>
144 </ul>
145 </li>
146 <li ${is_current('options')}>
147 <a href="#" class="dropdown options"></span>Options</a>
148 <ul>
149 %if h.HasRepoPermissionAll('repository.admin')(c.repo_name):
150 %if h.HasPermissionAll('hg.admin')('access settings on repository'):
151 <li>${h.link_to(_('Settings'),h.url('edit_repo',repo_name=c.repo_name),class_='settings')}</li>
152 %else:
153 <li>${h.link_to(_('Settings'),h.url('repo_settings_home',repo_name=c.repo_name),class_='settings')}</li>
154 %endif
155 %endif
156 %if c.rhodecode_db_repo.fork:
157 <li>${h.link_to(_('Compare fork'),h.url('compare_url',repo_name=c.rhodecode_db_repo.fork.repo_name,org_ref_type='branch',org_ref='default',other_repo=c.repo_name,other_ref_type='branch',other_ref=request.GET.get('branch') or 'default'),class_='compare_request')}</li>
158 %endif
159 <li>${h.link_to(_('Lightweight changelog'),h.url('shortlog_home',repo_name=c.repo_name),class_='shortlog')}</li>
160 <li>${h.link_to(_('Search'),h.url('search_repo',repo_name=c.repo_name),class_='search')}</li>
161
162 %if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name) and c.rhodecode_db_repo.enable_locking:
163 %if c.rhodecode_db_repo.locked[0]:
164 <li>${h.link_to(_('Unlock'), h.url('toggle_locking',repo_name=c.repo_name),class_='locking_del')}</li>
165 %else:
166 <li>${h.link_to(_('Lock'), h.url('toggle_locking',repo_name=c.repo_name),class_='locking_add')}</li>
167 %endif
168 %endif
169 </ul>
170 </li>
171 <li ${is_current('showpullrequest')}>
172 <a href="${h.url('pullrequest_show_all',repo_name=c.repo_name)}" title="${_('Show Pull Requests')}" class="pull-request">Pull Requests
173 %if c.repository_pull_requests:
174 <span>${c.repository_pull_requests}</span>
175 %endif
176 </a>
177 </li>
178 </ul>
179 </div>
180 </div>
181 <script type="text/javascript">
182 YUE.on('branch_tag_switcher_2','mouseover',function(){
183 var loaded = YUD.hasClass('branch_tag_switcher_2','loaded');
184 if(!loaded){
185 YUD.addClass('branch_tag_switcher_2','loaded');
186 ypjax("${h.url('branch_tag_switcher',repo_name=c.repo_name)}",'switch_to_list_2',
187 function(o){},
188 function(o){YUD.removeClass('branch_tag_switcher_2','loaded');}
189 ,null);
190 }
191 return false;
192 });
193 </script>
194 <!--- END CONTEXT BAR -->
195 </%def>
196
64 <%def name="usermenu()">
197 <%def name="usermenu()">
65 ## USER MENU
198 ## USER MENU
66 <li>
199 <li>
67 <a class="menu_link" id="quick_login_link">
200 <a class="menu_link childs" id="quick_login_link">
68 <span class="icon" style="padding:5px 5px 0px 5px">
201 <span class="icon">
69 <img src="${h.gravatar_url(c.rhodecode_user.email,20)}" alt="avatar">
202 <img src="${h.gravatar_url(c.rhodecode_user.email,20)}" alt="avatar">
70 </span>
203 </span>
71 %if c.rhodecode_user.username != 'default':
204 %if c.rhodecode_user.username != 'default':
@@ -122,12 +255,12 b''
122 <div class="full_name">${c.rhodecode_user.full_name_or_username}</div>
255 <div class="full_name">${c.rhodecode_user.full_name_or_username}</div>
123 <div class="email">${c.rhodecode_user.email}</div>
256 <div class="email">${c.rhodecode_user.email}</div>
124 <div class="big_gravatar"><img alt="gravatar" src="${h.gravatar_url(c.rhodecode_user.email,48)}" /></div>
257 <div class="big_gravatar"><img alt="gravatar" src="${h.gravatar_url(c.rhodecode_user.email,48)}" /></div>
125 <div class="notifications"><a href="${h.url('notifications')}">${_('Notifications')}</a></div>
258 ##<div class="notifications"><a href="${h.url('notifications')}">${_('Notifications')}</a></div>
126 <div class="unread"><a href="${h.url('notifications')}">${_('Unread')}: ${c.unread_notifications}</a></div>
259 <div class="unread"><a href="${h.url('notifications')}">${_('Unread notifications')}: ${c.unread_notifications}</a></div>
127 </div>
260 </div>
128 <div class="links_right">
261 <div class="links_right">
129 <ol class="links">
262 <ol class="links">
130 <li>${h.link_to(_(u'Home'),h.url('home'))}</li>
263 ##<li>${h.link_to(_(u'Home'),h.url('home'))}</li>
131 <li>${h.link_to(_(u'Journal'),h.url('journal'))}</li>
264 <li>${h.link_to(_(u'Journal'),h.url('journal'))}</li>
132 <li>${h.link_to(_(u'My account'),h.url('admin_settings_my_account'))}</li>
265 <li>${h.link_to(_(u'My account'),h.url('admin_settings_my_account'))}</li>
133 <li class="logout">${h.link_to(_(u'Log Out'),h.url('logout_home'))}</li>
266 <li class="logout">${h.link_to(_(u'Log Out'),h.url('logout_home'))}</li>
@@ -146,14 +279,11 b''
146 if selected == current:
279 if selected == current:
147 return h.literal('class="current"')
280 return h.literal('class="current"')
148 %>
281 %>
149 <ul id="quick">
282 <ul id="quick" class="horizontal-list">
150 <!-- repo switcher -->
283 <!-- repo switcher -->
151 <li ${is_current('home')}>
284 <li ${is_current('home')}>
152 <a class="menu_link" id="repo_switcher" title="${_('Switch repository')}" href="${h.url('home')}">
285 <a class="menu_link repo_switcher childs" id="repo_switcher" title="${_('Switch repository')}" href="${h.url('home')}">
153 <span class="icon">
286 ${_('Repositories')}
154 <img src="${h.url('/images/icons/database.png')}" alt="${_('Products')}" />
155 </span>
156 <span>${_('Repositories')}</span>
157 </a>
287 </a>
158 <ul id="repo_switcher_list" class="repo_switcher">
288 <ul id="repo_switcher_list" class="repo_switcher">
159 <li>
289 <li>
@@ -161,202 +291,41 b''
161 </li>
291 </li>
162 </ul>
292 </ul>
163 </li>
293 </li>
164 ## we render this menu only not for those pages
294 ##ROOT MENU
165 %if current not in ['home','admin', 'search', 'journal']:
295 %if c.rhodecode_user.username != 'default':
166 ##REGULAR MENU
296 <li ${is_current('journal')}>
167 <li ${is_current('summary')}>
297 <a class="menu_link journal" title="${_('Show recent activity')}" href="${h.url('journal')}">
168 <a class="menu_link" title="${_('Summary page')}" href="${h.url('summary_home',repo_name=c.repo_name)}">
298 ${_('Journal')}
169 <span class="icon">
299 </a>
170 <img src="${h.url('/images/icons/clipboard_16.png')}" alt="${_('Summary')}" />
171 </span>
172 <span>${_('Summary')}</span>
173 </a>
174 </li>
175 <li ${is_current('changelog')}>
176 <a class="menu_link" title="${_('Changeset list')}" href="${h.url('changelog_home',repo_name=c.repo_name)}">
177 <span class="icon">
178 <img src="${h.url('/images/icons/time.png')}" alt="${_('Changelog')}" />
179 </span>
180 <span>${_('Changelog')}</span>
181 </a>
182 </li>
300 </li>
183 <li ${is_current('switch_to')}>
301 %else:
184 <a class="menu_link" id="branch_tag_switcher" title="${_('Switch to')}" href="#">
302 <li ${is_current('journal')}>
185 <span class="icon">
303 <a class="menu_link journal" title="${_('Public journal')}" href="${h.url('public_journal')}">
186 <img src="${h.url('/images/icons/arrow_switch.png')}" alt="${_('Switch to')}" />
304 ${_('Public journal')}
187 </span>
305 </a>
188 <span>${_('Switch to')}</span>
189 </a>
190 <ul id="switch_to_list" class="switch_to">
191 <li><a href="#">${_('loading...')}</a></li>
192 </ul>
193 </li>
194 <li ${is_current('files')}>
195 <a class="menu_link" title="${_('Show repository content')}" href="${h.url('files_home',repo_name=c.repo_name)}">
196 <span class="icon">
197 <img src="${h.url('/images/icons/file.png')}" alt="${_('Files')}" />
198 </span>
199 <span>${_('Files')}</span>
200 </a>
201 </li>
306 </li>
202 <li ${is_current('options')}>
307 %endif
203 <a class="menu_link" title="${_('Options')}" href="#">
308 <li ${is_current('search')}>
204 <span class="icon">
309 <a class="menu_link search" title="${_('Search in repositories')}" href="${h.url('search')}">
205 <img src="${h.url('/images/icons/table_gear.png')}" alt="${_('Admin')}" />
310 ${_('Search')}
206 </span>
311 </a>
207 <span>${_('Options')}</span>
312 </li>
208 </a>
313 % if h.HasPermissionAll('hg.admin')('access admin main page'):
209 <ul>
314 <li ${is_current('admin')}>
210 %if h.HasRepoPermissionAll('repository.admin')(c.repo_name):
315 <a class="menu_link admin childs" title="${_('Admin')}" href="${h.url('admin_home')}">
211 %if h.HasPermissionAll('hg.admin')('access settings on repository'):
316 ${_('Admin')}
212 <li>${h.link_to(_('repository settings'),h.url('edit_repo',repo_name=c.repo_name),class_='settings')}</li>
317 </a>
213 %else:
318 ${admin_menu()}
214 <li>${h.link_to(_('repository settings'),h.url('repo_settings_home',repo_name=c.repo_name),class_='settings')}</li>
215 %endif
216 %endif
217
218 <li>${h.link_to(_('fork'),h.url('repo_fork_home',repo_name=c.repo_name),class_='fork')}</li>
219 %if h.is_hg(c.rhodecode_repo):
220 <li>${h.link_to(_('open new pull request'),h.url('pullrequest_home',repo_name=c.repo_name),class_='pull_request')}</li>
221 %endif
222 %if c.rhodecode_db_repo.fork:
223 <li>${h.link_to(_('compare fork'),h.url('compare_url',repo_name=c.rhodecode_db_repo.fork.repo_name,org_ref_type='branch',org_ref='default',other_repo=c.repo_name,other_ref_type='branch',other_ref=request.GET.get('branch') or 'default'),class_='compare_request')}</li>
224 %endif
225 <li>${h.link_to(_('lightweight changelog'),h.url('shortlog_home',repo_name=c.repo_name),class_='shortlog')}</li>
226 <li>${h.link_to(_('search'),h.url('search_repo',repo_name=c.repo_name),class_='search')}</li>
227
228 %if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name) and c.rhodecode_db_repo.enable_locking:
229 %if c.rhodecode_db_repo.locked[0]:
230 <li>${h.link_to(_('unlock'), h.url('toggle_locking',repo_name=c.repo_name),class_='locking_del')}</li>
231 %else:
232 <li>${h.link_to(_('lock'), h.url('toggle_locking',repo_name=c.repo_name),class_='locking_add')}</li>
233 %endif
234 %endif
235
236 % if h.HasPermissionAll('hg.admin')('access admin main page'):
237 <li>
238 ${h.link_to(_('admin'),h.url('admin_home'),class_='admin')}
239 <%def name="admin_menu()">
240 <ul>
241 <li>${h.link_to(_('admin journal'),h.url('admin_home'),class_='journal')}</li>
242 <li>${h.link_to(_('repositories'),h.url('repos'),class_='repos')}</li>
243 <li>${h.link_to(_('repository groups'),h.url('repos_groups'),class_='repos_groups')}</li>
244 <li>${h.link_to(_('users'),h.url('users'),class_='users')}</li>
245 <li>${h.link_to(_('user groups'),h.url('users_groups'),class_='groups')}</li>
246 <li>${h.link_to(_('permissions'),h.url('edit_permission',id='default'),class_='permissions')}</li>
247 <li>${h.link_to(_('ldap'),h.url('ldap_home'),class_='ldap')}</li>
248 <li>${h.link_to(_('defaults'),h.url('defaults'),class_='defaults')}</li>
249 <li class="last">${h.link_to(_('settings'),h.url('admin_settings'),class_='settings')}</li>
250 </ul>
251 </%def>
252 ## ADMIN MENU
253 ${admin_menu()}
254 </li>
255 ## if you're a admin of any groups, show admin menu for it
256 % elif c.rhodecode_user.groups_admin:
257 <li>
258 ${h.link_to(_('admin'),h.url('admin_home'),class_='admin')}
259 <%def name="admin_menu_simple()">
260 <ul>
261 <li>${h.link_to(_('repository groups'),h.url('repos_groups'),class_='repos_groups')}</li>
262 </ul>
263 </%def>
264 ## ADMIN MENU
265 ${admin_menu_simple()}
266 </li>
267 % endif
268 </ul>
269 </li>
270 <li>
271 <a class="menu_link" title="${_('Followers')}" href="${h.url('repo_followers_home',repo_name=c.repo_name)}">
272 <span class="icon_short">
273 <img src="${h.url('/images/icons/heart.png')}" alt="${_('Followers')}" />
274 </span>
275 <span id="current_followers_count" class="short">${c.repository_followers}</span>
276 </a>
277 </li>
319 </li>
278 <li>
320 % elif c.rhodecode_user.groups_admin:
279 <a class="menu_link" title="${_('Forks')}" href="${h.url('repo_forks_home',repo_name=c.repo_name)}">
321 <li ${is_current('admin')}>
280 <span class="icon_short">
322 <a class="menu_link admin childs" title="${_('Admin')}" href="${h.url('admin_home')}">
281 <img src="${h.url('/images/icons/arrow_divide.png')}" alt="${_('Forks')}" />
323 ${_('Admin')}
282 </span>
324 </a>
283 <span class="short">${c.repository_forks}</span>
325 ${admin_menu_simple()}
284 </a>
326 </li>
285 </li>
327 % endif
286 <li>
328 ${usermenu()}
287 <a class="menu_link" title="${_('Pull requests')}" href="${h.url('pullrequest_show_all',repo_name=c.repo_name)}">
288 <span class="icon_short">
289 <img src="${h.url('/images/icons/arrow_join.png')}" alt="${_('Pull requests')}" />
290 </span>
291 <span class="short">${c.repository_pull_requests}</span>
292 </a>
293 </li>
294 ${usermenu()}
295 <script type="text/javascript">
296 YUE.on('branch_tag_switcher','mouseover',function(){
297 var loaded = YUD.hasClass('branch_tag_switcher','loaded');
298 if(!loaded){
299 YUD.addClass('branch_tag_switcher','loaded');
300 ypjax("${h.url('branch_tag_switcher',repo_name=c.repo_name)}",'switch_to_list',
301 function(o){},
302 function(o){YUD.removeClass('branch_tag_switcher','loaded');}
303 ,null);
304 }
305 return false;
306 });
307 </script>
308 %else:
309 ##ROOT MENU
310 %if c.rhodecode_user.username != 'default':
311 <li ${is_current('journal')}>
312 <a class="menu_link" title="${_('Show recent activity')}" href="${h.url('journal')}">
313 <span class="icon">
314 <img src="${h.url('/images/icons/book.png')}" alt="${_('Journal')}" />
315 </span>
316 <span>${_('Journal')}</span>
317 </a>
318 </li>
319 %else:
320 <li ${is_current('journal')}>
321 <a class="menu_link" title="${_('Public journal')}" href="${h.url('public_journal')}">
322 <span class="icon">
323 <img src="${h.url('/images/icons/book.png')}" alt="${_('Public journal')}" />
324 </span>
325 <span>${_('Public journal')}</span>
326 </a>
327 </li>
328 %endif
329 <li ${is_current('search')}>
330 <a class="menu_link" title="${_('Search in repositories')}" href="${h.url('search')}">
331 <span class="icon">
332 <img src="${h.url('/images/icons/search_16.png')}" alt="${_('Search')}" />
333 </span>
334 <span>${_('Search')}</span>
335 </a>
336 </li>
337 % if h.HasPermissionAll('hg.admin')('access admin main page'):
338 <li ${is_current('admin')}>
339 <a class="menu_link" title="${_('Admin')}" href="${h.url('admin_home')}">
340 <span class="icon">
341 <img src="${h.url('/images/icons/cog_edit.png')}" alt="${_('Admin')}" />
342 </span>
343 <span>${_('Admin')}</span>
344 </a>
345 ${admin_menu()}
346 </li>
347 % elif c.rhodecode_user.groups_admin:
348 <li ${is_current('admin')}>
349 <a class="menu_link" title="${_('Admin')}" href="${h.url('admin_home')}">
350 <span class="icon">
351 <img src="${h.url('/images/icons/cog_edit.png')}" alt="${_('Admin')}" />
352 </span>
353 <span>${_('Admin')}</span>
354 </a>
355 ${admin_menu_simple()}
356 </li>
357 % endif
358 ${usermenu()}
359 %endif
360 <script type="text/javascript">
329 <script type="text/javascript">
361 YUE.on('repo_switcher','mouseover',function(){
330 YUE.on('repo_switcher','mouseover',function(){
362 var target = 'q_filter_rs';
331 var target = 'q_filter_rs';
@@ -11,6 +11,8 b''
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
15 <link rel="stylesheet" type="text/css" href="${h.url('/css/contextbar.css', ver=c.rhodecode_version)}"/>
14 ## EXTRA FOR CSS
16 ## EXTRA FOR CSS
15 ${self.css_extra()}
17 ${self.css_extra()}
16 </%def>
18 </%def>
@@ -8,11 +8,7 b''
8
8
9 <%def name="breadcrumbs_links()">
9 <%def name="breadcrumbs_links()">
10 <input class="q_filter_box" id="q_filter_bookmarks" size="15" type="text" name="filter" value="${_('quick filter...')}"/>
10 <input class="q_filter_box" id="q_filter_bookmarks" size="15" type="text" name="filter" value="${_('quick filter...')}"/>
11 ${h.link_to(_(u'Home'),h.url('/'))}
11 ${_('Bookmarks')}
12 &raquo;
13 ${h.repo_link(c.rhodecode_db_repo.groups_and_repo)}
14 &raquo;
15 ${_('bookmarks')}
16 </%def>
12 </%def>
17
13
18 <%def name="page_nav()">
14 <%def name="page_nav()">
@@ -20,6 +16,7 b''
20 </%def>
16 </%def>
21 <%def name="main()">
17 <%def name="main()">
22 <div class="box">
18 <div class="box">
19 ${self.context_bar('switch-to')}
23 <!-- box / title -->
20 <!-- box / title -->
24 <div class="title">
21 <div class="title">
25 ${self.breadcrumbs()}
22 ${self.breadcrumbs()}
@@ -7,11 +7,7 b''
7
7
8 <%def name="breadcrumbs_links()">
8 <%def name="breadcrumbs_links()">
9 <input class="q_filter_box" id="q_filter_branches" size="15" type="text" name="filter" value="${_('quick filter...')}"/>
9 <input class="q_filter_box" id="q_filter_branches" size="15" type="text" name="filter" value="${_('quick filter...')}"/>
10 ${h.link_to(_(u'Home'),h.url('/'))}
10 ${_('Branches')}
11 &raquo;
12 ${h.repo_link(c.rhodecode_db_repo.groups_and_repo)}
13 &raquo;
14 ${_('branches')}
15 </%def>
11 </%def>
16
12
17 <%def name="page_nav()">
13 <%def name="page_nav()">
@@ -19,6 +15,7 b''
19 </%def>
15 </%def>
20
16
21 <%def name="main()">
17 <%def name="main()">
18 ${self.context_bar('switch-to')}
22 <div class="box">
19 <div class="box">
23 <!-- box / title -->
20 <!-- box / title -->
24 <div class="title">
21 <div class="title">
@@ -7,12 +7,8 b''
7 </%def>
7 </%def>
8
8
9 <%def name="breadcrumbs_links()">
9 <%def name="breadcrumbs_links()">
10 ${h.link_to(_(u'Home'),h.url('/'))}
11 &raquo;
12 ${h.repo_link(c.rhodecode_db_repo.groups_and_repo)}
13 &raquo;
14 <% size = c.size if c.size <= c.total_cs else c.total_cs %>
10 <% size = c.size if c.size <= c.total_cs else c.total_cs %>
15 ${_('changelog')} - ${ungettext('showing %d out of %d revision', 'showing %d out of %d revisions', size) % (size, c.total_cs)}
11 ${_('Changelog')} - ${ungettext('showing %d out of %d revision', 'showing %d out of %d revisions', size) % (size, c.total_cs)}
16 </%def>
12 </%def>
17
13
18 <%def name="page_nav()">
14 <%def name="page_nav()">
@@ -20,6 +16,7 b''
20 </%def>
16 </%def>
21
17
22 <%def name="main()">
18 <%def name="main()">
19 ${self.context_bar('changelog')}
23 <div class="box">
20 <div class="box">
24 <!-- box / title -->
21 <!-- box / title -->
25 <div class="title">
22 <div class="title">
@@ -28,10 +25,6 b''
28 <div class="table">
25 <div class="table">
29 % if c.pagination:
26 % if c.pagination:
30 <div id="graph">
27 <div id="graph">
31 <div id="graph_nodes">
32 <canvas id="graph_canvas"></canvas>
33 </div>
34 <div id="graph_content">
35 <div class="info_box" style="clear: both;padding: 10px 6px;min-height: 12px;text-align: right;">
28 <div class="info_box" style="clear: both;padding: 10px 6px;min-height: 12px;text-align: right;">
36 <a href="#" class="ui-btn small" id="rev_range_container" style="display:none"></a>
29 <a href="#" class="ui-btn small" id="rev_range_container" style="display:none"></a>
37 <a href="#" class="ui-btn small" id="rev_range_clear" style="display:none">${_('Clear selection')}</a>
30 <a href="#" class="ui-btn small" id="rev_range_clear" style="display:none">${_('Clear selection')}</a>
@@ -42,123 +35,105 b''
42 %if h.is_hg(c.rhodecode_repo):
35 %if h.is_hg(c.rhodecode_repo):
43 <a id="open_new_pr" href="${h.url('pullrequest_home',repo_name=c.repo_name)}" class="ui-btn small">${_('Open new pull request')}</a>
36 <a id="open_new_pr" href="${h.url('pullrequest_home',repo_name=c.repo_name)}" class="ui-btn small">${_('Open new pull request')}</a>
44 %endif
37 %endif
38 </div>
39 <div class="container_header">
40 ${h.form(h.url.current(),method='get')}
41 <div style="float:left">
42 ${h.submit('set',_('Show'),class_="ui-btn")}
43 ${h.text('size',size=1,value=c.size)}
44 ${_('revisions')}
45 </div>
45 </div>
46 <div class="container_header">
46 ${h.end_form()}
47 ${h.form(h.url.current(),method='get')}
48 <div class="info_box" style="float:left">
49 ${h.submit('set',_('Show'),class_="ui-btn")}
50 ${h.text('size',size=1,value=c.size)}
51 ${_('revisions')}
52 </div>
53 ${h.end_form()}
54 <div style="float:right">${h.select('branch_filter',c.branch_name,c.branch_filters)}</div>
47 <div style="float:right">${h.select('branch_filter',c.branch_name,c.branch_filters)}</div>
55 </div>
48 </div>
49 <div id="graph_nodes">
50 <canvas id="graph_canvas"></canvas>
51 </div>
52 <div id="graph_content">
56
53
54 <table id="changesets">
55 <tbody>
57 %for cnt,cs in enumerate(c.pagination):
56 %for cnt,cs in enumerate(c.pagination):
58 <div id="chg_${cnt+1}" class="container ${'tablerow%s' % (cnt%2)}">
57 <tr id="chg_${cnt+1}" class="container ${'tablerow%s' % (cnt%2)}">
59 <div class="left">
58 <td class="checkbox">
60 <div>
61 ${h.checkbox(cs.raw_id,class_="changeset_range")}
59 ${h.checkbox(cs.raw_id,class_="changeset_range")}
62 <span class="tooltip" title="${h.tooltip(h.age(cs.date))}"><a href="${h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id)}"><span class="changeset_id">${cs.revision}:<span class="changeset_hash">${h.short_id(cs.raw_id)}</span></span></a></span>
60 </td>
63 </div>
61 <td class="author">
64 <div class="author">
62 <img alt="gravatar" src="${h.gravatar_url(h.email_or_none(cs.author),16)}"/>
65 <div class="gravatar">
63 <span title="${cs.author}" class="user">${h.shorter(h.person(cs.author),22)}</span>
66 <img alt="gravatar" src="${h.gravatar_url(h.email_or_none(cs.author),16)}"/>
64 </td>
67 </div>
65 <td class="hash">
68 <div title="${cs.author}" class="user">${h.shorter(h.person(cs.author),22)}</div>
66 <a href="${h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id)}">
69 </div>
67 <span class="changeset_hash">${h.short_id(cs.raw_id)}</span>
70 <div class="date">${h.fmt_date(cs.date)}</div>
68 </a>
71 </div>
69 </td>
72 <div class="mid">
70 <td class="date">
73 <div class="message">${h.urlify_commit(cs.message, c.repo_name,h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}</div>
71 <div class="date">${h.age(cs.date,True)}</div>
74 <div class="expand"><span class="expandtext">&darr; ${_('Show more')} &darr;</span></div>
72 </td>
75 </div>
73 <td class="mid">
76 <div class="right">
74 <div class="log-container">
77 <div class="changes">
75 <div class="message">${h.urlify_commit(cs.message, c.repo_name,h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}</div>
78 <div id="changed_total_${cs.raw_id}" style="float:right;" class="changed_total tooltip" title="${h.tooltip(_('Affected number of files, click to show more details'))}">${len(cs.affected_files)}</div>
76 <div class="expand"><span class="expandtext">&darr; ${_('Show more')} &darr;</span></div>
77 <div class="extra-container">
78 %if c.comments.get(cs.raw_id,[]):
79 <div class="comments-container">
79 <div class="comments-container">
80 %if len(c.comments.get(cs.raw_id,[])) > 0:
81 <div class="comments-cnt" title="${('comments')}">
80 <div class="comments-cnt" title="${('comments')}">
82 <a href="${h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id,anchor='comment-%s' % c.comments[cs.raw_id][0].comment_id)}">
81 <a href="${h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id,anchor='comment-%s' % c.comments[cs.raw_id][0].comment_id)}">
83 <div class="comments-cnt">${len(c.comments[cs.raw_id])}</div>
82 ${len(c.comments[cs.raw_id])}
84 <img src="${h.url('/images/icons/comments.png')}">
83 </a>
85 </a>
86 </div>
84 </div>
87 %endif
88 </div>
85 </div>
89 <div class="changeset-status-container">
86 %endif
90 %if c.statuses.get(cs.raw_id):
87 %if h.is_hg(c.rhodecode_repo):
91 <div title="${_('Changeset status')}" class="changeset-status-lbl">${c.statuses.get(cs.raw_id)[1]}</div>
88 %for book in cs.bookmarks:
92 <div class="changeset-status-ico">
89 <div class="bookbook" title="${'%s %s' % (_('bookmark'),book)}">
93 %if c.statuses.get(cs.raw_id)[2]:
90 ${h.link_to(h.shorter(book),h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))}
94 <a class="tooltip" title="${_('Click to open associated pull request #%s' % c.statuses.get(cs.raw_id)[2])}" href="${h.url('pullrequest_show',repo_name=c.statuses.get(cs.raw_id)[3],pull_request_id=c.statuses.get(cs.raw_id)[2])}"><img src="${h.url('/images/icons/flag_status_%s.png' % c.statuses.get(cs.raw_id)[0])}" /></a>
91 </div>
95 %else:
92 %endfor
96 <img src="${h.url('/images/icons/flag_status_%s.png' % c.statuses.get(cs.raw_id)[0])}" />
93 %endif
97 %endif
94 %for tag in cs.tags:
98 </div>
95 <div class="tagtag" title="${'%s %s' % (_('tag'),tag)}">
99 %endif
96 ${h.link_to(h.shorter(tag),h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))}
100 </div>
101 </div>
102 %if cs.parents:
103 %for p_cs in reversed(cs.parents):
104 <div class="parent">${_('Parent')}
105 <span class="changeset_id">${p_cs.revision}:<span class="changeset_hash">${h.link_to(h.short_id(p_cs.raw_id),
106 h.url('changeset_home',repo_name=c.repo_name,revision=p_cs.raw_id),title=p_cs.message)}</span></span>
107 </div>
97 </div>
108 %endfor
98 %endfor
109 %else:
99 %if (not c.branch_name) and cs.branch:
110 <div class="parent">${_('No parents')}</div>
100 <div class="branchtag" title="${'%s %s' % (_('branch'),cs.branch)}">
111 %endif
101 ${h.link_to(h.shorter(cs.branch),h.url('changelog_home',repo_name=c.repo_name,branch=cs.branch))}
112
102 </div>
113 <span class="logtags">
114 %if len(cs.parents)>1:
115 <span class="merge">${_('merge')}</span>
116 %endif
117 %if cs.branch:
118 <span class="branchtag" title="${'%s %s' % (_('branch'),cs.branch)}">
119 ${h.link_to(h.shorter(cs.branch),h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))}
120 </span>
121 %endif
103 %endif
122 %if h.is_hg(c.rhodecode_repo):
104 </div>
123 %for book in cs.bookmarks:
105 </div>
124 <span class="bookbook" title="${'%s %s' % (_('bookmark'),book)}">
106 </td>
125 ${h.link_to(h.shorter(book),h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))}
107 </tr>
126 </span>
108 %endfor
127 %endfor
109 </tbody>
128 %endif
110 </table>
129 %for tag in cs.tags:
130 <span class="tagtag" title="${'%s %s' % (_('tag'),tag)}">
131 ${h.link_to(h.shorter(tag),h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))}</span>
132 %endfor
133 </span>
134 </div>
135 </div>
136
111
137 %endfor
112
138 <div class="pagination-wh pagination-left">
113 <div class="pagination-wh pagination-left">
139 ${c.pagination.pager('$link_previous ~2~ $link_next')}
114 ${c.pagination.pager('$link_previous ~2~ $link_next')}
140 </div>
115 </div>
141 </div>
142 </div>
116 </div>
117 </div>
143
118
144 <script type="text/javascript" src="${h.url('/js/graph.js')}"></script>
119 <script type="text/javascript" src="${h.url('/js/graph.js')}"></script>
145 <script type="text/javascript">
120 <script type="text/javascript">
146 YAHOO.util.Event.onDOMReady(function(){
121 YAHOO.util.Event.onDOMReady(function(){
147
122
148 //Monitor range checkboxes and build a link to changesets
123 //Monitor range checkboxes and build a link to changesets
149 //ranges
124 //ranges
150 var checkboxes = YUD.getElementsByClassName('changeset_range');
125 var checkboxes = YUD.getElementsByClassName('changeset_range');
151 var url_tmpl = "${h.url('changeset_home',repo_name=c.repo_name,revision='__REVRANGE__')}";
126 var url_tmpl = "${h.url('changeset_home',repo_name=c.repo_name,revision='__REVRANGE__')}";
152 var pr_tmpl = "${h.url('pullrequest_home',repo_name=c.repo_name)}";
127 var pr_tmpl = "${h.url('pullrequest_home',repo_name=c.repo_name)}";
153
128
154 var checkbox_checker = function(e){
129 var checkbox_checker = function(e){
155 var checked_checkboxes = [];
130 var checked_checkboxes = [];
156 for (pos in checkboxes){
131 for (pos in checkboxes){
157 if(checkboxes[pos].checked){
132 if(checkboxes[pos].checked){
158 checked_checkboxes.push(checkboxes[pos]);
133 checked_checkboxes.push(checkboxes[pos]);
159 }
160 }
134 }
161 if(YUD.get('open_new_pr')){
135 }
136 if(YUD.get('open_new_pr')){
162 if(checked_checkboxes.length>1){
137 if(checked_checkboxes.length>1){
163 YUD.setStyle('open_new_pr','display','none');
138 YUD.setStyle('open_new_pr','display','none');
164 } else {
139 } else {
@@ -171,29 +146,28 b''
171 }
146 }
172 }
147 }
173
148
174 if(checked_checkboxes.length>0){
149 if(checked_checkboxes.length>0){
175 var rev_end = checked_checkboxes[0].name;
150 var rev_end = checked_checkboxes[0].name;
176 var rev_start = checked_checkboxes[checked_checkboxes.length-1].name;
151 var rev_start = checked_checkboxes[checked_checkboxes.length-1].name;
177 var url = url_tmpl.replace('__REVRANGE__',
152 var url = url_tmpl.replace('__REVRANGE__',
178 rev_start+'...'+rev_end);
153 rev_start+'...'+rev_end);
179
154
180 var link = (rev_start == rev_end)
155 var link = (rev_start == rev_end)
181 ? _TM['Show selected change __S']
156 ? _TM['Show selected change __S']
182 : _TM['Show selected changes __S -> __E'];
157 : _TM['Show selected changes __S -> __E'];
183
158
184 link = link.replace('__S',rev_start.substr(0,6));
159 link = link.replace('__S',rev_start.substr(0,6));
185 link = link.replace('__E',rev_end.substr(0,6));
160 link = link.replace('__E',rev_end.substr(0,6));
186 YUD.get('rev_range_container').href = url;
161 YUD.get('rev_range_container').href = url;
187 YUD.get('rev_range_container').innerHTML = link;
162 YUD.get('rev_range_container').innerHTML = link;
188 YUD.setStyle('rev_range_container','display','');
163 YUD.setStyle('rev_range_container','display','');
189 YUD.setStyle('rev_range_clear','display','');
164 YUD.setStyle('rev_range_clear','display','');
190
165
191 YUD.get('open_new_pr').href = pr_tmpl + '?rev_start={0}&rev_end={1}'.format(rev_start,rev_end);
166 YUD.get('open_new_pr').href = pr_tmpl + '?rev_start={0}&rev_end={1}'.format(rev_start,rev_end);
192 YUD.setStyle('compare_fork','display','none');
167 YUD.setStyle('compare_fork','display','none');
193 }
168 } else{
194 else{
169 YUD.setStyle('rev_range_container','display','none');
195 YUD.setStyle('rev_range_container','display','none');
170 YUD.setStyle('rev_range_clear','display','none');
196 YUD.setStyle('rev_range_clear','display','none');
197 if (checkboxes){
171 if (checkboxes){
198 YUD.get('open_new_pr').href = pr_tmpl + '?rev_end={0}'.format(checkboxes[0].name);
172 YUD.get('open_new_pr').href = pr_tmpl + '?rev_end={0}'.format(checkboxes[0].name);
199 }
173 }
@@ -203,94 +177,86 b''
203 YUE.onDOMReady(checkbox_checker);
177 YUE.onDOMReady(checkbox_checker);
204 YUE.on(checkboxes,'click', checkbox_checker);
178 YUE.on(checkboxes,'click', checkbox_checker);
205
179
206 YUE.on('rev_range_clear','click',function(e){
180 YUE.on('rev_range_clear','click',function(e){
207 for (var i=0; i<checkboxes.length; i++){
181 for (var i=0; i<checkboxes.length; i++){
208 var cb = checkboxes[i];
182 var cb = checkboxes[i];
209 cb.checked = false;
183 cb.checked = false;
210 }
184 }
211 checkbox_checker();
185 checkbox_checker();
212 YUE.preventDefault(e);
186 YUE.preventDefault(e);
213 })
187 });
214
215 var msgs = YUQ('.message');
216 // get first element height
217 var el = YUQ('#graph_content .container')[0];
218 var row_h = el.clientHeight;
219 for(var i=0;i<msgs.length;i++){
220 var m = msgs[i];
221
222 var h = m.clientHeight;
223 var pad = YUD.getStyle(m,'padding');
224 if(h > row_h){
225 var offset = row_h - (h+12);
226 YUD.setStyle(m.nextElementSibling,'display','block');
227 YUD.setStyle(m.nextElementSibling,'margin-top',offset+'px');
228 };
229 }
230 YUE.on(YUQ('.expand'),'click',function(e){
231 var elem = e.currentTarget.parentNode.parentNode;
232 YUD.setStyle(e.currentTarget,'display','none');
233 YUD.setStyle(elem,'height','auto');
234
235 //redraw the graph, line_count and jsdata are global vars
236 set_canvas(100);
237
238 var r = new BranchRenderer();
239 r.render(jsdata,100,line_count);
240
241 })
242
188
243 // Fetch changeset details
189 var msgs = YUQ('.message');
244 YUE.on(YUD.getElementsByClassName('changed_total'),'click',function(e){
190 // get first element height
245 var id = e.currentTarget.id;
191 var el = YUQ('#graph_content .container')[0];
246 var url = "${h.url('changelog_details',repo_name=c.repo_name,cs='__CS__')}";
192 var row_h = el.clientHeight;
247 var url = url.replace('__CS__',id.replace('changed_total_',''));
193 for(var i=0;i<msgs.length;i++){
248 ypjax(url,id,function(){tooltip_activate()});
194 var m = msgs[i];
249 });
250
251 // change branch filter
252 YUE.on(YUD.get('branch_filter'),'change',function(e){
253 var selected_branch = e.currentTarget.options[e.currentTarget.selectedIndex].value;
254 var url_main = "${h.url('changelog_home',repo_name=c.repo_name)}";
255 var url = "${h.url('changelog_home',repo_name=c.repo_name,branch='__BRANCH__')}";
256 var url = url.replace('__BRANCH__',selected_branch);
257 if(selected_branch != ''){
258 window.location = url;
259 }else{
260 window.location = url_main;
261 }
262
263 });
264
195
265 function set_canvas(width) {
196 var h = m.clientHeight;
266 var c = document.getElementById('graph_nodes');
197 var pad = YUD.getStyle(m,'padding');
267 var t = document.getElementById('graph_content');
198 if(h > row_h){
268 canvas = document.getElementById('graph_canvas');
199 var offset = row_h - (h+12);
269 var div_h = t.clientHeight;
200 YUD.setStyle(m.nextElementSibling,'display','block');
270 c.style.height=div_h+'px';
201 YUD.setStyle(m.nextElementSibling,'margin-top',offset+'px');
271 canvas.setAttribute('height',div_h);
272 c.style.height=width+'px';
273 canvas.setAttribute('width',width);
274 };
202 };
275 var heads = 1;
203 }
276 var line_count = 0;
204 YUE.on(YUQ('.expand'),'click',function(e){
277 var jsdata = ${c.jsdata|n};
205 var elem = e.currentTarget.parentNode.parentNode;
206 YUD.setStyle(e.currentTarget,'display','none');
207 YUD.setStyle(elem,'height','auto');
278
208
279 for (var i=0;i<jsdata.length;i++) {
209 //redraw the graph, line_count and jsdata are global vars
280 var in_l = jsdata[i][2];
281 for (var j in in_l) {
282 var m = in_l[j][1];
283 if (m > line_count)
284 line_count = m;
285 }
286 }
287 set_canvas(100);
210 set_canvas(100);
288
211
289 var r = new BranchRenderer();
212 var r = new BranchRenderer();
290 r.render(jsdata,100,line_count);
213 r.render(jsdata,100,line_count);
291
214
292 });
215 });
293 </script>
216
217 // change branch filter
218 YUE.on(YUD.get('branch_filter'),'change',function(e){
219 var selected_branch = e.currentTarget.options[e.currentTarget.selectedIndex].value;
220 var url_main = "${h.url('changelog_home',repo_name=c.repo_name)}";
221 var url = "${h.url('changelog_home',repo_name=c.repo_name,branch='__BRANCH__')}";
222 var url = url.replace('__BRANCH__',selected_branch);
223 if(selected_branch != ''){
224 window.location = url;
225 }else{
226 window.location = url_main;
227 }
228
229 });
230
231 function set_canvas(width) {
232 var c = document.getElementById('graph_nodes');
233 var t = document.getElementById('graph_content');
234 canvas = document.getElementById('graph_canvas');
235 var div_h = t.clientHeight;
236 //c.style.height=div_h+'px';
237 canvas.setAttribute('height',div_h);
238 //c.style.height=width+'px';
239 canvas.setAttribute('width',width);
240 };
241 var heads = 1;
242 var line_count = 0;
243 var jsdata = ${c.jsdata|n};
244
245 for (var i=0;i<jsdata.length;i++) {
246 var in_l = jsdata[i][2];
247 for (var j in in_l) {
248 var m = in_l[j][1];
249 if (m > line_count)
250 line_count = m;
251 }
252 }
253 set_canvas(100);
254
255 var r = new BranchRenderer();
256 r.render(jsdata,100,line_count);
257
258 });
259 </script>
294 %else:
260 %else:
295 ${_('There are no changes yet')}
261 ${_('There are no changes yet')}
296 %endif
262 %endif
@@ -7,10 +7,6 b''
7 </%def>
7 </%def>
8
8
9 <%def name="breadcrumbs_links()">
9 <%def name="breadcrumbs_links()">
10 ${h.link_to(_(u'Home'),h.url('/'))}
11 &raquo;
12 ${h.repo_link(c.rhodecode_db_repo.groups_and_repo)}
13 &raquo;
14 ${_('changeset')} - <span class='hash'>r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)}</span>
10 ${_('changeset')} - <span class='hash'>r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)}</span>
15 </%def>
11 </%def>
16
12
@@ -19,6 +15,7 b''
19 </%def>
15 </%def>
20
16
21 <%def name="main()">
17 <%def name="main()">
18 ${self.context_bar('changelog')}
22 <div class="box">
19 <div class="box">
23 <!-- box / title -->
20 <!-- box / title -->
24 <div class="title">
21 <div class="title">
@@ -5,11 +5,7 b''
5 </%def>
5 </%def>
6
6
7 <%def name="breadcrumbs_links()">
7 <%def name="breadcrumbs_links()">
8 ${h.link_to(_(u'Home'),h.url('/'))}
8 ${_('Files')}
9 &raquo;
10 ${h.repo_link(c.rhodecode_db_repo.groups_and_repo)}
11 &raquo;
12 ${_('files')}
13 %if c.file:
9 %if c.file:
14 @ r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)}
10 @ r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)}
15 %endif
11 %endif
@@ -20,6 +16,7 b''
20 </%def>
16 </%def>
21
17
22 <%def name="main()">
18 <%def name="main()">
19 ${self.context_bar('files')}
23 <div class="box">
20 <div class="box">
24 <!-- box / title -->
21 <!-- box / title -->
25 <div class="title">
22 <div class="title">
@@ -6,17 +6,14 b''
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 ${_('Followers')}
10 &raquo;
11 ${h.repo_link(c.rhodecode_db_repo.groups_and_repo)}
12 &raquo;
13 ${_('followers')}
14 </%def>
10 </%def>
15
11
16 <%def name="page_nav()">
12 <%def name="page_nav()">
17 ${self.menu('followers')}
13 ${self.menu('followers')}
18 </%def>
14 </%def>
19 <%def name="main()">
15 <%def name="main()">
16 ${self.context_bar('followers')}
20 <div class="box">
17 <div class="box">
21 <!-- box / title -->
18 <!-- box / title -->
22 <div class="title">
19 <div class="title">
@@ -6,17 +6,14 b''
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 ${_('Forks')}
10 &raquo;
11 ${h.repo_link(c.rhodecode_db_repo.groups_and_repo)}
12 &raquo;
13 ${_('forks')}
14 </%def>
10 </%def>
15
11
16 <%def name="page_nav()">
12 <%def name="page_nav()">
17 ${self.menu('forks')}
13 ${self.menu('forks')}
18 </%def>
14 </%def>
19 <%def name="main()">
15 <%def name="main()">
16 ${self.context_bar('forks')}
20 <div class="box">
17 <div class="box">
21 <!-- box / title -->
18 <!-- box / title -->
22 <div class="title">
19 <div class="title">
@@ -295,7 +295,7 b''
295
295
296 MSG_SORTASC:"${_('Click to sort ascending')}",
296 MSG_SORTASC:"${_('Click to sort ascending')}",
297 MSG_SORTDESC:"${_('Click to sort descending')}",
297 MSG_SORTDESC:"${_('Click to sort descending')}",
298 MSG_EMPTY:"${_('No records found.')}",
298 MSG_EMPTY:"${_('No repositories found.')}",
299 MSG_ERROR:"${_('Data error.')}",
299 MSG_ERROR:"${_('Data error.')}",
300 MSG_LOADING:"${_('Loading...')}",
300 MSG_LOADING:"${_('Loading...')}",
301 }
301 }
@@ -5,15 +5,11 b''
5 </%def>
5 </%def>
6
6
7 <%def name="breadcrumbs_links()">
7 <%def name="breadcrumbs_links()">
8 ${h.link_to(_(u'Home'),h.url('/'))}
8 ${_('Pull requests')}
9 &raquo;
10 ${h.repo_link(c.rhodecode_db_repo.groups_and_repo)}
11 &raquo;
12 ${_('pull requests')}
13 </%def>
9 </%def>
14
10
15 <%def name="main()">
11 <%def name="main()">
16
12 ${self.context_bar('showpullrequest')}
17 <div class="box">
13 <div class="box">
18 <!-- box / title -->
14 <!-- box / title -->
19 <div class="title">
15 <div class="title">
@@ -11,6 +11,6 b''
11 %elif not repo['dbrepo']['private'] and c.visual.show_public_icon:
11 %elif not repo['dbrepo']['private'] and c.visual.show_public_icon:
12 <img src="${h.url('/images/icons/lock_open.png')}" alt="${_('Public repository')}" class="repo_switcher_type" />
12 <img src="${h.url('/images/icons/lock_open.png')}" alt="${_('Public repository')}" class="repo_switcher_type" />
13 %endif
13 %endif
14 ${h.link_to(repo['name'],h.url('summary_home',repo_name=repo['name']),class_="repo_name %s" % repo['dbrepo']['repo_type'])}
14 ${h.link_to(repo['name'],h.url('summary_home',repo_name=repo['name']),class_="repo_name thin %s" % repo['dbrepo']['repo_type'])}
15 </li>
15 </li>
16 %endfor
16 %endfor
@@ -11,13 +11,9 b''
11
11
12 <%def name="breadcrumbs_links()">
12 <%def name="breadcrumbs_links()">
13 %if c.repo_name:
13 %if c.repo_name:
14 ${h.link_to(_(u'Home'),h.url('/'))}
14 ${_('Search')}
15 &raquo;
16 ${h.repo_link(c.rhodecode_db_repo.groups_and_repo)}
17 &raquo;
18 ${_('search')}
19 %else:
15 %else:
20 ${_('search in all repositories')}
16 ${_('Search in all repositories')}
21 %endif
17 %endif
22 %if c.cur_query:
18 %if c.cur_query:
23 &raquo;
19 &raquo;
@@ -33,7 +29,7 b''
33 %endif
29 %endif
34 </%def>
30 </%def>
35 <%def name="main()">
31 <%def name="main()">
36
32 ${self.context_bar('options')}
37 <div class="box">
33 <div class="box">
38 <!-- box / title -->
34 <!-- box / title -->
39 <div class="title">
35 <div class="title">
@@ -7,16 +7,12 b''
7
7
8
8
9 <%def name="breadcrumbs_links()">
9 <%def name="breadcrumbs_links()">
10 ${h.link_to(_(u'Home'),h.url('/'))}
11 &raquo;
12 ${h.repo_link(c.rhodecode_db_repo.groups_and_repo)}
13 &raquo;
14 %if c.file_history:
10 %if c.file_history:
15 ${h.link_to(_('shortlog'),h.url('shortlog_home',repo_name=c.repo_name))}
11 ${h.link_to(_('Shortlog'),h.url('shortlog_home',repo_name=c.repo_name))}
16 &raquo;
12 &raquo;
17 ${c.file_history}
13 ${c.file_history}
18 %else:
14 %else:
19 ${_('shortlog')}
15 ${_('Shortlog')}
20 %endif
16 %endif
21 </%def>
17 </%def>
22
18
@@ -24,6 +20,7 b''
24 ${self.menu('shortlog')}
20 ${self.menu('shortlog')}
25 </%def>
21 </%def>
26 <%def name="main()">
22 <%def name="main()">
23 ${self.context_bar('options')}
27 <div class="box">
24 <div class="box">
28 <!-- box / title -->
25 <!-- box / title -->
29 <div class="title">
26 <div class="title">
@@ -5,11 +5,7 b''
5 </%def>
5 </%def>
6
6
7 <%def name="breadcrumbs_links()">
7 <%def name="breadcrumbs_links()">
8 ${h.link_to(_(u'Home'),h.url('/'))}
8 ${_('Summary')}
9 &raquo;
10 ${h.repo_link(c.rhodecode_db_repo.groups_and_repo)}
11 &raquo;
12 ${_('summary')}
13 </%def>
9 </%def>
14
10
15 <%def name="page_nav()">
11 <%def name="page_nav()">
@@ -22,6 +18,7 b''
22 </%def>
18 </%def>
23
19
24 <%def name="main()">
20 <%def name="main()">
21 ${self.context_bar('summary')}
25 <%
22 <%
26 summary = lambda n:{False:'summary-short'}.get(n)
23 summary = lambda n:{False:'summary-short'}.get(n)
27 %>
24 %>
@@ -43,30 +40,6 b''
43 <label>${_('Name')}:</label>
40 <label>${_('Name')}:</label>
44 </div>
41 </div>
45 <div class="input ${summary(c.show_stats)}">
42 <div class="input ${summary(c.show_stats)}">
46 <div style="float:right;padding:5px 0px 0px 5px">
47 %if c.rhodecode_user.username != 'default':
48 ${h.link_to(_('ATOM'),h.url('atom_feed_home',repo_name=c.dbrepo.repo_name,api_key=c.rhodecode_user.api_key),class_='atom_icon')}
49 %else:
50 ${h.link_to(_('ATOM'),h.url('atom_feed_home',repo_name=c.dbrepo.repo_name),class_='atom_icon')}
51 %endif
52 </div>
53 %if c.rhodecode_user.username != 'default':
54 %if c.following:
55 <span id="follow_toggle" class="following tooltip" title="${_('Stop following this repository')}"
56 onclick="javascript:toggleFollowingRepo(this,${c.dbrepo.repo_id},'${str(h.get_token())}')">
57 </span>
58 %else:
59 <span id="follow_toggle" class="follow tooltip" title="${_('Start following this repository')}"
60 onclick="javascript:toggleFollowingRepo(this,${c.dbrepo.repo_id},'${str(h.get_token())}')">
61 </span>
62 %endif
63 <div style="float:right;padding:0px 0px 0px 0px">
64 <span class="reposize tooltip" title="${_('Click to show size of repository')}"
65 onclick="javascript:showRepoSize('repo_size','${c.dbrepo.repo_name}','${str(h.get_token())}')">
66 </span>
67 <span id="repo_size"></span>
68 </div>
69 %endif:
70
43
71 ## locking icon
44 ## locking icon
72 %if c.rhodecode_db_repo.enable_locking:
45 %if c.rhodecode_db_repo.enable_locking:
@@ -96,7 +69,7 b''
96
69
97 ##FORK
70 ##FORK
98 %if c.dbrepo.fork:
71 %if c.dbrepo.fork:
99 <div style="margin-top:5px;clear:both"">
72 <div style="margin-top:5px;clear:both">
100 <a href="${h.url('summary_home',repo_name=c.dbrepo.fork.repo_name)}"><img class="icon" alt="${_('public')}" title="${_('Fork of')} ${c.dbrepo.fork.repo_name}" src="${h.url('/images/icons/arrow_divide.png')}"/>
73 <a href="${h.url('summary_home',repo_name=c.dbrepo.fork.repo_name)}"><img class="icon" alt="${_('public')}" title="${_('Fork of')} ${c.dbrepo.fork.repo_name}" src="${h.url('/images/icons/arrow_divide.png')}"/>
101 ${_('Fork of')} ${c.dbrepo.fork.repo_name}
74 ${_('Fork of')} ${c.dbrepo.fork.repo_name}
102 </a>
75 </a>
@@ -188,7 +161,45 b''
188 %endif
161 %endif
189 </div>
162 </div>
190 </div>
163 </div>
191 </div>
164 </div>
165 <div id="summary-menu-stats">
166 <ul>
167 <li>
168 <a class="followers" title="${_('Followers')}" href="${h.url('repo_followers_home',repo_name=c.repo_name)}">
169 ${_('Followers')}
170 <span id="current_followers_count">${c.repository_followers}</span>
171 </a>
172 </li>
173 <li>
174 <a class="forks" title="${_('Forks')}" href="${h.url('repo_forks_home',repo_name=c.repo_name)}">
175 ${_('Forks')}
176 <span>${c.repository_forks}</span>
177 </a>
178 </li>
179 <li>
180 %if h.HasRepoPermissionAll('repository.admin')(c.repo_name):
181 %if h.HasPermissionAll('hg.admin')('access settings on repository'):
182 ${h.link_to(_('Settings'),h.url('edit_repo',repo_name=c.repo_name),class_='settings')}
183 %else:
184 ${h.link_to(_('Settings'),h.url('repo_settings_home',repo_name=c.repo_name),class_='settings')}
185 %endif
186 %endif
187 </li>
188 <li>
189 %if c.rhodecode_user.username != 'default':
190 ${h.link_to(_('Feed'),h.url('atom_feed_home',repo_name=c.dbrepo.repo_name,api_key=c.rhodecode_user.api_key),class_='feed')}
191 %else:
192 ${h.link_to(_('Feed'),h.url('atom_feed_home',repo_name=c.dbrepo.repo_name),class_='feed')}
193 %endif
194 </li>
195 %if c.rhodecode_user.username != 'default':
196 <li class="repo_size">
197 <a href="#" class="repo-size" onclick="javascript:showRepoSize('repo_size_2','${c.dbrepo.repo_name}','${str(h.get_token())}')">Repository Size</a>
198 <span id="repo_size_2"></span>
199 </li>
200 %endif
201 </ul>
202 </div>
192 </div>
203 </div>
193 </div>
204 </div>
194
205
@@ -8,17 +8,14 b''
8
8
9 <%def name="breadcrumbs_links()">
9 <%def name="breadcrumbs_links()">
10 <input class="q_filter_box" id="q_filter_tags" size="15" type="text" name="filter" value="${_('quick filter...')}"/>
10 <input class="q_filter_box" id="q_filter_tags" size="15" type="text" name="filter" value="${_('quick filter...')}"/>
11 ${h.link_to(_(u'Home'),h.url('/'))}
11 ${_('Tags')}
12 &raquo;
13 ${h.repo_link(c.rhodecode_db_repo.groups_and_repo)}
14 &raquo;
15 ${_('tags')}
16 </%def>
12 </%def>
17
13
18 <%def name="page_nav()">
14 <%def name="page_nav()">
19 ${self.menu('tags')}
15 ${self.menu('tags')}
20 </%def>
16 </%def>
21 <%def name="main()">
17 <%def name="main()">
18 ${self.context_bar('switch-to')}
22 <div class="box">
19 <div class="box">
23 <!-- box / title -->
20 <!-- box / title -->
24 <div class="title">
21 <div class="title">
General Comments 0
You need to be logged in to leave comments. Login now