diff options
author | Maxime Quandalle <maxime@quandalle.com> | 2015-06-01 17:56:00 +0200 |
---|---|---|
committer | Maxime Quandalle <maxime@quandalle.com> | 2015-06-03 06:46:41 +0200 |
commit | 7f6929608c6423505778722dd4cb7bf8e837729e (patch) | |
tree | 67b1cca95c23e79e939a579c651ecbe42e37c8dd | |
parent | 5f09c0ce406075bbd1ed9061f444e615375aa2d3 (diff) | |
download | wekan-7f6929608c6423505778722dd4cb7bf8e837729e.tar.gz wekan-7f6929608c6423505778722dd4cb7bf8e837729e.tar.bz2 wekan-7f6929608c6423505778722dd4cb7bf8e837729e.zip |
Work on the user account system
Allow a user to modifies its name, username, initials, and password.
Fixes username handling on sandstorm.
Fixes #149.
34 files changed, 262 insertions, 171 deletions
diff --git a/client/components/boards/boardBody.styl b/client/components/boards/boardBody.styl index 70d8f3d6..281199e2 100644 --- a/client/components/boards/boardBody.styl +++ b/client/components/boards/boardBody.styl @@ -21,6 +21,7 @@ &.is-dragging-active + .list-composer, .open-minicard-composer display: none diff --git a/client/components/lists/main.styl b/client/components/lists/main.styl index 2ff2ef5f..98b4abf4 100644 --- a/client/components/lists/main.styl +++ b/client/components/lists/main.styl @@ -103,25 +103,22 @@ .ps-scrollbar-y-rail transform: translateX(2px) -.open-minicard-composer - border-radius: 2px - color: #8c8c8c - display: block - padding: 7px 10px - position: relative - text-decoration: none - animation: fadeIn 0.3s - - i.fa - margin-right: 7px - - &:hover - background: white - color: #222 - box-shadow: 0 1px 2px rgba(0,0,0,.2) - - &::selection - background: transparent + .open-minicard-composer + border-radius: 2px + color: #8c8c8c + display: block + padding: 7px 10px + position: relative + text-decoration: none + animation: fadeIn 0.3s + + i.fa + margin-right: 7px + + &:hover + background: #fafafa + color: #222 + box-shadow: 0 1px 2px rgba(0,0,0,.2) @keyframes fadeIn from diff --git a/client/components/main/header.styl b/client/components/main/header.styl index 8e1682eb..e6f13239 100644 --- a/client/components/main/header.styl +++ b/client/components/main/header.styl @@ -47,12 +47,14 @@ #header-user-bar margin: 2px 0 - .member - width: 24px - height: @width + .header-user-bar-avatar float: left - margin: 0 - margin-top: 1px + + .member + width: 24px + height: @width + margin: 0 + margin-top: 1px .header-user-bar-name margin: 4px 8px 0 0 diff --git a/client/components/main/layouts.jade b/client/components/main/layouts.jade index 18df4d9e..d1ea36b5 100644 --- a/client/components/main/layouts.jade +++ b/client/components/main/layouts.jade @@ -5,9 +5,10 @@ head link(rel="shortcut icon" href="/favicon.png") template(name="userFormsLayout") - h1.at-form-landing-logo - img(src="/logo.png" title="LibreBoard") - +yield + section.auth-layout + h1.at-form-landing-logo + img(src="/logo.png" title="LibreBoard") + +yield template(name="defaultLayout") #surface diff --git a/client/components/main/popup.js b/client/components/main/popup.js index 48847525..8672d08a 100644 --- a/client/components/main/popup.js +++ b/client/components/main/popup.js @@ -31,6 +31,19 @@ Popup.template.events({ }, 'click .js-confirm': function() { this.__afterConfirmAction.call(this); + }, + // This handler intends to solve a pretty tricky bug with our popup + // transition. The transition is implemented using a large container + // (.content-container) that is moved on the x-axis (from 0 to n*PopupSize) + // inside a wrapper (.container-wrapper) with a hidden overflow. The problem + // is that sometimes the wrapper is scrolled -- even if there are no + // scrollbars. This happen for instance when the newly opened popup has some + // focused field, the browser will automatically scroll the wrapper, resulting + // in moving the whole popup container outside of the popup wrapper. To + // disable this behavior we have to manually reset the scrollLeft position + // whenever it is modified. + 'scroll .content-wrapper': function(evt) { + evt.currentTarget.scrollLeft = 0; } }); diff --git a/client/components/main/popup.styl b/client/components/main/popup.styl index cf1fd46e..43b0dae7 100644 --- a/client/components/main/popup.styl +++ b/client/components/main/popup.styl @@ -6,8 +6,6 @@ border: 1px solid #dbdbdb border-bottom-color: #c2c2c2 box-shadow: 0 1px 6px rgba(0, 0, 0, .3) - display: none - overflow: hidden position: absolute width: 300px z-index: 99999 @@ -20,12 +18,10 @@ input[type="text"], input[type="email"], input[type="password"] + input[type="file"] margin: 4px 0 12px width: 100% - input[type="file"] - width: 240px - select width: 100% margin-bottom: 14px @@ -35,9 +31,6 @@ margin: 4px 0 12px width: 100% - img - max-width: 270px - .header height: 36px position: relative @@ -80,6 +73,7 @@ .content-wrapper width: 100% + overflow: hidden .content-container width: 5000px @@ -92,7 +86,7 @@ float: left &.no-height - height: 0 + height: 20px .quiet padding: 6px 6px 4px @@ -113,6 +107,17 @@ height: 4px width: 4px + .at-form + .at-error, .at-result + padding: 8px 12px + margin: -8px -10px 10px + + .at-error + background: #ef9a9a + + .at-result + background: #b2dfdb + .select-members-list margin-bottom: 8px diff --git a/client/components/main/popup.tpl.jade b/client/components/main/popup.tpl.jade index dade8449..be528f46 100644 --- a/client/components/main/popup.tpl.jade +++ b/client/components/main/popup.tpl.jade @@ -1,8 +1,8 @@ -.pop-over.clearfix( +.pop-over( class="{{#unless title}}miniprofile{{/unless}}" class=currentBoard.colorClass class="{{#unless title}}no-title{{/unless}}" - style="display:block; left:{{offset.left}}px; top:{{offset.top}}px;") + style="left:{{offset.left}}px; top:{{offset.top}}px;") .header a.back-btn.js-back-view(class="{{#unless hasPopupParent}}is-hidden{{/unless}}") i.fa.fa-chevron-left @@ -20,3 +20,4 @@ Hopefully the @last helper will come soon (or at least @index) .content(class="{{#unless $eq popupName ../popupName}}no-height{{/unless}}") +Template.dynamic(template=popupName data=dataContext) + .clearfix diff --git a/client/components/main/templates.html b/client/components/main/templates.html index 4828663a..c252f1e4 100644 --- a/client/components/main/templates.html +++ b/client/components/main/templates.html @@ -5,7 +5,7 @@ <template name='message'> <div class="big-message quiet {{ color }}"> <h1>{{_ label}}</h1> - {{#with pathFor route='Login'}} + {{#with pathFor route='atSignIn'}} <p>{{{_ 'page-maybe-private' this}}}</p> {{/with}} </div> diff --git a/client/components/sidebar/sidebarFilters.js b/client/components/sidebar/sidebarFilters.js index df0db529..42b6e185 100644 --- a/client/components/sidebar/sidebarFilters.js +++ b/client/components/sidebar/sidebarFilters.js @@ -6,12 +6,12 @@ BlazeComponent.extendComponent({ events: function() { return [{ 'click .js-toggle-label-filter': function(event) { - Filter.labelIds.toogle(this._id); + Filter.labelIds.toogle(this.currentData()._id); Filter.resetExceptions(); event.preventDefault(); }, 'click .js-toogle-member-filter': function(event) { - Filter.members.toogle(this._id); + Filter.members.toogle(this.currentData()._id); Filter.resetExceptions(); event.preventDefault(); }, diff --git a/client/components/users/router.js b/client/components/users/router.js index 6c4ab3b6..6c3b3429 100644 --- a/client/components/users/router.js +++ b/client/components/users/router.js @@ -1,5 +1,5 @@ -_.each(['signIn', 'signUp', 'resetPwd', - 'forgotPwd', 'enrollAccount', 'changePwd'], function(routeName) { +_.each(['signIn', 'signUp', 'resetPwd', 'forgotPwd', 'enrollAccount'], + function(routeName) { AccountsTemplates.configureRoute(routeName, { layoutTemplate: 'userFormsLayout' }); @@ -20,9 +20,3 @@ Router.route('/profile/:username', { }; } }); - -Router.route('/settings', { - name: 'Settings', - template: 'settings', - layoutTemplate: 'AuthLayout' -}); diff --git a/client/components/users/userForm.styl b/client/components/users/userForm.styl index 5ecef7aa..2117bfcb 100644 --- a/client/components/users/userForm.styl +++ b/client/components/users/userForm.styl @@ -1,49 +1,50 @@ -.at-form-landing-logo - width: 275px - margin: auto - margin-top: 50px - margin-top: 17vh - - img +.auth-layout + .at-form-landing-logo width: 275px + margin: auto + margin-top: 50px + margin-top: 17vh + + img + width: 275px -.at-form - margin: auto - width: 275px - padding: 25px - margin-top: 20px - padding-bottom: 10px - background: #fff - border-radius: 3px - border: 1px solid #dbdbdb - border-bottom-color: #c2c2c2 - box-shadow: 0 1px 6px rgba(0, 0, 0, .3) - - .at-link - color: darken(#27AE60, 40%) - - label - margin-bottom: 3px - - input - width: 100% - - .at-title - background: #F7F7F7 - margin: -25px - padding: 15px 25px 5px - margin-bottom: 20px - border-bottom: 1px solid #dcdcdc - color: darken(white, 70%) - font-weight: bold - - .at-signup-link, - .at-signin-link, - .at-forgotPwd - font-size: 0.9em - margin-top: 15px - color: darken(white, 70%) - - .at-signUp, - .at-signIn + .at-form + margin: auto + width: 275px + padding: 25px + margin-top: 20px + padding-bottom: 10px + background: #fff + border-radius: 3px + border: 1px solid #dbdbdb + border-bottom-color: #c2c2c2 + box-shadow: 0 1px 6px rgba(0, 0, 0, .3) + + .at-link + color: darken(#27AE60, 40%) + + label + margin-bottom: 3px + + input + width: 100% + + .at-title + background: #F7F7F7 + margin: -25px + padding: 15px 25px 5px + margin-bottom: 20px + border-bottom: 1px solid #dcdcdc + color: darken(white, 70%) font-weight: bold + + .at-signup-link, + .at-signin-link, + .at-forgotPwd + font-size: 0.9em + margin-top: 15px + color: darken(white, 70%) + + .at-signUp, + .at-signIn + font-weight: bold diff --git a/client/components/users/userHeader.jade b/client/components/users/userHeader.jade index eb3d265c..b8201cb6 100644 --- a/client/components/users/userHeader.jade +++ b/client/components/users/userHeader.jade @@ -1,23 +1,44 @@ template(name="headerUserBar") - a#header-user-bar.js-open-header-member-menu - .header-user-bar-name + a#header-user-bar + .header-user-bar-name.js-open-header-member-menu i.fa.fa-chevron-down if currentUser.profile.name = currentUser.profile.name else = currentUser.username - +userAvatar(user=currentUser) + .header-user-bar-avatar.js-change-avatar + +userAvatar(user=currentUser) template(name="memberMenuPopup") ul.pop-over-list - li: a(href="{{pathFor route='Profile' username=currentUser.username}}") {{_ 'profile'}} - li: a.js-language {{_ 'language'}} - li: a(href = "{{pathFor route='Settings'}}") {{_ 'settings'}} + with currentUser + li: a.js-edit-profile Edit Profile… + li: a.js-change-avatar Change Avatar… + li: a.js-change-password Change Password… + li: a.js-change-language Change Language… hr ul.pop-over-list li: a.js-logout {{_ 'log-out'}} -template(name="setLanguagePopup") +template(name="editProfilePopup") + form + label + | {{_ "fullname"}} + input.js-profile-fullname(type="text" value=profile.name autofocus) + label + | {{_ "username"}} + input.js-profile-username(type="text" value=username) + label + | Initials + input.js-profile-initials(type="text" value=profile.initials) + input.primary.wide(type="submit" value="{{_ 'save'}}") + +template(name="changeAvatarPopup") + +template(name="changePasswordPopup") + +atForm(state='changePwd') + +template(name="changeLanguagePopup") ul.pop-over-list each languages li(class="{{# if isCurrentLanguage}}active{{/if}}") diff --git a/client/components/users/userHeader.js b/client/components/users/userHeader.js index 3bb9e623..234bf9e3 100644 --- a/client/components/users/userHeader.js +++ b/client/components/users/userHeader.js @@ -1,8 +1,64 @@ Template.headerUserBar.events({ - 'click .js-open-header-member-menu': Popup.open('memberMenu') + 'click .js-open-header-member-menu': Popup.open('memberMenu'), + 'click .js-change-avatar': Popup.open('changeAvatar') }); -Template.setLanguagePopup.helpers({ +Template.memberMenuPopup.events({ + 'click .js-edit-profile': Popup.open('editProfile'), + 'click .js-change-avatar': Popup.open('changeAvatar'), + 'click .js-change-password': Popup.open('changePassword'), + 'click .js-change-language': Popup.open('changeLanguage'), + 'click .js-logout': function(evt) { + evt.preventDefault(); + + AccountsTemplates.logout(); + } +}); + +Template.editProfilePopup.events({ + submit: function(evt, tpl) { + evt.preventDefault(); + var fullname = $.trim(tpl.find('.js-profile-fullname').value); + var username = $.trim(tpl.find('.js-profile-username').value); + var initials = $.trim(tpl.find('.js-profile-initials').value); + Users.update(Meteor.userId(), {$set: { + 'profile.fullname': fullname, + 'profile.initials': initials + }}); + // XXX We should report the error to the user. + if (username !== Meteor.user().username) { + Meteor.call('setUsername', username); + } + Popup.back(); + } +}); + +// We display the form to change the password in a popup window that already +// have a title, so we unset the title automatically displayed by useraccounts. +AccountsTemplates.configure({ + texts: { + title: { + changePwd: '' + } + } +}); + +AccountsTemplates.configureRoute('changePwd', { + redirect: function() { + // XXX We should emit a notification once we have a notification system. + // Currently the user has no indication that his modification has been + // applied. + Popup.back(); + } +}); + +// XXX For some reason the useraccounts autofocus isnt working in this case. +// See https://github.com/meteor-useraccounts/core/issues/384 +Template.changePasswordPopup.onRendered(function() { + this.find('#at-field-current_password').focus(); +}); + +Template.changeLanguagePopup.helpers({ languages: function() { return _.map(TAPi18n.getLanguages(), function(lang, tag) { return { @@ -16,18 +72,7 @@ Template.setLanguagePopup.helpers({ } }); -Template.memberMenuPopup.events({ - 'click .js-language': Popup.open('setLanguage'), - 'click .js-logout': function(evt) { - evt.preventDefault(); - - Meteor.logout(function() { - Router.go('Home'); - }); - } -}); - -Template.setLanguagePopup.events({ +Template.changeLanguagePopup.events({ 'click .js-set-language': function(evt) { Users.update(Meteor.userId(), { $set: { diff --git a/client/config/accounts.js b/client/config/accounts.js index 9e0d17d3..5e6edd39 100644 --- a/client/config/accounts.js +++ b/client/config/accounts.js @@ -1,35 +1,19 @@ +var passwordField = AccountsTemplates.removeField('password'); +var emailField = AccountsTemplates.removeField('email'); +AccountsTemplates.addFields([{ + _id: 'username', + type: 'text', + displayName: 'username', + required: true, + minLength: 5 +}, emailField, passwordField]); + AccountsTemplates.configure({ confirmPassword: false, enablePasswordChange: true, sendVerificationEmail: true, - showForgotPasswordLink: true -}); - -AccountsTemplates.removeField('password'); -AccountsTemplates.removeField('email'); -AccountsTemplates.addFields([ - { - _id: 'username', - type: 'text', - displayName: 'username', - required: true, - minLength: 5 - }, - { - _id: 'email', - type: 'email', - required: true, - displayName: 'email', - re: /.+@(.+){2,}\.(.+){2,}/, - errStr: 'Invalid email' - }, - { - _id: 'password', - type: 'password', - placeholder: { - signUp: 'At least six characters' - }, - required: true, - minLength: 6 + showForgotPasswordLink: true, + onLogoutHook: function() { + Router.go('Home'); } -]); +}); diff --git a/client/lib/popup.js b/client/lib/popup.js index 46c137e8..6ec7dfdb 100644 --- a/client/lib/popup.js +++ b/client/lib/popup.js @@ -202,9 +202,9 @@ $(document).on('click', function(evt) { } }); -// Press escape to close the popup. +// Press escape to go back, or close the popup. var bindPopup = function(f) { return _.bind(f, Popup); }; EscapeActions.register('popup', - bindPopup(Popup.close), + bindPopup(Popup.back), bindPopup(Popup.isOpen) ); diff --git a/client/styles/icons.styl b/client/styles/icons.styl index 4de0da2b..8635375a 100644 --- a/client/styles/icons.styl +++ b/client/styles/icons.styl @@ -21,8 +21,10 @@ &:hover color: white -a.fa, a i.fa - color: darken(white, 35%) +a + &.fa, i.fa + color: darken(white, 35%) &:hover - color: darken(white, 60%) + &.fa, i.fa + color: darken(white, 60%) diff --git a/collections/users.js b/collections/users.js index 2f44e19e..8d1c0d58 100644 --- a/collections/users.js +++ b/collections/users.js @@ -41,11 +41,35 @@ Users.helpers({ } }); +Meteor.methods({ + setUsername: function(username) { + var nUsersWithUsername = Users.find({username: username}).count(); + if (nUsersWithUsername > 0) { + throw new Meteor.Error('username-already-taken'); + } else { + Users.update(this.userId, {$set: { + username: username + }}); + } + } +}); + Users.before.insert(function(userId, doc) { doc.profile = doc.profile || {}; + + if (! doc.username && doc.profile.name) { + doc.username = doc.profile.name.toLowerCase().replace(/\s/g, ''); + } }); if (Meteor.isServer) { + // Let mongoDB ensure username unicity + Meteor.startup(function() { + Users._collection._ensureIndex({ + username: 1 + }, { unique: true }); + }); + // Each board document contains the de-normalized number of users that have // starred it. If the user star or unstar a board, we need to update this // counter. diff --git a/i18n/ar.i18n.json b/i18n/ar.i18n.json index 062a4828..36df959b 100644 --- a/i18n/ar.i18n.json +++ b/i18n/ar.i18n.json @@ -169,7 +169,7 @@ "createLabelPopup-title": "Create Label", "deleteLabelPopup-title": "Delete Label?", "changePermissionsPopup-title": "Change Permissions", - "setLanguagePopup-title": "Change Language", + "changeLanguagePopup-title": "Change Language", "cardAttachmentsPopup-title": "Attach From…", "attachmentDeletePopup-title": "Delete Attachment?" } diff --git a/i18n/br.i18n.json b/i18n/br.i18n.json index 18db5ef4..cb2ab531 100644 --- a/i18n/br.i18n.json +++ b/i18n/br.i18n.json @@ -169,7 +169,7 @@ "createLabelPopup-title": "Criar Etiqueta", "deleteLabelPopup-title": "Excluir Etiqueta?", "changePermissionsPopup-title": "Alterar Permissões", - "setLanguagePopup-title": "Alterar Idioma", + "changeLanguagePopup-title": "Alterar Idioma", "cardAttachmentsPopup-title": "Anexar de…", "attachmentDeletePopup-title": "Excluir Anexo?" } diff --git a/i18n/cm.i18n.json b/i18n/cm.i18n.json index 162f287b..4bef035a 100644 --- a/i18n/cm.i18n.json +++ b/i18n/cm.i18n.json @@ -169,7 +169,7 @@ "createLabelPopup-title": "Create Label", "deleteLabelPopup-title": "Delete Label?", "changePermissionsPopup-title": "Change Permissions", - "setLanguagePopup-title": "Change Language", + "changeLanguagePopup-title": "Change Language", "cardAttachmentsPopup-title": "Attach From…", "attachmentDeletePopup-title": "Delete Attachment?" } diff --git a/i18n/cn.i18n.json b/i18n/cn.i18n.json index b869adf7..36817b2d 100644 --- a/i18n/cn.i18n.json +++ b/i18n/cn.i18n.json @@ -169,7 +169,7 @@ "createLabelPopup-title": "创建标签", "deleteLabelPopup-title": "删除标签?", "changePermissionsPopup-title": "更改权限", - "setLanguagePopup-title": "更改语言", + "changeLanguagePopup-title": "更改语言", "cardAttachmentsPopup-title": "附加自...", "attachmentDeletePopup-title": "删除附件?" } diff --git a/i18n/cs.i18n.json b/i18n/cs.i18n.json index 6aa10181..1943ac6e 100644 --- a/i18n/cs.i18n.json +++ b/i18n/cs.i18n.json @@ -169,7 +169,7 @@ "createLabelPopup-title": "Create Label", "deleteLabelPopup-title": "Delete Label?", "changePermissionsPopup-title": "Change Permissions", - "setLanguagePopup-title": "Change Language", + "changeLanguagePopup-title": "Change Language", "cardAttachmentsPopup-title": "Attach From…", "attachmentDeletePopup-title": "Delete Attachment?" } diff --git a/i18n/de.i18n.json b/i18n/de.i18n.json index ec775ccd..6eaf7089 100644 --- a/i18n/de.i18n.json +++ b/i18n/de.i18n.json @@ -169,7 +169,7 @@ "createLabelPopup-title": "Label erstellen", "deleteLabelPopup-title": "Entferne Label?", "changePermissionsPopup-title": "Ändere Erlaubnisse", - "setLanguagePopup-title": "Ändere Sprache", + "changeLanguagePopup-title": "Ändere Sprache", "cardAttachmentsPopup-title": "Attach From…", "attachmentDeletePopup-title": "Delete Attachment?" } diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index 60063ea8..4733eca6 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -181,8 +181,12 @@ "createLabelPopup-title": "Create Label", "deleteLabelPopup-title": "Delete Label?", "changePermissionsPopup-title": "Change Permissions", - "setLanguagePopup-title": "Change Language", + "changeLanguagePopup-title": "Change Language", "cardAttachmentsPopup-title": "Attach From…", "attachmentDeletePopup-title": "Delete Attachment?", + "memberMenuPopup-title": "Member Settings", + "editProfilePopup-title": "Edit Profile", + "changeAvatarPopup-title": "Change Avatar", + "changePasswordPopup-title": "Change Password", "disambiguateMultiLabelPopup-title": "Disambiguate Label Action" } diff --git a/i18n/es.i18n.json b/i18n/es.i18n.json index cb4ab5c5..f0e465f0 100644 --- a/i18n/es.i18n.json +++ b/i18n/es.i18n.json @@ -169,7 +169,7 @@ "createLabelPopup-title": "Crear etiqueta", "deleteLabelPopup-title": "Borrar etiqueta", "changePermissionsPopup-title": "Cambiar permisos", - "setLanguagePopup-title": "Cambiar idioma", + "changeLanguagePopup-title": "Cambiar idioma", "cardAttachmentsPopup-title": "Adjuntar de...", "attachmentDeletePopup-title": "¿Borrar adjunto?" } diff --git a/i18n/fi.i18n.json b/i18n/fi.i18n.json index 4335eef2..2643d7ee 100644 --- a/i18n/fi.i18n.json +++ b/i18n/fi.i18n.json @@ -169,7 +169,7 @@ "createLabelPopup-title": "Luo tunniste", "deleteLabelPopup-title": "Poista tunniste?", "changePermissionsPopup-title": "Vaihda oikeuksia", - "setLanguagePopup-title": "Vaihda kieltä", + "changeLanguagePopup-title": "Vaihda kieltä", "cardAttachmentsPopup-title": "Liitä mistä...", "attachmentDeletePopup-title": "Poista liitetiedosto?" } diff --git a/i18n/fr.i18n.json b/i18n/fr.i18n.json index 48ce3a88..42072682 100644 --- a/i18n/fr.i18n.json +++ b/i18n/fr.i18n.json @@ -169,7 +169,7 @@ "createLabelPopup-title": "Créer un étiquette", "deleteLabelPopup-title": "Supprimer l'étiquette ?", "changePermissionsPopup-title": "Changer les permissions", - "setLanguagePopup-title": "Changer la langue", + "changeLanguagePopup-title": "Changer la langue", "cardAttachmentsPopup-title": "Joindre depuis…", "attachmentDeletePopup-title": "Supprimer la pièce jointe ?" } diff --git a/i18n/hk.i18n.json b/i18n/hk.i18n.json index 22e700a9..e79f152b 100644 --- a/i18n/hk.i18n.json +++ b/i18n/hk.i18n.json @@ -169,7 +169,7 @@ "createLabelPopup-title": "Create Label", "deleteLabelPopup-title": "Delete Label?", "changePermissionsPopup-title": "Change Permissions", - "setLanguagePopup-title": "Change Language", + "changeLanguagePopup-title": "Change Language", "cardAttachmentsPopup-title": "Attach From…", "attachmentDeletePopup-title": "Delete Attachment?" } diff --git a/i18n/id.i18n.json b/i18n/id.i18n.json index 22e700a9..e79f152b 100644 --- a/i18n/id.i18n.json +++ b/i18n/id.i18n.json @@ -169,7 +169,7 @@ "createLabelPopup-title": "Create Label", "deleteLabelPopup-title": "Delete Label?", "changePermissionsPopup-title": "Change Permissions", - "setLanguagePopup-title": "Change Language", + "changeLanguagePopup-title": "Change Language", "cardAttachmentsPopup-title": "Attach From…", "attachmentDeletePopup-title": "Delete Attachment?" } diff --git a/i18n/ja.i18n.json b/i18n/ja.i18n.json index 49e66e8a..dad05450 100644 --- a/i18n/ja.i18n.json +++ b/i18n/ja.i18n.json @@ -169,7 +169,7 @@ "createLabelPopup-title": "ラベルの作成", "deleteLabelPopup-title": "ラベルを削除しますか?", "changePermissionsPopup-title": "パーミッションの変更", - "setLanguagePopup-title": "言語の変更", + "changeLanguagePopup-title": "言語の変更", "cardAttachmentsPopup-title": "Attach From…", "attachmentDeletePopup-title": "Delete Attachment?" } diff --git a/i18n/ko.i18n.json b/i18n/ko.i18n.json index 1712abfc..fbf3c621 100644 --- a/i18n/ko.i18n.json +++ b/i18n/ko.i18n.json @@ -169,7 +169,7 @@ "createLabelPopup-title": "라벨 생성", "deleteLabelPopup-title": "라벨을 삭제합니까?", "changePermissionsPopup-title": "권한 변경", - "setLanguagePopup-title": "언어 변경", + "changeLanguagePopup-title": "언어 변경", "cardAttachmentsPopup-title": "첨부할 위치...", "attachmentDeletePopup-title": "첨부 파일을 삭제합니까?" } diff --git a/i18n/ru.i18n.json b/i18n/ru.i18n.json index 87ffd4bc..7139323e 100644 --- a/i18n/ru.i18n.json +++ b/i18n/ru.i18n.json @@ -169,7 +169,7 @@ "createLabelPopup-title": "Создать метку", "deleteLabelPopup-title": "Удалить метку?", "changePermissionsPopup-title": "Изменить настройки доступа", - "setLanguagePopup-title": "Сменить язык", + "changeLanguagePopup-title": "Сменить язык", "cardAttachmentsPopup-title": "Источник", "attachmentDeletePopup-title": "Удалить вложение?" } diff --git a/i18n/tr.i18n.json b/i18n/tr.i18n.json index 75736a1a..117ead57 100644 --- a/i18n/tr.i18n.json +++ b/i18n/tr.i18n.json @@ -169,7 +169,7 @@ "createLabelPopup-title": "Etiket Oluşturma", "deleteLabelPopup-title": "Etiket Silinsin mi?", "changePermissionsPopup-title": "Yetkileri Değiştirme", - "setLanguagePopup-title": "Dil Değiştir", + "changeLanguagePopup-title": "Dil Değiştir", "cardAttachmentsPopup-title": "Şuradan Ekle...", "attachmentDeletePopup-title": "Ek Dosya Silinsin Mi?" } diff --git a/sandstorm.js b/sandstorm.js index 46b92741..b2b4d88b 100644 --- a/sandstorm.js +++ b/sandstorm.js @@ -88,10 +88,6 @@ if (isSandstorm && Meteor.isServer) { } }); } - - // The sandstom user package put the username in `profile.name`. We need to - // move this field value to follow our schema. - Users.update(doc._id, { $rename: { 'profile.name': 'username' }}); }); } |