Skip to content

Commit 160df4d

Browse files
committed
[FEATURE] Add links for backend editor on the frontend
This patch prepares backend for nuxt-typo3 implementation.
1 parent eaf2010 commit 160df4d

File tree

6 files changed

+74
-1
lines changed

6 files changed

+74
-1
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the "headless" Extension for TYPO3 CMS.
5+
*
6+
* For the full copyright and license information, please read the
7+
* LICENSE.md file that was distributed with this source code.
8+
*/
9+
10+
declare(strict_types=1);
11+
12+
namespace FriendsOfTYPO3\Headless\Frontend;
13+
14+
use TYPO3\CMS\Backend\Routing\UriBuilder;
15+
16+
readonly class BackendEditorUrl
17+
{
18+
public function __construct(protected UriBuilder $uriBuilder) {}
19+
20+
public function page(): string
21+
{
22+
return $this->generateUrl('pages');
23+
}
24+
25+
public function record(): string
26+
{
27+
return $this->generateUrl();
28+
}
29+
30+
private function generateUrl(string $table = 'tt_content'): string
31+
{
32+
$beUser = $GLOBALS['BE_USER'] ?? null;
33+
34+
if ($beUser === null) {
35+
return '';
36+
}
37+
38+
$params = [
39+
'edit' => [
40+
$table => [
41+
'__id__' => 'edit',
42+
],
43+
],
44+
];
45+
46+
return (string)$this->uriBuilder->buildUriFromRoute('record_edit', $params, UriBuilder::ABSOLUTE_URL);
47+
}
48+
}

Configuration/Services.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
use FriendsOfTYPO3\Headless\Event\Listener\HeadlessHreflangGeneratorListener;
2727
use FriendsOfTYPO3\Headless\Event\Listener\LoginConfirmedEventListener;
2828
use FriendsOfTYPO3\Headless\Form\Service\FormTranslationService;
29+
use FriendsOfTYPO3\Headless\Frontend\BackendEditorUrl;
2930
use FriendsOfTYPO3\Headless\Utility\FileUtility;
3031
use FriendsOfTYPO3\Headless\Utility\HeadlessFrontendUrlInterface;
3132
use FriendsOfTYPO3\Headless\Utility\UrlUtility;
@@ -74,6 +75,7 @@
7475
$toLoad->set(IntegerContentObject::class)->tag('frontend.contentobject', ['identifier' => 'INT']);
7576
$toLoad->set(FloatContentObject::class)->tag('frontend.contentobject', ['identifier' => 'FLOAT']);
7677

78+
$services->set(BackendEditorUrl::class)->public();
7779
$services->set(FileUtility::class)->public();
7880
$services->set(HeadlessFrontendUrlInterface::class, UrlUtility::class)->autowire(false);
7981
$services->set(AfterLinkIsGeneratedListener::class)->tag(
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
lib.backendEditor = JSON
2+
lib.backendEditor {
3+
fields {
4+
record = USER_INT
5+
record {
6+
userFunc = FriendsOfTYPO3\Headless\Frontend\BackendEditorUrl->record
7+
}
8+
9+
page = USER_INT
10+
page {
11+
userFunc = FriendsOfTYPO3\Headless\Frontend\BackendEditorUrl->page
12+
}
13+
}
14+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[backend.user.isLoggedIn]
2+
initialData.10.fields.backendEditor < lib.backendEditor
3+
[END]

Configuration/TypoScript/Mixed/setup.typoscript

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ plugin.tx_headless {
77
[request && traverse(request.getHeaders(), 'accept')[0] == 'application/json']
88
## Include page
99
@import "EXT:headless/Configuration/TypoScript/Page/*.typoscript"
10+
## Include helpers
11+
@import "EXT:headless/Configuration/TypoScript/Helpers/*.typoscript"
1012
## Include content elements
1113
@import "EXT:headless/Configuration/TypoScript/ContentElement/*.typoscript"
1214
## Include configuration
@@ -19,3 +21,7 @@ plugin.tx_headless {
1921
logged.value = 1
2022
}
2123
[END]
24+
25+
[request && traverse(request.getHeaders(), 'accept')[0] == 'application/json' && backend.user.isLoggedIn]
26+
initialData.10.fields.backendEditor < lib.backendEditor
27+
[END]

Configuration/TypoScript/setup.typoscript

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ plugin.tx_headless {
1212
@import "EXT:headless/Configuration/TypoScript/ContentElement/*.typoscript"
1313
## Include configuration
1414
@import "EXT:headless/Configuration/TypoScript/Configuration/*.typoscript"
15-
@import "EXT:headless/Configuration/TypoScript/LoggedUser/FeLogin.typoscript"
15+
@import "EXT:headless/Configuration/TypoScript/LoggedUser/*.typoscript"

0 commit comments

Comments
 (0)