From 44b976886fc9c68426dafb1efd9d75c207ce4acf Mon Sep 17 00:00:00 2001 From: Asaad Mahmood Date: Fri, 11 Aug 2017 19:39:05 +0500 Subject: PLT-7323/PLT-7334 CSS fixes (#7155) * PLT-7334 - Channel header cuts off list * PLT-7323 - Fixing alignment for attachments * PLT-7323 - Fixing close button for attachments * Changed header description to use margin instead of padding --- webapp/utils/utils.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'webapp/utils') diff --git a/webapp/utils/utils.jsx b/webapp/utils/utils.jsx index 89e031a3c..8abad70e0 100644 --- a/webapp/utils/utils.jsx +++ b/webapp/utils/utils.jsx @@ -588,7 +588,7 @@ export function applyTheme(theme) { if (theme.centerChannelBg) { changeCss('@media(min-width: 768px){.app__body .post:hover .post__header .col__reply, .app__body .post.post--hovered .post__header .col__reply', 'background:' + theme.centerChannelBg); changeCss('@media(max-width: 320px){.tutorial-steps__container', 'background:' + theme.centerChannelBg); - changeCss('.app__body .status-wrapper .status_dropdown__toggle .status .icon__container:after, .app__body .app__content, .app__body .markdown__table, .app__body .markdown__table tbody tr, .app__body .suggestion-list__content, .app__body .modal .modal-content, .app__body .modal .modal-footer, .app__body .post.post--compact .post-image__column, .app__body .suggestion-list__divider > span, .app__body .status-wrapper .status, .app__body .alert.alert-transparent', 'background:' + theme.centerChannelBg); + changeCss('.app__body .channel-header__info .channel-header__description:before, .app__body .status-wrapper .status_dropdown__toggle .status .icon__container:after, .app__body .app__content, .app__body .markdown__table, .app__body .markdown__table tbody tr, .app__body .suggestion-list__content, .app__body .modal .modal-content, .app__body .modal .modal-footer, .app__body .post.post--compact .post-image__column, .app__body .suggestion-list__divider > span, .app__body .status-wrapper .status, .app__body .alert.alert-transparent', 'background:' + theme.centerChannelBg); changeCss('#post-list .post-list-holder-by-time, .app__body .post .dropdown-menu a', 'background:' + theme.centerChannelBg); changeCss('#post-create', 'background:' + theme.centerChannelBg); changeCss('.app__body .date-separator .separator__text, .app__body .new-separator .separator__text', 'background:' + theme.centerChannelBg); -- cgit v1.2.3-1-g7c22 From e7053b971b69f5b93c8ff18f4cfdde70a82a0e8e Mon Sep 17 00:00:00 2001 From: George Goldberg Date: Fri, 11 Aug 2017 16:52:24 +0100 Subject: PLT-6609: Fix hashtag highlighting of search results (#7175) * PLT-6609: Don't highlight #hashtag.dot when searching for #hashtag * Fix bug that broke pre-release. --- webapp/utils/markdown.jsx | 2 +- webapp/utils/text_formatting.jsx | 27 ++++++++++++++++++++++----- 2 files changed, 23 insertions(+), 6 deletions(-) (limited to 'webapp/utils') diff --git a/webapp/utils/markdown.jsx b/webapp/utils/markdown.jsx index 8733e6200..5918b1581 100644 --- a/webapp/utils/markdown.jsx +++ b/webapp/utils/markdown.jsx @@ -175,7 +175,7 @@ class MattermostMarkdownRenderer extends marked.Renderer { if (this.formattingOptions.searchPatterns) { for (const pattern of this.formattingOptions.searchPatterns) { - if (pattern.test(href)) { + if (pattern.pattern.test(href)) { output += ' search-highlight'; break; } diff --git a/webapp/utils/text_formatting.jsx b/webapp/utils/text_formatting.jsx index 33cc3242c..4602a31b2 100644 --- a/webapp/utils/text_formatting.jsx +++ b/webapp/utils/text_formatting.jsx @@ -400,7 +400,10 @@ function convertSearchTermToRegex(term) { pattern = '\\b()(' + escapeRegex(term) + ')\\b'; } - return new RegExp(pattern, 'gi'); + return { + pattern: new RegExp(pattern, 'gi'), + term + }; } export function highlightSearchTerms(text, tokens, searchPatterns) { @@ -426,7 +429,21 @@ export function highlightSearchTerms(text, tokens, searchPatterns) { // highlight existing tokens matching search terms var newTokens = new Map(); for (const [alias, token] of tokens) { - if (pattern.test(token.originalText)) { + if (pattern.pattern.test(token.originalText)) { + // If it's a Hashtag, skip it unless the search term is an exact match. + let originalText = token.originalText; + if (originalText.startsWith('#')) { + originalText = originalText.substr(1); + } + let term = pattern.term; + if (term.startsWith('#')) { + term = term.substr(1); + } + + if (alias.startsWith('$MM_HASHTAG') && originalText !== term) { + continue; + } + const index = tokens.size + newTokens.size; const newAlias = `$MM_SEARCHTERM${index}`; @@ -438,10 +455,10 @@ export function highlightSearchTerms(text, tokens, searchPatterns) { output = output.replace(alias, newAlias); } - // The pattern regexes are global, so calling pattern.test() above alters their + // The pattern regexes are global, so calling pattern.pattern.test() above alters their // state. Reset lastIndex to 0 between calls to test() to ensure it returns the // same result every time it is called with the same value of token.originalText. - pattern.lastIndex = 0; + pattern.pattern.lastIndex = 0; } // the new tokens are stashed in a separate map since we can't add objects to a map during iteration @@ -449,7 +466,7 @@ export function highlightSearchTerms(text, tokens, searchPatterns) { tokens.set(newToken[0], newToken[1]); } - output = output.replace(pattern, replaceSearchTermWithToken); + output = output.replace(pattern.pattern, replaceSearchTermWithToken); } return output; -- cgit v1.2.3-1-g7c22 From 4cf316fcd39dbb654bb07d80b0dfa9f8194c571d Mon Sep 17 00:00:00 2001 From: Saturnino Abril Date: Sat, 12 Aug 2017 02:01:11 +0800 Subject: [PLT-7342] Add function and tests to specifically determine @all & @channel (#7181) * add function and tests to specifically determine @all & @channel * uodate per comments - regex and tests --- webapp/utils/post_utils.jsx | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'webapp/utils') diff --git a/webapp/utils/post_utils.jsx b/webapp/utils/post_utils.jsx index 9309e1e49..83fb666af 100644 --- a/webapp/utils/post_utils.jsx +++ b/webapp/utils/post_utils.jsx @@ -107,3 +107,12 @@ export function shouldShowDotMenu(post) { return false; } + +export function containsAtMention(text, key) { + if (!text || !key) { + return false; + } + + // This doesn't work for at mentions containing periods or hyphens + return new RegExp(`\\B${key}\\b`, 'i').test(text); +} -- cgit v1.2.3-1-g7c22