##// END OF EJS Templates
fix(caching): fixed problems with Cache query for users....
fix(caching): fixed problems with Cache query for users. The old way of querying caused the user get query to be always cached, and returning old results even in 2fa forms. The new limited query doesn't cache the user object resolving issues

File last commit:

r4974:37813a48 default
r5365:ae8a165b default
Show More
issue_tracker_settings.mako
328 lines | 10.7 KiB | application/x-mako | MakoHtmlLexer
/ rhodecode / templates / base / issue_tracker_settings.mako
## snippet for displaying issue tracker settings
## usage:
## <%namespace name="its" file="/base/issue_tracker_settings.mako"/>
## ${its.issue_tracker_settings_table(patterns, form_url, delete_url)}
## ${its.issue_tracker_settings_test(test_url)}
<%def name="issue_tracker_settings_table(patterns, form_url, delete_url)">
<%
# Name/desc, pattern, issue prefix
examples = [
(
' ',
' ',
' ',
' '
),
(
'Tickets with #123 (Redmine etc)',
'(?<![a-zA-Z0-9_/]{1,10}-?)(#)(?P<issue_id>\d+)',
'https://myissueserver.com/${repo}/issue/${issue_id}',
''
),
(
'Redmine - Alternative',
'(?:issue-)(\d+)',
'https://myissueserver.com/redmine/issue/${id}',
''
),
(
'Redmine - Wiki',
'(?:wiki-)([a-zA-Z0-9]+)',
'http://example.org/projects/${repo_name}/wiki/${id}',
'wiki-'
),
(
'JIRA - All tickets',
# official JIRA ticket pattern
'(?<![a-zA-Z0-9_/#]-?)(?P<issue_id>[A-Z]{1,6}-(?:[1-9][0-9]{0,7}))',
'https://myjira.com/browse/${issue_id}',
''
),
(
'JIRA - Single project (JRA-XXXXXXXX)',
'(?<![a-zA-Z0-9_/#]-?)(?P<issue_id>JRA-(?:[1-9][0-9]{0,7}))',
'https://myjira.com/${issue_id}',
''
),
(
'Confluence WIKI',
'(?:conf-)([A-Z0-9]+)',
'https://example.atlassian.net/display/wiki/${id}/${repo_name}',
'CONF-',
),
(
'Pivotal Tracker',
'(?:pivot-)(?P<project_id>\d+)-(?P<story>\d+)',
'https://www.pivotaltracker.com/s/projects/${project_id}/stories/${story}',
'PIV-',
),
(
'Trello',
'(?:trello-)(?P<card_id>[a-zA-Z0-9]+)',
'https://trello.com/example.com/${card_id}',
'TRELLO-',
),
]
%>
<table class="rctable issuetracker">
<tr>
<th>${_('Description')}</th>
<th>${_('Pattern')}</th>
<th>${_('Url')}</th>
<th>${_('Extra Prefix')}</th>
<th ></th>
</tr>
% for name, pat, url, pref in examples:
<tr class="it-examples" style="${'' if loop.index == 0 else 'display:none'}">
<td class="td-issue-tracker-name issue-tracker-example">${name}</td>
<td class="td-regex issue-tracker-example">${pat}</td>
<td class="td-url issue-tracker-example">${url}</td>
<td class="td-prefix issue-tracker-example">${pref}</td>
<td>
% if loop.index == 0:
<a href="#showMore" onclick="$('.it-examples').toggle(); return false">${_('show examples')}</a>
% else:
<a href="#copyToInput" onclick="copyToInput(this, '${h.str_json(name)}', '${h.str_json(pat)}', '${h.str_json(url)}', '${h.str_json(pref)}'); return false">copy to input</a>
% endif
</td>
</tr>
% endfor
%for uid, entry in patterns:
<tr id="entry_${uid}">
<td class="td-issue-tracker-name issuetracker_desc">
<span class="entry">
${entry.desc}
</span>
<span class="edit">
${h.text('new_pattern_description_'+uid, class_='medium-inline', value=entry.desc or '')}
</span>
</td>
<td class="td-issue-tracker-regex issuetracker_pat">
<span class="entry">
${entry.pat}
</span>
<span class="edit">
${h.text('new_pattern_pattern_'+uid, class_='medium-inline', value=entry.pat or '')}
</span>
</td>
<td class="td-url issuetracker_url">
<span class="entry">
${entry.url}
</span>
<span class="edit">
${h.text('new_pattern_url_'+uid, class_='medium-inline', value=entry.url or '')}
</span>
</td>
<td class="td-prefix issuetracker_pref">
<span class="entry">
${entry.pref}
</span>
<span class="edit">
${h.text('new_pattern_prefix_'+uid, class_='medium-inline', value=entry.pref or '')}
</span>
</td>
<td class="td-action">
<div class="grid_edit">
<span class="entry">
<a class="edit_issuetracker_entry" href="">${_('Edit')}</a>
</span>
<span class="edit">
<input id="uid_${uid}" name="uid" type="hidden" value="${uid}">
</span>
</div>
<div class="grid_delete">
<span class="entry">
<a class="btn btn-link btn-danger delete_issuetracker_entry" data-desc="${entry.desc}" data-uid="${uid}">
${_('Delete')}
</a>
</span>
<span class="edit">
<a class="btn btn-link btn-danger edit_issuetracker_cancel" data-uid="${uid}">${_('Cancel')}</a>
</span>
</div>
</td>
</tr>
%endfor
<tr id="last-row"></tr>
</table>
<p>
<a id="add_pattern" class="link">
${_('Add new')}
</a>
</p>
<script type="text/javascript">
var newEntryLabel = $('label[for="new_entry"]');
var resetEntry = function() {
newEntryLabel.text("${_('New Entry')}:");
};
var delete_pattern = function(entry) {
if (confirm("${_('Confirm to remove this pattern:')} "+$(entry).data('desc'))) {
$.ajax({
type: "POST",
url: "${delete_url}",
data: {
'csrf_token': CSRF_TOKEN,
'uid':$(entry).data('uid')
},
success: function(){
window.location.reload();
},
error: function(data, textStatus, errorThrown){
alert("Error while deleting entry.\nError code {0} ({1}). URL: {2}".format(data.status,data.statusText,$(entry)[0].url));
}
});
}
};
$('.delete_issuetracker_entry').on('click', function(e){
e.preventDefault();
delete_pattern(this);
});
$('.edit_issuetracker_entry').on('click', function(e){
e.preventDefault();
$(this).parents('tr').addClass('editopen');
});
$('.edit_issuetracker_cancel').on('click', function(e){
e.preventDefault();
$(this).parents('tr').removeClass('editopen');
// Reset to original value
var uid = $(this).data('uid');
$('#'+uid+' input').each(function(e) {
this.value = this.defaultValue;
});
});
$('input#reset').on('click', function(e) {
resetEntry();
});
$('#add_pattern').on('click', function(e) {
addNewPatternInput();
});
var copied = false;
copyToInput = function (elem, name, pat, url, pref) {
if (copied === false) {
addNewPatternInput();
copied = true;
}
$(elem).hide();
var load = function(text){
return text.replace(/["]/g, "")
};
$('#description_1').val(load(name));
$('#pattern_1').val(load(pat));
$('#url_1').val(load(url));
$('#prefix_1').val(load(pref));
}
</script>
</%def>
<%def name="issue_tracker_new_row()">
<table id="add-row-tmpl" style="display: none;">
<tbody>
<tr class="new_pattern">
<td class="td-issue-tracker-name issuetracker_desc">
<span class="entry">
<input class="medium-inline" id="description_##UUID##" name="new_pattern_description_##UUID##" value="##DESCRIPTION##" type="text">
</span>
</td>
<td class="td-issue-tracker-regex issuetracker_pat">
<span class="entry">
<input class="medium-inline" id="pattern_##UUID##" name="new_pattern_pattern_##UUID##" placeholder="Pattern"
value="##PATTERN##" type="text">
</span>
</td>
<td class="td-url issuetracker_url">
<span class="entry">
<input class="medium-inline" id="url_##UUID##" name="new_pattern_url_##UUID##" placeholder="Url" value="##URL##" type="text">
</span>
</td>
<td class="td-prefix issuetracker_pref">
<span class="entry">
<input class="medium-inline" id="prefix_##UUID##" name="new_pattern_prefix_##UUID##" placeholder="Prefix" value="##PREFIX##" type="text">
</span>
</td>
<td class="td-action">
</td>
<input id="uid_##UUID##" name="uid_##UUID##" type="hidden" value="">
</tr>
</tbody>
</table>
</%def>
<%def name="issue_tracker_settings_test(test_url)">
<div class="form-vertical">
<div class="fields">
<div class="field">
<div class='textarea-full'>
<textarea id="test_pattern_data" rows="12">
This is an example text for testing issue tracker patterns.
This commit fixes ticket #451 and ticket #910, reference for JRA-401.
The following tickets will get mentioned:
#123
#456 and PROJ-101
JRA-123 and #123
PROJ-456
[my artifact](http://something.com/JRA-1234-build.zip)
- #1001
- JRA-998
Open a pull request !101 to contribute!
Added tag v1.3.0 for commit 0f3b629be725
Add a test pattern here and hit preview to see the link.
</textarea>
</div>
</div>
</div>
<div class="test_pattern_preview">
<div id="test_pattern" class="btn btn-small" >${_('Preview')}</div>
<p>${_('Test Pattern Preview')}</p>
<div id="test_pattern_result" style="white-space: pre-wrap"></div>
</div>
</div>
<script type="text/javascript">
$('#test_pattern').on('click', function(e) {
$.ajax({
type: "POST",
url: "${test_url}",
data: {
'test_text': $('#test_pattern_data').val(),
'csrf_token': CSRF_TOKEN
},
success: function(data){
$('#test_pattern_result').html(data);
tooltipActivate();
},
error: function(jqXHR, textStatus, errorThrown){
$('#test_pattern_result').html('Error: ' + errorThrown);
}
});
$('#test_pattern_result').show();
});
</script>
</%def>