diff options
author | Lauri Ojansivu <x@xet7.org> | 2018-10-24 11:39:45 +0300 |
---|---|---|
committer | Lauri Ojansivu <x@xet7.org> | 2018-10-24 11:39:45 +0300 |
commit | 4cb25a5bcf5263f9c803a0a1d4ceaf6a9e5db75f (patch) | |
tree | c326c9d45b947ec9a0eb810ea503696e4a443032 | |
parent | 82e90f7b9424eba55435150fca8f878ac05e8634 (diff) | |
download | wekan-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.jade | 16 | ||||
-rw-r--r-- | client/components/settings/settingBody.js | 22 | ||||
-rw-r--r-- | client/components/settings/settingBody.styl | 3 | ||||
-rw-r--r-- | docker-compose-build.yml | 36 | ||||
-rw-r--r-- | docker-compose.yml | 36 | ||||
-rw-r--r-- | i18n/en.i18n.json | 4 | ||||
-rw-r--r-- | models/settings.js | 4 | ||||
-rw-r--r-- | server/migrations.js | 12 | ||||
-rw-r--r-- | server/publications/settings.js | 2 | ||||
-rwxr-xr-x | snap-src/bin/config | 4 | ||||
-rwxr-xr-x | snap-src/bin/wekan-help | 2 |
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." |