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 {
$colspace = 12;
}
$this->view->assign('users', BackendService::getFrontendUsers());
$this->view->assign('colspace', $colspace);
$this->view->assign('languageTemplates', $templates);
$this->view->assign('languageLabels', BackendService::getLanguageLabels($languages));
......
<?php
namespace SGalinski\SgMail\Controller;
/***************************************************************
......@@ -76,7 +77,7 @@ class QueueController extends ActionController {
$filters['filterTemplate'] = $extensionTemplateFilterArray[1];
}
$this->view->assign('selectedTemplateFilter', $filters['filterTemplate'] );
$this->view->assign('selectedTemplateFilter', $filters['filterTemplate']);
$this->view->assign('selectedExtensionFilter', $filters['filterExtension']);
$registerArray = MailTemplateService::getRegisterArray();
......@@ -120,8 +121,12 @@ class QueueController extends ActionController {
),
BackendService::CC_FILTER_OPTION => LocalizationUtility::translate('backend.filter.cc', 'SgMail'),
BackendService::BCC_FILTER_OPTION => LocalizationUtility::translate('backend.filter.bcc', 'SgMail'),
BackendService::FROM_NAME_FILTER_OPTION => LocalizationUtility::translate('backend.filter.from_name', 'SgMail'),
BackendService::REPLY_TO_NAME_FILTER_OPTION => LocalizationUtility::translate('backend.filter.reply_to', 'SgMail'),
BackendService::FROM_NAME_FILTER_OPTION => LocalizationUtility::translate(
'backend.filter.from_name', 'SgMail'
),
BackendService::REPLY_TO_NAME_FILTER_OPTION => LocalizationUtility::translate(
'backend.filter.reply_to', 'SgMail'
),
]
);
} else {
......@@ -158,4 +163,45 @@ class QueueController extends ActionController {
$arguments = $this->request->getArguments();
$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;
use TYPO3\CMS\Core\Imaging\Icon;
use TYPO3\CMS\Core\Imaging\IconFactory;
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\Object\ObjectManager;
use TYPO3\CMS\Extbase\Persistence\QueryResultInterface;
......@@ -299,4 +301,18 @@ class BackendService {
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 @@
<source>BCC (Blind Carbon Copy Receiver, comma separated)</source>
<target>BCC (Blindempfänger, komma-separiert)</target>
</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">
<source>Reset Template</source>
<target>Zurücksetzen</target>
......@@ -145,6 +149,10 @@
<source>Sender Name</source>
<target>Absender-Name</target>
</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">
<source>Default</source>
<target>Standard</target>
......
......@@ -15,6 +15,9 @@
<trans-unit id="backend.bcc">
<source>BCC (Blind Carbon Copy Receiver, comma separated)</source>
</trans-unit>
<trans-unit id="backend.button_download_csv">
<source>Download csv</source>
</trans-unit>
<trans-unit id="backend.button_reset">
<source>Reset Template</source>
</trans-unit>
......@@ -111,6 +114,9 @@
<trans-unit id="backend.fromName">
<source>Sender Name</source>
</trans-unit>
<trans-unit id="backend.fromUser">
<source>From User (overwrites other from fields):</source>
</trans-unit>
<trans-unit id="backend.language_default">
<source>Default</source>
</trans-unit>
......
......@@ -113,13 +113,17 @@
</label>
</div>
<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:translate key="backend.filter.filter" />
</f:form.button>
</div>
<div class="col-md-6">
<div class="col-md-4">
<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:translate key="backend.button_reset_filter" />
</f:form.button>
......
......@@ -94,8 +94,11 @@
</f:if>
</f:for>
<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">
<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]" />
......
......@@ -11,7 +11,7 @@ if (!defined('TYPO3_MODE')) {
'',
[
'Mail' => 'index, sendTestMail, empty, reset',
'Queue' => 'index, sendMail',
'Queue' => 'index, sendMail, export',
],
[
'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