room announcement: data & room settings

pull/6351/head
Yuntao Zhou 9 years ago
parent 0ebae3ac36
commit 7594d767cc
  1. 10
      packages/rocketchat-channel-settings/client/startup/messageTypes.coffee
  2. 11
      packages/rocketchat-channel-settings/client/views/channelSettings.coffee
  3. 1
      packages/rocketchat-channel-settings/package.js
  4. 13
      packages/rocketchat-channel-settings/server/functions/saveRoomAnnouncement.js
  5. 5
      packages/rocketchat-channel-settings/server/methods/saveRoomSettings.coffee
  6. 10
      packages/rocketchat-lib/server/models/Rooms.coffee
  7. 6
      packages/rocketchat-piwik/client/trackEvents.js
  8. 7
      packages/rocketchat-ui-admin/client/rooms/adminRoomInfo.coffee
  9. 1
      server/publications/room.js
  10. 2
      server/startup/roomPublishes.js

@ -19,6 +19,16 @@ Meteor.startup ->
room_topic: message.msg
}
RocketChat.MessageTypes.registerType
id: 'room_changed_announcement'
system: true
message: 'room_changed_announcement'
data: (message) ->
return {
user_by: message.u?.username
room_announcement: message.msg
}
RocketChat.MessageTypes.registerType
id: 'room_changed_description'
system: true

@ -145,6 +145,17 @@ Template.channelSettings.onCreated ->
toastr.success TAPi18n.__ 'Room_topic_changed_successfully'
RocketChat.callbacks.run 'roomTopicChanged', room
announcement:
type: 'markdown'
label: 'Announcement'
canView: (room) => true
canEdit: (room) => RocketChat.authz.hasAllPermission('edit-room', room._id)
save: (value, room) ->
Meteor.call 'saveRoomSettings', room._id, 'roomAnnouncement', value, (err, result) ->
return handleError err if err
toastr.success TAPi18n.__ 'Room_announcement_changed_successfully'
RocketChat.callbacks.run 'roomAnnouncementChanged', room
description:
type: 'text'
label: 'Description'

@ -30,6 +30,7 @@ Package.onUse(function(api) {
'server/functions/saveReactWhenReadOnly.js',
'server/functions/saveRoomType.coffee',
'server/functions/saveRoomTopic.coffee',
'server/functions/saveRoomAnnouncement.js',
'server/functions/saveRoomName.coffee',
'server/functions/saveRoomReadOnly.coffee',
'server/functions/saveRoomDescription.coffee',

@ -0,0 +1,13 @@
RocketChat.saveRoomAnnouncement = function(rid, roomAnnouncement, user, sendMessage=true) {
if (!Match.test(rid, String)) {
throw new Meteor.Error('invalid-room', 'Invalid room', { function: 'RocketChat.saveRoomAnnouncement' });
}
roomAnnouncement = s.escapeHTML(roomAnnouncement);
const updated = RocketChat.models.Rooms.setAnnouncementById(rid, roomAnnouncement);
if (updated && sendMessage) {
RocketChat.models.Messages.createRoomSettingsChangedWithTypeRoomIdMessageAndUser('room_changed_announcement', rid, roomAnnouncement, user);
}
return updated;
}

@ -6,7 +6,7 @@ Meteor.methods
unless Match.test rid, String
throw new Meteor.Error 'error-invalid-room', 'Invalid room', { method: 'saveRoomSettings' }
if setting not in ['roomName', 'roomTopic', 'roomDescription', 'roomType', 'readOnly', 'reactWhenReadOnly', 'systemMessages', 'default', 'joinCode']
if setting not in ['roomName', 'roomTopic', 'roomAnnouncement', 'roomDescription', 'roomType', 'readOnly', 'reactWhenReadOnly', 'systemMessages', 'default', 'joinCode']
throw new Meteor.Error 'error-invalid-settings', 'Invalid settings provided', { method: 'saveRoomSettings' }
unless RocketChat.authz.hasPermission(Meteor.userId(), 'edit-room', rid)
@ -29,6 +29,9 @@ Meteor.methods
when 'roomTopic'
if value isnt room.topic
RocketChat.saveRoomTopic(rid, value, Meteor.user())
when 'roomAnnouncement'
if value isnt room.announcement
RocketChat.saveRoomAnnouncement(rid, value, Meteor.user())
when 'roomDescription'
if value isnt room.description
RocketChat.saveRoomDescription rid, value, Meteor.user()

@ -499,6 +499,16 @@ class ModelRooms extends RocketChat.models._Base
return @update query, update
setAnnouncementById: (_id, announcement) ->
query =
_id: _id
update =
$set:
announcement: announcement
return @update query, update
muteUsernameByRoomId: (_id, username) ->
query =
_id: _id

@ -44,6 +44,12 @@ RocketChat.callbacks.add('roomTopicChanged', (room) => {
}
}, RocketChat.callbacks.priority.MEDIUM, 'piwik-room-topic-changed');
RocketChat.callbacks.add('roomAnnouncementChanged', (room) => {
if (window._paq && RocketChat.settings.get('PiwikAnalytics_features_rooms')) {
window._paq.push(['trackEvent', 'Room', 'Changed Announcement', room.name + ' (' + room._id + ')' ]);
}
}, RocketChat.callbacks.priority.MEDIUM, 'piwik-room-topic-changed');
RocketChat.callbacks.add('roomTypeChanged', (room) => {
if (window._paq && RocketChat.settings.get('PiwikAnalytics_features_rooms')) {
window._paq.push(['trackEvent', 'Room', 'Changed Room Type', room.name + ' (' + room._id + ')' ]);

@ -137,6 +137,13 @@ Template.adminRoomInfo.onCreated ->
return handleError(err)
toastr.success TAPi18n.__ 'Room_topic_changed_successfully'
RocketChat.callbacks.run 'roomTopicChanged', AdminChatRoom.findOne(rid)
when 'roomAnnouncement'
if @validateRoomTopic(rid)
Meteor.call 'saveRoomSettings', rid, 'roomAnnouncement', @$('input[name=roomAnnouncement]').val(), (err, result) ->
if err
return handleError(err)
toastr.success TAPi18n.__ 'Room_announcement_changed_successfully'
RocketChat.callbacks.run 'roomAnnouncementChanged', AdminChatRoom.findOne(rid)
when 'roomType'
if @validateRoomType(rid)
RocketChat.callbacks.run 'roomTypeChanged', AdminChatRoom.findOne(rid)

@ -7,6 +7,7 @@ const options = {
u: 1,
// usernames: 1,
topic: 1,
announcement: 1,
muted: 1,
archived: 1,
jitsiTimeout: 1,

@ -8,6 +8,7 @@ Meteor.startup(function() {
u: 1,
usernames: 1,
topic: 1,
announcement: 1,
muted: 1,
archived: 1,
ro: 1,
@ -44,6 +45,7 @@ Meteor.startup(function() {
u: 1,
usernames: 1,
topic: 1,
announcement: 1,
muted: 1,
archived: 1,
ro: 1,

Loading…
Cancel
Save