From 55a97b215d8e3127f931cc67670d520907120ac0 Mon Sep 17 00:00:00 2001 From: =Corey Hulen Date: Wed, 10 Feb 2016 14:53:45 -0800 Subject: [PATCH 01/15] PLT-1956 --- .../user_settings/user_settings_modal.jsx | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/web/react/components/user_settings/user_settings_modal.jsx b/web/react/components/user_settings/user_settings_modal.jsx index 7e911f09a0..5442f7ac4a 100644 --- a/web/react/components/user_settings/user_settings_modal.jsx +++ b/web/react/components/user_settings/user_settings_modal.jsx @@ -234,7 +234,10 @@ class UserSettingsModal extends React.Component { render() { const {formatMessage} = this.props.intl; + var currentUser = UserStore.getCurrentUser(); + var isAdmin = Utils.isAdmin(currentUser.roles); var tabs = []; + tabs.push({name: 'general', uiName: formatMessage(holders.general), icon: 'glyphicon glyphicon-cog'}); tabs.push({name: 'security', uiName: formatMessage(holders.security), icon: 'glyphicon glyphicon-lock'}); tabs.push({name: 'notifications', uiName: formatMessage(holders.notifications), icon: 'glyphicon glyphicon-exclamation-sign'}); @@ -243,8 +246,17 @@ class UserSettingsModal extends React.Component { } if (global.window.mm_config.EnableIncomingWebhooks === 'true' || global.window.mm_config.EnableOutgoingWebhooks === 'true' || global.window.mm_config.EnableCommands === 'true') { - tabs.push({name: 'integrations', uiName: formatMessage(holders.integrations), icon: 'glyphicon glyphicon-transfer'}); + var show = global.window.mm_config.EnableOnlyAdminIntegrations !== 'true'; + + if (global.window.mm_config.EnableOnlyAdminIntegrations === 'true' && isAdmin) { + show = true; + } + + if (show) { + tabs.push({name: 'integrations', uiName: formatMessage(holders.integrations), icon: 'glyphicon glyphicon-transfer'}); + } } + tabs.push({name: 'display', uiName: formatMessage(holders.display), icon: 'glyphicon glyphicon-eye-open'}); tabs.push({name: 'advanced', uiName: formatMessage(holders.advanced), icon: 'glyphicon glyphicon-list-alt'}); From cac086ae22c1525f12c1e8d28393b894aa34fd1e Mon Sep 17 00:00:00 2001 From: JoramWilander Date: Thu, 11 Feb 2016 09:22:57 -0500 Subject: [PATCH 02/15] Fixing the elusive missing post bug --- web/react/stores/post_store.jsx | 17 +---------------- web/react/utils/async_client.jsx | 6 +++--- 2 files changed, 4 insertions(+), 19 deletions(-) diff --git a/web/react/stores/post_store.jsx b/web/react/stores/post_store.jsx index b5bb93576d..f5c3421634 100644 --- a/web/react/stores/post_store.jsx +++ b/web/react/stores/post_store.jsx @@ -83,8 +83,6 @@ class PostStoreClass extends EventEmitter { this.getCommentDraft = this.getCommentDraft.bind(this); this.clearDraftUploads = this.clearDraftUploads.bind(this); this.clearCommentDraftUploads = this.clearCommentDraftUploads.bind(this); - this.storeLatestUpdate = this.storeLatestUpdate.bind(this); - this.getLatestUpdate = this.getLatestUpdate.bind(this); this.getCurrentUsersLatestPost = this.getCurrentUsersLatestPost.bind(this); this.getCommentCount = this.getCommentCount.bind(this); @@ -258,7 +256,7 @@ class PostStoreClass extends EventEmitter { const np = newPosts.posts[pid]; if (np.delete_at === 0) { combinedPosts.posts[pid] = np; - if (combinedPosts.order.indexOf(pid) === -1) { + if (combinedPosts.order.indexOf(pid) === -1 && newPosts.order.indexOf(pid) !== -1) { combinedPosts.order.push(pid); } } @@ -507,19 +505,6 @@ class PostStoreClass extends EventEmitter { } }); } - storeLatestUpdate(channelId, time) { - if (!this.postsInfo.hasOwnProperty(channelId)) { - this.postsInfo[channelId] = {}; - } - this.postsInfo[channelId].latestPost = time; - } - getLatestUpdate(channelId) { - if (this.postsInfo.hasOwnProperty(channelId) && this.postsInfo[channelId].hasOwnProperty('latestPost')) { - return this.postsInfo[channelId].latestPost; - } - - return 0; - } getCommentCount(post) { const posts = this.getAllPosts(post.channel_id).posts; diff --git a/web/react/utils/async_client.jsx b/web/react/utils/async_client.jsx index c8676f45d8..c2b5fe9e58 100644 --- a/web/react/utils/async_client.jsx +++ b/web/react/utils/async_client.jsx @@ -521,18 +521,18 @@ export function getPosts(id) { return; } - if (PostStore.getAllPosts(channelId) == null) { + if ($.isEmptyObject(PostStore.getAllPosts(channelId))) { getPostsPage(channelId, Constants.POST_CHUNK_SIZE); return; } - const latestUpdate = PostStore.getLatestUpdate(channelId); + const latestPost = PostStore.getLatestPost(channelId); callTracker['getPosts_' + channelId] = utils.getTimestamp(); client.getPosts( channelId, - latestUpdate, + latestPost.update_at, (data, textStatus, xhr) => { if (xhr.status === 304 || !data) { return; From 590022064abab2b93d47de73e917e75e51f88584 Mon Sep 17 00:00:00 2001 From: Christopher Speller Date: Thu, 11 Feb 2016 09:31:39 -0500 Subject: [PATCH 03/15] Fixing cacheing issue on IE for admin console --- api/admin.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/api/admin.go b/api/admin.go index e8cb8b3c7f..5a645dc975 100644 --- a/api/admin.go +++ b/api/admin.go @@ -120,6 +120,8 @@ func getConfig(c *Context, w http.ResponseWriter, r *http.Request) { cfg := model.ConfigFromJson(strings.NewReader(json)) json = cfg.ToJson() + w.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate") + w.Header().Set("Expires", "0") w.Write([]byte(json)) } From 2747a99aef5a8c1b6f41222451451c1153cd7079 Mon Sep 17 00:00:00 2001 From: JoramWilander Date: Thu, 11 Feb 2016 10:52:12 -0500 Subject: [PATCH 04/15] Fix case where channel has a postlist but no posts --- web/react/utils/async_client.jsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/web/react/utils/async_client.jsx b/web/react/utils/async_client.jsx index c2b5fe9e58..977fa8e7e2 100644 --- a/web/react/utils/async_client.jsx +++ b/web/react/utils/async_client.jsx @@ -527,12 +527,17 @@ export function getPosts(id) { } const latestPost = PostStore.getLatestPost(channelId); + let latestPostTime = 0; + + if (latestPost != null && latestPost.update_at != null) { + latestPostTime = latestPost.update_at; + } callTracker['getPosts_' + channelId] = utils.getTimestamp(); client.getPosts( channelId, - latestPost.update_at, + latestPostTime, (data, textStatus, xhr) => { if (xhr.status === 304 || !data) { return; From c5b2e8832cfa10fd425f493ad3259f0fa547d6b5 Mon Sep 17 00:00:00 2001 From: JoramWilander Date: Thu, 11 Feb 2016 12:52:01 -0500 Subject: [PATCH 05/15] If we have less than CHUNK_SIZE posts, then get the first page --- web/react/utils/async_client.jsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/web/react/utils/async_client.jsx b/web/react/utils/async_client.jsx index 977fa8e7e2..dc8013a6bf 100644 --- a/web/react/utils/async_client.jsx +++ b/web/react/utils/async_client.jsx @@ -521,7 +521,9 @@ export function getPosts(id) { return; } - if ($.isEmptyObject(PostStore.getAllPosts(channelId))) { + const postList = PostStore.getAllPosts(channelId); + + if ($.isEmptyObject(postList) || postList.order.length < Constants.POST_CHUNK_SIZE) { getPostsPage(channelId, Constants.POST_CHUNK_SIZE); return; } From 8a7535d7fe11a7c8aee08dface4b51d454b7f4e4 Mon Sep 17 00:00:00 2001 From: =Corey Hulen Date: Thu, 11 Feb 2016 09:58:04 -0800 Subject: [PATCH 06/15] Fixing socket store loc --- web/react/components/channel_loader.jsx | 14 +++++++------- web/react/stores/socket_store.jsx | 14 ++++++++++++++ 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/web/react/components/channel_loader.jsx b/web/react/components/channel_loader.jsx index 174c8c4e15..2aa28d5c43 100644 --- a/web/react/components/channel_loader.jsx +++ b/web/react/components/channel_loader.jsx @@ -20,31 +20,31 @@ import {intlShape, injectIntl, defineMessages} from 'mm-intl'; const holders = defineMessages({ socketError: { id: 'channel_loader.socketError', - defaultMessage: 'Please check connection, Mattermost unreachable. If issue persists, ask administrator to check WebSocket port.' + defaultMessage: SocketStore.getDefaultTranslations().socketError }, someone: { id: 'channel_loader.someone', - defaultMessage: 'Someone' + defaultMessage: SocketStore.getDefaultTranslations().someone }, posted: { id: 'channel_loader.posted', - defaultMessage: 'Posted' + defaultMessage: SocketStore.getDefaultTranslations().posted }, uploadedImage: { id: 'channel_loader.uploadedImage', - defaultMessage: ' uploaded an image' + defaultMessage: SocketStore.getDefaultTranslations().uploadedImage }, uploadedFile: { id: 'channel_loader.uploadedFile', - defaultMessage: ' uploaded a file' + defaultMessage: SocketStore.getDefaultTranslations().uploadedFile }, something: { id: 'channel_loader.something', - defaultMessage: ' did something new' + defaultMessage: SocketStore.getDefaultTranslations().something }, wrote: { id: 'channel_loader.wrote', - defaultMessage: ' wrote: ' + defaultMessage: SocketStore.getDefaultTranslations().wrote } }); diff --git a/web/react/stores/socket_store.jsx b/web/react/stores/socket_store.jsx index e1b65fe14b..424c7fe57a 100644 --- a/web/react/stores/socket_store.jsx +++ b/web/react/stores/socket_store.jsx @@ -32,6 +32,8 @@ class SocketStoreClass extends EventEmitter { this.failCount = 0; + this.translations = this.getDefaultTranslations(); + this.initialize(); } @@ -174,6 +176,18 @@ class SocketStoreClass extends EventEmitter { this.translations = messages; } + getDefaultTranslations() { + return ({ + socketError: 'Please check connection, Mattermost unreachable. If issue persists, ask administrator to check WebSocket port.', + someone: 'Someone', + posted: 'Posted', + uploadedImage: ' uploaded an image', + uploadedFile: ' uploaded a file', + something: ' did something new', + wrote: ' wrote: ' + }); + } + close() { if (conn && conn.readyState === WebSocket.OPEN) { conn.close(); From 28703f29d43aaf5a81297534c5b392432f114460 Mon Sep 17 00:00:00 2001 From: Elias Nahum Date: Thu, 11 Feb 2016 15:02:27 -0300 Subject: [PATCH 07/15] Fixing intl console error on Outgoing webhook edit --- .../components/user_settings/manage_outgoing_hooks.jsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/web/react/components/user_settings/manage_outgoing_hooks.jsx b/web/react/components/user_settings/manage_outgoing_hooks.jsx index 3f88e9f419..44aab486ef 100644 --- a/web/react/components/user_settings/manage_outgoing_hooks.jsx +++ b/web/react/components/user_settings/manage_outgoing_hooks.jsx @@ -18,6 +18,10 @@ const holders = defineMessages({ callbackHolder: { id: 'user.settings.hooks_out.callbackHolder', defaultMessage: 'Each URL must start with http:// or https://' + }, + select: { + id: 'user.settings.hooks_out.select', + defaultMessage: '--- Select a channel ---' } }); @@ -153,10 +157,7 @@ class ManageOutgoingHooks extends React.Component { key='select-channel' value='' > - + {this.props.intl.formatMessage(holders.select)} ); From 3a1ec7dbd76ecad556cca0cee54f574bf813c1fd Mon Sep 17 00:00:00 2001 From: JoramWilander Date: Thu, 11 Feb 2016 13:17:59 -0500 Subject: [PATCH 08/15] Switch to using create_at for latest post --- web/react/utils/async_client.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/react/utils/async_client.jsx b/web/react/utils/async_client.jsx index dc8013a6bf..45cdf699f7 100644 --- a/web/react/utils/async_client.jsx +++ b/web/react/utils/async_client.jsx @@ -532,7 +532,7 @@ export function getPosts(id) { let latestPostTime = 0; if (latestPost != null && latestPost.update_at != null) { - latestPostTime = latestPost.update_at; + latestPostTime = latestPost.create_at; } callTracker['getPosts_' + channelId] = utils.getTimestamp(); From b35146e9b81fa6fd8934fe590c2a2854e6a5b1d5 Mon Sep 17 00:00:00 2001 From: JoramWilander Date: Thu, 11 Feb 2016 13:47:32 -0500 Subject: [PATCH 09/15] Fix localization error for team invites --- web/react/components/team_signup_email_item.jsx | 2 +- web/react/components/team_signup_send_invites_page.jsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/web/react/components/team_signup_email_item.jsx b/web/react/components/team_signup_email_item.jsx index feb70dc71c..790ec2e5d4 100644 --- a/web/react/components/team_signup_email_item.jsx +++ b/web/react/components/team_signup_email_item.jsx @@ -83,4 +83,4 @@ TeamSignupEmailItem.propTypes = { email: React.PropTypes.string }; -export default injectIntl(TeamSignupEmailItem); \ No newline at end of file +export default injectIntl(TeamSignupEmailItem, {withRef: true}); diff --git a/web/react/components/team_signup_send_invites_page.jsx b/web/react/components/team_signup_send_invites_page.jsx index 46a6bc68eb..343db13e86 100644 --- a/web/react/components/team_signup_send_invites_page.jsx +++ b/web/react/components/team_signup_send_invites_page.jsx @@ -33,8 +33,8 @@ export default class TeamSignupSendInvitesPage extends React.Component { var emails = []; for (var i = 0; i < this.props.state.invites.length; i++) { - if (this.refs['email_' + i].validate(this.props.state.team.email)) { - emails.push(this.refs['email_' + i].getValue()); + if (this.refs['email_' + i].getWrappedInstance().validate(this.props.state.team.email)) { + emails.push(this.refs['email_' + i].getWrappedInstance().getValue()); } else { valid = false; } From 32cca5c31ed31d47cfb43b42a0ec2679c11cd2c6 Mon Sep 17 00:00:00 2001 From: JoramWilander Date: Thu, 11 Feb 2016 14:06:11 -0500 Subject: [PATCH 10/15] Emit change after setting preferences in head.html --- web/templates/head.html | 1 + 1 file changed, 1 insertion(+) diff --git a/web/templates/head.html b/web/templates/head.html index da65e17796..94a86e3dda 100644 --- a/web/templates/head.html +++ b/web/templates/head.html @@ -79,6 +79,7 @@ $(function() { if (window.mm_preferences != null) { PreferenceStore.setPreferences(window.mm_preferences); + PreferenceStore.emitChange(); } }); From b0252c9aa91ff9382600cd0cb66b69530f080941 Mon Sep 17 00:00:00 2001 From: Elias Nahum Date: Thu, 11 Feb 2016 16:29:52 -0300 Subject: [PATCH 11/15] Fix duplicate am/pm on last password update --- .../components/user_settings/user_settings_security.jsx | 8 +++----- web/react/utils/utils.jsx | 4 ++++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/web/react/components/user_settings/user_settings_security.jsx b/web/react/components/user_settings/user_settings_security.jsx index 5693047c27..166f5ec45a 100644 --- a/web/react/components/user_settings/user_settings_security.jsx +++ b/web/react/components/user_settings/user_settings_security.jsx @@ -11,6 +11,7 @@ import TeamStore from '../../stores/team_store.jsx'; import * as Client from '../../utils/client.jsx'; import * as AsyncClient from '../../utils/async_client.jsx'; +import * as Utils from '../../utils/utils.jsx'; import Constants from '../../utils/constants.jsx'; import {intlShape, injectIntl, defineMessages, FormattedMessage} from 'mm-intl'; @@ -216,15 +217,12 @@ class SecurityTab extends React.Component { var describe; var d = new Date(this.props.user.last_password_update); - var timeOfDay = ' am'; - if (d.getHours() >= 12) { - timeOfDay = ' pm'; - } const locale = global.window.mm_locale; + const hours12 = !Utils.useMilitaryTime(); describe = formatMessage(holders.lastUpdated, { date: d.toLocaleDateString(locale, {month: 'short', day: '2-digit', year: 'numeric'}), - time: d.toLocaleTimeString(locale, {hours12: true, hour: '2-digit', minute: '2-digit'}) + timeOfDay + time: d.toLocaleTimeString(locale, {hour12: hours12, hour: '2-digit', minute: '2-digit'}) }); updateSectionStatus = function updateSection() { diff --git a/web/react/utils/utils.jsx b/web/react/utils/utils.jsx index e2a5b96209..9880f252ba 100644 --- a/web/react/utils/utils.jsx +++ b/web/react/utils/utils.jsx @@ -260,6 +260,10 @@ export function displayTimeFormatted(ticks) { ); } +export function useMilitaryTime() { + return PreferenceStore.getBool(Constants.Preferences.CATEGORY_DISPLAY_SETTINGS, 'use_military_time'); +} + export function displayDateTime(ticks) { var seconds = Math.floor((Date.now() - ticks) / 1000); From ae8c67365de589238066237c667f5132ced13087 Mon Sep 17 00:00:00 2001 From: Elias Nahum Date: Thu, 11 Feb 2016 16:46:46 -0300 Subject: [PATCH 12/15] eslint no-shadow resolved --- web/react/components/user_settings/user_settings_security.jsx | 2 +- web/react/utils/utils.jsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/web/react/components/user_settings/user_settings_security.jsx b/web/react/components/user_settings/user_settings_security.jsx index 166f5ec45a..53d79906fc 100644 --- a/web/react/components/user_settings/user_settings_security.jsx +++ b/web/react/components/user_settings/user_settings_security.jsx @@ -219,7 +219,7 @@ class SecurityTab extends React.Component { var d = new Date(this.props.user.last_password_update); const locale = global.window.mm_locale; - const hours12 = !Utils.useMilitaryTime(); + const hours12 = !Utils.isMilitaryTime(); describe = formatMessage(holders.lastUpdated, { date: d.toLocaleDateString(locale, {month: 'short', day: '2-digit', year: 'numeric'}), time: d.toLocaleTimeString(locale, {hour12: hours12, hour: '2-digit', minute: '2-digit'}) diff --git a/web/react/utils/utils.jsx b/web/react/utils/utils.jsx index 9880f252ba..7f124149df 100644 --- a/web/react/utils/utils.jsx +++ b/web/react/utils/utils.jsx @@ -260,7 +260,7 @@ export function displayTimeFormatted(ticks) { ); } -export function useMilitaryTime() { +export function isMilitaryTime() { return PreferenceStore.getBool(Constants.Preferences.CATEGORY_DISPLAY_SETTINGS, 'use_military_time'); } From 35e3b8c40fcec5516f888ed5ba578e3a94f49257 Mon Sep 17 00:00:00 2001 From: =Corey Hulen Date: Thu, 11 Feb 2016 13:17:27 -0800 Subject: [PATCH 13/15] Fixing IE expire issue --- api/admin.go | 1 - api/channel.go | 2 -- api/context.go | 4 ++++ api/post.go | 1 - api/team.go | 1 - api/user.go | 1 - 6 files changed, 4 insertions(+), 6 deletions(-) diff --git a/api/admin.go b/api/admin.go index 5a645dc975..d04991353d 100644 --- a/api/admin.go +++ b/api/admin.go @@ -121,7 +121,6 @@ func getConfig(c *Context, w http.ResponseWriter, r *http.Request) { json = cfg.ToJson() w.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate") - w.Header().Set("Expires", "0") w.Write([]byte(json)) } diff --git a/api/channel.go b/api/channel.go index ff5b0f8daa..e97e08fc05 100644 --- a/api/channel.go +++ b/api/channel.go @@ -729,7 +729,6 @@ func getChannel(c *Context, w http.ResponseWriter, r *http.Request) { return } else { w.Header().Set(model.HEADER_ETAG_SERVER, data.Etag()) - w.Header().Set("Expires", "-1") w.Write([]byte(data.ToJson())) } } @@ -798,7 +797,6 @@ func getChannelExtraInfo(c *Context, w http.ResponseWriter, r *http.Request) { data := model.ChannelExtra{Id: channel.Id, Members: extraMembers, MemberCount: memberCount} w.Header().Set(model.HEADER_ETAG_SERVER, extraEtag) - w.Header().Set("Expires", "-1") w.Write([]byte(data.ToJson())) } } diff --git a/api/context.go b/api/context.go index b91981ecd1..d0b4f85d2b 100644 --- a/api/context.go +++ b/api/context.go @@ -165,6 +165,10 @@ func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { } else { // All api response bodies will be JSON formatted by default w.Header().Set("Content-Type", "application/json") + + if r.Method == "GET" { + w.Header().Set("Expires", "0") + } } if len(token) != 0 { diff --git a/api/post.go b/api/post.go index fadabd66ee..9d3ba5ab10 100644 --- a/api/post.go +++ b/api/post.go @@ -1197,6 +1197,5 @@ func searchPosts(c *Context, w http.ResponseWriter, r *http.Request) { } w.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate") - w.Header().Set("Expires", "0") w.Write([]byte(posts.ToJson())) } diff --git a/api/team.go b/api/team.go index 6d59e94e91..052d6e6980 100644 --- a/api/team.go +++ b/api/team.go @@ -647,7 +647,6 @@ func getMyTeam(c *Context, w http.ResponseWriter, r *http.Request) { return } else { w.Header().Set(model.HEADER_ETAG_SERVER, result.Data.(*model.Team).Etag()) - w.Header().Set("Expires", "-1") w.Write([]byte(result.Data.(*model.Team).ToJson())) return } diff --git a/api/user.go b/api/user.go index db8de5f6aa..7919da1680 100644 --- a/api/user.go +++ b/api/user.go @@ -897,7 +897,6 @@ func getMe(c *Context, w http.ResponseWriter, r *http.Request) { } else { result.Data.(*model.User).Sanitize(map[string]bool{}) w.Header().Set(model.HEADER_ETAG_SERVER, result.Data.(*model.User).Etag()) - w.Header().Set("Expires", "-1") w.Write([]byte(result.Data.(*model.User).ToJson())) return } From 4419fe140dabd457cddf5f481c5b7c2aca152133 Mon Sep 17 00:00:00 2001 From: =Corey Hulen Date: Thu, 11 Feb 2016 13:24:56 -0800 Subject: [PATCH 14/15] Fixing so the loc tool can use these --- web/react/components/channel_loader.jsx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/web/react/components/channel_loader.jsx b/web/react/components/channel_loader.jsx index 2aa28d5c43..174c8c4e15 100644 --- a/web/react/components/channel_loader.jsx +++ b/web/react/components/channel_loader.jsx @@ -20,31 +20,31 @@ import {intlShape, injectIntl, defineMessages} from 'mm-intl'; const holders = defineMessages({ socketError: { id: 'channel_loader.socketError', - defaultMessage: SocketStore.getDefaultTranslations().socketError + defaultMessage: 'Please check connection, Mattermost unreachable. If issue persists, ask administrator to check WebSocket port.' }, someone: { id: 'channel_loader.someone', - defaultMessage: SocketStore.getDefaultTranslations().someone + defaultMessage: 'Someone' }, posted: { id: 'channel_loader.posted', - defaultMessage: SocketStore.getDefaultTranslations().posted + defaultMessage: 'Posted' }, uploadedImage: { id: 'channel_loader.uploadedImage', - defaultMessage: SocketStore.getDefaultTranslations().uploadedImage + defaultMessage: ' uploaded an image' }, uploadedFile: { id: 'channel_loader.uploadedFile', - defaultMessage: SocketStore.getDefaultTranslations().uploadedFile + defaultMessage: ' uploaded a file' }, something: { id: 'channel_loader.something', - defaultMessage: SocketStore.getDefaultTranslations().something + defaultMessage: ' did something new' }, wrote: { id: 'channel_loader.wrote', - defaultMessage: SocketStore.getDefaultTranslations().wrote + defaultMessage: ' wrote: ' } }); From 6cb4f82ee5a17cd1d32ae19c266b78c2cfd604e6 Mon Sep 17 00:00:00 2001 From: Christopher Speller Date: Fri, 12 Feb 2016 08:16:52 -0500 Subject: [PATCH 15/15] Updating dockerfile for v2.0.0-rc2 --- docker/2.0/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/2.0/Dockerfile b/docker/2.0/Dockerfile index 5cf3c66534..0f7a13e450 100644 --- a/docker/2.0/Dockerfile +++ b/docker/2.0/Dockerfile @@ -34,7 +34,7 @@ VOLUME /var/lib/mysql WORKDIR /mattermost # Copy over files -ADD https://github.com/mattermost/platform/releases/download/v2.0.0-rc1/mattermost.tar.gz / +ADD https://github.com/mattermost/platform/releases/download/v2.0.0-rc2/mattermost.tar.gz / RUN tar -zxvf /mattermost.tar.gz --strip-components=1 && rm /mattermost.tar.gz ADD config_docker.json / ADD docker-entry.sh /