Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorblizzz <blizzz@arthur-schiwon.de>2018-09-20 11:37:23 +0300
committerGitHub <noreply@github.com>2018-09-20 11:37:23 +0300
commit0c85cb1ea94fd24b6057dc47c0bec55e2de9828f (patch)
tree1645e5f81642febaee1e09214e1f69ca21b6c225
parenta0f2bd8d28f1f6d4a6ba5611484549a138e0f53b (diff)
parent51b978d3f0f76f7599d30addb8c25e5a43913519 (diff)
Merge pull request #11077 from nextcloud/stable14-11064-fix-markup-and-style-of-mentions-in-comments
[stable14] Fix markup and style of mentions in comments
-rw-r--r--apps/comments/css/comments.scss25
-rw-r--r--apps/comments/js/commentstabview.js60
-rw-r--r--apps/comments/tests/js/commentstabviewSpec.js2
3 files changed, 55 insertions, 32 deletions
diff --git a/apps/comments/css/comments.scss b/apps/comments/css/comments.scss
index a26649c1aa0..84d328ca6f5 100644
--- a/apps/comments/css/comments.scss
+++ b/apps/comments/css/comments.scss
@@ -133,7 +133,7 @@
adding this brings them closer to the element**/
margin-top: 5px;
}
-#commentsTabView .comments li .message .avatar-name-wrapper,
+
.atwho-view-ul * .avatar-name-wrapper,
#commentsTabView .comment .authorRow {
position: relative;
@@ -144,24 +144,34 @@
#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser),
#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser) .avatar,
+#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser) .avatar img,
#commentsTabView .comment .authorRow .avatar:not(.currentUser),
#commentsTabView .comment .authorRow .author:not(.currentUser) {
cursor: pointer;
}
.atwho-view-ul .avatar-name-wrapper,
-.atwho-view-ul .avatar-name-wrapper .avatar {
+.atwho-view-ul .avatar-name-wrapper .avatar,
+.atwho-view-ul .avatar-name-wrapper .avatar img {
cursor: pointer;
}
#commentsTabView .comments li .message .atwho-inserted,
#commentsTabView .newCommentForm .atwho-inserted {
.avatar-name-wrapper {
+ /* Make the wrapper the positioning context of its child contacts
+ * menu. */
+ position: relative;
+
display: inline;
vertical-align: top;
background-color: var(--color-background-dark);
border-radius: 50vh;
padding: 1px 7px 1px 1px;
+
+ /* Ensure that the avatar and the user name will be kept together. */
+ white-space: nowrap;
+
.avatar {
img {
vertical-align: top;
@@ -174,6 +184,15 @@
margin-left: 0;
margin-right: 2px;
}
+ strong {
+ /* Ensure that the user name is shown in bold, as different browsers
+ * use different font weights for strong elements. */
+ font-weight: bold;
+ }
+ }
+ .avatar-name-wrapper.currentUser {
+ background-color: var(--color-primary);
+ color: var(--color-primary-text);
}
}
@@ -234,4 +253,4 @@
.app-files .action-comment {
padding: 16px 14px;
-} \ No newline at end of file
+}
diff --git a/apps/comments/js/commentstabview.js b/apps/comments/js/commentstabview.js
index 8b20bac571b..3c428fe86a6 100644
--- a/apps/comments/js/commentstabview.js
+++ b/apps/comments/js/commentstabview.js
@@ -196,24 +196,26 @@
sorter: function (q, items) { return items; }
},
displayTpl: function (item) {
- return '<li>'
- + '<span class="avatar-name-wrapper">'
- + '<div class="avatar" '
- + ' data-username="' + escapeHTML(item.id) + '"' // for avatars
- + ' data-user="' + escapeHTML(item.id) + '"' // for contactsmenu
- + ' data-user-display-name="' + escapeHTML(item.label) + '"></div>'
- + ' <strong>' + escapeHTML(item.label) + '</strong>'
- + '</span></li>';
+ return '<li>' +
+ '<span class="avatar-name-wrapper">' +
+ '<span class="avatar" ' +
+ 'data-username="' + escapeHTML(item.id) + '" ' + // for avatars
+ 'data-user="' + escapeHTML(item.id) + '" ' + // for contactsmenu
+ 'data-user-display-name="' + escapeHTML(item.label) + '">' +
+ '</span>' +
+ '<strong>' + escapeHTML(item.label) + '</strong>' +
+ '</span></li>';
},
insertTpl: function (item) {
- return ''
- + '<span class="avatar-name-wrapper">'
- + '<div class="avatar" '
- + ' data-username="' + escapeHTML(item.id) + '"' // for avatars
- + ' data-user="' + escapeHTML(item.id) + '"' // for contactsmenu
- + ' data-user-display-name="' + escapeHTML(item.label) + '"></div>'
- + ' <strong>' + escapeHTML(item.label) + '</strong>'
- + '</span>';
+ return '' +
+ '<span class="avatar-name-wrapper">' +
+ '<span class="avatar" ' +
+ 'data-username="' + escapeHTML(item.id) + '" ' + // for avatars
+ 'data-user="' + escapeHTML(item.id) + '" ' + // for contactsmenu
+ 'data-user-display-name="' + escapeHTML(item.label) + '">' +
+ '</span>' +
+ '<strong>' + escapeHTML(item.label) + '</strong>' +
+ '</span>';
},
searchKey: "label"
});
@@ -224,7 +226,7 @@
// passing the whole comments form would re-apply and request
// avatars from the server
$(je.target).find(
- 'div[data-username="' + $el.find('[data-username]').data('username') + '"]'
+ 'span[data-username="' + $el.find('[data-username]').data('username') + '"]'
).parent(),
editionMode
);
@@ -486,20 +488,22 @@
},
_composeHTMLMention: function(uid, displayName) {
- var avatar = '<div class="avatar" '
- + 'data-username="' + _.escape(uid) + '"'
- + ' data-user="' + _.escape(uid) + '"'
- + ' data-user-display-name="'
- + _.escape(displayName) + '"></div>';
+ var avatar = '' +
+ '<span class="avatar" ' +
+ 'data-username="' + _.escape(uid) + '" ' +
+ 'data-user="' + _.escape(uid) + '" ' +
+ 'data-user-display-name="' + _.escape(displayName) + '">' +
+ '</span>';
var isCurrentUser = (uid === OC.getCurrentUser().uid);
- return ''
- + '<span class="atwho-inserted" contenteditable="false">'
- + '<span class="avatar-name-wrapper' + (isCurrentUser ? ' currentUser' : '') + '">'
- + avatar + ' <strong>'+ _.escape(displayName)+'</strong>'
- + '</span>'
- + '</span>';
+ return '' +
+ '<span class="atwho-inserted" contenteditable="false">' +
+ '<span class="avatar-name-wrapper' + (isCurrentUser ? ' currentUser' : '') + '">' +
+ avatar +
+ '<strong>' + _.escape(displayName) + '</strong>' +
+ '</span>' +
+ '</span>';
},
nextPage: function() {
diff --git a/apps/comments/tests/js/commentstabviewSpec.js b/apps/comments/tests/js/commentstabviewSpec.js
index c90ad04e419..bd1353cc43d 100644
--- a/apps/comments/tests/js/commentstabviewSpec.js
+++ b/apps/comments/tests/js/commentstabviewSpec.js
@@ -309,7 +309,7 @@ describe('OCA.Comments.CommentsTabView tests', function() {
expect(createStub.calledOnce).toEqual(false);
expect($newCommentForm.find('.message').html()).toContain('Mention to <span');
- expect($newCommentForm.find('.message').html()).toContain('<div class="avatar"');
+ expect($newCommentForm.find('.message').html()).toContain('<span class="avatar"');
expect($newCommentForm.find('.message').html()).toContain('<strong>User Name</strong>');
expect($newCommentForm.find('.message').text()).not.toContain('@');
// In this case the default behaviour is prevented by the