Custom Logo for Login and Top Left Corner. Optional link when clicking logo. Settings at Admin Panel / Layout.

Thanks to xet7 !

Fixes #1493,
fixes #2721,
fixes #2681,
fixes #1583,
fixes #1196,
fixes #336,
fixes wekan/wekan-snap#130
This commit is contained in:
Lauri Ojansivu 2020-09-18 18:45:48 +03:00
parent 7db08082bc
commit a7c3317ed6
10 changed files with 116 additions and 20 deletions

View file

@ -19,6 +19,19 @@ template(name="header")
= title
#header-new-board-icon
else
//-
On sandstorm, the logo shouldn't be clickable, because we only have one
page/document on it, and we don't want to see the home page containing
the list of all boards.
unless currentSetting.hideLogo
if currentSetting.customTopLeftCornerLogoImageUrl
if currentSetting.customTopLeftCornerLogoTargetUrl
a(href="{{currentSetting.customTopLeftCornerLogoTargetUrl}}")
img(src="{{currentSetting.customTopLeftCornerLogoImageUrl}}" height="27" width="auto" margin="0" padding="0")
unless currentSetting.customTopLeftCornerLogoTargetUrl
img(src="{{currentSetting.customTopLeftCornerLogoImageUrl}}" height="27" width="auto" margin="0" padding="0")
unless currentSetting.customTopLeftCornerLogoImageUrl
img(src="{{pathFor '/logo-header.png'}}" alt="")
ul
li
a(href="{{pathFor 'home'}}")
@ -52,17 +65,6 @@ template(name="header")
#header-main-bar(class="{{#if wrappedHeader}}wrapper{{/if}}")
+Template.dynamic(template=headerBar)
//unless hideLogo
//-
On sandstorm, the logo shouldn't be clickable, because we only have one
page/document on it, and we don't want to see the home page containing
the list of all boards.
// unless currentSetting.hideLogo
// a.wekan-logo(href="{{pathFor 'home'}}" title="{{_ 'header-logo-title'}}")
// img(src="{{pathFor '/logo-header.png'}}" alt="")
if appIsOffline
+offlineWarning

View file

@ -19,6 +19,23 @@ head
template(name="userFormsLayout")
section.auth-layout
if currentSetting.hideLogo
h1.at-form-landing-logo
br
br
unless currentSetting.hideLogo
h1.at-form-landing-logo
if currentSetting.customLoginLogoImageUrl
if currentSetting.customLoginLogoTargetUrl
a(href="{{currentSetting.customLoginLogoTargetUrl}}")
img(src="{{currentSetting.customLoginLogoImageUrl}}" width="300" height="auto")
br
unless currentSetting.customLoginLogoTargetUrl
img(src="{{currentSetting.customLoginLogoImageUrl}}" width="300" height="auto")
br
unless currentSetting.customLoginLogoImageUrl
img(src="{{pathFor '/wekan-logo.svg'}}" alt="" width="300" height="auto")
br
section.auth-dialog
if isLoading
+loader

View file

@ -447,7 +447,6 @@ a
flex-direction: column
align-items: center
justify-content: center
height: 100%
.auth-dialog
margin: 0 !important

View file

@ -163,13 +163,6 @@ template(name='announcementSettings')
template(name='layoutSettings')
ul#layout-setting.setting-detail
//li.layout-form
.title {{_ 'hide-logo'}}
.form-group.flex
input.wekan-form-control#hide-logo(type="radio" name="hideLogo" value="true" checked="{{#if currentSetting.hideLogo}}checked{{/if}}")
span {{_ 'yes'}}
input.wekan-form-control#hide-logo(type="radio" name="hideLogo" value="false" checked="{{#unless currentSetting.hideLogo}}checked{{/unless}}")
span {{_ 'no'}}
li.layout-form
.title {{_ 'display-authentication-method'}}
.form-group.flex
@ -184,10 +177,32 @@ template(name='layoutSettings')
.title {{_ 'custom-product-name'}}
.form-group
input.wekan-form-control#product-name(type="text", placeholder="" value="{{currentSetting.productName}}")
li.layout-form
.title {{_ 'hide-logo'}}
.form-group.flex
input.wekan-form-control#hide-logo(type="radio" name="hideLogo" value="true" checked="{{#if currentSetting.hideLogo}}checked{{/if}}")
span {{_ 'yes'}}
input.wekan-form-control#hide-logo(type="radio" name="hideLogo" value="false" checked="{{#unless currentSetting.hideLogo}}checked{{/unless}}")
span {{_ 'no'}}
li.layout-form
.title {{_ 'custom-login-logo-image-url'}}
.form-group
input.wekan-form-control#custom-login-logo-image-url(type="text", placeholder="" value="{{currentSetting.customLoginLogoImageUrl}}")
li.layout-form
.title {{_ 'custom-login-logo-target-url'}}
.form-group
input.wekan-form-control#custom-login-logo-target-url(type="text", placeholder="" value="{{currentSetting.customLoginLogoTargetUrl}}")
li.layout-form
.title {{_ 'custom-top-left-corner-logo-image-url'}}
.form-group
input.wekan-form-control#custom-top-left-corner-logo-image-url(type="text", placeholder="" value="{{currentSetting.customTopLeftCornerLogoImageUrl}}")
li.layout-form
.title {{_ 'custom-top-left-corner-logo-target-url'}}
.form-group
input.wekan-form-control#custom-top-left-corner-logo-target-url(type="text", placeholder="" value="{{currentSetting.customTopLeftCornerLogoTargetUrl}}")
li
button.js-save-layout.primary {{_ 'save'}}
template(name='selectAuthenticationMethod')
select#defaultAuthenticationMethod
each authentications

