diff --git a/.gitignore b/.gitignore index 779e19d13e656b7de76b5744e5b5a15f0abdf0b9..629c2242031356f7de485a8625dcab3325c9b4ab 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ .idea .vscode /vendor/ +/Documentation/ +/Tests/ +Documentation.tmpl + diff --git a/Classes/Domain/Model/Menu.php b/Classes/Domain/Model/Menu.php new file mode 100644 index 0000000000000000000000000000000000000000..fd82a0d4a534d2f199ca96294128fd44d4e37544 --- /dev/null +++ b/Classes/Domain/Model/Menu.php @@ -0,0 +1,151 @@ +<?php +namespace NL\NlMenubuilder\Domain\Model; + + +/*** + * + * This file is part of the "Menu Builder" Extension for TYPO3 CMS. + * + * For the full copyright and license information, please read the + * LICENSE.txt file that was distributed with this source code. + * + * (c) 2021 + * + ***/ +/** + * Menu + */ +class Menu extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity +{ + + /** + * Name of the menu + * + * @var string + * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty") + */ + protected $title = ''; + + /** + * menuItem + * + * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\NL\NlMenubuilder\Domain\Model\MenuItem> + * @TYPO3\CMS\Extbase\Annotation\ORM\Cascade("remove") + */ + protected $menuItem = null; + + /** + * menuGroup + * + * @var \NL\NlMenubuilder\Domain\Model\MenuGroup + */ + protected $menuGroup = null; + + /** + * Returns the title + * + * @return string $title + */ + public function getTitle() + { + return $this->title; + } + + /** + * Sets the title + * + * @param string $title + * @return void + */ + public function setTitle($title) + { + $this->title = $title; + } + + /** + * __construct + */ + public function __construct() + { + + //Do not remove the next line: It would break the functionality + $this->initStorageObjects(); + } + + /** + * Initializes all ObjectStorage properties + * Do not modify this method! + * It will be rewritten on each save in the extension builder + * You may modify the constructor of this class instead + * + * @return void + */ + protected function initStorageObjects() + { + $this->menuItem = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); + } + + /** + * Adds a MenuItem + * + * @param \NL\NlMenubuilder\Domain\Model\MenuItem $menuItem + * @return void + */ + public function addMenuItem(\NL\NlMenubuilder\Domain\Model\MenuItem $menuItem) + { + $this->menuItem->attach($menuItem); + } + + /** + * Removes a MenuItem + * + * @param \NL\NlMenubuilder\Domain\Model\MenuItem $menuItemToRemove The MenuItem to be removed + * @return void + */ + public function removeMenuItem(\NL\NlMenubuilder\Domain\Model\MenuItem $menuItemToRemove) + { + $this->menuItem->detach($menuItemToRemove); + } + + /** + * Returns the menuItem + * + * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\NL\NlMenubuilder\Domain\Model\MenuItem> $menuItem + */ + public function getMenuItem() + { + return $this->menuItem; + } + + /** + * Sets the menuItem + * + * @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\NL\NlMenubuilder\Domain\Model\MenuItem> $menuItem + * @return void + */ + public function setMenuItem(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $menuItem) + { + $this->menuItem = $menuItem; + } + + /** + * Returns the menuGroup + * + * @return \NL\NlMenubuilder\Domain\Model\MenuGroup $menuGroup + */ + public function getMenuGroup() + { + return $this->menuGroup; + } + + /** + * Sets the menuGroup + * + * @param \NL\NlMenubuilder\Domain\Model\MenuGroup $menuGroup + * @return void + */ + public function setMenuGroup(\NL\NlMenubuilder\Domain\Model\MenuGroup $menuGroup) + { + $this->menuGroup = $menuGroup; + } +} diff --git a/Classes/Domain/Model/MenuGroup.php b/Classes/Domain/Model/MenuGroup.php new file mode 100644 index 0000000000000000000000000000000000000000..e2cdd9f9d5166909fc0014d6a6441cd7c9884530 --- /dev/null +++ b/Classes/Domain/Model/MenuGroup.php @@ -0,0 +1,71 @@ +<?php +namespace NL\NlMenubuilder\Domain\Model; + + +/*** + * + * This file is part of the "Menu Builder" Extension for TYPO3 CMS. + * + * For the full copyright and license information, please read the + * LICENSE.txt file that was distributed with this source code. + * + * (c) 2021 + * + ***/ +/** + * MenuGroup + */ +class MenuGroup extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity +{ + + /** + * Name of the menu group + * + * @var string + * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty") + */ + protected $title = ''; + + /** + * __construct + */ + public function __construct() + { + + //Do not remove the next line: It would break the functionality + $this->initStorageObjects(); + } + + /** + * Initializes all ObjectStorage properties + * Do not modify this method! + * It will be rewritten on each save in the extension builder + * You may modify the constructor of this class instead + * + * @return void + */ + protected function initStorageObjects() + { + } + + /** + * Returns the title + * + * @return string title + */ + public function getTitle() + { + return $this->title; + } + + /** + * Sets the title + * + * @param string $title + * @return void + */ + public function setTitle($title) + { + $this->title = $title; + } +} diff --git a/Classes/Domain/Model/MenuItem.php b/Classes/Domain/Model/MenuItem.php new file mode 100644 index 0000000000000000000000000000000000000000..a30f6671a43f42d4c7e8e5823e11bbeb3dc45842 --- /dev/null +++ b/Classes/Domain/Model/MenuItem.php @@ -0,0 +1,79 @@ +<?php +namespace NL\NlMenubuilder\Domain\Model; + +use ReflectionClass; + +/*** + * + * This file is part of the "Menu Builder" Extension for TYPO3 CMS. + * + * For the full copyright and license information, please read the + * LICENSE.txt file that was distributed with this source code. + * + * (c) 2021 + * + ***/ +/** + * MenuItem + */ +class MenuItem extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity +{ + + /** + * Name of the menu item + * + * @var string + * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty") + */ + protected $title = ''; + + /** + * type + * + * @var int + * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty") + */ + protected $type = 0; + + /** + * Returns the title + * + * @return string $title + */ + public function getTitle() + { + return $this->title; + } + + /** + * Sets the title + * + * @param string $title + * @return void + */ + public function setTitle($title) + { + $this->title = $title; + } + + /** + * Returns the type + * + * @return int $type + */ + public function getType() + { + return $this->type; + } + + /** + * Sets the type + * + * @param int $type + * @return void + */ + public function setType($type) + { + $this->type = $type; + } +} diff --git a/Classes/Domain/Model/MenuItemContent.php b/Classes/Domain/Model/MenuItemContent.php new file mode 100644 index 0000000000000000000000000000000000000000..a460f0c35348d38c499dada839c487b5c5ec2bd6 --- /dev/null +++ b/Classes/Domain/Model/MenuItemContent.php @@ -0,0 +1,56 @@ +<?php +namespace NL\NlMenubuilder\Domain\Model; + + +/*** + * + * This file is part of the "Menu Builder" Extension for TYPO3 CMS. + * + * For the full copyright and license information, please read the + * LICENSE.txt file that was distributed with this source code. + * + * (c) 2021 + * + ***/ +/** + * Content + */ +class MenuItemContent extends MenuItem +{ + /** + * type + * + * @var int + * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty") + */ + protected $type = 0; + + /** + * content + * + * @var string + * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty") + */ + protected $content = ''; + + /** + * Returns the content + * + * @return string $content + */ + public function getContent() + { + return $this->content; + } + + /** + * Sets the content + * + * @param string $content + * @return void + */ + public function setContent($content) + { + $this->content = $content; + } +} diff --git a/Classes/Domain/Model/MenuItemLink.php b/Classes/Domain/Model/MenuItemLink.php new file mode 100644 index 0000000000000000000000000000000000000000..bb6639ada9a03e93dc818ffb426cc104f7ac9f50 --- /dev/null +++ b/Classes/Domain/Model/MenuItemLink.php @@ -0,0 +1,113 @@ +<?php +namespace NL\NlMenubuilder\Domain\Model; + + +/*** + * + * This file is part of the "Menu Builder" Extension for TYPO3 CMS. + * + * For the full copyright and license information, please read the + * LICENSE.txt file that was distributed with this source code. + * + * (c) 2021 + * + ***/ +/** + * Link + */ +class MenuItemLink extends MenuItem +{ + /** + * type + * + * @var int + * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty") + */ + protected $type = 2; + + /** + * subtitle + * + * @var string + */ + protected $subtitle = ''; + + /** + * image + * + * @var \TYPO3\CMS\Extbase\Domain\Model\FileReference + * @TYPO3\CMS\Extbase\Annotation\ORM\Cascade("remove") + */ + protected $image = null; + + /** + * link + * + * @var string + * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty") + */ + protected $link = ''; + + /** + * Returns the subtitle + * + * @return string $subtitle + */ + public function getSubtitle() + { + return $this->subtitle; + } + + /** + * Sets the subtitle + * + * @param string $subtitle + * @return void + */ + public function setSubtitle($subtitle) + { + $this->subtitle = $subtitle; + } + + /** + * Returns the image + * + * @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $image + */ + public function getImage() + { + return $this->image; + } + + /** + * Sets the image + * + * @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $image + * @return void + */ + public function setImage(\TYPO3\CMS\Extbase\Domain\Model\FileReference $image) + { + $this->image = $image; + } + + /** + * Returns the link + * + * @return string $link + */ + public function getLink() + { + return $this->link; + } + + /** + * Sets the link + * + * @param string $link + * @return void + */ + public function setLink($link) + { + $this->link = $link; + } +} diff --git a/Classes/Domain/Model/MenuItemPage.php b/Classes/Domain/Model/MenuItemPage.php new file mode 100644 index 0000000000000000000000000000000000000000..ca5aa8b8aa63e094c4d7077eac8eb7df8dd44923 --- /dev/null +++ b/Classes/Domain/Model/MenuItemPage.php @@ -0,0 +1,113 @@ +<?php + +namespace NL\NlMenubuilder\Domain\Model; + +/*** + * + * This file is part of the "Menu Builder" Extension for TYPO3 CMS. + * + * For the full copyright and license information, please read the + * LICENSE.txt file that was distributed with this source code. + * + * (c) 2021 + * + ***/ +/** + * Page + */ +class MenuItemPage extends MenuItem +{ + /** + * type + * + * @var int + * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty") + */ + protected $type = 1; + + /** + * subtitle + * + * @var string + */ + protected $subtitle = ''; + + /** + * image + * + * @var \TYPO3\CMS\Extbase\Domain\Model\FileReference + * @TYPO3\CMS\Extbase\Annotation\ORM\Cascade("remove") + */ + protected $image = null; + + /** + * page + * + * @var string + * @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty") + */ + protected $page = ''; + + /** + * Returns the subtitle + * + * @return string $subtitle + */ + public function getSubtitle() + { + return $this->subtitle; + } + + /** + * Sets the subtitle + * + * @param string $subtitle + * @return void + */ + public function setSubtitle($subtitle) + { + $this->subtitle = $subtitle; + } + + /** + * Returns the image + * + * @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $image + */ + public function getImage() + { + return $this->image; + } + + /** + * Sets the image + * + * @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $image + * @return void + */ + public function setImage(\TYPO3\CMS\Extbase\Domain\Model\FileReference $image) + { + $this->image = $image; + } + + /** + * Returns the page + * + * @return string $page + */ + public function getPage() + { + return $this->page; + } + + /** + * Sets the page + * + * @param string $page + * @return void + */ + public function setPage($page) + { + $this->page = $page; + } +} diff --git a/Classes/Domain/Repository/MenuGroupRepository.php b/Classes/Domain/Repository/MenuGroupRepository.php new file mode 100644 index 0000000000000000000000000000000000000000..b399d90ab70953570d7fc85ef50557368b04053e --- /dev/null +++ b/Classes/Domain/Repository/MenuGroupRepository.php @@ -0,0 +1,20 @@ +<?php +namespace NL\NlMenubuilder\Domain\Repository; + + +/*** + * + * This file is part of the "Menu Builder" Extension for TYPO3 CMS. + * + * For the full copyright and license information, please read the + * LICENSE.txt file that was distributed with this source code. + * + * (c) 2021 + * + ***/ +/** + * The repository for MenuGroups + */ +class MenuGroupRepository extends \TYPO3\CMS\Extbase\Persistence\Repository +{ +} diff --git a/Classes/Domain/Repository/MenuItemRepository.php b/Classes/Domain/Repository/MenuItemRepository.php new file mode 100644 index 0000000000000000000000000000000000000000..81f00f409db6f04e9a677130ae96fb98e4cecc69 --- /dev/null +++ b/Classes/Domain/Repository/MenuItemRepository.php @@ -0,0 +1,20 @@ +<?php +namespace NL\NlMenubuilder\Domain\Repository; + + +/*** + * + * This file is part of the "Menu Builder" Extension for TYPO3 CMS. + * + * For the full copyright and license information, please read the + * LICENSE.txt file that was distributed with this source code. + * + * (c) 2021 + * + ***/ +/** + * The repository for MenuItems + */ +class MenuItemRepository extends \TYPO3\CMS\Extbase\Persistence\Repository +{ +} diff --git a/Classes/Domain/Repository/MenuRepository.php b/Classes/Domain/Repository/MenuRepository.php new file mode 100644 index 0000000000000000000000000000000000000000..12eb34c82094cb51e4170b1828a4596df93dc642 --- /dev/null +++ b/Classes/Domain/Repository/MenuRepository.php @@ -0,0 +1,20 @@ +<?php +namespace NL\NlMenubuilder\Domain\Repository; + + +/*** + * + * This file is part of the "Menu Builder" Extension for TYPO3 CMS. + * + * For the full copyright and license information, please read the + * LICENSE.txt file that was distributed with this source code. + * + * (c) 2021 + * + ***/ +/** + * The repository for Menus + */ +class MenuRepository extends \TYPO3\CMS\Extbase\Persistence\Repository +{ +} diff --git a/Configuration/Extbase/Persistence/Classes.php b/Configuration/Extbase/Persistence/Classes.php new file mode 100644 index 0000000000000000000000000000000000000000..85d062938a60e88774f18e435e3966968fca8d1a --- /dev/null +++ b/Configuration/Extbase/Persistence/Classes.php @@ -0,0 +1,25 @@ +<?php + +declare(strict_types = 1); + +return [ + \NL\NlMenubuilder\Domain\Model\MenuItem::class => [ + 'subclasses' => [ + \NL\NlMenubuilder\Domain\Model\MenuItemContent::class, + \NL\NlMenubuilder\Domain\Model\MenuItemPage::class, + \NL\NlMenubuilder\Domain\Model\MenuItemLink::class, + ] + ], + \NL\NlMenubuilder\Domain\Model\MenuItemContent::class => [ + 'tableName' => 'tx_nlmenubuilder_domain_model_content', + 'recordType' => 0, + ], + \NL\NlMenubuilder\Domain\Model\MenuItemPage::class => [ + 'tableName' => 'tx_nlmenubuilder_domain_model_page', + 'recordType' => 1, + ], + \NL\NlMenubuilder\Domain\Model\MenuItemLink::class => [ + 'tableName' => 'tx_nlmenubuilder_domain_model_link', + 'recordType' => 2, + ], +]; diff --git a/Configuration/ExtensionBuilder/settings.yaml b/Configuration/ExtensionBuilder/settings.yaml index dfc0588115ed87c6c9a5c9f6f49aab2ef905e61d..21967554aa995e85d67f6fe9d68a4b2d3350c2f4 100644 --- a/Configuration/ExtensionBuilder/settings.yaml +++ b/Configuration/ExtensionBuilder/settings.yaml @@ -51,13 +51,18 @@ overwriteSettings: #TypoScript: keep Resources: + Public: + Icons: + Extension.svg: keep + tx_nlmenubuilder_domain_model_menu.gif: keep + tx_nlmenubuilder_domain_model_menugroup.gif: keep Private: #Language: merge #Templates: keep user_extension.svg: keep -# ext_localconf.php: merge + ext_localconf.php: merge # ext_tables.php: merge @@ -98,4 +103,4 @@ classBuilder: Repository: parentClass: \TYPO3\CMS\Extbase\Persistence\Repository - setDefaultValuesForClassProperties: true \ No newline at end of file + setDefaultValuesForClassProperties: true diff --git a/Configuration/TCA/tx_nlmenubuilder_domain_model_content.php b/Configuration/TCA/tx_nlmenubuilder_domain_model_content.php new file mode 100644 index 0000000000000000000000000000000000000000..170692891ede855906e796b29491f14f17f7c663 --- /dev/null +++ b/Configuration/TCA/tx_nlmenubuilder_domain_model_content.php @@ -0,0 +1,148 @@ +<?php +return [ + 'ctrl' => [ + 'title' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_content', + 'label' => 'title', + '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' => 'title,content', + 'iconfile' => 'EXT:nl_menubuilder/Resources/Public/Icons/tx_nlmenubuilder_domain_model_content.gif' + ], + 'interface' => [ + 'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, content', + ], + 'types' => [ + '1' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, content, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, 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_nlmenubuilder_domain_model_content', + 'foreign_table_where' => 'AND {#tx_nlmenubuilder_domain_model_content}.{#pid}=###CURRENT_PID### AND {#tx_nlmenubuilder_domain_model_content}.{#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 + ] + ], + ], + + 'title' => [ + 'exclude' => true, + 'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_content.title', + 'config' => [ + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim,required' + ], + ], + 'content' => [ + 'exclude' => true, + 'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_content.content', + 'config' => [ + 'type' => 'text', + 'enableRichtext' => true, + 'richtextConfiguration' => 'default', + 'fieldControl' => [ + 'fullScreenRichtext' => [ + 'disabled' => false, + ], + ], + 'cols' => 40, + 'rows' => 15, + 'eval' => 'trim,required', + ], + + ], + + ], +]; diff --git a/Configuration/TCA/tx_nlmenubuilder_domain_model_link.php b/Configuration/TCA/tx_nlmenubuilder_domain_model_link.php new file mode 100644 index 0000000000000000000000000000000000000000..7010c67502ac8ae4859413adff3c119810359d2b --- /dev/null +++ b/Configuration/TCA/tx_nlmenubuilder_domain_model_link.php @@ -0,0 +1,200 @@ +<?php +return [ + 'ctrl' => [ + 'title' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_link', + 'label' => 'title', + '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' => 'title,subtitle,link', + 'iconfile' => 'EXT:nl_menubuilder/Resources/Public/Icons/tx_nlmenubuilder_domain_model_link.gif' + ], + 'interface' => [ + 'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, subtitle, image, link', + ], + 'types' => [ + '1' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, subtitle, image, link, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, 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_nlmenubuilder_domain_model_link', + 'foreign_table_where' => 'AND {#tx_nlmenubuilder_domain_model_link}.{#pid}=###CURRENT_PID### AND {#tx_nlmenubuilder_domain_model_link}.{#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 + ] + ], + ], + + 'title' => [ + 'exclude' => true, + 'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_link.title', + 'config' => [ + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim,required' + ], + ], + 'subtitle' => [ + 'exclude' => true, + 'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_link.subtitle', + 'config' => [ + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim' + ], + ], + 'image' => [ + 'exclude' => true, + 'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_link.image', + 'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( + 'image', + [ + 'appearance' => [ + 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' + ], + 'foreign_types' => [ + '0' => [ + 'showitem' => ' + --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, + --palette--;;filePalette' + ], + \TYPO3\CMS\Core\Resource\File::FILETYPE_TEXT => [ + 'showitem' => ' + --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, + --palette--;;filePalette' + ], + \TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ + 'showitem' => ' + --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, + --palette--;;filePalette' + ], + \TYPO3\CMS\Core\Resource\File::FILETYPE_AUDIO => [ + 'showitem' => ' + --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, + --palette--;;filePalette' + ], + \TYPO3\CMS\Core\Resource\File::FILETYPE_VIDEO => [ + 'showitem' => ' + --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, + --palette--;;filePalette' + ], + \TYPO3\CMS\Core\Resource\File::FILETYPE_APPLICATION => [ + 'showitem' => ' + --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, + --palette--;;filePalette' + ] + ], + 'foreign_match_fields' => [ + 'fieldname' => 'image', + 'tablenames' => 'tx_nlmenubuilder_domain_model_link', + 'table_local' => 'sys_file', + ], + 'maxitems' => 1 + ], + $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] + ), + + ], + 'link' => [ + 'exclude' => true, + 'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_link.link', + 'config' => [ + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim,required' + ], + ], + + ], +]; diff --git a/Configuration/TCA/tx_nlmenubuilder_domain_model_menu.php b/Configuration/TCA/tx_nlmenubuilder_domain_model_menu.php new file mode 100644 index 0000000000000000000000000000000000000000..c0dd91c74106b7711d3d5c567efd2bd16e487057 --- /dev/null +++ b/Configuration/TCA/tx_nlmenubuilder_domain_model_menu.php @@ -0,0 +1,175 @@ +<?php +return [ + 'ctrl' => [ + 'title' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menu', + 'label' => 'title', + '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' => 'title', + 'iconfile' => 'EXT:nl_menubuilder/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menu.gif' + ], + 'interface' => [ + 'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, menu_item, menu_group', + ], + 'types' => [ + '1' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, menu_item, menu_group, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, 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_nlmenubuilder_domain_model_menu', + 'foreign_table_where' => 'AND {#tx_nlmenubuilder_domain_model_menu}.{#pid}=###CURRENT_PID### AND {#tx_nlmenubuilder_domain_model_menu}.{#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 + ] + ], + ], + + 'title' => [ + 'exclude' => false, + 'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menu.title', + 'config' => [ + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim,required' + ], + ], + 'menu_item' => [ + 'exclude' => false, + 'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menu.menu_item', + 'config' => [ + 'type' => 'inline', + 'foreign_table' => 'tx_nlmenubuilder_domain_model_menuitem', + 'foreign_field' => 'menu', + 'maxitems' => 9999, + 'appearance' => [ + 'collapseAll' => 0, + 'levelLinksPosition' => 'top', + 'showSynchronizationLink' => 1, + 'showPossibleLocalizationRecords' => 1, + 'showAllLocalizationLink' => 1 + ], + ], + + ], + 'menu_group' => [ + 'exclude' => false, + 'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menu.menu_group', + 'config' => [ + 'type' => 'select', + 'renderType' => 'selectMultipleSideBySide', + 'foreign_table' => 'tx_nlmenubuilder_domain_model_menugroup', + 'default' => 0, + 'size' => 10, + 'autoSizeMax' => 30, + 'maxitems' => 1, + 'minitems' => 1, + 'multiple' => 0, + 'fieldControl' => [ + 'editPopup' => [ + 'disabled' => false, + ], + 'addRecord' => [ + 'disabled' => false, + ], + 'listModule' => [ + 'disabled' => true, + ], + ], + ], + + ], + + ], +]; diff --git a/Configuration/TCA/tx_nlmenubuilder_domain_model_menugroup.php b/Configuration/TCA/tx_nlmenubuilder_domain_model_menugroup.php new file mode 100644 index 0000000000000000000000000000000000000000..6bea82c00c6030f19926d44689014dd81a19fe28 --- /dev/null +++ b/Configuration/TCA/tx_nlmenubuilder_domain_model_menugroup.php @@ -0,0 +1,130 @@ +<?php +return [ + 'ctrl' => [ + 'title' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menugroup', + 'label' => 'title', + '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' => 'title', + 'iconfile' => 'EXT:nl_menubuilder/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menugroup.gif' + ], + 'interface' => [ + 'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title', + ], + 'types' => [ + '1' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, 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_nlmenubuilder_domain_model_menugroup', + 'foreign_table_where' => 'AND {#tx_nlmenubuilder_domain_model_menugroup}.{#pid}=###CURRENT_PID### AND {#tx_nlmenubuilder_domain_model_menugroup}.{#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 + ] + ], + ], + + 'title' => [ + 'exclude' => false, + 'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menugroup.title', + 'config' => [ + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim' + ], + ], + + ], +]; diff --git a/Configuration/TCA/tx_nlmenubuilder_domain_model_menuitem.php b/Configuration/TCA/tx_nlmenubuilder_domain_model_menuitem.php new file mode 100644 index 0000000000000000000000000000000000000000..233f85c0f9b9d060d9141085880b00ad803adb66 --- /dev/null +++ b/Configuration/TCA/tx_nlmenubuilder_domain_model_menuitem.php @@ -0,0 +1,149 @@ +<?php +return [ + 'ctrl' => [ + 'title' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menuitem', + 'label' => 'title', + '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' => 'title', + 'iconfile' => 'EXT:nl_menubuilder/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem.gif' + ], + 'interface' => [ + 'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, type', + ], + 'types' => [ + '1' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, type, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, 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_nlmenubuilder_domain_model_menuitem', + 'foreign_table_where' => 'AND {#tx_nlmenubuilder_domain_model_menuitem}.{#pid}=###CURRENT_PID### AND {#tx_nlmenubuilder_domain_model_menuitem}.{#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 + ] + ], + ], + + 'title' => [ + 'exclude' => false, + 'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menuitem.title', + 'config' => [ + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim,required' + ], + ], + 'type' => [ + 'exclude' => false, + 'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menuitem.type', + 'config' => [ + 'type' => 'select', + 'renderType' => 'selectSingle', + 'items' => [ + ['-- Label --', 0], + ], + 'size' => 1, + 'maxitems' => 1, + 'eval' => 'required' + ], + ], + + 'menu' => [ + 'config' => [ + 'type' => 'passthrough', + ], + ], + ], +]; diff --git a/Configuration/TCA/tx_nlmenubuilder_domain_model_page.php b/Configuration/TCA/tx_nlmenubuilder_domain_model_page.php new file mode 100644 index 0000000000000000000000000000000000000000..61533847739502d5b3e07dd50d543b2198b46a14 --- /dev/null +++ b/Configuration/TCA/tx_nlmenubuilder_domain_model_page.php @@ -0,0 +1,200 @@ +<?php +return [ + 'ctrl' => [ + 'title' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_page', + 'label' => 'title', + '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' => 'title,subtitle,page', + 'iconfile' => 'EXT:nl_menubuilder/Resources/Public/Icons/tx_nlmenubuilder_domain_model_page.gif' + ], + 'interface' => [ + 'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, subtitle, image, page', + ], + 'types' => [ + '1' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, subtitle, image, page, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, 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_nlmenubuilder_domain_model_page', + 'foreign_table_where' => 'AND {#tx_nlmenubuilder_domain_model_page}.{#pid}=###CURRENT_PID### AND {#tx_nlmenubuilder_domain_model_page}.{#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 + ] + ], + ], + + 'title' => [ + 'exclude' => true, + 'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_page.title', + 'config' => [ + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim,required' + ], + ], + 'subtitle' => [ + 'exclude' => true, + 'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_page.subtitle', + 'config' => [ + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim' + ], + ], + 'image' => [ + 'exclude' => true, + 'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_page.image', + 'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( + 'image', + [ + 'appearance' => [ + 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' + ], + 'foreign_types' => [ + '0' => [ + 'showitem' => ' + --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, + --palette--;;filePalette' + ], + \TYPO3\CMS\Core\Resource\File::FILETYPE_TEXT => [ + 'showitem' => ' + --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, + --palette--;;filePalette' + ], + \TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ + 'showitem' => ' + --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, + --palette--;;filePalette' + ], + \TYPO3\CMS\Core\Resource\File::FILETYPE_AUDIO => [ + 'showitem' => ' + --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, + --palette--;;filePalette' + ], + \TYPO3\CMS\Core\Resource\File::FILETYPE_VIDEO => [ + 'showitem' => ' + --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, + --palette--;;filePalette' + ], + \TYPO3\CMS\Core\Resource\File::FILETYPE_APPLICATION => [ + 'showitem' => ' + --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, + --palette--;;filePalette' + ] + ], + 'foreign_match_fields' => [ + 'fieldname' => 'image', + 'tablenames' => 'tx_nlmenubuilder_domain_model_page', + 'table_local' => 'sys_file', + ], + 'maxitems' => 1 + ], + $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] + ), + + ], + 'page' => [ + 'exclude' => true, + 'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_page.page', + 'config' => [ + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim,required' + ], + ], + + ], +]; diff --git a/Configuration/TCA/tx_nlmenubuilder_domain_model_submenu.php b/Configuration/TCA/tx_nlmenubuilder_domain_model_submenu.php new file mode 100644 index 0000000000000000000000000000000000000000..68761784e4464df33696de7b5f4f702dbe8226e7 --- /dev/null +++ b/Configuration/TCA/tx_nlmenubuilder_domain_model_submenu.php @@ -0,0 +1,130 @@ +<?php +return [ + 'ctrl' => [ + 'title' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_submenu', + 'label' => 'title', + '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' => 'title', + 'iconfile' => 'EXT:nl_menubuilder/Resources/Public/Icons/tx_nlmenubuilder_domain_model_submenu.gif' + ], + 'interface' => [ + 'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title', + ], + 'types' => [ + '1' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, title, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, 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_nlmenubuilder_domain_model_submenu', + 'foreign_table_where' => 'AND {#tx_nlmenubuilder_domain_model_submenu}.{#pid}=###CURRENT_PID### AND {#tx_nlmenubuilder_domain_model_submenu}.{#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 + ] + ], + ], + + 'title' => [ + 'exclude' => true, + 'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_submenu.title', + 'config' => [ + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim,required' + ], + ], + + ], +]; diff --git a/ExtensionBuilder.json b/ExtensionBuilder.json index c2878b11cc2d55405e959341e70ea682f4b4276d..6836fe7d24e8b6d6345ad1a1c0609ae27728a428 100644 --- a/ExtensionBuilder.json +++ b/ExtensionBuilder.json @@ -1,5 +1,193 @@ { - "modules": [], + "modules": [ + { + "config": { + "position": [ + 982, + 274 + ] + }, + "name": "New Model Object", + "value": { + "actionGroup": { + "_default0_list": false, + "_default1_show": false, + "_default2_new_create": false, + "_default3_edit_update": false, + "_default4_delete": false, + "customActions": [] + }, + "name": "Menu", + "objectsettings": { + "addDeletedField": true, + "addHiddenField": true, + "addStarttimeEndtimeFields": true, + "aggregateRoot": true, + "categorizable": false, + "description": "", + "mapToTable": "", + "parentClass": "", + "sorting": false, + "type": "Entity", + "uid": "782096674115" + }, + "propertyGroup": { + "properties": [ + { + "allowedFileTypes": "", + "maxItems": "1", + "propertyDescription": "Name of the menu", + "propertyIsExcludeField": false, + "propertyIsL10nModeExclude": false, + "propertyIsRequired": true, + "propertyName": "title", + "propertyType": "String", + "uid": "1605171702573" + } + ] + }, + "relationGroup": { + "relations": [ + { + "foreignRelationClass": "", + "lazyLoading": false, + "propertyIsExcludeField": false, + "relationDescription": "", + "relationName": "menuItem", + "relationType": "zeroToMany", + "relationWire": "[wired]", + "renderType": "inline", + "uid": "498399672732" + }, + { + "foreignRelationClass": "", + "lazyLoading": false, + "propertyIsExcludeField": false, + "relationDescription": "", + "relationName": "menuGroup", + "relationType": "manyToOne", + "relationWire": "[wired]", + "renderType": "selectMultipleSideBySide", + "uid": "910633819500" + } + ] + } + } + }, + { + "config": { + "position": [ + 1258, + 14 + ] + }, + "name": "New Model Object", + "value": { + "actionGroup": { + "_default0_list": false, + "_default1_show": false, + "_default2_new_create": false, + "_default3_edit_update": false, + "_default4_delete": false, + "customActions": [] + }, + "name": "MenuGroup", + "objectsettings": { + "addDeletedField": true, + "addHiddenField": true, + "addStarttimeEndtimeFields": true, + "aggregateRoot": true, + "categorizable": false, + "description": "", + "mapToTable": "", + "parentClass": "", + "sorting": false, + "type": "Entity", + "uid": "908718443858" + }, + "propertyGroup": { + "properties": [ + { + "allowedFileTypes": "", + "maxItems": "1", + "propertyDescription": "Name of the menu group", + "propertyIsExcludeField": false, + "propertyIsL10nModeExclude": false, + "propertyIsRequired": false, + "propertyName": "title", + "propertyType": "String", + "uid": "1499991436488" + } + ] + }, + "relationGroup": { + "relations": [] + } + } + }, + { + "config": { + "position": [ + 570, + 253 + ] + }, + "name": "New Model Object", + "value": { + "actionGroup": { + "_default0_list": false, + "_default1_show": false, + "_default2_new_create": false, + "_default3_edit_update": false, + "_default4_delete": false, + "customActions": [] + }, + "name": "MenuItem", + "objectsettings": { + "addDeletedField": true, + "addHiddenField": true, + "addStarttimeEndtimeFields": true, + "aggregateRoot": true, + "categorizable": false, + "description": "", + "mapToTable": "", + "parentClass": "", + "sorting": false, + "type": "Entity", + "uid": "461753844786" + }, + "propertyGroup": { + "properties": [ + { + "allowedFileTypes": "", + "maxItems": "1", + "propertyDescription": "Name of the menu item", + "propertyIsExcludeField": false, + "propertyIsL10nModeExclude": false, + "propertyIsRequired": true, + "propertyName": "title", + "propertyType": "String", + "uid": "1275033111048" + }, + { + "allowedFileTypes": "", + "maxItems": "1", + "propertyDescription": "", + "propertyIsExcludeField": false, + "propertyIsL10nModeExclude": false, + "propertyIsRequired": true, + "propertyName": "type", + "propertyType": "Select", + "uid": "907885444815" + } + ] + }, + "relationGroup": { + "relations": [] + } + } + } + ], "properties": { "backendModules": [], "description": "Menu Builder by netzlabor coding GmbH", @@ -23,11 +211,36 @@ "plugins": [], "vendorName": "NL" }, - "wires": [], + "wires": [ + { + "src": { + "moduleId": 0, + "terminal": "relationWire_0", + "uid": "498399672732" + }, + "tgt": { + "moduleId": 2, + "terminal": "SOURCES", + "uid": "461753844786" + } + }, + { + "src": { + "moduleId": 0, + "terminal": "relationWire_1", + "uid": "910633819500" + }, + "tgt": { + "moduleId": 1, + "terminal": "SOURCES", + "uid": "908718443858" + } + } + ], "storagePath": "\/var\/www\/html\/public\/typo3conf\/ext\/", "log": { - "last_modified": "2021-04-20 09:30", + "last_modified": "2021-04-21 02:54", "extension_builder_version": "9.10.3", "be_user": " (1)" } -} +} \ No newline at end of file diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf new file mode 100644 index 0000000000000000000000000000000000000000..e558e406ca77fded808b3f2640fc42bfced37190 --- /dev/null +++ b/Resources/Private/Language/locallang.xlf @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<xliff version="1.0"> + <file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang" date="2021-04-21T14:54:38Z" product-name="nl_menubuilder"> + <header/> + <body> + <trans-unit id="tx_nlmenubuilder_domain_model_menu" resname="tx_nlmenubuilder_domain_model_menu"> + <source>Menu</source> + </trans-unit> + <trans-unit id="tx_nlmenubuilder_domain_model_menu.title" resname="tx_nlmenubuilder_domain_model_menu.title"> + <source>Title</source> + </trans-unit> + <trans-unit id="tx_nlmenubuilder_domain_model_menu.menu_item" resname="tx_nlmenubuilder_domain_model_menu.menu_item"> + <source>Menu Item</source> + </trans-unit> + <trans-unit id="tx_nlmenubuilder_domain_model_menu.menu_group" resname="tx_nlmenubuilder_domain_model_menu.menu_group"> + <source>Menu Group</source> + </trans-unit> + <trans-unit id="tx_nlmenubuilder_domain_model_menugroup" resname="tx_nlmenubuilder_domain_model_menugroup"> + <source>Menu Group</source> + </trans-unit> + <trans-unit id="tx_nlmenubuilder_domain_model_menugroup.title" resname="tx_nlmenubuilder_domain_model_menugroup.title"> + <source>Title</source> + </trans-unit> + <trans-unit id="tx_nlmenubuilder_domain_model_menuitem" resname="tx_nlmenubuilder_domain_model_menuitem"> + <source>Menu Item</source> + </trans-unit> + <trans-unit id="tx_nlmenubuilder_domain_model_menuitem.title" resname="tx_nlmenubuilder_domain_model_menuitem.title"> + <source>Title</source> + </trans-unit> + <trans-unit id="tx_nlmenubuilder_domain_model_menuitem.type" resname="tx_nlmenubuilder_domain_model_menuitem.type"> + <source>Type</source> + </trans-unit> + </body> + </file> +</xliff> diff --git a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_content.xlf b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_content.xlf new file mode 100644 index 0000000000000000000000000000000000000000..aa3a0d2f137e6de554e8a824b7117ecec14627cb --- /dev/null +++ b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_content.xlf @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<xliff version="1.0"> + <file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_csh" date="2021-04-21T14:26:16Z" product-name="nl_menubuilder"> + <header/> + <body> + <trans-unit id="title.description" resname="title.description"> + <source>title</source> + </trans-unit> + <trans-unit id="content.description" resname="content.description"> + <source>content</source> + </trans-unit> + </body> + </file> +</xliff> diff --git a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_link.xlf b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_link.xlf new file mode 100644 index 0000000000000000000000000000000000000000..d1bbe8e76ed6466dc6c400ba70eb06c6656f5b42 --- /dev/null +++ b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_link.xlf @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<xliff version="1.0"> + <file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_csh" date="2021-04-21T14:26:16Z" product-name="nl_menubuilder"> + <header/> + <body> + <trans-unit id="title.description" resname="title.description"> + <source>title</source> + </trans-unit> + <trans-unit id="subtitle.description" resname="subtitle.description"> + <source>subtitle</source> + </trans-unit> + <trans-unit id="image.description" resname="image.description"> + <source>image</source> + </trans-unit> + <trans-unit id="link.description" resname="link.description"> + <source>link</source> + </trans-unit> + </body> + </file> +</xliff> diff --git a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menu.xlf b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menu.xlf new file mode 100644 index 0000000000000000000000000000000000000000..d49c49ccf5badd58f39d81b95f70ae6f80b04108 --- /dev/null +++ b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menu.xlf @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<xliff version="1.0"> + <file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_csh" date="2021-04-21T14:54:38Z" product-name="nl_menubuilder"> + <header/> + <body> + <trans-unit id="title.description" resname="title.description"> + <source>Name of the menu</source> + </trans-unit> + <trans-unit id="menu_item.description" resname="menu_item.description"> + <source>menuItem</source> + </trans-unit> + <trans-unit id="menu_group.description" resname="menu_group.description"> + <source>menuGroup</source> + </trans-unit> + </body> + </file> +</xliff> diff --git a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menugroup.xlf b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menugroup.xlf new file mode 100644 index 0000000000000000000000000000000000000000..e29c366f9dafae7eb2ef0474289c82fc861f210e --- /dev/null +++ b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menugroup.xlf @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<xliff version="1.0"> + <file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_csh" date="2021-04-21T14:54:38Z" product-name="nl_menubuilder"> + <header/> + <body> + <trans-unit id="title.description" resname="title.description"> + <source>Name of the menu group</source> + </trans-unit> + </body> + </file> +</xliff> diff --git a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menuitem.xlf b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menuitem.xlf new file mode 100644 index 0000000000000000000000000000000000000000..12ff063c941a939c46a1cfe73094da35e0b2bfd5 --- /dev/null +++ b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menuitem.xlf @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<xliff version="1.0"> + <file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_csh" date="2021-04-21T14:54:38Z" product-name="nl_menubuilder"> + <header/> + <body> + <trans-unit id="title.description" resname="title.description"> + <source>Name of the menu item</source> + </trans-unit> + <trans-unit id="type.description" resname="type.description"> + <source>type</source> + </trans-unit> + </body> + </file> +</xliff> diff --git a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_page.xlf b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_page.xlf new file mode 100644 index 0000000000000000000000000000000000000000..c33998f5eed27d8e016f5d0ab11c160adb33a7da --- /dev/null +++ b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_page.xlf @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<xliff version="1.0"> + <file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_csh" date="2021-04-21T14:26:16Z" product-name="nl_menubuilder"> + <header/> + <body> + <trans-unit id="title.description" resname="title.description"> + <source>title</source> + </trans-unit> + <trans-unit id="subtitle.description" resname="subtitle.description"> + <source>subtitle</source> + </trans-unit> + <trans-unit id="image.description" resname="image.description"> + <source>image</source> + </trans-unit> + <trans-unit id="page.description" resname="page.description"> + <source>page</source> + </trans-unit> + </body> + </file> +</xliff> diff --git a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_submenu.xlf b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_submenu.xlf new file mode 100644 index 0000000000000000000000000000000000000000..aac877491cb00ce919f33f7d063642c79b06b771 --- /dev/null +++ b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_submenu.xlf @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<xliff version="1.0"> + <file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_csh" date="2021-04-21T14:26:16Z" product-name="nl_menubuilder"> + <header/> + <body> + <trans-unit id="title.description" resname="title.description"> + <source>title</source> + </trans-unit> + </body> + </file> +</xliff> diff --git a/Resources/Private/Language/locallang_db.xlf b/Resources/Private/Language/locallang_db.xlf new file mode 100644 index 0000000000000000000000000000000000000000..3fc1da7bde7a685f4f526f89094943e5a4b144c6 --- /dev/null +++ b/Resources/Private/Language/locallang_db.xlf @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<xliff version="1.0"> + <file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_db" date="2021-04-21T14:54:38Z" product-name="nl_menubuilder"> + <header/> + <body> + <trans-unit id="tx_nlmenubuilder_domain_model_menu" resname="tx_nlmenubuilder_domain_model_menu"> + <source>Menu</source> + </trans-unit> + <trans-unit id="tx_nlmenubuilder_domain_model_menu.title" resname="tx_nlmenubuilder_domain_model_menu.title"> + <source>Title</source> + </trans-unit> + <trans-unit id="tx_nlmenubuilder_domain_model_menu.menu_item" resname="tx_nlmenubuilder_domain_model_menu.menu_item"> + <source>Menu Item</source> + </trans-unit> + <trans-unit id="tx_nlmenubuilder_domain_model_menu.menu_group" resname="tx_nlmenubuilder_domain_model_menu.menu_group"> + <source>Menu Group</source> + </trans-unit> + <trans-unit id="tx_nlmenubuilder_domain_model_menugroup" resname="tx_nlmenubuilder_domain_model_menugroup"> + <source>Menu Group</source> + </trans-unit> + <trans-unit id="tx_nlmenubuilder_domain_model_menugroup.title" resname="tx_nlmenubuilder_domain_model_menugroup.title"> + <source>Title</source> + </trans-unit> + <trans-unit id="tx_nlmenubuilder_domain_model_menuitem" resname="tx_nlmenubuilder_domain_model_menuitem"> + <source>Menu Item</source> + </trans-unit> + <trans-unit id="tx_nlmenubuilder_domain_model_menuitem.title" resname="tx_nlmenubuilder_domain_model_menuitem.title"> + <source>Title</source> + </trans-unit> + <trans-unit id="tx_nlmenubuilder_domain_model_menuitem.type" resname="tx_nlmenubuilder_domain_model_menuitem.type"> + <source>Type</source> + </trans-unit> + </body> + </file> +</xliff> diff --git a/Resources/Public/Icons/relation.gif b/Resources/Public/Icons/relation.gif new file mode 100644 index 0000000000000000000000000000000000000000..db61d7e18817e2969b740ccc62838a1447cd3c3c Binary files /dev/null and b/Resources/Public/Icons/relation.gif differ diff --git a/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menu.gif b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menu.gif new file mode 100644 index 0000000000000000000000000000000000000000..1750e037dd7ccd3a191cf9d8b1678f62d382034e Binary files /dev/null and b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menu.gif differ diff --git a/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menugroup.gif b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menugroup.gif new file mode 100644 index 0000000000000000000000000000000000000000..0ab6cf613b32001577c3e24378ed67cfb10ef64a Binary files /dev/null and b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menugroup.gif differ diff --git a/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem.gif b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem.gif new file mode 100644 index 0000000000000000000000000000000000000000..6cc5f16355d84652db5ce39fcbc7256b7ea457cd Binary files /dev/null and b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitem.gif differ diff --git a/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitemcontent.svg b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitemcontent.svg new file mode 100644 index 0000000000000000000000000000000000000000..ba78ed50d2057be43d84d5c11f54bec0ef562617 --- /dev/null +++ b/Resources/Public/Icons/tx_nlmenubuilder_domain_model_menuitemcontent.svg @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="utf-8"?><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 122.88 110.78" style="enable-background:new 0 0 122.88 110.78" xml:space="preserve"><style type="text/css"><![CDATA[ + .st0{fill-rule:evenodd;clip-rule:evenodd;} +]]></style><g><path class="st0" d="M7.05,0h100.97c1.92,0,3.68,0.8,4.95,2.07l0,0l0.01,0.01l0.01,0.01L113,2.1c1.27,1.28,2.06,3.03,2.06,4.95 v35.02c-0.53-0.48-1.13-0.91-1.78-1.28c-1.54-0.87-3.06-1.36-4.58-1.52V25.21l0,0c-0.22,0.04-0.45,0.06-0.67,0.06H7.05 c-0.23,0-0.46-0.02-0.67-0.06v78.51c0,0.19,0.07,0.36,0.19,0.48l0,0l0.01,0.01c0.12,0.12,0.28,0.19,0.48,0.19h52.44 c-0.01,2.74,0.52,4.86,1.58,6.38l-54.02,0c-1.92,0-3.68-0.79-4.96-2.07l-0.01-0.01l-0.01-0.01l-0.01-0.01 C0.79,107.4,0,105.65,0,103.73l0-96.7c0.02-1.94,0.81-3.7,2.08-4.97c0.08-0.08,0.15-0.15,0.23-0.22C3.57,0.7,5.23,0,7.05,0L7.05,0 L7.05,0z M55.11,47.78c-1.48,0-2.68-1.3-2.68-2.91c0-1.61,1.2-2.91,2.68-2.91h40.15c1.25,0,2.3,0.93,2.6,2.19l-3.51,3.64H55.11 L55.11,47.78L55.11,47.78z M55.11,62.5c-1.48,0-2.68-1.3-2.68-2.91s1.2-2.91,2.68-2.91h30.65l-5.62,5.82H55.11L55.11,62.5 L55.11,62.5z M89.25,97.9c-2.05,0.65-4.1,1.29-6.15,1.94c-2.05,0.65-4.1,1.4-6.15,2.05c-4.86,1.51-7.55,2.48-8.1,2.59 c-0.54,0.11-0.21-2.05,0.97-6.8l3.88-14.78l0.32-0.32L89.25,97.9L89.25,97.9L89.25,97.9L89.25,97.9L89.25,97.9L89.25,97.9z M79.64,76.85l27.16-28.13c0.65-0.54,1.3-0.75,2.05-0.32l13.6,13.17c0.54,0.65,0.65,1.4-0.11,2.16L94.86,92.18L79.64,76.85 L79.64,76.85L79.64,76.85L79.64,76.85z M115.06,85.16v18.58c0,1.94-0.79,3.7-2.07,4.97c-1.27,1.27-3.03,2.07-4.97,2.07H79.74 l0.51-0.16l0.5-0.14c0.55-0.17,1.86-0.62,3.16-1.07c0.67-0.23,1.34-0.46,2.74-0.9l5.9-1.86l-0.01-0.02 c1.39-0.44,2.7-1.18,3.83-2.23h11.65c0.18,0,0.35-0.08,0.48-0.21c0.12-0.12,0.21-0.29,0.21-0.48V91.74L115.06,85.16L115.06,85.16z M19.51,92.45c-1.46,0-2.65-1.3-2.65-2.91s1.19-2.91,2.65-2.91h43.62l-1.53,5.82H19.51L19.51,92.45L19.51,92.45z M18.45,79.73 c-1.46,0-2.65-1.3-2.65-2.91c0-1.61,1.19-2.91,2.65-2.91h50.92c-0.56,0.37-1.1,0.81-1.6,1.31l-0.05,0.05 c-1.26,1.18-2.24,2.7-2.77,4.46H18.45L18.45,79.73L18.45,79.73z M16.49,34.55h29.25v29.51H16.49V34.55L16.49,34.55L16.49,34.55z M46.94,9.08c2.53,0,4.57,2.05,4.57,4.57c0,2.52-2.05,4.57-4.57,4.57c-2.52,0-4.57-2.05-4.57-4.57 C42.37,11.13,44.42,9.08,46.94,9.08L46.94,9.08L46.94,9.08z M30.96,9.08c2.53,0,4.57,2.05,4.57,4.57c0,2.52-2.05,4.57-4.57,4.57 c-2.53,0-4.57-2.05-4.57-4.57C26.39,11.13,28.44,9.08,30.96,9.08L30.96,9.08L30.96,9.08z M14.99,9.08c2.53,0,4.57,2.05,4.57,4.57 c0,2.52-2.05,4.57-4.57,4.57c-2.53,0-4.57-2.05-4.57-4.57C10.42,11.13,12.46,9.08,14.99,9.08L14.99,9.08L14.99,9.08z"/></g></svg> \ No newline at end of file diff --git a/ext_emconf.php b/ext_emconf.php index 633641e17b3dd77c71d139b410dd2f1405fd35aa..a02c602c02e18ca365db44d5fea765221f7472b9 100644 --- a/ext_emconf.php +++ b/ext_emconf.php @@ -3,7 +3,7 @@ /*************************************************************** * Extension Manager/Repository config file for ext: "nl_menubuilder" * - * Auto generated by Extension Builder 2021-04-20 + * Auto generated by Extension Builder 2021-04-21 * * Manual updates: * Only the data in the array - anything else is removed by next write. @@ -14,8 +14,8 @@ $EM_CONF[$_EXTKEY] = [ 'title' => 'Menu Builder', 'description' => 'Menu Builder by netzlabor coding GmbH', 'category' => 'plugin', - 'author' => 'Roman Derlemenko', - 'author_email' => 'romanderlemenko@gmail.com', + 'author' => '', + 'author_email' => '', 'state' => 'alpha', 'uploadfolder' => 0, 'createDirs' => '', diff --git a/ext_localconf.php b/ext_localconf.php new file mode 100644 index 0000000000000000000000000000000000000000..b3602e68695ffc7ba899c09dae84635e5fbb5537 --- /dev/null +++ b/ext_localconf.php @@ -0,0 +1,27 @@ +<?php +defined('TYPO3_MODE') or die(); + +$boot = function () { + if (TYPO3_MODE === 'BE') { + $icons = [ + 'ext-menuitem-type-content' => 'tx_nlmenubuilder_domain_model_menuitemcontent.svg', + 'ext-menuitem-type-page' => 'tx_nlmenubuilder_domain_model_menuitemcontent.svg', + 'ext-menuitem-type-link' => 'tx_nlmenubuilder_domain_model_menuitemcontent.svg', + ]; + $iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class); + + foreach ($icons as $identifier => $path) { + if (!$iconRegistry->isRegistered($identifier)) { + $iconRegistry->registerIcon( + $identifier, + \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class, + ['source' => 'EXT:nl_menubuilder/Resources/Public/Icons/' . $path] + ); + } + } + } +}; + +$boot(); + +unset($boot); diff --git a/ext_tables.php b/ext_tables.php index 4d568c8b6e2e91c56d55bcae9c138f2d9db9971e..41d074abe233c85fceb1d56f99ce0edf35982e26 100644 --- a/ext_tables.php +++ b/ext_tables.php @@ -7,5 +7,14 @@ call_user_func( \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('nl_menubuilder', 'Configuration/TypoScript', 'Menu Builder'); + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr('tx_nlmenubuilder_domain_model_menu', 'EXT:nl_menubuilder/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menu.xlf'); + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages('tx_nlmenubuilder_domain_model_menu'); + + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr('tx_nlmenubuilder_domain_model_menugroup', 'EXT:nl_menubuilder/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menugroup.xlf'); + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages('tx_nlmenubuilder_domain_model_menugroup'); + + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr('tx_nlmenubuilder_domain_model_menuitem', 'EXT:nl_menubuilder/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menuitem.xlf'); + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages('tx_nlmenubuilder_domain_model_menuitem'); + } ); diff --git a/ext_tables.sql b/ext_tables.sql new file mode 100644 index 0000000000000000000000000000000000000000..3372bc97d0bca6d32aa285db4ea70f99a0418109 --- /dev/null +++ b/ext_tables.sql @@ -0,0 +1,31 @@ +# +# Table structure for table 'tx_nlmenubuilder_domain_model_menu' +# +CREATE TABLE tx_nlmenubuilder_domain_model_menu ( + + title varchar(255) DEFAULT '' NOT NULL, + menu_item int(11) unsigned DEFAULT '0' NOT NULL, + menu_group int(11) unsigned DEFAULT '0' + +); + +# +# Table structure for table 'tx_nlmenubuilder_domain_model_menugroup' +# +CREATE TABLE tx_nlmenubuilder_domain_model_menugroup ( + + title varchar(255) DEFAULT '' NOT NULL + +); + +# +# Table structure for table 'tx_nlmenubuilder_domain_model_menuitem' +# +CREATE TABLE tx_nlmenubuilder_domain_model_menuitem ( + + menu int(11) unsigned DEFAULT '0' NOT NULL, + + title varchar(255) DEFAULT '' NOT NULL, + type int(11) DEFAULT '0' NOT NULL + +);