diff --git a/Classes/Domain/Model/MenuItem.php b/Classes/Domain/Model/MenuItem.php index b56df01e29a3427103db839174b68ccdf16a0853..eda0c622be6e9a1ee1b47e567a7335bd67b7f39f 100644 --- a/Classes/Domain/Model/MenuItem.php +++ b/Classes/Domain/Model/MenuItem.php @@ -1,4 +1,5 @@ <?php + namespace NL\NlMenubuilder\Domain\Model; /*** @@ -16,10 +17,10 @@ namespace NL\NlMenubuilder\Domain\Model; */ class MenuItem extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity { - public const TYPE_PAGE = '0'; - public const TYPE_LINK = '1'; - public const TYPE_CONTENT = '2'; - public const TYPE_SUBMENU = '3'; + const TYPE_PAGE = '0'; + const TYPE_LINK = '1'; + const TYPE_CONTENT = '2'; + const TYPE_SUBMENU = '3'; /** * Type of the menu item @@ -73,6 +74,14 @@ class MenuItem extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity */ protected $content = ''; + /** + * submenu + * + * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\NL\NlMenubuilder\Domain\Model\Menu> + * @TYPO3\CMS\Extbase\Annotation\ORM\Cascade("remove") + */ + protected $submenu = null; + /** * Returns the title * @@ -219,4 +228,70 @@ class MenuItem extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity { $this->content = $content; } + + /** + * __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->submenu = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); + } + + /** + * Adds a Menu + * + * @param \NL\NlMenubuilder\Domain\Model\Menu $submenu + * @return void + */ + public function addSubmenu(\NL\NlMenubuilder\Domain\Model\Menu $submenu) + { + $this->submenu->attach($submenu); + } + + /** + * Removes a Menu + * + * @param \NL\NlMenubuilder\Domain\Model\Menu $submenuToRemove The Menu to be removed + * @return void + */ + public function removeSubmenu(\NL\NlMenubuilder\Domain\Model\Menu $submenuToRemove) + { + $this->submenu->detach($submenuToRemove); + } + + /** + * Returns the submenu + * + * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\NL\NlMenubuilder\Domain\Model\Menu> $submenu + */ + public function getSubmenu() + { + return $this->submenu; + } + + /** + * Sets the submenu + * + * @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\NL\NlMenubuilder\Domain\Model\Menu> $submenu + * @return void + */ + public function setSubmenu(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $submenu) + { + $this->submenu = $submenu; + } } diff --git a/Configuration/TCA/tx_nlmenubuilder_domain_model_menu.php b/Configuration/TCA/tx_nlmenubuilder_domain_model_menu.php index 6b20f54e2180281e8ba9fc40160953ceb9c36f5d..6c4245e8511fae26c6bb5725b50f18ab7a428c21 100644 --- a/Configuration/TCA/tx_nlmenubuilder_domain_model_menu.php +++ b/Configuration/TCA/tx_nlmenubuilder_domain_model_menu.php @@ -160,5 +160,10 @@ return [ ], + 'menuitem' => [ + 'config' => [ + 'type' => 'passthrough', + ], + ], ], ]; diff --git a/Configuration/TCA/tx_nlmenubuilder_domain_model_menuitem.php b/Configuration/TCA/tx_nlmenubuilder_domain_model_menuitem.php index c45512dd1b2212d02509a3d492f0ea229e9ae579..66fb58952815dfd37b982b45e24d30bbf68bd04d 100644 --- a/Configuration/TCA/tx_nlmenubuilder_domain_model_menuitem.php +++ b/Configuration/TCA/tx_nlmenubuilder_domain_model_menuitem.php @@ -36,7 +36,7 @@ return [ // content '2' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, type, title, content, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime'], // submenu - '3' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, type, title, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime'], + '3' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, type, title, submenu, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime'], ], 'columns' => [ 'sys_language_uid' => [ @@ -237,7 +237,7 @@ return [ 'config' => [ 'type' => 'input', 'size' => 30, - 'eval' => 'trim' + 'eval' => 'trim,required' ], ], 'content' => [ @@ -254,7 +254,25 @@ return [ ], 'cols' => 40, 'rows' => 15, - 'eval' => 'trim', + 'eval' => 'trim,required', + ], + + ], + 'submenu' => [ + 'exclude' => true, + 'label' => 'LLL:EXT:nl_menubuilder/Resources/Private/Language/locallang_db.xlf:tx_nlmenubuilder_domain_model_menuitem.submenu', + 'config' => [ + 'type' => 'inline', + 'foreign_table' => 'tx_nlmenubuilder_domain_model_menu', + 'foreign_field' => 'menuitem', + 'maxitems' => 9999, + 'appearance' => [ + 'collapseAll' => 0, + 'levelLinksPosition' => 'top', + 'showSynchronizationLink' => 1, + 'showPossibleLocalizationRecords' => 1, + 'showAllLocalizationLink' => 1 + ], ], ], diff --git a/ExtensionBuilder.json b/ExtensionBuilder.json index 96a701fb43d94932987632bd47e4994833f92944..a3b783cfbd824cdba8dc2e23e75ce144565bb821 100644 --- a/ExtensionBuilder.json +++ b/ExtensionBuilder.json @@ -128,8 +128,8 @@ { "config": { "position": [ - 517, - 233 + 471, + 365 ] }, "name": "New Model Object", @@ -238,7 +238,19 @@ ] }, "relationGroup": { - "relations": [] + "relations": [ + { + "foreignRelationClass": "", + "lazyLoading": false, + "propertyIsExcludeField": true, + "relationDescription": "", + "relationName": "submenu", + "relationType": "zeroToMany", + "relationWire": "[wired]", + "renderType": "inline", + "uid": "1611042414700" + } + ] } } } @@ -290,11 +302,23 @@ "terminal": "SOURCES", "uid": "908718443858" } + }, + { + "src": { + "moduleId": 2, + "terminal": "relationWire_0", + "uid": "1611042414700" + }, + "tgt": { + "moduleId": 0, + "terminal": "SOURCES", + "uid": "782096674115" + } } ], "storagePath": "\/var\/www\/html\/public\/typo3conf\/ext\/", "log": { - "last_modified": "2021-04-22 11:17", + "last_modified": "2021-04-23 09:51", "extension_builder_version": "9.10.3", "be_user": " (1)" } diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf index 0be185aae9f06689335a64ae50162814b191a055..de906b15af4619346541af9ad72d9b22b5da705c 100644 --- a/Resources/Private/Language/locallang.xlf +++ b/Resources/Private/Language/locallang.xlf @@ -1,6 +1,6 @@ <?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-22T11:17:02Z" product-name="nl_menubuilder"> + <file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang" date="2021-04-23T09:51:09Z" product-name="nl_menubuilder"> <header/> <body> <trans-unit id="tx_nlmenubuilder_domain_model_menu" resname="tx_nlmenubuilder_domain_model_menu"> @@ -45,6 +45,9 @@ <trans-unit id="tx_nlmenubuilder_domain_model_menuitem.content" resname="tx_nlmenubuilder_domain_model_menuitem.content"> <source>Content</source> </trans-unit> + <trans-unit id="tx_nlmenubuilder_domain_model_menuitem.submenu" resname="tx_nlmenubuilder_domain_model_menuitem.submenu"> + <source>Submenu</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 index 92575173e22b04df58463225d5b1083b34c479d9..27093bae9495771a6177760104e4215834210c11 100644 --- a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menu.xlf +++ b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menu.xlf @@ -1,6 +1,6 @@ <?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-22T11:17:02Z" product-name="nl_menubuilder"> + <file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_csh" date="2021-04-23T09:51:09Z" product-name="nl_menubuilder"> <header/> <body> <trans-unit id="title.description" resname="title.description"> 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 index a1c2f382545c41712dbae374b1085714a4daf51c..1d000fed252f6212fa7bec659919ff47ece98d62 100644 --- a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menugroup.xlf +++ b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menugroup.xlf @@ -1,6 +1,6 @@ <?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-22T11:17:02Z" product-name="nl_menubuilder"> + <file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_csh" date="2021-04-23T09:51:09Z" product-name="nl_menubuilder"> <header/> <body> <trans-unit id="title.description" resname="title.description"> 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 index 9ddcb844de9866d1d20404774d2ead53a76d28c8..121cf9616a24d1c3c11392f9c33e0d686d18fe9f 100644 --- a/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menuitem.xlf +++ b/Resources/Private/Language/locallang_csh_tx_nlmenubuilder_domain_model_menuitem.xlf @@ -1,6 +1,6 @@ <?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-22T11:17:02Z" product-name="nl_menubuilder"> + <file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_csh" date="2021-04-23T09:51:09Z" product-name="nl_menubuilder"> <header/> <body> <trans-unit id="type.description" resname="type.description"> @@ -24,6 +24,9 @@ <trans-unit id="content.description" resname="content.description"> <source>content</source> </trans-unit> + <trans-unit id="submenu.description" resname="submenu.description"> + <source>submenu</source> + </trans-unit> </body> </file> </xliff> diff --git a/Resources/Private/Language/locallang_db.xlf b/Resources/Private/Language/locallang_db.xlf index d12607c5247bbd5f266873fb6a38c33710518288..ba93054deed0a8f8e1c8f72b7d6a1551bbdc828c 100644 --- a/Resources/Private/Language/locallang_db.xlf +++ b/Resources/Private/Language/locallang_db.xlf @@ -1,6 +1,6 @@ <?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-22T11:17:02Z" product-name="nl_menubuilder"> + <file source-language="en" datatype="plaintext" original="EXT:nl_menubuilder/Resources/Private/Language/locallang_db" date="2021-04-23T09:51:09Z" product-name="nl_menubuilder"> <header/> <body> <trans-unit id="tx_nlmenubuilder_domain_model_menu" resname="tx_nlmenubuilder_domain_model_menu"> diff --git a/ext_emconf.php b/ext_emconf.php index bc184f83df3740042ffa19b4a342ea432922b72c..0020851ca981f40ac616fbdf46f46c9167b3c51f 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-22 + * Auto generated by Extension Builder 2021-04-23 * * Manual updates: * Only the data in the array - anything else is removed by next write. diff --git a/ext_tables.sql b/ext_tables.sql index 508495d7de304f1f7ac376f75de0ff9e02b1bb22..bdbd919005e1286eea7f2bb385d8048bababefcf 100644 --- a/ext_tables.sql +++ b/ext_tables.sql @@ -3,6 +3,8 @@ # CREATE TABLE tx_nlmenubuilder_domain_model_menu ( + menuitem int(11) unsigned DEFAULT '0' NOT NULL, + title varchar(255) DEFAULT '' NOT NULL, menu_group int(11) unsigned DEFAULT '0', menu_item int(11) unsigned DEFAULT '0' NOT NULL @@ -31,8 +33,7 @@ CREATE TABLE tx_nlmenubuilder_domain_model_menuitem ( image int(11) unsigned NOT NULL default '0', page varchar(255) DEFAULT '' NOT NULL, link varchar(255) DEFAULT '' NOT NULL, - content text + content text, + submenu int(11) unsigned DEFAULT '0' NOT NULL ); - -## EXTENSION BUILDER DEFAULTS END TOKEN - Everything BEFORE this line is overwritten with the defaults of the extension builder \ No newline at end of file