Skip to content
Snippets Groups Projects
Commit db666851 authored by Diego Sampaio's avatar Diego Sampaio
Browse files

fix some UI bugs

parent 1577c753
No related branches found
No related tags found
No related merge requests found
......@@ -4,9 +4,9 @@ Template.channelSettings.helpers
editing: (field) ->
return Template.instance().editing.get() is field
notDirect: ->
return ChatRoom.findOne(@rid)?.t isnt 'd'
return ChatRoom.findOne(@rid, { fields: { t: 1 }})?.t isnt 'd'
roomType: ->
return ChatRoom.findOne(@rid)?.t
return ChatRoom.findOne(@rid, { fields: { t: 1 }})?.t
channelSettings: ->
return RocketChat.ChannelSettings.getOptions()
roomTypeDescription: ->
......
Template.adminRoomInfo.helpers
selectedRoom: ->
return Session.get 'adminRoomsSelected'
canEdit: ->
return RocketChat.authz.hasAllPermission('edit-room', @rid)
editing: (field) ->
return Template.instance().editing.get() is field
notDirect: ->
return ChatRoom.findOne(@rid, { fields: { t: 1 }})?.t isnt 'd'
roomType: ->
return ChatRoom.findOne(@rid, { fields: { t: 1 }})?.t
channelSettings: ->
return RocketChat.ChannelSettings.getOptions()
roomTypeDescription: ->
roomType = ChatRoom.findOne(@rid, { fields: { t: 1 }})?.t
if roomType is 'c'
return t('Channel')
else if roomType is 'p'
return t('Private_Group')
roomName: ->
return ChatRoom.findOne(@rid, { fields: { name: 1 }})?.name
roomTopic: ->
return ChatRoom.findOne(@rid, { fields: { topic: 1 }})?.topic
archivationState: ->
return ChatRoom.findOne(@rid, { fields: { archived: 1 }})?.archived
archivationStateDescription: ->
archivationState = ChatRoom.findOne(@rid, { fields: { archived: 1 }})?.archived
if archivationState is true
return t('Room_archivation_state_true')
else
return t('Room_archivation_state_false')
Template.adminRoomInfo.events
'keydown input[type=text]': (e, t) ->
if e.keyCode is 13
e.preventDefault()
t.saveSetting()
'click [data-edit]': (e, t) ->
e.preventDefault()
t.editing.set($(e.currentTarget).data('edit'))
setTimeout (-> t.$('input.editing').focus().select()), 100
'click .cancel': (e, t) ->
e.preventDefault()
t.editing.set()
'click .save': (e, t) ->
e.preventDefault()
t.saveSetting()
Template.adminRoomInfo.onCreated ->
@editing = new ReactiveVar
@validateRoomType = =>
type = @$('input[name=roomType]:checked').val()
if type not in ['c', 'p']
toastr.error t('Invalid_room_type', type)
return true
@validateRoomName = =>
rid = Template.currentData()?.rid
room = ChatRoom.findOne rid
if not RocketChat.authz.hasAllPermission('edit-room', @rid) or room.t not in ['c', 'p']
toastr.error t('Not_allowed')
return false
name = $('input[name=roomName]').val()
if not /^[0-9a-z-_]+$/.test name
toastr.error t('Invalid_room_name', name)
return false
return true
@validateRoomTopic = =>
return true
@saveSetting = =>
switch @editing.get()
when 'roomName'
if @validateRoomName()
Meteor.call 'saveRoomSettings', @data?.rid, 'roomName', @$('input[name=roomName]').val(), (err, result) ->
if err
if err.error in [ 'duplicate-name', 'name-invalid' ]
return toastr.error TAPi18n.__(err.reason, err.details.channelName)
return toastr.error TAPi18n.__(err.reason)
toastr.success TAPi18n.__ 'Room_name_changed_successfully'
when 'roomTopic'
if @validateRoomTopic()
Meteor.call 'saveRoomSettings', @data?.rid, 'roomTopic', @$('input[name=roomTopic]').val(), (err, result) ->
if err
return toastr.error TAPi18n.__(err.reason)
toastr.success TAPi18n.__ 'Room_topic_changed_successfully'
when 'roomType'
if @validateRoomType()
Meteor.call 'saveRoomSettings', @data?.rid, 'roomType', @$('input[name=roomType]:checked').val(), (err, result) ->
if err
if err.error is 'invalid-room-type'
return toastr.error TAPi18n.__(err.reason, err.details.roomType)
return toastr.error TAPi18n.__(err.reason)
toastr.success TAPi18n.__ 'Room_type_changed_successfully'
when 'archivationState'
if @$('input[name=archivationState]:checked').val() is 'true'
if ChatRoom.findOne(@data.rid)?.archived isnt true
Meteor.call 'archiveRoom', @data?.rid, (err, results) ->
return toastr.error err.reason if err
toastr.success TAPi18n.__ 'Room_archived'
else
if ChatRoom.findOne(@data.rid)?.archived is true
Meteor.call 'unarchiveRoom', @data?.rid, (err, results) ->
return toastr.error err.reason if err
toastr.success TAPi18n.__ 'Room_unarchived'
@editing.set()
<template name="adminRoomInfo">
{{#with selectedRoom}}
<div class="content">
<div class="list-view channel-settings">
<div class="status">
<h2>{{_ "Room_Info"}}</h2>
</div>
<form>
<ul class="list clearfix">
{{#if notDirect}}
<li>
<label>{{_ "Name"}}</label>
<div>
{{#if editing 'roomName'}}
<input type="text" name="roomName" value="{{roomName}}" class="editing" /> <button type="button" class="button secondary cancel">{{_ "Cancel"}}</button> <button type="button" class="button primary save">{{_ "Save"}}</button>
{{else}}
<span>{{roomName}}{{#if canEdit}} <i class="octicon octicon-pencil" data-edit="roomName"></i>{{/if}}</span>
{{/if}}
</div>
</li>
{{/if}}
<li>
<label>{{_ "Topic"}}</label>
<div>
{{#if editing 'roomTopic'}}
<input type="text" name="roomTopic" value="{{roomTopic}}" class="editing" /> <button type="button" class="button secondary cancel">{{_ "Cancel"}}</button> <button type="button" class="button primary save">{{_ "Save"}}</button>
{{else}}
<span>{{roomTopic}}{{#if canEdit}} <i class="octicon octicon-pencil" data-edit="roomTopic"></i>{{/if}}</span>
{{/if}}
</div>
</li>
{{#if notDirect}}
<li>
<label>{{_ "Type"}}</label>
<div>
{{#if editing 'roomType'}}
<label><input type="radio" name="roomType" class="editing" value="c" checked="{{$eq roomType 'c'}}" /> {{_ "Channel"}}</label>
<label><input type="radio" name="roomType" value="p" checked="{{$eq roomType 'p'}}" /> {{_ "Private_Group"}}</label>
<button type="button" class="button secondary cancel">{{_ "Cancel"}}</button>
<button type="button" class="button primary save">{{_ "Save"}}</button>
{{else}}
<span>{{roomTypeDescription}}{{#if canEdit}} <i class="octicon octicon-pencil" data-edit="roomType"></i>{{/if}}</span>
{{/if}}
</div>
</li>
{{/if}}
{{#if notDirect}}
<li>
<label>{{_ "Room_archivation_state"}}</label>
<div>
{{#if editing 'archivationState'}}
<label><input type="radio" name="archivationState" class="editing" value="true" checked="{{$eq archivationState true}}" /> {{_ "Room_archivation_state_true"}}</label>
<label><input type="radio" name="archivationState" value="false" checked="{{$neq archivationState true}}" /> {{_ "Room_archivation_state_false"}}</label>
<button type="button" class="button secondary cancel">{{_ "Cancel"}}</button>
<button type="button" class="button primary save">{{_ "Save"}}</button>
{{else}}
<span>{{archivationStateDescription}}{{#if canEdit}} <i class="octicon octicon-pencil" data-edit="archivationState"></i>{{/if}}</span>
{{/if}}
</div>
</li>
{{/if}}
{{#each channelSettings}}
{{> Template.dynamic template=template data=data}}
{{/each}}
</ul>
</form>
</div>
</div>
{{/with}}
</template>
......@@ -25,8 +25,6 @@ Template.adminRooms.helpers
return TAPi18n.__ 'Direct Message'
if @t is 'p'
return TAPi18n.__ 'Private Group'
roomData: ->
return ChatRoom.findOne Session.get 'adminRoomsSelected'
flexTemplate: ->
return RocketChat.TabBar.getTemplate()
......@@ -51,7 +49,7 @@ Template.adminRooms.onCreated ->
id: 'admin-room',
i18nTitle: 'Room_Info',
icon: 'octicon octicon-info',
template: 'channelSettings',
template: 'adminRoomInfo',
order: 1
});
......@@ -113,8 +111,7 @@ Template.adminRooms.events
Session.set('adminRoomsSelected', { rid: @_id });
RocketChat.TabBar.setData { rid: @_id }
RocketChat.TabBar.setTemplate('channelSettings')
RocketChat.TabBar.setTemplate('adminRoomInfo')
'click .load-more': (e, t) ->
e.preventDefault()
......
......@@ -27,6 +27,8 @@ Package.onUse(function(api) {
api.addFiles('admin/adminInfo.html', 'client');
api.addFiles('admin/rooms/adminRooms.html', 'client');
api.addFiles('admin/rooms/adminRoomInfo.html', 'client');
api.addFiles('admin/rooms/adminRoomInfo.coffee', 'client');
api.addFiles('admin/rooms/channelSettingsDefault.html', 'client');
api.addFiles('admin/rooms/channelSettingsDefault.js', 'client');
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment