Created a class for storing message action buttons

pull/984/head
Marcelo Schmidt 10 years ago
parent 8f4e3c6ce5
commit 4ab5412917
  1. 9
      client/views/app/message.coffee
  2. 10
      client/views/app/message.html
  3. 31
      packages/rocketchat-lib/client/MessageAction.coffee
  4. 1
      packages/rocketchat-lib/package.js

@ -1,4 +1,6 @@
Template.message.helpers
actions: ->
return Template.instance()?.actions?.getButtons()
own: ->
return 'own' if this.u?._id is Meteor.userId()
@ -57,6 +59,7 @@ Template.message.helpers
Template.message.onViewRendered = (context) ->
view = this
console.log view
this._domrange.onAttached (domRange) ->
lastNode = domRange.lastNode()
if lastNode.previousElementSibling?.dataset?.date isnt lastNode.dataset.date
@ -92,3 +95,9 @@ Template.message.onViewRendered = (context) ->
if view.parentView.parentView.parentView.parentView.parentView.templateInstance?().atBottom isnt true
newMessage = document.querySelector(".new-message")
newMessage.className = "new-message"
# if RocketChat.authz.hasAtLeastOnePermission('edit-message', context.rid ) or (RocketChat.settings.get('Message_AllowEditing') and context.u?._id is Meteor.userId())
# view.instance().actions.addButton({ id: 'edit-message', icon: 'icon-pencil', label: 'Edit' })
Template.message.onCreated ->
@actions = new MessageAction

@ -15,12 +15,18 @@
</span>
<ul class="message-dropdown">
{{#if canEdit}}
{{#each actions}}
<li class="{{id}}"><i class="{{icon}}"></i>{{label}}</li>
{{/each}}
{{!-- {{#if canEdit}}
<li class="edit-message"><i class="icon-pencil"></i>Edit</li>
{{/if}}
{{#if canDelete}}
<li class="delete-message"><i class="icon-trash-1"></i>Delete</li>
{{/if}}
{{/if}} --}}
</ul>
<div class="body" dir="auto">

@ -0,0 +1,31 @@
class @MessageAction
constructor: ->
@buttons = new ReactiveVar {}
addButton: (config) =>
unless config?.id
throw new Meteor.Error "MessageAction-addButton-error", "Button id was not informed."
Tracker.nonreactive =>
btns = @buttons.get()
btns[config.id] = config
@buttons.set btns
removeButton: (id) =>
Tracker.nonreactive =>
btns = @buttons.get()
delete btns[id]
@buttons.set btns
updateButton: (id, config) =>
Tracker.nonreactive =>
btns = @buttons.get()
if btns[id]
btns[id] = _.extend btns[id], config
@buttons.set btns
getButtons: =>
return _.sortBy (_.toArray @buttons.get()), 'order'
resetButtons: =>
@buttons.set {}

@ -27,6 +27,7 @@ Package.onUse(function(api) {
// CLIENT
api.addFiles('client/Notifications.coffee', 'client');
api.addFiles('client/TabBar.coffee', 'client');
api.addFiles('client/MessageAction.coffee', 'client');
api.addFiles('settings/client/startup.coffee', 'client');
api.addFiles('settings/client/rocketchat.coffee', 'client');

Loading…
Cancel
Save