mirror of
https://github.com/wekan/wekan.git
synced 2025-12-16 15:30:13 +01:00
wording change, email sending optimization, add texts to i18n
This commit is contained in:
parent
e3c3cc0d8d
commit
39f2837838
9 changed files with 74 additions and 50 deletions
|
|
@ -1,6 +1,6 @@
|
|||
Template.invitationCode.onRendered(() => {
|
||||
const strict = Settings.findOne().strict;
|
||||
if(!strict){
|
||||
const disableRegistration = Settings.findOne().disableRegistration;
|
||||
if(!disableRegistration){
|
||||
$('#invitationcode').hide();
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
template(name="setting")
|
||||
.setting-content
|
||||
.content-title
|
||||
span Settings
|
||||
span {{_ 'settings'}}
|
||||
.content-body
|
||||
.side-menu
|
||||
ul
|
||||
li.active
|
||||
a.js-setting-menu(data-id="general-setting") System
|
||||
a.js-setting-menu(data-id="registration-setting") {{_ 'registration'}}
|
||||
li
|
||||
a.js-setting-menu(data-id="email-setting") Email
|
||||
a.js-setting-menu(data-id="email-setting") {{_ 'email'}}
|
||||
.main-body
|
||||
if loading.get
|
||||
+spinner
|
||||
|
|
@ -18,20 +18,20 @@ template(name="setting")
|
|||
+email
|
||||
|
||||
template(name="general")
|
||||
ul#general-setting.setting-detail
|
||||
ul#registration-setting.setting-detail
|
||||
li
|
||||
a.flex.js-toggle-strict-mode
|
||||
.materialCheckBox(class="{{#if currentSetting.strict}}is-checked{{/if}}")
|
||||
a.flex.js-toggle-registration
|
||||
.materialCheckBox(class="{{#if currentSetting.disableRegistration}}is-checked{{/if}}")
|
||||
|
||||
span Use Strict Mode
|
||||
span {{_ 'disable-self-registration'}}
|
||||
li
|
||||
.invite-people(class="{{#if currentSetting.strict}}{{else}}hide{{/if}}")
|
||||
.invite-people(class="{{#if currentSetting.disableRegistration}}{{else}}hide{{/if}}")
|
||||
ul
|
||||
li
|
||||
.title Invite People
|
||||
textarea#email-to-invite.form-control(rows='5', placeholder="Email Adresses")
|
||||
.title {{_ 'invite-people'}}
|
||||
textarea#email-to-invite.form-control(rows='5', placeholder="{{_ 'email-addresses'}}")
|
||||
li
|
||||
.title To board(s)
|
||||
.title {{_ 'to-boards'}}
|
||||
.bg-white
|
||||
each boards
|
||||
a.option.flex.js-toggle-board-choose(id= _id)
|
||||
|
|
@ -40,31 +40,30 @@ template(name="general")
|
|||
span= title
|
||||
|
||||
li
|
||||
button.js-email-invite.primary Invite
|
||||
button.js-email-invite.primary {{_ 'invite'}}
|
||||
|
||||
template(name='email')
|
||||
ul#email-setting.setting-detail
|
||||
li.smtp-form
|
||||
.title SMTP Host {{currentSetting.mailServer.port}}
|
||||
.description The address of the SMTP server that handles your emails.
|
||||
.title {{_ 'smtp-host'}}
|
||||
.description {{_ 'smtp-host-description'}}
|
||||
.form-group
|
||||
input.form-control#mail-server-host(type="text", placeholder="smtp.domain.com" value="{{currentSetting.mailServer.host}}")
|
||||
li.smtp-form
|
||||
.title SMTP Port
|
||||
.description The port your SMTP server uses for outgoing emails.
|
||||
.title {{_ 'smtp-port'}}
|
||||
.description {{_ 'smtp-port-description'}}
|
||||
.form-group
|
||||
input.form-control#mail-server-port(type="text", placeholder="25" value="{{currentSetting.mailServer.port}}")
|
||||
li.smtp-form
|
||||
.title SMTP user name
|
||||
.title {{_ 'smtp-username'}}
|
||||
.form-group
|
||||
input.form-control#mail-server-username(type="text", placeholder="user name" value="{{currentSetting.mailServer.username}}")
|
||||
input.form-control#mail-server-username(type="text", placeholder="{{_ 'username'}}" value="{{currentSetting.mailServer.username}}")
|
||||
li.smtp-form
|
||||
.title SMTP password
|
||||
.title {{_ 'smtp-password'}}
|
||||
.form-group
|
||||
input.form-control#mail-server-password(type="text", placeholder="password" value="{{currentSetting.mailServer.password}}")
|
||||
input.form-control#mail-server-password(type="text", placeholder="{{_ 'password'}}" value="{{currentSetting.mailServer.password}}")
|
||||
li.smtp-form
|
||||
.title From
|
||||
.Email address you want to use to send emails.
|
||||
.title {{_ 'send-from'}}
|
||||
.form-group
|
||||
input.form-control#mail-server-from(type="email", placeholder="no-reply@domain.com" value="{{currentSetting.mailServer.from}}")
|
||||
|
||||
|
|
|
|||
|
|
@ -40,12 +40,12 @@ BlazeComponent.extendComponent({
|
|||
sort: ['title'],
|
||||
});
|
||||
},
|
||||
toggleStrictMode(){
|
||||
toggleRegistration(){
|
||||
this.setLoading(true);
|
||||
const isStrictMode = this.currentSetting().strict;
|
||||
Settings.update(Settings.findOne()._id, {$set:{strict: !isStrictMode}});
|
||||
const registrationClosed = this.currentSetting().disableRegistration;
|
||||
Settings.update(Settings.findOne()._id, {$set:{disableRegistration: !registrationClosed}});
|
||||
this.setLoading(false);
|
||||
if(isStrictMode){
|
||||
if(registrationClosed){
|
||||
$('.invite-people').slideUp();
|
||||
}else{
|
||||
$('.invite-people').slideDown();
|
||||
|
|
@ -58,7 +58,7 @@ BlazeComponent.extendComponent({
|
|||
$('.side-menu li.active').removeClass('active');
|
||||
target.parent().addClass('active');
|
||||
const targetID = target.data('id');
|
||||
this.generalSetting.set('general-setting' === targetID);
|
||||
this.generalSetting.set('registration-setting' === targetID);
|
||||
this.emailSetting.set('email-setting' === targetID);
|
||||
}
|
||||
},
|
||||
|
|
@ -74,7 +74,6 @@ BlazeComponent.extendComponent({
|
|||
},
|
||||
|
||||
inviteThroughEmail(){
|
||||
this.setLoading(true);
|
||||
const emails = $('#email-to-invite').val().trim().split('\n').join(',').split(',');
|
||||
const boardsToInvite = [];
|
||||
$('.js-toggle-board-choose .materialCheckBox.is-checked').each(function () {
|
||||
|
|
@ -86,12 +85,15 @@ BlazeComponent.extendComponent({
|
|||
validEmails.push(email.trim());
|
||||
}
|
||||
});
|
||||
Meteor.call('sendInvitation', validEmails, boardsToInvite, () => {
|
||||
// if (!err) {
|
||||
// TODO - show more info to user
|
||||
// }
|
||||
this.setLoading(false);
|
||||
});
|
||||
if (validEmails.length) {
|
||||
this.setLoading(true);
|
||||
Meteor.call('sendInvitation', validEmails, boardsToInvite, () => {
|
||||
// if (!err) {
|
||||
// TODO - show more info to user
|
||||
// }
|
||||
this.setLoading(false);
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
saveMailServerInfo(){
|
||||
|
|
@ -116,7 +118,7 @@ BlazeComponent.extendComponent({
|
|||
|
||||
events(){
|
||||
return [{
|
||||
'click a.js-toggle-strict-mode': this.toggleStrictMode,
|
||||
'click a.js-toggle-registration': this.toggleRegistration,
|
||||
'click a.js-setting-menu': this.switchMenu,
|
||||
'click a.js-toggle-board-choose': this.checkBoard,
|
||||
'click button.js-email-invite': this.inviteThroughEmail,
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@ template(name="settingHeaderBar")
|
|||
if currentUser
|
||||
a.setting-header-btn.settings.active
|
||||
i.fa(class="fa-cog")
|
||||
span {{_ 'option-setting'}}
|
||||
span {{_ 'settings'}}
|
||||
//TODO
|
||||
// a.setting-header-btn.people
|
||||
// i.fa(class="fa-users")
|
||||
// span {{_ 'option-people'}}
|
||||
// span {{_ 'people'}}
|
||||
|
||||
else
|
||||
a.setting-header-btn.js-log-in(
|
||||
|
|
|
|||
|
|
@ -101,6 +101,16 @@ FlowRouter.route('/import', {
|
|||
|
||||
FlowRouter.route('/setting', {
|
||||
name: 'setting',
|
||||
triggersEnter: [
|
||||
AccountsTemplates.ensureSignedIn,
|
||||
() => {
|
||||
Session.set('currentBoard', null);
|
||||
Session.set('currentCard', null);
|
||||
|
||||
Filter.reset();
|
||||
EscapeActions.executeAll();
|
||||
},
|
||||
],
|
||||
action() {
|
||||
BlazeLayout.render('defaultLayout', {
|
||||
headerBar: 'settingHeaderBar',
|
||||
|
|
|
|||
|
|
@ -326,8 +326,21 @@
|
|||
"what-to-do": "What do you want to do?",
|
||||
"admin-panel": "Admin Panel",
|
||||
"system-setting": "System Setting",
|
||||
"option-setting": "Settings",
|
||||
"option-people": "People",
|
||||
"settings": "Settings",
|
||||
"people": "People",
|
||||
"registration": "Registration",
|
||||
"disable-self-registration": "Disable Self-Registration",
|
||||
"invite": "Invite",
|
||||
"invite-people": "Invite People",
|
||||
"to-boards": "To board(s)",
|
||||
"email-addresses":"Email Addresses",
|
||||
"smtp-host-description": "The address of the SMTP server that handles your emails.",
|
||||
"smtp-port-description": "The port your SMTP server uses for outgoing emails.",
|
||||
"smtp-host": "SMTP Host",
|
||||
"smtp-port": "SMTP Port",
|
||||
"smtp-username": "Username",
|
||||
"smtp-password": "Password",
|
||||
"send-from": "From",
|
||||
"invitation-code": "Invitation Code",
|
||||
"email-invite-register-subject": "__inviter__ sent you an invitation",
|
||||
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to Wekan for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.\n",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
Settings = new Mongo.Collection('settings');
|
||||
|
||||
Settings.attachSchema(new SimpleSchema({
|
||||
strict: {
|
||||
disableRegistration: {
|
||||
type: Boolean,
|
||||
},
|
||||
'mailServer.username': {
|
||||
|
|
@ -23,7 +23,7 @@ Settings.attachSchema(new SimpleSchema({
|
|||
'mailServer.from': {
|
||||
type: String,
|
||||
optional: true,
|
||||
defaultValue: 'Kanban',
|
||||
defaultValue: 'Wekan',
|
||||
},
|
||||
createdAt: {
|
||||
type: Date,
|
||||
|
|
@ -56,7 +56,7 @@ if (Meteor.isServer) {
|
|||
const setting = Settings.findOne({});
|
||||
if(!setting){
|
||||
const now = new Date();
|
||||
const defaultSetting = {strict: false, mailServer: {
|
||||
const defaultSetting = {disableRegistration: false, mailServer: {
|
||||
username: '', password:'', host: '', port:'', from: '',
|
||||
}, createdAt: now, modifiedAt: now};
|
||||
Settings.insert(defaultSetting);
|
||||
|
|
|
|||
|
|
@ -348,7 +348,7 @@ if (Meteor.isServer) {
|
|||
if (user._id === inviter._id) throw new Meteor.Error('error-user-notAllowSelf');
|
||||
} else {
|
||||
if (posAt <= 0) throw new Meteor.Error('error-user-doesNotExist');
|
||||
if (Settings.findOne().strict) throw new Meteor.Error('error-user-notCreated');
|
||||
if (Settings.findOne().disableRegistration) throw new Meteor.Error('error-user-notCreated');
|
||||
const email = username;
|
||||
username = email.substring(0, posAt);
|
||||
const newUserId = Accounts.createUser({ username, email });
|
||||
|
|
@ -395,8 +395,8 @@ if (Meteor.isServer) {
|
|||
user.isAdmin = true;
|
||||
return user;
|
||||
}
|
||||
const strict = Settings.findOne().strict;
|
||||
if (!strict) {
|
||||
const disableRegistration = Settings.findOne().disableRegistration;
|
||||
if (!disableRegistration) {
|
||||
return user;
|
||||
}
|
||||
|
||||
|
|
@ -484,8 +484,8 @@ if (Meteor.isServer) {
|
|||
Users.after.insert((userId, doc) => {
|
||||
|
||||
//invite user to corresponding boards
|
||||
const strict = Settings.findOne().strict;
|
||||
if (strict) {
|
||||
const disableRegistration = Settings.findOne().disableRegistration;
|
||||
if (disableRegistration) {
|
||||
const user = Users.findOne(doc._id);
|
||||
const invitationCode = InvitationCodes.findOne({code: user.profile.icode, valid:true});
|
||||
if (!invitationCode) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
Meteor.publish('setting', () => {
|
||||
return Settings.find({}, {fields:{strict: 1}});
|
||||
return Settings.find({}, {fields:{disableRegistration: 1}});
|
||||
});
|
||||
|
||||
Meteor.publish('mailServer', function () {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue