summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLauri Ojansivu <x@xet7.org>2018-10-24 11:39:45 +0300
committerLauri Ojansivu <x@xet7.org>2018-10-24 11:39:45 +0300
commit4cb25a5bcf5263f9c803a0a1d4ceaf6a9e5db75f (patch)
treec326c9d45b947ec9a0eb810ea503696e4a443032
parent82e90f7b9424eba55435150fca8f878ac05e8634 (diff)
downloadwekan-4cb25a5bcf5263f9c803a0a1d4ceaf6a9e5db75f.tar.gz
wekan-4cb25a5bcf5263f9c803a0a1d4ceaf6a9e5db75f.tar.bz2
wekan-4cb25a5bcf5263f9c803a0a1d4ceaf6a9e5db75f.zip
- Custom Product Name in Admin Panel / Layout. In Progress, setting does not affect change UI yet. Thanks to xet7 !
- Fix LDAP User Search Scope. Thanks to Vnimos and Akuket ! Related #119 - Fix Save Admin Panel STMP password. Thanks to saurabharch and xet7 ! Closes #1856
-rw-r--r--client/components/settings/settingBody.jade16
-rw-r--r--client/components/settings/settingBody.js22
-rw-r--r--client/components/settings/settingBody.styl3
-rw-r--r--docker-compose-build.yml36
-rw-r--r--docker-compose.yml36
-rw-r--r--i18n/en.i18n.json4
-rw-r--r--models/settings.js4
-rw-r--r--server/migrations.js12
-rw-r--r--server/publications/settings.js2
-rwxr-xr-xsnap-src/bin/config4
-rwxr-xr-xsnap-src/bin/wekan-help2
11 files changed, 98 insertions, 43 deletions
diff --git a/client/components/settings/settingBody.jade b/client/components/settings/settingBody.jade
index dcf71f4d..a05be1c6 100644
--- a/client/components/settings/settingBody.jade
+++ b/client/components/settings/settingBody.jade
@@ -16,6 +16,8 @@ template(name="setting")
a.js-setting-menu(data-id="account-setting") {{_ 'accounts'}}
li
a.js-setting-menu(data-id="announcement-setting") {{_ 'admin-announcement'}}
+ li
+ a.js-setting-menu(data-id="layout-setting") {{_ 'layout'}}
.main-body
if loading.get
+spinner
@@ -27,6 +29,8 @@ template(name="setting")
+accountSettings
else if announcementSetting.get
+announcementSettings
+ else if layoutSetting.get
+ +layoutSettings
template(name="general")
ul#registration-setting.setting-detail
@@ -72,7 +76,7 @@ template(name='email')
li.smtp-form
.title {{_ 'smtp-password'}}
.form-group
- input.form-control#mail-server-password(type="text", placeholder="{{_ 'password'}}" value="")
+ input.form-control#mail-server-password(type="password", placeholder="{{_ 'password'}}" value="{{currentSetting.mailServer.password}}")
li.smtp-form
.title {{_ 'smtp-tls'}}
.form-group
@@ -127,3 +131,13 @@ template(name='announcementSettings')
textarea#admin-announcement.form-control= currentSetting.body
li
button.js-announcement-save.primary {{_ 'save'}}
+
+template(name='layoutSettings')
+ ul#layout-setting.setting-detail
+ li.layout-form
+ .title {{_ 'custom-product-name'}}
+ .form-group
+ input.form-control#product-name(type="text", placeholder="Wekan" value="{{currentSetting.productName}}")
+
+ li
+ button.js-save-layout.primary {{_ 'save'}}
diff --git a/client/components/settings/settingBody.js b/client/components/settings/settingBody.js
index 7230d893..0ff4f99c 100644
--- a/client/components/settings/settingBody.js
+++ b/client/components/settings/settingBody.js
@@ -6,6 +6,7 @@ BlazeComponent.extendComponent({
this.emailSetting = new ReactiveVar(false);
this.accountSetting = new ReactiveVar(false);
this.announcementSetting = new ReactiveVar(false);
+ this.layoutSetting = new ReactiveVar(false);
Meteor.subscribe('setting');
Meteor.subscribe('mailServer');
@@ -68,6 +69,7 @@ BlazeComponent.extendComponent({
this.emailSetting.set('email-setting' === targetID);
this.accountSetting.set('account-setting' === targetID);
this.announcementSetting.set('announcement-setting' === targetID);
+ this.layoutSetting.set('layout-setting' === targetID);
}
},
@@ -129,6 +131,25 @@ BlazeComponent.extendComponent({
},
+ saveLayout() {
+ this.setLoading(true);
+ $('li').removeClass('has-error');
+
+ try {
+ const productName = $('#product-name').val().trim();
+ Settings.update(Settings.findOne()._id, {
+ $set: {
+ 'productName': productName,
+ },
+ });
+ } catch (e) {
+ return;
+ } finally {
+ this.setLoading(false);
+ }
+
+ },
+
sendSMTPTestEmail() {
Meteor.call('sendSMTPTestEmail', (err, ret) => {
if (!err && ret) { /* eslint-disable no-console */
@@ -154,6 +175,7 @@ BlazeComponent.extendComponent({
'click button.js-email-invite': this.inviteThroughEmail,
'click button.js-save': this.saveMailServerInfo,
'click button.js-send-smtp-test-email': this.sendSMTPTestEmail,
+ 'click button.js-save-layout': this.saveLayout,
}];
},
}).register('setting');
diff --git a/client/components/settings/settingBody.styl b/client/components/settings/settingBody.styl
index fec64cee..7f8bd4c0 100644
--- a/client/components/settings/settingBody.styl
+++ b/client/components/settings/settingBody.styl
@@ -66,7 +66,8 @@
padding: 0 0.5rem
.admin-announcement,
- .invite-people
+ .invite-people,
+ .layout
padding-left 20px;
li
min-width: 500px;
diff --git a/docker-compose-build.yml b/docker-compose-build.yml
index b35d501a..faf32db1 100644
--- a/docker-compose-build.yml
+++ b/docker-compose-build.yml
@@ -44,7 +44,7 @@ services:
# If you disable Wekan API with 'false', Export Board does not work.
- WITH_API=true
# Optional: Integration with Matomo https://matomo.org that is installed to your server
- # The address of the server where Matomo is hosted.
+ # The address of the server where Matomo is hosted.
# example: - MATOMO_ADDRESS=https://example.com/matomo
- MATOMO_ADDRESS=''
# The value of the site ID given in Matomo server for Wekan
@@ -132,10 +132,10 @@ services:
# LDAP_BACKGROUND_SYNC_INTERVAL : At which interval does the background task sync in milliseconds
# example : LDAP_BACKGROUND_SYNC_INTERVAL=12345
- LDAP_BACKGROUND_SYNC_INTERVAL=100
- # LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED :
+ # LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED :
# example : LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=true
- LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=false
- # LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS :
+ # LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS :
# example : LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS=true
- LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS=false
# LDAP_ENCRYPTION : If using LDAPS
@@ -150,7 +150,7 @@ services:
# LDAP_USER_SEARCH_FILTER : Optional extra LDAP filters. Don't forget the outmost enclosing parentheses if needed
# example : LDAP_USER_SEARCH_FILTER=
- LDAP_USER_SEARCH_FILTER=''
- # LDAP_USER_SEARCH_SCOPE : Base (search only in the provided DN), one (search only in the provided DN and one level deep), or subtree (search the whole subtree)
+ # LDAP_USER_SEARCH_SCOPE : base (search only in the provided DN), one (search only in the provided DN and one level deep), or sub (search the whole subtree).
# example : LDAP_USER_SEARCH_SCOPE=one
- LDAP_USER_SEARCH_SCOPE=''
# LDAP_USER_SEARCH_FIELD : Which field is used to find the user
@@ -168,17 +168,17 @@ services:
# LDAP_GROUP_FILTER_OBJECTCLASS : The object class for filtering
# example : LDAP_GROUP_FILTER_OBJECTCLASS=group
- LDAP_GROUP_FILTER_OBJECTCLASS=''
- # LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE :
- # example :
+ # LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE :
+ # example :
- LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE=''
- # LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE :
- # example :
+ # LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE :
+ # example :
- LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE=''
- # LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT :
- # example :
+ # LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT :
+ # example :
- LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT=''
- # LDAP_GROUP_FILTER_GROUP_NAME :
- # example :
+ # LDAP_GROUP_FILTER_GROUP_NAME :
+ # example :
- LDAP_GROUP_FILTER_GROUP_NAME=''
# LDAP_UNIQUE_IDENTIFIER_FIELD : This field is sometimes class GUID (Globally Unique Identifier)
# example : LDAP_UNIQUE_IDENTIFIER_FIELD=guid
@@ -189,20 +189,20 @@ services:
# LDAP_USERNAME_FIELD : Which field contains the ldap username
# example : LDAP_USERNAME_FIELD=username
- LDAP_USERNAME_FIELD=''
- # LDAP_MERGE_EXISTING_USERS :
+ # LDAP_MERGE_EXISTING_USERS :
# example : LDAP_MERGE_EXISTING_USERS=true
- LDAP_MERGE_EXISTING_USERS=false
- # LDAP_SYNC_USER_DATA :
+ # LDAP_SYNC_USER_DATA :
# example : LDAP_SYNC_USER_DATA=true
- LDAP_SYNC_USER_DATA=false
- # LDAP_SYNC_USER_DATA_FIELDMAP :
+ # LDAP_SYNC_USER_DATA_FIELDMAP :
# example : LDAP_SYNC_USER_DATA_FIELDMAP={\"cn\":\"name\", \"mail\":\"email\"}
- LDAP_SYNC_USER_DATA_FIELDMAP=''
- # LDAP_SYNC_GROUP_ROLES :
- # example :
+ # LDAP_SYNC_GROUP_ROLES :
+ # example :
- LDAP_SYNC_GROUP_ROLES=''
# LDAP_DEFAULT_DOMAIN : The default domain of the ldap it is used to create email if the field is not map correctly with the LDAP_SYNC_USER_DATA_FIELDMAP
- # example :
+ # example :
- LDAP_DEFAULT_DOMAIN=''
depends_on:
diff --git a/docker-compose.yml b/docker-compose.yml
index e3b0c020..698d9c2b 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -31,7 +31,7 @@ services:
# If you disable Wekan API with 'false', Export Board does not work.
- WITH_API=true
# Optional: Integration with Matomo https://matomo.org that is installed to your server
- # The address of the server where Matomo is hosted.
+ # The address of the server where Matomo is hosted.
# example: - MATOMO_ADDRESS=https://example.com/matomo
- MATOMO_ADDRESS=''
# The value of the site ID given in Matomo server for Wekan
@@ -119,10 +119,10 @@ services:
# LDAP_BACKGROUND_SYNC_INTERVAL : At which interval does the background task sync in milliseconds
# example : LDAP_BACKGROUND_SYNC_INTERVAL=12345
- LDAP_BACKGROUND_SYNC_INTERVAL=100
- # LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED :
+ # LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED :
# example : LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=true
- LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=false
- # LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS :
+ # LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS :
# example : LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS=true
- LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS=false
# LDAP_ENCRYPTION : If using LDAPS
@@ -137,7 +137,7 @@ services:
# LDAP_USER_SEARCH_FILTER : Optional extra LDAP filters. Don't forget the outmost enclosing parentheses if needed
# example : LDAP_USER_SEARCH_FILTER=
- LDAP_USER_SEARCH_FILTER=''
- # LDAP_USER_SEARCH_SCOPE : Base (search only in the provided DN), one (search only in the provided DN and one level deep), or subtree (search the whole subtree)
+ # LDAP_USER_SEARCH_SCOPE : base (search only in the provided DN), one (search only in the provided DN and one level deep), or sub (search the whole subtree)
# example : LDAP_USER_SEARCH_SCOPE=one
- LDAP_USER_SEARCH_SCOPE=''
# LDAP_USER_SEARCH_FIELD : Which field is used to find the user
@@ -155,17 +155,17 @@ services:
# LDAP_GROUP_FILTER_OBJECTCLASS : The object class for filtering
# example : LDAP_GROUP_FILTER_OBJECTCLASS=group
- LDAP_GROUP_FILTER_OBJECTCLASS=''
- # LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE :
- # example :
+ # LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE :
+ # example :
- LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE=''
- # LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE :
- # example :
+ # LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE :
+ # example :
- LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE=''
- # LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT :
- # example :
+ # LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT :
+ # example :
- LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT=''
- # LDAP_GROUP_FILTER_GROUP_NAME :
- # example :
+ # LDAP_GROUP_FILTER_GROUP_NAME :
+ # example :
- LDAP_GROUP_FILTER_GROUP_NAME=''
# LDAP_UNIQUE_IDENTIFIER_FIELD : This field is sometimes class GUID (Globally Unique Identifier)
# example : LDAP_UNIQUE_IDENTIFIER_FIELD=guid
@@ -176,20 +176,20 @@ services:
# LDAP_USERNAME_FIELD : Which field contains the ldap username
# example : LDAP_USERNAME_FIELD=username
- LDAP_USERNAME_FIELD=''
- # LDAP_MERGE_EXISTING_USERS :
+ # LDAP_MERGE_EXISTING_USERS :
# example : LDAP_MERGE_EXISTING_USERS=true
- LDAP_MERGE_EXISTING_USERS=false
- # LDAP_SYNC_USER_DATA :
+ # LDAP_SYNC_USER_DATA :
# example : LDAP_SYNC_USER_DATA=true
- LDAP_SYNC_USER_DATA=false
- # LDAP_SYNC_USER_DATA_FIELDMAP :
+ # LDAP_SYNC_USER_DATA_FIELDMAP :
# example : LDAP_SYNC_USER_DATA_FIELDMAP={\"cn\":\"name\", \"mail\":\"email\"}
- LDAP_SYNC_USER_DATA_FIELDMAP=''
- # LDAP_SYNC_GROUP_ROLES :
- # example :
+ # LDAP_SYNC_GROUP_ROLES :
+ # example :
- LDAP_SYNC_GROUP_ROLES=''
# LDAP_DEFAULT_DOMAIN : The default domain of the ldap it is used to create email if the field is not map correctly with the LDAP_SYNC_USER_DATA_FIELDMAP
- # example :
+ # example :
- LDAP_DEFAULT_DOMAIN=''
depends_on:
diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json
index 2e52dcfb..e69101f0 100644
--- a/i18n/en.i18n.json
+++ b/i18n/en.i18n.json
@@ -612,5 +612,7 @@
"oauth2": "OAuth2",
"cas": "CAS",
"authentication-method": "Authentication method",
- "authentication-type": "Authentication type"
+ "authentication-type": "Authentication type",
+ "custom-product-name": "Custom Product Name",
+ "layout": "Layout"
}
diff --git a/models/settings.js b/models/settings.js
index 2f82e52f..c2a9bf01 100644
--- a/models/settings.js
+++ b/models/settings.js
@@ -28,6 +28,10 @@ Settings.attachSchema(new SimpleSchema({
type: String,
optional: true,
},
+ productName: {
+ type: String,
+ optional: true,
+ },
createdAt: {
type: Date,
denyUpdate: true,
diff --git a/server/migrations.js b/server/migrations.js
index 2ccda54d..5b9cc341 100644
--- a/server/migrations.js
+++ b/server/migrations.js
@@ -350,3 +350,15 @@ Migrations.add('remove-customFields-references-broken', () => {
},
}, noValidateMulti);
});
+
+Migrations.add('add-product-name', () => {
+ Settings.update({
+ productName: {
+ $exists: false,
+ },
+ }, {
+ $set: {
+ productName:'',
+ },
+ }, noValidateMulti);
+});
diff --git a/server/publications/settings.js b/server/publications/settings.js
index c2d9fdff..72538124 100644
--- a/server/publications/settings.js
+++ b/server/publications/settings.js
@@ -1,5 +1,5 @@
Meteor.publish('setting', () => {
- return Settings.find({}, {fields:{disableRegistration: 1}});
+ return Settings.find({}, {fields:{disableRegistration: 1, productName: 1}});
});
Meteor.publish('mailServer', function () {
diff --git a/snap-src/bin/config b/snap-src/bin/config
index 44d30baa..72508b5d 100755
--- a/snap-src/bin/config
+++ b/snap-src/bin/config
@@ -176,7 +176,7 @@ KEY_LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED="ldap-background-sync-keep-
DESCRIPTION_LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS=""
DEFAULT_LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS="false"
-KEY_LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS="ldap-background-sync-import-new-users"
+KEY_LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS="ldap-background-sync-import-new-users"
DESCRIPTION_LDAP_ENCRYPTION="If using LDAPS"
DEFAULT_LDAP_ENCRYPTION="false"
@@ -194,7 +194,7 @@ DESCRIPTION_LDAP_USER_SEARCH_FILTER="Optional extra LDAP filters. Don't forget t
DEFAULT_LDAP_USER_SEARCH_FILTER=""
KEY_LDAP_USER_SEARCH_FILTER="ldap-user-search-filter"
-DESCRIPTION_LDAP_USER_SEARCH_SCOPE="Base (search only in the provided DN), one (search only in the provided DN and one level deep), or subtree (search the whole subtree)."
+DESCRIPTION_LDAP_USER_SEARCH_SCOPE="base (search only in the provided DN), one (search only in the provided DN and one level deep), or sub (search the whole subtree). Example: one"
DEFAULT_LDAP_USER_SEARCH_SCOPE=""
KEY_LDAP_USER_SEARCH_SCOPE="ldap-user-search-scope"
diff --git a/snap-src/bin/wekan-help b/snap-src/bin/wekan-help
index 3af19336..c8144f9a 100755
--- a/snap-src/bin/wekan-help
+++ b/snap-src/bin/wekan-help
@@ -180,7 +180,7 @@ echo -e "Optional extra LDAP filters. Don't forget the outmost enclosing parenth
echo -e "\t$ snap set $SNAP_NAME LDAP_USER_SEARCH_FILTER=''"
echo -e "\n"
echo -e "Ldap User Search Scope."
-echo -e "Base (search only in the provided DN), one (search only in the provided DN and one level deep), or subtree (search the whole subtree):"
+echo -e "base (search only in the provided DN), one (search only in the provided DN and one level deep), or sub (search the whole subtree). Example: one"
echo -e "\t$ snap set $SNAP_NAME LDAP_USER_SEARCH_SCOPE=one"
echo -e "\n"
echo -e "Ldap User Search Field."