mirror of
https://github.com/discourse/discourse.git
synced 2025-04-03 00:49:35 +08:00
Add bookmarked
class to bookmarks button. Also remove duplicated code,
use fewer observers.
This commit is contained in:
parent
2838e1c3b5
commit
9f67d476ef
@ -64,32 +64,6 @@ Discourse.Post = Discourse.Model.extend({
|
|||||||
hasHistory: Em.computed.gt('version', 1),
|
hasHistory: Em.computed.gt('version', 1),
|
||||||
postElementId: Discourse.computed.fmt('post_number', 'post_%@'),
|
postElementId: Discourse.computed.fmt('post_number', 'post_%@'),
|
||||||
|
|
||||||
// The class for the read icon of the post. It starts with read-icon then adds 'seen' or
|
|
||||||
// 'last-read' if the post has been seen or is the highest post number seen so far respectively.
|
|
||||||
bookmarkClass: function() {
|
|
||||||
var result = 'read-icon';
|
|
||||||
if (this.get('bookmarked')) return result + ' bookmarked';
|
|
||||||
|
|
||||||
var topic = this.get('topic');
|
|
||||||
if (topic && topic.get('last_read_post_number') === this.get('post_number')) {
|
|
||||||
return result + ' last-read';
|
|
||||||
}
|
|
||||||
|
|
||||||
return result + (this.get('read') ? ' seen' : ' unseen');
|
|
||||||
}.property('read', 'topic.last_read_post_number', 'bookmarked'),
|
|
||||||
|
|
||||||
// Custom tooltips for the bookmark icons
|
|
||||||
bookmarkTooltip: function() {
|
|
||||||
if (this.get('bookmarked')) return I18n.t('bookmarks.created');
|
|
||||||
if (!this.get('read')) return "";
|
|
||||||
|
|
||||||
var topic = this.get('topic');
|
|
||||||
if (topic && topic.get('last_read_post_number') === this.get('post_number')) {
|
|
||||||
return I18n.t('bookmarks.last_read');
|
|
||||||
}
|
|
||||||
return I18n.t('bookmarks.not_bookmarked');
|
|
||||||
}.property('read', 'topic.last_read_post_number', 'bookmarked'),
|
|
||||||
|
|
||||||
bookmarkedChanged: function() {
|
bookmarkedChanged: function() {
|
||||||
Discourse.ajax("/posts/" + this.get('id') + "/bookmark", {
|
Discourse.ajax("/posts/" + this.get('id') + "/bookmark", {
|
||||||
type: 'PUT',
|
type: 'PUT',
|
||||||
|
@ -16,8 +16,9 @@ Discourse.PostMenuView = Discourse.View.extend({
|
|||||||
'post.reply_count',
|
'post.reply_count',
|
||||||
'post.showRepliesBelow',
|
'post.showRepliesBelow',
|
||||||
'post.can_delete',
|
'post.can_delete',
|
||||||
'post.bookmarkClass',
|
'post.read',
|
||||||
'post.bookmarkTooltip',
|
'post.topic.last_read_post_number',
|
||||||
|
'post.bookmarked',
|
||||||
'post.shareUrl',
|
'post.shareUrl',
|
||||||
'post.topic.deleted_at',
|
'post.topic.deleted_at',
|
||||||
'post.replies.length'),
|
'post.replies.length'),
|
||||||
@ -188,8 +189,25 @@ Discourse.PostMenuView = Discourse.View.extend({
|
|||||||
renderBookmark: function(post, buffer) {
|
renderBookmark: function(post, buffer) {
|
||||||
if (!Discourse.User.current()) return;
|
if (!Discourse.User.current()) return;
|
||||||
|
|
||||||
buffer.push("<button title=\"" + this.get('post.bookmarkTooltip') +
|
var iconClass = 'read-icon',
|
||||||
"\" data-action=\"bookmark\" class='bookmark'><div class='" + this.get('post.bookmarkClass') +
|
buttonClass = 'bookmark',
|
||||||
|
topic = post.get('topic'),
|
||||||
|
tooltip;
|
||||||
|
|
||||||
|
if (post.get('bookmarked')) {
|
||||||
|
iconClass += ' bookmarked';
|
||||||
|
buttonClass += ' bookmarked';
|
||||||
|
tooltip = I18n.t('bookmarks.created');
|
||||||
|
} else if (topic && topic.get('last_read_post_number') === post.get('post_number')) {
|
||||||
|
iconClass += ' last-read';
|
||||||
|
tooltip = I18n.t('bookmarks.last_read');
|
||||||
|
} else {
|
||||||
|
iconClass += (post.get('read') ? ' seen' : ' unseen');
|
||||||
|
tooltip = I18n.t('bookmarks.not_bookmarked');
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer.push("<button title=\"" + tooltip +
|
||||||
|
"\" data-action=\"" + buttonClass + "\" class='bookmark'><div class='" + iconClass +
|
||||||
"'></div></button>");
|
"'></div></button>");
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user