Fixes #1063 Make URLs in topic clickable

This commit is contained in:
JC Brand 2018-10-07 03:31:18 +02:00
parent 5d97445d3e
commit 7a612460da
7 changed files with 50 additions and 14 deletions

View File

@ -4,6 +4,7 @@
- Bugfix. Handler not triggered when submitting MUC password form 2nd time - Bugfix. Handler not triggered when submitting MUC password form 2nd time
- Bugfix. MUC features weren't being refreshed when saving the config form - Bugfix. MUC features weren't being refreshed when saving the config form
- #1063 URLs in the topic / subject are not clickable
- #1190 MUC Participants column disappears in certain viewport widths - #1190 MUC Participants column disappears in certain viewport widths
- #1199 Can't get back from to login screen from registration screen - #1199 Can't get back from to login screen from registration screen
- #1214 Setting `allow_contact_requests` to `false` has no effect - #1214 Setting `allow_contact_requests` to `false` has no effect

View File

@ -10394,6 +10394,9 @@ body.reset {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; } white-space: nowrap; }
#conversejs.converse-embedded .chat-head-chatroom .chatroom-description a,
#conversejs .chat-head-chatroom .chatroom-description a {
color: white; }
#conversejs.converse-embedded .chat-head-chatroom a.chatbox-btn.fa, #conversejs.converse-embedded .chat-head-chatroom a:visited.chatbox-btn.fa, #conversejs.converse-embedded .chat-head-chatroom a:hover.chatbox-btn.fa, #conversejs.converse-embedded .chat-head-chatroom a:not([href]):not([tabindex]).chatbox-btn.fa, #conversejs.converse-embedded .chat-head-chatroom a.chatbox-btn.fa, #conversejs.converse-embedded .chat-head-chatroom a:visited.chatbox-btn.fa, #conversejs.converse-embedded .chat-head-chatroom a:hover.chatbox-btn.fa, #conversejs.converse-embedded .chat-head-chatroom a:not([href]):not([tabindex]).chatbox-btn.fa,
#conversejs .chat-head-chatroom a.chatbox-btn.fa, #conversejs .chat-head-chatroom a.chatbox-btn.fa,
#conversejs .chat-head-chatroom a:visited.chatbox-btn.fa, #conversejs .chat-head-chatroom a:visited.chatbox-btn.fa,

32
dist/converse.js vendored
View File

@ -68850,7 +68850,9 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
'info_close': __('Close and leave this groupchat'), 'info_close': __('Close and leave this groupchat'),
'info_configure': __('Configure this groupchat'), 'info_configure': __('Configure this groupchat'),
'info_details': __('Show more details about this groupchat'), 'info_details': __('Show more details about this groupchat'),
'description': _.get(this.model.get('subject'), 'text') || '' 'description': u.addHyperlinks(xss.filterXSS(_.get(this.model.get('subject'), 'text'), {
'whiteList': {}
}))
})); }));
}, },
@ -69880,7 +69882,10 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
'data': '', 'data': '',
'isodate': date, 'isodate': date,
'extra_classes': 'chat-topic', 'extra_classes': 'chat-topic',
'message': subject.text 'message': u.addHyperlinks(xss.filterXSS(_.get(this.model.get('subject'), 'text'), {
'whiteList': {}
})),
'render_message': true
})); }));
} }
@ -78970,10 +78975,10 @@ __e( o.Strophe.getNodeFromJid(o.jid) ) +
__e( o.Strophe.getDomainFromJid(o.jid) ) + __e( o.Strophe.getDomainFromJid(o.jid) ) +
'\n '; '\n ';
} ; } ;
__p += '\n </div>\n <p class="chatroom-description" title="' + __p += '\n </div>\n <!-- Sanitized in converse-muc-views. We want to render links. -->\n <p class="chatroom-description" title="' +
__e(o.description) + __e(o.description) +
'">' + '">' +
__e(o.description) + ((__t = (o.description)) == null ? '' : __t) +
'</p>\n</div>\n<div class="chatbox-buttons row no-gutters">\n <a class="chatbox-btn close-chatbox-button fa fa-sign-out-alt" title="' + '</p>\n</div>\n<div class="chatbox-buttons row no-gutters">\n <a class="chatbox-btn close-chatbox-button fa fa-sign-out-alt" title="' +
__e(o.info_close) + __e(o.info_close) +
'"></a>\n '; '"></a>\n ';
@ -79670,8 +79675,21 @@ return __p
var _ = {escape:__webpack_require__(/*! ./node_modules/lodash/escape.js */ "./node_modules/lodash/escape.js")}; var _ = {escape:__webpack_require__(/*! ./node_modules/lodash/escape.js */ "./node_modules/lodash/escape.js")};
module.exports = function(o) { module.exports = function(o) {
var __t, __p = '', __e = _.escape; var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
__p += '<!-- src/templates/info.html -->\n<div class="message chat-info ' + function print() { __p += __j.call(arguments, '') }
__p += '<!-- src/templates/info.html -->\n';
if (o.render_message) { ;
__p += '\n <!-- XXX: Should only ever be rendered if the message text has been sanitized already -->\n <div class="message chat-info ' +
__e(o.extra_classes) +
'"\n data-isodate="' +
__e(o.isodate) +
'"\n ' +
__e(o.data) +
'>' +
((__t = (o.message)) == null ? '' : __t) +
'</div>\n';
} else { ;
__p += '\n <div class="message chat-info ' +
__e(o.extra_classes) + __e(o.extra_classes) +
'"\n data-isodate="' + '"\n data-isodate="' +
__e(o.isodate) + __e(o.isodate) +
@ -79680,6 +79698,8 @@ __e(o.data) +
'>' + '>' +
__e(o.message) + __e(o.message) +
'</div>\n'; '</div>\n';
} ;
__p += '\n';
return __p return __p
}; };

