diff --git a/packages/rocketchat-livechat/app/client/stylesheets/main.less b/packages/rocketchat-livechat/app/client/stylesheets/main.less index 9407a2dc5df187a0c828c2958f720e1a1fcc5400..1335a0114511bdc8c618d0986be524aa5358aeb3 100644 --- a/packages/rocketchat-livechat/app/client/stylesheets/main.less +++ b/packages/rocketchat-livechat/app/client/stylesheets/main.less @@ -382,6 +382,13 @@ input:focus { } } } + .offline { + flex: 1 1 100%; + font-weight: bold; + background-color: white; + padding: 2em 0; + text-align: center; + } } .livechat-form { diff --git a/packages/rocketchat-livechat/app/client/views/messages.js b/packages/rocketchat-livechat/app/client/views/messages.js index e6391df23038311a67fb1bd339e13976d99f539f..d2f45ce48d05627af25c20a0926a12d2ed9adef4 100644 --- a/packages/rocketchat-livechat/app/client/views/messages.js +++ b/packages/rocketchat-livechat/app/client/views/messages.js @@ -52,7 +52,6 @@ Template.messages.onCreated(function() { } }); }); - self.subscribe('settings', ['Livechat_title', 'Livechat_title_color']); self.atBottom = true; }); diff --git a/packages/rocketchat-livechat/app/client/views/room.html b/packages/rocketchat-livechat/app/client/views/room.html index 90c31283b2b1d5dda269cf4216862ca6186275f7..0220ed9abfa61b5216c72c5ca2429ece0897f2f3 100644 --- a/packages/rocketchat-livechat/app/client/views/room.html +++ b/packages/rocketchat-livechat/app/client/views/room.html @@ -1,18 +1,24 @@ <template name="room"> - <div class="livechat-room"> - <div class="title" style="background-color:{{color}}"> - <div class="toolbar"> - - {{#unless popoutActive}} - <i class="popout icon-link-ext" title="Open in a new window"></i> - {{/unless}} + {{#if livechatStartedEnabled}} + <div class="livechat-room"> + <div class="title" style="background-color:{{color}}"> + <div class="toolbar"> + + {{#unless popoutActive}} + <i class="popout icon-link-ext" title="Open in a new window"></i> + {{/unless}} + </div> + <h1>{{title}}</h1> </div> - <h1>{{title}}</h1> + {{#if currentUser}} + {{> messages}} + {{else}} + {{#if livechatEnabled}} + {{> register}} + {{else}} + <div class="offline">{{_ "We_are_offline_Sorry_for_the_inconvenience"}}</div> + {{/if}} + {{/if}} </div> - {{#if currentUser}} - {{> messages}} - {{else}} - {{> register}} - {{/if}} - </div> + {{/if}} </template> diff --git a/packages/rocketchat-livechat/app/client/views/room.js b/packages/rocketchat-livechat/app/client/views/room.js index 530adb4d01fec8cf625cdd0ce23e85f5df9a463b..a844293decb8b1d2f93df988525d8da7aa6b32b3 100644 --- a/packages/rocketchat-livechat/app/client/views/room.js +++ b/packages/rocketchat-livechat/app/client/views/room.js @@ -15,6 +15,12 @@ Template.room.helpers({ }, popoutActive: function() { return FlowRouter.getQueryParam('mode') === 'popout'; + }, + livechatStartedEnabled: function() { + return Template.instance().startedEnabled.get() !== null; + }, + livechatEnabled: function() { + return Template.instance().startedEnabled.get(); } }); @@ -27,3 +33,26 @@ Template.room.events({ parentCall('openPopout'); } }); + +Template.room.onCreated(function() { + self = this; + + self.startedEnabled = new ReactiveVar(null); + + self.subscribe('settings', ['Livechat_title', 'Livechat_title_color', 'Livechat_enabled']); + + var initialCheck = true; + + self.autorun(function() { + if (self.subscriptionsReady()) { + var enabled = Settings.findOne('Livechat_enabled'); + if (enabled !== undefined) { + if (!enabled.value && initialCheck) { + parentCall('removeWidget'); + } + initialCheck = false; + self.startedEnabled.set(enabled.value); + } + } + }); +}); diff --git a/packages/rocketchat-livechat/app/i18n/en.i18n.json b/packages/rocketchat-livechat/app/i18n/en.i18n.json index 8d6e2fe32e6f328efb2c97d0c7769f4dc6e82c3f..a14d83d215ed9566d020fea1d0e239135a24e4fd 100644 --- a/packages/rocketchat-livechat/app/i18n/en.i18n.json +++ b/packages/rocketchat-livechat/app/i18n/en.i18n.json @@ -15,5 +15,6 @@ "Survey": "Survey", "Survey_instructions": "Rate each question according to your satisfaction, 1 meaning you are completely unsatisfied and 5 meaning you are completely satisfied.", "Thank_you_for_your_feedback": "Thank you for your feedback", - "User_left" : "Has left the channel." + "User_left" : "Has left the channel.", + "We_are_offline_Sorry_for_the_inconvenience": "We are offline. Sorry for the inconvenience." } diff --git a/packages/rocketchat-livechat/assets/rocket-livechat.js b/packages/rocketchat-livechat/assets/rocket-livechat.js index b7633e3073ce12f42d79c0537f1d1bca1414f386..c16c5a7bd9277313415f0c8c371b05032f56aff7 100644 --- a/packages/rocketchat-livechat/assets/rocket-livechat.js +++ b/packages/rocketchat-livechat/assets/rocket-livechat.js @@ -36,6 +36,9 @@ closeWidget(); var popup = window.open(config.url + '?mode=popout', 'livechat-popout', 'width=400, height=450, toolbars=no'); popup.focus(); + }, + removeWidget: function() { + document.getElementsByTagName('body')[0].removeChild(widget); } }; diff --git a/packages/rocketchat-livechat/config.js b/packages/rocketchat-livechat/config.js index 1295c45ed9c792d3e16a5bbc38205ccccfb09dc9..9ae62a8ecb133a1be17de7141630519ed4812c1e 100644 --- a/packages/rocketchat-livechat/config.js +++ b/packages/rocketchat-livechat/config.js @@ -2,4 +2,5 @@ Meteor.startup(function() { RocketChat.settings.addGroup('Livechat'); RocketChat.settings.add('Livechat_title' , 'Rocket.Chat', { type: 'string', group: 'Livechat', public: true }); RocketChat.settings.add('Livechat_title_color' , '#C1272D', { type: 'string', group: 'Livechat', public: true }); + RocketChat.settings.add('Livechat_enabled' , true, { type: 'boolean', group: 'Livechat', public: true }); }); diff --git a/packages/rocketchat-livechat/i18n/en.i18n.json b/packages/rocketchat-livechat/i18n/en.i18n.json index 2d6abc513b709e2df550b341b794baca2c7cfd37..fe6208b29894ca25c650dce9ecbd967627fcb7f1 100644 --- a/packages/rocketchat-livechat/i18n/en.i18n.json +++ b/packages/rocketchat-livechat/i18n/en.i18n.json @@ -17,6 +17,7 @@ "Integrations" : "Integrations", "Live_sessions" : "Live sessions", "Livechat_agents" : "Livechat agents", + "Livechat_enabled" : "Livechat enabled", "Livechat_Manager" : "Livechat Manager", "Livechat_managers" : "Livechat managers", "Livechat_title" : "Livechat Title",