##// END OF EJS Templates
summary-page: re-organize summary page info for better UX....
marcink -
r3183:c3292086 default
parent child Browse files
Show More
@@ -1,284 +1,289 b''
1 // summary.less
1 // summary.less
2 // For use in RhodeCode applications;
2 // For use in RhodeCode applications;
3 // Used for headers and file detail summary screens.
3 // Used for headers and file detail summary screens.
4
4
5 .summary {
5 .summary {
6 float: left;
6 float: left;
7 position: relative;
7 position: relative;
8 width: 100%;
8 width: 100%;
9 margin: 0;
9 margin: 0;
10 padding: 0;
10 padding: 0;
11
11
12 .summary-detail-header {
12 .summary-detail-header {
13 float: left;
13 float: left;
14 display: block;
14 display: block;
15 width: 100%;
15 width: 100%;
16 margin-bottom: @textmargin;
16 margin-bottom: @textmargin;
17 padding: 0 0 .5em 0;
17 padding: 0 0 .5em 0;
18 border-bottom: @border-thickness solid @border-default-color;
18 border-bottom: @border-thickness solid @border-default-color;
19
19
20 .breadcrumbs {
20 .breadcrumbs {
21 float: left;
21 float: left;
22 display: inline;
22 display: inline;
23 margin: 0;
23 margin: 0;
24 padding: 0;
24 padding: 0;
25 }
25 }
26 h4 {
26 h4 {
27 float: left;
27 float: left;
28 margin: 0 1em 0 0;
28 margin: 0 1em 0 0;
29 padding: 0;
29 padding: 0;
30 line-height: 1.2em;
30 line-height: 1.2em;
31 font-size: @basefontsize;
31 font-size: @basefontsize;
32 }
32 }
33
33
34 .action_link {
34 .action_link {
35 float: right;
35 float: right;
36 }
36 }
37
37
38 .new-file {
38 .new-file {
39 float: right;
39 float: right;
40 margin-top: -1.5em;
40 margin-top: -1.5em;
41 }
41 }
42 }
42 }
43
43
44 .summary-detail {
44 .summary-detail {
45 float: left;
45 float: left;
46 position: relative;
46 position: relative;
47 width: 73%;
47 width: 73%;
48 margin: 0 3% @space 0;
48 margin: 0 3% @space 0;
49 padding: 0;
49 padding: 0;
50
50
51 .file_diff_buttons {
51 .file_diff_buttons {
52 margin-top: @space;
52 margin-top: @space;
53 }
53 }
54
54
55 // commit message
55 // commit message
56 .commit {
56 .commit {
57 white-space: pre-wrap;
57 white-space: pre-wrap;
58 }
58 }
59
59
60 .left-clone {
60 .left-clone {
61 float: left;
61 float: left;
62 height: 30px;
62 height: 30px;
63 margin: 0;
63 margin: 0;
64 padding: 0;
64 padding: 0;
65 font-family: @text-semibold;
65 font-family: @text-semibold;
66 }
66 }
67
67
68 .right-clone {
68 .right-clone {
69 float: right;
69 float: right;
70 width: 83%;
70 width: 83%;
71 }
71 }
72
72
73 .clone_url_input {
73 .clone_url_input {
74 width: ~"calc(100% - 35px)";
74 width: ~"calc(100% - 35px)";
75 padding: 5px;
75 padding: 5px;
76 }
76 }
77
77
78 &.directory {
78 &.directory {
79 margin-bottom: 0;
79 margin-bottom: 0;
80 }
80 }
81
81
82 .desc {
82 .desc {
83 white-space: pre-wrap;
83 white-space: pre-wrap;
84 }
84 }
85 .disabled {
85 .disabled {
86 opacity: .5;
86 opacity: .5;
87 cursor: inherit;
87 cursor: inherit;
88 }
88 }
89 .help-block {
89 .help-block {
90 color: inherit;
90 color: inherit;
91 margin: 0;
91 margin: 0;
92 }
92 }
93 }
93 }
94
94
95 .sidebar-right {
95 .sidebar-right {
96 float: left;
96 float: left;
97 width: 24%;
97 width: 24%;
98 margin: 0;
98 margin: 0;
99 padding: 0;
99 padding: 0;
100
100
101 ul {
101 ul {
102 margin-left: 0;
102 margin-left: 0;
103 padding-left: 0;
103 padding-left: 0;
104
104
105 li {
105 li {
106
106
107 &:before {
107 &:before {
108 content: none;
108 content: none;
109 width: 0;
109 width: 0;
110 }
110 }
111 }
111 }
112 }
112 }
113 }
113 }
114
114
115 #clone_by_name, #clone_by_id{
115 #clone_by_name, #clone_by_id{
116 display: inline-block;
116 display: inline-block;
117 margin-left: 0px;
117 margin-left: 0px;
118 }
118 }
119
119
120 .codeblock {
120 .codeblock {
121 border: none;
121 border: none;
122 background-color: transparent;
122 background-color: transparent;
123 }
123 }
124
124
125 .code-body {
125 .code-body {
126 border: @border-thickness solid @border-default-color;
126 border: @border-thickness solid @border-default-color;
127 .border-radius(@border-radius);
127 .border-radius(@border-radius);
128 }
128 }
129 }
129 }
130
130
131 // this is used outside of just the summary
131 // this is used outside of just the summary
132 .fieldset, // similar to form fieldset
132 .fieldset, // similar to form fieldset
133 .summary .sidebar-right-content { // these have to match
133 .summary .sidebar-right-content { // these have to match
134 clear: both;
134 clear: both;
135 float: left;
135 float: left;
136 position: relative;
136 position: relative;
137 display:block;
137 display:block;
138 width: 100%;
138 width: 100%;
139 min-height: 1em;
139 min-height: 1em;
140 margin-bottom: @textmargin;
140 margin-bottom: @textmargin;
141 padding: 0;
141 padding: 0;
142 line-height: 1.2em;
142 line-height: 1.2em;
143
143
144 &:after { // clearfix
144 &:after { // clearfix
145 content: "";
145 content: "";
146 clear: both;
146 clear: both;
147 width: 100%;
147 width: 100%;
148 height: 1em;
148 height: 1em;
149 }
149 }
150 }
150 }
151
151
152 .summary .sidebar-right-content {
152 .summary .sidebar-right-content {
153 margin-bottom: @space;
153 margin-bottom: @space;
154
154
155 .rc-user {
155 .rc-user {
156 min-width: 0;
156 min-width: 0;
157 }
157 }
158 }
158 }
159
159
160 .fieldset {
160 .fieldset {
161
161
162 .left-label { // similar to form legend
162 .left-label { // similar to form legend
163 float: left;
163 float: left;
164 display: block;
164 display: block;
165 width: 25%;
165 width: 25%;
166 margin: 0;
166 margin: 0;
167 padding: 0;
167 padding: 0;
168 font-family: @text-semibold;
168 font-family: @text-semibold;
169 }
169 }
170
171 .left-label-summary {
172 .left-label;
173 width: 150px;
174 }
170
175
171 .right-content { // similar to form fields
176 .right-content { // similar to form fields
172 float: left;
177 float: left;
173 display: block;
178 display: block;
174 width: 75%;
179 width: 75%;
175 margin: 0 0 0 -15%;
180 margin: 0 0 0 -15%;
176 padding: 0 0 0 15%;
181 padding: 0 0 0 15%;
177
182
178 .truncate-wrap,
183 .truncate-wrap,
179 .truncate {
184 .truncate {
180 max-width: 100%;
185 max-width: 100%;
181 width: 100%;
186 width: 100%;
182 }
187 }
183
188
184 .commit-long {
189 .commit-long {
185 overflow-x: auto;
190 overflow-x: auto;
186 }
191 }
187 }
192 }
188 .commit.truncate-wrap {
193 .commit.truncate-wrap {
189 overflow:hidden;
194 overflow:hidden;
190 text-overflow: ellipsis;
195 text-overflow: ellipsis;
191 }
196 }
192 }
197 }
193
198
194 // expand commit message
199 // expand commit message
195 #message_expand {
200 #message_expand {
196 clear: both;
201 clear: both;
197 display: block;
202 display: block;
198 color: @rcblue;
203 color: @rcblue;
199 cursor: pointer;
204 cursor: pointer;
200 }
205 }
201
206
202 #trimmed_message_box {
207 #trimmed_message_box {
203 max-height: floor(2 * @basefontsize * 1.2); // 2 lines * line-height
208 max-height: floor(2 * @basefontsize * 1.2); // 2 lines * line-height
204 overflow: hidden;
209 overflow: hidden;
205 }
210 }
206
211
207 // show/hide comments button
212 // show/hide comments button
208 .show-inline-comments {
213 .show-inline-comments {
209 display: inline;
214 display: inline;
210 cursor: pointer;
215 cursor: pointer;
211
216
212 .comments-show { display: inline; }
217 .comments-show { display: inline; }
213 .comments-hide { display: none; }
218 .comments-hide { display: none; }
214
219
215 &.comments-visible {
220 &.comments-visible {
216 .comments-show { display: none; }
221 .comments-show { display: none; }
217 .comments-hide { display: inline; }
222 .comments-hide { display: inline; }
218 }
223 }
219 }
224 }
220
225
221 // Quick Start section
226 // Quick Start section
222 .quick_start {
227 .quick_start {
223 float: left;
228 float: left;
224 display: block;
229 display: block;
225 position: relative;
230 position: relative;
226 width: 100%;
231 width: 100%;
227
232
228 // adds some space to make copy and paste easier
233 // adds some space to make copy and paste easier
229 .left-label,
234 .left-label,
230 .right-content {
235 .right-content {
231 line-height: 1.6em;
236 line-height: 1.6em;
232 }
237 }
233 }
238 }
234
239
235 .submodule {
240 .submodule {
236 .summary-detail {
241 .summary-detail {
237 width: 100%;
242 width: 100%;
238
243
239 .btn-collapse {
244 .btn-collapse {
240 display: none;
245 display: none;
241 }
246 }
242 }
247 }
243 }
248 }
244
249
245 .codeblock-header {
250 .codeblock-header {
246 float: left;
251 float: left;
247 display: block;
252 display: block;
248 width: 100%;
253 width: 100%;
249 margin: 0;
254 margin: 0;
250 padding: @space 0 10px 0;
255 padding: @space 0 10px 0;
251 border-top: @border-thickness solid @border-default-color;
256 border-top: @border-thickness solid @border-default-color;
252
257
253 .stats {
258 .stats {
254 float: left;
259 float: left;
255 width: 50%;
260 width: 50%;
256 }
261 }
257 .stats-filename {
262 .stats-filename {
258 font-size: 120%;
263 font-size: 120%;
259 }
264 }
260 .stats-first-item {
265 .stats-first-item {
261 padding: 0px 0px 0px 3px;
266 padding: 0px 0px 0px 3px;
262 }
267 }
263
268
264 .buttons {
269 .buttons {
265 float: right;
270 float: right;
266 width: 50%;
271 width: 50%;
267 text-align: right;
272 text-align: right;
268 color: @grey4;
273 color: @grey4;
269 }
274 }
270 }
275 }
271
276
272 #summary-menu-stats {
277 #summary-menu-stats {
273
278
274 .stats-bullet {
279 .stats-bullet {
275 color: @grey3;
280 color: @grey3;
276 min-width: 3em;
281 min-width: 3em;
277 }
282 }
278
283
279 .repo-size {
284 .repo-size {
280 margin-bottom: .5em;
285 margin-bottom: .5em;
281 }
286 }
282
287
283 }
288 }
284
289
@@ -1,216 +1,217 b''
1 <%def name="refs_counters(branches, closed_branches, tags, bookmarks)">
1 <%def name="refs_counters(branches, closed_branches, tags, bookmarks)">
2 <span class="branchtag tag">
2 <span class="branchtag tag">
3 <a href="${h.route_path('branches_home',repo_name=c.repo_name)}" class="childs">
3 <a href="${h.route_path('branches_home',repo_name=c.repo_name)}" class="childs">
4 <i class="icon-branch"></i>${_ungettext(
4 <i class="icon-branch"></i>${_ungettext(
5 '%(num)s Branch','%(num)s Branches', len(branches)) % {'num': len(branches)}}</a>
5 '%(num)s Branch','%(num)s Branches', len(branches)) % {'num': len(branches)}}</a>
6 </span>
6 </span>
7
7
8 %if closed_branches:
8 %if closed_branches:
9 <span class="branchtag tag">
9 <span class="branchtag tag">
10 <a href="${h.route_path('branches_home',repo_name=c.repo_name)}" class="childs">
10 <a href="${h.route_path('branches_home',repo_name=c.repo_name)}" class="childs">
11 <i class="icon-branch"></i>${_ungettext(
11 <i class="icon-branch"></i>${_ungettext(
12 '%(num)s Closed Branch', '%(num)s Closed Branches', len(closed_branches)) % {'num': len(closed_branches)}}</a>
12 '%(num)s Closed Branch', '%(num)s Closed Branches', len(closed_branches)) % {'num': len(closed_branches)}}</a>
13 </span>
13 </span>
14 %endif
14 %endif
15
15
16 <span class="tagtag tag">
16 <span class="tagtag tag">
17 <a href="${h.route_path('tags_home',repo_name=c.repo_name)}" class="childs">
17 <a href="${h.route_path('tags_home',repo_name=c.repo_name)}" class="childs">
18 <i class="icon-tag"></i>${_ungettext(
18 <i class="icon-tag"></i>${_ungettext(
19 '%(num)s Tag', '%(num)s Tags', len(tags)) % {'num': len(tags)}}</a>
19 '%(num)s Tag', '%(num)s Tags', len(tags)) % {'num': len(tags)}}</a>
20 </span>
20 </span>
21
21
22 %if bookmarks:
22 %if bookmarks:
23 <span class="booktag tag">
23 <span class="booktag tag">
24 <a href="${h.route_path('bookmarks_home',repo_name=c.repo_name)}" class="childs">
24 <a href="${h.route_path('bookmarks_home',repo_name=c.repo_name)}" class="childs">
25 <i class="icon-bookmark"></i>${_ungettext(
25 <i class="icon-bookmark"></i>${_ungettext(
26 '%(num)s Bookmark', '%(num)s Bookmarks', len(bookmarks)) % {'num': len(bookmarks)}}</a>
26 '%(num)s Bookmark', '%(num)s Bookmarks', len(bookmarks)) % {'num': len(bookmarks)}}</a>
27 </span>
27 </span>
28 %endif
28 %endif
29 </%def>
29 </%def>
30
30
31 <%def name="summary_detail(breadcrumbs_links, show_downloads=True)">
31 <%def name="summary_detail(breadcrumbs_links, show_downloads=True)">
32 <% summary = lambda n:{False:'summary-short'}.get(n) %>
32 <% summary = lambda n:{False:'summary-short'}.get(n) %>
33
33
34 <div id="summary-menu-stats" class="summary-detail">
34 <div id="summary-menu-stats" class="summary-detail">
35 <div class="summary-detail-header">
35 <div class="summary-detail-header">
36 <div class="breadcrumbs files_location">
36 <div class="breadcrumbs files_location">
37 <h4>
37 <h4>
38 ${breadcrumbs_links}
38 ${breadcrumbs_links}
39 </h4>
39 </h4>
40 </div>
40 </div>
41 <div id="summary_details_expand" class="btn-collapse" data-toggle="summary-details">
41 <div id="summary_details_expand" class="btn-collapse" data-toggle="summary-details">
42 ${_('Show More')}
42 ${_('Show More')}
43 </div>
43 </div>
44 </div>
44 </div>
45
45
46 <div class="fieldset">
46 <div class="fieldset">
47
47
48 <div class="left-clone">
48 <div class="left-clone">
49 <select id="clone_option" name="clone_option">
49 <select id="clone_option" name="clone_option">
50 <option value="http" selected="selected">HTTP</option>
50 <option value="http" selected="selected">HTTP</option>
51 <option value="http_id">HTTP UID</option>
51 <option value="http_id">HTTP UID</option>
52 % if c.ssh_enabled:
52 % if c.ssh_enabled:
53 <option value="ssh">SSH</option>
53 <option value="ssh">SSH</option>
54 % endif
54 % endif
55 </select>
55 </select>
56 </div>
56 </div>
57 <div class="right-clone">
57 <div class="right-clone">
58 <%
58 <%
59 maybe_disabled = ''
59 maybe_disabled = ''
60 if h.is_svn_without_proxy(c.rhodecode_db_repo):
60 if h.is_svn_without_proxy(c.rhodecode_db_repo):
61 maybe_disabled = 'disabled'
61 maybe_disabled = 'disabled'
62 %>
62 %>
63
63
64 <span id="clone_option_http">
64 <span id="clone_option_http">
65 <input type="text" class="input-monospace clone_url_input" ${maybe_disabled} readonly="readonly" value="${c.clone_repo_url}"/>
65 <input type="text" class="input-monospace clone_url_input" ${maybe_disabled} readonly="readonly" value="${c.clone_repo_url}"/>
66 <i class="tooltip icon-clipboard clipboard-action" data-clipboard-text="${c.clone_repo_url}" title="${_('Copy the clone url')}"></i>
66 <i class="tooltip icon-clipboard clipboard-action" data-clipboard-text="${c.clone_repo_url}" title="${_('Copy the clone url')}"></i>
67 </span>
67 </span>
68
68
69 <span style="display: none;" id="clone_option_http_id">
69 <span style="display: none;" id="clone_option_http_id">
70 <input type="text" class="input-monospace clone_url_input" ${maybe_disabled} readonly="readonly" value="${c.clone_repo_url_id}"/>
70 <input type="text" class="input-monospace clone_url_input" ${maybe_disabled} readonly="readonly" value="${c.clone_repo_url_id}"/>
71 <i class="tooltip icon-clipboard clipboard-action" data-clipboard-text="${c.clone_repo_url_id}" title="${_('Copy the clone by id url')}"></i>
71 <i class="tooltip icon-clipboard clipboard-action" data-clipboard-text="${c.clone_repo_url_id}" title="${_('Copy the clone by id url')}"></i>
72 </span>
72 </span>
73
73
74 <span style="display: none;" id="clone_option_ssh">
74 <span style="display: none;" id="clone_option_ssh">
75 <input type="text" class="input-monospace clone_url_input" ${maybe_disabled} readonly="readonly" value="${c.clone_repo_url_ssh}"/>
75 <input type="text" class="input-monospace clone_url_input" ${maybe_disabled} readonly="readonly" value="${c.clone_repo_url_ssh}"/>
76 <i class="tooltip icon-clipboard clipboard-action" data-clipboard-text="${c.clone_repo_url_ssh}" title="${_('Copy the clone by ssh url')}"></i>
76 <i class="tooltip icon-clipboard clipboard-action" data-clipboard-text="${c.clone_repo_url_ssh}" title="${_('Copy the clone by ssh url')}"></i>
77 </span>
77 </span>
78
78
79 % if maybe_disabled:
79 % if maybe_disabled:
80 <p class="help-block">${_('SVN Protocol is disabled. To enable it, see the')} <a href="${h.route_url('enterprise_svn_setup')}" target="_blank">${_('documentation here')}</a>.</p>
80 <p class="help-block">${_('SVN Protocol is disabled. To enable it, see the')} <a href="${h.route_url('enterprise_svn_setup')}" target="_blank">${_('documentation here')}</a>.</p>
81 % endif
81 % endif
82
82
83 </div>
83 </div>
84 </div>
84 </div>
85
85
86 <div class="fieldset collapsable-content" data-toggle="summary-details" style="display: none;">
86 <div class="fieldset collapsable-content" data-toggle="summary-details" style="display: none;">
87 <div class="left-label">
87 <div class="left-label-summary">
88 ${_('Information')}:
89 </div>
90 <div class="right-content">
91 <div class="commit-info">
92 <div class="tags">
93 <% commit_rev = c.rhodecode_db_repo.changeset_cache.get('revision') %>
94 % if c.rhodecode_repo:
95 ${refs_counters(
96 c.rhodecode_repo.branches,
97 c.rhodecode_repo.branches_closed,
98 c.rhodecode_repo.tags,
99 c.rhodecode_repo.bookmarks)}
100 % else:
101 ## missing requirements can make c.rhodecode_repo None
102 ${refs_counters([], [], [], [])}
103 % endif
104
105 ## commits
106 <span class="tag">
107 % if commit_rev == -1:
108 ${_ungettext('%(num)s Commit', '%(num)s Commits', 0) % {'num': 0}},
109 % else:
110 <a href="${h.route_path('repo_changelog', repo_name=c.repo_name)}">
111 ${_ungettext('%(num)s Commit', '%(num)s Commits', commit_rev) % {'num': commit_rev}}</a>,
112 % endif
113 </span>
114
115 ## forks
116 <span class="tag">
117 <a title="${_('Number of Repository Forks')}" href="${h.route_path('repo_forks_show_all', repo_name=c.repo_name)}">
118 ${c.repository_forks} ${_ungettext('Fork', 'Forks', c.repository_forks)}</a>,
119 </span>
120
121 ## repo size
122 % if commit_rev == -1:
123 <span class="stats-bullet">0 B</span>
124 % else:
125 <span class="stats-bullet" id="repo_size_container">
126 ${_('Calculating Repository Size...')}
127 </span>
128 % endif
129
130 </div>
131 </div>
132 </div>
133 </div>
134
135 <div class="fieldset collapsable-content" data-toggle="summary-details" style="display: none;">
136 <div class="left-label-summary">
88 ${_('Description')}:
137 ${_('Description')}:
89 </div>
138 </div>
90 <div class="right-content">
139 <div class="right-content">
91 <div class="input ${summary(c.show_stats)}">
140 <div class="input ${summary(c.show_stats)}">
92 <%namespace name="dt" file="/data_table/_dt_elements.mako"/>
141 <%namespace name="dt" file="/data_table/_dt_elements.mako"/>
93 ${dt.repo_desc(c.rhodecode_db_repo.description_safe, c.visual.stylify_metatags)}
142 ${dt.repo_desc(c.rhodecode_db_repo.description_safe, c.visual.stylify_metatags)}
94 </div>
143 </div>
95 </div>
144 </div>
96 </div>
145 </div>
97
146
98 <div class="fieldset collapsable-content" data-toggle="summary-details" style="display: none;">
99 <div class="left-label">
100 ${_('Information')}:
101 </div>
102 <div class="right-content">
103
104 <div class="repo-size">
105 <% commit_rev = c.rhodecode_db_repo.changeset_cache.get('revision') %>
106
107 ## commits
108 % if commit_rev == -1:
109 ${_ungettext('%(num)s Commit', '%(num)s Commits', 0) % {'num': 0}},
110 % else:
111 <a href="${h.route_path('repo_changelog', repo_name=c.repo_name)}">
112 ${_ungettext('%(num)s Commit', '%(num)s Commits', commit_rev) % {'num': commit_rev}}</a>,
113 % endif
114
115 ## forks
116 <a title="${_('Number of Repository Forks')}" href="${h.route_path('repo_forks_show_all', repo_name=c.repo_name)}">
117 ${c.repository_forks} ${_ungettext('Fork', 'Forks', c.repository_forks)}</a>,
118
119 ## repo size
120 % if commit_rev == -1:
121 <span class="stats-bullet">0 B</span>
122 % else:
123 <span class="stats-bullet" id="repo_size_container">
124 ${_('Calculating Repository Size...')}
125 </span>
126 % endif
127 </div>
128
129 <div class="commit-info">
130 <div class="tags">
131 % if c.rhodecode_repo:
132 ${refs_counters(
133 c.rhodecode_repo.branches,
134 c.rhodecode_repo.branches_closed,
135 c.rhodecode_repo.tags,
136 c.rhodecode_repo.bookmarks)}
137 % else:
138 ## missing requirements can make c.rhodecode_repo None
139 ${refs_counters([], [], [], [])}
140 % endif
141 </div>
142 </div>
143
144 </div>
145 </div>
146
147 <div class="fieldset collapsable-content" data-toggle="summary-details" style="display: none;">
148 <div class="left-label">
149 ${_('Statistics')}:
150 </div>
151 <div class="right-content">
152 <div class="input ${summary(c.show_stats)} statistics">
153 % if c.show_stats:
154 <div id="lang_stats" class="enabled">
155 ${_('Calculating Code Statistics...')}
156 </div>
157 % else:
158 <span class="disabled">
159 ${_('Statistics are disabled for this repository')}
160 </span>
161 % if h.HasPermissionAll('hg.admin')('enable stats on from summary'):
162 , ${h.link_to(_('enable statistics'),h.route_path('edit_repo',repo_name=c.repo_name, _anchor='repo_enable_statistics'))}
163 % endif
164 % endif
165 </div>
166
167 </div>
168 </div>
169
170 % if show_downloads:
147 % if show_downloads:
171 <div class="fieldset collapsable-content" data-toggle="summary-details" style="display: none;">
148 <div class="fieldset collapsable-content" data-toggle="summary-details" style="display: none;">
172 <div class="left-label">
149 <div class="left-label-summary">
173 ${_('Downloads')}:
150 ${_('Downloads')}:
174 </div>
151 </div>
175 <div class="right-content">
152 <div class="right-content">
176 <div class="input ${summary(c.show_stats)} downloads">
153 <div class="input ${summary(c.show_stats)} downloads">
177 % if c.rhodecode_repo and len(c.rhodecode_repo.commit_ids) == 0:
154 % if c.rhodecode_repo and len(c.rhodecode_repo.commit_ids) == 0:
178 <span class="disabled">
155 <span class="disabled">
179 ${_('There are no downloads yet')}
156 ${_('There are no downloads yet')}
180 </span>
157 </span>
181 % elif not c.enable_downloads:
158 % elif not c.enable_downloads:
182 <span class="disabled">
159 <span class="disabled">
183 ${_('Downloads are disabled for this repository')}
160 ${_('Downloads are disabled for this repository')}.
184 </span>
161 </span>
185 % if h.HasPermissionAll('hg.admin')('enable downloads on from summary'):
162 % if h.HasPermissionAll('hg.admin')('enable downloads on from summary'):
186 , ${h.link_to(_('enable downloads'),h.route_path('edit_repo',repo_name=c.repo_name, _anchor='repo_enable_downloads'))}
163 ${h.link_to(_('Enable downloads'),h.route_path('edit_repo',repo_name=c.repo_name, _anchor='repo_enable_downloads'))}
187 % endif
164 % endif
188 % else:
165 % else:
189 <span class="enabled">
166 <span class="enabled">
190 <a id="archive_link" class="btn btn-small" href="${h.route_path('repo_archivefile',repo_name=c.rhodecode_db_repo.repo_name,fname='tip.zip')}">
167 <a id="archive_link" class="btn btn-small" href="${h.route_path('repo_archivefile',repo_name=c.rhodecode_db_repo.repo_name,fname='tip.zip')}">
191 <i class="icon-archive"></i> tip.zip
168 <i class="icon-archive"></i> tip.zip
192 ## replaced by some JS on select
169 ## replaced by some JS on select
193 </a>
170 </a>
194 </span>
171 </span>
195 ${h.hidden('download_options')}
172 ${h.hidden('download_options')}
196 % endif
173 % endif
197 </div>
174 </div>
198 </div>
175 </div>
199 </div>
176 </div>
200 % endif
177 % endif
201
178
179 ## Statistics
180 <div class="fieldset collapsable-content" data-toggle="summary-details" style="display: none;">
181 <div class="left-label-summary">
182 ${_('Statistics')}:
183 </div>
184 <div class="right-content">
185 <div class="input ${summary(c.show_stats)} statistics">
186 % if c.show_stats:
187 <div id="lang_stats" class="enabled">
188 ${_('Calculating Code Statistics...')}
189 </div>
190 % else:
191 <span class="disabled">
192 ${_('Statistics are disabled for this repository')}.
193 </span>
194 % if h.HasPermissionAll('hg.admin')('enable stats on from summary'):
195 ${h.link_to(_('Enable statistics'),h.route_path('edit_repo',repo_name=c.repo_name, _anchor='repo_enable_statistics'))}
196 % endif
197 % endif
198 </div>
199
200 </div>
201 </div>
202
202 </div><!--end summary-detail-->
203 </div><!--end summary-detail-->
203 </%def>
204 </%def>
204
205
205 <%def name="summary_stats(gravatar_function)">
206 <%def name="summary_stats(gravatar_function)">
206 <div class="sidebar-right">
207 <div class="sidebar-right">
207 <div class="summary-detail-header">
208 <div class="summary-detail-header">
208 <h4 class="item">
209 <h4 class="item">
209 ${_('Owner')}
210 ${_('Owner')}
210 </h4>
211 </h4>
211 </div>
212 </div>
212 <div class="sidebar-right-content">
213 <div class="sidebar-right-content">
213 ${gravatar_function(c.rhodecode_db_repo.user.email, 16)}
214 ${gravatar_function(c.rhodecode_db_repo.user.email, 16)}
214 </div>
215 </div>
215 </div><!--end sidebar-right-->
216 </div><!--end sidebar-right-->
216 </%def>
217 </%def>
@@ -1,142 +1,145 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 <%namespace name="base" file="/base/base.mako"/>
2 <%namespace name="base" file="/base/base.mako"/>
3 %if c.repo_commits:
3 %if c.repo_commits:
4 <table class="rctable repo_summary table_disp">
4 <table class="rctable repo_summary table_disp">
5 <tr>
5 <tr>
6
6
7 <th class="status" colspan="2"></th>
7 <th class="status" colspan="2"></th>
8 <th>${_('Commit')}</th>
8 <th>${_('Commit')}</th>
9 <th>${_('Commit message')}</th>
9 <th>${_('Commit message')}</th>
10 <th>${_('Age')}</th>
10 <th>${_('Age')}</th>
11 <th>${_('Author')}</th>
11 <th>${_('Author')}</th>
12 <th>${_('Refs')}</th>
12 <th>${_('Refs')}</th>
13 </tr>
13 </tr>
14
14
15 ## to speed up lookups cache some functions before the loop
15 ## to speed up lookups cache some functions before the loop
16 <%
16 <%
17 active_patterns = h.get_active_pattern_entries(c.repo_name)
17 active_patterns = h.get_active_pattern_entries(c.repo_name)
18 urlify_commit_message = h.partial(h.urlify_commit_message, active_pattern_entries=active_patterns)
18 urlify_commit_message = h.partial(h.urlify_commit_message, active_pattern_entries=active_patterns)
19 %>
19 %>
20 %for cnt,cs in enumerate(c.repo_commits):
20 %for cnt,cs in enumerate(c.repo_commits):
21 <tr class="parity${cnt%2}">
21 <tr class="parity${cnt%2}">
22
22
23 <td class="td-status">
23 <td class="td-status">
24 %if c.statuses.get(cs.raw_id):
24 %if c.statuses.get(cs.raw_id):
25 <div class="changeset-status-ico shortlog">
25 <div class="changeset-status-ico shortlog">
26 %if c.statuses.get(cs.raw_id)[2]:
26 %if c.statuses.get(cs.raw_id)[2]:
27 <a class="tooltip" title="${_('Commit status: %s\nClick to open associated pull request #%s') % (c.statuses.get(cs.raw_id)[0], c.statuses.get(cs.raw_id)[2])}" href="${h.route_path('pullrequest_show',repo_name=c.statuses.get(cs.raw_id)[3],pull_request_id=c.statuses.get(cs.raw_id)[2])}">
27 <a class="tooltip" title="${_('Commit status: %s\nClick to open associated pull request #%s') % (c.statuses.get(cs.raw_id)[0], c.statuses.get(cs.raw_id)[2])}" href="${h.route_path('pullrequest_show',repo_name=c.statuses.get(cs.raw_id)[3],pull_request_id=c.statuses.get(cs.raw_id)[2])}">
28 <div class="${'flag_status {}'.format(c.statuses.get(cs.raw_id)[0])}"></div>
28 <div class="${'flag_status {}'.format(c.statuses.get(cs.raw_id)[0])}"></div>
29 </a>
29 </a>
30 %else:
30 %else:
31 <a class="tooltip" title="${_('Commit status: {}').format(h.commit_status_lbl(c.statuses.get(cs.raw_id)[0]))}" href="${h.route_path('repo_commit',repo_name=c.repo_name,commit_id=cs.raw_id,_anchor='comment-%s' % c.comments[cs.raw_id][0].comment_id)}">
31 <a class="tooltip" title="${_('Commit status: {}').format(h.commit_status_lbl(c.statuses.get(cs.raw_id)[0]))}" href="${h.route_path('repo_commit',repo_name=c.repo_name,commit_id=cs.raw_id,_anchor='comment-%s' % c.comments[cs.raw_id][0].comment_id)}">
32 <div class="${'flag_status {}'.format(c.statuses.get(cs.raw_id)[0])}"></div>
32 <div class="${'flag_status {}'.format(c.statuses.get(cs.raw_id)[0])}"></div>
33 </a>
33 </a>
34 %endif
34 %endif
35 </div>
35 </div>
36 %else:
36 %else:
37 <div class="tooltip flag_status not_reviewed" title="${_('Commit status: Not Reviewed')}"></div>
37 <div class="tooltip flag_status not_reviewed" title="${_('Commit status: Not Reviewed')}"></div>
38 %endif
38 %endif
39 </td>
39 </td>
40 <td class="td-comments">
40 <td class="td-comments">
41 %if c.comments.get(cs.raw_id,[]):
41 %if c.comments.get(cs.raw_id,[]):
42 <a title="${_('Commit has comments')}" href="${h.route_path('repo_commit',repo_name=c.repo_name,commit_id=cs.raw_id,_anchor='comment-%s' % c.comments[cs.raw_id][0].comment_id)}">
42 <a title="${_('Commit has comments')}" href="${h.route_path('repo_commit',repo_name=c.repo_name,commit_id=cs.raw_id,_anchor='comment-%s' % c.comments[cs.raw_id][0].comment_id)}">
43 <i class="icon-comment"></i> ${len(c.comments[cs.raw_id])}
43 <i class="icon-comment"></i> ${len(c.comments[cs.raw_id])}
44 </a>
44 </a>
45 %endif
45 %endif
46 </td>
46 </td>
47 <td class="td-commit">
47 <td class="td-commit">
48 <pre><a href="${h.route_path('repo_commit', repo_name=c.repo_name, commit_id=cs.raw_id)}">${h.show_id(cs)}</a></pre>
48 <code>
49 <a href="${h.route_path('repo_commit', repo_name=c.repo_name, commit_id=cs.raw_id)}">${h.show_id(cs)}</a>
50 <i class="tooltip icon-clipboard clipboard-action" data-clipboard-text="${cs.raw_id}" title="${_('Copy the full commit id')}"></i>
51 </code>
49 </td>
52 </td>
50
53
51 <td class="td-description mid">
54 <td class="td-description mid">
52 <div class="log-container truncate-wrap">
55 <div class="log-container truncate-wrap">
53 <div class="message truncate" id="c-${cs.raw_id}">${urlify_commit_message(cs.message, c.repo_name)}</div>
56 <div class="message truncate" id="c-${cs.raw_id}">${urlify_commit_message(cs.message, c.repo_name)}</div>
54 </div>
57 </div>
55 </td>
58 </td>
56
59
57 <td class="td-time">
60 <td class="td-time">
58 ${h.age_component(cs.date)}
61 ${h.age_component(cs.date)}
59 </td>
62 </td>
60 <td class="td-user author">
63 <td class="td-user author">
61 ${base.gravatar_with_user(cs.author)}
64 ${base.gravatar_with_user(cs.author)}
62 </td>
65 </td>
63
66
64 <td class="td-tags">
67 <td class="td-tags">
65 <div class="autoexpand">
68 <div class="autoexpand">
66 %if h.is_hg(c.rhodecode_repo):
69 %if h.is_hg(c.rhodecode_repo):
67 %for book in cs.bookmarks:
70 %for book in cs.bookmarks:
68 <span class="booktag tag" title="${h.tooltip(_('Bookmark %s') % book)}">
71 <span class="booktag tag" title="${h.tooltip(_('Bookmark %s') % book)}">
69 <a href="${h.route_path('repo_files:default_path',repo_name=c.repo_name,commit_id=cs.raw_id, _query=dict(at=book))}"><i class="icon-bookmark"></i>${h.shorter(book)}</a>
72 <a href="${h.route_path('repo_files:default_path',repo_name=c.repo_name,commit_id=cs.raw_id, _query=dict(at=book))}"><i class="icon-bookmark"></i>${h.shorter(book)}</a>
70 </span>
73 </span>
71 %endfor
74 %endfor
72 %endif
75 %endif
73 ## tags
76 ## tags
74 %for tag in cs.tags:
77 %for tag in cs.tags:
75 <span class="tagtag tag" title="${h.tooltip(_('Tag %s') % tag)}">
78 <span class="tagtag tag" title="${h.tooltip(_('Tag %s') % tag)}">
76 <a href="${h.route_path('repo_files:default_path',repo_name=c.repo_name,commit_id=cs.raw_id, _query=dict(at=tag))}"><i class="icon-tag"></i>${h.shorter(tag)}</a>
79 <a href="${h.route_path('repo_files:default_path',repo_name=c.repo_name,commit_id=cs.raw_id, _query=dict(at=tag))}"><i class="icon-tag"></i>${h.shorter(tag)}</a>
77 </span>
80 </span>
78 %endfor
81 %endfor
79
82
80 ## branch
83 ## branch
81 %if cs.branch:
84 %if cs.branch:
82 <span class="branchtag tag" title="${h.tooltip(_('Branch %s') % cs.branch)}">
85 <span class="branchtag tag" title="${h.tooltip(_('Branch %s') % cs.branch)}">
83 <a href="${h.route_path('repo_changelog',repo_name=c.repo_name,_query=dict(branch=cs.branch))}"><i class="icon-code-fork"></i>${h.shorter(cs.branch)}</a>
86 <a href="${h.route_path('repo_changelog',repo_name=c.repo_name,_query=dict(branch=cs.branch))}"><i class="icon-code-fork"></i>${h.shorter(cs.branch)}</a>
84 </span>
87 </span>
85 %endif
88 %endif
86 </div>
89 </div>
87 </td>
90 </td>
88 </tr>
91 </tr>
89 %endfor
92 %endfor
90
93
91 </table>
94 </table>
92
95
93 <script type="text/javascript">
96 <script type="text/javascript">
94 $(document).pjax('#shortlog_data .pager_link','#shortlog_data', {timeout: 2000, scrollTo: false, push: false});
97 $(document).pjax('#shortlog_data .pager_link','#shortlog_data', {timeout: 2000, scrollTo: false, push: false});
95 $(document).on('pjax:success', function(){ timeagoActivate(); });
98 $(document).on('pjax:success', function(){ timeagoActivate(); });
96 </script>
99 </script>
97
100
98 <div class="pagination-wh pagination-left">
101 <div class="pagination-wh pagination-left">
99 ${c.repo_commits.pager('$link_previous ~2~ $link_next')}
102 ${c.repo_commits.pager('$link_previous ~2~ $link_next')}
100 </div>
103 </div>
101 %else:
104 %else:
102
105
103 %if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
106 %if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
104 <div class="quick_start">
107 <div class="quick_start">
105 <div class="fieldset">
108 <div class="fieldset">
106 <div class="left-label">${_('Add or upload files directly via RhodeCode:')}</div>
109 <div class="left-label">${_('Add or upload files directly via RhodeCode:')}</div>
107 <div class="right-content">
110 <div class="right-content">
108 <div id="add_node_id" class="add_node">
111 <div id="add_node_id" class="add_node">
109 <a href="${h.route_path('repo_files_add_file',repo_name=c.repo_name,commit_id=0, f_path='', _anchor='edit')}" class="btn btn-default">${_('Add New File')}</a>
112 <a href="${h.route_path('repo_files_add_file',repo_name=c.repo_name,commit_id=0, f_path='', _anchor='edit')}" class="btn btn-default">${_('Add New File')}</a>
110 </div>
113 </div>
111 </div>
114 </div>
112 %endif
115 %endif
113 </div>
116 </div>
114
117
115 %if not h.is_svn(c.rhodecode_repo):
118 %if not h.is_svn(c.rhodecode_repo):
116 <div class="fieldset">
119 <div class="fieldset">
117 <div class="left-label">${_('Push new repo:')}</div>
120 <div class="left-label">${_('Push new repo:')}</div>
118 <div class="right-content">
121 <div class="right-content">
119 <pre>
122 <pre>
120 ${c.rhodecode_repo.alias} clone ${c.clone_repo_url}
123 ${c.rhodecode_repo.alias} clone ${c.clone_repo_url}
121 ${c.rhodecode_repo.alias} add README # add first file
124 ${c.rhodecode_repo.alias} add README # add first file
122 ${c.rhodecode_repo.alias} commit -m "Initial" # commit with message
125 ${c.rhodecode_repo.alias} commit -m "Initial" # commit with message
123 ${c.rhodecode_repo.alias} push ${'origin master' if h.is_git(c.rhodecode_repo) else ''} # push changes back
126 ${c.rhodecode_repo.alias} push ${'origin master' if h.is_git(c.rhodecode_repo) else ''} # push changes back
124 </pre>
127 </pre>
125 </div>
128 </div>
126 </div>
129 </div>
127 <div class="fieldset">
130 <div class="fieldset">
128 <div class="left-label">${_('Existing repository?')}</div>
131 <div class="left-label">${_('Existing repository?')}</div>
129 <div class="right-content">
132 <div class="right-content">
130 <pre>
133 <pre>
131 %if h.is_git(c.rhodecode_repo):
134 %if h.is_git(c.rhodecode_repo):
132 git remote add origin ${c.clone_repo_url}
135 git remote add origin ${c.clone_repo_url}
133 git push -u origin master
136 git push -u origin master
134 %else:
137 %else:
135 hg push ${c.clone_repo_url}
138 hg push ${c.clone_repo_url}
136 %endif
139 %endif
137 </pre>
140 </pre>
138 </div>
141 </div>
139 </div>
142 </div>
140 %endif
143 %endif
141 </div>
144 </div>
142 %endif
145 %endif
General Comments 0
You need to be logged in to leave comments. Login now