Skip to content
Snippets Groups Projects
Commit ad2ae457 authored by Torsten Oppermann's avatar Torsten Oppermann
Browse files

Merge branch 'new_version_4_0' into new_version_4_1

parents 429176a5 b5f98bad
No related branches found
No related tags found
1 merge request!3New version 4 1
...@@ -152,6 +152,7 @@ class MailController extends ActionController { ...@@ -152,6 +152,7 @@ class MailController extends ActionController {
$colspace = 12; $colspace = 12;
} }
$this->view->assign('users', BackendService::getFrontendUsers());
$this->view->assign('colspace', $colspace); $this->view->assign('colspace', $colspace);
$this->view->assign('languageTemplates', $templates); $this->view->assign('languageTemplates', $templates);
$this->view->assign('languageLabels', BackendService::getLanguageLabels($languages)); $this->view->assign('languageLabels', BackendService::getLanguageLabels($languages));
......
<?php <?php
namespace SGalinski\SgMail\Controller; namespace SGalinski\SgMail\Controller;
/*************************************************************** /***************************************************************
...@@ -76,7 +77,7 @@ class QueueController extends ActionController { ...@@ -76,7 +77,7 @@ class QueueController extends ActionController {
$filters['filterTemplate'] = $extensionTemplateFilterArray[1]; $filters['filterTemplate'] = $extensionTemplateFilterArray[1];
} }
$this->view->assign('selectedTemplateFilter', $filters['filterTemplate'] ); $this->view->assign('selectedTemplateFilter', $filters['filterTemplate']);
$this->view->assign('selectedExtensionFilter', $filters['filterExtension']); $this->view->assign('selectedExtensionFilter', $filters['filterExtension']);
$registerArray = MailTemplateService::getRegisterArray(); $registerArray = MailTemplateService::getRegisterArray();
...@@ -120,8 +121,12 @@ class QueueController extends ActionController { ...@@ -120,8 +121,12 @@ class QueueController extends ActionController {
), ),
BackendService::CC_FILTER_OPTION => LocalizationUtility::translate('backend.filter.cc', 'SgMail'), BackendService::CC_FILTER_OPTION => LocalizationUtility::translate('backend.filter.cc', 'SgMail'),
BackendService::BCC_FILTER_OPTION => LocalizationUtility::translate('backend.filter.bcc', 'SgMail'), BackendService::BCC_FILTER_OPTION => LocalizationUtility::translate('backend.filter.bcc', 'SgMail'),
BackendService::FROM_NAME_FILTER_OPTION => LocalizationUtility::translate('backend.filter.from_name', 'SgMail'), BackendService::FROM_NAME_FILTER_OPTION => LocalizationUtility::translate(
BackendService::REPLY_TO_NAME_FILTER_OPTION => LocalizationUtility::translate('backend.filter.reply_to', 'SgMail'), 'backend.filter.from_name', 'SgMail'
),
BackendService::REPLY_TO_NAME_FILTER_OPTION => LocalizationUtility::translate(
'backend.filter.reply_to', 'SgMail'
),
] ]
); );
} else { } else {
...@@ -158,4 +163,45 @@ class QueueController extends ActionController { ...@@ -158,4 +163,45 @@ class QueueController extends ActionController {
$arguments = $this->request->getArguments(); $arguments = $this->request->getArguments();
$this->redirect('index', NULL, NULL, $arguments); $this->redirect('index', NULL, NULL, $arguments);
} }
/**
* Download the queue data as a csv file, respecting the filter settings
*
* @param array $filters
* @throws \TYPO3\CMS\Extbase\Mvc\Exception\StopActionException
* @throws \TYPO3\CMS\Extbase\Mvc\Exception\UnsupportedRequestTypeException
* @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException
*/
public function exportAction(array $filters = []) {
$pageUid = (int) GeneralUtility::_GP('id');
$queue = $this->mailRepository->findAllEntries($pageUid, 0, $filters);
$exportString = 'Subject;Body;To;From;From Name;CC;BCC;Reply To;Extension;Template;Language' . LF;
foreach ($queue as $item) {
$exportString .= $item['mail_subject'] . ',';
if (strpos($item['mail_body'], ',') !== FALSE || strpos($item['mail_body'], '"') !== FALSE || strpos(
$item['mail_body'], "\n"
) !== FALSE) {
$item['mail_body'] = '"' . str_replace('"', '""', $item['mail_body']) . '"';
}
$exportString .= trim(preg_replace('/\s\s+/', ' ', strip_tags($item['mail_body']) . ';'));
$exportString .= $item['to_address'] . ';';
$exportString .= $item['from_address'] . ';';
$exportString .= $item['from_name'] . ';';
$exportString .= $item['cc_addresses'] . ';';
$exportString .= $item['bcc_addresses'] . ';';
$exportString .= $item['reply_to'] . ';';
$exportString .= $item['extension_key'] . ';';
$exportString .= $item['template_name'] . ';';
$exportString .= $item['language'] . LF;
}
header('Content-Type: application/force-download');
header('Content-Transfer-Encoding: Binary');
header('Content-Disposition: attachment; filename="export.csv"');
header('Content-Length: ' . strlen($exportString));
echo $exportString;
exit(0);
}
} }
...@@ -35,6 +35,8 @@ use TYPO3\CMS\Core\Database\DatabaseConnection; ...@@ -35,6 +35,8 @@ use TYPO3\CMS\Core\Database\DatabaseConnection;
use TYPO3\CMS\Core\Imaging\Icon; use TYPO3\CMS\Core\Imaging\Icon;
use TYPO3\CMS\Core\Imaging\IconFactory; use TYPO3\CMS\Core\Imaging\IconFactory;
use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Domain\Model\FrontendUser;
use TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository;
use TYPO3\CMS\Extbase\Mvc\Request; use TYPO3\CMS\Extbase\Mvc\Request;
use TYPO3\CMS\Extbase\Object\ObjectManager; use TYPO3\CMS\Extbase\Object\ObjectManager;
use TYPO3\CMS\Extbase\Persistence\QueryResultInterface; use TYPO3\CMS\Extbase\Persistence\QueryResultInterface;
...@@ -299,4 +301,18 @@ class BackendService { ...@@ -299,4 +301,18 @@ class BackendService {
return $template; return $template;
} }
/**
* get an array of all frontend users
*
* @return array
* @throws \InvalidArgumentException
*/
public static function getFrontendUsers() {
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
/** @var FrontendUserRepository $frontendUserRepository */
$frontendUserRepository = $objectManager->get(FrontendUserRepository::class);
return $frontendUserRepository->findAll()->toArray();
}
} }
...@@ -17,6 +17,10 @@ ...@@ -17,6 +17,10 @@
<source>BCC (Blind Carbon Copy Receiver, comma separated)</source> <source>BCC (Blind Carbon Copy Receiver, comma separated)</source>
<target>BCC (Blindempfänger, komma-separiert)</target> <target>BCC (Blindempfänger, komma-separiert)</target>
</trans-unit> </trans-unit>
<trans-unit id="backend.button_download_csv" approved="yes">
<source>Download csv</source>
<target>CSV herunterladen</target>
</trans-unit>
<trans-unit id="backend.button_reset" approved="yes"> <trans-unit id="backend.button_reset" approved="yes">
<source>Reset Template</source> <source>Reset Template</source>
<target>Zurücksetzen</target> <target>Zurücksetzen</target>
...@@ -145,6 +149,10 @@ ...@@ -145,6 +149,10 @@
<source>Sender Name</source> <source>Sender Name</source>
<target>Absender-Name</target> <target>Absender-Name</target>
</trans-unit> </trans-unit>
<trans-unit id="backend.fromUser" approved="yes">
<source>From User (overwrites other from fields):</source>
<target>Absender Benutzer (hat Vorrang falls gesetzt):</target>
</trans-unit>
<trans-unit id="backend.language_default" approved="yes"> <trans-unit id="backend.language_default" approved="yes">
<source>Default</source> <source>Default</source>
<target>Standard</target> <target>Standard</target>
......
...@@ -15,6 +15,9 @@ ...@@ -15,6 +15,9 @@
<trans-unit id="backend.bcc"> <trans-unit id="backend.bcc">
<source>BCC (Blind Carbon Copy Receiver, comma separated)</source> <source>BCC (Blind Carbon Copy Receiver, comma separated)</source>
</trans-unit> </trans-unit>
<trans-unit id="backend.button_download_csv">
<source>Download csv</source>
</trans-unit>
<trans-unit id="backend.button_reset"> <trans-unit id="backend.button_reset">
<source>Reset Template</source> <source>Reset Template</source>
</trans-unit> </trans-unit>
...@@ -111,6 +114,9 @@ ...@@ -111,6 +114,9 @@
<trans-unit id="backend.fromName"> <trans-unit id="backend.fromName">
<source>Sender Name</source> <source>Sender Name</source>
</trans-unit> </trans-unit>
<trans-unit id="backend.fromUser">
<source>From User (overwrites other from fields):</source>
</trans-unit>
<trans-unit id="backend.language_default"> <trans-unit id="backend.language_default">
<source>Default</source> <source>Default</source>
</trans-unit> </trans-unit>
......
...@@ -113,13 +113,17 @@ ...@@ -113,13 +113,17 @@
</label> </label>
</div> </div>
<div class="form-group row"> <div class="form-group row">
<div class="col-md-6"> <div class="col-md-4">
<f:form.button class="btn btn-success form-group col-xs-12 col-md-12" type="submit"> <f:form.button class="btn btn-success form-group col-xs-12 col-md-12" type="submit">
<f:translate key="backend.filter.filter" /> <f:translate key="backend.filter.filter" />
</f:form.button> </f:form.button>
</div> </div>
<div class="col-md-4">
<div class="col-md-6"> <f:form.button class="btn btn-info form-group col-xs-12 col-md-12" type="submit" name="action" value="export">
<f:translate key="backend.button_download_csv" />
</f:form.button>
</div>
<div class="col-md-4">
<f:form.button id="filter-reset-btn" class="btn btn-danger form-group col-xs-12 col-md-12" type="reset"> <f:form.button id="filter-reset-btn" class="btn btn-danger form-group col-xs-12 col-md-12" type="reset">
<f:translate key="backend.button_reset_filter" /> <f:translate key="backend.button_reset_filter" />
</f:form.button> </f:form.button>
......
...@@ -94,8 +94,11 @@ ...@@ -94,8 +94,11 @@
</f:if> </f:if>
</f:for> </f:for>
<div class="col-md-12"> <div class="col-md-12">
<div class="row form-group">
<label for="parameters[templates][{key}][fromUser]" class="">{f:translate(key:'backend.fromUser')}</label>
<f:form.select class="form-control" property="fromName" options="{users}" name="parameters[templates][{key}][fromUser]"/>
</div>
<div class="row form-group"> <div class="row form-group">
<label for="parameters[templates][{key}][fromName]" class="">{f:translate(key:'backend.fromName')}</label> <label for="parameters[templates][{key}][fromName]" class="">{f:translate(key:'backend.fromName')}</label>
<f:form.textfield type="text" class="form-control" value="{languageTemplate.fromName}" name="parameters[templates][{key}][fromName]" /> <f:form.textfield type="text" class="form-control" value="{languageTemplate.fromName}" name="parameters[templates][{key}][fromName]" />
......
...@@ -11,7 +11,7 @@ if (!defined('TYPO3_MODE')) { ...@@ -11,7 +11,7 @@ if (!defined('TYPO3_MODE')) {
'', '',
[ [
'Mail' => 'index, sendTestMail, empty, reset', 'Mail' => 'index, sendTestMail, empty, reset',
'Queue' => 'index, sendMail', 'Queue' => 'index, sendMail, export',
], ],
[ [
'access' => 'user,group', 'access' => 'user,group',
......
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