diff --git a/Classes/Controller/MailController.php b/Classes/Controller/MailController.php index 0faeaf07f0b7ca4d0e06e32dd04715351341a1c3..bc005b705a6d82a48da3e52424da8813ec998884 100644 --- a/Classes/Controller/MailController.php +++ b/Classes/Controller/MailController.php @@ -25,13 +25,11 @@ namespace SGalinski\SgMail\Controller; * This copyright notice MUST APPEAR in all copies of the script! ***************************************************************/ use SGalinski\SgMail\Domain\Model\Template; +use SGalinski\SgMail\Service\BackendService; use SGalinski\SgMail\Service\MailTemplateService; use SGalinski\SgMail\Session\PhpSession; -use TYPO3\CMS\Backend\Template\Components\ButtonBar; use TYPO3\CMS\Backend\Template\Components\DocHeaderComponent; use TYPO3\CMS\Backend\Utility\BackendUtility; -use TYPO3\CMS\Core\Imaging\Icon; -use TYPO3\CMS\Core\Imaging\IconFactory; use TYPO3\CMS\Core\Messaging\FlashMessage; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Extbase\Mvc\Controller\ActionController; @@ -75,6 +73,8 @@ class MailController extends ActionController { * @param string $selectedLanguageRight * @param string $selectedExtensionKey * @param string $selectedTemplateKey + * @throws \InvalidArgumentException + * @throws \UnexpectedValueException */ public function indexAction( $selectedTemplate = NULL, $selectedExtension = NULL, $selectedLanguageLeft = NULL, @@ -223,51 +223,28 @@ class MailController extends ActionController { // create doc header component $pageUid = (int) GeneralUtility::_GP('id'); $pageInfo = BackendUtility::readPageAccess($pageUid, $GLOBALS['BE_USER']->getPagePermsClause(1)); - $this->docHeaderComponent = GeneralUtility::makeInstance(DocHeaderComponent::class); - - $this->docHeaderComponent->setMetaInformation($pageInfo); - $this->makeButtons(); - $this->view->assign('docHeader', $this->docHeaderComponent->docHeaderContent()); - - $this->view->assign('templateDescription', $templateDescription); - $this->view->assign('selectedTemplate', $selectedTemplateArray); - $this->view->assign('selectedTemplateKey', $selectedTemplate); - $this->view->assign('selectedExtensionKey', $selectedExtension); - $this->view->assign('selectedLanguageLeft', $selectedLanguageLeft); - $this->view->assign('selectedLanguageRight', $selectedLanguageRight); - $this->view->assign('mode', 'editor'); - } - /** - * create buttons for the backend module header - */ - private function makeButtons() { - /** @var ButtonBar $buttonBar */ - $buttonBar = $this->docHeaderComponent->getButtonBar(); - - /** @var IconFactory $iconFactory */ - $iconFactory = GeneralUtility::makeInstance(IconFactory::class); - - // Refresh - $refreshButton = $buttonBar->makeLinkButton() - ->setHref(GeneralUtility::getIndpEnv('REQUEST_URI')) - ->setTitle(LocalizationUtility::translate('LLL:EXT:lang/locallang_core.xlf:labels.reload', '')) - ->setIcon($iconFactory->getIcon('actions-refresh', Icon::SIZE_SMALL)); - $buttonBar->addButton($refreshButton, ButtonBar::BUTTON_POSITION_RIGHT); - - // shortcut button - $shortcutButton = $buttonBar->makeShortcutButton() - ->setModuleName($this->request->getPluginName()) - ->setGetVariables( - [ - 'id', - 'M' - ] - ) - ->setSetVariables([]); - - $buttonBar->addButton($shortcutButton, ButtonBar::BUTTON_POSITION_RIGHT); - $this->docHeaderComponent->getButtonBar(); + if ($pageInfo) { + $this->docHeaderComponent = GeneralUtility::makeInstance(DocHeaderComponent::class); + $this->docHeaderComponent->setMetaInformation($pageInfo); + BackendService::makeButtons($this->docHeaderComponent, $this->request); + + $this->view->assign('docHeader', $this->docHeaderComponent->docHeaderContent()); + $this->view->assign('templateDescription', $templateDescription); + $this->view->assign('selectedTemplate', $selectedTemplateArray); + $this->view->assign('selectedTemplateKey', $selectedTemplate); + $this->view->assign('selectedExtensionKey', $selectedExtension); + $this->view->assign('selectedLanguageLeft', $selectedLanguageLeft); + $this->view->assign('selectedLanguageRight', $selectedLanguageRight); + $this->view->assign('mode', 'editor'); + } else { + $this->view->assign('noPage', '1'); + $this->addFlashMessage( + LocalizationUtility::translate('backend.notice.OtherPages', 'SgMail'), '', FlashMessage::INFO + ); + $this->view->assign('pages', BackendService::getPages()); + } + } /** diff --git a/Classes/Service/BackendService.php b/Classes/Service/BackendService.php new file mode 100644 index 0000000000000000000000000000000000000000..678d6551b70c39057b46d0a92c9515292eae3495 --- /dev/null +++ b/Classes/Service/BackendService.php @@ -0,0 +1,97 @@ +<?php + +namespace SGalinski\SgMail\Service; + +/*************************************************************** + * Copyright notice + * + * (c) sgalinski Internet Services (https://www.sgalinski.de) + * + * All rights reserved + * + * This script is part of the TYPO3 project. The TYPO3 project is + * free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * The GNU General Public License can be found at + * http://www.gnu.org/copyleft/gpl.html. + * + * This script is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * This copyright notice MUST APPEAR in all copies of the script! + ***************************************************************/ + +use TYPO3\CMS\Backend\Template\Components\ButtonBar; +use TYPO3\CMS\Backend\Template\Components\DocHeaderComponent; +use TYPO3\CMS\Backend\Utility\BackendUtility; +use TYPO3\CMS\Core\Database\DatabaseConnection; +use TYPO3\CMS\Core\Imaging\Icon; +use TYPO3\CMS\Core\Imaging\IconFactory; +use TYPO3\CMS\Core\Utility\GeneralUtility; +use TYPO3\CMS\Extbase\Mvc\Request; +use TYPO3\CMS\Extbase\Utility\LocalizationUtility; + +/** + * Backend Service class + */ +class BackendService { + /** + * Get all pages the be user has access to + * + * @return array + * @throws \InvalidArgumentException + */ + public static function getPages() { + /** @var $databaseConnection DatabaseConnection */ + $databaseConnection = $GLOBALS['TYPO3_DB']; + $rows = $databaseConnection->exec_SELECTgetRows( + '*', + 'pages', + 'deleted = 0 AND is_siteroot = 1' + ); + + return $rows; + } + + /** + * create buttons for the backend module header + * + * @param DocHeaderComponent $docHeaderComponent + * @param Request $request + * @throws \InvalidArgumentException + * @throws \UnexpectedValueException + */ + public static function makeButtons($docHeaderComponent, $request) { + /** @var ButtonBar $buttonBar */ + $buttonBar = $docHeaderComponent->getButtonBar(); + + /** @var IconFactory $iconFactory */ + $iconFactory = GeneralUtility::makeInstance(IconFactory::class); + + // Refresh + $refreshButton = $buttonBar->makeLinkButton() + ->setHref(GeneralUtility::getIndpEnv('REQUEST_URI')) + ->setTitle(LocalizationUtility::translate('LLL:EXT:lang/locallang_core.xlf:labels.reload', '')) + ->setIcon($iconFactory->getIcon('actions-refresh', Icon::SIZE_SMALL)); + $buttonBar->addButton($refreshButton, ButtonBar::BUTTON_POSITION_RIGHT); + + // shortcut button + $shortcutButton = $buttonBar->makeShortcutButton() + ->setModuleName($request->getPluginName()) + ->setGetVariables( + [ + 'id', + 'M' + ] + ) + ->setSetVariables([]); + + $buttonBar->addButton($shortcutButton, ButtonBar::BUTTON_POSITION_RIGHT); + $docHeaderComponent->getButtonBar(); + } +} diff --git a/Resources/Private/Language/de.locallang.xlf b/Resources/Private/Language/de.locallang.xlf index d887e360e8d57fe1439dded0998242b2ab23fcae..b7185689e75c42d6a425abc0ad46a7f7d013acbe 100644 --- a/Resources/Private/Language/de.locallang.xlf +++ b/Resources/Private/Language/de.locallang.xlf @@ -82,13 +82,17 @@ <target>Es wurde noch kein Template registriert.</target> </trans-unit> <trans-unit id="backend.no_queue_entries" approved="yes"> - <source>There are no Entries in the Mail Queue for this Template.</source> + <source>There are no entries in the mail queue for this template.</source> <target>Es gibt keine Einträge für dieses Template.</target> </trans-unit> <trans-unit id="backend.not_sent" approved="yes"> <source>Not Sent</source> <target>Nicht versendet</target> </trans-unit> + <trans-unit id="backend.notice.OtherPages" approved="yes"> + <source>Please select one of the following pages to view your Mail Templates:</source> + <target>Bitte wählen Sie eine der folgenden Seiten aus um Ihre E-Mail Templates zu bearbeiten:</target> + </trans-unit> <trans-unit id="backend.priority" approved="yes"> <source>Priority</source> <target>Priorität</target> diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf index 611a59c8955763e2c9d8cba6dea49af6a25a6867..0be092f81e92cd76b5ee02ea2fcb9b8686267cb2 100644 --- a/Resources/Private/Language/locallang.xlf +++ b/Resources/Private/Language/locallang.xlf @@ -69,6 +69,9 @@ <trans-unit id="backend.not_sent"> <source>Not Sent</source> </trans-unit> + <trans-unit id="backend.notice.OtherPages"> + <source>Please select one of the following pages to view your Mail Templates:</source> + </trans-unit> <trans-unit id="backend.priority"> <source>Priority</source> </trans-unit> diff --git a/Resources/Private/Language/locallang_db.xlf b/Resources/Private/Language/locallang_db.xlf index eae382c6d5754932f3d2cfd57fa98d7dc4dd2853..08e95fb6c9f6b7c41f697524b55c23234dd0eece 100644 --- a/Resources/Private/Language/locallang_db.xlf +++ b/Resources/Private/Language/locallang_db.xlf @@ -9,90 +9,90 @@ <authorEmail>torsten@sgalinski.de</authorEmail> </header> <body> - <trans-unit id="tx_sgmail_domain_model_mail"> - <source>Mail Queue Entry</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_mail.bcc_addresses"> - <source>BCC Addresses</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_mail.cc_addresses"> - <source>CC Addresses</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_mail.extension_key"> - <source>Extension Key</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_mail.from_address"> - <source>Sender email address</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_mail.from_name"> - <source>Sender Name</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_mail.mail_body"> - <source>Mail text</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_mail.mail_subject"> - <source>Mail subject</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_mail.priority"> - <source>Priority (Lowest = 0 | Low = 50 | Medium = 100 | High = 150 | Highest = 200)</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_mail.reply_to"> - <source>Reply To</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_mail.sending_time"> - <source>Sent at</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_mail.sent"> - <source>Sent</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_mail.template_name"> - <source>Template Name</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_mail.to_address"> - <source>Receiver email address</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_template"> - <source>Template</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_template.bcc"> - <source>BCC (Blind Carbon Copy Receiver)</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_template.bcc_addresses"> - <source>BCC-Adressen</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_template.cc"> - <source>CC (Carbon Copy Receiver)</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_template.cc_addresses"> - <source>CC-Adressen</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_template.content"> - <source>Content</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_template.extension_key"> - <source>Extension Key</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_template.fromMail"> - <source>Sender-E-Mail-Address</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_template.fromName"> - <source>Sender Name</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_template.from_name"> - <source>Sender Name</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_template.language"> - <source>Language</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_template.replyTo"> - <source>Reply To</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_template.subject"> - <source>Subject</source> - </trans-unit> - <trans-unit id="tx_sgmail_domain_model_template.template_name"> - <source>Template Name</source> - </trans-unit> + <trans-unit id="tx_sgmail_domain_model_mail"> + <source>Mail Queue Entry</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_mail.bcc_addresses"> + <source>BCC Addresses</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_mail.cc_addresses"> + <source>CC Addresses</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_mail.extension_key"> + <source>Extension Key</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_mail.from_address"> + <source>Sender email address</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_mail.from_name"> + <source>Sender Name</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_mail.mail_body"> + <source>Mail text</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_mail.mail_subject"> + <source>Mail subject</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_mail.priority"> + <source>Priority (Lowest = 0 | Low = 50 | Medium = 100 | High = 150 | Highest = 200)</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_mail.reply_to"> + <source>Reply To</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_mail.sending_time"> + <source>Sent at</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_mail.sent"> + <source>Sent</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_mail.template_name"> + <source>Template Name</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_mail.to_address"> + <source>Receiver email address</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_template"> + <source>Template</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_template.bcc"> + <source>BCC (Blind Carbon Copy Receiver)</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_template.bcc_addresses"> + <source>BCC-Adressen</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_template.cc"> + <source>CC (Carbon Copy Receiver)</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_template.cc_addresses"> + <source>CC-Adressen</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_template.content"> + <source>Content</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_template.extension_key"> + <source>Extension Key</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_template.fromMail"> + <source>Sender-E-Mail-Address</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_template.fromName"> + <source>Sender Name</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_template.from_name"> + <source>Sender Name</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_template.language"> + <source>Language</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_template.replyTo"> + <source>Reply To</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_template.subject"> + <source>Subject</source> + </trans-unit> + <trans-unit id="tx_sgmail_domain_model_template.template_name"> + <source>Template Name</source> + </trans-unit> </body> </file> </xliff> \ No newline at end of file diff --git a/Resources/Private/Layouts/Default.html b/Resources/Private/Layouts/Default.html index fa0a2b97789aabf116a17b67c0d4337477bcf949..95736c2d1922036cb02ca666e0885f91e1b695e2 100644 --- a/Resources/Private/Layouts/Default.html +++ b/Resources/Private/Layouts/Default.html @@ -6,104 +6,119 @@ <div class="module" data-module-id="" data-module-name=""> <div class="module-docheader t3js-module-docheader"> <div class="module-docheader-bar module-docheader-bar-navigation t3js-module-docheader-bar t3js-module-docheader-bar-navigation"> - <div class="module-docheader-bar-column-left"> - <f:be.menus.actionMenu> - <f:if condition="{mode} == 'queue'"> - <f:then> - <sgm:be.menus.actionMenuItem label="{f:translate(key:'backend.mail_queue')}" - controller="Queue" - action="index" - arguments="{selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}" - additionalAttributes="{selected: 'selected'}" /> - </f:then> - <f:else> - <sgm:be.menus.actionMenuItem label="{f:translate(key:'backend.mail_queue')}" - controller="Queue" - action="index" - arguments="{selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}" /> - </f:else> - </f:if> - <f:if condition="{mode} == 'editor'"> - <f:then> - <sgm:be.menus.actionMenuItem label="{f:translate(key:'backend.template_editor')}" - controller="Mail" - action="index" - arguments="{selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}" - additionalAttributes="{selected: 'selected'}" /> - </f:then> - <f:else> - <sgm:be.menus.actionMenuItem label="{f:translate(key:'backend.template_editor')}" - controller="Mail" - action="index" - arguments="{selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}" /> - </f:else> - </f:if> - </f:be.menus.actionMenu> - </div> - <div class="module-docheader-bar-column-right"> - <span class="typo3-docheader-pagePath"><f:translate key="LLL:EXT:lang/locallang_core.xlf:labels.path" />: <f:format.raw>{docHeader.metaInformation.path}</f:format.raw></span> - <f:format.raw>{docHeader.metaInformation.recordInformation}</f:format.raw> - </div> - </div> - <div class="module-docheader-bar module-docheader-bar-buttons t3js-module-docheader-bar t3js-module-docheader-bar-buttons"> - <div class="module-docheader-bar-column-left"> - <div class="btn-toolbar" role="toolbar" aria-label=""> - <f:if condition="{templates}"> + <f:if condition="{noPage}"> + <f:then></f:then> + <f:else> + <div class="module-docheader-bar-column-left"> <f:be.menus.actionMenu> - <f:for each="{templates}" as="template" key="extensionKey"> - <f:if condition="{mode} == 'queue'"> - <sgm:be.menus.actionMenuOptionGroup label="{extensionKey}"> - <f:for each="{template}" as="currentTemplate" key="templateKey"> - <sgm:extendedIf condition="{selectedTemplateKey} == {templateKey}" - and="{selectedExtensionKey} == {extensionKey}"> - <f:then> - <sgm:be.menus.actionMenuItem label="{currentTemplate.templateName}" - controller="Queue" - action="index" - arguments="{selectedTemplate: templateKey, selectedExtension: extensionKey}" - additionalAttributes="{selected: 'selected'}" /> - </f:then> - <f:else> - <sgm:be.menus.actionMenuItem label="{currentTemplate.templateName}" - controller="Queue" - action="index" - arguments="{selectedTemplate: templateKey, selectedExtension: extensionKey}" /> - </f:else> - </sgm:extendedIf> - </f:for> - </sgm:be.menus.actionMenuOptionGroup> - </f:if> + <f:if condition="{mode} == 'queue'"> + <f:then> + <sgm:be.menus.actionMenuItem label="{f:translate(key:'backend.mail_queue')}" + controller="Queue" + action="index" + arguments="{selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}" + additionalAttributes="{selected: 'selected'}" /> + </f:then> <f:else> - <f:if condition="{mode} == 'editor'"> - <sgm:be.menus.actionMenuOptionGroup label="{extensionKey}"> - <f:for each="{template}" as="currentTemplate" key="templateKey"> - <sgm:extendedIf condition="{selectedTemplateKey} == {templateKey}" - and="{selectedExtensionKey} == {extensionKey}"> - <f:then> - <sgm:be.menus.actionMenuItem label="{currentTemplate.templateName}" - controller="Mail" - action="index" - arguments="{selectedTemplate: templateKey, selectedExtension: extensionKey}" - additionalAttributes="{selected: 'selected'}" /> - </f:then> - <f:else> - <sgm:be.menus.actionMenuItem label="{currentTemplate.templateName}" - controller="Mail" - action="index" - arguments="{selectedTemplate: templateKey, selectedExtension: extensionKey}" /> - </f:else> - </sgm:extendedIf> - </f:for> - </sgm:be.menus.actionMenuOptionGroup> - </f:if> + <sgm:be.menus.actionMenuItem label="{f:translate(key:'backend.mail_queue')}" + controller="Queue" + action="index" + arguments="{selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}" /> </f:else> - </f:for> + </f:if> + <f:if condition="{mode} == 'editor'"> + <f:then> + <sgm:be.menus.actionMenuItem label="{f:translate(key:'backend.template_editor')}" + controller="Mail" + action="index" + arguments="{selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}" + additionalAttributes="{selected: 'selected'}" /> + </f:then> + <f:else> + <sgm:be.menus.actionMenuItem label="{f:translate(key:'backend.template_editor')}" + controller="Mail" + action="index" + arguments="{selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}" /> + </f:else> + </f:if> </f:be.menus.actionMenu> - </f:if> - </div> - </div> + </div> + <div class="module-docheader-bar-column-right"> + <span class="typo3-docheader-pagePath"><f:translate key="LLL:EXT:lang/locallang_core.xlf:labels.path" />: <f:format.raw>{docHeader.metaInformation.path}</f:format.raw></span> + <f:format.raw>{docHeader.metaInformation.recordInformation}</f:format.raw> + </div> + </f:else> + </f:if> + </div> + <div class="module-docheader-bar module-docheader-bar-buttons t3js-module-docheader-bar t3js-module-docheader-bar-buttons"> + <f:if condition="{noPage}"> + <f:then></f:then> + <f:else> + <div class="module-docheader-bar-column-left"> + <div class="btn-toolbar" role="toolbar" aria-label=""> + <f:if condition="{templates}"> + <f:be.menus.actionMenu> + <f:for each="{templates}" as="template" key="extensionKey"> + <f:if condition="{mode} == 'queue'"> + <sgm:be.menus.actionMenuOptionGroup label="{extensionKey}"> + <f:for each="{template}" as="currentTemplate" key="templateKey"> + <sgm:extendedIf condition="{selectedTemplateKey} == {templateKey}" + and="{selectedExtensionKey} == {extensionKey}"> + <f:then> + <sgm:be.menus.actionMenuItem label="{currentTemplate.templateName}" + controller="Queue" + action="index" + arguments="{selectedTemplate: templateKey, selectedExtension: extensionKey}" + additionalAttributes="{selected: 'selected'}" /> + </f:then> + <f:else> + <sgm:be.menus.actionMenuItem label="{currentTemplate.templateName}" + controller="Queue" + action="index" + arguments="{selectedTemplate: templateKey, selectedExtension: extensionKey}" /> + </f:else> + </sgm:extendedIf> + </f:for> + </sgm:be.menus.actionMenuOptionGroup> + </f:if> + <f:else> + <f:if condition="{mode} == 'editor'"> + <sgm:be.menus.actionMenuOptionGroup label="{extensionKey}"> + <f:for each="{template}" as="currentTemplate" key="templateKey"> + <sgm:extendedIf condition="{selectedTemplateKey} == {templateKey}" + and="{selectedExtensionKey} == {extensionKey}"> + <f:then> + <sgm:be.menus.actionMenuItem label="{currentTemplate.templateName}" + controller="Mail" + action="index" + arguments="{selectedTemplate: templateKey, selectedExtension: extensionKey}" + additionalAttributes="{selected: 'selected'}" /> + </f:then> + <f:else> + <sgm:be.menus.actionMenuItem label="{currentTemplate.templateName}" + controller="Mail" + action="index" + arguments="{selectedTemplate: templateKey, selectedExtension: extensionKey}" /> + </f:else> + </sgm:extendedIf> + </f:for> + </sgm:be.menus.actionMenuOptionGroup> + </f:if> + </f:else> + </f:for> + </f:be.menus.actionMenu> + </f:if> + </div> + </div> + </f:else> + </f:if> <div class="module-docheader-bar-column-right"> - <f:render partial="ButtonBar" arguments="{buttons:docHeader.buttons.right}" /> + <f:if condition="{noPage}"> + <f:then></f:then> + <f:else> + <f:render partial="ButtonBar" arguments="{buttons:docHeader.buttons.right}" /> + </f:else> + </f:if> </div> </div> </div> diff --git a/Resources/Private/Templates/Mail/Index.html b/Resources/Private/Templates/Mail/Index.html index 632dea45740968516f35cdf126a0efb4b52b0435..d12104993edae3605b45d8f8ff4ed693be1f74bc 100644 --- a/Resources/Private/Templates/Mail/Index.html +++ b/Resources/Private/Templates/Mail/Index.html @@ -6,205 +6,232 @@ </f:section> <f:section name="content"> <f:flashMessages renderMode="div" /> - <f:if condition="{selectedTemplate}"> + <f:if condition="{noPage}"> <f:then> - <div class="form-group col-md-6"> - <p>{templateDescription}</p> - </div> - <div class="form-group col-md-2 col-md-offset-3"> - <f:link.action class="reset-btn reset-all-btn btn-danger btn form-group" action="reset" arguments="{template: selectedTemplateKey, extensionKey: selectedTemplate.extension}">{f:translate(key:'backend.button_reset_all')}</f:link.action> - </div> - <div class="col-md-12"> - <table class="table table-hover"> - <thead> - <tr> - <th><f:translate key="backend.marker" /></th> - <th><f:translate key="backend.type" /></th> - <th><f:translate key="backend.value" /></th> - <th><f:translate key="backend.usage" /></th> - <th><f:translate key="backend.description" /></th> - </tr> - </thead> - <f:for each="{selectedTemplate.marker}" as="marker"> - <tr> - <td>{marker.marker}</td> - <td> - <f:if condition="{marker.type}"> - <f:then> - <f:translate key="{marker.type}">{marker.type}</f:translate> - </f:then> - <f:else> - <f:translate key="backend.marker.type.string" /> - </f:else> - </f:if> - </td> - <td> - <f:if condition="{sgm:isArray(value: '{marker.value}')}"> - <f:then> - <f:for each="{marker.value}" as="value" key="key"> - {key}: {value} - <br /> - </f:for> - </f:then> - <f:else> - <f:translate key="{marker.value}">{marker.value}</f:translate> - </f:else> - </f:if> - </td> - <td> - <f:if condition="{marker.usage}"> - <f:then> - {marker.usage} - </f:then> - <f:else> - <![CDATA[{]]>{marker.marker}<![CDATA[}]]> - </f:else> - </f:if> - </td> - <td> - <f:translate key="{marker.description}">{marker.description}</f:translate> - </td> - </tr> - </f:for> - </table> - </div> - <f:form class="col-md-12" method="post" controller="Mail" action="sendTestMail"> - <f:form.submit class="btn-primary btn form-group" value="{f:translate(key:'backend.send_test')}" /> - <f:form.textfield name="emailAddress" type="email" required="TRUE" class="email-input form-group" placeholder="{f:translate(key:'backend.email')}" /> - <f:form.hidden name="selectedLanguageLeft" value="{selectedLanguageLeft}"></f:form.hidden> - <f:form.hidden name="selectedLanguageRight" value="{selectedLanguageRight}"></f:form.hidden> - <f:form.hidden name="selectedTemplate" value="{selectedTemplateKey}"></f:form.hidden> - <f:form.hidden name="selectedExtensionKey" value="{selectedTemplate.extension}"></f:form.hidden> - <f:form.hidden name="selectedExtension" value="{selectedTemplate.extension}"></f:form.hidden> - <f:form.hidden name="selectedTemplateKey" value="{selectedTemplateKey}"></f:form.hidden> - </f:form> - <f:form method="post" controller="Mail" action="save"> - <div class="col-md-12 form-group"> - <f:form.submit class="btn-save-backend btn-success btn col-md-2 form-group" value="{f:translate(key:'backend.save')}" /> - </div> - <div class="col-md-6"> - <div class="form-group"> - <label class="">{f:translate(key:'backend.select_language')}</label> - <f:be.menus.actionMenu> - <f:for each="{languages}" as="language"> - <sgm:extendedIf condition="{language} == {selectedLanguageLeft}"> - <f:then> - <sgm:be.menus.actionMenuItem label="{language}" - controller="Mail" - action="index" - arguments="{selectedLanguageLeft: language, selectedLanguageRight: selectedLanguageRight, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}" - additionalAttributes="{selected: 'selected'}" /> - </f:then> - <f:else> - <sgm:be.menus.actionMenuItem label="{language}" - controller="Mail" - action="index" - arguments="{selectedLanguageLeft: language, selectedLanguageRight: selectedLanguageRight, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}" /> - </f:else> - </sgm:extendedIf> - </f:for> - </f:be.menus.actionMenu> - </div> - <div class="form-group"> - <f:link.action class="reset-btn btn-danger btn form-group" action="reset" arguments="{template: selectedTemplateKey, language: selectedLanguageLeft, extensionKey: selectedTemplate.extension}">{f:translate(key:'backend.button_reset')}</f:link.action> - </div> - <div class="form-group"> - <label for="fromNameLeft" class="">{f:translate(key:'backend.fromName')}</label> - <f:form.textfield type="text" class="form-control" value="{fromNameLeft}" name="fromNameLeft"></f:form.textfield> - </div> - <div class="form-group"> - <label for="fromMailLeft" class="">{f:translate(key:'backend.fromMail')}</label> - <f:form.textfield type="email" class="form-control" value="{fromMailLeft}" name="fromMailLeft"></f:form.textfield> - </div> - <div class="form-group"> - <label for="ccLeft" class="">{f:translate(key:'backend.cc')}</label> - <f:form.textfield type="text" class="form-control" value="{ccLeft}" name="ccLeft"></f:form.textfield> - </div> - <div class="form-group"> - <label for="bccLeft" class="">{f:translate(key:'backend.bcc')}</label> - <f:form.textfield type="text" class="form-control" value="{bccLeft}" name="bccLeft"></f:form.textfield> + <f:if condition="{pages}"> + <div class="panel panel-default recordlist"> + <div class="table-fit"> + <table data-table="pages" class="table table-striped table-hover"> + <tbody> + <f:for each="{pages}" as="page"> + <tr data-uid="{page.uid}"> + <td nowrap="nowrap" class="col-title"> + <a href="#" onclick="sgMailGoToPage({page.uid}); return false;"> + <sgm:backend.icon table="pages" row="{page}" clickMenu="0" /> + {page.title} + </a> + </td> + </tr> + </f:for> + </tbody> + </table> </div> - <div class="form-group"> - <label for="replyToLeft" class="">{f:translate(key:'backend.replyTo')}</label> - <f:form.textfield type="text" class="form-control" value="{replyToLeft}" name="replyToLeft"></f:form.textfield> - </div> - <div class="form-group"> - <label for="subjectLeft" class="">{f:translate(key:'backend.subject')}</label> - <f:form.textfield type="text" class="form-control" value="{subjectLeft}" name="subjectLeft"></f:form.textfield> - </div> - <label for="contentLeft" class="">{f:translate(key:'backend.content')}</label> - <f:form.textarea class="form-control" rows="25" name="contentLeft" value="{contentLeft}"></f:form.textarea> - <f:form.hidden name="selectedLanguageLeft" value="{selectedLanguageLeft}"></f:form.hidden> - <f:form.hidden name="selectedLanguageRight" value="{selectedLanguageRight}"></f:form.hidden> - <f:form.hidden name="selectedTemplate" value="{selectedTemplateKey}"></f:form.hidden> - <f:form.hidden name="selectedExtensionKey" value="{selectedTemplate.extension}"></f:form.hidden> - <f:form.hidden name="selectedExtension" value="{selectedTemplate.extension}"></f:form.hidden> - <f:form.hidden name="selectedTemplateKey" value="{selectedTemplateKey}"></f:form.hidden> </div> - - <div class="col-md-6"> - <div class="form-group"> - <label class="">{f:translate(key:'backend.select_language')}</label> - <f:be.menus.actionMenu> - <f:for each="{languages}" as="language"> - <sgm:extendedIf condition="{language} == {selectedLanguageRight}"> - <f:then> - <sgm:be.menus.actionMenuItem label="{language}" - controller="Mail" - action="index" - arguments="{selectedLanguageLeft: selectedLanguageLeft, selectedLanguageRight: language, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}" - additionalAttributes="{selected: 'selected'}" /> - </f:then> - <f:else> - <sgm:be.menus.actionMenuItem label="{language}" - controller="Mail" - action="index" - arguments="{selectedLanguageLeft: selectedLanguageLeft, selectedLanguageRight: language, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}" /> - </f:else> - </sgm:extendedIf> - </f:for> - </f:be.menus.actionMenu> - </div> - <div class="form-group"> - <f:link.action class="reset-btn btn-danger btn form-group" action="reset" arguments="{template: selectedTemplateKey, language: selectedLanguageRight, extensionKey: selectedTemplate.extension}">{f:translate(key:'backend.button_reset')}</f:link.action> - </div> - <div class="form-group"> - <label for="fromNameRight" class="">{f:translate(key:'backend.fromName')}</label> - <f:form.textfield type="text" class="form-control" value="{fromNameRight}" name="fromNameRight"></f:form.textfield> - </div> - <div class="form-group"> - <label for="fromMailRight" class="">{f:translate(key:'backend.fromMail')}</label> - <f:form.textfield type="email" class="form-control" value="{fromMailRight}" name="fromMailRight"></f:form.textfield> - </div> - <div class="form-group"> - <label for="ccRight" class="">{f:translate(key:'backend.cc')}</label> - <f:form.textfield type="text" class="form-control" value="{ccRight}" name="ccRight"></f:form.textfield> - </div> - <div class="form-group"> - <label for="bccRight" class="">{f:translate(key:'backend.bcc')}</label> - <f:form.textfield type="text" class="form-control" value="{bccRight}" name="bccRight"></f:form.textfield> - </div> - <div class="form-group"> - <label for="replyToRight" class="">{f:translate(key:'backend.replyTo')}</label> - <f:form.textfield type="text" class="form-control" value="{replyToRight}" name="replyToRight"></f:form.textfield> - </div> - <div class="form-group"> - <label for="subjectRight" class="">{f:translate(key:'backend.subject')}</label> - <f:form.textfield type="text" class=" form-control" value="{subjectRight}" name="subjectRight"></f:form.textfield> - </div> - <label for="contentRight" class="">{f:translate(key:'backend.content')}</label> - <f:form.textarea class="form-control" rows="25" name="contentRight" value="{contentRight}"></f:form.textarea> - </div> - <div class="col-md-2"> - <div class="form-group"> - <f:form.submit class="btn-save-backend btn-success btn form-control" value="{f:translate(key:'backend.save')}" /> - </div> - </div> - </f:form> + </f:if> </f:then> + <f:else> - <f:render partial="Mail/Empty" /> - </f:else> + <f:if condition="{selectedTemplate}"> + <f:then> + <div class="form-group col-md-6"> + <p>{templateDescription}</p> + </div> + <div class="form-group col-md-2 col-md-offset-3"> + <f:link.action class="reset-btn reset-all-btn btn-danger btn form-group" action="reset" arguments="{template: selectedTemplateKey, extensionKey: selectedTemplate.extension}">{f:translate(key:'backend.button_reset_all')}</f:link.action> + </div> + <div class="col-md-12"> + <table class="table table-hover"> + <thead> + <tr> + <th><f:translate key="backend.marker" /></th> + <th><f:translate key="backend.type" /></th> + <th><f:translate key="backend.value" /></th> + <th><f:translate key="backend.usage" /></th> + <th><f:translate key="backend.description" /></th> + </tr> + </thead> + <f:for each="{selectedTemplate.marker}" as="marker"> + <tr> + <td>{marker.marker}</td> + <td> + <f:if condition="{marker.type}"> + <f:then> + <f:translate key="{marker.type}">{marker.type}</f:translate> + </f:then> + <f:else> + <f:translate key="backend.marker.type.string" /> + </f:else> + </f:if> + </td> + <td> + <f:if condition="{sgm:isArray(value: '{marker.value}')}"> + <f:then> + <f:for each="{marker.value}" as="value" key="key"> + {key}: {value} + <br /> + </f:for> + </f:then> + <f:else> + <f:translate key="{marker.value}">{marker.value}</f:translate> + </f:else> + </f:if> + </td> + <td> + <f:if condition="{marker.usage}"> + <f:then> + {marker.usage} + </f:then> + <f:else> + <![CDATA[{]]>{marker.marker}<![CDATA[}]]> + </f:else> + </f:if> + </td> + <td> + <f:translate key="{marker.description}">{marker.description}</f:translate> + </td> + </tr> + </f:for> + </table> + </div> + <f:form class="col-md-12" method="post" controller="Mail" action="sendTestMail"> + <f:form.submit class="btn-primary btn form-group" value="{f:translate(key:'backend.send_test')}" /> + <f:form.textfield name="emailAddress" type="email" required="TRUE" class="email-input form-group" placeholder="{f:translate(key:'backend.email')}" /> + <f:form.hidden name="selectedLanguageLeft" value="{selectedLanguageLeft}"></f:form.hidden> + <f:form.hidden name="selectedLanguageRight" value="{selectedLanguageRight}"></f:form.hidden> + <f:form.hidden name="selectedTemplate" value="{selectedTemplateKey}"></f:form.hidden> + <f:form.hidden name="selectedExtensionKey" value="{selectedTemplate.extension}"></f:form.hidden> + <f:form.hidden name="selectedExtension" value="{selectedTemplate.extension}"></f:form.hidden> + <f:form.hidden name="selectedTemplateKey" value="{selectedTemplateKey}"></f:form.hidden> + </f:form> + <f:form method="post" controller="Mail" action="save"> + <div class="col-md-12 form-group"> + <f:form.submit class="btn-save-backend btn-success btn col-md-2 form-group" value="{f:translate(key:'backend.save')}" /> + </div> + <div class="col-md-6"> + <div class="form-group"> + <label class="">{f:translate(key:'backend.select_language')}</label> + <f:be.menus.actionMenu> + <f:for each="{languages}" as="language"> + <sgm:extendedIf condition="{language} == {selectedLanguageLeft}"> + <f:then> + <sgm:be.menus.actionMenuItem label="{language}" + controller="Mail" + action="index" + arguments="{selectedLanguageLeft: language, selectedLanguageRight: selectedLanguageRight, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}" + additionalAttributes="{selected: 'selected'}" /> + </f:then> + <f:else> + <sgm:be.menus.actionMenuItem label="{language}" + controller="Mail" + action="index" + arguments="{selectedLanguageLeft: language, selectedLanguageRight: selectedLanguageRight, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}" /> + </f:else> + </sgm:extendedIf> + </f:for> + </f:be.menus.actionMenu> + </div> + <div class="form-group"> + <f:link.action class="reset-btn btn-danger btn form-group" action="reset" arguments="{template: selectedTemplateKey, language: selectedLanguageLeft, extensionKey: selectedTemplate.extension}">{f:translate(key:'backend.button_reset')}</f:link.action> + </div> + <div class="form-group"> + <label for="fromNameLeft" class="">{f:translate(key:'backend.fromName')}</label> + <f:form.textfield type="text" class="form-control" value="{fromNameLeft}" name="fromNameLeft"></f:form.textfield> + </div> + <div class="form-group"> + <label for="fromMailLeft" class="">{f:translate(key:'backend.fromMail')}</label> + <f:form.textfield type="email" class="form-control" value="{fromMailLeft}" name="fromMailLeft"></f:form.textfield> + </div> + <div class="form-group"> + <label for="ccLeft" class="">{f:translate(key:'backend.cc')}</label> + <f:form.textfield type="text" class="form-control" value="{ccLeft}" name="ccLeft"></f:form.textfield> + </div> + <div class="form-group"> + <label for="bccLeft" class="">{f:translate(key:'backend.bcc')}</label> + <f:form.textfield type="text" class="form-control" value="{bccLeft}" name="bccLeft"></f:form.textfield> + </div> + <div class="form-group"> + <label for="replyToLeft" class="">{f:translate(key:'backend.replyTo')}</label> + <f:form.textfield type="text" class="form-control" value="{replyToLeft}" name="replyToLeft"></f:form.textfield> + </div> + <div class="form-group"> + <label for="subjectLeft" class="">{f:translate(key:'backend.subject')}</label> + <f:form.textfield type="text" class="form-control" value="{subjectLeft}" name="subjectLeft"></f:form.textfield> + </div> + <label for="contentLeft" class="">{f:translate(key:'backend.content')}</label> + <f:form.textarea class="form-control" rows="25" name="contentLeft" value="{contentLeft}"></f:form.textarea> + <f:form.hidden name="selectedLanguageLeft" value="{selectedLanguageLeft}"></f:form.hidden> + <f:form.hidden name="selectedLanguageRight" value="{selectedLanguageRight}"></f:form.hidden> + <f:form.hidden name="selectedTemplate" value="{selectedTemplateKey}"></f:form.hidden> + <f:form.hidden name="selectedExtensionKey" value="{selectedTemplate.extension}"></f:form.hidden> + <f:form.hidden name="selectedExtension" value="{selectedTemplate.extension}"></f:form.hidden> + <f:form.hidden name="selectedTemplateKey" value="{selectedTemplateKey}"></f:form.hidden> + </div> + + <div class="col-md-6"> + <div class="form-group"> + <label class="">{f:translate(key:'backend.select_language')}</label> + <f:be.menus.actionMenu> + <f:for each="{languages}" as="language"> + <sgm:extendedIf condition="{language} == {selectedLanguageRight}"> + <f:then> + <sgm:be.menus.actionMenuItem label="{language}" + controller="Mail" + action="index" + arguments="{selectedLanguageLeft: selectedLanguageLeft, selectedLanguageRight: language, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}" + additionalAttributes="{selected: 'selected'}" /> + </f:then> + <f:else> + <sgm:be.menus.actionMenuItem label="{language}" + controller="Mail" + action="index" + arguments="{selectedLanguageLeft: selectedLanguageLeft, selectedLanguageRight: language, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}" /> + </f:else> + </sgm:extendedIf> + </f:for> + </f:be.menus.actionMenu> + </div> + <div class="form-group"> + <f:link.action class="reset-btn btn-danger btn form-group" action="reset" arguments="{template: selectedTemplateKey, language: selectedLanguageRight, extensionKey: selectedTemplate.extension}">{f:translate(key:'backend.button_reset')}</f:link.action> + </div> + <div class="form-group"> + <label for="fromNameRight" class="">{f:translate(key:'backend.fromName')}</label> + <f:form.textfield type="text" class="form-control" value="{fromNameRight}" name="fromNameRight"></f:form.textfield> + </div> + <div class="form-group"> + <label for="fromMailRight" class="">{f:translate(key:'backend.fromMail')}</label> + <f:form.textfield type="email" class="form-control" value="{fromMailRight}" name="fromMailRight"></f:form.textfield> + </div> + <div class="form-group"> + <label for="ccRight" class="">{f:translate(key:'backend.cc')}</label> + <f:form.textfield type="text" class="form-control" value="{ccRight}" name="ccRight"></f:form.textfield> + </div> + <div class="form-group"> + <label for="bccRight" class="">{f:translate(key:'backend.bcc')}</label> + <f:form.textfield type="text" class="form-control" value="{bccRight}" name="bccRight"></f:form.textfield> + </div> + <div class="form-group"> + <label for="replyToRight" class="">{f:translate(key:'backend.replyTo')}</label> + <f:form.textfield type="text" class="form-control" value="{replyToRight}" name="replyToRight"></f:form.textfield> + </div> + <div class="form-group"> + <label for="subjectRight" class="">{f:translate(key:'backend.subject')}</label> + <f:form.textfield type="text" class=" form-control" value="{subjectRight}" name="subjectRight"></f:form.textfield> + </div> + <label for="contentRight" class="">{f:translate(key:'backend.content')}</label> + <f:form.textarea class="form-control" rows="25" name="contentRight" value="{contentRight}"></f:form.textarea> + </div> + <div class="col-md-2"> + <div class="form-group"> + <f:form.submit class="btn-save-backend btn-success btn form-control" value="{f:translate(key:'backend.save')}" /> + </div> + </div> + </f:form> + </f:then> + <f:else> + <f:render partial="Mail/Empty" /> + </f:else> + </f:if> + </f:else> </f:if> </f:section> diff --git a/Resources/Public/Scripts/Backend.js b/Resources/Public/Scripts/Backend.js index 74effae1ef9f105d37e9e140e7ac9ed86e7e872e..3c939d5fcbd59a217a7d2fd8060c36c36432f018 100644 --- a/Resources/Public/Scripts/Backend.js +++ b/Resources/Public/Scripts/Backend.js @@ -64,3 +64,26 @@ function setHighlight(id) { // top.content.nav_frame.refresh_nav(); } } + +/** + * Switches to the spefied page in the BE + * + * @param {number} uid + */ +function sgMailGoToPage(uid) { + top.nav.invokePageId(uid,gotToPageCallback); +} + +/** + * Callback for page selection in the pagetree + * + * @param {number} uid + */ +function gotToPageCallback(path){ + var callback = top.Ext.createDelegate(top.nav.mainTree.selectPath, top.nav.mainTree); + callback.apply(this, arguments); + var node = top.nav.getSelected(); + if (node) { + top.TYPO3.Components.PageTree.Actions.singleClick(node, top.TYPO3.Components.PageTree.Tree); + } +} diff --git a/composer.json b/composer.json index 1d5d816666f5a11a14cc57777d1a3fa7304f0611..c9701a834d6981b4111462a2ca03e0c0dd711325 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,7 @@ "license": [ "GPL-2.0+" ], - "version": "2.0.7", + "version": "2.0.9", "repositories": [ { "type": "composer", diff --git a/ext_emconf.php b/ext_emconf.php index 026c4058a7116d9df4570214cfd2f8c22110cf49..89bba87285d29957a08eac4d852510d95ddba33c 100644 --- a/ext_emconf.php +++ b/ext_emconf.php @@ -8,7 +8,7 @@ $EM_CONF['sg_mail'] = array ( 'title' => 'Mail Templates', 'description' => 'Mail Templates', 'category' => 'module', - 'version' => '2.0.7', + 'version' => '2.0.9', 'state' => 'stable', 'uploadfolder' => false, 'createDirs' => '', diff --git a/ext_tables.php b/ext_tables.php index ec561a982680ab6615821e2c37d90d6aed3c32b1..afd1c9f4419d2bc76b978032602151632390646d 100644 --- a/ext_tables.php +++ b/ext_tables.php @@ -14,7 +14,7 @@ if (!defined('TYPO3_MODE')) { 'Queue' => 'index, sendMail', ], [ - 'access' => 'admin,user,group', + 'access' => 'user,group', 'icon' => 'EXT:sg_mail/Resources/Public/Icons/ModuleIcon.svg', 'labels' => 'LLL:EXT:sg_mail/Resources/Private/Language/locallang.xlf', ]