Files
@ ffd45b185016
Branch filter:
Location: kallithea/rhodecode/templates/changeset/changeset.html - annotation
ffd45b185016
14.5 KiB
text/html
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
This imports changes between changesets 21af6c4eab3d and 6177597791c2 in
RhodeCode's original repository, including only changes to Python files and HTML.
RhodeCode clearly licensed its changes to these files under GPLv3
in their /LICENSE file, which states the following:
The Python code and integrated HTML are licensed under the GPLv3 license.
(See:
https://code.rhodecode.com/rhodecode/files/v2.2.5/LICENSE
or
http://web.archive.org/web/20140512193334/https://code.rhodecode.com/rhodecode/files/f3b123159901f15426d18e3dc395e8369f70ebe0/LICENSE
for an online copy of that LICENSE file)
Conservancy reviewed these changes and confirmed that they can be licensed as
a whole to the Kallithea project under GPLv3-only.
While some of the contents committed herein are clearly licensed
GPLv3-or-later, on the whole we must assume the are GPLv3-only, since the
statement above from RhodeCode indicates that they intend GPLv3-only as their
license, per GPLv3§14 and other relevant sections of GPLv3.
This imports changes between changesets 21af6c4eab3d and 6177597791c2 in
RhodeCode's original repository, including only changes to Python files and HTML.
RhodeCode clearly licensed its changes to these files under GPLv3
in their /LICENSE file, which states the following:
The Python code and integrated HTML are licensed under the GPLv3 license.
(See:
https://code.rhodecode.com/rhodecode/files/v2.2.5/LICENSE
or
http://web.archive.org/web/20140512193334/https://code.rhodecode.com/rhodecode/files/f3b123159901f15426d18e3dc395e8369f70ebe0/LICENSE
for an online copy of that LICENSE file)
Conservancy reviewed these changes and confirmed that they can be licensed as
a whole to the Kallithea project under GPLv3-only.
While some of the contents committed herein are clearly licensed
GPLv3-or-later, on the whole we must assume the are GPLv3-only, since the
statement above from RhodeCode indicates that they intend GPLv3-only as their
license, per GPLv3§14 and other relevant sections of GPLv3.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 | 1cecc7db3106 1cecc7db3106 1e757ac98988 1e757ac98988 1e757ac98988 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 1e757ac98988 1e757ac98988 1e757ac98988 bb1eecda3172 1e757ac98988 1e757ac98988 1e757ac98988 eacd33e0c5b3 1e757ac98988 1e757ac98988 1e757ac98988 072a37c44f58 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 1e757ac98988 32471bd1f4ee 32471bd1f4ee ffd45b185016 32471bd1f4ee 32471bd1f4ee 32471bd1f4ee 1e757ac98988 b4f401524060 5ba6fd9ab711 ffd45b185016 ffd45b185016 ffd45b185016 5ba6fd9ab711 ffd45b185016 5ba6fd9ab711 ffd45b185016 ffd45b185016 ffd45b185016 68f9c216377d ffd45b185016 b4f401524060 493e03a4d268 493e03a4d268 ffd45b185016 ffd45b185016 493e03a4d268 493e03a4d268 37b3c3244bbc ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 e8c016815ab9 e8c016815ab9 37b3c3244bbc 83e4447077d3 68f9c216377d b4f401524060 b4f401524060 b4f401524060 ffd45b185016 ffd45b185016 ffd45b185016 ebe3e388bbb3 ec6354949623 ec6354949623 ec6354949623 b4f401524060 ec6354949623 ec6354949623 ec6354949623 b4f401524060 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 f91d3f9b7230 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ec6354949623 b4f401524060 ffd45b185016 ffd45b185016 ffd45b185016 0cecc22285ef 0cecc22285ef 0cecc22285ef ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 b4f401524060 ffd45b185016 32471bd1f4ee 02bbd574fa14 32471bd1f4ee b4f401524060 b4f401524060 ffd45b185016 b4f401524060 32471bd1f4ee 32471bd1f4ee 32471bd1f4ee 32471bd1f4ee 32471bd1f4ee 32471bd1f4ee 32471bd1f4ee 32471bd1f4ee 32471bd1f4ee ec6354949623 32471bd1f4ee b4f401524060 b4f401524060 f91d3f9b7230 1e757ac98988 32471bd1f4ee f91d3f9b7230 d4a7b6c82efe 32471bd1f4ee 32471bd1f4ee 32471bd1f4ee ec6354949623 32471bd1f4ee f91d3f9b7230 d4a7b6c82efe d2de0c2f02cd a0adf8db1416 f91d3f9b7230 58c529332e7e 58c529332e7e 58c529332e7e 58c529332e7e ad19dfcdb1cc ad19dfcdb1cc ad19dfcdb1cc a0adf8db1416 6f0143e5efe5 7276b170ce8b d4a7b6c82efe d4a7b6c82efe d4a7b6c82efe 04aa0ea1ddd0 04aa0ea1ddd0 04aa0ea1ddd0 d4a7b6c82efe d4a7b6c82efe d4a7b6c82efe d4a7b6c82efe d4a7b6c82efe f91d3f9b7230 d4a7b6c82efe d4a7b6c82efe d4a7b6c82efe f91d3f9b7230 c83d3d42ab92 f91d3f9b7230 d4a7b6c82efe f91d3f9b7230 7276b170ce8b d4a7b6c82efe 04aa0ea1ddd0 04aa0ea1ddd0 04aa0ea1ddd0 d4a7b6c82efe 1f2ba96de73e f91d3f9b7230 1f2ba96de73e 1f2ba96de73e b61e540122f2 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 ffd45b185016 7276b170ce8b f91d3f9b7230 f91d3f9b7230 f91d3f9b7230 d4a7b6c82efe aaec08ad9daf | ## -*- coding: utf-8 -*-
<%inherit file="/base/base.html"/>
<%def name="title()">
${_('%s Changeset') % c.repo_name} - ${h.show_id(c.changeset)}
%if c.rhodecode_name:
· ${c.rhodecode_name}
%endif
</%def>
<%def name="breadcrumbs_links()">
${_('Changeset')} - <span class='hash'>r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)}</span>
</%def>
<%def name="page_nav()">
${self.menu('repositories')}
</%def>
<%def name="main()">
${self.repo_context_bar('changelog')}
<div class="box">
<!-- box / title -->
<div class="title">
${self.breadcrumbs()}
</div>
<script>
var _USERS_AC_DATA = ${c.users_array|n};
var _GROUPS_AC_DATA = ${c.user_groups_array|n};
AJAX_COMMENT_URL = "${url('changeset_comment',repo_name=c.repo_name,revision=c.changeset.raw_id)}";
AJAX_COMMENT_DELETE_URL = "${url('changeset_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__')}";
</script>
<div class="table">
<div class="diffblock">
<div class="parents">
<div id="parent_link" class="changeset_hash">
<i style="color:#036185" class="icon-chevron-left"></i> <a href="#">${_('parent rev.')}</a>
</div>
</div>
<div class="children">
<div id="child_link" class="changeset_hash">
<a href="#">${_('child rev.')}</a> <i style="color:#036185" class="icon-chevron-right"></i>
</div>
</div>
<div class="code-header banner">
<div class="changeset-status-container">
%if c.statuses:
<div class="changeset-status-ico"><img src="${h.url('/images/icons/flag_status_%s.png' % c.statuses[0])}" /></div>
<div title="${_('Changeset status')}" class="changeset-status-lbl">[${h.changeset_status_lbl(c.statuses[0])}]</div>
%endif
</div>
<div class="diff-actions">
<a href="${h.url('changeset_raw_home',repo_name=c.repo_name,revision=c.changeset.raw_id)}" class="tooltip" title="${h.tooltip(_('Raw diff'))}">
<img class="icon" src="${h.url('/images/icons/page_white.png')}"/>
</a>
<a href="${h.url('changeset_patch_home',repo_name=c.repo_name,revision=c.changeset.raw_id)}" class="tooltip" title="${h.tooltip(_('Patch diff'))}">
<img class="icon" src="${h.url('/images/icons/page_add.png')}"/>
</a>
<a href="${h.url('changeset_download_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='download')}" class="tooltip" title="${h.tooltip(_('Download diff'))}">
<img class="icon" src="${h.url('/images/icons/page_save.png')}"/>
</a>
${c.ignorews_url(request.GET)}
${c.context_url(request.GET)}
</div>
<div class="comments-number" style="float:right;padding-right:5px">${ungettext("%d comment", "%d comments", len(c.comments)) % len(c.comments)} ${ungettext("(%d inline)", "(%d inline)", c.inline_cnt) % c.inline_cnt}</div>
</div>
</div>
<div id="changeset_content">
<div class="container">
<div class="right">
<div class="changes">
% if (len(c.changeset.affected_files) <= c.affected_files_cut_off) or c.fulldiff:
<span class="removed" title="${_('Removed')}">${len(c.changeset.removed)}</span>
<span class="changed" title="${_('Changed')}">${len(c.changeset.changed)}</span>
<span class="added" title="${_('Added')}">${len(c.changeset.added)}</span>
% else:
<span class="removed" title="${_('Affected %s files') % len(c.changeset.affected_files)}">!</span>
<span class="changed" title="${_('Affected %s files') % len(c.changeset.affected_files)}">!</span>
<span class="added" title="${_('Affected %s files') % len(c.changeset.affected_files)}">!</span>
% endif
</div>
<span class="logtags">
%if len(c.changeset.parents)>1:
<span class="merge">${_('merge')}</span>
%endif
%if h.is_hg(c.rhodecode_repo):
%for book in c.changeset.bookmarks:
<span class="booktag" title="${_('Bookmark %s') % book}">
${h.link_to(h.shorter(book),h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}
</span>
%endfor
%endif
%for tag in c.changeset.tags:
<span class="tagtag" title="${_('Tag %s') % tag}">
${h.link_to(tag,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</span>
%endfor
%if c.changeset.branch:
<span class="branchtag" title="${_('Branch %s') % c.changeset.branch}">
${h.link_to(c.changeset.branch,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}
</span>
%endif
</span>
</div>
<div class="left">
<div class="author">
<div class="gravatar">
<img alt="gravatar" src="${h.gravatar_url(h.email_or_none(c.changeset.author),20)}"/>
</div>
<span><b>${h.person(c.changeset.author)}</b> - ${h.age(c.changeset.date,True)} ${h.fmt_date(c.changeset.date)}</span><br/>
<span>${h.email_or_none(c.changeset.author)}</span><br/>
</div>
<div class="message">${h.urlify_commit(c.changeset.message, c.repo_name)}</div>
</div>
</div>
<div class="changes_txt">
% if c.limited_diff:
${ungettext('%s file changed','%s files changed',len(c.changeset.affected_files)) % (len(c.changeset.affected_files))}:
% else:
${ungettext('%s file changed with %s insertions and %s deletions','%s files changed with %s insertions and %s deletions', len(c.changeset.affected_files)) % (len(c.changeset.affected_files),c.lines_added,c.lines_deleted)}:
%endif
</div>
<div class="cs_files">
%for FID, (cs1, cs2, change, path, diff, stats) in c.changes[c.changeset.raw_id].iteritems():
<div class="cs_${change}">
<div class="node">
<a href="#${FID}">${h.safe_unicode(path)}</a>
</div>
<div class="changes">${h.fancy_file_stats(stats)}</div>
</div>
%endfor
% if c.limited_diff:
<h5>${_('Changeset was too big and was cut off...')} <a href="${h.url.current(fulldiff=1, **request.GET.mixed())}" onclick="return confirm('${_("Showing a huge diff might take some time and resources")}')">${_('Show full diff')}</a></h5>
% endif
</div>
</div>
</div>
## diff block
<%namespace name="diff_block" file="/changeset/diff_block.html"/>
${diff_block.diff_block(c.changes[c.changeset.raw_id])}
% if c.limited_diff:
<h4>${_('Changeset was too big and was cut off...')} <a href="${h.url.current(fulldiff=1, **request.GET.mixed())}" onclick="return confirm('${_("Showing a huge diff might take some time and resources")}')">${_('Show full diff')}</a></h4>
% endif
## template for inline comment form
<%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
${comment.comment_inline_form()}
## render comments and inlines
${comment.generate_comments()}
## main comment form and it status
${comment.comments(h.url('changeset_comment', repo_name=c.repo_name, revision=c.changeset.raw_id),
h.changeset_status(c.rhodecode_db_repo, c.changeset.raw_id))}
## FORM FOR MAKING JS ACTION AS CHANGESET COMMENTS
<script type="text/javascript">
YUE.onDOMReady(function(){
YUE.on(YUQ('.show-inline-comments'),'change',function(e){
var show = 'none';
var target = e.currentTarget;
if(target == null){
target = this;
}
if(target.checked){
var show = ''
}
var boxid = YUD.getAttribute(target,'id_for');
var comments = YUQ('#{0} .inline-comments'.format(boxid));
for(c in comments){
YUD.setStyle(comments[c],'display',show);
}
var btns = YUQ('#{0} .inline-comments-button'.format(boxid));
for(c in btns){
YUD.setStyle(btns[c],'display',show);
}
})
YUE.on(YUQ('.line'),'click',function(e){
var tr = e.currentTarget;
if(tr == null){
tr = this;
}
injectInlineForm(tr);
});
// inject comments into they proper positions
var file_comments = YUQ('.inline-comment-placeholder');
renderInlineComments(file_comments);
pyroutes.register('changeset_home',
"${h.url('changeset_home', repo_name='%(repo_name)s', revision='%(revision)s')}",
['repo_name', 'revision']);
//next links
$('#child_link').on('click', function(e){
//fetch via ajax what is going to be the next link, if we have
//>1 links show them to user to choose
if(!$('#child_link').hasClass('disabled')){
$.ajax({
url: '${h.url('changeset_children',repo_name=c.repo_name, revision=c.changeset.raw_id)}',
success: function(data) {
if(data.results.length === 0){
$('#child_link').addClass('disabled');
$('#child_link').html('${_('no revisions')}');
}
if(data.results.length === 1){
var commit = data.results[0];
window.location = pyroutes.url('changeset_home', {'repo_name': '${c.repo_name}','revision': commit.raw_id});
}
else if(data.results.length === 2){
$('#child_link').addClass('disabled');
$('#child_link').addClass('double');
var _html = '';
_html +='<a title="__title__" href="__url__">__rev__</a> <i style="color:#036185" class="icon-chevron-right"></i>'
.replace('__rev__','r{0}:{1}'.format(data.results[0].revision, data.results[0].raw_id.substr(0,6)))
.replace('__title__', data.results[0].message)
.replace('__url__', pyroutes.url('changeset_home', {'repo_name': '${c.repo_name}','revision': data.results[0].raw_id}));
_html +='<br/>'
_html +='<a title="__title__" href="__url__">__rev__</a> <i style="color:#036185" class="icon-chevron-right"></i>'
.replace('__rev__','r{0}:{1}'.format(data.results[1].revision, data.results[1].raw_id.substr(0,6)))
.replace('__title__', data.results[1].message)
.replace('__url__', pyroutes.url('changeset_home', {'repo_name': '${c.repo_name}','revision': data.results[1].raw_id}));
$('#child_link').html(_html);
}
},
});
e.preventDefault();
}
})
//prev links
$('#parent_link').on('click', function(e){
//fetch via ajax what is going to be the next link, if we have
//>1 links show them to user to choose
if(!$('#parent_link').hasClass('disabled')){
$.ajax({
url: '${h.url('changeset_parents',repo_name=c.repo_name, revision=c.changeset.raw_id)}',
success: function(data) {
if(data.results.length === 0){
$('#parent_link').addClass('disabled');
$('#parent_link').html('${_('no revisions')}');
}
if(data.results.length === 1){
var commit = data.results[0];
window.location = pyroutes.url('changeset_home', {'repo_name': '${c.repo_name}','revision': commit.raw_id});
}
else if(data.results.length === 2){
$('#parent_link').addClass('disabled');
$('#parent_link').addClass('double');
var _html = '';
_html +='<i style="color:#036185" class="icon-chevron-left"></i> <a title="__title__" href="__url__">__rev__</a>'
.replace('__rev__','r{0}:{1}'.format(data.results[0].revision, data.results[0].raw_id.substr(0,6)))
.replace('__title__', data.results[0].message)
.replace('__url__', pyroutes.url('changeset_home', {'repo_name': '${c.repo_name}','revision': data.results[0].raw_id}));
_html +='<br/>'
_html +='<i style="color:#036185" class="icon-chevron-left"></i> <a title="__title__" href="__url__">__rev__</a>'
.replace('__rev__','r{0}:{1}'.format(data.results[1].revision, data.results[1].raw_id.substr(0,6)))
.replace('__title__', data.results[1].message)
.replace('__url__', pyroutes.url('changeset_home', {'repo_name': '${c.repo_name}','revision': data.results[1].raw_id}));
$('#parent_link').html(_html);
}
},
});
e.preventDefault();
}
})
})
</script>
</div>
</%def>
|