From 6f0a7e4b137e193e6cfaac6aa90f0c91ec6b139c Mon Sep 17 00:00:00 2001
From: David Lu <david.lu@hotmail.com>
Date: Sat, 4 Jun 2016 08:23:44 -0700
Subject: PLT-2981 Disabled Push Notifications section in Settings if disabled
 by admin (#3225)

* Added push notifications disabled message to settings

* Update user_settings_notifications.jsx
---
 .../user_settings/user_settings_notifications.jsx  | 148 ++++++++++++---------
 1 file changed, 85 insertions(+), 63 deletions(-)

(limited to 'webapp/components/user_settings/user_settings_notifications.jsx')

diff --git a/webapp/components/user_settings/user_settings_notifications.jsx b/webapp/components/user_settings/user_settings_notifications.jsx
index 410ce1a4e..6b07f59e2 100644
--- a/webapp/components/user_settings/user_settings_notifications.jsx
+++ b/webapp/components/user_settings/user_settings_notifications.jsx
@@ -263,71 +263,89 @@ class NotificationsTab extends React.Component {
             }
 
             let inputs = [];
+            let extraInfo = null;
+            let submit = null;
 
-            inputs.push(
-                <div key='userNotificationLevelOption'>
-                    <div className='radio'>
-                        <label>
-                            <input
-                                type='radio'
-                                name='pushNotificationLevel'
-                                checked={notifyActive[0]}
-                                onChange={this.handlePushRadio.bind(this, 'all')}
-                            />
-                            <FormattedMessage
-                                id='user.settings.push_notification.allActivity'
-                                defaultMessage='For all activity'
-                            />
-                        </label>
-                        <br/>
-                    </div>
-                    <div className='radio'>
-                        <label>
-                            <input
-                                type='radio'
-                                name='pushNotificationLevel'
-                                checked={notifyActive[1]}
-                                onChange={this.handlePushRadio.bind(this, 'mention')}
-                            />
-                            <FormattedMessage
-                                id='user.settings.push_notifications.onlyMentions'
-                                defaultMessage='For mentions and direct messages'
-                            />
-                        </label>
-                        <br/>
-                    </div>
-                    <div className='radio'>
-                        <label>
-                            <input
-                                type='radio'
-                                name='pushNotificationLevel'
-                                checked={notifyActive[2]}
-                                onChange={this.handlePushRadio.bind(this, 'none')}
-                            />
-                            <FormattedMessage
-                                id='user.settings.push_notifications.off'
-                                defaultMessage='Off'
-                            />
-                        </label>
+            if (global.window.mm_config.SendPushNotifications === 'true') {
+                inputs.push(
+                    <div key='userNotificationLevelOption'>
+                        <div className='radio'>
+                            <label>
+                                <input
+                                    type='radio'
+                                    name='pushNotificationLevel'
+                                    checked={notifyActive[0]}
+                                    onChange={this.handlePushRadio.bind(this, 'all')}
+                                />
+                                <FormattedMessage
+                                    id='user.settings.push_notification.allActivity'
+                                    defaultMessage='For all activity'
+                                />
+                            </label>
+                            <br/>
+                        </div>
+                        <div className='radio'>
+                            <label>
+                                <input
+                                    type='radio'
+                                    name='pushNotificationLevel'
+                                    checked={notifyActive[1]}
+                                    onChange={this.handlePushRadio.bind(this, 'mention')}
+                                />
+                                <FormattedMessage
+                                    id='user.settings.push_notification.onlyMentions'
+                                    defaultMessage='For mentions and direct messages'
+                                />
+                            </label>
+                            <br/>
+                        </div>
+                        <div className='radio'>
+                            <label>
+                                <input
+                                    type='radio'
+                                    name='pushNotificationLevel'
+                                    checked={notifyActive[2]}
+                                    onChange={this.handlePushRadio.bind(this, 'none')}
+                                />
+                                <FormattedMessage
+                                    id='user.settings.push_notification.off'
+                                    defaultMessage='Off'
+                                />
+                            </label>
+                        </div>
                     </div>
-                </div>
-            );
+                );
 
-            const extraInfo = (
-                <span>
-                    <FormattedMessage
-                        id='user.settings.push_notifications.info'
-                        defaultMessage='Notification alerts are pushed to your mobile device when there is activity in Mattermost.'
-                    />
-                </span>
-            );
+                extraInfo = (
+                    <span>
+                        <FormattedMessage
+                            id='user.settings.push_notification.info'
+                            defaultMessage='Notification alerts are pushed to your mobile device when there is activity in Mattermost.'
+                        />
+                    </span>
+                );
+
+                submit = this.handleSubmit();
+            } else {
+                inputs.push(
+                    <div
+                        key='oauthEmailInfo'
+                        className='form-group'
+                    >
+                        <FormattedMessage
+                            id='user.settings.push_notification.disabled_long'
+                            defaultMessage='Push notifications for mobile devices have been disabled by your System Administrator.'
+                        />
+                    </div>
+                );
+            }
 
             return (
                 <SettingItemMax
                     title={Utils.localizeMessage('user.settings.notifications.push', 'Mobile push notifications')}
                     extraInfo={extraInfo}
                     inputs={inputs}
-                    submit={this.handleSubmit}
+                    submit={submit}
                     server_error={this.state.serverError}
                     updateSection={this.handleCancel}
                 />
@@ -345,14 +363,21 @@ class NotificationsTab extends React.Component {
         } else if (this.state.notifyPushLevel === 'none') {
             describe = (
                 <FormattedMessage
-                    id='user.settings.push_notifications.off'
+                    id='user.settings.push_notification.off'
                     defaultMessage='Off'
                 />
             );
+        } else if (global.window.mm_config.SendPushNotifications === 'false') {
+            describe = (
+                <FormattedMessage
+                    id='user.settings.push_notification.disabled'
+                    defaultMessage='Disabled by system administrator'
+                />
+            );
         } else {
             describe = (
                 <FormattedMessage
-                    id='user.settings.push_notifications.onlyMentions'
+                    id='user.settings.push_notification.onlyMentions'
                     defaultMessage='For mentions and direct messages'
                 />
             );
@@ -364,7 +389,7 @@ class NotificationsTab extends React.Component {
 
         return (
             <SettingItemMin
-                title={Utils.localizeMessage('user.settings.notifications.push', 'Mobile push notifications')}
+                title={Utils.localizeMessage('user.settings.notification.push', 'Mobile push notifications')}
                 describe={describe}
                 updateSection={handleUpdateDesktopSection}
             />
@@ -911,10 +936,7 @@ class NotificationsTab extends React.Component {
             );
         }
 
-        let pushNotificationSection;
-        if (global.window.mm_config.SendPushNotifications === 'true') {
-            pushNotificationSection = this.createPushNotificationSection();
-        }
+        const pushNotificationSection = this.createPushNotificationSection();
 
         return (
             <div>
-- 
cgit v1.2.3-1-g7c22

