##// END OF EJS Templates
hovercards: added commit hovercard for files, and dashboard views.
marcink -
r4032:07c1bd09 default
parent child Browse files
Show More
@@ -0,0 +1,8 b''
1 <%namespace name="base" file="/base/base.mako"/>
2 <%namespace name="dt" file="/data_table/_dt_elements.mako"/>
3
4 <div class="clear-fix">${base.gravatar_with_user(c.commit.author, tooltip=True)}</div>
5 <br/>
6 <a href="${h.route_path('repo_commit', repo_name=c.repo_name, commit_id=c.commit.raw_id)}">${h.show_id(c.commit)}</a> - ${c.commit.date}
7 <br/><br/>
8 <pre>${h.urlify_commit_message(c.commit.message, c.repo_name)}</pre>
@@ -17,7 +17,6 b''
17 17 # This program is dual-licensed. If you wish to learn more about the
18 18 # RhodeCode Enterprise Edition, including its added features, Support services,
19 19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20 from rhodecode.config import routing_links
21 20
22 21
23 22 def includeme(config):
@@ -31,8 +30,8 b' def includeme(config):'
31 30 pattern='/_hovercard/user_group/{user_group_id}')
32 31
33 32 config.add_route(
34 name='hovercard_commit',
35 pattern='/_hovercard/commit/{repo_name}/{user_id}')
33 name='hovercard_repo_commit',
34 pattern='/_hovercard/commit/{repo_name:.*?[^/]}/{commit_id}', repo_route=True)
36 35
37 36 # Scan module for configuration decorators.
38 37 config.scan('.views', ignore='.tests')
@@ -24,10 +24,11 b' import collections'
24 24
25 25 from pyramid.view import view_config
26 26
27 from rhodecode.apps._base import BaseAppView
27 from rhodecode.apps._base import BaseAppView, RepoAppView
28 28 from rhodecode.lib import helpers as h
29 29 from rhodecode.lib.auth import (
30 LoginRequired, NotAnonymous, HasRepoGroupPermissionAnyDecorator, CSRFRequired)
30 LoginRequired, NotAnonymous, HasRepoGroupPermissionAnyDecorator, CSRFRequired,
31 HasRepoPermissionAnyDecorator)
31 32 from rhodecode.lib.codeblocks import filenode_as_lines_tokens
32 33 from rhodecode.lib.index import searcher_from_config
33 34 from rhodecode.lib.utils2 import safe_unicode, str2bool, safe_int
@@ -69,3 +70,21 b' class HoverCardsView(BaseAppView):'
69 70 user_group_id = self.request.matchdict['user_group_id']
70 71 c.user_group = UserGroup.get_or_404(user_group_id)
71 72 return self._get_template_context(c)
73
74
75 class HoverCardsRepoView(RepoAppView):
76 def load_default_context(self):
77 c = self._get_local_tmpl_context()
78 return c
79
80 @LoginRequired()
81 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', 'repository.admin')
82 @view_config(
83 route_name='hovercard_repo_commit', request_method='GET', xhr=True,
84 renderer='rhodecode:templates/hovercards/hovercard_repo_commit.mako')
85 def hovercard_repo_commit(self):
86 c = self.load_default_context()
87 commit_id = self.request.matchdict['commit_id']
88 pre_load = ['author', 'branch', 'date', 'message']
89 c.commit = self.rhodecode_vcs_repo.get_commit(commit_id=commit_id, pre_load=pre_load)
90 return self._get_template_context(c)
@@ -1690,8 +1690,9 b' def process_patterns(text_string, repo_n'
1690 1690
1691 1691 active_entries = active_entries or get_active_pattern_entries(repo_name)
1692 1692 issues_data = []
1693 newtext = text_string
1693 new_text = text_string
1694 1694
1695 log.debug('Got %s entries to process', len(active_entries))
1695 1696 for uid, entry in active_entries.items():
1696 1697 log.debug('found issue tracker entry with uid %s', uid)
1697 1698
@@ -1705,9 +1706,7 b' def process_patterns(text_string, repo_n'
1705 1706 try:
1706 1707 pattern = re.compile(r'%s' % entry['pat'])
1707 1708 except re.error:
1708 log.exception(
1709 'issue tracker pattern: `%s` failed to compile',
1710 entry['pat'])
1709 log.exception('issue tracker pattern: `%s` failed to compile', entry['pat'])
1711 1710 continue
1712 1711
1713 1712 data_func = partial(
@@ -1721,10 +1720,10 b' def process_patterns(text_string, repo_n'
1721 1720 _process_url_func, repo_name=repo_name, entry=entry, uid=uid,
1722 1721 link_format=link_format)
1723 1722
1724 newtext = pattern.sub(url_func, newtext)
1723 new_text = pattern.sub(url_func, new_text)
1725 1724 log.debug('processed prefix:uid `%s`', uid)
1726 1725
1727 return newtext, issues_data
1726 return new_text, issues_data
1728 1727
1729 1728
1730 1729 def urlify_commit_message(commit_text, repository=None, active_pattern_entries=None):
@@ -32,7 +32,7 b' function registerRCRoutes() {'
32 32 pyroutes.register('repo_integrations_edit', '/%(repo_name)s/settings/integrations/%(integration)s/%(integration_id)s', ['repo_name', 'integration', 'integration_id']);
33 33 pyroutes.register('hovercard_user', '/_hovercard/user/%(user_id)s', ['user_id']);
34 34 pyroutes.register('hovercard_user_group', '/_hovercard/user_group/%(user_group_id)s', ['user_group_id']);
35 pyroutes.register('hovercard_commit', '/_hovercard/commit/%(repo_name)s/%(user_id)s', ['repo_name', 'user_id']);
35 pyroutes.register('hovercard_repo_commit', '/_hovercard/commit/%(repo_name)s/%(commit_id)s', ['repo_name', 'commit_id']);
36 36 pyroutes.register('ops_ping', '/_admin/ops/ping', []);
37 37 pyroutes.register('ops_error_test', '/_admin/ops/error', []);
38 38 pyroutes.register('ops_redirect_test', '/_admin/ops/redirect', []);
@@ -248,16 +248,18 b' var tooltipActivate = function () {'
248 248
249 249 if (hovercardCache[id] !== undefined) {
250 250 callback(hovercardCache[id]);
251 return;
251 return true;
252 252 }
253 253
254 254 hovercardCache[id] = undefined;
255 255 $.get(url, function (data) {
256 256 hovercardCache[id] = data;
257 257 callback(hovercardCache[id]);
258 return true;
258 259 }).fail(function (data, textStatus, errorThrown) {
259 var msg = "Error while fetching hovercard.\nError code {0} ({1}).".format(data.status,data.statusText);
260 var msg = "<p class='error-message'>Error while fetching hovercard.\nError code {0} ({1}).</p>".format(data.status,data.statusText);
260 261 callback(msg);
262 return false
261 263 });
262 264 };
263 265
@@ -291,7 +293,7 b' var tooltipActivate = function () {'
291 293 var hovercardUrl = $origin.data('hovercardUrl');
292 294
293 295 if (hovercardUrl !== undefined && hovercardUrl !== "") {
294 loadHoverCard(hovercardUrl, function (data) {
296 var loaded = loadHoverCard(hovercardUrl, function (data) {
295 297 instance.content(data);
296 298 })
297 299 } else {
@@ -300,12 +302,12 b' var tooltipActivate = function () {'
300 302 } else {
301 303 var data = '<div style="white-space: pre-wrap">{0}</div>'.format($origin.data('hovercardAlt'))
302 304 }
303
305 var loaded = true;
304 306 instance.content(data);
305 307 }
306 308
307 309 // to remember that the data has been loaded
308 $origin.data('loaded', true);
310 $origin.data('loaded', loaded);
309 311 }
310 312 }
311 313 })
@@ -141,10 +141,10 b''
141 141 ${h.age_component(last_change, time_is_local=True)}
142 142 </%def>
143 143
144 <%def name="revision(name,rev,tip,author,last_msg, commit_date)">
144 <%def name="revision(repo_name, rev, commit_id, author, last_msg, commit_date)">
145 145 <div>
146 146 %if rev >= 0:
147 <code><a title="${h.tooltip('%s\n%s\n\n%s' % (author, commit_date, last_msg))}" class="tooltip" href="${h.route_path('repo_commit',repo_name=name,commit_id=tip)}">${'r%s:%s' % (rev,h.short_id(tip))}</a></code>
147 <code><a class="tooltip-hovercard" data-hovercard-alt="${last_msg}" data-hovercard-url="${h.route_path('hovercard_repo_commit', repo_name=repo_name, commit_id=commit_id)}" href="${h.route_path('repo_commit',repo_name=repo_name,commit_id=commit_id)}">${'r{}:{}'.format(rev,h.short_id(commit_id))}</a></code>
148 148 %else:
149 149 ${_('No commits yet')}
150 150 %endif
@@ -1,3 +1,5 b''
1 <%namespace name="base" file="/base/base.mako"/>
2
1 3 <%
2 4 if request.GET.get('at'):
3 5 query={'at': request.GET.get('at')}
@@ -60,7 +62,7 b''
60 62 </td>
61 63 <td class="td-hash" data-attr-name="commit_id">
62 64 % if c.full_load:
63 <div class="tooltip" title="${h.tooltip(node.last_commit.message)}">
65 <div class="tooltip-hovercard" data-hovercard-alt="${node.last_commit.message}" data-hovercard-url="${h.route_path('hovercard_repo_commit', repo_name=c.repo_name, commit_id=node.last_commit.raw_id)}">
64 66 <pre data-commit-id="${node.last_commit.raw_id}">r${node.last_commit.idx}:${node.last_commit.short_id}</pre>
65 67 </div>
66 68 % endif
General Comments 0
You need to be logged in to leave comments. Login now