View file

@ -167,6 +167,22 @@ BlazeComponent.extendComponent({
const productName = $('#product-name')
.val()
.trim();
const customLoginLogoImageUrl = $('#custom-login-logo-image-url')
.val()
.trim();
const customLoginLogoTargetUrl = $('#custom-login-logo-target-url')
.val()
.trim();
const customTopLeftCornerLogoImageUrl = $(
'#custom-top-left-corner-logo-image-url',
)
.val()
.trim();
const customTopLeftCornerLogoTargetUrl = $(
'#custom-top-left-corner-logo-target-url',
)
.val()
.trim();
const hideLogoChange = $('input[name=hideLogo]:checked').val() === 'true';
const displayAuthenticationMethod =
$('input[name=displayAuthenticationMethod]:checked').val() === 'true';
@ -177,6 +193,10 @@ BlazeComponent.extendComponent({
$set: {
productName,
hideLogo: hideLogoChange,
customLoginLogoImageUrl,
customLoginLogoTargetUrl,
customTopLeftCornerLogoImageUrl,
customTopLeftCornerLogoTargetUrl,
displayAuthenticationMethod,
defaultAuthenticationMethod,
},

View file

@ -511,9 +511,15 @@
"unassign-member": "Unassign member",
"unsaved-description": "You have an unsaved description.",
"unwatch": "Unwatch",
"url-when-custom-login-logo-clicked": "URL when Custom Login Logo clicked",
"url-when-custom-top-left-corner-logo-clicked": "URL when Custom Top Left Corner Logo clicked",
"upload": "Upload",
"upload-avatar": "Upload an avatar",
"uploaded-avatar": "Uploaded an avatar",
"custom-top-left-corner-logo-image-url": "Custom Top Left Corner Logo Image URL",
"custom-top-left-corner-logo-target-url": "Custom Top Left Corner Logo Target URL",
"custom-login-logo-image-url": "Custom Login Logo Image URL",
"custom-login-logo-target-url": "Custom Login Logo Target URL",
"username": "Username",
"view-it": "View it",
"warn-list-archived": "warning: this card is in an list at Archive",

View file

@ -45,6 +45,22 @@ Settings.attachSchema(
type: Boolean,
optional: true,
},
customLoginLogoImageUrl: {
type: String,
optional: true,
},
customLoginLogoTargetUrl: {
type: String,
optional: true,
},
customTopLeftCornerLogoImageUrl: {
type: String,
optional: true,
},
customTopLeftCornerLogoTargetUrl: {
type: String,
optional: true,
},
createdAt: {
type: Date,
denyUpdate: true,

1
public/wekan-logo.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.7 KiB

View file

@ -1044,3 +1044,19 @@ Migrations.add('add-default-profile-view', () => {
}
});
});
Migrations.add('add-hide-logo-by-default', () => {
Settings.update(
{
hideLogo: {
hideLogo: false,
},
},
{
$set: {
hideLogo: true,
},
},
noValidateMulti,
);
});

View file

@ -12,6 +12,10 @@ Meteor.publish('setting', () => {
disableRegistration: 1,
productName: 1,
hideLogo: 1,
customLoginLogoImageUrl: 1,
customLoginLogoTargetUrl: 1,
customTopLeftCornerLogoImageUrl: 1,
customTopLeftCornerLogoTargetUrl: 1,
customHTMLafterBodyStart: 1,
customHTMLbeforeBodyEnd: 1,
displayAuthenticationMethod: 1,