wording change, email sending optimization, add texts to i18n

This commit is contained in:
lkisme 2017-02-26 21:11:15 +08:00
parent e3c3cc0d8d
commit 39f2837838
9 changed files with 74 additions and 50 deletions

View file

@ -1,6 +1,6 @@
Template.invitationCode.onRendered(() => {
const strict = Settings.findOne().strict;
if(!strict){
const disableRegistration = Settings.findOne().disableRegistration;
if(!disableRegistration){
$('#invitationcode').hide();
}
});

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,5 +1,5 @@
Meteor.publish('setting', () => {
return Settings.find({}, {fields:{strict: 1}});
return Settings.find({}, {fields:{disableRegistration: 1}});
});
Meteor.publish('mailServer', function () {