From: Kohei Yoshino Date: Mon, 9 Mar 2020 16:19:41 +0000 (-0400) Subject: Bug 1605761 - It's not clear at all that you need to hit -enter- to save a comment tag X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0d87f5d9cfc661edf4ce644b96ab2ab4350676a2;p=thirdparty%2Fbugzilla.git Bug 1605761 - It's not clear at all that you need to hit -enter- to save a comment tag --- diff --git a/extensions/BugModal/template/en/default/bug_modal/activity_stream.html.tmpl b/extensions/BugModal/template/en/default/bug_modal/activity_stream.html.tmpl index 715f58c58..6b379092b 100644 --- a/extensions/BugModal/template/en/default/bug_modal/activity_stream.html.tmpl +++ b/extensions/BugModal/template/en/default/bug_modal/activity_stream.html.tmpl @@ -84,11 +84,12 @@ [% END %] @@ -174,7 +175,7 @@ [% FOREACH tag IN comment.tags ~%] - [%~ 'x' IF user.can_tag_comments %][% tag FILTER html ~%] + [%~ '×' IF user.can_tag_comments %][% tag FILTER html ~%] [%~ END %] diff --git a/extensions/BugModal/web/bug_modal.css b/extensions/BugModal/web/bug_modal.css index 77dff1578..2fadf4f01 100644 --- a/extensions/BugModal/web/bug_modal.css +++ b/extensions/BugModal/web/bug_modal.css @@ -823,6 +823,13 @@ h3.change-name a { cursor: pointer; } +.comment-tags .remove[role="button"], +.comment-tags .close-btn { + font-size: 1.8em; + line-height: .7em; + vertical-align: top; +} + #ctag { margin-bottom: 4px; } diff --git a/extensions/BugModal/web/comments.js b/extensions/BugModal/web/comments.js index 35f35e6e4..f1123ce12 100644 --- a/extensions/BugModal/web/comments.js +++ b/extensions/BugModal/web/comments.js @@ -305,7 +305,7 @@ $(function() { $.each(tags, function() { var span = $('').addClass('comment-tag').text(this); if (BUGZILLA.user.can_tag) { - span.prepend($('x').click(deleteTag)); + span.prepend($('×').click(deleteTag)); } root.append(span); }); @@ -343,6 +343,55 @@ $(function() { } } + const saveTag = async () => { + hideTaggingUI(); + $('#ctag-error').hide(); + + const $comment = $('#ctag').parents('.comment'); + const commentNo = $comment.data('no'); + const commentID = $comment.data('id'); + const tags = $comment.data('tags').split(/[ ,]/); + const newTags = $('#ctag-add').val().trim().split(/[ ,]/).filter(tag => !tags.includes(tag)); + const { min_comment_tag_length: min, max_comment_tag_length: max } = BUGZILLA.constant; + + if (!newTags.length) { + return; + } + + // validate + try { + newTags.forEach(tag => { + if (tag.length < min) { + throw `Comment tags must be at least ${min} characters.`; + } + if (tag.length > max) { + throw `Comment tags cannot be longer than ${max} characters.`; + } + }); + } catch(ex) { + taggingError(commentNo, ex); + return; + } + + // update ui + tags.push(...newTags); + tags.sort(); + renderTags(commentNo, tags); + + // update Bugzilla + try { + renderTags(commentNo, await Bugzilla.API.put(`bug/comment/${commentID}/tags`, { add: newTags })); + updateTagsMenu(); + } catch ({ message }) { + taggingError(commentNo, message); + refreshTags(commentNo, commentID); + } + }; + + const hideTaggingUI = () => { + $('#ctag').hide().data('commentNo', ''); + }; + $('#ctag-add') .devbridgeAutocomplete({ appendTo: $('#main-inner'), @@ -364,69 +413,27 @@ $(function() { return suggestion.value.htmlEncode(); } }) - .keydown(async event => { + .keydown(event => { if (event.which === 27) { event.preventDefault(); - $('#ctag-close').click(); + hideTaggingUI(); } else if (event.which === 13) { event.preventDefault(); - $('#ctag-error').hide(); - - var ctag = $('#ctag'); - var newTags = $('#ctag-add').val().trim().split(/[ ,]/); - var commentNo = ctag.data('commentNo'); - var commentID = ctag.data('commentID'); - - $('#ctag-close').click(); - - // update ui - var tags = tagsFromDom($(this).parents('.comment-tags')); - var dirty = false; - var addTags = []; - $.each(newTags, function(index, value) { - if ($.inArrayIn(value, tags) == -1) - addTags.push(value); - }); - if (addTags.length === 0) - return; - - // validate - try { - $.each(addTags, function(index, value) { - if (value.length < BUGZILLA.constant.min_comment_tag_length) { - throw 'Comment tags must be at least ' + - BUGZILLA.constant.min_comment_tag_length + ' characters.'; - } - if (value.length > BUGZILLA.constant.max_comment_tag_length) { - throw 'Comment tags cannot be longer than ' + - BUGZILLA.constant.min_comment_tag_length + ' characters.'; - } - }); - } catch(ex) { - taggingError(commentNo, ex); - return; - } - - Array.prototype.push.apply(tags, addTags); - tags.sort(); - renderTags(commentNo, tags); - - // update Bugzilla - try { - renderTags(commentNo, await Bugzilla.API.put(`bug/comment/${commentID}/tags`, { add: addTags })); - updateTagsMenu(); - } catch ({ message }) { - taggingError(commentNo, message); - refreshTags(commentNo, commentID); - } + saveTag(); } }); - $('#ctag-close') - .click(function(event) { + $('#ctag-save') + .click(event => { + event.preventDefault(); + saveTag(); + }); + + $('#ctag-cancel') + .click(event => { event.preventDefault(); - $('#ctag').hide().data('commentNo', ''); + hideTaggingUI(); }); $('.tag-btn')