mirror of
https://github.com/gitbucket/gitbucket.git
synced 2026-01-05 23:30:02 +01:00
Allow task list on commit comment area
This commit is contained in:
@@ -705,6 +705,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
enableRefsLink = true,
|
||||
enableAnchor = true,
|
||||
enableLineBreaks = true,
|
||||
enableTaskList = true,
|
||||
hasWritePermission = true
|
||||
)
|
||||
)
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
enableWikiLink = false,
|
||||
enableRefsLink = true,
|
||||
enableLineBreaks = true,
|
||||
enableTaskList = false,
|
||||
enableTaskList = true,
|
||||
hasWritePermission = hasWritePermission
|
||||
)
|
||||
</div>
|
||||
|
||||
@@ -344,27 +344,6 @@ $(function(){
|
||||
return false;
|
||||
});
|
||||
|
||||
var extractMarkdown = function(data){
|
||||
$('body').append('<div id="tmp"></div>');
|
||||
$('#tmp').html(data);
|
||||
var markdown = $('#tmp textarea').val();
|
||||
$('#tmp').remove();
|
||||
return markdown;
|
||||
};
|
||||
|
||||
var replaceTaskList = function(issueContentHtml, checkboxes) {
|
||||
var ss = [],
|
||||
markdown = extractMarkdown(issueContentHtml),
|
||||
xs = markdown.split(/- \[[x| ]\]/g);
|
||||
for (var i=0; i<xs.length; i++) {
|
||||
ss.push(xs[i]);
|
||||
if (checkboxes.eq(i).prop('checked')) ss.push('- [x]');
|
||||
else ss.push('- [ ]');
|
||||
}
|
||||
ss.pop();
|
||||
return ss.join('');
|
||||
};
|
||||
|
||||
$('div[class*=commit-commentContent-]').on('click', ':checkbox', function(ev){
|
||||
var $commentContent = $(ev.target).parents('div[class*=commit-commentContent-]'),
|
||||
commentId = $commentContent.attr('class').match(/commit-commentContent-.+/)[0].replace(/commit-commentContent-/, ''),
|
||||
@@ -376,7 +355,7 @@ $(function(){
|
||||
type: 'POST',
|
||||
data: {
|
||||
issueId : 0,
|
||||
content : replaceTaskList(responseContent, checkboxes)
|
||||
content : applyTaskListCheckedStatus(responseContent, checkboxes)
|
||||
},
|
||||
success: function(data) {
|
||||
$('.commit-commentContent-' + commentId).html(data.content);
|
||||
@@ -396,7 +375,7 @@ $(function(){
|
||||
type: 'POST',
|
||||
data: {
|
||||
title : $('#issueTitle').text(),
|
||||
content : replaceTaskList(responseContent, checkboxes)
|
||||
content : applyTaskListCheckedStatus(responseContent, checkboxes)
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -414,7 +393,7 @@ $(function(){
|
||||
type: 'POST',
|
||||
data: {
|
||||
issueId : 0,
|
||||
content : replaceTaskList(responseContent, checkboxes)
|
||||
content : applyTaskListCheckedStatus(responseContent, checkboxes)
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -78,7 +78,28 @@
|
||||
var $tr = $form.closest('tr.not-diff');
|
||||
|
||||
// Apply comment
|
||||
$tr.removeClass('inline-comment-form').html(tmp).find('.comment-box-container').html(data);
|
||||
var $addedCommentContent = $tr.removeClass('inline-comment-form').html(tmp).find('.comment-box-container');
|
||||
$addedCommentContent.html(data);
|
||||
$addedCommentContent.find('div[class*=commit-commentContent-]').on('click', ':checkbox', function(ev){
|
||||
var $commentContent = $(ev.target).parents('div[class*=commit-commentContent-]'),
|
||||
commentId = $commentContent.attr('class').match(/commit-commentContent-.+/)[0].replace(/commit-commentContent-/, ''),
|
||||
checkboxes = $commentContent.find(':checkbox');
|
||||
$.get('@helpers.url(repository)/commit_comments/_data/' + commentId, { dataType : 'html' },
|
||||
function(responseContent){
|
||||
$.ajax({
|
||||
url: '@helpers.url(repository)/commit_comments/edit/' + commentId,
|
||||
type: 'POST',
|
||||
data: {
|
||||
issueId : 0,
|
||||
content : applyTaskListCheckedStatus(responseContent, checkboxes)
|
||||
},
|
||||
success: function(data) {
|
||||
$('.commit-commentContent-' + commentId).html(data.content);
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
// Show reply comment form
|
||||
var replyComment = $tr.prev().find('.reply-comment').closest('.not-diff').show();
|
||||
|
||||
@@ -726,3 +726,35 @@ function checkExtraMailAddress(){
|
||||
$(this).remove();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* function for extracting markdown from comment area.
|
||||
* @param commentArea a comment area
|
||||
* @returns {*|jQuery}
|
||||
*/
|
||||
var extractMarkdown = function(commentArea){
|
||||
$('body').append('<div id="tmp"></div>');
|
||||
$('#tmp').html(commentArea);
|
||||
var markdown = $('#tmp textarea').val();
|
||||
$('#tmp').remove();
|
||||
return markdown;
|
||||
};
|
||||
|
||||
/**
|
||||
* function for applying checkboxes status of task list.
|
||||
* @param commentArea a comment area
|
||||
* @param checkboxes checkboxes for task list
|
||||
* @returns {string} a markdown that applied checkbox status
|
||||
*/
|
||||
var applyTaskListCheckedStatus = function(commentArea, checkboxes) {
|
||||
var ss = [],
|
||||
markdown = extractMarkdown(commentArea),
|
||||
xs = markdown.split(/- \[[x| ]\]/g);
|
||||
for (var i=0; i<xs.length; i++) {
|
||||
ss.push(xs[i]);
|
||||
if (checkboxes.eq(i).prop('checked')) ss.push('- [x]');
|
||||
else ss.push('- [ ]');
|
||||
}
|
||||
ss.pop();
|
||||
return ss.join('');
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user