Added templates for tab bar

pull/1021/head
Marcelo Schmidt 10 years ago
parent 3fca31a573
commit 78a78a4fe7
  1. 2
      client/routes/roomRoute.coffee
  2. 9
      client/stylesheets/base.less
  3. 2
      client/views/app/flexTabBar.coffee
  4. 7
      client/views/app/message.coffee
  5. 2
      client/views/app/message.html
  6. 2
      client/views/app/room.coffee
  7. 1
      packages/rocketchat-message-star/client/lib/StarredMessage.coffee
  8. 5
      packages/rocketchat-message-star/client/tabBar.coffee
  9. 7
      packages/rocketchat-message-star/client/views/starredMessages.coffee
  10. 18
      packages/rocketchat-message-star/client/views/starredMessages.html
  11. 3
      packages/rocketchat-message-star/client/views/stylesheets/messagestar.css
  12. 3
      packages/rocketchat-message-star/i18n/en.i18n.json
  13. 3
      packages/rocketchat-message-star/i18n/pt.i18n.json
  14. 21
      packages/rocketchat-message-star/package.js
  15. 18
      packages/rocketchat-message-star/server/publications/starredMessages.coffee
  16. 4
      packages/rocketchat-message-star/server/starMessage.coffee
  17. 3
      packages/rocketchat-message-star/server/startup/indexes.coffee
  18. 4
      server/methods/loadHistory.coffee
  19. 4
      server/publications/messages.coffee

@ -61,6 +61,8 @@ openRoom = (type, name) ->
if ChatSubscription.findOne({rid: room._id})?.open is false
Meteor.call 'openRoom', room._id
RocketChat.callbacks.run 'enter-room'
roomExit = ->
BlazeLayout.render 'main', {center: 'none'}

