diff options
author | Lauri Ojansivu <x@xet7.org> | 2017-08-09 15:14:11 +0300 |
---|---|---|
committer | Lauri Ojansivu <x@xet7.org> | 2017-08-09 15:14:11 +0300 |
commit | 719c5404f3c1a4116115f27bd5726e9e1620b0d4 (patch) | |
tree | c224561469cba89e9dd02d431f9a8079860e17da | |
parent | 57219df16afbc0c512e15ed9801308591b41d318 (diff) | |
parent | cb4f3ce52ca024d8223b85f47a010ab5383b190a (diff) | |
download | wekan-719c5404f3c1a4116115f27bd5726e9e1620b0d4.tar.gz wekan-719c5404f3c1a4116115f27bd5726e9e1620b0d4.tar.bz2 wekan-719c5404f3c1a4116115f27bd5726e9e1620b0d4.zip |
Merge branch 'nztqa-improve-account' into devel
Change Email address. Thanks to nztqa ! Closes #848
44 files changed, 442 insertions, 122 deletions
diff --git a/.eslintrc.json b/.eslintrc.json index c1ee03b8..51b2037f 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -129,6 +129,7 @@ "JsonRoutes": true, "Authentication": true, "Integrations": true, - "HTTP": true + "HTTP": true, + "AccountSettings": true } } diff --git a/CHANGELOG.md b/CHANGELOG.md index dc9663fe..12aed4de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,8 @@ This release adds the following new features: * [Add Bounties and Commercial Support to wiki](https://github.com/wekan/wekan/wiki); * [Add display Wekan version number and runtime - environment to Admin Panel](https://github.com/wekan/wekan/pull/1156). + environment to Admin Panel](https://github.com/wekan/wekan/pull/1156); +* [Change Email address](https://github.com/wekan/wekan/pull/1161). Thanks to GitHub users nztqa and xet7 for their contributions. diff --git a/client/components/settings/settingBody.jade b/client/components/settings/settingBody.jade index 1c6e3b7f..5864efd5 100644 --- a/client/components/settings/settingBody.jade +++ b/client/components/settings/settingBody.jade @@ -12,6 +12,8 @@ template(name="setting") a.js-setting-menu(data-id="registration-setting") {{_ 'registration'}} li a.js-setting-menu(data-id="email-setting") {{_ 'email'}} + li + a.js-setting-menu(data-id="account-setting") {{_ 'accounts'}} .main-body if loading.get +spinner @@ -19,6 +21,8 @@ template(name="setting") +general else if emailSetting.get +email + else if accountSetting.get + +accountSettings template(name="general") ul#registration-setting.setting-detail @@ -80,3 +84,15 @@ template(name='email') li button.js-save.primary {{_ 'save'}} + +template(name='accountSettings') + ul#account-setting.setting-detail + li.smtp-form + .title {{_ 'accounts-allowEmailChange'}} + .form-group.flex + input.form-control#accounts-allowEmailChange(type="radio" name="allowEmailChange" value="true" checked="{{#if allowEmailChange}}checked{{/if}}") + span {{_ 'yes'}} + input.form-control#accounts-allowEmailChange(type="radio" name="allowEmailChange" value="false" checked="{{#unless allowEmailChange}}checked{{/unless}}") + span {{_ 'no'}} + li + button.js-accounts-save.primary {{_ 'save'}} diff --git a/client/components/settings/settingBody.js b/client/components/settings/settingBody.js index f96312a5..a2993426 100644 --- a/client/components/settings/settingBody.js +++ b/client/components/settings/settingBody.js @@ -1,5 +1,6 @@ Meteor.subscribe('setting'); Meteor.subscribe('mailServer'); +Meteor.subscribe('accountSettings'); BlazeComponent.extendComponent({ onCreated() { @@ -7,6 +8,7 @@ BlazeComponent.extendComponent({ this.loading = new ReactiveVar(false); this.generalSetting = new ReactiveVar(true); this.emailSetting = new ReactiveVar(false); + this.accountSetting = new ReactiveVar(false); }, setError(error) { @@ -62,6 +64,7 @@ BlazeComponent.extendComponent({ const targetID = target.data('id'); this.generalSetting.set('registration-setting' === targetID); this.emailSetting.set('email-setting' === targetID); + this.accountSetting.set('account-setting' === targetID); } }, @@ -130,3 +133,22 @@ BlazeComponent.extendComponent({ }]; }, }).register('setting'); + +BlazeComponent.extendComponent({ + saveAllowEmailChange() { + const allowEmailChange = ($('input[name=allowEmailChange]:checked').val() === 'true'); + AccountSettings.update('accounts-allowEmailChange', { + $set: { 'booleanValue': allowEmailChange }, + }); + }, + + allowEmailChange() { + return AccountSettings.findOne('accounts-allowEmailChange').booleanValue; + }, + + events() { + return [{ + 'click button.js-accounts-save': this.saveAllowEmailChange, + }]; + }, +}).register('accountSettings'); diff --git a/client/components/users/userHeader.jade b/client/components/users/userHeader.jade index 84ef5a09..f67f82ee 100644 --- a/client/components/users/userHeader.jade +++ b/client/components/users/userHeader.jade @@ -36,6 +36,14 @@ template(name="editProfilePopup") label | {{_ 'initials'}} input.js-profile-initials(type="text" value=profile.initials) + label + | {{_ 'email'}} + span.error.hide.email-taken + | {{_ 'error-email-taken'}} + if allowEmailChange + input.js-profile-email(type="email" value="{{emails.[0].address}}") + else + input.js-profile-email(type="email" value="{{emails.[0].address}}" readonly) input.primary.wide(type="submit" value="{{_ 'save'}}") template(name="editNotificationPopup") diff --git a/client/components/users/userHeader.js b/client/components/users/userHeader.js index 0580092e..90205ee1 100644 --- a/client/components/users/userHeader.js +++ b/client/components/users/userHeader.js @@ -20,18 +20,47 @@ Template.memberMenuPopup.events({ }, }); +Template.editProfilePopup.helpers({ + allowEmailChange() { + return AccountSettings.findOne('accounts-allowEmailChange').booleanValue; + }, +}); + Template.editProfilePopup.events({ submit(evt, tpl) { evt.preventDefault(); const fullname = tpl.find('.js-profile-fullname').value.trim(); const username = tpl.find('.js-profile-username').value.trim(); const initials = tpl.find('.js-profile-initials').value.trim(); + const email = tpl.find('.js-profile-email').value.trim(); + let isChangeUserName = false; + let isChangeEmail = false; Users.update(Meteor.userId(), {$set: { 'profile.fullname': fullname, 'profile.initials': initials, }}); - - if (username !== Meteor.user().username) { + isChangeUserName = username !== Meteor.user().username; + isChangeEmail = email.toLowerCase() !== Meteor.user().emails[0].address.toLowerCase(); + if (isChangeUserName && isChangeEmail) { + Meteor.call('setUsernameAndEmail', username, email.toLowerCase(), function(error) { + const usernameMessageElement = tpl.$('.username-taken'); + const emailMessageElement = tpl.$('.email-taken'); + if (error) { + const errorElement = error.error; + if (errorElement === 'username-already-taken') { + usernameMessageElement.show(); + emailMessageElement.hide(); + } else if (errorElement === 'email-already-taken') { + usernameMessageElement.hide(); + emailMessageElement.show(); + } + } else { + usernameMessageElement.hide(); + emailMessageElement.hide(); + Popup.back(); + } + }); + } else if (isChangeUserName) { Meteor.call('setUsername', username, function(error) { const messageElement = tpl.$('.username-taken'); if (error) { @@ -41,6 +70,16 @@ Template.editProfilePopup.events({ Popup.back(); } }); + } else if (isChangeEmail) { + Meteor.call('setEmail', email.toLowerCase(), function(error) { + const messageElement = tpl.$('.email-taken'); + if (error) { + messageElement.show(); + } else { + messageElement.hide(); + Popup.back(); + } + }); } else Popup.back(); }, }); diff --git a/i18n/ar.i18n.json b/i18n/ar.i18n.json index aeccdb90..5b475196 100644 --- a/i18n/ar.i18n.json +++ b/i18n/ar.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "لا يمكنك دعوة نفسك", "error-user-notCreated": "This user is not created", "error-username-taken": "إسم المستخدم مأخوذ مسبقا", + "error-email-taken": "Email has already been taken", "export-board": "Export board", "filter": "تصفية", "filter-cards": "تصفية البطاقات", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/br.i18n.json b/i18n/br.i18n.json index 65cf9b83..e86944ba 100644 --- a/i18n/br.i18n.json +++ b/i18n/br.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "You can not invite yourself", "error-user-notCreated": "This user is not created", "error-username-taken": "This username is already taken", + "error-email-taken": "Email has already been taken", "export-board": "Export board", "filter": "Filter", "filter-cards": "Filter Cards", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/ca.i18n.json b/i18n/ca.i18n.json index 473f0105..acef4967 100644 --- a/i18n/ca.i18n.json +++ b/i18n/ca.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "No et pots convidar a tu mateix", "error-user-notCreated": "L'usuari no s'ha creat", "error-username-taken": "Aquest usuari ja existeix", + "error-email-taken": "Email has already been taken", "export-board": "Exporta tauler", "filter": "Filtre", "filter-cards": "Fitxes de filtre", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/cs.i18n.json b/i18n/cs.i18n.json index d0b8bb3c..af6bf8aa 100644 --- a/i18n/cs.i18n.json +++ b/i18n/cs.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "You can not invite yourself", "error-user-notCreated": "Tento uživatel není vytvořen", "error-username-taken": "This username is already taken", + "error-email-taken": "Email has already been taken", "export-board": "Exportovat tablo", "filter": "Filtr", "filter-cards": "Filtrovat karty", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/de.i18n.json b/i18n/de.i18n.json index b87de5c0..bef2a870 100644 --- a/i18n/de.i18n.json +++ b/i18n/de.i18n.json @@ -56,7 +56,7 @@ "and-n-other-card": "und eine andere Karte", "and-n-other-card_plural": "und __count__ andere Karten", "apply": "Übernehmen", - "app-is-offline": "Wekan is loading, please wait. Refreshing the page will cause data loss. If Wekan does not load, please check that Wekan server has not stopped.", + "app-is-offline": "Wekan lädt gerade, bitte warten Sie. Wenn Sie die Seite neu laden, gehen nicht übertragene Änderungen verloren. Sollte Wekan nicht geladen werden, überprüfen Sie bitte, ob der Server noch läuft.", "archive": "Archiv", "archive-all": "Alles archivieren", "archive-board": "Board archivieren", @@ -141,12 +141,12 @@ "color-yellow": "gelb", "comment": "Kommentar", "comment-placeholder": "Kommentar schreiben", - "comment-only": "Comment only", + "comment-only": "Nur kommentierbar", "comment-only-desc": "Kann Karten nur Kommentieren", "computer": "Computer", "create": "Erstellen", "createBoardPopup-title": "Board erstellen", - "chooseBoardSourcePopup-title": "Import board", + "chooseBoardSourcePopup-title": "Board importieren", "createLabelPopup-title": "Label erstellen", "current": "aktuell", "date": "Datum", @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "Sie können sich nicht selbst einladen.", "error-user-notCreated": "Dieser Nutzer ist nicht angelegt", "error-username-taken": "Dieser Benutzername ist bereits vergeben", + "error-email-taken": "Email has already been taken", "export-board": "Board exportieren", "filter": "Filter", "filter-cards": "Karten filtern", @@ -206,15 +207,15 @@ "headerBarCreateBoardPopup-title": "Board erstellen", "home": "Home", "import": "Importieren", - "import-board": "import board", - "import-board-c": "Import board", + "import-board": "Board importieren", + "import-board-c": "Board importieren", "import-board-title-trello": "Board von Trello importieren", - "import-board-title-wekan": "Import board from Wekan", - "import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.", - "from-trello": "From Trello", - "from-wekan": "From Wekan", + "import-board-title-wekan": "Board von Wekan importieren", + "import-sandstorm-warning": "Das importierte Board wird alle bereits existierenden Daten löschen und mit den importierten Daten überschreiben.", + "from-trello": "Von Trello", + "from-wekan": "Von Wekan", "import-board-instruction-trello": "Gehen Sie in ihrem Trello-Board auf 'Menü', dann 'Mehr', 'Drucken und Exportieren', 'JSON-Export' und kopieren Sie den dort angezeigten Text", - "import-board-instruction-wekan": "In your Wekan board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", + "import-board-instruction-wekan": "Gehen Sie in Ihrem Wekan board auf 'Menü', und dann auf 'Board exportieren'. Kopieren Sie anschließend den Text aus der heruntergeladenen Datei.", "import-json-placeholder": "Fügen Sie die korrekten JSON-Daten hier ein", "import-map-members": "Mitglieder zuordnen", "import-members-map": "Das importierte Board hat einige Mitglieder. Bitte ordnen Sie die Mitglieder, die importiert werden sollen, Wekan-Nutzern zu", @@ -364,20 +365,24 @@ "email-invite-register-text": "Hallo __user__,\n\n__inviter__ hat Sie für Ihre Zusammenarbeit zu Wekan eingeladen.\n\nBitte klicken Sie auf folgenden Link:\n__url__\n\nIhr Einladungscode lautet: __icode__\n\nDanke.", "error-invitation-code-not-exist": "Ungültiger Einladungscode", "error-notAuthorized": "Sie sind nicht berechtigt diese Seite zu sehen.", - "outgoing-webhooks": "Outgoing Webhooks", - "outgoingWebhooksPopup-title": "Outgoing Webhooks", - "Wekan_version": "Wekan version", - "Node_version": "Node version", - "OS_Arch": "OS Arch", - "OS_Cpus": "OS CPU Count", - "OS_Freemem": "OS Free Memory", - "OS_Loadavg": "OS Load Average", - "OS_Platform": "OS Platform", - "OS_Release": "OS Release", - "OS_Totalmem": "OS Total Memory", - "OS_Type": "OS Type", - "OS_Uptime": "OS Uptime", - "hours": "hours", - "minutes": "minutes", - "seconds": "seconds" + "outgoing-webhooks": "Ausgehende Webhooks", + "outgoingWebhooksPopup-title": "Ausgehende Webhooks", + "Wekan_version": "Wekan-Version", + "Node_version": "Node-Version", + "OS_Arch": "Betriebssystem-Architektur", + "OS_Cpus": "Anzahl Prozessoren", + "OS_Freemem": "Freier Arbeitsspeicher", + "OS_Loadavg": "Mittlere Systembelastung", + "OS_Platform": "Plattform", + "OS_Release": "Version des Betriebssystem", + "OS_Totalmem": "Gesamter Arbeitsspeicher", + "OS_Type": "Typ des Betriebssystems", + "OS_Uptime": "Laufzeit des Systems", + "hours": "Stunden", + "minutes": "Minuten", + "seconds": "Sekunden", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/en-GB.i18n.json b/i18n/en-GB.i18n.json index 2e6dcd42..fb00c048 100644 --- a/i18n/en-GB.i18n.json +++ b/i18n/en-GB.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "You can not invite yourself", "error-user-notCreated": "This user is not created", "error-username-taken": "This username is already taken", + "error-email-taken": "Email has already been taken", "export-board": "Export board", "filter": "Filter", "filter-cards": "Filter Cards", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index 2cb73ae6..21533d25 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "You can not invite yourself", "error-user-notCreated": "This user is not created", "error-username-taken": "This username is already taken", + "error-email-taken": "Email has already been taken", "export-board": "Export board", "filter": "Filter", "filter-cards": "Filter Cards", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" } diff --git a/i18n/eo.i18n.json b/i18n/eo.i18n.json index 6f89a6b7..b2c2cd35 100644 --- a/i18n/eo.i18n.json +++ b/i18n/eo.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "You can not invite yourself", "error-user-notCreated": "Uzanto ne kreita", "error-username-taken": "Uzantnomo jam prenita", + "error-email-taken": "Email has already been taken", "export-board": "Export board", "filter": "Filter", "filter-cards": "Filter Cards", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/es.i18n.json b/i18n/es.i18n.json index 27684d10..d7573e40 100644 --- a/i18n/es.i18n.json +++ b/i18n/es.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "No puedes invitarte a ti mismo", "error-user-notCreated": "This user is not created", "error-username-taken": "Este nombre de usuario ya está en uso", + "error-email-taken": "Email has already been taken", "export-board": "Export board", "filter": "Filter", "filter-cards": "Fichas de filtro", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/eu.i18n.json b/i18n/eu.i18n.json index 5426ac05..c75798ec 100644 --- a/i18n/eu.i18n.json +++ b/i18n/eu.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "Ezin duzu zure burua gonbidatu", "error-user-notCreated": "Erabiltzaile hau sortu gabe dago", "error-username-taken": "Erabiltzaile-izen hori hartuta dago", + "error-email-taken": "Email has already been taken", "export-board": "Esportatu arbela", "filter": "Iragazi", "filter-cards": "Iragazi txartelak", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/fa.i18n.json b/i18n/fa.i18n.json index a8b5cb41..8f1f4d4a 100644 --- a/i18n/fa.i18n.json +++ b/i18n/fa.i18n.json @@ -39,14 +39,14 @@ "activity-checklist-added": "سیاهه به %s اضافه شد", "activity-checklist-item-added": "added checklist item to '%s' in %s", "add": "افزودن", - "add-attachment": "Add Attachment", - "add-board": "Add Board", - "add-card": "Add Card", - "add-checklist": "Add Checklist", + "add-attachment": "افزودن ضمیمه", + "add-board": "افزودن برد", + "add-card": "افزودن کارت", + "add-checklist": "افزودن چک لیست", "add-checklist-item": "افزودن مورد به سیاهه", "add-cover": "جلد کردن", - "add-label": "Add Label", - "add-list": "Add List", + "add-label": "افزودن لیبل", + "add-list": "افزودن لیست", "add-members": "افزودن اعضا", "added": "اضافه گردید", "addMemberPopup-title": "اعضا", @@ -61,7 +61,7 @@ "archive-all": "تمامی بایگانی ها", "archive-board": "بایگانی برد", "archive-card": "بایگانی کارت", - "archive-list": "Archive List", + "archive-list": "آرشیو لیست", "archive-selection": "بایگانی موارد انتخاب شده ها", "archiveBoardPopup-title": "آیا می خواهید بایگانی شود؟", "archived-items": "آیتم های بایگانی شده", @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "عدم امکان دعوت خود", "error-user-notCreated": "این کاربر ایجاد نشده است", "error-username-taken": "این نام کاربری استفاده شده است", + "error-email-taken": "Email has already been taken", "export-board": "انتقال به بیرون تخته", "filter": "صافی ـFilterـ", "filter-cards": "صافی ـFilterـ کارتها", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/fi.i18n.json b/i18n/fi.i18n.json index 7f84f867..e716fbc9 100644 --- a/i18n/fi.i18n.json +++ b/i18n/fi.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "Et voi kutsua itseäsi", "error-user-notCreated": "Tätä käyttäjää ei ole luotu", "error-username-taken": "Tämä käyttäjätunnus on jo käytössä", + "error-email-taken": "Sähköpostiosoite on jo käytössä", "export-board": "Vie taulu", "filter": "Suodata", "filter-cards": "Suodata kortit", @@ -379,5 +380,9 @@ "OS_Uptime": "Käyttöjärjestelmä ollut käynnissä", "hours": "tuntia", "minutes": "minuuttia", - "seconds": "sekuntia" + "seconds": "sekuntia", + "yes": "Kyllä", + "no": "Ei", + "accounts": "Tilit", + "accounts-allowEmailChange": "Salli sähköpostiosoitteen muuttaminen" }
\ No newline at end of file diff --git a/i18n/fr.i18n.json b/i18n/fr.i18n.json index 93364da0..15ca5891 100644 --- a/i18n/fr.i18n.json +++ b/i18n/fr.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "Vous ne pouvez pas vous inviter vous-même", "error-user-notCreated": "Cet utilisateur n'a pas encore été créé", "error-username-taken": "Ce nom d'utilisateur est déjà utilisé", + "error-email-taken": "Email has already been taken", "export-board": "Exporter le tableau", "filter": "Filtrer", "filter-cards": "Filtrer les cartes", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/gl.i18n.json b/i18n/gl.i18n.json index d620f31e..f812c8e3 100644 --- a/i18n/gl.i18n.json +++ b/i18n/gl.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "Non é posíbel convidarse a un mesmo", "error-user-notCreated": "Este usuario non está creado", "error-username-taken": "Este nome de usuario xa está collido", + "error-email-taken": "Email has already been taken", "export-board": "Exportar taboleiro", "filter": "Filtro", "filter-cards": "Filtrar tarxetas", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/he.i18n.json b/i18n/he.i18n.json index e6d8d7ff..94daa4a6 100644 --- a/i18n/he.i18n.json +++ b/i18n/he.i18n.json @@ -139,7 +139,7 @@ "color-red": "אדום", "color-sky": "תכלת", "color-yellow": "צהוב", - "comment": "להגיב", + "comment": "לפרסם", "comment-placeholder": "כתיבת הערה", "comment-only": "הערה בלבד", "comment-only-desc": "ניתן להעיר על כרטיסים בלבד.", @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "אינך יכול להזמין את עצמך", "error-user-notCreated": "משתמש זה לא נוצר", "error-username-taken": "המשתמש כבר קיים במערכת", + "error-email-taken": "Email has already been taken", "export-board": "ייצוא לוח", "filter": "מסנן", "filter-cards": "סינון כרטיסים", @@ -221,7 +222,7 @@ "import-show-user-mapping": "סקירת מיפוי חברים", "import-user-select": "נא לבחור את המשתמש ב־Wekan בו ברצונך להשתמש עבור חבר זה", "importMapMembersAddPopup-title": "בחירת משתמש Wekan", - "info": "Version", + "info": "גרסא", "initials": "ראשי תיבות", "invalid-date": "תאריך שגוי", "joined": "הצטרף", @@ -366,18 +367,22 @@ "error-notAuthorized": "אין לך הרשאה לצפות בעמוד זה.", "outgoing-webhooks": "Outgoing Webhooks", "outgoingWebhooksPopup-title": "Outgoing Webhooks", - "Wekan_version": "Wekan version", - "Node_version": "Node version", - "OS_Arch": "OS Arch", - "OS_Cpus": "OS CPU Count", - "OS_Freemem": "OS Free Memory", - "OS_Loadavg": "OS Load Average", + "Wekan_version": "גרסת wekan", + "Node_version": "גרסת Node", + "OS_Arch": "ארכיטקטורת מערכת הפעלה", + "OS_Cpus": "מספר מעבדים", + "OS_Freemem": "זיכרון (RAM) פנוי", + "OS_Loadavg": "עומס ממוצע ", "OS_Platform": "OS Platform", "OS_Release": "OS Release", - "OS_Totalmem": "OS Total Memory", - "OS_Type": "OS Type", - "OS_Uptime": "OS Uptime", - "hours": "hours", - "minutes": "minutes", - "seconds": "seconds" + "OS_Totalmem": "סך הכל זיכרון (RAM)", + "OS_Type": "סוג מערכת ההפעלה", + "OS_Uptime": "זמן שעבר מאז האתחול האחרון", + "hours": "שעות", + "minutes": "דקות", + "seconds": "שניות", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/hu.i18n.json b/i18n/hu.i18n.json index 2c426cf0..fc6346f5 100644 --- a/i18n/hu.i18n.json +++ b/i18n/hu.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "You can not invite yourself", "error-user-notCreated": "Ez a felhasználó nem jött létre", "error-username-taken": "Ez a felhasználónév már foglalt", + "error-email-taken": "Email has already been taken", "export-board": "Tábla exportálása", "filter": "Szűrő", "filter-cards": "Kártyák szűrése", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/id.i18n.json b/i18n/id.i18n.json index 62368d99..e2d93ead 100644 --- a/i18n/id.i18n.json +++ b/i18n/id.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "Anda tidak bisa mengundang diri sendiri", "error-user-notCreated": "Nama pengguna ini tidak dibuat", "error-username-taken": "Nama pengguna ini sudah dipakai", + "error-email-taken": "Email has already been taken", "export-board": "Exspor Panel", "filter": "Penyaringan", "filter-cards": "Filter Kartu", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/it.i18n.json b/i18n/it.i18n.json index dbbf5aa2..08e4e236 100644 --- a/i18n/it.i18n.json +++ b/i18n/it.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "Non puoi invitare te stesso", "error-user-notCreated": "L'utente non è stato creato", "error-username-taken": "Questo username è già utilizzato", + "error-email-taken": "Email has already been taken", "export-board": "Esporta bacheca", "filter": "Filtra", "filter-cards": "Filtra schede", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/ja.i18n.json b/i18n/ja.i18n.json index 573f5bd1..d14d5789 100644 --- a/i18n/ja.i18n.json +++ b/i18n/ja.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "自分を招待することはできません。", "error-user-notCreated": "ユーザーが作成されていません", "error-username-taken": "このユーザ名は既に使用されています", + "error-email-taken": "Email has already been taken", "export-board": "ボードのエクスポート", "filter": "フィルター", "filter-cards": "カードをフィルターする", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/ko.i18n.json b/i18n/ko.i18n.json index e50b01ad..ebd7357a 100644 --- a/i18n/ko.i18n.json +++ b/i18n/ko.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "자기 자신을 초대할 수 없습니다.", "error-user-notCreated": "유저가 생성되지 않았습니다.", "error-username-taken": "중복된 아이디 입니다.", + "error-email-taken": "Email has already been taken", "export-board": "보드 내보내기", "filter": "필터", "filter-cards": "카드 필터", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/nb.i18n.json b/i18n/nb.i18n.json index 519f0d25..6b362ad1 100644 --- a/i18n/nb.i18n.json +++ b/i18n/nb.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "You can not invite yourself", "error-user-notCreated": "This user is not created", "error-username-taken": "This username is already taken", + "error-email-taken": "Email has already been taken", "export-board": "Export board", "filter": "Filter", "filter-cards": "Filter Cards", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/nl.i18n.json b/i18n/nl.i18n.json index d1d7fc20..9d270439 100644 --- a/i18n/nl.i18n.json +++ b/i18n/nl.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "You can not invite yourself", "error-user-notCreated": "This user is not created", "error-username-taken": "This username is already taken", + "error-email-taken": "Email has already been taken", "export-board": "Export board", "filter": "Filter", "filter-cards": "Filter Cards", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/pl.i18n.json b/i18n/pl.i18n.json index 1da5bbc9..858e83a7 100644 --- a/i18n/pl.i18n.json +++ b/i18n/pl.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "You can not invite yourself", "error-user-notCreated": "Ten użytkownik nie został stworzony", "error-username-taken": "This username is already taken", + "error-email-taken": "Email has already been taken", "export-board": "Eksportuj tablicę", "filter": "Filtr", "filter-cards": "Odfiltruj karty", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/pt-BR.i18n.json b/i18n/pt-BR.i18n.json index df3e55d7..be0078d5 100644 --- a/i18n/pt-BR.i18n.json +++ b/i18n/pt-BR.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "Você não pode convidar a si mesmo", "error-user-notCreated": "Este usuário não foi criado", "error-username-taken": "Esse username já existe", + "error-email-taken": "Email has already been taken", "export-board": "Exportar quadro", "filter": "Filtrar", "filter-cards": "Filtrar Cartões", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/ro.i18n.json b/i18n/ro.i18n.json index 97abefbf..4f9fbd59 100644 --- a/i18n/ro.i18n.json +++ b/i18n/ro.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "You can not invite yourself", "error-user-notCreated": "This user is not created", "error-username-taken": "This username is already taken", + "error-email-taken": "Email has already been taken", "export-board": "Export board", "filter": "Filter", "filter-cards": "Filter Cards", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/ru.i18n.json b/i18n/ru.i18n.json index 74058d9e..1fb0523a 100644 --- a/i18n/ru.i18n.json +++ b/i18n/ru.i18n.json @@ -1,7 +1,7 @@ { "accept": "Принять", "act-activity-notify": "[Wekan] Уведомления о активности", - "act-addAttachment": "вложенно __attachment__ в __card__", + "act-addAttachment": "вложено __attachment__ в __card__", "act-addComment": "прокомментировал __card__: __comment__", "act-createBoard": "создана __board__", "act-createCard": "добавлена __card__ в __list__", @@ -37,7 +37,7 @@ "activity-sent": "отправлено %s в %s", "activity-unjoined": "вышел из %s", "activity-checklist-added": "добавлен список в %s", - "activity-checklist-item-added": "added checklist item to '%s' in %s", + "activity-checklist-item-added": "добавлен пункт списка в '%s' в %s", "add": "Создать", "add-attachment": "Добавить вложение", "add-board": "Добавить доску", @@ -139,7 +139,7 @@ "color-red": "красный", "color-sky": "голубой", "color-yellow": "желтый", - "comment": "Отправить", + "comment": "Добавить коментарий", "comment-placeholder": "Написать комментарий", "comment-only": "Только комментирование", "comment-only-desc": "Может комментировать только карточки.", @@ -148,56 +148,57 @@ "createBoardPopup-title": "Создать доску", "chooseBoardSourcePopup-title": "Импортировать доску", "createLabelPopup-title": "Создать метку", - "current": "Текущий", + "current": "текущий", "date": "Дата", - "decline": "Понизить", - "default-avatar": "Стандартный аватар", + "decline": "Отклонить", + "default-avatar": "Аватар по умолчанию", "delete": "Удалить", "deleteLabelPopup-title": "Удалить метку?", "description": "Описание", "disambiguateMultiLabelPopup-title": "Разрешить конфликт меток", "disambiguateMultiMemberPopup-title": "Разрешить конфликт пользователей", "discard": "Отказать", - "done": "ГОтово", + "done": "Готово", "download": "Скачать", "edit": "Редактировать", "edit-avatar": "Изменить аватар", - "edit-profile": "Изменить профиль", + "edit-profile": "Изменить Профиль", "editCardStartDatePopup-title": "Сменить дату начала", - "editCardDueDatePopup-title": "Изменить дату До", + "editCardDueDatePopup-title": "Изменить дату до", "editLabelPopup-title": "Редактирование метки", "editNotificationPopup-title": "Редактировать уведомления", "editProfilePopup-title": "Изменить профиль", "email": "Эл.почта", "email-enrollAccount-subject": "Аккаунт создан для вас здесь __url__", - "email-enrollAccount-text": "Привет __user__,\n\nДля того, чтобы начать использовать сервис, просто нажми на ссылку.\n\n__url__\n\nСпасибо.", - "email-fail": "Email не отправлен", + "email-enrollAccount-text": "Привет __user__,\n\nДля того, чтобы начать использовать сервис, просто нажми на ссылку ниже.\n\n__url__\n\nСпасибо.", + "email-fail": "Отправка письма на EMail не удалась", "email-invalid": "Неверный адрес электронной почти", - "email-invite": "Пригласить через Email", + "email-invite": "Пригласить по электронной почте", "email-invite-subject": "__inviter__ прислал вам приглашение", - "email-invite-text": "Дорогой __user__,\n\n__inviter__ пригласил вас на доску \"__board__\" для сотрудничества.\n\nПожайлуйста проследуйте по ссылке:\n\n__url__\n\nСпасибо.", + "email-invite-text": "Дорогой __user__,\n\n__inviter__ пригласил вас присоединиться к доске \"__board__\" для сотрудничества.\n\nПожайлуйста проследуйте по ссылке ниже:\n\n__url__\n\nСпасибо.", "email-resetPassword-subject": "Перейдите по ссылке, чтобы сбросить пароль __url__", - "email-resetPassword-text": "Привет __user__,\n\nДля сброса пароля перейдите по ссылке.\n\n__url__\n\nThanks.", - "email-sent": "Email отправлен", - "email-verifyEmail-subject": "Подтвердите Email перейдя по ссылке __url__", - "email-verifyEmail-text": "Привет __user__,\n\nДля подтверждения Email перейдите по ссылке.\n\n__url__\n\nСпасибо.", + "email-resetPassword-text": "Привет __user__,\n\nДля сброса пароля перейдите по ссылке ниже.\n\n__url__\n\nThanks.", + "email-sent": "Письмо отправлено", + "email-verifyEmail-subject": "Подтвердите вашу эл.почту перейдя по ссылке __url__", + "email-verifyEmail-text": "Привет __user__,\n\nДля подтверждения вашей электронной почты перейдите по ссылке ниже.\n\n__url__\n\nСпасибо.", "error-board-doesNotExist": "Доска не найдена", - "error-board-notAdmin": "Вы должны обладать правами админстратора, чтобы сделать это", + "error-board-notAdmin": "Вы должны обладать правами администратора этой доски, чтобы сделать это", "error-board-notAMember": "Вы должны быть пользователем доски, чтобы сделать это", - "error-json-malformed": "Ваше текст не является JSON", + "error-json-malformed": "Ваше текст не является правильным JSON", "error-json-schema": "Содержимое вашего JSON не содержит информацию в корректном формате", "error-list-doesNotExist": "Список не найден", "error-user-doesNotExist": "Пользователь не найден", "error-user-notAllowSelf": "Вы не можете пригласить себя", "error-user-notCreated": "Пользователь не создан", - "error-username-taken": "Этот пользователь уже существует", + "error-username-taken": "Это имя пользователя уже занято", + "error-email-taken": "Email has already been taken", "export-board": "Экспортировать доску", "filter": "Фильтр", "filter-cards": "Фильтр карточек", "filter-clear": "Очистить фильтр", "filter-no-label": "Нет метки", "filter-no-member": "Нет пользователей", - "filter-on": "Filter is on", + "filter-on": "Включен фильтр", "filter-on-desc": "Показываются карточки, соответствующие настройкам фильтра. Нажмите для редактирования.", "filter-to-selection": "Filter to selection", "fullname": "Полное имя", @@ -210,7 +211,7 @@ "import-board-c": "Импортировать доску", "import-board-title-trello": "Импортировать доску из Trello", "import-board-title-wekan": "Импортировать доску с Wekan", - "import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.", + "import-sandstorm-warning": "Импортированная доска удалит все существующие данные на доске и заменит ее доской.", "from-trello": "Из Trello", "from-wekan": "Их Wekan", "import-board-instruction-trello": "На вашей Trello доске нажмите “Menu” - “More” - “Print and export - “Export JSON” и скопируйте полученный текст", @@ -218,17 +219,17 @@ "import-json-placeholder": "Вставьте JSON сюда", "import-map-members": "Карта пользователей", "import-members-map": "Вы ипортировали доску с пользователями. Пожалуйста, составьте карту пользователей, которых вы хотите импортировать в Wekan пользователей", - "import-show-user-mapping": "Пересмотреть карту пользователей", + "import-show-user-mapping": "Проверить карту пользователей", "import-user-select": "Выберите Wekan-пользователя, которого вы хотите использовать в качестве пользователя", "importMapMembersAddPopup-title": "Выбрать Wekan пользователя", - "info": "Version", + "info": "Версия", "initials": "Инициалы", "invalid-date": "Неверная дата", "joined": "вступил", "just-invited": "Вы только пригласили на эту доску", "keyboard-shortcuts": "Сочетания клавиш", "label-create": "Создать метку", - "label-default": "%s", + "label-default": "%sметка (по умолчанию)", "label-delete-pop": "Это действие невозможно будет отменить. Метка будет удалена во всех карточках.", "labels": "Метки", "language": "Язык", @@ -366,18 +367,22 @@ "error-notAuthorized": "У вас нет доступа на просмотр этой страницы.", "outgoing-webhooks": "Исходящие Веб-хуки", "outgoingWebhooksPopup-title": "Исходящие Веб-хуки", - "Wekan_version": "Wekan version", - "Node_version": "Node version", - "OS_Arch": "OS Arch", - "OS_Cpus": "OS CPU Count", - "OS_Freemem": "OS Free Memory", - "OS_Loadavg": "OS Load Average", - "OS_Platform": "OS Platform", - "OS_Release": "OS Release", - "OS_Totalmem": "OS Total Memory", - "OS_Type": "OS Type", - "OS_Uptime": "OS Uptime", - "hours": "hours", - "minutes": "minutes", - "seconds": "seconds" + "Wekan_version": "Версия Wekan", + "Node_version": "Версия NodeJS", + "OS_Arch": "Архитектура", + "OS_Cpus": "Количество процессоров", + "OS_Freemem": "Свободная память", + "OS_Loadavg": "Средняя загрузка", + "OS_Platform": "Платформа", + "OS_Release": "Релиз", + "OS_Totalmem": "Общая память", + "OS_Type": "Тип ОС", + "OS_Uptime": "Время работы", + "hours": "часы", + "minutes": "минуты", + "seconds": "секунды", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/sr.i18n.json b/i18n/sr.i18n.json index dcbd7607..6016c5a5 100644 --- a/i18n/sr.i18n.json +++ b/i18n/sr.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "You can not invite yourself", "error-user-notCreated": "This user is not created", "error-username-taken": "Korisničko ime je već zauzeto", + "error-email-taken": "Email has already been taken", "export-board": "Export board", "filter": "Filter", "filter-cards": "Filter Cards", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/sv.i18n.json b/i18n/sv.i18n.json index 2c95cdaf..aed5bb9e 100644 --- a/i18n/sv.i18n.json +++ b/i18n/sv.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "Du kan inte bjuda in dig själv", "error-user-notCreated": "Den här användaren har inte skapats", "error-username-taken": "Detta användarnamn är redan taget", + "error-email-taken": "Email has already been taken", "export-board": "Exportera anslagstavla", "filter": "Filtrera", "filter-cards": "Filtrera kort", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/ta.i18n.json b/i18n/ta.i18n.json index 222c712e..ab938acb 100644 --- a/i18n/ta.i18n.json +++ b/i18n/ta.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "You can not invite yourself", "error-user-notCreated": "This user is not created", "error-username-taken": "This username is already taken", + "error-email-taken": "Email has already been taken", "export-board": "Export board", "filter": "Filter", "filter-cards": "Filter Cards", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/th.i18n.json b/i18n/th.i18n.json index b59e2c21..e7c5dcc5 100644 --- a/i18n/th.i18n.json +++ b/i18n/th.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "You can not invite yourself", "error-user-notCreated": "ผู้ใช้รายนี้ไม่ได้สร้าง", "error-username-taken": "ชื่อนี้ถูกใช้งานแล้ว", + "error-email-taken": "Email has already been taken", "export-board": "ส่งออกกระดาน", "filter": "กรอง", "filter-cards": "กรองการ์ด", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/tr.i18n.json b/i18n/tr.i18n.json index 0ffebb1c..8a22e25c 100644 --- a/i18n/tr.i18n.json +++ b/i18n/tr.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "Kendi kendini davet edemezsin", "error-user-notCreated": "Bu üye oluşturulmadı", "error-username-taken": "Kullanıcı adı zaten alınmış", + "error-email-taken": "Email has already been taken", "export-board": "Panoyu dışarı aktar", "filter": "Filtre", "filter-cards": "Kartları Filtrele", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/uk.i18n.json b/i18n/uk.i18n.json index 6117e23a..424ee7b8 100644 --- a/i18n/uk.i18n.json +++ b/i18n/uk.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "You can not invite yourself", "error-user-notCreated": "This user is not created", "error-username-taken": "This username is already taken", + "error-email-taken": "Email has already been taken", "export-board": "Export board", "filter": "Filter", "filter-cards": "Filter Cards", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/vi.i18n.json b/i18n/vi.i18n.json index ff975f88..240d52c1 100644 --- a/i18n/vi.i18n.json +++ b/i18n/vi.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "You can not invite yourself", "error-user-notCreated": "This user is not created", "error-username-taken": "This username is already taken", + "error-email-taken": "Email has already been taken", "export-board": "Export board", "filter": "Filter", "filter-cards": "Filter Cards", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/zh-CN.i18n.json b/i18n/zh-CN.i18n.json index eb65dbb3..b5b44359 100644 --- a/i18n/zh-CN.i18n.json +++ b/i18n/zh-CN.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "无法邀请自己", "error-user-notCreated": "该用户未能成功创建", "error-username-taken": "此用户名已存在", + "error-email-taken": "Email has already been taken", "export-board": "导出看板", "filter": "过滤", "filter-cards": "过滤卡片", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/i18n/zh-TW.i18n.json b/i18n/zh-TW.i18n.json index 2504a8b1..e65b0ff3 100644 --- a/i18n/zh-TW.i18n.json +++ b/i18n/zh-TW.i18n.json @@ -191,6 +191,7 @@ "error-user-notAllowSelf": "不允許對自己執行此操作", "error-user-notCreated": "該使用者未能成功建立", "error-username-taken": "這個使用者名稱已被使用", + "error-email-taken": "Email has already been taken", "export-board": "Export board", "filter": "過濾", "filter-cards": "過濾卡片", @@ -379,5 +380,9 @@ "OS_Uptime": "OS Uptime", "hours": "hours", "minutes": "minutes", - "seconds": "seconds" + "seconds": "seconds", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change" }
\ No newline at end of file diff --git a/models/accountSettings.js b/models/accountSettings.js new file mode 100644 index 00000000..db4087c0 --- /dev/null +++ b/models/accountSettings.js @@ -0,0 +1,33 @@ +AccountSettings = new Mongo.Collection('accountSettings'); + +AccountSettings.attachSchema(new SimpleSchema({ + _id: { + type: String, + }, + booleanValue: { + type: Boolean, + optional: true, + }, + sort: { + type: Number, + decimal: true, + }, +})); + +AccountSettings.allow({ + update(userId) { + const user = Users.findOne(userId); + return user && user.isAdmin; + }, +}); + +if (Meteor.isServer) { + Meteor.startup(() => { + AccountSettings.upsert({ _id: 'accounts-allowEmailChange' }, { + $setOnInsert: { + booleanValue: false, + sort: 0, + }, + }); + }); +} diff --git a/models/users.js b/models/users.js index 29504aa8..c2238cde 100644 --- a/models/users.js +++ b/models/users.js @@ -334,6 +334,28 @@ Meteor.methods({ check(limit, Number); Meteor.user().setShowCardsCountAt(limit); }, + setEmail(email) { + check(email, String); + const existingUser = Users.findOne({ 'emails.address': email }, { fields: { _id: 1 } }); + if (existingUser) { + throw new Meteor.Error('email-already-taken'); + } else { + Users.update(this.userId, { + $set: { + emails: [{ + address: email, + verified: false, + }], + }, + }); + } + }, + setUsernameAndEmail(username, email) { + check(username, String); + check(email, String); + Meteor.call('setUsername', username); + Meteor.call('setEmail', email); + }, }); if (Meteor.isServer) { diff --git a/server/publications/accountSettings.js b/server/publications/accountSettings.js new file mode 100644 index 00000000..b1cacaf5 --- /dev/null +++ b/server/publications/accountSettings.js @@ -0,0 +1,3 @@ +Meteor.publish('accountSettings', function() { + return AccountSettings.find(); +}); |