* update layout and bootstrap package

* update templates

Co-authored-by: Michael Kaufmann <d00p@froxlor.org>
This commit is contained in:
Maurice Preuß
2022-02-16 09:57:17 +01:00
committed by GitHub
parent 3ba196fec6
commit f7db5497af
27 changed files with 55286 additions and 506 deletions

1
.gitignore vendored
View File

@@ -19,3 +19,4 @@ img/
!templates/misc/ !templates/misc/
templates/Sparkle/assets/css/custom.css templates/Sparkle/assets/css/custom.css
vendor/ vendor/
node_modules/

2
cache/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
!.gitignore
*

0
cache/.keep vendored
View File

View File

@@ -49,10 +49,7 @@
"robthree/twofactorauth": "^1.6", "robthree/twofactorauth": "^1.6",
"froxlor/idna-convert-legacy": "^2.1", "froxlor/idna-convert-legacy": "^2.1",
"voku/anti-xss": "^4.1", "voku/anti-xss": "^4.1",
"twig/twig": "^3.3", "twig/twig": "^3.3"
"twbs/bootstrap": "^5.1",
"components/jquery": "^3.6",
"components/font-awesome": "^5.15"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^9", "phpunit/phpunit": "^9",

333
composer.lock generated
View File

@@ -4,96 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "723dd2a8563bc4727619df8792ab2cb5", "content-hash": "85630208bb62bcc4b337eafe9e8c540e",
"packages": [ "packages": [
{
"name": "components/font-awesome",
"version": "5.15.4",
"source": {
"type": "git",
"url": "https://github.com/components/font-awesome.git",
"reference": "e6fd09f30f578915cc0cf186b0dd0da54385b6be"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/components/font-awesome/zipball/e6fd09f30f578915cc0cf186b0dd0da54385b6be",
"reference": "e6fd09f30f578915cc0cf186b0dd0da54385b6be",
"shasum": ""
},
"type": "component",
"extra": {
"component": {
"styles": [
"css/all.css"
],
"files": [
"css/all.min.css",
"webfonts/*"
]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"CC-BY-4.0",
"MIT",
"OFL-1.1"
],
"description": "Font Awesome, the iconic SVG, font, and CSS framework.",
"support": {
"issues": "https://github.com/components/font-awesome/issues",
"source": "https://github.com/components/font-awesome/tree/5.15.4"
},
"time": "2021-08-15T10:31:24+00:00"
},
{
"name": "components/jquery",
"version": "3.6.0",
"source": {
"type": "git",
"url": "https://github.com/components/jquery.git",
"reference": "6cf38ee1fd04b6adf8e7dda161283aa35be818c3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/components/jquery/zipball/6cf38ee1fd04b6adf8e7dda161283aa35be818c3",
"reference": "6cf38ee1fd04b6adf8e7dda161283aa35be818c3",
"shasum": ""
},
"type": "component",
"extra": {
"component": {
"scripts": [
"jquery.js"
],
"files": [
"jquery.min.js",
"jquery.min.map",
"jquery.slim.js",
"jquery.slim.min.js",
"jquery.slim.min.map"
]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "JS Foundation and other contributors"
}
],
"description": "jQuery JavaScript Library",
"homepage": "http://jquery.com",
"support": {
"forum": "http://forum.jquery.com",
"irc": "irc://irc.freenode.org/jquery",
"issues": "https://github.com/jquery/jquery/issues",
"source": "https://github.com/jquery/jquery",
"wiki": "http://docs.jquery.com/"
},
"time": "2021-03-20T19:13:42+00:00"
},
{ {
"name": "froxlor/idna-convert-legacy", "name": "froxlor/idna-convert-legacy",
"version": "v2.1.2", "version": "v2.1.2",
@@ -550,12 +462,12 @@
} }
}, },
"autoload": { "autoload": {
"psr-4": {
"Symfony\\Polyfill\\Iconv\\": ""
},
"files": [ "files": [
"bootstrap.php" "bootstrap.php"
] ],
"psr-4": {
"Symfony\\Polyfill\\Iconv\\": ""
}
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"license": [ "license": [
@@ -630,12 +542,12 @@
} }
}, },
"autoload": { "autoload": {
"psr-4": {
"Symfony\\Polyfill\\Intl\\Grapheme\\": ""
},
"files": [ "files": [
"bootstrap.php" "bootstrap.php"
] ],
"psr-4": {
"Symfony\\Polyfill\\Intl\\Grapheme\\": ""
}
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"license": [ "license": [
@@ -711,12 +623,12 @@
} }
}, },
"autoload": { "autoload": {
"psr-4": {
"Symfony\\Polyfill\\Intl\\Normalizer\\": ""
},
"files": [ "files": [
"bootstrap.php" "bootstrap.php"
], ],
"psr-4": {
"Symfony\\Polyfill\\Intl\\Normalizer\\": ""
},
"classmap": [ "classmap": [
"Resources/stubs" "Resources/stubs"
] ]
@@ -798,12 +710,12 @@
} }
}, },
"autoload": { "autoload": {
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
},
"files": [ "files": [
"bootstrap.php" "bootstrap.php"
] ],
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
}
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"license": [ "license": [
@@ -875,12 +787,12 @@
} }
}, },
"autoload": { "autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php72\\": ""
},
"files": [ "files": [
"bootstrap.php" "bootstrap.php"
] ],
"psr-4": {
"Symfony\\Polyfill\\Php72\\": ""
}
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"license": [ "license": [
@@ -923,56 +835,6 @@
], ],
"time": "2021-05-27T09:17:38+00:00" "time": "2021-05-27T09:17:38+00:00"
}, },
{
"name": "twbs/bootstrap",
"version": "v5.1.3",
"source": {
"type": "git",
"url": "https://github.com/twbs/bootstrap.git",
"reference": "1a6fdfae6be09b09eaced8f0e442ca6f7680a61e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twbs/bootstrap/zipball/1a6fdfae6be09b09eaced8f0e442ca6f7680a61e",
"reference": "1a6fdfae6be09b09eaced8f0e442ca6f7680a61e",
"shasum": ""
},
"replace": {
"twitter/bootstrap": "self.version"
},
"type": "library",
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mark Otto",
"email": "markdotto@gmail.com"
},
{
"name": "Jacob Thornton",
"email": "jacobthornton@gmail.com"
}
],
"description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
"homepage": "https://getbootstrap.com/",
"keywords": [
"JS",
"css",
"framework",
"front-end",
"mobile-first",
"responsive",
"sass",
"web"
],
"support": {
"issues": "https://github.com/twbs/bootstrap/issues",
"source": "https://github.com/twbs/bootstrap/tree/v5.1.3"
},
"time": "2021-10-09T06:43:19+00:00"
},
{ {
"name": "twig/twig", "name": "twig/twig",
"version": "v3.3.8", "version": "v3.3.8",
@@ -1051,21 +913,21 @@
}, },
{ {
"name": "voku/anti-xss", "name": "voku/anti-xss",
"version": "4.1.35", "version": "4.1.37",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/voku/anti-xss.git", "url": "https://github.com/voku/anti-xss.git",
"reference": "4d7ec2816cd6eeebb7d5abbde8b0349f66709496" "reference": "728e158427a263917f33b0a29eb75d866bd18d17"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/voku/anti-xss/zipball/4d7ec2816cd6eeebb7d5abbde8b0349f66709496", "url": "https://api.github.com/repos/voku/anti-xss/zipball/728e158427a263917f33b0a29eb75d866bd18d17",
"reference": "4d7ec2816cd6eeebb7d5abbde8b0349f66709496", "reference": "728e158427a263917f33b0a29eb75d866bd18d17",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=7.0.0", "php": ">=7.0.0",
"voku/portable-utf8": "~6.0.0" "voku/portable-utf8": "~6.0.2"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0"
@@ -1106,7 +968,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/voku/anti-xss/issues", "issues": "https://github.com/voku/anti-xss/issues",
"source": "https://github.com/voku/anti-xss/tree/4.1.35" "source": "https://github.com/voku/anti-xss/tree/4.1.37"
}, },
"funding": [ "funding": [
{ {
@@ -1130,7 +992,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-12-08T15:20:33+00:00" "time": "2022-02-15T01:57:51+00:00"
}, },
{ {
"name": "voku/portable-ascii", "name": "voku/portable-ascii",
@@ -1208,16 +1070,16 @@
}, },
{ {
"name": "voku/portable-utf8", "name": "voku/portable-utf8",
"version": "6.0.2", "version": "6.0.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/voku/portable-utf8.git", "url": "https://github.com/voku/portable-utf8.git",
"reference": "17fc93430f64873ba7812893deb24e7644d31b71" "reference": "82a714b5a4973974c1113e97b11c1044a8b8cb85"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/voku/portable-utf8/zipball/17fc93430f64873ba7812893deb24e7644d31b71", "url": "https://api.github.com/repos/voku/portable-utf8/zipball/82a714b5a4973974c1113e97b11c1044a8b8cb85",
"reference": "17fc93430f64873ba7812893deb24e7644d31b71", "reference": "82a714b5a4973974c1113e97b11c1044a8b8cb85",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -1242,12 +1104,12 @@
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
"psr-4": {
"voku\\": "src/voku/"
},
"files": [ "files": [
"bootstrap.php" "bootstrap.php"
] ],
"psr-4": {
"voku\\": "src/voku/"
}
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"license": [ "license": [
@@ -1279,7 +1141,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/voku/portable-utf8/issues", "issues": "https://github.com/voku/portable-utf8/issues",
"source": "https://github.com/voku/portable-utf8/tree/6.0.2" "source": "https://github.com/voku/portable-utf8/tree/6.0.3"
}, },
"funding": [ "funding": [
{ {
@@ -1303,7 +1165,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-01-24T19:06:57+00:00" "time": "2022-01-30T05:20:24+00:00"
} }
], ],
"packages-dev": [ "packages-dev": [
@@ -1537,12 +1399,12 @@
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
"psr-4": {
"DeepCopy\\": "src/DeepCopy/"
},
"files": [ "files": [
"src/DeepCopy/deep_copy.php" "src/DeepCopy/deep_copy.php"
] ],
"psr-4": {
"DeepCopy\\": "src/DeepCopy/"
}
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"license": [ "license": [
@@ -1743,16 +1605,16 @@
}, },
{ {
"name": "phar-io/version", "name": "phar-io/version",
"version": "3.1.0", "version": "3.1.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phar-io/version.git", "url": "https://github.com/phar-io/version.git",
"reference": "bae7c545bef187884426f042434e561ab1ddb182" "reference": "15a90844ad40f127afd244c0cad228de2a80052a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a",
"reference": "bae7c545bef187884426f042434e561ab1ddb182", "reference": "15a90844ad40f127afd244c0cad228de2a80052a",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -1788,9 +1650,9 @@
"description": "Library for handling version information and constraints", "description": "Library for handling version information and constraints",
"support": { "support": {
"issues": "https://github.com/phar-io/version/issues", "issues": "https://github.com/phar-io/version/issues",
"source": "https://github.com/phar-io/version/tree/3.1.0" "source": "https://github.com/phar-io/version/tree/3.1.1"
}, },
"time": "2021-02-23T14:00:09+00:00" "time": "2022-02-07T21:56:48+00:00"
}, },
{ {
"name": "phpcompatibility/php-compatibility", "name": "phpcompatibility/php-compatibility",
@@ -2605,11 +2467,11 @@
} }
}, },
"autoload": { "autoload": {
"classmap": [
"src/"
],
"files": [ "files": [
"src/Framework/Assert/Functions.php" "src/Framework/Assert/Functions.php"
],
"classmap": [
"src/"
] ]
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
@@ -3200,16 +3062,16 @@
}, },
{ {
"name": "sebastian/global-state", "name": "sebastian/global-state",
"version": "5.0.3", "version": "5.0.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git", "url": "https://github.com/sebastianbergmann/global-state.git",
"reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2",
"reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -3252,7 +3114,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/global-state/issues", "issues": "https://github.com/sebastianbergmann/global-state/issues",
"source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5"
}, },
"funding": [ "funding": [
{ {
@@ -3260,7 +3122,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2021-06-11T13:31:12+00:00" "time": "2022-02-14T08:28:10+00:00"
}, },
{ {
"name": "sebastian/lines-of-code", "name": "sebastian/lines-of-code",
@@ -3777,16 +3639,16 @@
}, },
{ {
"name": "symfony/config", "name": "symfony/config",
"version": "v5.4.2", "version": "v5.4.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/config.git", "url": "https://github.com/symfony/config.git",
"reference": "2e082dae50da563c639119b7b52347a2a3db4ba5" "reference": "d65e1bd990c740e31feb07d2b0927b8d4df9956f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/config/zipball/2e082dae50da563c639119b7b52347a2a3db4ba5", "url": "https://api.github.com/repos/symfony/config/zipball/d65e1bd990c740e31feb07d2b0927b8d4df9956f",
"reference": "2e082dae50da563c639119b7b52347a2a3db4ba5", "reference": "d65e1bd990c740e31feb07d2b0927b8d4df9956f",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -3836,7 +3698,7 @@
"description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/config/tree/v5.4.2" "source": "https://github.com/symfony/config/tree/v5.4.3"
}, },
"funding": [ "funding": [
{ {
@@ -3852,20 +3714,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-12-15T11:06:13+00:00" "time": "2022-01-03T09:50:52+00:00"
}, },
{ {
"name": "symfony/dependency-injection", "name": "symfony/dependency-injection",
"version": "v5.4.2", "version": "v5.4.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/dependency-injection.git", "url": "https://github.com/symfony/dependency-injection.git",
"reference": "ba94559be9738d77cd29e24b5d81cf3b89b7d628" "reference": "974580fd67f14d65b045c11b09eb149cd4b13df5"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/ba94559be9738d77cd29e24b5d81cf3b89b7d628", "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/974580fd67f14d65b045c11b09eb149cd4b13df5",
"reference": "ba94559be9738d77cd29e24b5d81cf3b89b7d628", "reference": "974580fd67f14d65b045c11b09eb149cd4b13df5",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -3925,7 +3787,7 @@
"description": "Allows you to standardize and centralize the way objects are constructed in your application", "description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/dependency-injection/tree/v5.4.2" "source": "https://github.com/symfony/dependency-injection/tree/v5.4.3"
}, },
"funding": [ "funding": [
{ {
@@ -3941,29 +3803,29 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-12-29T10:10:35+00:00" "time": "2022-01-26T16:28:35+00:00"
}, },
{ {
"name": "symfony/deprecation-contracts", "name": "symfony/deprecation-contracts",
"version": "v2.5.0", "version": "v3.0.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git", "url": "https://github.com/symfony/deprecation-contracts.git",
"reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8" "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/6f981ee24cf69ee7ce9736146d1c57c2780598a8", "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced",
"reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8", "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=7.1" "php": ">=8.0.2"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "2.5-dev" "dev-main": "3.0-dev"
}, },
"thanks": { "thanks": {
"name": "symfony/contracts", "name": "symfony/contracts",
@@ -3992,7 +3854,7 @@
"description": "A generic function and convention to trigger deprecation notices", "description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.0" "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.0"
}, },
"funding": [ "funding": [
{ {
@@ -4008,20 +3870,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-07-12T14:48:14+00:00" "time": "2021-11-01T23:48:49+00:00"
}, },
{ {
"name": "symfony/filesystem", "name": "symfony/filesystem",
"version": "v5.4.0", "version": "v5.4.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/filesystem.git", "url": "https://github.com/symfony/filesystem.git",
"reference": "731f917dc31edcffec2c6a777f3698c33bea8f01" "reference": "0f0c4bf1840420f4aef3f32044a9dbb24682731b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/731f917dc31edcffec2c6a777f3698c33bea8f01", "url": "https://api.github.com/repos/symfony/filesystem/zipball/0f0c4bf1840420f4aef3f32044a9dbb24682731b",
"reference": "731f917dc31edcffec2c6a777f3698c33bea8f01", "reference": "0f0c4bf1840420f4aef3f32044a9dbb24682731b",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -4056,7 +3918,7 @@
"description": "Provides basic utilities for the filesystem", "description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/filesystem/tree/v5.4.0" "source": "https://github.com/symfony/filesystem/tree/v5.4.3"
}, },
"funding": [ "funding": [
{ {
@@ -4072,7 +3934,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-10-28T13:39:27+00:00" "time": "2022-01-02T09:53:40+00:00"
}, },
{ {
"name": "symfony/polyfill-php80", "name": "symfony/polyfill-php80",
@@ -4102,12 +3964,12 @@
} }
}, },
"autoload": { "autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php80\\": ""
},
"files": [ "files": [
"bootstrap.php" "bootstrap.php"
], ],
"psr-4": {
"Symfony\\Polyfill\\Php80\\": ""
},
"classmap": [ "classmap": [
"Resources/stubs" "Resources/stubs"
] ]
@@ -4185,12 +4047,12 @@
} }
}, },
"autoload": { "autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php81\\": ""
},
"files": [ "files": [
"bootstrap.php" "bootstrap.php"
], ],
"psr-4": {
"Symfony\\Polyfill\\Php81\\": ""
},
"classmap": [ "classmap": [
"Resources/stubs" "Resources/stubs"
] ]
@@ -4238,22 +4100,21 @@
}, },
{ {
"name": "symfony/service-contracts", "name": "symfony/service-contracts",
"version": "v2.5.0", "version": "v2.4.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/service-contracts.git", "url": "https://github.com/symfony/service-contracts.git",
"reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc" "reference": "d664541b99d6fb0247ec5ff32e87238582236204"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d664541b99d6fb0247ec5ff32e87238582236204",
"reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", "reference": "d664541b99d6fb0247ec5ff32e87238582236204",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=7.2.5", "php": ">=7.2.5",
"psr/container": "^1.1", "psr/container": "^1.1"
"symfony/deprecation-contracts": "^2.1"
}, },
"conflict": { "conflict": {
"ext-psr": "<1.1|>=2" "ext-psr": "<1.1|>=2"
@@ -4264,7 +4125,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "2.5-dev" "dev-main": "2.4-dev"
}, },
"thanks": { "thanks": {
"name": "symfony/contracts", "name": "symfony/contracts",
@@ -4301,7 +4162,7 @@
"standards" "standards"
], ],
"support": { "support": {
"source": "https://github.com/symfony/service-contracts/tree/v2.5.0" "source": "https://github.com/symfony/service-contracts/tree/v2.4.1"
}, },
"funding": [ "funding": [
{ {
@@ -4317,7 +4178,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-11-04T16:48:04+00:00" "time": "2021-11-04T16:37:19+00:00"
}, },
{ {
"name": "theseer/tokenizer", "name": "theseer/tokenizer",
@@ -4452,5 +4313,5 @@
"platform-dev": { "platform-dev": {
"ext-pcntl": "*" "ext-pcntl": "*"
}, },
"plugin-api-version": "2.0.0" "plugin-api-version": "2.2.0"
} }

View File

@@ -18,24 +18,33 @@
// define default theme for configurehint, etc. // define default theme for configurehint, etc.
$_deftheme = 'Froxlor'; $_deftheme = 'Froxlor';
// validate correct php version function view($template, $attributes) {
if (version_compare("7.1.0", PHP_VERSION, ">=")) { $view = file_get_contents(dirname(__DIR__) . '/templates/' . $template);
// get hint-template
$wrongphp_hint = file_get_contents(dirname(__DIR__) . '/templates/' . $_deftheme . '/misc/phprequirementfailed.html.twig'); return str_replace(array_keys($attributes), array_values($attributes), $view);
// replace values
$wrongphp_hint = str_replace("<FROXLOR_PHPMIN>", "7.1.0", $wrongphp_hint);
$wrongphp_hint = str_replace("<CURRENT_VERSION>", PHP_VERSION, $wrongphp_hint);
$wrongphp_hint = str_replace("<CURRENT_YEAR>", date('Y', time()), $wrongphp_hint);
die($wrongphp_hint);
} }
// validate correct php version
if (version_compare("7.1.0", PHP_VERSION, ">=")) {
die(
view($_deftheme . '/misc/phprequirementfailed.html.twig', [
'{{ basehref }}' => '../',
'{{ froxlor_min_version }}' => '7.1.0',
'{{ current_version }}' => PHP_VERSION,
'{{ current_year }}' => date('Y', time()),
])
);
}
// validate vendor autoloader
if (!file_exists(dirname(__DIR__) . '/vendor/autoload.php')) { if (!file_exists(dirname(__DIR__) . '/vendor/autoload.php')) {
// get hint-template die(
$vendor_hint = file_get_contents(dirname(__DIR__) . '/templates/' . $_deftheme . '/misc/vendormissinghint.html.twig'); view($_deftheme . '/misc/vendormissinghint.html.twig', [
// replace values '{{ basehref }}' => '../',
$vendor_hint = str_replace("<FROXLOR_INSTALL_DIR>", dirname(__DIR__), $vendor_hint); '{{ froxlor_install_dir }}' => dirname(__DIR__),
$vendor_hint = str_replace("<CURRENT_YEAR>", date('Y', time()), $vendor_hint); '{{ current_year }}' => date('Y', time()),
die($vendor_hint); ])
);
} }
require dirname(__DIR__) . '/vendor/autoload.php'; require dirname(__DIR__) . '/vendor/autoload.php';

View File

@@ -468,8 +468,9 @@ class FroxlorInstall
`vhostcontainer` = '1', `vhostcontainer` = '1',
`vhostcontainer_servername_statement` = '1' `vhostcontainer_servername_statement` = '1'
"); ");
$nvh = $this->_data['webserver'] == 'apache2' ? '1' : '0';
$stmt->execute(array( $stmt->execute(array(
'nvh' => $this->_data['webserver'] == 'apache2' ? '1' : '0', 'nvh' => $nvh,
'serverip' => $this->_data['serverip'], 'serverip' => $this->_data['serverip'],
'serverport' => 80 'serverport' => 80
)); ));

View File

@@ -20,24 +20,33 @@
// define default theme for configurehint, etc. // define default theme for configurehint, etc.
$_deftheme = 'Froxlor'; $_deftheme = 'Froxlor';
// validate correct php version function view($template, $attributes) {
if (version_compare("7.1.0", PHP_VERSION, ">=")) { $view = file_get_contents(dirname(__DIR__) . '/templates/' . $template);
// get hint-template
$wrongphp_hint = file_get_contents(dirname(__DIR__) . '/templates/' . $_deftheme . '/misc/phprequirementfailed.html.twig'); return str_replace(array_keys($attributes), array_values($attributes), $view);
// replace values
$wrongphp_hint = str_replace("<FROXLOR_PHPMIN>", "7.1.0", $wrongphp_hint);
$wrongphp_hint = str_replace("<CURRENT_VERSION>", PHP_VERSION, $wrongphp_hint);
$wrongphp_hint = str_replace("<CURRENT_YEAR>", date('Y', time()), $wrongphp_hint);
die($wrongphp_hint);
} }
// validate correct php version
if (version_compare("7.1.0", PHP_VERSION, ">=")) {
die(
view($_deftheme . '/misc/phprequirementfailed.html.twig', [
'{{ basehref }}' => '',
'{{ froxlor_min_version }}' => '7.1.0',
'{{ current_version }}' => PHP_VERSION,
'{{ current_year }}' => date('Y', time()),
])
);
}
// validate vendor autoloader
if (!file_exists(dirname(__DIR__) . '/vendor/autoload.php')) { if (!file_exists(dirname(__DIR__) . '/vendor/autoload.php')) {
// get hint-template die(
$vendor_hint = file_get_contents(dirname(__DIR__) . '/templates/' . $_deftheme . '/misc/vendormissinghint.html.twig'); view($_deftheme . '/misc/vendormissinghint.html.twig', [
// replace values '{{ basehref }}' => '',
$vendor_hint = str_replace("<FROXLOR_INSTALL_DIR>", dirname(__DIR__), $vendor_hint); '{{ froxlor_install_dir }}' => dirname(__DIR__),
$vendor_hint = str_replace("<CURRENT_YEAR>", date('Y', time()), $vendor_hint); '{{ current_year }}' => date('Y', time()),
die($vendor_hint); ])
);
} }
require dirname(__DIR__) . '/vendor/autoload.php'; require dirname(__DIR__) . '/vendor/autoload.php';

4
mix-manifest.json Normal file
View File

@@ -0,0 +1,4 @@
{
"/templates/Froxlor/assets/js/main.js": "/templates/Froxlor/assets/js/main.js",
"/templates/Froxlor/assets/css/main.css": "/templates/Froxlor/assets/css/main.css"
}

16460
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

24
package.json Normal file
View File

@@ -0,0 +1,24 @@
{
"private": true,
"scripts": {
"dev": "npm run development",
"development": "mix",
"watch": "mix watch",
"watch-poll": "mix watch -- --watch-options-poll=1000",
"hot": "mix watch --hot",
"prod": "npm run production",
"production": "mix --production"
},
"devDependencies": {
"laravel-mix": "^6.0.42",
"resolve-url-loader": "^5.0.0",
"sass": "^1.49.7",
"sass-loader": "^12.5.0"
},
"dependencies": {
"@fortawesome/fontawesome-free": "^6.0.0",
"@popperjs/core": "^2.11.2",
"bootstrap": "^5.1.3",
"jquery": "^3.6.0"
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,5 @@
/*!
* Bootstrap v5.1.3 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

View File

@@ -1,77 +1,66 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html lang="en" {% if darkmode is defined %}class="{{ darkmode }}"{% endif %}>
<head> <head>
<!-- Required meta tags --> <!-- Required meta tags -->
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow, noarchive"/> <meta name="robots" content="noindex, nofollow, noarchive"/>
<meta <meta name="googlebot" content="nosnippet"/>
name="GOOGLEBOT" content="nosnippet"/>
<!-- Bootstrap CSS --> <!-- CSS -->
<link <link href="{{ basehref|default("") }}templates/Froxlor/assets/css/main.css" rel="stylesheet">
rel="stylesheet" href="{{ basehref|default("") }}vendor/twbs/bootstrap/dist/css/bootstrap.min.css"> {{ theme_css|raw }}
{% block custom_css %}{% endblock %}
<!-- FontAwesome CSS --> <!-- Scripts -->
<link <script src="{{ basehref|default("") }}templates/Froxlor/assets/js/main.js"></script>
rel="stylesheet" href="{{ basehref|default("") }}vendor/components/font-awesome/css/all.min.css"> {{ theme_js|raw }}
{% block custom_js %}{% endblock %}
<title>Froxlor
{% if page_title %}
|
{{ page_title }}
{% endif %}
</title>
</head>
<body {% if body_class is defined %}class="{{ body_class }}"{% endif %}>
<div class="container-fluid">
{% block navigation %}{% endblock %}
<!-- our css --> {{ global_errors|raw }}
<link href="{{ basehref|default("") }}templates/Froxlor/assets/css/main.css" rel="stylesheet">
{{ theme_css|raw }}
{% block custom_css %}{% endblock %}
<!-- Bootstrap and necessary plugins --> {% block body %}{% endblock %}
<script src="{{ basehref|default("") }}vendor/components/jquery/jquery.min.js"></script>
<script src="{{ basehref|default("") }}vendor/twbs/bootstrap/dist/js/bootstrap.min.js"></script>
{{ theme_js|raw }}
{% block custom_js %}{% endblock %}
<title>Froxlor
{% if page_title %}
|
{{ page_title }}
{% endif %}
</title>
</head>
<footer class="py-5 text-center">
<body> <span>
<div class="container-fluid"> {% block navigation %}{% endblock %} <img src="{{ basehref|default("") }}templates/Froxlor/assets/img/logo_grey.png" alt="Froxlor"/>
{% if install_mode is not defined %}
{{ global_errors|raw }} {% if (get_setting('admin.show_version_login') == '1'
and module == 'Login') or (module != 'Login'
{% block body %}{% endblock %} and get_setting('admin.show_version_footer') == '1') %}
<footer class="pt-5 pb-5 text-center">
<span><img src="{{ basehref|default("") }}templates/Froxlor/assets/img/logo_grey.png" alt="Froxlor"/>
{% if install_mode is not defined %}
{% if (get_setting('admin.show_version_login') ==
'1' and module == 'Login') or (module != 'Login'
and get_setting('admin.show_version_footer') == '1') %}{% endif %}
{{ call_static('\\Froxlor\\Froxlor', 'getFullVersion') }} {{ call_static('\\Froxlor\\Froxlor', 'getFullVersion') }}
{% endif %} {% endif %}
&copy; 2009-{{ "now"|date("Y") }} {% endif %}
by &copy; 2009-{{ "now"|date("Y") }} by <a href="https://www.froxlor.org/" rel="external">the Froxlor Team</a>
<a href="http://www.froxlor.org/" rel="external">the Froxlor Team</a><br/> {% if install_mode is not defined %}
{% if install_mode is not defined %} {% if (get_setting('panel.imprint_url') != '') %}
{% if (get_setting('panel.imprint_url') != '') %} <a href="{{ get_setting('panel.imprint_url') }}" target="_blank" class="footer-link">{{ lng('imprint') }}</a>
<a href="{{ get_setting('panel.imprint_url') }}" target="_blank" class="footer-link">{{ lng('imprint') }}</a>
{% endif %}
{% if (get_setting('panel.terms_url') != '') %}
<a href="{{ get_setting('panel.terms_url') }}" target="_blank" class="footer-link">{{ lng('terms') }}</a>
{% endif %}
{% if (get_setting('panel.privacy_url') != '') %}
<a href="{{ get_setting('panel.privacy_url') }}" target="_blank" class="footer-link">{{ lng('privacy') }}</a>
{% endif %}
{% endif %} {% endif %}
{% if (get_setting('panel.terms_url') != '') %}
<a href="{{ get_setting('panel.terms_url') }}" target="_blank" class="footer-link">{{ lng('terms') }}</a>
{% endif %}
{% if (get_setting('panel.privacy_url') != '') %}
<a href="{{ get_setting('panel.privacy_url') }}" target="_blank" class="footer-link">{{ lng('privacy') }}</a>
{% endif %}
{% endif %}
</span>
{% if lng('translator') %}
<span class="mt-3">
{{ lng('panel.translator') }}: {{ lng('translator') }}
</span> </span>
{% if lng('translator') %} {% endif %}
<br/> </footer>
<span>{{ lng('panel.translator') }}: </div>
{{ lng('translator') }} </body>
{% endif %}
</footer>
</div>
</body>
</body>
</html> </html>

View File

@@ -82,7 +82,8 @@
<input type="hidden" name="check" value="1"/> <input type="hidden" name="check" value="1"/>
<input type="hidden" name="language" value="{{ pagecontent.form.activelang }}"/> <input type="hidden" name="language" value="{{ pagecontent.form.activelang }}"/>
<input type="hidden" name="installstep" value="1"/> <input type="hidden" name="installstep" value="1"/>
<button class="btn btn-lg btn-success" type="submit" name="submitbutton">{{ lng('click_here_to_continue') }} <button class="btn btn-lg btn-success" type="submit" name="submitbutton">
&raquo;</button> {{ lng('click_here_to_continue') }} &raquo;
</button>
</aside> </aside>
</form> </form>

View File

@@ -1,53 +1,61 @@
{% extends "Froxlor/base.html.twig" %} {% extends "Froxlor/base.html.twig" %}
{% set body_class = "min-vh-100 d-flex align-items-center" %}
{% block body %} {% block body %}
<div class="container p-3 bg-light border border-top-0"> <div class="container max-w-lg flex align-content-center mt-5">
<img src="{{ basehref|default('') }}templates/Froxlor/assets/img/logo.png" alt="Froxlor Server Management Panel"/> <img src="{{ basehref|default('') }}templates/Froxlor/assets/img/logo.png" class="filter-me" alt="Froxlor Server Management Panel"/>
<section class="mt-4">
<h3 class="text-center mb-3">{{ pagetitle }}</h3> <section class="card shadow mt-5">
{% if pagecontent.checks is defined or pagecontent.installprocess is defined %} <div class="card-body">
<table class="table table-borderless table-sm"> <h3 class="card-title mb-3">{{ pagetitle }}</h3>
{% if pagecontent.checks is defined %} {% if pagecontent.checks is defined or pagecontent.installprocess is defined %}
{% set checks = pagecontent.checks %} <table class="table table-borderless table-sm">
{% else %} {% if pagecontent.checks is defined %}
{% set checks = pagecontent.installprocess %} {% set checks = pagecontent.checks %}
{% endif %} {% else %}
{% for check in checks %} {% set checks = pagecontent.installprocess %}
<tr class="{% if check.result == 1 %}table-danger{% elseif check.result == 2 %}table-warning{% endif %}"> {% endif %}
<td class="w-75" scope="row">{{ check.title }}</td>
<td class="col-auto text-end{% if check.result == 0 %} text-success{% endif %}"> {% for check in checks %}
<span class="d-none d-md-inline">{{ check.result_txt }}</span> <tr class="{% if check.result == 1 %}table-danger{% elseif check.result == 2 %}table-warning{% endif %}">
{% if check.result == 0 %}&nbsp;&check;{% elseif check.result == 2 %}<span class="d-md-none">&nbsp;???</span>{% elseif check.result == 1 %}<span class="d-md-none">&nbsp;!!!</span> <td class="w-75" scope="row">{{ check.title }}</td>
{% endif %} <td class="col-auto text-end{% if check.result == 0 %} text-success{% endif %}">
</td> <span class="d-none d-md-inline">{{ check.result_txt }}</span>
</tr> {% if check.result == 0 %}&nbsp;<i class="fa fa-check-circle" {% elseif check.result == 2 %}<span class="d-md-none">&nbsp;???</span>{% elseif check.result == 1 %}<span class="d-md-none">&nbsp;!!!</span>
{% if check.result_desc is not empty %} {% endif %}
<tr>
<td colspan="2" class="text-end">
<small>{{ check.result_desc|raw }}</span>
</td> </td>
</tr> </tr>
</small> {% if check.result_desc is not empty %}
</td> <tr>
</tr> <td colspan="2" class="text-end">
{% endif %} <span>{{ check.result_desc|raw }}</span>
{% endfor %} </td>
</table> </tr>
{% elseif pagecontent.form is defined %} {% endif %}
{% include "Froxlor/install/form.html.twig" %} {% endfor %}
{% else %} </table>
<div class="alert alert-warning" role="alert"> {% elseif pagecontent.form is defined %}
{{ pagecontent }} {% include "Froxlor/install/form.html.twig" %}
{% else %}
<div class="alert alert-warning" role="alert">
{{ pagecontent }}
</div>
{% endif %}
{% if pagenavigation is not empty %}
<div class="row pt-md-3">
<div class="col-12 col-md-8 d-flex align-items-center">
<h4 class="p-0 m-0 text-{% if pagenavigation.bad %}danger{% else %}success{% endif %}">{{ pagenavigation.message }}</h4>
</div>
<div class="col-12 col-md-4 text-end mt-4 mt-md-0">
<a class="btn btn-lg btn-block btn-{% if pagenavigation.bad %}warning{% else %}success{% endif %}" href="{{ pagenavigation.link}}">
{{ pagenavigation.linktext }} &raquo;
</a>
</div>
</div>
{% endif %}
</div>
</section>
</div> </div>
{% endif %} {% endblock %}
{% if pagenavigation is not empty %}
<div class="row pt-md-3">
<div class="col-12 col-md-8 d-flex align-items-center">
<h4 class="p-0 m-0 text-{% if pagenavigation.bad %}danger{% else %}success{% endif %}">{{ pagenavigation.message }}</h4>
</div>
<div class="col-12 col-md-4 text-end mt-4 mt-md-0">
<a class="btn btn-lg btn-block btn-{% if pagenavigation.bad %}warning{% else %}success{% endif %}" href="{{ pagenavigation.link}}">{{ pagenavigation.linktext }}
&raquo;</a>
</div>
</div>
{% endif %}</section></div>{% endblock %}

View File

@@ -1,47 +1,60 @@
{% extends "Froxlor/base.html.twig" %} {% extends "Froxlor/base.html.twig" %}
{% set body_class = "min-vh-100 d-flex align-items-center" %}
{% block body %} {% block body %}
<div class="container p-3 bg-light border border-top-0"> <div class="container">
<img src="{{ basehref|default('') }}templates/Froxlor/assets/img/logo.png" alt="Froxlor Server Management Panel"/> <div class="row justify-content-center">
<section class="mt-4"> <form class="col-4 d-flex flex-column" method="post" enctype="application/x-www-form-urlencoded">
<h3 class="text-center mb-3">{{ pagetitle }}</h3> <img class="align-self-center mb-5" src="{{ basehref }}templates/Froxlor/assets/img/logo.png" alt="Froxlor Server Management Panel"/>
{% if upd_in_progress %}
<div class="alert alert-warning" role="alert"> <div class="card shadow">
{{ lng('update.updateinprogress_onlyadmincanlogin')|raw }} <div class="card-body">
</div> <h5 class="card-title">{{ pagetitle }}</h5>
{% elseif successmsg is not empty %} <p>Please log in to access your Account.</p>
<div class="alert alert-success" role="alert">
<h4 class="alert-heading">{{ lng('success.success') }}</h4> {% if upd_in_progress %}
<p>{{ successmsg|raw }}</p> <div class="alert alert-warning" role="alert">
</div> {{ lng('update.updateinprogress_onlyadmincanlogin')|raw }}
{% elseif message is not empty %} </div>
<div class="alert alert-danger" role="alert"> {% elseif successmsg is not empty %}
<h4 class="alert-heading">{{ lng('error.error') }}</h4> <div class="alert alert-success" role="alert">
<p>{{ message|raw }}</p> <h4 class="alert-heading">{{ lng('success.success') }}</h4>
</div> <p>{{ successmsg|raw }}</p>
{% endif %} </div>
<form action="index.php" method="post" enctype="application/x-www-form-urlencoded"> {% elseif message is not empty %}
<div class="row mb-3"> <div class="alert alert-danger" role="alert">
<label for="loginname" class="col-sm-4 col-form-label">{{ lng('login.username') }}</label> <h4 class="alert-heading">{{ lng('error.error') }}</h4>
<div class="col-sm-8"> <p>{{ message|raw }}</p>
<input class="form-control" type="text" name="loginname" id="loginname" value="" required/> </div>
{% endif %}
<div class="mb-3">
<label for="loginname" class="col-form-label">{{ lng('login.username') }}</label>
<input class="form-control" type="text" name="loginname" id="loginname" value="" required/>
</div>
<div class="mb-3">
<label for="password" class="col-form-label">{{ lng('login.password') }}</label>
<input class="form-control" type="password" name="password" id="password" value="" required/>
</div>
<div>
<label for="language" class="col-form-label">{{ lng('login.language') }}</label>
<select class="form-control" name="language" id="language" required>
<option value="de">Deutsch</option>
</select>
</div>
</div>
<div class="card-body d-grid gap-2">
<input type="hidden" name="script" value="{{ lastscript }}" />
<input type="hidden" name="qrystr" value="{{ lastqrystr }}" />
<input type="hidden" name="send" value="send" />
<button class="btn btn-primary rounded-top-0" type="submit" name="dologin">{{ lng('login.login') }}</button>
</div> </div>
</div> </div>
<div class="row mb-3">
<label for="password" class="col-sm-4 col-form-label">{{ lng('login.password') }}</label>
<div class="col-sm-8">
<input class="form-control" type="password" name="password" id="password" value="" required/>
</div>
</div>
<strong>language stuff noch</strong>
<aside class="text-end">
<input type="hidden" name="script" value="{{ lastscript }}" />
<input type="hidden" name="qrystr" value="{{ lastqrystr }}" />
<input type="hidden" name="send" value="send" />
<button class="btn btn-sm btn-primary" type="submit" name="dologin">{{ lng('login.login') }}</button>
</aside>
</form> </form>
<strong>passwort vergessen stuff noch</strong> </div>
</section>
</div> </div>
{% endblock %} {% endblock %}

View File

@@ -1,5 +1,7 @@
{% extends "Froxlor/base.html.twig" %} {% extends "Froxlor/base.html.twig" %}
{% set body_class = "min-vh-100 d-flex align-items-center" %}
{% block body %} {% block body %}
<div class="alert alert-{{ type }} fade show" role="alert"> <div class="alert alert-{{ type }} fade show" role="alert">
<h4 class="alert-heading"> <h4 class="alert-heading">

View File

@@ -1,17 +1,24 @@
{% extends "Froxlor/base.html.twig" %} {% extends "Froxlor/base.html.twig" %}
{% set body_class = "min-vh-100 d-flex align-items-center" %}
{% block body %} {% block body %}
<div class="container my-auto"> <div class="container max-w-lg flex align-content-center mt-5">
<div class="alert alert-primary fade show" role="alert"> <img src="templates/Sparkle/assets/img/logo.png" alt="Froxlor Server Management Panel" />
<h4 class="alert-heading">
Welcome to froxlor <div class="row gx-0 rounded shadow bg-primary text-white mt-5">
</h4> <div class="col p-5 rounded-start">
<p>It seems that Froxlor has not been installed yet.</p> <h2 class="card-title">Welcome to Froxlor</h2>
<p>Click on the link below to start the installation.</p> <p class="lead mt-5">It seems that Froxlor has not been installed yet.</p>
<hr> <p class="lead">Click on the button below to start the installation.</p>
<p class="mt-1 text-center"> </div>
<a href="./install/install.php" class="btn btn-primary" title="Click to start the install process">Start install</a>
</p> <div class="col text-white position-relative">
</div> <img class="h-75 position-absolute bottom-0 end-0 rounded-corner-tl-bl" src="{{ basehref }}templates/Froxlor/assets/img/preview.png">
</div> </div>
</div>
<div class="mt-5 text-end">
<a class="btn btn-lg btn-primary" href="./install/install.php" title="Click to start the install process">Start install</a>
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -1,5 +1,7 @@
{% extends "Froxlor/base.html.twig" %} {% extends "Froxlor/base.html.twig" %}
{% set body_class = "min-vh-100 d-flex align-items-center" %}
{% block body %} {% block body %}
<div class="container my-auto"> <div class="container my-auto">
<div class="alert alert-warning fade show" role="alert"> <div class="alert alert-warning fade show" role="alert">
@@ -8,9 +10,7 @@
</h4> </h4>
<p>The configuration file <b>lib/userdata.inc.php</b> cannot be read from the webserver.</p> <p>The configuration file <b>lib/userdata.inc.php</b> cannot be read from the webserver.</p>
<p>This mostly happens due to wrong ownership.<br />Try the following command to correct the ownership:</p> <p>This mostly happens due to wrong ownership.<br />Try the following command to correct the ownership:</p>
<p class="mb-0">
<pre>chown -R {{ user }}:{{ group }} {{ installdir }}</pre> <pre>chown -R {{ user }}:{{ group }} {{ installdir }}</pre>
</p>
<hr> <hr>
<p class="mt-1 text-center"> <p class="mt-1 text-center">
<a href="./install/install.php" class="btn btn-primary" title="Click to start the install process">Start install</a> <a href="./install/install.php" class="btn btn-primary" title="Click to start the install process">Start install</a>

View File

@@ -1,49 +1,43 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html lang="en">
<head> <head>
<!-- Required meta tags --> <!-- Required meta tags -->
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow, noarchive" /> <meta name="robots" content="noindex, nofollow, noarchive" />
<meta name="GOOGLEBOT" content="nosnippet" /> <meta name="googlebot" content="nosnippet" />
<!-- Bootstrap CSS (external) --> <!-- CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" <link href="{{ basehref }}templates/Froxlor/assets/css/main.css" rel="stylesheet">
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<!-- Scripts -->
<script src="{{ basehref }}templates/Froxlor/assets/js/main.js"></script>
<title>Froxlor - Error</title> <title>Froxlor - Error</title>
</head> </head>
<body class="min-vh-100 d-flex align-items-center">
<body>
<div class="container-fluid"> <div class="container-fluid">
<div class="container my-auto"> <div class="container max-w-lg">
<div class="alert alert-danger fade show" role="alert"> <div class="card bg-danger text-white">
<h4 class="alert-heading"> <div class="card-body">
Whoops! <h4 class="card-title">
</h4> Whoops!
<p>It seems you are using an older version of PHP</p> </h4>
<p>Froxlor requires at least PHP version <FROXLOR_PHPMIN><br />The installed version is: <p>It seems you are using an older version of PHP</p>
<CURRENT_VERSION> <p>Froxlor requires at least PHP version {{ froxlor_min_version }}</p>
</p> <p>The installed version is: {{ current_version }}</p>
<hr> </div>
<p class="mt-1 text-center"> <div class="card-footer text-end">
<a href="index.php" class="btn btn-primary" title="Click to refresh">Refresh</a> <a href="" class="btn btn-primary" title="Click to refresh">Refresh</a>
</p> </div>
</div> </div>
</div> </div>
<footer class="pt-5 pb-5 text-center"> <footer class="pý-5 text-center">
<span><img src="templates/Froxlor/assets/img/logo_grey.png" alt="Froxlor" /> <span>
&copy; 2009-<CURRENT_YEAR> by <a href="http://www.froxlor.org/" rel="external">the Froxlor <img src="{{ basehref }}templates/Froxlor/assets/img/logo_grey.png" alt="Froxlor" />
Team</a><br /> &copy; 2009-{{ current_year }} by <a href="https://www.froxlor.org/" rel="external">the Froxlor Team</a>
</span> </span>
</footer> </footer>
</div> </div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js"
integrity="sha384-cVKIPhGWiC2Al4u+LWgxfKTRIcfu0JTxR+EQDz/bgldoEyl4H0zUF0QKbrJ0EcQF"
crossorigin="anonymous"></script>
</body> </body>
</html> </html>

View File

@@ -1,50 +1,43 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html lang="en">
<head> <head>
<!-- Required meta tags --> <!-- Required meta tags -->
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow, noarchive" /> <meta name="robots" content="noindex, nofollow, noarchive" />
<meta name="GOOGLEBOT" content="nosnippet" /> <meta name="googlebot" content="nosnippet" />
<!-- Bootstrap CSS (external) --> <!-- CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" <link href="{{ basehref }}templates/Froxlor/assets/css/main.css" rel="stylesheet">
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<!-- Scripts -->
<script src="{{ basehref }}templates/Froxlor/assets/js/main.js"></script>
<title>Froxlor - Error</title> <title>Froxlor - Error</title>
</head> </head>
<body class="min-vh-100 d-flex align-items-center">
<body>
<div class="container-fluid"> <div class="container-fluid">
<div class="container my-auto"> <div class="container max-w-lg">
<div class="alert alert-danger fade show" role="alert"> <div class="card bg-danger text-white">
<h4 class="alert-heading"> <div class="card-body">
Whoops! <h4 class="card-title">
</h4> Whoops!
<p>It seems you are missing some required files.</p> </h4>
<p>Froxlor uses composer for its external requirements. Try the following command to install them:</p> <p>It seems you are missing some required files.</p>
<p class="mb-0"> <p>Froxlor uses composer for its external requirements. Try the following command to install them:</p>
cd <FROXLOR_INSTALL_DIR> && composer install --no-dev</pre> <pre>cd {{ froxlor_install_dir }} && composer install --no-dev</pre>
</p> </div>
<hr> <div class="card-footer text-end">
<p class="mt-1 text-center"> <a href="" class="btn btn-primary" title="Click to refresh">Refresh</a>
<a href="index.php" class="btn btn-primary" title="Click to refresh">Refresh</a> </div>
</p>
</div> </div>
</div> </div>
<footer class="pt-5 pb-5 text-center"> <footer class="py-5 text-center">
<span><img src="templates/Froxlor/assets/img/logo_grey.png" alt="Froxlor" /> <span>
&copy; 2009-<CURRENT_YEAR> by <a href="http://www.froxlor.org/" rel="external">the Froxlor <img src="{{ basehref }}templates/Froxlor/assets/img/logo_grey.png" alt="Froxlor" />
Team</a><br /> &copy; 2009-{{ current_year }} by <a href="https://www.froxlor.org/" rel="external">the Froxlor Team</a>
</span> </span>
</footer> </footer>
</div> </div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js"
integrity="sha384-cVKIPhGWiC2Al4u+LWgxfKTRIcfu0JTxR+EQDz/bgldoEyl4H0zUF0QKbrJ0EcQF"
crossorigin="anonymous"></script>
</body> </body>
</html> </html>

View File

@@ -0,0 +1 @@
import 'bootstrap';

View File

@@ -0,0 +1,9 @@
// Colors
$primary: #2a2a2a;
// Body
$body-bg: #f8f8f8;
$body-color: $primary;
// Borders
$border-radius: 0.5rem;

View File

@@ -0,0 +1,72 @@
@charset "UTF-8";
@import "variables";
@import "~bootstrap/scss/bootstrap";
@import "~@fortawesome/fontawesome-free/css/all";
.max-w-lg {
max-width: 992px !important;
}
.card {
border: none;
@apply shadow;
.card-body {
padding: 1.5rem;
}
}
.rounded-corner-tl-bl {
border-radius: $border-radius 0 $border-radius 0;
}
footer {
color: #888;
font-size: 0.75rem !important;
}
footer a,
footer a:active,
footer a:visited {
color: #888;
}
.dark {
/* redefine theme colors for dark theme */
$primary: #3a3a3a;
$secondary: #111111;
$success: #3a3a3a;
$dark: #000;
$card-bg: #3a3a3a;
$theme-colors: (
"primary": $primary,
"secondary": $secondary,
"success": $success,
"danger": $danger,
"info": $indigo,
"dark": $dark,
"light": $light,
);
/* redefine theme color variables */
@each $color, $value in $theme-colors {
--#{$variable-prefix}#{$color}: #{$value};
}
/* redefine theme color rgb vars (used for bg- colors) */
$theme-colors-rgb: map-loop($theme-colors, to-rgb, "$value");
@each $color, $value in $theme-colors-rgb {
--#{$variable-prefix}#{$color}-rgb: #{$value};
}
$body-color: #999;
$body-bg: #222;
--#{$variable-prefix}body-color: #{$body-color};
--#{$variable-prefix}body-bg: #{$body-bg};
@import "bootstrap";
}

7
webpack.mix.js Normal file
View File

@@ -0,0 +1,7 @@
// webpack.mix.js
let mix = require('laravel-mix');
mix
.js('templates/Froxlor/src/main.js', 'templates/Froxlor/assets/js')
.sass('templates/Froxlor/src/scss/main.scss', 'templates/Froxlor/assets/css');