Merge branch 'nztqa-improve-account' into devel

Change Email address. Thanks to nztqa ! Closes #848
This commit is contained in:
Lauri Ojansivu 2017-08-09 15:14:11 +03:00
commit 719c5404f3
44 changed files with 442 additions and 122 deletions

View file

@ -129,6 +129,7 @@
"JsonRoutes": true,
"Authentication": true,
"Integrations": true,
"HTTP": true
"HTTP": true,
"AccountSettings": true
}
}

View file

@ -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.

View file

@ -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'}}

View file

@ -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');

View file

@ -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")

View file

@ -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();
},
});

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

33
models/accountSettings.js Normal file
View file

@ -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,
},
});
});
}

View file

@ -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) {

View file

@ -0,0 +1,3 @@
Meteor.publish('accountSettings', function() {
return AccountSettings.find();
});