@ -2595,6 +2595,15 @@ a.github-fork {
> form {
float: left;
}
.header {
padding: 5px 30px 20px;
margin: 5px 0 15px;
h2 {
font-size: 20px;
line-height: 25px;
font-weight: 300;
}
}
.button {
min-height: 36px;
margin: 0 1px;

@ -3,6 +3,8 @@ Template.flexTabBar.helpers
return 'active' if @template is RocketChat.TabBar.getTemplate() and RocketChat.TabBar.isFlexOpen()
buttons: ->
return RocketChat.TabBar.getButtons()
title: ->
return t(@i18nTitle) or @title
Template.flexTabBar.events
'click .tab-button': (e, t) ->

@ -58,6 +58,11 @@ Template.message.helpers
return RocketChat.settings.get 'Message_AllowStarring'
showEditedStatus: ->
return RocketChat.settings.get 'Message_ShowEditedStatus'
label: ->
if @i18nLabel
return t(@i18nLabel)
else if @label
return @label
Template.message.onViewRendered = (context) ->
view = this
@ -95,4 +100,4 @@ Template.message.onViewRendered = (context) ->
else
if view.parentView.parentView.parentView.parentView.parentView.templateInstance?().atBottom isnt true
newMessage = document.querySelector(".new-message")
newMessage.className = "new-message"
newMessage?.className = "new-message"

@ -17,7 +17,7 @@
<ul>
<li class="message-dropdown-close"><i class=" icon-angle-left"></i></li>
{{#each actions}}
<li class="{{id}} {{classes}} message-action" title="{{_t i18nLabel}}"><i class="{{icon}}"></i></li>
<li class="{{id}} {{classes}} message-action" title="{{label}}"><i class="{{icon}}"></i></li>
{{/each}}
</ul>
</div>

@ -408,7 +408,7 @@ Template.room.events
'click .message-cog': (e) ->
message_id = $(e.currentTarget).closest('.message').attr('id')
$('.message-dropdown:visible').hide()
$("\##{message_id} .message-dropdown").show()
$(".messages-box \##{message_id} .message-dropdown").show()
'click .message-dropdown-close': ->
$('.message-dropdown:visible').hide()

@ -0,0 +1 @@
@StarredMessage = new Meteor.Collection 'rocketchat_starred_message'

@ -0,0 +1,5 @@
Meteor.startup ->
RocketChat.callbacks.add 'enter-room', ->
console.log 'adding tabbar'
RocketChat.TabBar.addButton({ id: 'starred-messages', i18nTitle: 'rocketchat-message-star:Starred_Messages', icon: 'icon-star', template: 'starredMessages', order: 3 })
, RocketChat.callbacks.priority.MEDIUM, 'enter-room-tabbar-star'

@ -0,0 +1,7 @@
Template.starredMessages.helpers
messages: ->
return StarredMessage.find { rid: Session.get 'openedRoom' }, { sort: { ts: -1 } }
Template.starredMessages.onCreated ->
this.autorun =>
this.subscribe 'starredMessages', Session.get('openedRoom')

@ -0,0 +1,18 @@
<template name="starredMessages">
<div class="control">
<div class="header">
<h2>{{_ "Starred_Messages"}}</h2>
</div>
</div>
{{#if Template.subscriptionsReady}}
{{#if messages}}
<ul class="starred-messages-list scrollable">
{{#each messages}}
{{#nrr nrrargs 'message' .}}{{/nrr}}
{{/each}}
</ul>
{{/if}}
{{else}}
{{_ "Loading..."}}
{{/if}}
</template>

@ -0,0 +1,3 @@
.starred-messages-list .message-cog, .starred-messages-list .message-dropdown {
display: none;
}

@ -1,5 +1,6 @@
{
"Message_AllowStarring" : "Allow Message Starring",
"Star_Message": "Star Message",
"Unstar_Message": "Remove Star"
"Unstar_Message": "Remove Star",
"Starred_Messages": "Starred Messages"
}

@ -1,5 +1,6 @@
{
"Message_AllowStarring" : "Permitir Mensagens Favoritas",
"Star_Message": "Favoritar Message",
"Unstar_Message": "Remover Favorito"
"Unstar_Message": "Remover Favorito",
"Stars": "Mensagens Favoritas"
}

@ -26,11 +26,22 @@ Package.onUse(function(api) {
api.imply('tap:i18n');
api.addFiles("package-tap.i18n", ["client", "server"]);
api.addFiles('client/actionButton.coffee', ['client']);
api.addFiles('client/starMessage.coffee', ['client']);
api.addFiles('server/settings.coffee', ['server']);
api.addFiles('server/starMessage.coffee', ['server']);
api.addFiles([
'client/lib/StarredMessage.coffee',
'client/actionButton.coffee',
'client/starMessage.coffee',
'client/tabBar.coffee',
'client/views/starredMessages.html',
'client/views/starredMessages.coffee',
'client/views/stylesheets/messagestar.css',
], 'client');
api.addFiles([
'server/settings.coffee',
'server/starMessage.coffee',
'server/publications/starredMessages.coffee',
'server/startup/indexes.coffee'
], 'server');
// TAPi18n -- needs to be added last
api.addFiles(tapi18nFiles, ["client", "server"]);

@ -0,0 +1,18 @@
Meteor.publish 'starredMessages', (rid, options = {}) ->
unless this.userId
return this.ready()
console.log '[publish] starredMessages -> '.green, 'rid:', rid, 'options:', options
publication = @
cursorHandle = ChatMessage.find({ 'starred._id': this.userId, rid: rid, _hidden: { $ne: true } }, { sort: { ts: -1 }, limit: 50 }).observeChanges
added: (_id, record) ->
publication.added('rocketchat_starred_message', _id, record)
changed: (_id, record) ->
publication.changed('rocketchat_starred_message', _id, record)
@ready()
@onStop ->
cursorHandle.stop()

@ -13,10 +13,10 @@ Meteor.methods
_id: message._id
,
$addToSet:
starred: Meteor.userId()
starred: { _id: Meteor.userId() }
else
ChatMessage.update
_id: message._id
,
$pull:
starred: Meteor.userId()
starred: { _id: Meteor.userId() }

@ -0,0 +1,3 @@
Meteor.startup ->
Meteor.defer ->
try ChatMessage._ensureIndex { 'starred._id': 1 }, { sparse: 1 } catch e then console.log e

@ -20,8 +20,8 @@ Meteor.methods
if not RocketChat.settings.get 'Message_ShowEditedStatus'
options.fields = { ets: 0 }
messages = _.map ChatMessage.find(query, options).fetch(), (message) ->
message.starred = _.contains message.starred, fromId
messages = _.map ChatMessage.find(query, options).fetch(), (message) ->
message.starred = _.contains message.starred, { _id: fromId }
return message
unreadNotLoaded = 0

@ -23,11 +23,11 @@ Meteor.publish 'messages', (rid, start) ->
cursorHandle = cursor.observeChanges
added: (_id, record) ->
record.starred = _.contains record.starred, publication.userId
record.starred = _.contains record.starred, { _id: publication.userId }
publication.added('rocketchat_message', _id, record)
changed: (_id, record) ->
record.starred = _.contains record.starred, publication.userId
record.starred = _.contains record.starred, { _id: publication.userId }
publication.changed('rocketchat_message', _id, record)
cursorDelete = ChatMessage.find

Loading…
Cancel
Save