Skip to content
Snippets Groups Projects
Commit b7984100 authored by Stefan Galinski's avatar Stefan Galinski :video_game:
Browse files

Merge branch 'new_version_4_1' into 'master'

New version 4 1

See merge request !3
parents 284119d3 7adf9692
No related branches found
No related tags found
1 merge request!3New version 4 1
Showing
with 740 additions and 355 deletions
...@@ -9,14 +9,23 @@ ...@@ -9,14 +9,23 @@
<authorEmail>torsten@sgalinski.de</authorEmail> <authorEmail>torsten@sgalinski.de</authorEmail>
</header> </header>
<body> <body>
<trans-unit id="backend.all">
<source>All</source>
</trans-unit>
<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>Export 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>
<trans-unit id="backend.button_reset_all"> <trans-unit id="backend.button_reset_all">
<source>Reset all languages for this template(!!!)</source> <source>Reset template</source>
</trans-unit>
<trans-unit id="backend.button_reset_filter">
<source>Reset</source>
</trans-unit> </trans-unit>
<trans-unit id="backend.cc"> <trans-unit id="backend.cc">
<source>CC (Carbon Copy Receiver, comma separated)</source> <source>CC (Carbon Copy Receiver, comma separated)</source>
...@@ -33,9 +42,69 @@ ...@@ -33,9 +42,69 @@
<trans-unit id="backend.email"> <trans-unit id="backend.email">
<source>Email</source> <source>Email</source>
</trans-unit> </trans-unit>
<trans-unit id="backend.entry_date">
<source>Queue Entry Date</source>
</trans-unit>
<trans-unit id="backend.error_bcc">
<source>The bcc addresses are invalid</source>
</trans-unit>
<trans-unit id="backend.error_cc">
<source>The cc addresses are invalid</source>
</trans-unit>
<trans-unit id="backend.failure_mail"> <trans-unit id="backend.failure_mail">
<source>There was an error when sending the preview email. Please check your configuration.</source> <source>There was an error when sending the preview email. Please check your configuration.</source>
</trans-unit> </trans-unit>
<trans-unit id="backend.filter.bcc">
<source>BCC address</source>
</trans-unit>
<trans-unit id="backend.filter.cc">
<source>CC address</source>
</trans-unit>
<trans-unit id="backend.filter.date_from">
<source>Last sent time since:</source>
</trans-unit>
<trans-unit id="backend.filter.date_to">
<source>Last sent until:</source>
</trans-unit>
<trans-unit id="backend.filter.extension">
<source>Extension</source>
</trans-unit>
<trans-unit id="backend.filter.fields.description">
<source>Search fields (all by default):</source>
</trans-unit>
<trans-unit id="backend.filter.filter">
<source>Filter</source>
</trans-unit>
<trans-unit id="backend.filter.from">
<source>Sender address</source>
</trans-unit>
<trans-unit id="backend.filter.from_name">
<source>From name</source>
</trans-unit>
<trans-unit id="backend.filter.language">
<source>Language:</source>
</trans-unit>
<trans-unit id="backend.filter.mailtext">
<source>Mailtext</source>
</trans-unit>
<trans-unit id="backend.filter.reply_to">
<source>Reply to</source>
</trans-unit>
<trans-unit id="backend.filter.search">
<source>Search for:</source>
</trans-unit>
<trans-unit id="backend.filter.subject">
<source>Subject</source>
</trans-unit>
<trans-unit id="backend.filter.template">
<source>Template</source>
</trans-unit>
<trans-unit id="backend.filter.to">
<source>Recipient address</source>
</trans-unit>
<trans-unit id="backend.from">
<source>From</source>
</trans-unit>
<trans-unit id="backend.fromAddress"> <trans-unit id="backend.fromAddress">
<source>Sender Email Address</source> <source>Sender Email Address</source>
</trans-unit> </trans-unit>
...@@ -45,6 +114,18 @@ ...@@ -45,6 +114,18 @@
<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.is_overwritten">
<source>(overwritten)</source>
</trans-unit>
<trans-unit id="backend.language_default">
<source>Default</source>
</trans-unit>
<trans-unit id="backend.last_sent">
<source>Last Sent</source>
</trans-unit>
<trans-unit id="backend.mail_queue"> <trans-unit id="backend.mail_queue">
<source>Mail Queue</source> <source>Mail Queue</source>
</trans-unit> </trans-unit>
...@@ -63,8 +144,14 @@ ...@@ -63,8 +144,14 @@
<trans-unit id="backend.no_extension"> <trans-unit id="backend.no_extension">
<source>No template was registered.</source> <source>No template was registered.</source>
</trans-unit> </trans-unit>
<trans-unit id="backend.no_extensions">
<source>No extensions registered</source>
</trans-unit>
<trans-unit id="backend.no_queue_entries"> <trans-unit id="backend.no_queue_entries">
<source>There are no entries in the mail queue for this template.</source> <source>Your filter criteria didn't match any entries.</source>
</trans-unit>
<trans-unit id="backend.no_site_root">
<source>Please select one of the following website roots:</source>
</trans-unit> </trans-unit>
<trans-unit id="backend.not_sent"> <trans-unit id="backend.not_sent">
<source>Not Sent</source> <source>Not Sent</source>
...@@ -84,14 +171,20 @@ ...@@ -84,14 +171,20 @@
<trans-unit id="backend.select_language"> <trans-unit id="backend.select_language">
<source>Language (reloads the page):</source> <source>Language (reloads the page):</source>
</trans-unit> </trans-unit>
<trans-unit id="backend.send_again">
<source>Send</source>
</trans-unit>
<trans-unit id="backend.send_mail_again"> <trans-unit id="backend.send_mail_again">
<source>Send this email again?</source> <source>Send this email again?</source>
</trans-unit> </trans-unit>
<trans-unit id="backend.send_mail_manually"> <trans-unit id="backend.send_mail_manually">
<source>Send this email now?</source> <source>Send this email now?</source>
</trans-unit> </trans-unit>
<trans-unit id="backend.send_now">
<source>Send</source>
</trans-unit>
<trans-unit id="backend.send_test"> <trans-unit id="backend.send_test">
<source>Send Preview Mail (Save First!)</source> <source>Save and send preview mails</source>
</trans-unit> </trans-unit>
<trans-unit id="backend.sending_time"> <trans-unit id="backend.sending_time">
<source>Sending Time</source> <source>Sending Time</source>
...@@ -100,7 +193,7 @@ ...@@ -100,7 +193,7 @@
<source>Sent</source> <source>Sent</source>
</trans-unit> </trans-unit>
<trans-unit id="backend.showBody"> <trans-unit id="backend.showBody">
<source>Show Mail</source> <source>Show</source>
</trans-unit> </trans-unit>
<trans-unit id="backend.subject"> <trans-unit id="backend.subject">
<source>Subject</source> <source>Subject</source>
...@@ -109,7 +202,7 @@ ...@@ -109,7 +202,7 @@
<source>Successfully saved!</source> <source>Successfully saved!</source>
</trans-unit> </trans-unit>
<trans-unit id="backend.success_mail"> <trans-unit id="backend.success_mail">
<source>Preview Email sent</source> <source>Preview Emails sent</source>
</trans-unit> </trans-unit>
<trans-unit id="backend.success_mail_queue"> <trans-unit id="backend.success_mail_queue">
<source>Email succesfully sent</source> <source>Email succesfully sent</source>
...@@ -123,17 +216,23 @@ ...@@ -123,17 +216,23 @@
<trans-unit id="backend.template_reset"> <trans-unit id="backend.template_reset">
<source>The template was resetted successfully.</source> <source>The template was resetted successfully.</source>
</trans-unit> </trans-unit>
<trans-unit id="backend.to_form">
<source>To (If set, this overwrites the recipient everytime!) </source>
</trans-unit>
<trans-unit id="backend.to">
<source>To</source>
</trans-unit>
<trans-unit id="backend.toAddress"> <trans-unit id="backend.toAddress">
<source>Receiver</source> <source>Receiver</source>
</trans-unit> </trans-unit>
<trans-unit id="backend.type"> <trans-unit id="backend.type">
<source>Marker Type</source> <source>Type</source>
</trans-unit> </trans-unit>
<trans-unit id="backend.usage"> <trans-unit id="backend.usage">
<source>Usage in Template</source> <source>Usage in Template</source>
</trans-unit> </trans-unit>
<trans-unit id="backend.value"> <trans-unit id="backend.value">
<source>Example Value</source> <source>Example</source>
</trans-unit> </trans-unit>
<trans-unit id="mlang_labels_tabdescr"> <trans-unit id="mlang_labels_tabdescr">
<source>Mail Templates</source> <source>Mail Templates</source>
......
...@@ -27,6 +27,12 @@ ...@@ -27,6 +27,12 @@
<trans-unit id="tx_sgmail_domain_model_mail.from_name"> <trans-unit id="tx_sgmail_domain_model_mail.from_name">
<source>Sender Name</source> <source>Sender Name</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_sgmail_domain_model_mail.language">
<source>Language</source>
</trans-unit>
<trans-unit id="tx_sgmail_domain_model_mail.last_sending_time">
<source>Last sent</source>
</trans-unit>
<trans-unit id="tx_sgmail_domain_model_mail.mail_body"> <trans-unit id="tx_sgmail_domain_model_mail.mail_body">
<source>Mail text</source> <source>Mail text</source>
</trans-unit> </trans-unit>
...@@ -96,6 +102,9 @@ ...@@ -96,6 +102,9 @@
<trans-unit id="tx_sgmail_domain_model_template.template_name"> <trans-unit id="tx_sgmail_domain_model_template.template_name">
<source>Template Name</source> <source>Template Name</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_sgmail_domain_model_template.toAddress">
<source>To Address</source>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>
\ No newline at end of file
...@@ -9,106 +9,116 @@ ...@@ -9,106 +9,116 @@
<div class="module" data-module-id="" data-module-name=""> <div class="module" data-module-id="" data-module-name="">
<div class="module-docheader t3js-module-docheader"> <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 module-docheader-bar-navigation t3js-module-docheader-bar t3js-module-docheader-bar-navigation">
<div class="module-docheader-bar-column-left"> <f:if condition="{pages}">
<f:be.menus.actionMenu> <f:then></f:then>
<f:if condition="{mode} == 'queue'"> <f:else>
<f:then> <div class="module-docheader-bar-column-left">
<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:be.menus.actionMenu> <f:be.menus.actionMenu>
<f:for each="{templates}" as="template" key="extensionKey"> <f:if condition="{mode} == 'queue'">
<f:if condition="{mode} == 'queue'"> <f:then>
<sgm:be.menus.actionMenuOptionGroup label="{extensionKey}"> <sgm:be.menus.actionMenuItem label="{f:translate(key:'backend.mail_queue')}"
<f:for each="{template}" as="currentTemplate" key="templateKey"> controller="Queue"
<sgm:extendedIf condition="{selectedTemplateKey} == {templateKey}" action="index"
and="{selectedExtensionKey} == {extensionKey}"> arguments="{selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}"
<f:then> additionalAttributes="{selected: 'selected'}" />
<sgm:be.menus.actionMenuItem label="{currentTemplate.templateName}" </f:then>
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:else>
<f:if condition="{mode} == 'editor'"> <sgm:be.menus.actionMenuItem label="{f:translate(key:'backend.mail_queue')}"
<sgm:be.menus.actionMenuOptionGroup label="{extensionKey}"> controller="Queue"
<f:for each="{template}" as="currentTemplate" key="templateKey"> action="index"
<sgm:extendedIf condition="{selectedTemplateKey} == {templateKey}" arguments="{selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}" />
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: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:be.menus.actionMenu>
</f:if> </div>
</div> </f:else>
</div> </f:if>
<div class="module-docheader-bar-column-right"> <div class="module-docheader-bar-column-right">
<f:render partial="ButtonBar" arguments="{buttons:docHeader.buttons.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> </div>
<f:if condition="{pages}">
<f:then></f:then>
<f:else>
<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: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="{parameters: {selectedTemplate: templateKey, selectedExtension: extensionKey}}"
additionalAttributes="{selected: 'selected'}" />
</f:then>
<f:else>
<sgm:be.menus.actionMenuItem label="{currentTemplate.templateName}"
controller="Queue"
action="index"
arguments="{parameters: {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="{parameters: {selectedTemplate: templateKey, selectedExtension: extensionKey}}"
additionalAttributes="{selected: 'selected'}" />
</f:then>
<f:else>
<sgm:be.menus.actionMenuItem label="{currentTemplate.templateName}"
controller="Mail"
action="index"
arguments="{parameters: {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>
<div class="module-docheader-bar-column-right">
<f:render partial="ButtonBar" arguments="{buttons:docHeader.buttons.right}" />
</div>
</div>
</f:else>
</f:if>
</div> </div>
</div> </div>
<div id="typo3-docbody"> <div id="typo3-docbody">
......
{namespace sgm=SGalinski\SgMail\ViewHelpers}
<f:be.container>
<div id="typo3-docbody">
<div id="typo3-inner-docbody">
<f:render section="content" />
</div>
</div>
</f:be.container>
{namespace sgm=SGalinski\SgMail\ViewHelpers}
<f:be.container enableClickMenu="FALSE" loadExtJs="TRUE" loadJQuery="TRUE" includeCssFiles="{0: '{f:uri.resource(path: \'StyleSheets/backend.css\')}'}"
includeRequireJsModules="{
0: 'TYPO3/CMS/Backend/AjaxDataHandler',
1: '{f:if(condition: \'{typo3Version} < 8000000 \', then: \'TYPO3/CMS/Backend/ClickMenu\', else: \'TYPO3/CMS/Backend/ContextMenu\')}',
2: 'TYPO3/CMS/Backend/Tooltip',
3: 'TYPO3/CMS/Backend/DateTimePicker'}">
<sgm:addJavaScriptFile javaScriptFile="{f:uri.resource(path: 'Scripts/Backend.js')}" />
<sgm:inlineLanguageLabels labels="backend.delete_template, backend.send_mail_manually, backend.send_mail_again" />
<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">
<f:if condition="{pages}">
<f:then></f:then>
<f:else>
<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"
additionalAttributes="{selected: 'selected'}"
arguments="{parameters: {selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}}" />
</f:then>
<f:else>
<sgm:be.menus.actionMenuItem label="{f:translate(key:'backend.mail_queue')}"
controller="Queue"
action="index"
arguments="{parameters: {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="{parameters: {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="{parameters: {selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}}" />
</f:else>
</f:if>
</f:be.menus.actionMenu>
</div>
</f:else>
</f:if>
<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>
</div>
<div id="typo3-docbody">
<div id="typo3-inner-docbody">
<f:render section="content" />
</div>
</div>
</f:be.container>
<p> <div class="row">
{f:translate(key:'backend.no_extension')} <p>
</p> <h3>{f:translate(key:'backend.no_site_root')}</h3>
</p>
</div>
{namespace sgm=SGalinski\SgMail\ViewHelpers}
<f:form action="index" controller="Queue" method="post" objectName="filters" object="{filters}">
<div class="row">
<div class="col-xs-12 col-md-4">
<div class="form-group">
<label for="filter-search"><f:translate key="backend.filter.search" /></label>
<f:form.textfield class="reset-me form-control" property="filterSearch" id="filter-search" />
</div>
<div class="form-group">
<label for="filterTemplate"><f:translate key="backend.filter.template" /></label>
<f:comment>
<f:form.select class="form-control" multiple="0" size="1" property="filterTemplate" optionValueField="key" options="{templatesFilter}" id="filter-template" />
</f:comment>
<select class="form-control" property="filterTemplate" id="filterTemplate" name="filterTemplate">
<f:for each="{templatesFilter}" as="extension" key="extensionKey">
<f:if condition="{extensionKey}">
<f:then>
<sgm:be.menus.actionMenuOptionGroup label="{extensionKey}">
<f:for each="{extension}" as="template">
<sgm:extendedIf condition="{selectedTemplateFilter} == {template}"
and="{selectedExtensionFilter} == {extensionKey}">
<f:then>
<option value="{extensionKey}###{template}" selected="selected">
{template}
</option>
</f:then>
<f:else>
<option value="{extensionKey}###{template}">
{template}
</option>
</f:else>
</sgm:extendedIf>
</f:for>
</sgm:be.menus.actionMenuOptionGroup>
</f:then>
<f:else>
<option></option>
</f:else>
</f:if>
</f:for>
</select>
</div>
<div class="form-group">
<label for="filter-languages"><f:translate key="backend.filter.language" /></label>
<f:form.select class="form-control" multiple="0" size="1" property="filterLanguage" optionValueField="key" options="{languages}" id="filter-languages" />
</div>
</div>
<div class="col-xs-12 col-md-4">
<div class="form-group">
<label for="filter-fields">
<f:translate key="backend.filters.fields" />
<f:translate key="backend.filter.fields.description" />
</label>
<f:form.select class="form-control" multiple="1" size="9" property="filterFields" optionValueField="value" options="{filterFields}" id="filter-fields" />
</div>
</div>
<div class="col-xs-12 col-md-4">
<div class="input-group form-group" style="width: 100%; display: block;">
<label for="filter-to-date">
<f:translate key="backend.filter.date_from" />
</label>
<div class="form-control-clearable">
<f:form.textfield property="filterFromDate" id="filter-from-date" data="{date-type: 'datetime'}" class="reset-me form-control t3js-datetimepicker t3js-clearable hasDefaultValue" />
<button type="button" class="close" tabindex="-1" aria-hidden="true" style="display: none;">
<span class="fa fa-times"></span>
</button>
</div>
<span class="input-group-btn">
<label class="btn btn-default" for="filter-from-date">
<span class="t3js-icon icon icon-size-small icon-state-default icon-actions-edit-pick-date" data-identifier="actions-edit-pick-date">
<span class="icon-markup">
<img src="/typo3/sysext/core/Resources/Public/Icons/T3Icons/actions/actions-edit-pick-date.svg" width="16" height="16">
</span>
</span>
</label>
</span>
</div>
<div class="input-group form-group" style="width: 100%; display: block;">
<label for="filter-to-date">
<f:translate key="backend.filter.date_to" />
</label>
<div class="form-control-clearable">
<f:form.textfield property="filterToDate" id="filter-to-date" data="{date-type: 'datetime'}" class="reset-me form-control t3js-datetimepicker t3js-clearable hasDefaultValue" />
<button type="button" class="close" tabindex="-1" aria-hidden="true" style="display: none;">
<span class="fa fa-times"></span>
</button>
</div>
<span class="input-group-btn">
<label class="btn btn-default" for="filter-to-date">
<span class="t3js-icon icon icon-size-small icon-state-default icon-actions-edit-pick-date" data-identifier="actions-edit-pick-date">
<span class="icon-markup">
<img src="/typo3/sysext/core/Resources/Public/Icons/T3Icons/actions/actions-edit-pick-date.svg" width="16" height="16">
</span>
</span>
</label>
</span>
</div>
<div class="form-group">
<label class="radio-inline">
<f:form.radio property="filterSent" id="filters-all" value="0" checked="{f:if(condition: '{filters.filterSent} == \'0\'', then: '1')}" />
<f:translate key="backend.all" />
</label>
<label class="radio-inline">
<f:form.radio property="filterSent" id="filters-sent" value="1" checked="{f:if(condition: '{filters.filterSent} == \'1\'', then: '1')}" />
<f:translate key="backend.sent" />
</label>
<label class="radio-inline">
<f:form.radio property="filterSent" id="filters-notsent" value="2" checked="{f:if(condition: '{filters.filterSent} == \'2\'', then: '1')}" />
<f:translate key="backend.not_sent" />
</label>
</div>
<div class="form-group row">
<div class="col-md-12">
<f:form.button class="filter-btn btn btn-success form-group col-xs-12 col-md-12" type="submit">
<f:translate key="backend.filter.filter" />
</f:form.button>
<f:form.button class="filter-btn 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>
<f:form.button id="filter-reset-btn" class="filter-btn btn btn-danger form-group col-xs-12 col-md-12" type="reset">
<f:translate key="backend.button_reset_filter" />
</f:form.button>
</div>
</div>
</div>
</div>
</f:form>
<f:layout name="Empty" />
<f:section name="content">
<div class="alert alert-warning">
{f:translate(key:'backend.no_extensions')}
</div>
</f:section>
...@@ -6,204 +6,168 @@ ...@@ -6,204 +6,168 @@
</f:section> </f:section>
<f:section name="content"> <f:section name="content">
<f:flashMessages /> <f:flashMessages />
<br />
<f:if condition="{selectedTemplate}"> <f:if condition="{selectedTemplate}">
<f:then> <f:then>
<div class="form-group col-md-6"> <div class="row form-group col-md-12">
<p>{templateDescription}</p> <div class=" col-md-10">
</div> <p>{templateDescription}</p>
<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 name="selectedLanguageRight" value="{selectedLanguageRight}" />
<f:form.hidden name="selectedTemplate" value="{selectedTemplateKey}" />
<f:form.hidden name="selectedExtensionKey" value="{selectedTemplate.extension}" />
<f:form.hidden name="selectedExtension" value="{selectedTemplate.extension}" />
<f:form.hidden name="selectedTemplateKey" value="{selectedTemplateKey}" />
</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>
<div class="col-md-6"> <div class=" col-md-2">
<div class="form-group"> <f:link.action class="reset-btn reset-all-btn btn-danger btn" style="width: 100%;" action="reset" arguments="{template: selectedTemplateKey, extensionKey: selectedTemplate.extension}">{f:translate(key:'backend.button_reset_all')}</f:link.action>
<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" />
</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" />
</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" />
</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" />
</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" />
</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" />
</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.hidden name="selectedLanguageLeft" value="{selectedLanguageLeft}" />
<f:form.hidden name="selectedLanguageRight" value="{selectedLanguageRight}" />
<f:form.hidden name="selectedTemplate" value="{selectedTemplateKey}" />
<f:form.hidden name="selectedExtensionKey" value="{selectedTemplate.extension}" />
<f:form.hidden name="selectedExtension" value="{selectedTemplate.extension}" />
<f:form.hidden name="selectedTemplateKey" value="{selectedTemplateKey}" />
</div> </div>
</div>
<div class="col-md-6"> <div class="col-md-12 row">
<div class="form-group"> <div class="col-md-12">
<label class="">{f:translate(key:'backend.select_language')}</label> <div class="form-group">
<f:be.menus.actionMenu> <table class="table table-hover">
<f:for each="{languages}" as="language"> <thead>
<sgm:extendedIf condition="{language} == {selectedLanguageRight}"> <tr>
<f:then> <th><f:translate key="backend.marker" /></th>
<sgm:be.menus.actionMenuItem label="{language}" <th><f:translate key="backend.type" /></th>
controller="Mail" <th><f:translate key="backend.value" /></th>
action="index" <th><f:translate key="backend.usage" /></th>
arguments="{selectedLanguageLeft: selectedLanguageLeft, selectedLanguageRight: language, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}" <th><f:translate key="backend.description" /></th>
additionalAttributes="{selected: 'selected'}" /> </tr>
</f:then> </thead>
<f:else> <f:for each="{selectedTemplate.marker}" as="marker">
<sgm:be.menus.actionMenuItem label="{language}" <tr>
controller="Mail" <td>{marker.marker}</td>
action="index" <td>
arguments="{selectedLanguageLeft: selectedLanguageLeft, selectedLanguageRight: language, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}" /> <f:if condition="{marker.type}">
</f:else> <f:then>
</sgm:extendedIf> <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> </f:for>
</f:be.menus.actionMenu> </table>
</div> </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" />
</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" />
</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" />
</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" />
</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" />
</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" />
</div>
<label for="contentRight" class="">{f:translate(key:'backend.content')}</label>
<f:form.textarea class="form-control" rows="25" name="contentRight" value="{contentRight}" />
</div> </div>
<div class="col-md-2"> </div>
<div class="form-group"> <div class="row col-md-12 form-group">
<f:form.submit class="btn-save-backend btn-success btn form-control" value="{f:translate(key:'backend.save')}" /> <f:form method="post" controller="Mail" action="sendTestMail">
</div> <div class="col-md-12 form-group">
</div> <f:form.submit class="btn-primary btn form-group" value="{f:translate(key:'backend.send_test')}" />
</f:form> <f:form.textfield name="parameters[emailAddress]" class="email-input form-group" value="{beUserMail}" />
<f:form.hidden name="parameters[selectedTemplate]" value="{selectedTemplateKey}" />
<f:form.hidden name="parameters[selectedExtensionKey]" value="{selectedTemplate.extension}" />
<f:form.hidden name="parameters[selectedExtension]" value="{selectedTemplate.extension}" />
<f:form.hidden name="parameters[selectedTemplateKey]" value="{selectedTemplateKey}" />
</div>
<f:for each="{languageTemplates}" as="languageTemplate" key="key">
<div class="template-col col-md-{colspace}">
<f:for each="{languageLabels}" as="label" key="innerKey">
<f:if condition="{key} == {innerKey}">
<h3>
<f:if condition="{key}=='default'">
<f:then>
{defaultLanguageLabel}
</f:then>
<f:else>
{label}
</f:else>
</f:if>
<f:if condition="{languageTemplate.isOverwritten}">
<f:translate key="backend.is_overwritten" />
</f:if>
</h3>
</f:if>
</f:for>
<div class="col-md-12">
<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]" />
</div>
<div class="row form-group">
<label for="parameters[templates][{key}][fromMail]" class="">{f:translate(key:'backend.fromMail')}</label>
<f:form.textfield type="email" class="form-control" value="{languageTemplate.fromMail}" name="parameters[templates][{key}][fromMail]" />
</div>
<div class="row form-group">
<label for="parameters[templates][{key}][toAddress]" class="">{f:translate(key:'backend.to_form')}</label>
<f:form.textfield type="text" class="form-control" value="{languageTemplate.toAddress}" name="parameters[templates][{key}][toAddress]" />
</div>
<div class="row form-group">
<label for="parameters[templates][{key}][cc]" class="">{f:translate(key:'backend.cc')}</label>
<f:form.textfield type="text" class="form-control" value="{languageTemplate.cc}" name="parameters[templates][{key}][cc]" />
</div>
<div class="row form-group">
<label for="parameters[templates][{key}][bcc]" class="">{f:translate(key:'backend.bcc')}</label>
<f:form.textfield type="text" class="form-control" value="{languageTemplate.bcc}" name="parameters[templates][{key}][bcc]" />
</div>
<div class="row form-group">
<label for="parameters[templates][{key}][replyTo]" class="">{f:translate(key:'backend.replyTo')}</label>
<f:form.textfield type="text" class="form-control" value="{languageTemplate.replyTo}" name="parameters[templates][{key}][replyTo]" />
</div>
<div class="row form-group">
<label for="parameters[templates][{key}][subject]" class="">{f:translate(key:'backend.subject')}</label>
<f:form.textfield type="text" class="form-control" value="{languageTemplate.subject}" name="parameters[templates][{key}][subject]" />
</div>
<div class="row form-group">
<label for="parameters[templates][{key}][content]" class="">{f:translate(key:'backend.content')}</label>
<f:form.textarea class="form-control" rows="15" name="parameters[templates][{key}][content]" value="{languageTemplate.content}" />
</div>
</div>
</div>
</f:for>
</f:form>
</div>
</f:then> </f:then>
<f:else> <f:else>
<f:render partial="Mail/Empty" /> <f:render partial="Mail/Empty" />
</f:else> </f:else>
</f:if> </f:if>
<f:if condition="{pages}">
<div class="row">
<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.pid}">
<td nowrap="nowrap" class="col-title">
<a href="#" onclick="sgMailGoToPage({page.uid}); return false;">
<sgm:backend.icon table="pages" row="{page}" clickMenu="0" />
{page._thePathFull}
</a>
</td>
</tr>
</f:for>
</tbody>
</table>
</div>
</div>
</div>
</f:if>
</f:section> </f:section>
{namespace sgm=SGalinski\SgMail\ViewHelpers} {namespace sgm=SGalinski\SgMail\ViewHelpers}
<f:layout name="Queue" />
<f:layout name="Default" />
<f:section name="iconButtons"> <f:section name="iconButtons">
</f:section> </f:section>
<f:section name="content"> <f:section name="content">
<f:flashMessages/> <f:flashMessages />
<f:render partial="Queue/Filter" arguments="{filterFields: filterFields, filters: filters, languages: languages, templatesFilter: templatesFilter, selectedTemplateFilter: selectedTemplateFilter, selectedExtensionFilter: selectedExtensionFilter}" />
<f:if condition="{queue -> f:count()} > 0"> <f:if condition="{queue -> f:count()} > 0">
<f:then> <f:then>
<div class="panel panel-default recordlist"> <div class="panel panel-default recordlist">
<div class="table-fit"> <div class="table-fit">
<table data-table="tx_sgmail_domain_model_mail" class="table table-striped table-hover"> <table data-table="tx_sgmail_domain_model_mail" class="table table-striped table-hover">
<sgm:backend.widget.paginate objects="{queue}" as="paginatedMails" configuration="{insertAbove: 1, itemsPerPage: 20}"> <sgm:backend.widget.paginate objects="{queue}" as="paginatedMails" configuration="{insertAbove: 1, itemsPerPage: 20}">
<thead>
<tr>
<th></th>
<th><f:translate key="backend.from" /> <br> <f:translate key="backend.to" /></th>
<th><f:translate key="backend.filter.extension" />:
<f:translate key="backend.filter.template" /> <br>
<f:translate key="backend.subject" /></th>
<th><f:translate key="backend.entry_date" /> <br>
<f:translate key="backend.last_sent" /></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody> <tbody>
<f:for each="{paginatedMails}" as="mail"> <f:for each="{paginatedMails}" as="mail">
{sgm:backend.editOnClick(table: 'tx_sgmail_domain_model_mail', uid: mail.uid) -> sgm:set(name: 'editOnClick') -> f:format.raw()} {sgm:backend.editOnClick(table: 'tx_sgmail_domain_model_mail', uid: mail.uid) -> sgm:set(name: 'editOnClick') -> f:format.raw()}
...@@ -22,69 +36,75 @@ ...@@ -22,69 +36,75 @@
<sgm:backend.icon table="tx_sgmail_domain_model_mail" row="{mail}" /> <sgm:backend.icon table="tx_sgmail_domain_model_mail" row="{mail}" />
</f:format.raw> </f:format.raw>
</td> </td>
<td nowrap="nowrap"> <td>
<a href="#" onclick="{editOnClick}"> <span>{mail.from_address}</span>
<span>{mail.from_address} -> {mail.to_address}, {mail.mail_subject}</span> <hr>
</a> <span>{mail.to_address}</span>
</td> </td>
<td nowrap="nowrap" class="col-control"> <td>
<f:format.raw> <span>{mail.extension_key}: {mail.template_name}</span>
<sgm:backend.control table="tx_sgmail_domain_model_mail" row="{mail}" /> <hr>
</f:format.raw> <f:if condition="{mail.mail_subject}">
<f:then>
<span><f:format.crop maxCharacters="40" append="...">{mail.mail_subject}</f:format.crop></span>
</f:then>
<f:else>
&nbsp;
</f:else>
</f:if>
</td> </td>
<td> <td>
<f:if condition="{mail.sent} == '0'"> <span><f:format.date format="d.m.Y H:i">{mail.crdate}</f:format.date></span>
<hr>
<f:if condition="{mail.last_sending_time} != 0">
<f:then> <f:then>
<f:link.action class="btn btn-default btn-send-now" controller="Queue" action="sendMail" arguments="{uid: mail.uid}"> <span><f:format.date format="d.m.Y H:i">{mail.last_sending_time}</f:format.date></span>
<span class="t3js-icon icon icon-size-small icon-state-default actions-document-import-t3d">
<span class="icon-markup">
<img src="/typo3/sysext/core/Resources/Public/Icons/T3Icons/actions/actions-document-import-t3d.svg" width="16" height="16">
</span>
</span>
Send Now
</f:link.action>
</f:then> </f:then>
<f:else> <f:else>
<f:link.action class="btn btn-default btn-resend" controller="Queue" action="sendMail" arguments="{uid: mail.uid}"> <f:translate key="backend.not_sent" />
<span class="t3js-icon icon icon-size-small icon-state-default icon-actions-insert-reference">
<span class="icon-markup">
<img src="/typo3/sysext/core/Resources/Public/Icons/T3Icons/actions/actions-insert-reference.svg" width="16" height="16">
</span>
</span>
Send Again
</f:link.action>
</f:else> </f:else>
</f:if> </f:if>
</td> </td>
<td nowrap="nowrap" class="col-control">
<f:format.raw>
<sgm:backend.control table="tx_sgmail_domain_model_mail" row="{mail}" />
</f:format.raw>
</td>
<td> <td>
<f:link.action class="btn btn-default btn-send-now" controller="Queue" action="sendMail" arguments="{uid: mail.uid, selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}">
<span class="t3js-icon icon icon-size-small icon-state-default actions-document-import-t3d">
<span class="icon-markup">
<img src="/typo3/sysext/core/Resources/Public/Icons/T3Icons/actions/actions-document-import-t3d.svg" width="16" height="16">
</span>
</span>
<f:translate key="backend.send_now" />
</f:link.action>
<a class="btn btn-default btn-toggle" data-uid="{mail.uid}"> <a class="btn btn-default btn-toggle" data-uid="{mail.uid}">
<span class="t3js-icon icon icon-size-small icon-state-default actions-document-view"> <span class="t3js-icon icon icon-size-small icon-state-default actions-document-view">
<span class="icon-markup"> <span class="icon-markup">
<img src="/typo3/sysext/core/Resources/Public/Icons/T3Icons/actions/actions-document-view.svg" width="16" height="16"> <img src="/typo3/sysext/core/Resources/Public/Icons/T3Icons/actions/actions-document-view.svg" width="16" height="16">
</span>
</span> </span>
</span>
<f:translate key="backend.showBody" /> <f:translate key="backend.showBody" />
</a> </a>
</td> </td>
</tr><!-- Modal --> <div class="modal fade" id="toggle-{mail.uid}" tabindex="-1" role="dialog" aria-labelledby="login-modal-label">
<div class="modal fade" id="toggle-{mail.uid}" tabindex="-1" role="dialog" aria-labelledby="login-modal-label"> <div class="modal-dialog" role="document">
<div class="modal-dialog" role="document"> <div class="modal-content">
<div class="modal-content"> <div class="modal-header">
<div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">&times;</span></button>
<span aria-hidden="true">&times;</span></button> <h4 class="modal-title" id="login-modal-label">{mail.mail_subject}</h4>
<h4 class="modal-title" id="login-modal-label">{mail.mail_subject}</h4> </div>
</div> <div class="modal-body" id="login-modal-body">
<div class="modal-body" id="login-modal-body"> <div class="modalcol modalcol-left">
<div class="modalcol modalcol-left"> <f:format.html>{mail.mail_body}</f:format.html>
<f:format.html> </div>
{mail.mail_body}
</f:format.html>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div>
</f:for> </f:for>
</tbody> </tbody>
</sgm:backend.widget.paginate> </sgm:backend.widget.paginate>
...@@ -96,4 +116,24 @@ ...@@ -96,4 +116,24 @@
<f:render partial="Queue/Empty" /> <f:render partial="Queue/Empty" />
</f:else> </f:else>
</f:if> </f:if>
<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.pid}">
<td nowrap="nowrap" class="col-title">
<a href="#" onclick="sgMailGoToPage({page.uid}); return false;">
<sgm:backend.icon table="pages" row="{page}" clickMenu="0" />
{page._thePathFull}
</a>
</td>
</tr>
</f:for>
</tbody>
</table>
</div>
</div>
</f:if>
</f:section> </f:section>
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<f:if condition="{configuration.insertAbove}"> <f:if condition="{configuration.insertAbove}">
<thead> <thead>
<tr> <tr>
<td colspan="6"> <td colspan="10">
<f:render section="paginator" arguments="{pagination: pagination, position:'top', recordsLabel: configuration.recordsLabel}" /> <f:render section="paginator" arguments="{pagination: pagination, position:'top', recordsLabel: configuration.recordsLabel}" />
</td> </td>
</tr> </tr>
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
<f:if condition="{configuration.insertBelow}"> <f:if condition="{configuration.insertBelow}">
<tfoot> <tfoot>
<tr> <tr>
<td colspan="6"> <td colspan="10">
<f:render section="paginator" arguments="{pagination: pagination, position:'bottom', recordsLabel: configuration.recordsLabel}" /> <f:render section="paginator" arguments="{pagination: pagination, position:'bottom', recordsLabel: configuration.recordsLabel}" />
</td> </td>
</tr> </tr>
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
function toggleMailBody(_event) { function toggleMailBody(_event) {
var uid = $(_event.currentTarget).data('uid'); var uid = $(_event.currentTarget).data('uid');
$('#toggle-' + uid).detach().appendTo('body').modal('show');; $('#toggle-' + uid).detach().appendTo('body').modal('show');
} }
$(document).ready(function() { $(document).ready(function() {
...@@ -36,6 +36,18 @@ ...@@ -36,6 +36,18 @@
$('.btn-send-now').on('click', sendMailListener); $('.btn-send-now').on('click', sendMailListener);
$('.btn-resend').on('click', resendMailListener); $('.btn-resend').on('click', resendMailListener);
$('.btn-toggle').on('click', toggleMailBody); $('.btn-toggle').on('click', toggleMailBody);
$('#filter-reset-btn').on('click', function(event) {
event.preventDefault();
this.form.reset();
$(this).closest('form').find('select').each(function() {
this.selectedIndex = 0;
});
$('.reset-me').val('');
$('#filters-all').attr('checked', true);
this.form.submit();
});
}); });
}) })
(TYPO3.jQuery); (TYPO3.jQuery);
...@@ -71,7 +83,7 @@ function setHighlight(id) { // ...@@ -71,7 +83,7 @@ function setHighlight(id) { //
* @param {number} uid * @param {number} uid
*/ */
function sgMailGoToPage(uid) { function sgMailGoToPage(uid) {
top.nav.invokePageId(uid,gotToPageCallback); top.nav.invokePageId(uid, gotToPageCallback);
} }
/** /**
...@@ -79,7 +91,7 @@ function sgMailGoToPage(uid) { ...@@ -79,7 +91,7 @@ function sgMailGoToPage(uid) {
* *
* @param {number} uid * @param {number} uid
*/ */
function gotToPageCallback(path){ function gotToPageCallback(path) {
var callback = top.Ext.createDelegate(top.nav.mainTree.selectPath, top.nav.mainTree); var callback = top.Ext.createDelegate(top.nav.mainTree.selectPath, top.nav.mainTree);
callback.apply(this, arguments); callback.apply(this, arguments);
var node = top.nav.getSelected(); var node = top.nav.getSelected();
......
...@@ -15,8 +15,8 @@ ...@@ -15,8 +15,8 @@
.f3-widget-paginator { .f3-widget-paginator {
display: inline-block; display: inline-block;
border-radius: 4px; border-radius: 4px;
margin: 20px 0px; margin: 20px 0;
padding-left: 0px; padding-left: 0;
background-color: red; background-color: red;
} }
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
.f3-widget-paginator > li:first-child > a, .f3-widget-paginator > li:first-child > a,
.f3-widget-paginator > li.current:first-child { .f3-widget-paginator > li.current:first-child {
margin-left: 0px; margin-left: 0;
border-top-left-radius: 4px; border-top-left-radius: 4px;
border-bottom-left-radius: 4px; border-bottom-left-radius: 4px;
} }
...@@ -54,4 +54,29 @@ ...@@ -54,4 +54,29 @@
.f3-widget-paginator > li.current:last-child { .f3-widget-paginator > li.current:last-child {
border-top-right-radius: 4px; border-top-right-radius: 4px;
border-bottom-right-radius: 4px; border-bottom-right-radius: 4px;
}
.template-col:nth-of-type(even) {
/*background-color: #DCDCDC;*/
/*background-clip: content-box;*/
}
.template-col:nth-of-type(odd) {
/*background-color: #AAA;*/
/*background-clip: content-box;*/
}
.recordlist hr {
margin: 5px 0;
border-top: 1px solid #EAEAEA;
}
.recordlist-mail-unsent {
background-color: #CCC !important;
}
.filter-btn {
width: auto;
min-width: 100px;
margin-right: 10px;
} }
\ No newline at end of file
...@@ -36,10 +36,25 @@ $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['extbase']['commandControllers'][] = ...@@ -36,10 +36,25 @@ $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['extbase']['commandControllers'][] =
\SGalinski\SgMail\Command\SendMailCommandController::class; \SGalinski\SgMail\Command\SendMailCommandController::class;
// add upgrade wizard for moving all db entries to their respected siteroot // add upgrade wizard for moving all db entries to their respected siteroot
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['tx_sgmail_migrate_data'] = \SGalinski\SgMail\Updates\MigrateData::class; $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['tx_sgmail_update_pid_to_site_root'] = \SGalinski\SgMail\Updates\UpdatePidToSiteRoot::class;
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['tx_sgmail_update_sending_times'] = \SGalinski\SgMail\Updates\UpdateSendingTimes::class;
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['tx_sgmail_update_languages'] = \SGalinski\SgMail\Updates\UpdateLanguages::class;
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['tx_sgmail_update_german_as_default'] = \SGalinski\SgMail\Updates\UpdateGermanAsDefault::class;
if (TYPO3_MODE === 'BE') { if (TYPO3_MODE === 'BE') {
$tsPath = $extPath . 'Configuration/TypoScript/'; $tsPath = $extPath . 'Configuration/TypoScript/';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptSetup(file_get_contents($tsPath . 'setup.ts')); \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptSetup(file_get_contents($tsPath . 'setup.ts'));
} }
// Cache registration
$cacheName = \SGalinski\SgMail\Service\MailTemplateService::CACHE_NAME;
if (!is_array($GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'][$cacheName])) {
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'][$cacheName] = [];
}
if (!isset($TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations'][$cacheName]['groups'])) {
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations'][$cacheName]['groups'] = [
'citypower'
];
}
...@@ -10,8 +10,8 @@ if (!defined('TYPO3_MODE')) { ...@@ -10,8 +10,8 @@ if (!defined('TYPO3_MODE')) {
'Mail', 'Mail',
'', '',
[ [
'Mail' => 'index, save, sendTestMail, empty, reset', 'Mail' => 'index, sendTestMail, empty, reset',
'Queue' => 'index, sendMail', 'Queue' => 'index, sendMail, export',
], ],
[ [
'access' => 'user,group', 'access' => 'user,group',
......
...@@ -9,13 +9,13 @@ CREATE TABLE tx_sgmail_domain_model_mail ( ...@@ -9,13 +9,13 @@ CREATE TABLE tx_sgmail_domain_model_mail (
from_name varchar(255) DEFAULT '' NOT NULL, from_name varchar(255) DEFAULT '' NOT NULL,
cc_addresses varchar(255) DEFAULT '' NOT NULL, cc_addresses varchar(255) DEFAULT '' NOT NULL,
bcc_addresses varchar(255) DEFAULT '' NOT NULL, bcc_addresses varchar(255) DEFAULT '' NOT NULL,
sent tinyint(1) DEFAULT '0' NOT NULL,
priority int(11) unsigned DEFAULT '0' NOT NULL, priority int(11) unsigned DEFAULT '0' NOT NULL,
extension_key varchar(30) DEFAULT '' NOT NULL, extension_key varchar(255) DEFAULT '' NOT NULL,
template_name varchar(30) DEFAULT '' NOT NULL, template_name varchar(255) DEFAULT '' NOT NULL,
reply_to varchar(30) DEFAULT '' NOT NULL, reply_to varchar(255) DEFAULT '' NOT NULL,
sending_time int(11) unsigned DEFAULT '0' NOT NULL, sending_time int(11) unsigned DEFAULT '0' NOT NULL,
site_root_id int(11) unsigned DEFAULT '0' NOT NULL, last_sending_time int(11) unsigned DEFAULT '0' NOT NULL,
language varchar(255) DEFAULT '' NOT NULL,
tstamp int(11) unsigned DEFAULT '0' NOT NULL, tstamp int(11) unsigned DEFAULT '0' NOT NULL,
crdate int(11) unsigned DEFAULT '0' NOT NULL, crdate int(11) unsigned DEFAULT '0' NOT NULL,
...@@ -33,12 +33,12 @@ CREATE TABLE tx_sgmail_domain_model_template ( ...@@ -33,12 +33,12 @@ CREATE TABLE tx_sgmail_domain_model_template (
uid int(11) NOT NULL auto_increment, uid int(11) NOT NULL auto_increment,
pid int(11) DEFAULT '0' NOT NULL, pid int(11) DEFAULT '0' NOT NULL,
site_root_id int(11) unsigned DEFAULT '0' NOT NULL,
subject text NOT NULL, subject text NOT NULL,
extension_key varchar(255) DEFAULT '' NOT NULL, extension_key varchar(255) DEFAULT '' NOT NULL,
template_name varchar(255) DEFAULT '' NOT NULL, template_name varchar(255) DEFAULT '' NOT NULL,
from_name varchar(255) DEFAULT '' NOT NULL, from_name varchar(255) DEFAULT '' NOT NULL,
from_mail varchar(255) DEFAULT '' NOT NULL, from_mail varchar(255) DEFAULT '' NOT NULL,
to_address varchar(255) DEFAULT '' NOT NULL,
cc varchar(255) DEFAULT '' NOT NULL, cc varchar(255) DEFAULT '' NOT NULL,
bcc varchar(255) DEFAULT '' NOT NULL, bcc varchar(255) DEFAULT '' NOT NULL,
reply_to varchar(255) DEFAULT '' NOT NULL, reply_to varchar(255) DEFAULT '' NOT NULL,
......
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