View File

@ -44,6 +44,9 @@
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
a {
color: white;
}
} }
a, a:visited, a:hover, a:not([href]):not([tabindex]) { a, a:visited, a:hover, a:not([href]):not([tabindex]) {

View File

@ -694,7 +694,7 @@
'info_close': __('Close and leave this groupchat'), 'info_close': __('Close and leave this groupchat'),
'info_configure': __('Configure this groupchat'), 'info_configure': __('Configure this groupchat'),
'info_details': __('Show more details about this groupchat'), 'info_details': __('Show more details about this groupchat'),
'description': _.get(this.model.get('subject'), 'text') || '' 'description': u.addHyperlinks(xss.filterXSS(_.get(this.model.get('subject'), 'text'), {'whiteList': {}})),
})); }));
}, },
@ -1665,7 +1665,8 @@
'data': '', 'data': '',
'isodate': date, 'isodate': date,
'extra_classes': 'chat-topic', 'extra_classes': 'chat-topic',
'message': subject.text 'message': u.addHyperlinks(xss.filterXSS(_.get(this.model.get('subject'), 'text'), {'whiteList': {}})),
'render_message': true
})); }));
} }
this.scrollDown(); this.scrollDown();

View File

@ -7,7 +7,8 @@
{{{ o.Strophe.getNodeFromJid(o.jid) }}}@{{{ o.Strophe.getDomainFromJid(o.jid) }}} {{{ o.Strophe.getNodeFromJid(o.jid) }}}@{{{ o.Strophe.getDomainFromJid(o.jid) }}}
{[ } ]} {[ } ]}
</div> </div>
<p class="chatroom-description" title="{{{o.description}}}">{{{o.description}}}</p> <!-- Sanitized in converse-muc-views. We want to render links. -->
<p class="chatroom-description" title="{{{o.description}}}">{{o.description}}</p>
</div> </div>
<div class="chatbox-buttons row no-gutters"> <div class="chatbox-buttons row no-gutters">
<a class="chatbox-btn close-chatbox-button fa fa-sign-out-alt" title="{{{o.info_close}}}"></a> <a class="chatbox-btn close-chatbox-button fa fa-sign-out-alt" title="{{{o.info_close}}}"></a>

View File

@ -1,3 +1,10 @@
<div class="message chat-info {{{o.extra_classes}}}" {[ if (o.render_message) { ]}
<!-- XXX: Should only ever be rendered if the message text has been sanitized already -->
<div class="message chat-info {{{o.extra_classes}}}"
data-isodate="{{{o.isodate}}}"
{{{o.data}}}>{{o.message}}</div>
{[ } else { ]}
<div class="message chat-info {{{o.extra_classes}}}"
data-isodate="{{{o.isodate}}}" data-isodate="{{{o.isodate}}}"
{{{o.data}}}>{{{o.message}}}</div> {{{o.data}}}>{{{o.message}}}</div>
{[ } ]}