- More whitelabeling.
Thanks to xet7 !
|
@ -310,7 +310,7 @@ RUN \
|
||||||
cd /home/wekan/app &&\
|
cd /home/wekan/app &&\
|
||||||
mkdir -p ./public/api && \
|
mkdir -p ./public/api && \
|
||||||
python3 ./openapi/generate_openapi.py --release $(git describe --tags --abbrev=0) > ./public/api/wekan.yml && \
|
python3 ./openapi/generate_openapi.py --release $(git describe --tags --abbrev=0) > ./public/api/wekan.yml && \
|
||||||
/opt/nodejs/bin/api2html -c ./public/wekan-logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml; \
|
/opt/nodejs/bin/api2html -c ./public/logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml; \
|
||||||
# Build app
|
# Build app
|
||||||
cd /home/wekan/app && \
|
cd /home/wekan/app && \
|
||||||
gosu wekan:wekan /home/wekan/.meteor/meteor add standard-minifier-js && \
|
gosu wekan:wekan /home/wekan/.meteor/meteor add standard-minifier-js && \
|
||||||
|
|
|
@ -45,15 +45,16 @@ template(name="header")
|
||||||
#header-main-bar(class="{{#if wrappedHeader}}wrapper{{/if}}")
|
#header-main-bar(class="{{#if wrappedHeader}}wrapper{{/if}}")
|
||||||
+Template.dynamic(template=headerBar)
|
+Template.dynamic(template=headerBar)
|
||||||
|
|
||||||
unless hideLogo
|
//unless hideLogo
|
||||||
|
|
||||||
//-
|
//-
|
||||||
On sandstorm, the logo shouldn't be clickable, because we only have one
|
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
|
page/document on it, and we don't want to see the home page containing
|
||||||
the list of all boards.
|
the list of all boards.
|
||||||
unless currentSetting.hideLogo
|
|
||||||
a.wekan-logo(href="{{pathFor 'home'}}" title="{{_ 'header-logo-title'}}")
|
// unless currentSetting.hideLogo
|
||||||
img(src="{{pathFor '/wekan-logo-header.png'}}" alt="Wekan")
|
// a.wekan-logo(href="{{pathFor 'home'}}" title="{{_ 'header-logo-title'}}")
|
||||||
|
// img(src="{{pathFor '/logo-header.png'}}" alt="")
|
||||||
|
|
||||||
if appIsOffline
|
if appIsOffline
|
||||||
+offlineWarning
|
+offlineWarning
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
head
|
head
|
||||||
title Wekan
|
title ""
|
||||||
meta(name="viewport"
|
meta(name="viewport"
|
||||||
content="maximum-scale=1.0,width=device-width,initial-scale=1.0,user-scalable=0")
|
content="maximum-scale=1.0,width=device-width,initial-scale=1.0,user-scalable=0")
|
||||||
meta(http-equiv="X-UA-Compatible" content="IE=edge")
|
meta(http-equiv="X-UA-Compatible" content="IE=edge")
|
||||||
|
@ -7,20 +7,20 @@ head
|
||||||
where the application is deployed with a path prefix, but it seems to be
|
where the application is deployed with a path prefix, but it seems to be
|
||||||
difficult to do that cleanly with Blaze -- at least without adding extra
|
difficult to do that cleanly with Blaze -- at least without adding extra
|
||||||
packages.
|
packages.
|
||||||
link(rel="shortcut icon" href="/wekan-favicon.png")
|
link(rel="shortcut icon" href="/favicon.png")
|
||||||
link(rel="apple-touch-icon" href="/wekan-favicon.png")
|
link(rel="apple-touch-icon" href="/favicon.png")
|
||||||
link(rel="mask-icon" href="/wekan-150.svg")
|
link(rel="mask-icon" href="/logo-150.svg")
|
||||||
link(rel="manifest" href="/wekan-manifest.json")
|
link(rel="manifest" href="/manifest.json")
|
||||||
|
|
||||||
template(name="userFormsLayout")
|
template(name="userFormsLayout")
|
||||||
section.auth-layout
|
section.auth-layout
|
||||||
if currentSetting.hideLogo
|
//if currentSetting.hideLogo
|
||||||
h1
|
h1
|
||||||
br
|
br
|
||||||
br
|
br
|
||||||
else
|
//else
|
||||||
h1.at-form-landing-logo
|
// h1.at-form-landing-logo
|
||||||
img(src="{{pathFor '/wekan-logo.png'}}" alt="Wekan")
|
// img(src="{{pathFor '/logo.png'}}" alt="")
|
||||||
section.auth-dialog
|
section.auth-dialog
|
||||||
+Template.dynamic(template=content)
|
+Template.dynamic(template=content)
|
||||||
if currentSetting.displayAuthenticationMethod
|
if currentSetting.displayAuthenticationMethod
|
||||||
|
|
|
@ -134,7 +134,7 @@ template(name='announcementSettings')
|
||||||
|
|
||||||
template(name='layoutSettings')
|
template(name='layoutSettings')
|
||||||
ul#layout-setting.setting-detail
|
ul#layout-setting.setting-detail
|
||||||
li.layout-form
|
//li.layout-form
|
||||||
.title {{_ 'hide-logo'}}
|
.title {{_ 'hide-logo'}}
|
||||||
.form-group.flex
|
.form-group.flex
|
||||||
input.form-control#hide-logo(type="radio" name="hideLogo" value="true" checked="{{#if currentSetting.hideLogo}}checked{{/if}}")
|
input.form-control#hide-logo(type="radio" name="hideLogo" value="true" checked="{{#if currentSetting.hideLogo}}checked{{/if}}")
|
||||||
|
@ -154,7 +154,7 @@ template(name='layoutSettings')
|
||||||
li.layout-form
|
li.layout-form
|
||||||
.title {{_ 'custom-product-name'}}
|
.title {{_ 'custom-product-name'}}
|
||||||
.form-group
|
.form-group
|
||||||
input.form-control#product-name(type="text", placeholder="Wekan" value="{{currentSetting.productName}}")
|
input.form-control#product-name(type="text", placeholder="" value="{{currentSetting.productName}}")
|
||||||
li.layout-form
|
li.layout-form
|
||||||
.title {{_ 'add-custom-html-after-body-start'}}
|
.title {{_ 'add-custom-html-after-body-start'}}
|
||||||
textarea#customHTMLafterBodyStart.form-control= currentSetting.customHTMLafterBodyStart
|
textarea#customHTMLafterBodyStart.form-control= currentSetting.customHTMLafterBodyStart
|
||||||
|
|
|
@ -52,6 +52,10 @@
|
||||||
|
|
||||||
.main-body
|
.main-body
|
||||||
padding: 0.1em 1em
|
padding: 0.1em 1em
|
||||||
|
-webkit-user-select: auto // Safari 3.1+
|
||||||
|
-moz-user-select: auto // Firefox 2+
|
||||||
|
-ms-user-select: auto // IE 10+
|
||||||
|
user-select: auto // Standard syntax
|
||||||
|
|
||||||
ul
|
ul
|
||||||
li
|
li
|
||||||
|
|
|
@ -184,7 +184,7 @@ window.Popup = new class {
|
||||||
// positives.
|
// positives.
|
||||||
const title = TAPi18n.__(translationKey);
|
const title = TAPi18n.__(translationKey);
|
||||||
// when popup showed as full of small screen, we need a default header to clearly see [X] button
|
// when popup showed as full of small screen, we need a default header to clearly see [X] button
|
||||||
const defaultTitle = Utils.isMiniScreen() ? 'Wekan' : false;
|
const defaultTitle = Utils.isMiniScreen() ? '' : false;
|
||||||
return title !== translationKey ? title : defaultTitle;
|
return title !== translationKey ? title : defaultTitle;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -231,7 +231,7 @@ if (Meteor.isServer) {
|
||||||
const setting = Settings.findOne({});
|
const setting = Settings.findOne({});
|
||||||
if (!setting.productName) {
|
if (!setting.productName) {
|
||||||
return {
|
return {
|
||||||
productName: 'Wekan',
|
productName: '',
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
return {
|
return {
|
||||||
|
|
|
@ -20,7 +20,7 @@ Now that we have the OpenAPI, it's easy enough to convert the YAML file into som
|
||||||
[shins](https://github.com/Mermade/shins) and [api2html](https://github.com/tobilg/api2html),
|
[shins](https://github.com/Mermade/shins) and [api2html](https://github.com/tobilg/api2html),
|
||||||
or even [ReDoc](https://github.com/Rebilly/ReDoc):
|
or even [ReDoc](https://github.com/Rebilly/ReDoc):
|
||||||
|
|
||||||
api2html -c ../public/wekan-logo-header.png -o api.html ../public/wekan_api.yml
|
api2html -c ../public/logo-header.png -o api.html ../public/wekan_api.yml
|
||||||
|
|
||||||
or
|
or
|
||||||
|
|
||||||
|
|
Before Width: | Height: | Size: 756 B After Width: | Height: | Size: 756 B |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 5 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
@ -1,16 +1,16 @@
|
||||||
{
|
{
|
||||||
"name": "Wekan",
|
"name": "Kanban",
|
||||||
"short_name": "Wekan",
|
"short_name": "Kanban",
|
||||||
"description": "The open-source Trello-like kanban",
|
"description": "The open-source kanban",
|
||||||
"lang": "en-US",
|
"lang": "en-US",
|
||||||
"icons": [
|
"icons": [
|
||||||
{
|
{
|
||||||
"src": "/wekan-150.png",
|
"src": "/logo-150.png",
|
||||||
"type": "image/png",
|
"type": "image/png",
|
||||||
"sizes": "150x150"
|
"sizes": "150x150"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "/wekan-150.svg",
|
"src": "/logo-150.svg",
|
||||||
"type": "image/svg+xml",
|
"type": "image/svg+xml",
|
||||||
"sizes": "150x150"
|
"sizes": "150x150"
|
||||||
}
|
}
|
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.2 KiB |
|
@ -115,7 +115,7 @@ parts:
|
||||||
# we temporary need api2html and mkdirp
|
# we temporary need api2html and mkdirp
|
||||||
npm install -g api2html
|
npm install -g api2html
|
||||||
npm install -g mkdirp
|
npm install -g mkdirp
|
||||||
api2html -c ./public/wekan-logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml
|
api2html -c ./public/logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml
|
||||||
npm uninstall -g mkdirp
|
npm uninstall -g mkdirp
|
||||||
npm uninstall -g api2html
|
npm uninstall -g api2html
|
||||||
# Node Fibers 100% CPU usage issue:
|
# Node Fibers 100% CPU usage issue:
|
||||||
|
|