##// END OF EJS Templates
tooltip: use consistent h.tooltip usage to set tooltips.
dan -
r1843:ae62b3c2 default
parent child Browse files
Show More
@@ -73,7 +73,7 b''
73 73 </div>
74 74
75 75 <div class="author">
76 <div title="${c.file_last_commit.author}">
76 <div title="${h.tooltip(c.file_last_commit.author)}">
77 77 ${self.gravatar_with_user(c.file_last_commit.author, 16)} - ${_('created')} ${h.age_component(c.file_last_commit.date)}
78 78 </div>
79 79
@@ -39,7 +39,7 b''
39 39 <tr>
40 40 <td colspan="4">
41 41 <span class="private_repo_msg">
42 <strong title="${_user.permission}">${_('private repository')}</strong>
42 <strong title="${h.tooltip(_user.permission)}">${_('private repository')}</strong>
43 43 </span>
44 44 </td>
45 45 <td class="private_repo_msg">
@@ -23,7 +23,7 b''
23 23 <dl class="dl-horizontal settings">
24 24 %for dt, dd, tt in elems:
25 25 <dt >${dt}:</dt>
26 <dd title="${tt}">${dd}</dd>
26 <dd title="${h.tooltip(tt)}">${dd}</dd>
27 27 %endfor
28 28 </dl>
29 29 </div>
@@ -16,7 +16,7 b''
16 16 <dl class="dl-horizontal settings">
17 17 %for dt, dd, tt in elems:
18 18 <dt>${dt}:</dt>
19 <dd title="${tt}">${dd}</dd>
19 <dd title="${h.tooltip(tt)}">${dd}</dd>
20 20 %endfor
21 21 </dl>
22 22 </div>
@@ -90,7 +90,7 b''
90 90 <dl class="dl-horizontal">
91 91 %for dt, dd, title, show_items in elements:
92 92 <dt>${dt}:</dt>
93 <dd title="${title}">
93 <dd title="${h.tooltip(title)}">
94 94 %if callable(dd):
95 95 ## allow lazy evaluation of elements
96 96 ${dd()}
@@ -134,7 +134,7 b''
134 134
135 135 <%def name="gravatar_with_user(contact, size=16, show_disabled=False)">
136 136 <% email = h.email_or_none(contact) %>
137 <div class="rc-user tooltip" title="${h.author_string(email)}">
137 <div class="rc-user tooltip" title="${h.tooltip(h.author_string(email))}">
138 138 ${self.gravatar(email, size)}
139 139 <span class="${'user user-disabled' if show_disabled else 'user'}"> ${h.link_to_user(contact)}</span>
140 140 </div>
@@ -234,7 +234,7 b''
234 234 ## TODO: anderson: ideally it would have a function on the scm_instance "enable_pullrequest() and enable_fork()"
235 235 %if c.rhodecode_db_repo.repo_type in ['git','hg']:
236 236 <li class="${is_active('showpullrequest')}">
237 <a class="menulink" href="${h.route_path('pullrequest_show_all', repo_name=c.repo_name)}" title="${_('Show Pull Requests for %s') % c.repo_name}">
237 <a class="menulink" href="${h.route_path('pullrequest_show_all', repo_name=c.repo_name)}" title="${h.tooltip(_('Show Pull Requests for %s') % c.repo_name)}">
238 238 %if c.repository_pull_requests:
239 239 <span class="pr_notifications">${c.repository_pull_requests}</span>
240 240 %endif
@@ -10,7 +10,7 b''
10 10
11 11
12 12 <%def name="name(name, files_url)">
13 <span class="tag booktag" title="${_('Bookmark %s') % (name,)}">
13 <span class="tag booktag" title="${h.tooltip(_('Bookmark %s') % (name,))}">
14 14 <a href="${files_url}">
15 15 <i class="icon-bookmark"></i>
16 16 ${name}
@@ -23,11 +23,11 b''
23 23 </%def>
24 24
25 25 <%def name="author(author)">
26 <span class="tooltip" title="${author}">${h.link_to_user(author)}</span>
26 <span class="tooltip" title="${h.tooltip(author)}">${h.link_to_user(author)}</span>
27 27 </%def>
28 28
29 29 <%def name="commit(message, commit_id, commit_idx)">
30 30 <div>
31 <pre><a title="${message}" href="${h.url('files_home',repo_name=c.repo_name,revision=commit_id)}">r${commit_idx}:${h.short_id(commit_id)}</a></pre>
31 <pre><a title="${h.tooltip(message)}" href="${h.url('files_home',repo_name=c.repo_name,revision=commit_id)}">r${commit_idx}:${h.short_id(commit_id)}</a></pre>
32 32 </div>
33 33 </%def>
@@ -9,7 +9,7 b''
9 9 </%def>
10 10
11 11 <%def name="name(name, files_url)">
12 <span class="tag branchtag" title="${_('Branch %s') % (name,)}">
12 <span class="tag branchtag" title="${h.tooltip(_('Branch %s') % (name,))}">
13 13 <a href="${files_url}"><i class="icon-code-fork"></i>${name}
14 14 %if name in c.closed_branches:
15 15 [closed]
@@ -23,11 +23,11 b''
23 23 </%def>
24 24
25 25 <%def name="author(author)">
26 <span class="tooltip" title="${author}">${h.link_to_user(author)}</span>
26 <span class="tooltip" title="${h.tooltip(author)}">${h.link_to_user(author)}</span>
27 27 </%def>
28 28
29 29 <%def name="commit(message, commit_id, commit_idx)">
30 30 <div>
31 <pre><a title="${message}" href="${h.url('files_home',repo_name=c.repo_name,revision=commit_id)}">r${commit_idx}:${h.short_id(commit_id)}</a></pre>
31 <pre><a title="${h.tooltip(message)}" href="${h.url('files_home',repo_name=c.repo_name,revision=commit_id)}">r${commit_idx}:${h.short_id(commit_id)}</a></pre>
32 32 </div>
33 33 </%def>
@@ -37,7 +37,7 b''
37 37 %if c.rhodecode_db_repo.fork:
38 38 <span>
39 39 <a id="compare_fork_button"
40 title="${_('Compare fork with %s' % c.rhodecode_db_repo.fork.repo_name)}"
40 title="${h.tooltip(_('Compare fork with %s' % c.rhodecode_db_repo.fork.repo_name))}"
41 41 class="btn btn-small"
42 42 href="${h.url('compare_url',
43 43 repo_name=c.rhodecode_db_repo.fork.repo_name,
@@ -100,7 +100,7 b''
100 100
101 101 ## branch
102 102 %if commit.branch:
103 <span class="tag branchtag" title="${_('Branch %s') % commit.branch}">
103 <span class="tag branchtag" title="${h.tooltip(_('Branch %s') % commit.branch)}">
104 104 <a href="${h.url('changelog_home',repo_name=c.repo_name,branch=commit.branch)}"><i class="icon-code-fork"></i>${h.shorter(commit.branch)}</a>
105 105 </span>
106 106 %endif
@@ -108,7 +108,7 b''
108 108 ## bookmarks
109 109 %if h.is_hg(c.rhodecode_repo):
110 110 %for book in commit.bookmarks:
111 <span class="tag booktag" title="${_('Bookmark %s') % book}">
111 <span class="tag booktag" title="${h.tooltip(_('Bookmark %s') % book)}">
112 112 <a href="${h.url('files_home',repo_name=c.repo_name,revision=commit.raw_id)}"><i class="icon-bookmark"></i>${h.shorter(book)}</a>
113 113 </span>
114 114 %endfor
@@ -116,7 +116,7 b''
116 116
117 117 ## tags
118 118 %for tag in commit.tags:
119 <span class="tag tagtag" title="${_('Tag %s') % tag}">
119 <span class="tag tagtag" title="${h.tooltip(_('Tag %s') % tag)}">
120 120 <a href="${h.url('files_home',repo_name=c.repo_name,revision=commit.raw_id)}"><i class="icon-tag"></i>${h.shorter(tag)}</a>
121 121 </span>
122 122 %endfor
@@ -14,7 +14,7 b''
14 14 </td>
15 15 <td class="td-message">
16 16 <div class="log-container">
17 <div class="message_history" title="${cs.message}">
17 <div class="message_history" title="${h.tooltip(cs.message)}">
18 18 <a href="${h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id)}">
19 19 ${h.shorter(cs.message, 75)}
20 20 </a>
@@ -109,20 +109,20 b''
109 109
110 110 %if h.is_hg(c.rhodecode_repo):
111 111 %for book in c.commit.bookmarks:
112 <span class="booktag tag" title="${_('Bookmark %s') % book}">
112 <span class="booktag tag" title="${h.tooltip(_('Bookmark %s') % book)}">
113 113 <a href="${h.url('files_home',repo_name=c.repo_name,revision=c.commit.raw_id)}"><i class="icon-bookmark"></i>${h.shorter(book)}</a>
114 114 </span>
115 115 %endfor
116 116 %endif
117 117
118 118 %for tag in c.commit.tags:
119 <span class="tagtag tag" title="${_('Tag %s') % tag}">
119 <span class="tagtag tag" title="${h.tooltip(_('Tag %s') % tag)}">
120 120 <a href="${h.url('files_home',repo_name=c.repo_name,revision=c.commit.raw_id)}"><i class="icon-tag"></i>${tag}</a>
121 121 </span>
122 122 %endfor
123 123
124 124 %if c.commit.branch:
125 <span class="branchtag tag" title="${_('Branch %s') % c.commit.branch}">
125 <span class="branchtag tag" title="${h.tooltip(_('Branch %s') % c.commit.branch)}">
126 126 <a href="${h.url('files_home',repo_name=c.repo_name,revision=c.commit.raw_id)}"><i class="icon-code-fork"></i>${h.shorter(c.commit.branch)}</a>
127 127 </span>
128 128 %endif
@@ -114,7 +114,7 b' collapse_all = len(diffset.files) > coll'
114 114 <div class="diffset-heading ${diffset.limited_diff and 'diffset-heading-warning' or ''}">
115 115 %if commit:
116 116 <div class="pull-right">
117 <a class="btn tooltip" title="${_('Browse Files at revision {}').format(commit.raw_id)}" href="${h.url('files_home',repo_name=diffset.repo_name, revision=commit.raw_id, f_path='')}">
117 <a class="btn tooltip" title="${h.tooltip(_('Browse Files at revision {}').format(commit.raw_id))}" href="${h.url('files_home',repo_name=diffset.repo_name, revision=commit.raw_id, f_path='')}">
118 118 ${_('Browse Files')}
119 119 </a>
120 120 </div>
@@ -640,13 +640,13 b' from rhodecode.lib.diffs import NEW_FILE'
640 640
641 641 <a
642 642 class="btn ${c.diffmode == 'sideside' and 'btn-primary'} tooltip"
643 title="${_('View side by side')}"
643 title="${h.tooltip(_('View side by side'))}"
644 644 href="${h.url_replace(diffmode='sideside')}">
645 645 <span>${_('Side by Side')}</span>
646 646 </a>
647 647 <a
648 648 class="btn ${c.diffmode == 'unified' and 'btn-primary'} tooltip"
649 title="${_('View unified')}" href="${h.url_replace(diffmode='unified')}">
649 title="${h.tooltip(_('View unified'))}" href="${h.url_replace(diffmode='unified')}">
650 650 <span>${_('Unified')}</span>
651 651 </a>
652 652 </div>
@@ -5,6 +5,7 b''
5 5 from rhodecode.lib.codeblocks import render_tokenstream
6 6 # avoid module lookup for performance
7 7 html_escape = h.html_escape
8 tooltip = h.tooltip
8 9 %>
9 10 <tr class="cb-line cb-line-fresh ${'cb-annotate' if show_annotation else ''}"
10 11 %if annotation:
@@ -15,13 +16,13 b''
15 16 % if annotation:
16 17 % if show_annotation:
17 18 <td class="cb-annotate-info tooltip"
18 title="Author: ${annotation.author | entity}<br>Date: ${annotation.date}<br>Message: ${annotation.message | entity}"
19 title="Author: ${tooltip(annotation.author) | entity}<br>Date: ${annotation.date}<br>Message: ${annotation.message | entity}"
19 20 >
20 21 ${h.gravatar_with_user(annotation.author, 16) | n}
21 22 <div class="cb-annotate-message truncate-wrap">${h.chop_at_smart(annotation.message, '\n', suffix_if_chopped='...')}</div>
22 23 </td>
23 24 <td class="cb-annotate-message-spacer">
24 <a class="tooltip" href="#show-previous-annotation" onclick="return annotationController.previousAnnotation('${annotation.raw_id}', '${c.f_path}')" title="${_('view annotation from before this change')}">
25 <a class="tooltip" href="#show-previous-annotation" onclick="return annotationController.previousAnnotation('${annotation.raw_id}', '${c.f_path}')" title="${tooltip(_('view annotation from before this change'))}">
25 26 <i class="icon-left"></i>
26 27 </a>
27 28 </td>
@@ -92,22 +92,22 b''
92 92
93 93 <%def name="rss(name)">
94 94 %if c.rhodecode_user.username != h.DEFAULT_USER:
95 <a title="${_('Subscribe to %s rss feed')% name}" href="${h.url('rss_feed_home',repo_name=name,auth_token=c.rhodecode_user.feed_token)}"><i class="icon-rss-sign"></i></a>
95 <a title="${h.tooltip(_('Subscribe to %s rss feed')% name)}" href="${h.url('rss_feed_home',repo_name=name,auth_token=c.rhodecode_user.feed_token)}"><i class="icon-rss-sign"></i></a>
96 96 %else:
97 <a title="${_('Subscribe to %s rss feed')% name}" href="${h.url('rss_feed_home',repo_name=name)}"><i class="icon-rss-sign"></i></a>
97 <a title="${h.tooltip(_('Subscribe to %s rss feed')% name)}" href="${h.url('rss_feed_home',repo_name=name)}"><i class="icon-rss-sign"></i></a>
98 98 %endif
99 99 </%def>
100 100
101 101 <%def name="atom(name)">
102 102 %if c.rhodecode_user.username != h.DEFAULT_USER:
103 <a title="${_('Subscribe to %s atom feed')% name}" href="${h.url('atom_feed_home',repo_name=name,auth_token=c.rhodecode_user.feed_token)}"><i class="icon-rss-sign"></i></a>
103 <a title="${h.tooltip(_('Subscribe to %s atom feed')% name)}" href="${h.url('atom_feed_home',repo_name=name,auth_token=c.rhodecode_user.feed_token)}"><i class="icon-rss-sign"></i></a>
104 104 %else:
105 <a title="${_('Subscribe to %s atom feed')% name}" href="${h.url('atom_feed_home',repo_name=name)}"><i class="icon-rss-sign"></i></a>
105 <a title="${h.tooltip(_('Subscribe to %s atom feed')% name)}" href="${h.url('atom_feed_home',repo_name=name)}"><i class="icon-rss-sign"></i></a>
106 106 %endif
107 107 </%def>
108 108
109 109 <%def name="user_gravatar(email, size=16)">
110 <div class="rc-user tooltip" title="${h.author_string(email)}">
110 <div class="rc-user tooltip" title="${h.tooltip(h.author_string(email))}">
111 111 ${base.gravatar(email, 16)}
112 112 </div>
113 113 </%def>
@@ -134,7 +134,7 b''
134 134 %elif repo_state == 'repo_state_created':
135 135 <div class="tag tag1">${_('Created')}</div>
136 136 %else:
137 <div class="tag alert2" title="${repo_state}">invalid</div>
137 <div class="tag alert2" title="${h.tooltip(repo_state)}">invalid</div>
138 138 %endif
139 139 </div>
140 140 </%def>
@@ -7,20 +7,20 b''
7 7
8 8 %if h.is_hg(c.rhodecode_repo):
9 9 %for book in commit.bookmarks:
10 <span class="booktag tag" title="${_('Bookmark %s') % book}">
10 <span class="booktag tag" title="${h.tooltip(_('Bookmark %s') % book)}">
11 11 <a href="${h.url('files_home',repo_name=c.repo_name,revision=commit.raw_id)}"><i class="icon-bookmark"></i>${h.shorter(book)}</a>
12 12 </span>
13 13 %endfor
14 14 %endif
15 15
16 16 %for tag in commit.tags:
17 <span class="tagtag tag" title="${_('Tag %s') % tag}">
17 <span class="tagtag tag" title="${h.tooltip(_('Tag %s') % tag)}">
18 18 <a href="${h.url('files_home',repo_name=c.repo_name,revision=commit.raw_id)}"><i class="icon-tag"></i>${tag}</a>
19 19 </span>
20 20 %endfor
21 21
22 22 %if commit.branch:
23 <span class="branchtag tag" title="${_('Branch %s') % commit.branch}">
23 <span class="branchtag tag" title="${h.tooltip(_('Branch %s') % commit.branch)}">
24 24 <a href="${h.url('files_home',repo_name=c.repo_name,revision=commit.raw_id)}"><i class="icon-code-fork"></i>${h.shorter(commit.branch)}</a>
25 25 </span>
26 26 %endif
@@ -15,7 +15,7 b''
15 15 <ul class="sidebar-right-content">
16 16 % for email, user in sorted(c.authors, key=lambda e: c.file_last_commit.author_email!=e[0]):
17 17 <li class="file_author">
18 <div class="rc-user tooltip" title="${h.author_string(email)}">
18 <div class="rc-user tooltip" title="${h.tooltip(h.author_string(email))}">
19 19 ${base.gravatar(email, 16)}
20 20 <span class="user">${h.link_to_user(user)}</span>
21 21 </div>
@@ -58,14 +58,14 b''
58 58 </td>
59 59 <td class="td-hash" data-attr-name="commit_id">
60 60 % if c.full_load:
61 <div class="tooltip" title="${node.last_commit.message}">
61 <div class="tooltip" title="${h.tooltip(node.last_commit.message)}">
62 62 <pre data-commit-id="${node.last_commit.raw_id}">r${node.last_commit.revision}:${node.last_commit.short_id}</pre>
63 63 </div>
64 64 % endif
65 65 </td>
66 66 <td class="td-user" data-attr-name="author">
67 67 % if c.full_load:
68 <span data-author="${node.last_commit.author}" title="${node.last_commit.author}">${h.gravatar_with_user(node.last_commit.author)|n}</span>
68 <span data-author="${node.last_commit.author}" title="${h.tooltip(node.last_commit.author)}">${h.gravatar_with_user(node.last_commit.author)|n}</span>
69 69 % endif
70 70 </td>
71 71 %else:
@@ -25,7 +25,7 b''
25 25 ${h.age_component(f.created_on, time_is_local=True)}
26 26 </td>
27 27 <td class="td-compare">
28 <a title="${_('Compare fork with %s' % c.repo_name)}"
28 <a title="${h.tooltip(_('Compare fork with %s' % c.repo_name))}"
29 29 href="${h.url('compare_url',repo_name=c.repo_name, source_ref_type=c.rhodecode_db_repo.landing_rev[0],source_ref=c.rhodecode_db_repo.landing_rev[1],target_repo=f.repo_name,target_ref_type=c.rhodecode_db_repo.landing_rev[0],target_ref=c.rhodecode_db_repo.landing_rev[1], merge=1)}"
30 30 class="btn-link"><i class="icon-loop"></i> ${_('Compare fork')}</a>
31 31 </td>
@@ -369,7 +369,7 b''
369 369 <i class="icon-remove-sign"></i>
370 370 </div>
371 371 <div class="reviewer_member_mandatory">
372 <i class="icon-lock" title="Mandatory reviewer"></i>
372 <i class="icon-lock" title="${h.tooltip(_('Mandatory reviewer'))}"></i>
373 373 </div>
374 374 % else:
375 375 %if c.allowed_to_update:
@@ -500,7 +500,7 b''
500 500 <tr id="row-${commit.raw_id}" commit_id="${commit.raw_id}" class="compare_select">
501 501 <td>
502 502 <div class="commit-change-indicator color-${c_type}-border">
503 <div class="commit-change-content color-${c_type} tooltip" title="${cc_title}">
503 <div class="commit-change-content color-${c_type} tooltip" title="${h.tooltip(cc_title)}">
504 504 ${c_type.upper()}
505 505 </div>
506 506 </div>
@@ -10,8 +10,8 b''
10 10
11 11
12 12 <%def name="head_extra()">
13 <link href="${h.url('atom_feed_home',repo_name=c.rhodecode_db_repo.repo_name,auth_token=c.rhodecode_user.feed_token)}" rel="alternate" title="${_('%s ATOM feed') % c.repo_name}" type="application/atom+xml" />
14 <link href="${h.url('rss_feed_home',repo_name=c.rhodecode_db_repo.repo_name,auth_token=c.rhodecode_user.feed_token)}" rel="alternate" title="${_('%s RSS feed') % c.repo_name}" type="application/rss+xml" />
13 <link href="${h.url('atom_feed_home',repo_name=c.rhodecode_db_repo.repo_name,auth_token=c.rhodecode_user.feed_token)}" rel="alternate" title="${h.tooltip(_('%s ATOM feed') % c.repo_name)}" type="application/atom+xml" />
14 <link href="${h.url('rss_feed_home',repo_name=c.rhodecode_db_repo.repo_name,auth_token=c.rhodecode_user.feed_token)}" rel="alternate" title="${h.tooltip(_('%s RSS feed') % c.repo_name)}" type="application/rss+xml" />
15 15 </%def>
16 16
17 17
@@ -44,7 +44,7 b''
44 44 %if c.readme_data:
45 45 <div id="readme" class="anchor">
46 46 <div class="box" >
47 <div class="title" title="${_('Readme file from commit %s:%s') % (c.rhodecode_db_repo.landing_rev[0], c.rhodecode_db_repo.landing_rev[1])}">
47 <div class="title" title="${h.tooltip(_('Readme file from commit %s:%s') % (c.rhodecode_db_repo.landing_rev[0], c.rhodecode_db_repo.landing_rev[1]))}">
48 48 <h3 class="breadcrumbs">
49 49 <a href="${h.url('files_home',repo_name=c.repo_name,revision='tip',f_path=c.readme_file)}">${c.readme_file}</a>
50 50 </h3>
@@ -59,21 +59,21 b''
59 59 <div class="autoexpand">
60 60 %if h.is_hg(c.rhodecode_repo):
61 61 %for book in cs.bookmarks:
62 <span class="booktag tag" title="${_('Bookmark %s') % book}">
62 <span class="booktag tag" title="${h.tooltip(_('Bookmark %s') % book)}">
63 63 <a href="${h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id)}"><i class="icon-bookmark"></i>${h.shorter(book)}</a>
64 64 </span>
65 65 %endfor
66 66 %endif
67 67 ## tags
68 68 %for tag in cs.tags:
69 <span class="tagtag tag" title="${_('Tag %s') % tag}">
69 <span class="tagtag tag" title="${h.tooltip(_('Tag %s') % tag)}">
70 70 <a href="${h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id)}"><i class="icon-tag"></i>${h.shorter(tag)}</a>
71 71 </span>
72 72 %endfor
73 73
74 74 ## branch
75 75 %if cs.branch:
76 <span class="branchtag tag" title="${_('Branch %s') % cs.branch}">
76 <span class="branchtag tag" title="${h.tooltip(_('Branch %s') % cs.branch)}">
77 77 <a href="${h.url('changelog_home',repo_name=c.repo_name,branch=cs.branch)}"><i class="icon-code-fork"></i>${h.shorter(cs.branch)}</a>
78 78 </span>
79 79 %endif
@@ -9,7 +9,7 b''
9 9 </%def>
10 10
11 11 <%def name="name(name, files_url)">
12 <span class="tagtag tag" title="${_('Tag %s') % (name,)}">
12 <span class="tagtag tag" title="${h.tooltip(_('Tag %s') % (name,))}">
13 13 <a href="${files_url}"><i class="icon-tag"></i>${name}</a>
14 14 </span>
15 15 </%def>
@@ -19,11 +19,11 b''
19 19 </%def>
20 20
21 21 <%def name="author(author)">
22 <span class="tooltip" title="${author}">${h.link_to_user(author)}</span>
22 <span class="tooltip" title="${h.tooltip(author)}">${h.link_to_user(author)}</span>
23 23 </%def>
24 24
25 25 <%def name="commit(message, commit_id, commit_idx)">
26 26 <div>
27 <pre><a title="${message}" href="${h.url('files_home',repo_name=c.repo_name,revision=commit_id)}">r${commit_idx}:${h.short_id(commit_id)}</a></pre>
27 <pre><a title="${h.tooltip(message)}" href="${h.url('files_home',repo_name=c.repo_name,revision=commit_id)}">r${commit_idx}:${h.short_id(commit_id)}</a></pre>
28 28 </div>
29 29 </%def>
General Comments 0
You need to be logged in to leave comments. Login now