Skip to content

Commit

Permalink
Roll up gutter links, don't show reply as new topic unless expanded.
Browse files Browse the repository at this point in the history
  • Loading branch information
eviltrout committed May 7, 2014
1 parent 63a1f87 commit 76cb4bf
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 55 deletions.
73 changes: 73 additions & 0 deletions app/assets/javascripts/discourse/components/post-gutter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
var MAX_SHOWN = 5;

Discourse.PostGutterComponent = Em.Component.extend({
classNameBindings: [':span5', ':gutter'],

// Roll up links to avoid duplicates
collapsed: function() {
var seen = {},
result = [],
links = this.get('links');

if (!Em.isEmpty(links)) {
links.forEach(function(l) {
var title = Em.get(l, 'title');
if (!seen[title]) {
result.pushObject(l);
seen[title] = true;
}
});
}
return result;
}.property('links'),

render: function(buffer) {
var links = this.get('collapsed'),
toRender = links,
collapsed = !this.get('expanded');

if (!Em.isEmpty(links)) {
if (collapsed) {
toRender = toRender.slice(0, MAX_SHOWN);
}

buffer.push("<ul class='post-links'>");
toRender.forEach(function(l) {
var direction = Em.get(l, 'reflection') ? 'left' : 'right',
clicks = Em.get(l, 'clicks');

buffer.push("<li><a href='" + Em.get(l, 'url') + "' class='track-link'>");
buffer.push("<i class='fa fa-arrow-" + direction + "'></i>");
buffer.push(Em.get(l, 'title'));
if (clicks) {
buffer.push("<span class='badge badge-notification clicks'>" + clicks + "</span>");
}
buffer.push("</a></li>");
});

if (collapsed) {
var remaining = links.length - MAX_SHOWN;
if (remaining > 0) {
buffer.push("<li><a href='#' class='toggle-more'>" + I18n.t('post.more_links', {count: remaining}) + "</a></li>");
}
}
buffer.push('</ul>');
}

if ((links.length <= MAX_SHOWN || !collapsed) && this.get('canReplyAsNewTopic')) {
buffer.push("<a href='#' class='reply-new'><i class='fa fa-plus'></i>" + I18n.t('post.reply_as_new_topic') + "</a>");
}
},

_rerenderIfNeeded: function() {
this.rerender();
}.observes('expanded'),

click: function(e) {
if ($(e.target).hasClass('toggle-more')) {
this.toggleProperty('expanded');
return false;
}
return true;
}
});
49 changes: 0 additions & 49 deletions app/assets/javascripts/discourse/components/post-links.js

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -92,12 +92,7 @@
{{view Discourse.TopicMapContainerView post=this topic=controller.model}}
</div>

<div class='span5 gutter'>
{{post-links links=internalLinks}}
{{#if topic.details.can_reply_as_new_topic}}
<a href='#' class='reply-new' {{action replyAsNewTopic this}}><i class='fa fa-plus'></i>{{i18n post.reply_as_new_topic}}</a>
{{/if}}
</div>
{{post-gutter links=internalLinks canReplyAsNewTopic=topic.details.can_reply_as_new_topic}}
</div>

</article>
Expand Down

0 comments on commit 76cb4bf

Please sign in to comment.