Upgrade to rc5

This commit is contained in:
Bastian Allgeier
2020-12-10 11:24:42 +01:00
parent 3fec0d7c93
commit c378376bc9
257 changed files with 13009 additions and 1846 deletions

View File

@@ -1,9 +1,11 @@
<?php
use Kirby\Cms\App;
use Kirby\Cms\Blocks;
use Kirby\Cms\Field;
use Kirby\Cms\Files;
use Kirby\Cms\Html;
use Kirby\Cms\Layouts;
use Kirby\Cms\Structure;
use Kirby\Cms\Url;
use Kirby\Data\Data;
@@ -53,6 +55,41 @@ return function (App $app) {
},
// converters
/**
* Converts a yaml or json field to a Blocks object
*
* @param \Kirby\Cms\Field $field
* @return \Kirby\Cms\Blocks
*/
'toBlocks' => function (Field $field) {
try {
$blocks = Blocks::factory(Blocks::parse($field->value()), [
'parent' => $field->parent(),
]);
return $blocks->filter('isHidden', false);
} catch (Throwable $e) {
if ($field->parent() === null) {
$message = 'Invalid blocks data for "' . $field->key() . '" field';
} else {
$message = 'Invalid blocks data for "' . $field->key() . '" field on parent "' . $field->parent()->title() . '"';
}
throw new InvalidArgumentException($message);
}
},
/**
* Converts the field value into a proper boolean
*
* @param \Kirby\Cms\Field $field
* @param bool $default Default value if the field is empty
* @return bool
*/
'toBool' => function (Field $field, $default = false): bool {
$value = $field->isEmpty() ? $default : $field->value;
return filter_var($value, FILTER_VALIDATE_BOOLEAN);
},
/**
* Parses the field value with the given method
@@ -71,18 +108,6 @@ return function (App $app) {
}
},
/**
* Converts the field value into a proper boolean
*
* @param \Kirby\Cms\Field $field
* @param bool $default Default value if the field is empty
* @return bool
*/
'toBool' => function (Field $field, $default = false): bool {
$value = $field->isEmpty() ? $default : $field->value;
return filter_var($value, FILTER_VALIDATE_BOOLEAN);
},
/**
* Converts the field value to a timestamp or a formatted date
*
@@ -159,6 +184,19 @@ return function (App $app) {
return (int)$value;
},
/**
* Parse layouts and turn them into
* Layout objects
*
* @param \Kirby\Cms\Field $field
* @return \Kirby\Cms\Layouts
*/
'toLayouts' => function (Field $field) {
return Layouts::factory(Data::decode($field->value, 'json'), [
'parent' => $field->parent()
]);
},
/**
* Wraps a link tag around the field value. The field value is used as the link text
*