Use static logo in sidebar navigation

Signed-off-by: Michael Mayer <michael@liquidbytes.net>
This commit is contained in:
Michael Mayer 2020-06-26 16:11:56 +02:00
parent 4aa7b6cc97
commit 1fb8b5cd63
41 changed files with 86 additions and 81 deletions

View file

@ -0,0 +1,19 @@
<svg id="b96c2bed-161d-4a6a-88f8-007e67c638f7" data-name="Logo" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 283.46 283.46">
<defs>
<style>
.bbbce7e6-9f7c-4bc7-b65d-f87c42553021{fill:url(#b5078497-905e-430d-8c08-43e741159356);}.b35d0c34-aac5-4d6b-a247-c101a4f12738{fill:none;stroke:#eee;stroke-miterlimit:10;stroke-width:7px;}
</style>
<linearGradient id="b5078497-905e-430d-8c08-43e741159356" x1="75.44" y1="26.92" x2="208.02" y2="256.55"
gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#dab1d3"/>
<stop offset="0.01" stop-color="#d84793"/>
<stop offset="0.51" stop-color="#d6d900"/>
<stop offset="0.76" stop-color="#1eb7c8"/>
<stop offset="1" stop-color="#3c55a2"/>
</linearGradient>
</defs>
<circle class="bbbce7e6-9f7c-4bc7-b65d-f87c42553021" cx="141.73" cy="141.73" r="132.55"/>
<path id="ad49426f-1fb1-4b02-9f9e-efa82492899f" data-name="Logo Pfad" class="b35d0c34-aac5-4d6b-a247-c101a4f12738"
d="M233.41,185.29l-4.62,25.54M40.41,186.13l15.2,15.06M157.05,55.31,55.65,200.75a.11.11,0,0,0,.08.16l172.9,9.91a.1.1,0,0,0,.09-.14L157.23,55.32A.1.1,0,0,0,157.05,55.31ZM136.16,41.24,40,185.93a.13.13,0,0,0,.11.2l192.76-.84a.13.13,0,0,0,.1-.2L136.38,41.24A.13.13,0,0,0,136.16,41.24Zm.12-.16,20.87,14.08"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

Before

Width:  |  Height:  |  Size: 510 KiB

After

Width:  |  Height:  |  Size: 510 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

View file

Before

Width:  |  Height:  |  Size: 676 B

After

Width:  |  Height:  |  Size: 676 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

View file

@ -3,7 +3,7 @@
"name": "PhotoPrism",
"icons": [
{
"src": "/static/favicons/favicon.png",
"src": "/static/img/favicon.png",
"sizes": "723x729",
"type": "image/png"
}

View file

@ -1 +0,0 @@
<svg id="aada7afb-57cb-4a2f-9ce3-d521148cffca" data-name="Logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 283.46 283.46"><defs><style>.ef58eb60-643f-42ae-a72e-16eb946c6bd0{fill:none;stroke:#1d1d1b;stroke-miterlimit:10;stroke-width:5px;}</style></defs><path id="f89ef285-ae36-434c-b97c-f4d23d413907" data-name="Logo Pfad" class="ef58eb60-643f-42ae-a72e-16eb946c6bd0" d="M263.24,206.16l-5.8,32.09m-236.61-31,19.09,18.91M167.34,42.91,40,225.58a.13.13,0,0,0,.1.2l217.16,12.45a.12.12,0,0,0,.12-.17L167.55,42.93A.12.12,0,0,0,167.34,42.91ZM141.1,25.24,20.25,207a.16.16,0,0,0,.14.25l242.1-1.05a.17.17,0,0,0,.14-.26L141.37,25.24A.16.16,0,0,0,141.1,25.24Zm.14-.21,26.22,17.7"/></svg>

Before

Width:  |  Height:  |  Size: 679 B

View file

@ -1 +0,0 @@
<svg id="fd7d12b2-7955-4c74-8a9f-596890fb42bc" data-name="Logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 283.46 283.46"><defs><style>.a689307f-cb30-4208-94fd-7cb41314ae7b{fill:none;stroke:#1d1d1b;stroke-miterlimit:10;stroke-width:6px;}</style></defs><path id="f762f87b-8f47-4f76-a6bd-499669f269d9" data-name="Logo Pfad" class="a689307f-cb30-4208-94fd-7cb41314ae7b" d="M263.24,206.16l-5.8,32.09m-236.61-31,19.09,18.91M167.34,42.91,40,225.58a.13.13,0,0,0,.1.2l217.16,12.45a.12.12,0,0,0,.12-.17L167.55,42.93A.12.12,0,0,0,167.34,42.91ZM141.1,25.24,20.25,207a.16.16,0,0,0,.14.25l242.1-1.05a.17.17,0,0,0,.14-.26L141.37,25.24A.16.16,0,0,0,141.1,25.24Zm.14-.21,26.22,17.7"/></svg>

Before

Width:  |  Height:  |  Size: 679 B

View file

@ -1 +0,0 @@
<svg id="e2fba15c-1867-47be-8ea5-1e47bc66eb28" data-name="Logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 283.46 283.46"><defs><style>.a45bbecd-4f41-4ae1-ad91-79b2603a7a49{fill:none;stroke:#1d1d1b;stroke-miterlimit:10;stroke-width:7px;}</style></defs><path id="be878b2a-1320-43bb-9fe9-af073b68769c" data-name="Logo Pfad" class="a45bbecd-4f41-4ae1-ad91-79b2603a7a49" d="M263.24,206.16l-5.8,32.09m-236.61-31,19.09,18.91M167.34,42.91,40,225.58a.13.13,0,0,0,.1.2l217.16,12.45a.12.12,0,0,0,.12-.17L167.55,42.93A.12.12,0,0,0,167.34,42.91ZM141.1,25.24,20.25,207a.16.16,0,0,0,.14.25l242.1-1.05a.17.17,0,0,0,.14-.26L141.37,25.24A.16.16,0,0,0,141.1,25.24Zm.14-.21,26.22,17.7"/></svg>

Before

Width:  |  Height:  |  Size: 679 B

View file

@ -1 +0,0 @@
<svg id="b6f816b8-2ec9-4341-9df4-026397ed8ecb" data-name="Logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 283.46 283.46"><defs><style>.ba518a38-ee1f-413e-9d3c-314e98d01903{fill:none;stroke:#1d1d1b;stroke-miterlimit:10;stroke-width:4px;}</style></defs><path id="e47e55cb-4800-4b2c-9d8d-6a55eeeef919" data-name="Logo Pfad" class="ba518a38-ee1f-413e-9d3c-314e98d01903" d="M263.24,206.16l-5.8,32.09m-236.61-31,19.09,18.91M167.34,42.91,40,225.58a.13.13,0,0,0,.1.2l217.16,12.45a.12.12,0,0,0,.12-.17L167.55,42.93A.12.12,0,0,0,167.34,42.91ZM141.1,25.24,20.25,207a.16.16,0,0,0,.14.25l242.1-1.05a.17.17,0,0,0,.14-.26L141.37,25.24A.16.16,0,0,0,141.1,25.24Zm.14-.21,26.22,17.7"/></svg>

Before

Width:  |  Height:  |  Size: 679 B

View file

@ -1 +0,0 @@
<svg id="b01a508d-b59d-44f0-8be5-eca2aadd9bc2" data-name="Ebene 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 253.78 224.78"><defs><style>.abae6701-d59a-4183-bf31-f7ca6639fed3,.e9c06423-71c9-47d7-ac4f-57ab05968afa{fill:none;}.e9270bc6-2df5-4c14-bf42-90cfc87d474b{clip-path:url(#ba383851-496a-4a7b-95ff-56b7a97252c7);}.e9c06423-71c9-47d7-ac4f-57ab05968afa{stroke:#000;stroke-miterlimit:10;stroke-width:3px;}</style><clipPath id="ba383851-496a-4a7b-95ff-56b7a97252c7"><rect class="abae6701-d59a-4183-bf31-f7ca6639fed3" x="-47.38" y="5.33" width="370.54" height="215.11"/></clipPath></defs><g class="e9270bc6-2df5-4c14-bf42-90cfc87d474b"><path class="e9c06423-71c9-47d7-ac4f-57ab05968afa" d="M248.26,187.21l-5.79,32m-236.15-31,19.06,18.88M152.54,24.27,25.43,206.59a.13.13,0,0,0,.09.2l216.74,12.43a.13.13,0,0,0,.12-.18L152.76,24.29A.13.13,0,0,0,152.54,24.27ZM126.35,6.64,5.74,188a.16.16,0,0,0,.14.25l241.63-1a.16.16,0,0,0,.14-.25L126.63,6.64A.17.17,0,0,0,126.35,6.64Zm.15-.21,26.17,17.66"/></g></svg>

Before

Width:  |  Height:  |  Size: 1 KiB

View file

@ -1 +0,0 @@
<svg id="f0412afa-f5ff-46c0-a8cf-32eccda5603a" data-name="Logo" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 283.46 283.46"><defs><style>.ba6471e3-f613-4f0c-8400-79fcd950c464{fill:none;stroke-miterlimit:10;stroke-width:7px;stroke:url(#a4d62fc3-123d-4106-920d-b4b95dd64fd7);}</style><linearGradient id="a4d62fc3-123d-4106-920d-b4b95dd64fd7" x1="61.09" y1="67.37" x2="185.88" y2="283.5" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#dab1d3"/><stop offset="0" stop-color="#d84793"/><stop offset="0.36" stop-color="#d6d900"/><stop offset="0.67" stop-color="#1eb7c8"/><stop offset="1" stop-color="#3c55a2"/></linearGradient></defs><path id="ffceab35-e25b-42bd-8037-c2b62b686bc4" data-name="Logo Pfad" class="ba6471e3-f613-4f0c-8400-79fcd950c464" d="M263.24,206.16l-5.8,32.09m-236.61-31,19.09,18.91M167.34,42.91,40,225.58a.13.13,0,0,0,.1.2l217.16,12.45a.12.12,0,0,0,.12-.17L167.55,42.93A.12.12,0,0,0,167.34,42.91ZM141.1,25.24,20.25,207a.16.16,0,0,0,.14.25l242.1-1.05a.17.17,0,0,0,.14-.26L141.37,25.24A.16.16,0,0,0,141.1,25.24Zm.14-.21,26.22,17.7"/></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -1 +0,0 @@
<svg id="b96c2bed-161d-4a6a-88f8-007e67c638f7" data-name="Logo" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 283.46 283.46"><defs><style>.bbbce7e6-9f7c-4bc7-b65d-f87c42553021{fill:url(#b5078497-905e-430d-8c08-43e741159356);}.b35d0c34-aac5-4d6b-a247-c101a4f12738{fill:none;stroke:#fff;stroke-miterlimit:10;stroke-width:5px;}</style><linearGradient id="b5078497-905e-430d-8c08-43e741159356" x1="75.44" y1="26.92" x2="208.02" y2="256.55" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#dab1d3"/><stop offset="0.01" stop-color="#d84793"/><stop offset="0.51" stop-color="#d6d900"/><stop offset="0.76" stop-color="#1eb7c8"/><stop offset="1" stop-color="#3c55a2"/></linearGradient></defs><circle class="bbbce7e6-9f7c-4bc7-b65d-f87c42553021" cx="141.73" cy="141.73" r="132.55"/><path id="ad49426f-1fb1-4b02-9f9e-efa82492899f" data-name="Logo Pfad" class="b35d0c34-aac5-4d6b-a247-c101a4f12738" d="M233.41,185.29l-4.62,25.54M40.41,186.13l15.2,15.06M157.05,55.31,55.65,200.75a.11.11,0,0,0,.08.16l172.9,9.91a.1.1,0,0,0,.09-.14L157.23,55.32A.1.1,0,0,0,157.05,55.31ZM136.16,41.24,40,185.93a.13.13,0,0,0,.11.2l192.76-.84a.13.13,0,0,0,.1-.2L136.38,41.24A.13.13,0,0,0,136.16,41.24Zm.12-.16,20.87,14.08"/></svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -1 +0,0 @@
<svg id="b14cd102-2241-4742-aeeb-4ebca536e025" data-name="Ebene 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 342.77 342.77"><defs><style>.e973c102-193a-465f-a6ce-238077277871,.fc6d24c6-9a63-4383-a118-2195cb69577d{fill:none;}.bb0146b0-9b01-4116-a7e2-79b9809a5f83{clip-path:url(#aced1c04-d137-4184-b323-97ff0384d552);}.b8904b42-fb62-4aa5-aae5-dc17759b185d{clip-path:url(#ed8c2ee9-6712-480b-97dc-53fde4d07a40);}.e973c102-193a-465f-a6ce-238077277871{stroke:#141412;stroke-miterlimit:10;stroke-width:3px;}.f5ddff88-48c1-46f9-a031-aee9bce94bd6{clip-path:url(#a1251993-bbf1-4548-8238-fa794c0bb4e3);}.ead6f749-dce3-444a-a4f2-acc8f3078dec{clip-path:url(#be2d8169-fac1-479f-9595-ff9fe03b48a4);}.a34fac52-8499-4455-a7f4-105abc9df09b,.f18ba0a9-054f-4ae5-b0d0-1c52cbadb98f{font-size:63px;fill:#141412;}.a34fac52-8499-4455-a7f4-105abc9df09b{font-family:Roboto-Regular, Roboto;}.beccc81f-4365-4373-9899-0d823daf22a9{letter-spacing:0.01em;}.ec36acec-7560-4cc7-a996-f8eb36ef5fbb{letter-spacing:0.01em;}.bf8a9fd3-72ac-44b7-b1db-6841c2e3b7c3{letter-spacing:0.01em;}.ab7ea333-5d0f-46b3-aa31-a0e9b6a570d5{letter-spacing:-0.01em;}.f18ba0a9-054f-4ae5-b0d0-1c52cbadb98f{font-family:Roboto-Light, Roboto;font-weight:300;letter-spacing:0em;}.a1c74a14-667e-420f-8ecb-79364b36eb33{letter-spacing:0.01em;}.a5f515e4-173e-416e-b367-cf57e24c9bf3{letter-spacing:0em;}.b6eb0847-9369-4e0b-bcf6-7f9ec038fd4c{letter-spacing:0em;}.e138f84f-74e3-43c0-81f5-2b4cc59558be{letter-spacing:0em;}</style><clipPath id="aced1c04-d137-4184-b323-97ff0384d552"><rect class="fc6d24c6-9a63-4383-a118-2195cb69577d" x="12.89" y="201.65" width="321" height="126"/></clipPath><clipPath id="ed8c2ee9-6712-480b-97dc-53fde4d07a40"><rect class="fc6d24c6-9a63-4383-a118-2195cb69577d" x="-44.79" y="40.23" width="457.74" height="262.31"/></clipPath><clipPath id="a1251993-bbf1-4548-8238-fa794c0bb4e3"><rect class="fc6d24c6-9a63-4383-a118-2195cb69577d" x="58.39" y="20.65" width="232" height="126"/></clipPath><clipPath id="be2d8169-fac1-479f-9595-ff9fe03b48a4"><rect class="fc6d24c6-9a63-4383-a118-2195cb69577d" x="-46.29" y="40.23" width="457.74" height="262.31"/></clipPath></defs><g class="bb0146b0-9b01-4116-a7e2-79b9809a5f83"><g class="b8904b42-fb62-4aa5-aae5-dc17759b185d"><path class="e973c102-193a-465f-a6ce-238077277871" d="M319.18,262l-7.06,39.05m-288-37.76,23.24,23m155.07-223-155,222.31a.17.17,0,0,0,.12.25L311.86,301a.15.15,0,0,0,.15-.22L202.72,63.35A.15.15,0,0,0,202.46,63.33ZM170.52,41.82,23.45,263a.2.2,0,0,0,.17.31L318.27,262a.2.2,0,0,0,.16-.31L170.86,41.82A.21.21,0,0,0,170.52,41.82Zm.18-.25,31.91,21.54"/></g></g><g class="f5ddff88-48c1-46f9-a031-aee9bce94bd6"><g class="ead6f749-dce3-444a-a4f2-acc8f3078dec"><path class="e973c102-193a-465f-a6ce-238077277871" d="M317.68,262l-7.06,39.05m-288-37.76,23.24,23M201,63.33,46,285.64a.17.17,0,0,0,.12.25L310.36,301a.15.15,0,0,0,.15-.22L201.22,63.35A.15.15,0,0,0,201,63.33ZM169,41.82,22,263a.2.2,0,0,0,.17.31L316.77,262a.2.2,0,0,0,.16-.31L169.36,41.82A.21.21,0,0,0,169,41.82Zm.18-.25,31.91,21.54"/></g></g><text class="a34fac52-8499-4455-a7f4-105abc9df09b" transform="translate(5.42 195.82)"><tspan class="beccc81f-4365-4373-9899-0d823daf22a9">P</tspan><tspan class="ec36acec-7560-4cc7-a996-f8eb36ef5fbb" x="40.37" y="0">h</tspan><tspan class="bf8a9fd3-72ac-44b7-b1db-6841c2e3b7c3" x="75.83" y="0">o</tspan><tspan class="ab7ea333-5d0f-46b3-aa31-a0e9b6a570d5" x="112.33" y="0">t</tspan><tspan x="132.53" y="0">o</tspan></text><text class="f18ba0a9-054f-4ae5-b0d0-1c52cbadb98f" transform="translate(174.45 195.82)">P<tspan class="a1c74a14-667e-420f-8ecb-79364b36eb33" x="38.98" y="0">r</tspan><tspan class="a5f515e4-173e-416e-b367-cf57e24c9bf3" x="60.68" y="0">i</tspan><tspan class="b6eb0847-9369-4e0b-bcf6-7f9ec038fd4c" x="74.55" y="0">s</tspan><tspan class="e138f84f-74e3-43c0-81f5-2b4cc59558be" x="106.76" y="0">m</tspan></text></svg>

Before

Width:  |  Height:  |  Size: 3.8 KiB

View file

@ -1 +0,0 @@
<svg id="a0b199e9-6da2-46f8-8ebb-dd71d98aec02" data-name="Ebene 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 337.21 337.21"><defs><style>.a10ae2a7-444f-4254-a900-9c11d0ab8904,.b267ac74-1357-45cc-aa87-7cd83fecb121{fill:none;}.f7705130-cc59-414a-bb85-8537518d623b{clip-path:url(#a837ef03-6a65-4834-a0ae-07625eb90654);}.f54c38d1-bc6a-4aa5-8958-7189a4ae180b{clip-path:url(#b4582fdc-eb91-41a0-add5-069bf284b444);}.b267ac74-1357-45cc-aa87-7cd83fecb121{stroke:#fff;stroke-miterlimit:10;stroke-width:3px;}.be83b9b2-08bd-401d-b1b1-ba9de8e1e578{clip-path:url(#a433b5fa-a934-4b9f-9502-df7b281a6109);}.b7a9375a-f86a-40c6-b6d3-399c93347273{clip-path:url(#fba42c6c-43e1-4c2e-bd9b-1b9b8b9554b5);}.a7db60ef-bef9-48d1-bb7b-04bd1dc72af8,.b18d31a8-c3f3-4259-99bf-648b06fee602{font-size:62.49px;fill:#fff;}.b18d31a8-c3f3-4259-99bf-648b06fee602{font-family:Roboto-Regular, Roboto;}.e8c9e044-ce23-43de-95f1-8615ad27c8d9{letter-spacing:0.01em;}.ac82161d-9a49-4543-812c-bd7339e86130{letter-spacing:0.01em;}.ac60d1b6-fa98-4560-96d5-a7c4cc7996d6{letter-spacing:0.01em;}.bb80cc05-49fd-49f5-9aa5-60a29aecbb1a{letter-spacing:-0.01em;}.a7db60ef-bef9-48d1-bb7b-04bd1dc72af8{font-family:Roboto-Light, Roboto;font-weight:300;}.ff82efb9-d52a-4b4b-81c7-7e96a2d6f50e{letter-spacing:0em;}.ff7da4c8-31ad-4567-8562-0a521d197e84{letter-spacing:0.01em;}.f74aa262-a361-4ee8-9b4b-85fbd8cdb045{letter-spacing:0em;}.f5371299-275e-47d2-89b4-9377badce045{letter-spacing:0.01em;}</style><clipPath id="a837ef03-6a65-4834-a0ae-07625eb90654"><rect class="a10ae2a7-444f-4254-a900-9c11d0ab8904" x="11.53" y="195.88" width="318.42" height="124.99"/></clipPath><clipPath id="b4582fdc-eb91-41a0-add5-069bf284b444"><rect class="a10ae2a7-444f-4254-a900-9c11d0ab8904" x="-45.68" y="35.75" width="454.07" height="260.21"/></clipPath><clipPath id="a433b5fa-a934-4b9f-9502-df7b281a6109"><rect class="a10ae2a7-444f-4254-a900-9c11d0ab8904" x="56.66" y="16.34" width="230.14" height="124.99"/></clipPath><clipPath id="fba42c6c-43e1-4c2e-bd9b-1b9b8b9554b5"><rect class="a10ae2a7-444f-4254-a900-9c11d0ab8904" x="-47.17" y="35.75" width="454.07" height="260.21"/></clipPath></defs><g class="f7705130-cc59-414a-bb85-8537518d623b"><g class="f54c38d1-bc6a-4aa5-8958-7189a4ae180b"><path class="b267ac74-1357-45cc-aa87-7cd83fecb121" d="M315.36,255.75l-7,38.74M22.7,257l23.06,22.84M199.58,58.66,45.82,279.2a.15.15,0,0,0,.12.24l262.16,15a.15.15,0,0,0,.15-.21L199.84,58.69A.15.15,0,0,0,199.58,58.66ZM167.9,37.33,22,256.73a.19.19,0,0,0,.16.3l292.29-1.27a.2.2,0,0,0,.16-.31L168.23,37.33A.2.2,0,0,0,167.9,37.33Zm.17-.25,31.66,21.37"/></g></g><g class="be83b9b2-08bd-401d-b1b1-ba9de8e1e578"><g class="b7a9375a-f86a-40c6-b6d3-399c93347273"><path class="b267ac74-1357-45cc-aa87-7cd83fecb121" d="M198.09,58.66,44.33,279.2a.15.15,0,0,0,.12.24l262.16,15a.15.15,0,0,0,.15-.21L198.35,58.69A.15.15,0,0,0,198.09,58.66ZM313.87,255.75l-7,38.74M21.22,257l23.05,22.84M166.41,37.33,20.52,256.73a.19.19,0,0,0,.16.3L313,255.76a.2.2,0,0,0,.16-.31L166.74,37.33A.2.2,0,0,0,166.41,37.33Zm.18-.25,31.65,21.37"/></g></g><text class="b18d31a8-c3f3-4259-99bf-648b06fee602" transform="translate(4.12 190.09)"><tspan class="e8c9e044-ce23-43de-95f1-8615ad27c8d9">P</tspan><tspan class="ac82161d-9a49-4543-812c-bd7339e86130" x="40.05" y="0">h</tspan><tspan class="ac60d1b6-fa98-4560-96d5-a7c4cc7996d6" x="75.22" y="0">o</tspan><tspan class="bb80cc05-49fd-49f5-9aa5-60a29aecbb1a" x="111.42" y="0">t</tspan><tspan x="131.46" y="0">o</tspan></text><text class="a7db60ef-bef9-48d1-bb7b-04bd1dc72af8" transform="translate(171.8 190.09)"><tspan class="ff82efb9-d52a-4b4b-81c7-7e96a2d6f50e">P</tspan><tspan class="ff7da4c8-31ad-4567-8562-0a521d197e84" x="38.67" y="0">r</tspan><tspan class="f74aa262-a361-4ee8-9b4b-85fbd8cdb045" x="60.19" y="0">i</tspan><tspan class="f5371299-275e-47d2-89b4-9377badce045" x="73.95" y="0">s</tspan><tspan x="105.9" y="0">m</tspan></text></svg>

Before

Width:  |  Height:  |  Size: 3.8 KiB

View file

@ -1 +0,0 @@
<svg id="e5bd701c-7981-4bdd-acfb-47fadcaa44c8" data-name="Logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 283.46 283.46"><defs><style>.bb89c75a-95bf-4e36-868a-d0a495503231{fill:none;stroke:#fff;stroke-miterlimit:10;stroke-width:5px;}</style></defs><path id="a75bba96-13a5-4957-b73c-5eef2cf7ebdd" data-name="Logo Pfad" class="bb89c75a-95bf-4e36-868a-d0a495503231" d="M263.24,206.16l-5.8,32.09m-236.61-31,19.09,18.91M167.34,42.91,40,225.58a.13.13,0,0,0,.1.2l217.16,12.45a.12.12,0,0,0,.12-.17L167.55,42.93A.12.12,0,0,0,167.34,42.91ZM141.1,25.24,20.25,207a.16.16,0,0,0,.14.25l242.1-1.05a.17.17,0,0,0,.14-.26L141.37,25.24A.16.16,0,0,0,141.1,25.24Zm.14-.21,26.22,17.7"/></svg>

Before

Width:  |  Height:  |  Size: 676 B

View file

@ -1 +0,0 @@
<svg id="bc281e5b-d714-4446-b661-358693364fc4" data-name="Logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 283.46 283.46"><defs><style>.ef94ea8d-5a28-4e14-92aa-ea587f60c65b{fill:none;stroke:#fff;stroke-miterlimit:10;stroke-width:7px;}</style></defs><path id="afc8505f-0837-4b99-a3d0-7a34597ea914" data-name="Logo Pfad" class="ef94ea8d-5a28-4e14-92aa-ea587f60c65b" d="M263.24,206.16l-5.8,32.09m-236.61-31,19.09,18.91M167.34,42.91,40,225.58a.13.13,0,0,0,.1.2l217.16,12.45a.12.12,0,0,0,.12-.17L167.55,42.93A.12.12,0,0,0,167.34,42.91ZM141.1,25.24,20.25,207a.16.16,0,0,0,.14.25l242.1-1.05a.17.17,0,0,0,.14-.26L141.37,25.24A.16.16,0,0,0,141.1,25.24Zm.14-.21,26.22,17.7"/></svg>

Before

Width:  |  Height:  |  Size: 676 B

View file

@ -1 +0,0 @@
<svg id="b5229a43-bf20-4887-b140-75db5d5992a5" data-name="Logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 283.46 283.46"><defs><style>.bbb551ef-f3ef-434d-af0d-830274250289{fill:none;stroke:#fff;stroke-miterlimit:10;stroke-width:4px;}</style></defs><path id="bb01f25a-992b-48f7-b07d-5f83e572bacc" data-name="Logo Pfad" class="bbb551ef-f3ef-434d-af0d-830274250289" d="M263.24,206.16l-5.8,32.09m-236.61-31,19.09,18.91M167.34,42.91,40,225.58a.13.13,0,0,0,.1.2l217.16,12.45a.12.12,0,0,0,.12-.17L167.55,42.93A.12.12,0,0,0,167.34,42.91ZM141.1,25.24,20.25,207a.16.16,0,0,0,.14.25l242.1-1.05a.17.17,0,0,0,.14-.26L141.37,25.24A.16.16,0,0,0,141.1,25.24Zm.14-.21,26.22,17.7"/></svg>

Before

Width:  |  Height:  |  Size: 676 B

View file

@ -1 +0,0 @@
<svg id="fc91d4d5-e710-4786-96df-8dbdd69a26a7" data-name="Ebene 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 307.86 274.86"><defs><style>.b45ba6ae-d5a5-4d8e-9bfb-01a2e396654f,.e4513693-b131-43bb-a8bf-bbe7c0a43256{fill:none;}.e2b492dc-013f-4414-9261-055d4937b5fe{clip-path:url(#bb0cb192-a77d-4a56-8824-4794227d8e9f);}.b45ba6ae-d5a5-4d8e-9bfb-01a2e396654f{stroke:#fff;stroke-miterlimit:10;stroke-width:3px;}</style><clipPath id="bb0cb192-a77d-4a56-8824-4794227d8e9f"><rect class="e4513693-b131-43bb-a8bf-bbe7c0a43256" x="-56.99" y="5.77" width="451.84" height="262.31"/></clipPath></defs><g class="e2b492dc-013f-4414-9261-055d4937b5fe"><path class="b45ba6ae-d5a5-4d8e-9bfb-01a2e396654f" d="M303.51,227.55l-7.06,39.05m-288-37.76,23.24,23m155.06-223-155,222.32a.15.15,0,0,0,.12.24L296.2,266.59a.16.16,0,0,0,.15-.22L187.06,28.89A.16.16,0,0,0,186.79,28.87ZM154.86,7.36,7.79,228.53a.2.2,0,0,0,.16.31l294.65-1.28a.2.2,0,0,0,.17-.31L155.19,7.36A.2.2,0,0,0,154.86,7.36Zm.18-.25L187,28.65"/></g></svg>

Before

Width:  |  Height:  |  Size: 1 KiB

View file

@ -21,8 +21,8 @@
<meta name="description" content="{{ .config.SiteDescription }}"/>
<link rel="shortcut icon" href="/favicon.ico">
<link rel="apple-touch-icon" href="/static/favicons/favicon.png">
<link rel="icon" type="image/png" href="/static/favicons/favicon.png"/>
<link rel="apple-touch-icon" href="/static/img/favicon.png">
<link rel="icon" type="image/png" href="/static/img/favicon.png"/>
<link rel="stylesheet" href="/static/build/app.css?{{ .config.CSSHash }}">
<link rel="manifest" href="/static/manifest.json">

View file

@ -8,8 +8,8 @@
<title>{{ .config.SiteTitle }}</title>
<link rel="shortcut icon" href="/favicon.ico">
<link rel="apple-touch-icon" href="/static/favicons/favicon.png">
<link rel="icon" type="image/png" href="/static/favicons/favicon.png"/>
<link rel="apple-touch-icon" href="/static/img/favicon.png">
<link rel="icon" type="image/png" href="/static/img/favicon.png"/>
<link rel="stylesheet" href="/static/build/app.css?{{ .config.CSSHash }}">
<link rel="manifest" href="/static/manifest.json">

View file

@ -11,8 +11,8 @@
<meta name="description" content="{{ .config.SiteDescription }}"/>
<link rel="shortcut icon" href="/favicon.ico">
<link rel="apple-touch-icon" href="/static/favicons/favicon.png">
<link rel="icon" type="image/png" href="/static/favicons/favicon.png"/>
<link rel="apple-touch-icon" href="/static/img/favicon.png">
<link rel="icon" type="image/png" href="/static/img/favicon.png"/>
<link rel="stylesheet" href="/static/build/app.css?{{ .config.CSSHash }}">
</head>

View file

@ -23,8 +23,8 @@
<meta name="description" content="{{ .config.SiteDescription }}"/>
<link rel="shortcut icon" href="/favicon.ico">
<link rel="apple-touch-icon" href="/static/favicons/favicon.png">
<link rel="icon" type="image/png" href="/static/favicons/favicon.png"/>
<link rel="apple-touch-icon" href="/static/img/favicon.png">
<link rel="icon" type="image/png" href="/static/img/favicon.png"/>
<link rel="stylesheet" href="/static/build/share.css?{{ .config.CSSHash }}">
<link rel="manifest" href="/static/manifest.json">

View file

@ -22,8 +22,8 @@
<meta name="description" content="{{ .config.SiteDescription }}"/>
<link rel="shortcut icon" href="/favicon.ico">
<link rel="apple-touch-icon" href="/static/favicons/favicon.png">
<link rel="icon" type="image/png" href="/static/favicons/favicon.png"/>
<link rel="apple-touch-icon" href="/static/img/favicon.png">
<link rel="icon" type="image/png" href="/static/img/favicon.png"/>
<link rel="stylesheet" href="/static/build/app.css?{{ .config.CSSHash }}">
<link rel="manifest" href="/static/manifest.json">

View file

@ -15,7 +15,7 @@
@click.stop="onLogoClick"
v-show="!drawer"
>
<img src="/static/svg/logo-white-6pt.svg" alt="PhotoPrism">
<img src="/static/img/logo.svg" alt="Logo">
</v-avatar>
</v-toolbar>
<v-toolbar dark flat color="navigation darken-1" class="hidden-md-and-up">
@ -32,9 +32,7 @@
<v-list class="navigation-home">
<v-list-tile class="p-navigation-logo">
<v-list-tile-avatar class="clickable" @click.stop.prevent="openDocs">
<div class="logo rainbow">
<img src="/static/svg/logo-black-6pt.svg" alt="PhotoPrism">
</div>
<img class="logo" src="/static/img/avatar.svg" alt="Logo">
</v-list-tile-avatar>
<v-list-tile-content>
<v-list-tile-title class="title">

View file

@ -67,8 +67,8 @@
this.player = new MediaElementPlayer(this.$el, {
videoWidth: this.width,
videoHeight: this.height,
pluginPath: '/static/build/',
shimScriptAccess: 'always',
pluginPath: "/static/build/",
shimScriptAccess: "always",
forceLive: false,
loop: false,
stretching: true,

View file

@ -13,7 +13,7 @@
class="clickable"
@click.stop.prevent="goHome"
>
<img src="/static/svg/logo-white-6pt.svg" alt="PhotoPrism">
<img src="/static/img/logo.svg" alt="Logo">
</v-avatar>
</v-toolbar>
<v-toolbar dark flat color="navigation darken-1">

View file

@ -511,7 +511,7 @@ func DownloadAlbum(router *gin.RouterGroup) {
// type: string Thumbnail type, see photoprism.ThumbnailTypes
func AlbumThumbnail(router *gin.RouterGroup) {
router.GET("/albums/:uid/t/:token/:type", func(c *gin.Context) {
if InvalidToken(c) {
if InvalidPreviewToken(c) {
c.Data(http.StatusForbidden, "image/svg+xml", albumIconSvg)
return
}

View file

@ -175,7 +175,7 @@ func DislikeLabel(router *gin.RouterGroup) {
// type: string Thumbnail type, see photoprism.ThumbnailTypes
func LabelThumbnail(router *gin.RouterGroup) {
router.GET("/labels/:uid/t/:token/:type", func(c *gin.Context) {
if InvalidToken(c) {
if InvalidPreviewToken(c) {
c.Data(http.StatusForbidden, "image/svg+xml", labelIconSvg)
return
}

View file

@ -32,7 +32,7 @@ type ByteCache struct {
// type: string Thumbnail type, see photoprism.ThumbnailTypes
func GetThumbnail(router *gin.RouterGroup) {
router.GET("/t/:hash/:token/:type", func(c *gin.Context) {
if InvalidToken(c) {
if InvalidPreviewToken(c) {
c.Data(http.StatusForbidden, "image/svg+xml", brokenIconSvg)
return
}

View file

@ -124,15 +124,15 @@ func Auth(id string, resource acl.Resource, action acl.Action) session.Data {
return sess
}
// InvalidToken returns true if the token is invalid.
func InvalidToken(c *gin.Context) bool {
// InvalidPreviewToken returns true if the token is invalid.
func InvalidPreviewToken(c *gin.Context) bool {
token := c.Param("token")
if token == "" {
token = c.Query("t")
}
return service.Config().InvalidToken(token)
return service.Config().InvalidPreviewToken(token)
}
// InvalidDownloadToken returns true if the token is invalid.

View file

@ -18,7 +18,7 @@ import (
// type: string Video type
func GetVideo(router *gin.RouterGroup) {
router.GET("/videos/:hash/:token/:type", func(c *gin.Context) {
if InvalidToken(c) {
if InvalidPreviewToken(c) {
c.Data(http.StatusForbidden, "image/svg+xml", brokenIconSvg)
return
}

View file

@ -75,10 +75,10 @@ func configAction(ctx *cli.Context) error {
// Additional path and file names.
fmt.Printf("%-25s %s\n", "static-path", conf.StaticPath())
fmt.Printf("%-25s %s\n", "static-build-path", conf.StaticBuildPath())
fmt.Printf("%-25s %s\n", "favicons-path", conf.FaviconsPath())
fmt.Printf("%-25s %s\n", "build-path", conf.BuildPath())
fmt.Printf("%-25s %s\n", "img-path", conf.ImgPath())
fmt.Printf("%-25s %s\n", "templates-path", conf.TemplatesPath())
fmt.Printf("%-25s %s\n", "default-template", conf.DefaultTemplate())
fmt.Printf("%-25s %s\n", "template-name", conf.TemplateName())
fmt.Printf("%-25s %s\n", "cache-path", conf.CachePath())
fmt.Printf("%-25s %s\n", "temp-path", conf.TempPath())
fmt.Printf("%-25s %s\n", "config-file", conf.ConfigFile())
@ -100,7 +100,7 @@ func configAction(ctx *cli.Context) error {
// Thumbnails, resampling and download security token.
fmt.Printf("%-25s %s\n", "download-token", conf.DownloadToken())
fmt.Printf("%-25s %s\n", "thumb-token", conf.PreviewToken())
fmt.Printf("%-25s %s\n", "preview-token", conf.PreviewToken())
fmt.Printf("%-25s %s\n", "thumb-filter", conf.ThumbFilter())
fmt.Printf("%-25s %t\n", "thumb-uncached", conf.ThumbUncached())
fmt.Printf("%-25s %d\n", "thumb-size", conf.ThumbSize())

View file

@ -41,8 +41,8 @@ func (c *Config) DownloadToken() string {
return c.params.DownloadToken
}
// InvalidToken returns true if the token is invalid.
func (c *Config) InvalidToken(t string) bool {
// InvalidPreviewToken returns true if the preview token is invalid.
func (c *Config) InvalidPreviewToken(t string) bool {
return c.PreviewToken() != t && c.DownloadToken() != t
}

View file

@ -143,8 +143,8 @@ func (c *Config) PublicConfig() ClientConfig {
Experimental: c.Experimental(),
Thumbnails: Thumbnails,
Colors: colors.All.List(),
JSHash: fs.Checksum(c.StaticBuildPath() + "/app.js"),
CSSHash: fs.Checksum(c.StaticBuildPath() + "/app.css"),
JSHash: fs.Checksum(c.BuildPath() + "/app.js"),
CSSHash: fs.Checksum(c.BuildPath() + "/app.css"),
Clip: txt.ClipDefault,
PreviewToken: "public",
DownloadToken: "public",
@ -186,8 +186,8 @@ func (c *Config) GuestConfig() ClientConfig {
Thumbnails: Thumbnails,
DownloadToken: c.DownloadToken(),
PreviewToken: c.PreviewToken(),
JSHash: fs.Checksum(c.StaticBuildPath() + "/share.js"),
CSSHash: fs.Checksum(c.StaticBuildPath() + "/share.css"),
JSHash: fs.Checksum(c.BuildPath() + "/share.js"),
CSSHash: fs.Checksum(c.BuildPath() + "/share.css"),
Clip: txt.ClipDefault,
}
@ -220,8 +220,8 @@ func (c *Config) UserConfig() ClientConfig {
Thumbnails: Thumbnails,
DownloadToken: c.DownloadToken(),
PreviewToken: c.PreviewToken(),
JSHash: fs.Checksum(c.StaticBuildPath() + "/app.js"),
CSSHash: fs.Checksum(c.StaticBuildPath() + "/app.css"),
JSHash: fs.Checksum(c.BuildPath() + "/app.js"),
CSSHash: fs.Checksum(c.BuildPath() + "/app.css"),
Clip: txt.ClipDefault,
Server: NewRuntimeInfo(),
}

View file

@ -273,7 +273,7 @@ func TestConfig_TensorFlowModelPath(t *testing.T) {
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/assets/nasnet", path)
}
func TestConfig_HttpTemplatesPath(t *testing.T) {
func TestConfig_TemplatesPath(t *testing.T) {
ctx := CliTestContext()
c := NewConfig(ctx)
@ -281,15 +281,7 @@ func TestConfig_HttpTemplatesPath(t *testing.T) {
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/assets/templates", path)
}
func TestConfig_HttpFaviconsPath(t *testing.T) {
ctx := CliTestContext()
c := NewConfig(ctx)
path := c.FaviconsPath()
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/assets/static/favicons", path)
}
func TestConfig_HttpStaticPath(t *testing.T) {
func TestConfig_StaticPath(t *testing.T) {
ctx := CliTestContext()
c := NewConfig(ctx)
@ -297,14 +289,22 @@ func TestConfig_HttpStaticPath(t *testing.T) {
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/assets/static", path)
}
func TestConfig_HttpStaticBuildPath(t *testing.T) {
func TestConfig_BuildPath(t *testing.T) {
ctx := CliTestContext()
c := NewConfig(ctx)
path := c.StaticBuildPath()
path := c.BuildPath()
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/assets/static/build", path)
}
func TestConfig_ImgPath(t *testing.T) {
ctx := CliTestContext()
c := NewConfig(ctx)
path := c.ImgPath()
assert.Equal(t, "/go/src/github.com/photoprism/photoprism/assets/static/img", path)
}
func TestConfig_ClientConfig(t *testing.T) {
c := TestConfig()

View file

@ -85,8 +85,8 @@ func (c *Config) CreateDirectories() error {
return createError(c.TensorFlowModelPath(), err)
}
if err := os.MkdirAll(c.StaticBuildPath(), os.ModePerm); err != nil {
return createError(c.StaticBuildPath(), err)
if err := os.MkdirAll(c.BuildPath(), os.ModePerm); err != nil {
return createError(c.BuildPath(), err)
}
if err := os.MkdirAll(filepath.Dir(c.PIDFilename()), os.ModePerm); err != nil {

View file

@ -259,8 +259,8 @@ var GlobalFlags = []cli.Flag{
},
cli.StringFlag{
Name: "preview-token",
Usage: "`SECRET` url token for thumbnails and video streaming",
Value: "static",
Usage: "`SECRET` url token for preview images and video streaming",
Value: "public",
EnvVar: "PHOTOPRISM_PREVIEW_TOKEN",
},
cli.StringFlag{

View file

@ -57,8 +57,8 @@ func (c *Config) TemplateExists(name string) bool {
return fs.FileExists(filepath.Join(c.TemplatesPath(), name))
}
// DefaultTemplate returns the name of the default template (e.g. index.tmpl).
func (c *Config) DefaultTemplate() string {
// TemplateName returns the name of the default template (e.g. index.tmpl).
func (c *Config) TemplateName() string {
if c.TemplateExists(c.Settings().Templates.Default) {
return c.Settings().Templates.Default
}
@ -66,17 +66,17 @@ func (c *Config) DefaultTemplate() string {
return "index.tmpl"
}
// FaviconsPath returns the favicons path.
func (c *Config) FaviconsPath() string {
return filepath.Join(c.StaticPath(), "favicons")
}
// StaticPath returns the static server assets path (//server/static/*).
// StaticPath returns the static assets path.
func (c *Config) StaticPath() string {
return filepath.Join(c.AssetsPath(), "static")
}
// StaticBuildPath returns the static build path (//server/static/build/*).
func (c *Config) StaticBuildPath() string {
// BuildPath returns the static build path.
func (c *Config) BuildPath() string {
return filepath.Join(c.StaticPath(), "build")
}
// ImgPath returns the static image path.
func (c *Config) ImgPath() string {
return filepath.Join(c.StaticPath(), "img")
}

View file

@ -2,6 +2,7 @@ package server
import (
"net/http"
"path"
"github.com/gin-gonic/gin"
"github.com/photoprism/photoprism/internal/api"
@ -9,12 +10,12 @@ import (
)
func registerRoutes(router *gin.Engine, conf *config.Config) {
// Static favicon file.
router.StaticFile("/favicon.ico", conf.FaviconsPath()+"/favicon.ico")
// Other static assets like JS and CSS files.
// Static assets like js, css and font files.
router.Static("/static", conf.StaticPath())
// Site favicon image.
router.StaticFile("/favicon.ico", path.Join(conf.ImgPath(), "favicon.ico"))
// Rainbow page.
router.GET("/rainbow", func(c *gin.Context) {
clientConfig := conf.PublicConfig()
@ -147,6 +148,6 @@ func registerRoutes(router *gin.Engine, conf *config.Config) {
// Default HTML page for client-side rendering and routing via VueJS.
router.NoRoute(func(c *gin.Context) {
clientConfig := conf.PublicConfig()
c.HTML(http.StatusOK, conf.DefaultTemplate(), gin.H{"config": clientConfig})
c.HTML(http.StatusOK, conf.TemplateName(), gin.H{"config": clientConfig})
})
}