1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/rocketchat_ynh.git synced 2024-09-03 20:16:25 +02:00
rocketchat_ynh/sources/programs/server/packages/rocketchat_channel-settings.js
2016-04-29 16:32:48 +02:00

224 lines
20 KiB
JavaScript

(function () {
/* Imports */
var Meteor = Package.meteor.Meteor;
var ReactiveVar = Package['reactive-var'].ReactiveVar;
var Tracker = Package.tracker.Tracker;
var Deps = Package.tracker.Deps;
var RocketChat = Package['rocketchat:lib'].RocketChat;
var TAPi18next = Package['tap:i18n'].TAPi18next;
var TAPi18n = Package['tap:i18n'].TAPi18n;
/* Package-scope variables */
var __coffeescriptShare;
(function(){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// packages/rocketchat_channel-settings/server/functions/saveRoomType.coffee.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
RocketChat.saveRoomType = function(rid, roomType) { // 1
if (!Match.test(rid, String)) { // 2
throw new Meteor.Error('invalid-rid'); // 3
} //
if (roomType !== 'c' && roomType !== 'p') { // 5
throw new Meteor.Error('invalid-room-type', 'Invalid_room_type', { // 6
roomType: roomType // 6
}); //
} //
return RocketChat.models.Rooms.setTypeById(rid, roomType) && RocketChat.models.Subscriptions.updateTypeByRoomId(rid, roomType);
}; // 1
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}).call(this);
(function(){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// packages/rocketchat_channel-settings/server/functions/saveRoomTopic.coffee.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
RocketChat.saveRoomTopic = function(rid, roomTopic) { // 1
if (!Match.test(rid, String)) { // 2
throw new Meteor.Error('invalid-rid'); // 3
} //
return RocketChat.models.Rooms.setTopicById(rid, roomTopic); // 5
}; // 1
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}).call(this);
(function(){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// packages/rocketchat_channel-settings/server/functions/saveRoomName.coffee.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
RocketChat.saveRoomName = function(rid, name) { // 1
var nameValidation, ref, room; // 2
if (!Meteor.userId()) { // 2
throw new Meteor.Error('error-invalid-user', "Invalid user", { // 3
"function": 'RocketChat.saveRoomName' // 3
}); //
} //
room = RocketChat.models.Rooms.findOneById(rid); // 2
if ((ref = room.t) !== 'c' && ref !== 'p') { // 7
throw new Meteor.Error('error-not-allowed', 'Not allowed', { // 8
"function": 'RocketChat.saveRoomName' // 8
}); //
} //
if (!RocketChat.authz.hasPermission(Meteor.userId(), 'edit-room', rid)) { // 10
throw new Meteor.Error('error-not-allowed', 'Not allowed', { // 11
"function": 'RocketChat.saveRoomName' // 11
}); //
} //
try { // 13
nameValidation = new RegExp('^' + RocketChat.settings.get('UTF8_Names_Validation') + '$'); // 14
} catch (_error) { //
nameValidation = new RegExp('^[0-9a-zA-Z-_.]+$'); // 16
} //
if (!nameValidation.test(name)) { // 18
throw new Meteor.Error('error-invalid-room-name', 'Invalid room name', { // 19
"function": 'RocketChat.saveRoomName', // 19
channelName: name // 19
}); //
} //
if (name === room.name) { // 23
return; // 24
} //
if (RocketChat.models.Rooms.findOneByName(name)) { // 27
throw new Meteor.Error('error-duplicate-channel-name', 'Duplicate channel name', { // 28
"function": 'RocketChat.saveRoomName', // 28
channelName: name // 28
}); //
} //
RocketChat.models.Rooms.setNameById(rid, name); // 2
RocketChat.models.Subscriptions.updateNameByRoomId(rid, name); // 2
return name; // 33
}; // 1
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}).call(this);
(function(){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// packages/rocketchat_channel-settings/server/methods/saveRoomSettings.coffee.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
Meteor.methods({ // 1
saveRoomSettings: function(rid, setting, value) { // 2
var message, name, room; // 3
if (!Match.test(rid, String)) { // 3
throw new Meteor.Error('invalid-rid', 'Invalid room'); // 4
} //
if (setting !== 'roomName' && setting !== 'roomTopic' && setting !== 'roomType' && setting !== 'default') { // 6
throw new Meteor.Error('invalid-settings', 'Invalid settings provided'); // 7
} //
if (!RocketChat.authz.hasPermission(Meteor.userId(), 'edit-room', rid)) { // 9
throw new Meteor.Error(503, 'Not authorized'); // 10
} //
if (setting === 'default' && !RocketChat.authz.hasPermission(this.userId, 'view-room-administration')) { // 12
throw new Meteor.Error(503, 'Not authorized'); // 13
} //
room = RocketChat.models.Rooms.findOneById(rid); // 3
if (room != null) { // 16
switch (setting) { // 17
case 'roomName': // 17
name = RocketChat.saveRoomName(rid, value); // 19
RocketChat.models.Messages.createRoomRenamedWithRoomIdRoomNameAndUser(rid, name, Meteor.user()); // 19
break; // 18
case 'roomTopic': // 17
if (value !== room.topic) { // 22
RocketChat.saveRoomTopic(rid, value); // 23
RocketChat.models.Messages.createRoomSettingsChangedWithTypeRoomIdMessageAndUser('room_changed_topic', rid, value, Meteor.user());
} //
break; // 21
case 'roomType': // 17
if (value !== room.t) { // 26
RocketChat.saveRoomType(rid, value); // 27
if (value === 'c') { // 28
message = TAPi18n.__('Channel'); // 29
} else { //
message = TAPi18n.__('Private_Group'); // 31
} //
RocketChat.models.Messages.createRoomSettingsChangedWithTypeRoomIdMessageAndUser('room_changed_privacy', rid, message, Meteor.user());
} //
break; // 25
case 'default': // 17
RocketChat.models.Rooms.saveDefaultById(rid, value); // 34
} // 17
} //
return true; // 36
} //
}); //
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}).call(this);
(function(){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// packages/rocketchat_channel-settings/server/models/Messages.coffee.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
RocketChat.models.Messages.createRoomSettingsChangedWithTypeRoomIdMessageAndUser = function(type, roomId, message, user, extraData) {
return this.createWithTypeRoomIdMessageAndUser(type, roomId, message, user, extraData); // 2
}; // 1
//
RocketChat.models.Messages.createRoomRenamedWithRoomIdRoomNameAndUser = function(roomId, roomName, user, extraData) {
return this.createWithTypeRoomIdMessageAndUser('r', roomId, roomName, user, extraData); // 5
}; // 4
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}).call(this);
/* Exports */
if (typeof Package === 'undefined') Package = {};
Package['rocketchat:channel-settings'] = {};
})();
//# sourceMappingURL=rocketchat_channel-settings.js.map