|
3 | 3 | use Kirby\Cms\Block; |
4 | 4 | use Kirby\Cms\File; |
5 | 5 | use Kirby\Cms\Layout; |
| 6 | +use Kirby\Cms\LayoutColumn; |
6 | 7 | use Kirby\Cms\Page; |
7 | 8 | use Kirby\Content\Field; |
8 | 9 | use Kirby\Exception\InvalidArgumentException; |
|
185 | 186 | }, |
186 | 187 |
|
187 | 188 | /** |
188 | | - * Enhances the `toBlocks()` method to resolve files and pages |
| 189 | + * Enhances the `toBlocks()` method to resolve files, pages, and other fields |
189 | 190 | * |
190 | 191 | * @kql-allowed |
191 | 192 | */ |
192 | 193 | 'toResolvedBlocks' => function (Field $field) use ($pagesFieldResolver, $filesFieldResolver, $customFieldResolver) { |
193 | | - return $field |
194 | | - ->toBlocks() |
| 194 | + /** @var \Kirby\Cms\Blocks */ |
| 195 | + $blocks = $field->toBlocks(); |
| 196 | + return $blocks |
195 | 197 | ->map($pagesFieldResolver) |
196 | 198 | ->map($filesFieldResolver) |
197 | 199 | ->map($customFieldResolver); |
198 | 200 | }, |
199 | 201 |
|
200 | 202 | /** |
201 | | - * Enhances the `toLayouts()` method to resolve files and pages |
| 203 | + * Enhances the `toLayouts()` method to resolve files, pages, and other fields |
202 | 204 | * |
203 | 205 | * @kql-allowed |
204 | 206 | */ |
205 | 207 | 'toResolvedLayouts' => function (Field $field) use ($filesFieldResolver, $pagesFieldResolver, $customFieldResolver) { |
206 | | - return $field |
207 | | - ->toLayouts() |
| 208 | + /** @var \Kirby\Cms\Layouts */ |
| 209 | + $layouts = $field->toLayouts(); |
| 210 | + return $layouts |
208 | 211 | ->map(function (Layout $layout) use ($filesFieldResolver, $pagesFieldResolver, $customFieldResolver) { |
209 | | - foreach ($layout->columns() as $column) { |
210 | | - $column |
211 | | - ->blocks() |
212 | | - ->map($filesFieldResolver) |
213 | | - ->map($pagesFieldResolver) |
214 | | - ->map($customFieldResolver); |
215 | | - } |
216 | | - |
217 | | - return $layout; |
| 212 | + $columns = $layout |
| 213 | + ->columns() |
| 214 | + ->map(function (LayoutColumn $column) use ($filesFieldResolver, $pagesFieldResolver, $customFieldResolver) { |
| 215 | + $blocks = $column |
| 216 | + ->blocks() |
| 217 | + ->map($filesFieldResolver) |
| 218 | + ->map($pagesFieldResolver) |
| 219 | + ->map($customFieldResolver); |
| 220 | + |
| 221 | + return [ |
| 222 | + 'id' => $column->id(), |
| 223 | + 'blocks' => $blocks->toArray(), |
| 224 | + 'width' => $column->width() |
| 225 | + ]; |
| 226 | + }); |
| 227 | + |
| 228 | + return new Layout([ |
| 229 | + 'id' => $layout->id(), |
| 230 | + 'field' => $layout->field(), |
| 231 | + 'parent' => $layout->parent(), |
| 232 | + 'siblings' => $layout->siblings(), |
| 233 | + 'columns' => $columns->values(), |
| 234 | + 'attrs' => $layout->attrs()->toArray() |
| 235 | + ]); |
218 | 236 | }); |
219 | 237 | } |
220 | 238 | ]; |
0 commit comments