From b593a8db92762d86702386226fd40e693dcf2ca6 Mon Sep 17 00:00:00 2001 From: Sam Date: Tue, 23 Jun 2015 11:01:10 +1000 Subject: [PATCH] order by latest and views filters sane wrapping for large text in excerpt --- .../discourse/controllers/discovery/topics.js.es6 | 14 +++++++++++++- .../discourse/views/topic-list-item.js.es6 | 11 ++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 b/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 index 6f710dc2a39..b5c521c86d8 100644 --- a/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 +++ b/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 @@ -26,7 +26,19 @@ var controllerOpts = { changeSort: function(sortBy) { if (this.get('isSearch')) { - // TODO we should amend search string here + var term = this.get('searchTerm'); + var order; + + if (sortBy === 'activity') { order = 'latest'; } + if (sortBy === 'views') { order = 'views'; } + + if (order && term.indexOf("order:" + order) === -1) { + term = term.replace(/order:[a-z]+/, ''); + term = term.trim() + " order:" + order; + this.set('model.params.q', term); + this.get('model').refreshSort(); + } + } else { if (sortBy === this.get('order')) { this.toggleProperty('ascending'); diff --git a/app/assets/javascripts/discourse/views/topic-list-item.js.es6 b/app/assets/javascripts/discourse/views/topic-list-item.js.es6 index c61b96a15b2..64073d65dcd 100644 --- a/app/assets/javascripts/discourse/views/topic-list-item.js.es6 +++ b/app/assets/javascripts/discourse/views/topic-list-item.js.es6 @@ -139,10 +139,15 @@ export default Discourse.View.extend(StringBuffer, { const self = this; if (term) { var terms = term.split(/\s+/); + // .main-link a is omitted cause a bit clowny + var excerpt = self.$('.topic-excerpt'); + // some sane wrapping + excerpt.text(excerpt.text().replace(/\S{40,}/g, function(match){ + return match.replace(/(\S)/g, "$1\u200B"); + })); + terms.forEach(function(word) { - // .main-link a is omitted cause a bit clowny - self.$('.topic-excerpt') - .highlight(word, {element: 'b', className: 'search-highlight'}); + excerpt.highlight(word, {element: 'b', className: 'search-highlight'}); }); } }.on('didInsertElement')