diff --git a/client/routes/roomRoute.coffee b/client/routes/roomRoute.coffee index ee3c84e106ba..2a03a541917d 100644 --- a/client/routes/roomRoute.coffee +++ b/client/routes/roomRoute.coffee @@ -56,6 +56,7 @@ openRoom = (type, name) -> RocketChat.TabBar.addButton({ id: 'members-list', title: t('User_Info'), icon: 'icon-user', template: 'membersList', order: 2 }) else RocketChat.TabBar.addButton({ id: 'members-list', title: t('Members_List'), icon: 'icon-users', template: 'membersList', order: 2 }) + RocketChat.TabBar.addButton({ id: 'uploaded-files-list', title: t('Room_uploaded_file_list'), icon: 'icon-download', template: 'uploadedFilesList', order: 3 }) # update user's room subscription if ChatSubscription.findOne({rid: room._id})?.open is false diff --git a/client/views/app/tabBar/uploadedFilesList.coffee b/client/views/app/tabBar/uploadedFilesList.coffee new file mode 100644 index 000000000000..7b31ab966453 --- /dev/null +++ b/client/views/app/tabBar/uploadedFilesList.coffee @@ -0,0 +1,33 @@ +roomFiles = new Mongo.Collection 'room_files' + +Template.uploadedFilesList.helpers + files: -> + return roomFiles.find().fetch() + + hasFiles: -> + return roomFiles.find().count() > 0 + + getFileIcon: (type) -> + if type.match(/^image\/.+$/) + return 'icon-picture' + + return 'icon-docs' + + customClassForFileType: -> + if this.type.match(/^image\/.+$/) + return 'room-files-swipebox' + + +Template.uploadedFilesList.events + 'click .room-file-item': (e, t) -> + if $(e.currentTarget).siblings('.icon-picture').length + e.preventDefault() + + +Template.uploadedFilesList.onCreated -> + instance = this + this.autorun -> + instance.subscribe 'roomFiles', Session.get('openedRoom') + +Template.uploadedFilesList.onRendered -> + $('.room-files-swipebox').swipebox() diff --git a/client/views/app/tabBar/uploadedFilesList.html b/client/views/app/tabBar/uploadedFilesList.html new file mode 100644 index 000000000000..e97b07b3fdcd --- /dev/null +++ b/client/views/app/tabBar/uploadedFilesList.html @@ -0,0 +1,25 @@ + diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index 7cec2369f565..bb6a67c10bf5 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -261,6 +261,8 @@ "Room_name_changed" : "Room name changed to: __room_name__ by __user_by__", "Room_name_changed_successfully" : "Room name changed successfully", "Room_not_found" : "Room not found", + "Room_uploaded_file_list" : "Files list", + "Room_uploaded_file_list_empty" : "No files available.", "room_user_count" : "%s users", "Rooms" : "Rooms", "Save" : "Save", diff --git a/i18n/pt.i18n.json b/i18n/pt.i18n.json index feac96920356..ec2afac9ed3f 100644 --- a/i18n/pt.i18n.json +++ b/i18n/pt.i18n.json @@ -251,6 +251,8 @@ "Room_name_changed" : "Nome da sala alterado para: __room_name__ por __user_by__", "Room_name_changed_successfully" : "Nome da sala alterado com sucesso", "Room_not_found" : "Sala não encontrada", + "Room_uploaded_file_list" : "Lista de arquivos", + "Room_uploaded_file_list_empty" : "Nenhum arquivo disponível", "room_user_count" : "%s usuários", "Rooms" : "Salas", "Save" : "Salvar", diff --git a/server/publications/roomFiles.coffee b/server/publications/roomFiles.coffee new file mode 100644 index 000000000000..8d59aef92c70 --- /dev/null +++ b/server/publications/roomFiles.coffee @@ -0,0 +1,27 @@ +Meteor.publish 'roomFiles', (rid) -> + unless this.userId + return this.ready() + + console.log '[publish] roomFiles'.green, rid + + pub = this + + fileQuery = + rid: rid + complete: true + uploading: false + + fileOptions = + fields: + _id: 1 + name: 1 + type: 1 + url: 1 + + cursorFileListHandle = fileCollection.find(fileQuery, fileOptions).observeChanges + added: (_id, record) -> + pub.added('room_files', _id, record) + + this.ready() + this.onStop -> + cursorFileListHandle.stop()