[FEATURE] Add backend for loading translations via ajax

This commit is contained in:
2024-02-09 11:04:01 +01:00
parent e126e674c7
commit ddbb0c35b0
22 changed files with 625 additions and 69 deletions

View File

@@ -0,0 +1,28 @@
<T3DataStructure>
<sheets>
<sDEF>
<ROOT>
<TCEforms>
<sheetTitle>Function</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<switchableControllerActions>
<TCEforms>
<label>Select function</label>
<config>
<type>select</type>
<items>
<numIndex index="0">
<numIndex index="0">Translation</numIndex>
<numIndex index="1">Translation-&gt;translations</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</switchableControllerActions>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>

View File

@@ -23,7 +23,7 @@ return [
'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, ',
],
'types' => [
'1' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, , --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime'],
'1' => ['showitem' => ', --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language, sys_language_uid, l10n_parent, l10n_diffsource, --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access, hidden, starttime, endtime'],
],
'columns' => [
'sys_language_uid' => [

View File

@@ -0,0 +1,120 @@
<?php
return [
'ctrl' => [
'title' => 'LLL:EXT:templates_aide/Resources/Private/Language/locallang_db.xlf:tx_templatesaide_domain_model_translation',
'label' => 'uid',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'versioningWS' => true,
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'transOrigDiffSourceField' => 'l10n_diffsource',
'delete' => 'deleted',
'enablecolumns' => [
'disabled' => 'hidden',
'starttime' => 'starttime',
'endtime' => 'endtime',
],
'searchFields' => '',
'iconfile' => 'EXT:templates_aide/Resources/Public/Icons/tx_templatesaide_domain_model_translation.gif'
],
'interface' => [
'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, ',
],
'types' => [
'1' => ['showitem' => ', --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language, sys_language_uid, l10n_parent, l10n_diffsource, --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access, hidden, starttime, endtime'],
],
'columns' => [
'sys_language_uid' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'special' => 'languages',
'items' => [
[
'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages',
-1,
'flags-multiple'
]
],
'default' => 0,
],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.l18n_parent',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'default' => 0,
'items' => [
['', 0],
],
'foreign_table' => 'tx_templatesaide_domain_model_translation',
'foreign_table_where' => 'AND {#tx_templatesaide_domain_model_translation}.{#pid}=###CURRENT_PID### AND {#tx_templatesaide_domain_model_translation}.{#sys_language_uid} IN (-1,0)',
],
],
'l10n_diffsource' => [
'config' => [
'type' => 'passthrough',
],
],
't3ver_label' => [
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.versionLabel',
'config' => [
'type' => 'input',
'size' => 30,
'max' => 255,
],
],
'hidden' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.visible',
'config' => [
'type' => 'check',
'renderType' => 'checkboxToggle',
'items' => [
[
0 => '',
1 => '',
'invertStateDisplay' => true
]
],
],
],
'starttime' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'renderType' => 'inputDateTime',
'eval' => 'datetime,int',
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true
]
],
],
'endtime' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'renderType' => 'inputDateTime',
'eval' => 'datetime,int',
'default' => 0,
'range' => [
'upper' => mktime(0, 0, 0, 1, 1, 2038)
],
'behaviour' => [
'allowLanguageSynchronization' => true
]
],
],
],
];

View File

@@ -14,6 +14,21 @@ plugin.tx_templatesaide_dummy {
}
}
plugin.tx_templatesaide_translationplugin {
view {
# cat=plugin.tx_templatesaide_translationplugin/file; type=string; label=Path to template root (FE)
templateRootPath = EXT:templates_aide/Resources/Private/Templates/
# cat=plugin.tx_templatesaide_translationplugin/file; type=string; label=Path to template partials (FE)
partialRootPath = EXT:templates_aide/Resources/Private/Partials/
# cat=plugin.tx_templatesaide_translationplugin/file; type=string; label=Path to template layouts (FE)
layoutRootPath = EXT:templates_aide/Resources/Private/Layouts/
}
persistence {
# cat=plugin.tx_templatesaide_translationplugin//a; type=string; label=Default storage PID
storagePid =
}
}
## EXTENSION BUILDER DEFAULTS END TOKEN - Everything BEFORE this line is overwritten with the defaults of the extension builder
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:templates_aide/Resources/Private/TypoScript/constants.ts">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:templates_aide/Resources/Private/TypoScript/constants.ts">

View File

@@ -1,11 +1,11 @@
plugin.tx_templatesaide_dummy {
view {
templateRootPaths.0 = EXT:{extension.shortExtensionKey}/Resources/Private/Templates/
templateRootPaths.0 = EXT:templates_aide/Resources/Private/Templates/
templateRootPaths.1 = {$plugin.tx_templatesaide_dummy.view.templateRootPath}
partialRootPaths.0 = EXT:templates_aide/Resources/Private/Partials/
partialRootPaths.1 = {$plugin.tx_templatesaide_dummy.view.partialRootPath}
layoutRootPaths.0 = EXT:tx_templatesaide/Resources/Private/Layouts/
layoutRootPaths.0 = EXT:templates_aide/Resources/Private/Layouts/
layoutRootPaths.1 = {$plugin.tx_templatesaide_dummy.view.layoutRootPath}
}
persistence {
@@ -24,6 +24,31 @@ plugin.tx_templatesaide_dummy {
}
}
plugin.tx_templatesaide_translationplugin {
view {
templateRootPaths.0 = EXT:templates_aide/Resources/Private/Templates/
templateRootPaths.1 = {$plugin.tx_templatesaide_translationplugin.view.templateRootPath}
partialRootPaths.0 = EXT:templates_aide/Resources/Private/Partials/
partialRootPaths.1 = {$plugin.tx_templatesaide_translationplugin.view.partialRootPath}
layoutRootPaths.0 = EXT:templates_aide/Resources/Private/Layouts/
layoutRootPaths.1 = {$plugin.tx_templatesaide_translationplugin.view.layoutRootPath}
}
persistence {
storagePid = {$plugin.tx_templatesaide_translationplugin.persistence.storagePid}
#recursive = 1
}
features {
#skipDefaultArguments = 1
# if set to 1, the enable fields are ignored in BE context
ignoreAllEnableFieldsInBe = 0
# Should be on by default, but can be disabled if all action in the plugin are uncached
requireCHashArgumentForActionArguments = 1
}
mvc {
#callDefaultActionIfActionCantBeResolved = 1
}
}
# these classes are only used in auto-generated templates
plugin.tx_templatesaide._CSS_DEFAULT_STYLE (
textarea.f3-form-error {