|
1 | 1 | <?php
|
2 | 2 |
|
| 3 | +use JohannSchopplich\VueKit\Page; |
3 | 4 | use Kirby\Cms\Url;
|
| 5 | +use Kirby\Filesystem\F; |
4 | 6 | use Kirby\Http\Response;
|
5 |
| -use JohannSchopplich\VueKit\Page; |
6 | 7 |
|
7 | 8 | $apiLocation = Url::path(env('KIRBY_CONTENT_API_SLUG', ''), false, true);
|
8 | 9 |
|
|
14 | 15 | 'pattern' => "{$apiLocation}(:all).json",
|
15 | 16 | 'language' => '*',
|
16 | 17 | 'action' => function (...$args) {
|
17 |
| - if (kirby()->multilang()) { |
| 18 | + $kirby = kirby(); |
| 19 | + |
| 20 | + if ($kirby->multilang()) { |
18 | 21 | [$languageCode, $pageId] = $args;
|
19 | 22 | } else {
|
20 | 23 | [$pageId] = $args;
|
21 | 24 | }
|
22 | 25 |
|
23 |
| - $page = kirby()->page($pageId); |
| 26 | + $page = $kirby->page($pageId); |
24 | 27 |
|
25 | 28 | if (!$page || !$page->isVerified(get('token'))) {
|
26 |
| - $page = kirby()->site()->errorPage(); |
27 |
| - }; |
| 29 | + $page = $kirby->site()->errorPage(); |
| 30 | + } |
28 | 31 |
|
29 | 32 | $json = Page::render($page, 'json');
|
30 | 33 | return Response::json($json);
|
|
38 | 41 | 'pattern' => '(:all)',
|
39 | 42 | 'language' => '*',
|
40 | 43 | 'action' => function (...$args) {
|
41 |
| - if (kirby()->multilang()) { |
42 |
| - [$languageCode, $pageId] = $args; |
| 44 | + $kirby = kirby(); |
| 45 | + |
| 46 | + if ($kirby->multilang()) { |
| 47 | + [$languageCode, $path] = $args; |
43 | 48 | } else {
|
44 |
| - [$pageId] = $args; |
| 49 | + [$path] = $args; |
| 50 | + } |
| 51 | + |
| 52 | + $extension = F::extension($path); |
| 53 | + |
| 54 | + // Try to resolve page and site files |
| 55 | + if (!empty($extension)) { |
| 56 | + $id = dirname($path); |
| 57 | + $filename = basename($path); |
| 58 | + |
| 59 | + // Try to resolve image urls for pages and drafts |
| 60 | + if ($page = $kirby->site()->findPageOrDraft($id)) { |
| 61 | + return $page->file($filename); |
| 62 | + } |
| 63 | + |
| 64 | + // Try to resolve site files at last |
| 65 | + if ($file = $kirby->site()->file($filename)) { |
| 66 | + return $file; |
| 67 | + } |
45 | 68 | }
|
46 | 69 |
|
47 | 70 | // Fall back to homepage id
|
48 |
| - if (empty($pageId)) { |
49 |
| - $pageId = site()->homePageId(); |
| 71 | + if (empty($path)) { |
| 72 | + $path = site()->homePageId(); |
50 | 73 | }
|
51 | 74 |
|
52 |
| - $page = kirby()->page($pageId); |
| 75 | + $page = $kirby->page($path); |
53 | 76 |
|
54 | 77 | if (!$page || !$page->isVerified(get('token'))) {
|
55 |
| - $page = kirby()->site()->errorPage(); |
56 |
| - }; |
| 78 | + $page = $kirby->site()->errorPage(); |
| 79 | + } |
57 | 80 |
|
58 | 81 | $html = Page::render($page, 'html');
|
59 | 82 | return $html;
|
|
0 commit comments