Skip to content
Snippets Groups Projects
Commit 38c22f73 authored by Paul Ilea's avatar Paul Ilea
Browse files

Merge branch 'master' into typo3v8compatibility

parents 5a6d5b56 7f5a3088
No related branches found
No related tags found
No related merge requests found
......@@ -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());
}
}
/**
......
<?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();
}
}
......@@ -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>
......
......@@ -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>
......
......@@ -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
......@@ -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>
......
......@@ -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>
......@@ -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);
}
}
......@@ -6,7 +6,7 @@
"license": [
"GPL-2.0+"
],
"version": "2.0.7",
"version": "2.0.9",
"repositories": [
{
"type": "composer",
......
......@@ -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' => '',
......
......@@ -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',
]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment