Upgrade to 3.6.2

This commit is contained in:
Bastian Allgeier
2022-02-01 11:42:39 +01:00
parent f62d1a39ca
commit 848ea36dcf
108 changed files with 2887 additions and 2622 deletions

View File

@@ -3,6 +3,7 @@
namespace Kirby\Panel;
use Kirby\Exception\Exception;
use Kirby\Exception\InvalidArgumentException;
use Kirby\Filesystem\Dir;
use Kirby\Filesystem\F;
use Kirby\Http\Response;
@@ -65,22 +66,9 @@ class Document
'css' => [
'index' => $url . '/css/style.css',
'plugins' => $plugins->url('css'),
'custom' => static::customCss(),
'custom' => static::customAsset('panel.css'),
],
'icons' => $kirby->option('panel.favicon', [
'apple-touch-icon' => [
'type' => 'image/png',
'url' => $url . '/apple-touch-icon.png',
],
'shortcut icon' => [
'type' => 'image/svg+xml',
'url' => $url . '/favicon.svg',
],
'alternate icon' => [
'type' => 'image/png',
'url' => $url . '/favicon.png',
]
]),
'icons' => static::favicon($url),
'js' => [
'vendor' => [
'nonce' => $nonce,
@@ -99,7 +87,7 @@ class Document
],
'custom' => [
'nonce' => $nonce,
'src' => static::customJs(),
'src' => static::customAsset('panel.js'),
'type' => 'module'
],
'index' => [
@@ -139,15 +127,17 @@ class Document
}
/**
* Check for a custom css file from the
* config (panel.css)
* Check for a custom asset file from the
* config (e.g. panel.css or panel.js)
* @since 3.6.2
*
* @param string $option asset option name
* @return string|null
*/
public static function customCss(): ?string
public static function customAsset(string $option): ?string
{
if ($css = kirby()->option('panel.css')) {
$asset = asset($css);
if ($path = kirby()->option($option)) {
$asset = asset($path);
if ($asset->exists() === true) {
return $asset->url() . '?' . $asset->modified();
@@ -158,22 +148,64 @@ class Document
}
/**
* Check for a custom js file from the
* config (panel.js)
*
* @return string|null
* @deprecated 3.7.0 Use `Document::customAsset('panel.css)` instead
* @todo add deprecation warning in 3.7.0, remove in 3.8.0
*/
public static function customCss(): ?string
{
return static::customAsset('panel.css');
}
/**
* @deprecated 3.7.0 Use `Document::customAsset('panel.js)` instead
* @todo add deprecation warning in 3.7.0, remove in 3.8.0
*/
public static function customJs(): ?string
{
if ($js = kirby()->option('panel.js')) {
$asset = asset($js);
return static::customAsset('panel.js');
}
if ($asset->exists() === true) {
return $asset->url() . '?' . $asset->modified();
}
/**
* Returns array of favion icons
* based on config option
* @since 3.6.2
*
* @param string $url URL prefix for default icons
* @return array
*/
public static function favicon(string $url = ''): array
{
$kirby = kirby();
$icons = $kirby->option('panel.favicon', [
'apple-touch-icon' => [
'type' => 'image/png',
'url' => $url . '/apple-touch-icon.png',
],
'shortcut icon' => [
'type' => 'image/svg+xml',
'url' => $url . '/favicon.svg',
],
'alternate icon' => [
'type' => 'image/png',
'url' => $url . '/favicon.png',
]
]);
if (is_array($icons) === true) {
return $icons;
}
return null;
// make sure to convert favicon string to array
if (is_string($icons) === true) {
return [
'shortcut icon' => [
'type' => F::mime($icons),
'url' => $icons,
]
];
}
throw new InvalidArgumentException('Invalid panel.favicon option');
}
/**