Merge stuff
2
.gitignore
vendored
@ -15,4 +15,4 @@ yarn-error.log
|
||||
public/google*.html
|
||||
report.html
|
||||
composer.phar
|
||||
app.js.map
|
||||
app.js.map
|
@ -17,13 +17,13 @@
|
||||
"lodash.clonedeep": "^4.5.0",
|
||||
"postcss": "^8.1.14",
|
||||
"resolve-url-loader": "^4.0.0",
|
||||
"sass": "^1.39.0",
|
||||
"sass": "^1.39.2",
|
||||
"sass-loader": "^12.0.0",
|
||||
"vue-i18n": "^8.24.2",
|
||||
"vue-loader": "^15",
|
||||
"vue-template-compiler": "^2.6.12",
|
||||
"vuex": "^3.6.2",
|
||||
"webpack": "^5.52.0"
|
||||
"webpack": "^5.52.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-free": "^5.15.3",
|
||||
|
58
frontend/src/serviceworker.js
Normal file
@ -0,0 +1,58 @@
|
||||
/*
|
||||
* serviceworker.js
|
||||
* Copyright (c) 2021 Lorenzo Breda (https://github.com/lbreda)
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
let staticCachePrefix = "firefly-III-"
|
||||
let staticCacheName = staticCachePrefix + new Date().getTime();
|
||||
let cachedFiles = [
|
||||
'/offline',
|
||||
'/v2/plugins/local-fonts/gf-source.css',
|
||||
'/v2/css/app.css',
|
||||
];
|
||||
|
||||
// Create cache on install
|
||||
self.addEventListener("install", event => {
|
||||
this.skipWaiting();
|
||||
event.waitUntil(
|
||||
caches.open(staticCacheName).then(cache => cache.addAll(cachedFiles))
|
||||
)
|
||||
});
|
||||
|
||||
// Clear cache on activate
|
||||
self.addEventListener('activate', event => {
|
||||
event.waitUntil(
|
||||
caches.keys().then(cacheNames => {
|
||||
return Promise.all(
|
||||
cacheNames
|
||||
.filter(cacheName => (cacheName.startsWith(staticCachePrefix)))
|
||||
.filter(cacheName => (cacheName !== staticCacheName))
|
||||
.map(cacheName => caches.delete(cacheName))
|
||||
);
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
// Serve from Cache or return the offline page
|
||||
self.addEventListener("fetch", event => {
|
||||
event.respondWith(
|
||||
caches.match(event.request)
|
||||
.then(response => (response || fetch(event.request)))
|
||||
.catch(() => caches.match('offline'))
|
||||
)
|
||||
});
|
@ -1406,10 +1406,10 @@ ansi-escapes@^4.3.1:
|
||||
dependencies:
|
||||
type-fest "^0.21.3"
|
||||
|
||||
ansi-html@^0.0.7:
|
||||
version "0.0.7"
|
||||
resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
|
||||
integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4=
|
||||
ansi-html-community@^0.0.8:
|
||||
version "0.0.8"
|
||||
resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41"
|
||||
integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==
|
||||
|
||||
ansi-regex@^5.0.0:
|
||||
version "5.0.0"
|
||||
@ -1528,9 +1528,9 @@ axios-cache-adapter@^2.7.3:
|
||||
md5 "^2.2.1"
|
||||
|
||||
axios@^0.21:
|
||||
version "0.21.3"
|
||||
resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.3.tgz#f85d9b747f9b66d59ca463605cedf1844872b82e"
|
||||
integrity sha512-JtoZ3Ndke/+Iwt5n+BgSli/3idTvpt5OjKyoCmz4LX5+lPiY5l7C1colYezhlxThjNa/NhngCUWZSZFypIFuaA==
|
||||
version "0.21.4"
|
||||
resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575"
|
||||
integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==
|
||||
dependencies:
|
||||
follow-redirects "^1.14.0"
|
||||
|
||||
@ -4196,9 +4196,9 @@ klona@^2.0.4:
|
||||
integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==
|
||||
|
||||
laravel-mix@^6:
|
||||
version "6.0.29"
|
||||
resolved "https://registry.yarnpkg.com/laravel-mix/-/laravel-mix-6.0.29.tgz#4b07b731f3d3de624d19e392a2bd93ca741a5b69"
|
||||
integrity sha512-GGDpeicvHYh6J6uickr1ZiDtJdNuKsQUjWrthB4MTaN0ZzxL0kLxpNXIRHGhpoEHM+2Tl/tA40ATIDAAumCyow==
|
||||
version "6.0.31"
|
||||
resolved "https://registry.yarnpkg.com/laravel-mix/-/laravel-mix-6.0.31.tgz#c33b869d11549e781484c52f11b12405cecc72a1"
|
||||
integrity sha512-T9uFNNARS5hXl5JggCkLKybwAnyYEHBXzPseC0yJ/6EVK7eyvPOq2UAGDVqhfYTZKxrMd5B5ww1kEooDRoH+OA==
|
||||
dependencies:
|
||||
"@babel/core" "^7.14.5"
|
||||
"@babel/plugin-proposal-object-rest-spread" "^7.14.5"
|
||||
@ -4245,7 +4245,7 @@ laravel-mix@^6:
|
||||
vue-style-loader "^4.1.3"
|
||||
webpack "^5.38.1"
|
||||
webpack-cli "^4.7.2"
|
||||
webpack-dev-server "4.0.0-rc.1"
|
||||
webpack-dev-server "4.1.1"
|
||||
webpack-merge "^5.8.0"
|
||||
webpack-notifier "^1.13.0"
|
||||
webpackbar "^5.0.0-3"
|
||||
@ -5698,10 +5698,10 @@ sass-loader@^12.0.0:
|
||||
klona "^2.0.4"
|
||||
neo-async "^2.6.2"
|
||||
|
||||
sass@^1.39.0:
|
||||
version "1.39.0"
|
||||
resolved "https://registry.yarnpkg.com/sass/-/sass-1.39.0.tgz#6c64695d1c437767c8f1a4e471288e831f81d035"
|
||||
integrity sha512-F4o+RhJkNOIG0b6QudYU8c78ZADKZjKDk5cyrf8XTKWfrgbtyVVXImFstJrc+1pkQDCggyidIOytq6gS4gCCZg==
|
||||
sass@^1.39.2:
|
||||
version "1.39.2"
|
||||
resolved "https://registry.yarnpkg.com/sass/-/sass-1.39.2.tgz#1681964378f58d76fc64a6a502619bd5ac99f660"
|
||||
integrity sha512-4/6Vn2RPc+qNwSclUSKvssh7dqK1Ih3FfHBW16I/GfH47b3scbYeOw65UIrYG7PkweFiKbpJjgkf5CV8EMmvzw==
|
||||
dependencies:
|
||||
chokidar ">=3.0.0 <4.0.0"
|
||||
|
||||
@ -6596,12 +6596,12 @@ webpack-dev-middleware@^5.0.0:
|
||||
range-parser "^1.2.1"
|
||||
schema-utils "^3.0.0"
|
||||
|
||||
webpack-dev-server@4.0.0-rc.1:
|
||||
version "4.0.0-rc.1"
|
||||
resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.0.0-rc.1.tgz#4826530cdff3ebe56d3a5e0fa3e7d1e006b40d33"
|
||||
integrity sha512-gZlGe0CMA0YZ5bIXFbtSegd33tYsUujYv+rgJu9Y75xHvXBSXFJiBvakMV7yTkBE+k8dgz4VsBzl7J5I5xatyg==
|
||||
webpack-dev-server@4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.1.1.tgz#e8eb8f0ce1a0e1fa65e234641763c97735398bed"
|
||||
integrity sha512-Kl1mnCEw8Cy1Kw173gCxLIB242LfPKEOj9WoKhKz/MbryZTNrILzOJTk8kiczw/YUEPzn3gcltCQv6hDsLudRg==
|
||||
dependencies:
|
||||
ansi-html "^0.0.7"
|
||||
ansi-html-community "^0.0.8"
|
||||
bonjour "^3.5.0"
|
||||
chokidar "^3.5.1"
|
||||
colorette "^1.2.2"
|
||||
@ -6656,10 +6656,10 @@ webpack-sources@^3.2.0:
|
||||
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.0.tgz#b16973bcf844ebcdb3afde32eda1c04d0b90f89d"
|
||||
integrity sha512-fahN08Et7P9trej8xz/Z7eRu8ltyiygEo/hnRi9KqBUs80KeDcnf96ZJo++ewWd84fEf3xSX9bp4ZS9hbw0OBw==
|
||||
|
||||
webpack@^5.38.1, webpack@^5.52.0:
|
||||
version "5.52.0"
|
||||
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.52.0.tgz#88d997c2c3ebb62abcaa453d2a26e0fd917c71a3"
|
||||
integrity sha512-yRZOat8jWGwBwHpco3uKQhVU7HYaNunZiJ4AkAVQkPCUGoZk/tiIXiwG+8HIy/F+qsiZvSOa+GLQOj3q5RKRYg==
|
||||
webpack@^5.38.1, webpack@^5.52.1:
|
||||
version "5.52.1"
|
||||
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.52.1.tgz#2dc1d9029ecb7acfb80da7bf67baab67baa517a7"
|
||||
integrity sha512-wkGb0hLfrS7ML3n2xIKfUIwHbjB6gxwQHyLmVHoAqEQBw+nWo+G6LoHL098FEXqahqximsntjBLuewStrnJk0g==
|
||||
dependencies:
|
||||
"@types/eslint-scope" "^3.7.0"
|
||||
"@types/estree" "^0.0.50"
|
||||
|
@ -10,7 +10,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@johmun/vue-tags-input": "^2",
|
||||
"@vue/compiler-sfc": "^3.2.9",
|
||||
"@vue/compiler-sfc": "^3.2.11",
|
||||
"axios": "^0.21",
|
||||
"bootstrap-sass": "^3",
|
||||
"cross-env": "^7.0",
|
||||
|
@ -3,15 +3,83 @@
|
||||
"short_name": "Firefly III",
|
||||
"start_url": "/",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/maskable72.png",
|
||||
"sizes": "72x72",
|
||||
"type": "image/png",
|
||||
"scope": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/maskable76.png",
|
||||
"sizes": "76x76",
|
||||
"type": "image/png",
|
||||
"scope": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/maskable96.png",
|
||||
"sizes": "96x96",
|
||||
"type": "image/png",
|
||||
"scope": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/maskable120.png",
|
||||
"sizes": "120x120",
|
||||
"type": "image/png",
|
||||
"scope": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/maskable128.png",
|
||||
"sizes": "128x128",
|
||||
"type": "image/png",
|
||||
"scope": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/maskable144.png",
|
||||
"sizes": "144x144",
|
||||
"type": "image/png",
|
||||
"scope": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/maskable152.png",
|
||||
"sizes": "152x152",
|
||||
"type": "image/png",
|
||||
"scope": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/maskable180.png",
|
||||
"sizes": "180x180",
|
||||
"type": "image/png",
|
||||
"scope": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
"type": "image/png",
|
||||
"scope": "any"
|
||||
},
|
||||
{
|
||||
"src": "/maskable192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"scope": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/maskable384.png",
|
||||
"sizes": "384x384",
|
||||
"type": "image/png",
|
||||
"scope": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/android-chrome-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
"type": "image/png",
|
||||
"scope": "any"
|
||||
},
|
||||
{
|
||||
"src": "/maskable512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"scope": "maskable"
|
||||
}
|
||||
],
|
||||
"theme_color": "#1e6581",
|
||||
|
1
public/maskable-icon.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg height="377.95276" width="377.95276" xmlns="http://www.w3.org/2000/svg"><path d="m0 0h377.95276v377.95276h-377.95276z" fill="#cd5029" stroke-width="1.96129"/><g transform="matrix(.77452773 0 0 .77452773 21.636074 21.374655)"><path d="m140.49013 78.646381 2.249 53.017999s-40.103 29.566-45.538 68l-16.001 1.231s-11.539 2.564-11.539 14.103v37.18s3.846 11.538 12.82 11.538l16.487-.319s8 30.5 36.5 50.5v25.5s-2 8.5 15.5 11 40.75 2.25 44.5-1.5 3.75-4.5 3.75-9c0 0 21.25 5 60.25 0v5s3.5 7 29 7 33-3 37.5-12v-25s37.009-36.264 35.75-91.75c-1.083-47.75-15.901-64.299-35.806-82.96-22.67-21.254-69.944-31.165-117.944-25.353.001-.001-24.341-43.937999-67.478-36.187999z" fill="#fff"/><circle cx="135.46912" cy="214.39638" fill="#cd5029" r="9.5"/><path d="m360.08113 190.51238s-18.218-8.742-40.662 3.996c0 0-26.711-8.987-40.99 2.593-14.828 12.025-16.299 26.115-15.525 42.785 0 0 12.837-43.915 45.252-32.571 0 0-22.947 40.43 12.761 47.508 0 0 8.436-.05 15.401-4.256 6.644-4.011 11.842-11.433 9.711-24.814 0 0-4.348-13.336-15.569-21.42 0 0 11.042-7.806 31.988-2.209z" fill="#cd5029"/><path d="m320.19013 213.01938s-16.689 31.461 5.607 29.767c0 0 11.838-5.656 4.887-17.127-7.147-11.796-10.494-12.64-10.494-12.64z" fill="#fff"/></g><path d="m188.97638 175.70052s4.01698 13.60604-3.69586 21.52748c-7.713 7.92145-6.8792 16.6767-3.75227 20.84588 3.12692 4.16917 2.91831 7.29593.41674 9.58905-2.50141 2.29312-4.58608 3.96073-6.04523.20846-1.45916-3.75228-3.12676-3.75228-3.75228-5.62834-.62552-1.87605-1.87622-5.21142-1.87622-5.21142s-3.96072 6.25384-6.46229 10.00611c-2.50157 3.75228-2.50141 9.58922-.83381 12.71598 1.66761 3.12676 1.04226 6.87903-.20845 12.09046-1.2507 5.21143.4169 13.13288 6.25369 16.2598 5.83678 3.12692 12.92459 5.62833 16.05135 8.5468s10.42301 5.62833 19.80362 3.54382c9.3806-2.0845 21.26294-11.67355 23.34744-18.13585 0 0 5.41988-6.04523 4.37763-13.96668s-4.79469-7.71316-6.4623-13.75839c-1.6676-6.04523 3.60854-4.55469-.8338-14.93382 0 0-1.98012-4.94005-9.50352-8.49899-4.83404-2.28661-1.54469-12.63061-10.09149-23.05347s-16.73295-12.14688-16.73295-12.14688z" fill="#ffa284" stroke-width=".162598"/></svg>
|
After Width: | Height: | Size: 2.1 KiB |
BIN
public/maskable120.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
public/maskable128.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
public/maskable144.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
public/maskable152.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
public/maskable180.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
BIN
public/maskable192.png
Normal file
After Width: | Height: | Size: 5.2 KiB |
BIN
public/maskable384.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
public/maskable512.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
public/maskable72.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
public/maskable76.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
public/maskable96.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
58
public/serviceworker.js
Normal file
@ -0,0 +1,58 @@
|
||||
/*
|
||||
* serviceworker.js
|
||||
* Copyright (c) 2021 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
let staticCachePrefix = "firefly-III-"
|
||||
let staticCacheName = staticCachePrefix + new Date().getTime();
|
||||
let cachedFiles = [
|
||||
'/offline',
|
||||
'/v2/plugins/local-fonts/gf-source.css',
|
||||
'/v2/css/app.css',
|
||||
];
|
||||
|
||||
// Create cache on install
|
||||
self.addEventListener("install", event => {
|
||||
this.skipWaiting();
|
||||
event.waitUntil(
|
||||
caches.open(staticCacheName).then(cache => cache.addAll(cachedFiles))
|
||||
)
|
||||
});
|
||||
|
||||
// Clear cache on activate
|
||||
self.addEventListener('activate', event => {
|
||||
event.waitUntil(
|
||||
caches.keys().then(cacheNames => {
|
||||
return Promise.all(
|
||||
cacheNames
|
||||
.filter(cacheName => (cacheName.startsWith(staticCachePrefix)))
|
||||
.filter(cacheName => (cacheName !== staticCacheName))
|
||||
.map(cacheName => caches.delete(cacheName))
|
||||
);
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
// Serve from Cache or return the offline page
|
||||
self.addEventListener("fetch", event => {
|
||||
event.respondWith(
|
||||
caches.match(event.request)
|
||||
.then(response => (response || fetch(event.request)))
|
||||
.catch(() => caches.match('offline'))
|
||||
)
|
||||
});
|
@ -47,5 +47,4 @@ return [
|
||||
'tell_more' => 'Tell us more than "it says Whoops!"',
|
||||
'include_logs' => 'Include error logs (see above).',
|
||||
'what_did_you_do' => 'Tell us what you were doing.',
|
||||
|
||||
];
|
||||
|
@ -47,5 +47,8 @@ return [
|
||||
'tell_more' => 'Tell us more than "it says Whoops!"',
|
||||
'include_logs' => 'Include error logs (see above).',
|
||||
'what_did_you_do' => 'Tell us what you were doing.',
|
||||
'offline_header' => 'You are probably offline',
|
||||
'offline_unreachable' => 'Firefly III is unreachable. Your device is currently offline or the server is not working.',
|
||||
'offline_github' => 'If you are sure both your device and the server are online, please open a ticket on <strong><a href="https://github.com/firefly-iii/firefly-iii/issues">GitHub</a></strong>.',
|
||||
|
||||
];
|
||||
|
@ -47,5 +47,4 @@ return [
|
||||
'tell_more' => 'Dicci di più di "dice Oops!"',
|
||||
'include_logs' => 'Includi i log degli errori (vedi sopra).',
|
||||
'what_did_you_do' => 'Dicci cosa stavi facendo.',
|
||||
|
||||
];
|
||||
|
41
resources/views/errors/offline.twig
Normal file
@ -0,0 +1,41 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<base href="{{ route('index') }}/">
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>Firefly III | Offline</title>
|
||||
<!-- Tell the browser to be responsive to screen width -->
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<link rel="stylesheet" href="v2/plugins/local-fonts/gf-source.css" nonce="{{ JS_NONCE }}">
|
||||
<link rel="stylesheet" href="v2/css/app.css" nonce="{{ JS_NONCE }}">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="error-page">
|
||||
<h2 class="headline text-danger"><span class="fas fa-unlink"></span></h2>
|
||||
|
||||
<div class="error-content">
|
||||
<h3><span class="fas fa-exclamation-triangle text-danger"></span> Offline</h3>
|
||||
<p>
|
||||
{{ trans('errors.offline_header') }}
|
||||
</p>
|
||||
<p>
|
||||
{{ trans('errors.offline_unreachable') }}
|
||||
</p>
|
||||
<p>
|
||||
{{ trans('errors.offline_github')|raw }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -228,5 +228,17 @@
|
||||
<noscript><p><img src="//{{ config('firefly.tracker_url') }}/matomo.php?idsite={{ config('firefly.tracker_site_id') }}&rec=1" style="border:0;" alt="" /></p></noscript>
|
||||
{% endif %}
|
||||
|
||||
<script nonce="{{ JS_NONCE }}">
|
||||
// Initialize the service worker
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('serviceworker.js?v={{ FF_VERSION }}', {
|
||||
scope: '{{ route('index') }}'
|
||||
}).then(
|
||||
() => console.log('ServiceWorker registration successful'),
|
||||
(err) => console.log('ServiceWorker registration failed: ', err)
|
||||
);
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
@ -61,5 +61,17 @@
|
||||
<noscript><p><img src="//{{ config('firefly.tracker_url') }}/matomo.php?idsite={{ config('firefly.tracker_site_id') }}&rec=1" style="border:0;" alt="" /></p></noscript>
|
||||
{% endif %}
|
||||
|
||||
<script nonce="{{ JS_NONCE }}">
|
||||
// Initialize the service worker
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('serviceworker.js?v={{ FF_VERSION }}', {
|
||||
scope: '{{ route('index') }}'
|
||||
}).then(
|
||||
() => console.log('ServiceWorker registration successful'),
|
||||
(err) => console.log('ServiceWorker registration failed: ', err)
|
||||
);
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
@ -76,5 +76,17 @@
|
||||
<noscript><p><img src="//{{ config('firefly.tracker_url') }}/matomo.php?idsite={{ config('firefly.tracker_site_id') }}&rec=1" style="border:0;" alt="" /></p></noscript>
|
||||
{% endif %}
|
||||
|
||||
<script nonce="{{ JS_NONCE }}">
|
||||
// Initialize the service worker
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('serviceworker.js?v={{ FF_VERSION }}', {
|
||||
scope: '{{ route('index') }}'
|
||||
}).then(
|
||||
() => console.log('ServiceWorker registration successful'),
|
||||
(err) => console.log('ServiceWorker registration failed: ', err)
|
||||
);
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
@ -36,5 +36,17 @@
|
||||
</div>
|
||||
<script src="v1/js/app.js?v={{ FF_VERSION }}" type="text/javascript" nonce="{{ JS_NONCE }}"></script>
|
||||
{% block scripts %}{% endblock %}
|
||||
|
||||
<script nonce="{{ JS_NONCE }}">
|
||||
// Initialize the service worker
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('serviceworker.js?v={{ FF_VERSION }}', {
|
||||
scope: '{{ route('index') }}'
|
||||
}).then(
|
||||
() => console.log('ServiceWorker registration successful'),
|
||||
(err) => console.log('ServiceWorker registration failed: ', err)
|
||||
);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -19,5 +19,17 @@
|
||||
<body class="hold-transition login-page">
|
||||
{% block content %}{% endblock %}
|
||||
{% block scripts %}{% endblock %}
|
||||
|
||||
<script nonce="{{ JS_NONCE }}">
|
||||
// Initialize the service worker
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('serviceworker.js?v={{ FF_VERSION }}', {
|
||||
scope: '{{ route('index') }}'
|
||||
}).then(
|
||||
() => console.log('ServiceWorker registration successful'),
|
||||
(err) => console.log('ServiceWorker registration failed: ', err)
|
||||
);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -46,9 +46,11 @@
|
||||
<div class="row mb-2">
|
||||
<div class="col-sm-6">
|
||||
<h1 class="m-0 text-dark">
|
||||
{% if mainTitleIcon|default(false) %}<span class="fa fas {{ mainTitleIcon }}"></span>{% endif %}
|
||||
{% if mainTitleIcon|default(false) %}<span
|
||||
class="fa fas {{ mainTitleIcon }}"></span>{% endif %}
|
||||
{{ title }} <small class="text-muted">
|
||||
{% if subTitleIcon|default(false) %}<span class="fa fas {{ subTitleIcon }}"></span>{% endif %}
|
||||
{% if subTitleIcon|default(false) %}<span
|
||||
class="fa fas {{ subTitleIcon }}"></span>{% endif %}
|
||||
{{ subTitle|default('') }}</small></h1>
|
||||
</div><!-- /.col -->
|
||||
<div class="col-sm-6">
|
||||
@ -91,6 +93,18 @@
|
||||
<script src="v2/js/vendor.js?v={{ FF_VERSION }}" nonce="{{ JS_NONCE }}"></script>
|
||||
{% block scripts %}{% endblock %}
|
||||
|
||||
<script nonce="{{ JS_NONCE }}">
|
||||
// Initialize the service worker
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('serviceworker.js?v={{ FF_VERSION }}', {
|
||||
scope: '{{ route('index') }}'
|
||||
}).then(
|
||||
() => console.log('ServiceWorker registration successful'),
|
||||
(err) => console.log('ServiceWorker registration failed: ', err)
|
||||
);
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
@ -1,8 +1,28 @@
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
|
||||
{# main icons #}
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
|
||||
<link rel="manifest" href="manifest.webmanifest">
|
||||
|
||||
{# iOS icons #}
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="maskable76.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="maskable120.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="maskable152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
|
||||
|
||||
{# Pinned tab #}
|
||||
<link rel="mask-icon" href="safari-pinned-tab.svg" color="#1e6581">
|
||||
<meta name="msapplication-TileColor" content="#1e6581">
|
||||
|
||||
{# Android #}
|
||||
<link href="maskable192.png" rel="icon" sizes="192x192">
|
||||
<link href="maskable128.png" rel="icon" sizes="128x128">
|
||||
|
||||
{# Manifest #}
|
||||
<link rel="manifest" href="/manifest.webmanifest">
|
||||
|
||||
{# Android colors #}
|
||||
<meta name="theme-color" content="#1e6581">
|
||||
|
||||
{# Microsoft meta #}
|
||||
<meta name="msapplication-TileColor" content="#1e6581">
|
||||
<meta name="msapplication-TileImage" content="maskable.png">
|
||||
<meta name="msapplication-tap-highlight" content="no">
|
||||
<meta name="application-name" content="Firefly III">
|
||||
|
@ -37,6 +37,13 @@ Route::group(
|
||||
}
|
||||
);
|
||||
|
||||
Route::group(
|
||||
['middleware' => 'binders-only'],
|
||||
static function () {
|
||||
Route::get('offline', fn () => view('errors.offline'));
|
||||
}
|
||||
);
|
||||
|
||||
/**
|
||||
* These routes only work when the user is NOT logged in.
|
||||
*/
|
||||
|
104
yarn.lock
@ -1066,38 +1066,38 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/svgo/-/svgo-1.3.6.tgz#9db00a7ddf9b26ad2feb6b834bef1818677845e1"
|
||||
integrity sha512-AZU7vQcy/4WFEuwnwsNsJnFwupIpbllH1++LXScN6uxT1Z4zPzdrWG97w4/I7eFKFTvfy/bHFStWjdBAg2Vjug==
|
||||
|
||||
"@vue/compiler-core@3.2.9":
|
||||
version "3.2.9"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.9.tgz#874d04d3e4de98f3a60769db7fa47e041bfca490"
|
||||
integrity sha512-smi76K+pg1LeltWSLoOI9GqXdH1oK13sd+SrO/XTdyfvf2dOQn5zE0o+C4B4Wj9M8Jd66Z5dEfGEldvcOutixQ==
|
||||
"@vue/compiler-core@3.2.11":
|
||||
version "3.2.11"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.11.tgz#10af3777dba303ee7aae668029f131cb90391bee"
|
||||
integrity sha512-bcbsLx5XyQg8WDDEGwmpX0BfEfv82wIs9fWFelpyVhNRGMaABvUTalYINyfhVT+jOqNaD4JBhJiVKd/8TmsHWg==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.15.0"
|
||||
"@babel/types" "^7.15.0"
|
||||
"@vue/shared" "3.2.9"
|
||||
"@vue/shared" "3.2.11"
|
||||
estree-walker "^2.0.2"
|
||||
source-map "^0.6.1"
|
||||
|
||||
"@vue/compiler-dom@3.2.9":
|
||||
version "3.2.9"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.9.tgz#e42b2bc285366224a1738f7ed6648d4260cbbbef"
|
||||
integrity sha512-7GAMoCyBGMzMsbzxxFFCQMdblg10NRXkgFFhkjLJ4djItL0hyeO8t9wSLmaDaJejo1xjK8lm+4xPAUwvHuC8cA==
|
||||
"@vue/compiler-dom@3.2.11":
|
||||
version "3.2.11"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.11.tgz#d066f8e1f1812b4e881593819ade0fe6d654c776"
|
||||
integrity sha512-DNvhUHI/1Hn0/+ZYDYGAuDGasUm+XHKC3FE4GqkNCTO/fcLaJMRg/7eT1m1lkc7jPffUwwfh1rZru5mwzOjrNw==
|
||||
dependencies:
|
||||
"@vue/compiler-core" "3.2.9"
|
||||
"@vue/shared" "3.2.9"
|
||||
"@vue/compiler-core" "3.2.11"
|
||||
"@vue/shared" "3.2.11"
|
||||
|
||||
"@vue/compiler-sfc@^3.2.9":
|
||||
version "3.2.9"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.9.tgz#82c0cae99625a4e5b9d998cc9ef5e0c26df2a8e9"
|
||||
integrity sha512-egQCUOvb+3fz7sNx5F85ysPslbbtHiw0l2hOlqSGx5S7vQ8nzPvhxjy/VATYbd4lHZGQltA/3U090ncZu8M6hQ==
|
||||
"@vue/compiler-sfc@^3.2.11":
|
||||
version "3.2.11"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.11.tgz#628fa12238760d9b9b339ac2e125a759224fadbf"
|
||||
integrity sha512-cUIaS8mgJrQ6yucj2AupWAwBRITK3W/a8wCOn9g5fJGtOl8h4APY8vN3lzP8HIJDyEeRF3I8SfRhL+oX97kSnw==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.15.0"
|
||||
"@babel/types" "^7.15.0"
|
||||
"@types/estree" "^0.0.48"
|
||||
"@vue/compiler-core" "3.2.9"
|
||||
"@vue/compiler-dom" "3.2.9"
|
||||
"@vue/compiler-ssr" "3.2.9"
|
||||
"@vue/ref-transform" "3.2.9"
|
||||
"@vue/shared" "3.2.9"
|
||||
"@vue/compiler-core" "3.2.11"
|
||||
"@vue/compiler-dom" "3.2.11"
|
||||
"@vue/compiler-ssr" "3.2.11"
|
||||
"@vue/ref-transform" "3.2.11"
|
||||
"@vue/shared" "3.2.11"
|
||||
consolidate "^0.16.0"
|
||||
estree-walker "^2.0.2"
|
||||
hash-sum "^2.0.0"
|
||||
@ -1109,13 +1109,13 @@
|
||||
postcss-selector-parser "^6.0.4"
|
||||
source-map "^0.6.1"
|
||||
|
||||
"@vue/compiler-ssr@3.2.9":
|
||||
version "3.2.9"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.9.tgz#067a9e5ee381c6561d72663c4a1ce42afe33b9bd"
|
||||
integrity sha512-3QhSnpmMKvM67VQeUttDVy6+BeWlpo1mTqSnEl2x1bIEXNfZ6aIWeV42YmItXfiJ0j+JZI/29sDiEl3QLhAHow==
|
||||
"@vue/compiler-ssr@3.2.11":
|
||||
version "3.2.11"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.11.tgz#702cef3429651645bdbe09fe5962803b5a621abb"
|
||||
integrity sha512-+ptAdUlFDij+Z0VGCbRRkxQlNev5LkbZAntvkxrFjc08CTMhZmiV4Js48n2hAmuSXaKNEpmGkDGU26c/vf1+xw==
|
||||
dependencies:
|
||||
"@vue/compiler-dom" "3.2.9"
|
||||
"@vue/shared" "3.2.9"
|
||||
"@vue/compiler-dom" "3.2.11"
|
||||
"@vue/shared" "3.2.11"
|
||||
|
||||
"@vue/component-compiler-utils@^3.1.0":
|
||||
version "3.2.2"
|
||||
@ -1133,21 +1133,21 @@
|
||||
optionalDependencies:
|
||||
prettier "^1.18.2"
|
||||
|
||||
"@vue/ref-transform@3.2.9":
|
||||
version "3.2.9"
|
||||
resolved "https://registry.yarnpkg.com/@vue/ref-transform/-/ref-transform-3.2.9.tgz#23af9e2955a6faef7f46bb367494181ad42d1948"
|
||||
integrity sha512-sKNJZlVWW9s0+Xy8WVaGZTX8jVXvkY85ooDTv21ryAS0gzQ4PzHUvqQFQSgtZSbszU2/Qpi13u2h5oZBBYFm8g==
|
||||
"@vue/ref-transform@3.2.11":
|
||||
version "3.2.11"
|
||||
resolved "https://registry.yarnpkg.com/@vue/ref-transform/-/ref-transform-3.2.11.tgz#4d282b9570d1485a73e7bf5d57cce27b4a7aa690"
|
||||
integrity sha512-7rX0YsfYb7+1PeKPME1tQyUQcQgt0sIXRRnPD1Vw8Zs2KIo90YLy9CrvwalcRCxGw0ScsjBEhVjJtWIT79TElg==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.15.0"
|
||||
"@vue/compiler-core" "3.2.9"
|
||||
"@vue/shared" "3.2.9"
|
||||
"@vue/compiler-core" "3.2.11"
|
||||
"@vue/shared" "3.2.11"
|
||||
estree-walker "^2.0.2"
|
||||
magic-string "^0.25.7"
|
||||
|
||||
"@vue/shared@3.2.9":
|
||||
version "3.2.9"
|
||||
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.9.tgz#44e44dbd82819997f192fb7dbdb90af5715dbf52"
|
||||
integrity sha512-+CifxkLVhjKT14g/LMZil8//SdCzkMkS8VfRX0cqNJiFKK4AWvxj0KV1dhbr8czikY0DZUGQew3tRMRRChMGtA==
|
||||
"@vue/shared@3.2.11":
|
||||
version "3.2.11"
|
||||
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.11.tgz#01899f54949caf1ac241de397bd17069632574de"
|
||||
integrity sha512-ovfXAsSsCvV9JVceWjkqC/7OF5HbgLOtCWjCIosmPGG8lxbPuavhIxRH1dTx4Dg9xLgRTNLvI3pVxG4ItQZekg==
|
||||
|
||||
"@webassemblyjs/ast@1.11.1":
|
||||
version "1.11.1"
|
||||
@ -1350,10 +1350,10 @@ ansi-escapes@^4.3.1:
|
||||
dependencies:
|
||||
type-fest "^0.21.3"
|
||||
|
||||
ansi-html@^0.0.7:
|
||||
version "0.0.7"
|
||||
resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
|
||||
integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4=
|
||||
ansi-html-community@^0.0.8:
|
||||
version "0.0.8"
|
||||
resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41"
|
||||
integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==
|
||||
|
||||
ansi-regex@^5.0.0:
|
||||
version "5.0.0"
|
||||
@ -1440,9 +1440,9 @@ autoprefixer@^10.2.6:
|
||||
postcss-value-parser "^4.1.0"
|
||||
|
||||
axios@^0.21:
|
||||
version "0.21.3"
|
||||
resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.3.tgz#f85d9b747f9b66d59ca463605cedf1844872b82e"
|
||||
integrity sha512-JtoZ3Ndke/+Iwt5n+BgSli/3idTvpt5OjKyoCmz4LX5+lPiY5l7C1colYezhlxThjNa/NhngCUWZSZFypIFuaA==
|
||||
version "0.21.4"
|
||||
resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575"
|
||||
integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==
|
||||
dependencies:
|
||||
follow-redirects "^1.14.0"
|
||||
|
||||
@ -3387,9 +3387,9 @@ klona@^2.0.4:
|
||||
integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==
|
||||
|
||||
laravel-mix@^6.0:
|
||||
version "6.0.29"
|
||||
resolved "https://registry.yarnpkg.com/laravel-mix/-/laravel-mix-6.0.29.tgz#4b07b731f3d3de624d19e392a2bd93ca741a5b69"
|
||||
integrity sha512-GGDpeicvHYh6J6uickr1ZiDtJdNuKsQUjWrthB4MTaN0ZzxL0kLxpNXIRHGhpoEHM+2Tl/tA40ATIDAAumCyow==
|
||||
version "6.0.31"
|
||||
resolved "https://registry.yarnpkg.com/laravel-mix/-/laravel-mix-6.0.31.tgz#c33b869d11549e781484c52f11b12405cecc72a1"
|
||||
integrity sha512-T9uFNNARS5hXl5JggCkLKybwAnyYEHBXzPseC0yJ/6EVK7eyvPOq2UAGDVqhfYTZKxrMd5B5ww1kEooDRoH+OA==
|
||||
dependencies:
|
||||
"@babel/core" "^7.14.5"
|
||||
"@babel/plugin-proposal-object-rest-spread" "^7.14.5"
|
||||
@ -3436,7 +3436,7 @@ laravel-mix@^6.0:
|
||||
vue-style-loader "^4.1.3"
|
||||
webpack "^5.38.1"
|
||||
webpack-cli "^4.7.2"
|
||||
webpack-dev-server "4.0.0-rc.1"
|
||||
webpack-dev-server "4.1.1"
|
||||
webpack-merge "^5.8.0"
|
||||
webpack-notifier "^1.13.0"
|
||||
webpackbar "^5.0.0-3"
|
||||
@ -5384,12 +5384,12 @@ webpack-dev-middleware@^5.0.0:
|
||||
range-parser "^1.2.1"
|
||||
schema-utils "^3.0.0"
|
||||
|
||||
webpack-dev-server@4.0.0-rc.1:
|
||||
version "4.0.0-rc.1"
|
||||
resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.0.0-rc.1.tgz#4826530cdff3ebe56d3a5e0fa3e7d1e006b40d33"
|
||||
integrity sha512-gZlGe0CMA0YZ5bIXFbtSegd33tYsUujYv+rgJu9Y75xHvXBSXFJiBvakMV7yTkBE+k8dgz4VsBzl7J5I5xatyg==
|
||||
webpack-dev-server@4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.1.1.tgz#e8eb8f0ce1a0e1fa65e234641763c97735398bed"
|
||||
integrity sha512-Kl1mnCEw8Cy1Kw173gCxLIB242LfPKEOj9WoKhKz/MbryZTNrILzOJTk8kiczw/YUEPzn3gcltCQv6hDsLudRg==
|
||||
dependencies:
|
||||
ansi-html "^0.0.7"
|
||||
ansi-html-community "^0.0.8"
|
||||
bonjour "^3.5.0"
|
||||
chokidar "^3.5.1"
|
||||
colorette "^1.2.2"
|
||||
|