TYPO3 direct_mail_subscription Double-Opt-In-Out not activ - email

I am using extension direct_mail and direct_mail_subscription for newsletter. In the settings it is clear that i should first confirm the address, so the adress should be in the database as hidden.
// Create setup
create = 1
create {
userFunc_afterSave = EXT:direct_mail_subscription/pi/class.dmailsubscribe.php:user_dmailsubscribe->saveRecord
preview = 0
// add captcha, if you use captcha
fields = gender, name, hidden, email, module_sys_dmail_category, module_sys_dmail_html
required = gender, name, email
noSpecialLoginForm = 1
# Initially hide the user until he approves!
overrideValues.hidden = 1
evalValues.email = uniqueLocal, email
}
so the field hidden in the database should be in the begining 1, however, all data are set to 0 without confirming the address.
Typo3 Version 8.7.2. What should the reason be? Do you have an idea?

Make sure that you have included the static TypoScript template in your own TypoScript template:
You can verify that it is included in the TypoScript Object Browser:

Related

Undeclared arguments passed to ViewHelper Undkonsorten\Powermailpdf\ViewHelpers\Misc\VariablesViewHelper: mail

In TYPO3 9.5 using powermail with powermailpdf I'm getting the following error when submitting a form...
Undeclared arguments passed to ViewHelper Undkonsorten\Powermailpdf\ViewHelpers\Misc\VariablesViewHelper: mail.
It appears that it's complaining about mail but I don't know what to do about it. I've included the static templates for powermail followed by powermailpdf in the main TS template and see below for the mapping part of powermailpdf. I also added {downloadLink} in the RTE area for the receiver in the powermail content element and have email addresses entered there as well for the Receiver's Email and Sender's Email.
The only place I found the word mail in the docs was on this page, but it appears I don't need to do that since I'm using a powermail version greater than 3 right?
PS: I also posted this question as an issue for powermailpdf.
Relevant packages
typo3/cms-core 9.5.31
templavoilaplus/templavoilaplus 7.3.6
in2code/powermail 6.2.0
undkonsorten/powermailpdf 2.4.5
tmw/fpdm 2.9.2
TypoScript I'm using
plugin.tx_powermailpdf {
settings {
enablePowermailPdf = 1
showDownloadLink = 1
email.attachFile = 1
filelink {
jumpurl = 1
jumpurl.secure = 1
jumpurl.secure.mimeTypes = pdf=application/pdf
icon = 1
icon_link = 1
}
sourceFile = EXT:rapidfyre_estreetdrivingschool/Resources/Public/Forms/Student_Training_Record.pdf
fieldMap{
# Note the format is... pdfField = PowermailField
name = studentsname
address = address
city = city
state = state
zip = zip
gender = gender
home_number = homephone
alternate_number = alternatephone
student_cell = studentsphone
student_email = studentsemail
parent_name = parentsname
parent_email = parentsemail
high_school = highschool
birth_date = dateofbirth
permit_number = permitorid
class = class
# Hidden fields
orientation = orientation
}
}
}
Image of the first part of the error trace
EXT:powermailpdf is overriding this ViewHelper (Code).
config.tx_extbase {
objects {
In2code\Powermail\ViewHelpers\Misc\VariablesViewHelper.className = Undkonsorten\Powermailpdf\ViewHelpers\Misc\VariablesViewHelper
}
}
But the classes seems not match (in these versions):
https://github.com/einpraegsam/powermail/blob/6.2.0/Classes/ViewHelpers/Misc/VariablesViewHelper.php
https://github.com/undkonsorten/powermailpdf/blob/2.4.5/Classes/ViewHelpers/Misc/VariablesViewHelper.php
So, a call of this VH (possibly also from the normal Powermail templates) will hit a non-compatible version of the ViewHelper.

Typo3 Powermail form - Send Page UID to receiver

I've created a small application form for my website. Everything works fine.
In the plugin settings there is a field called "Bodytext for Email to Receiver". This is the the mail I get, everytime somebody fills out an application form. It looks like this right now:
New application arrived!
{powermail_all}
Is it possible to get the Page UID from the application form into a variable to put it in there?
The only solutions I've found need TypoScript. Is there any other way?
The solution with typoscript should be (according to manual):
use in template:
{f:cObject(typoscriptObjectPath:'lib.pageuid')}
define the typoscript:
lib.pageuid = TEXT
lib.pageuid.data = page:uid
I'm not sure about an additional variable for {powermail_all} as I'm not familiar with the extension.
If I understand the manual correctly this might be possible with :
plugin.tx_powermail {
settings {
setup {
manipulateVariablesInPowermailAllMarker {
// possible sections (define for each, where you need it):
// confirmationPage, submitPage, receiverMail, senderMail, optinMail
submitPage {
pageUid = TEXT
pageUid.data = page:uid
}
senderMail {
pageUid = TEXT
pageUid.data = page:uid
}
}
}
}
}

Add formhandler field data to subject

My goal is to have the Formhandler log UID inside the Admin emails subject.
Inside of my email template I'm using
###value_tx_formhandler_log_inserted_uid### to insert a unique id.
I need to get this value into my Admin emails subject. E.g.
"Order ID: ###value_tx_formhandler_log_inserted_uid###"
I've read various forum posts, each do something different and I ended up with this snippet:
plugin.Tx_Formhandler.settings.predef.form {
# TEMPLATE MARKERS
name = Form1
templateFile = typo3template/typo3/ext/formhandler/form1/default.html
markers {
name = TEXT
name.value = Form1
}
finishers {
1.config {
class = Tx_Formhandler_Finisher_Mail
subject = TEXT
subject.value = ###GP:tx_formhandler_log_inserted_uid###
}
}
[...]
which just yields "{$formhandler.admin.subject}" as the subject.
I also tried other variations like
###LLL:tx_formhandler_log_inserted_uid### or tx_formhandler_log_inserted_uid
The backend field "subject" is empty.
Pasting the HTML placeholder into the backend field didn't work either.
I can't get this to work.
In what way can you access the id you want to insert?
From the notation GP:tx_formhandler_log_inserted_uid I would assume a GET/POST value.
For using this value in typoscript you need to do it like this (or similar: dataWrap):
subject = TEXT
subject.data = GP:tx_formhandler_log_inserted_uid
subject.noTrimWrap = |Order ID: ||
The notation LLL:tx_formhandler_log_inserted_uid would be a language specific text (you would also insert by .data) but it would be a static text for each language.
After a lot of trial and error, I got it working.
First of all, I forgot to specify that I want to configure the admin mail.
Adding admin { fixed the problem of getting only {$formhandler.admin.subject}.
The UID value itself can be accessed with GP:formhandler|tx_formhandler_log_inserted_uid
I combined that with the noTrimWrap as suggested by #bernd-wilke-πφ
The final snippet looks like this:
finishers {
1 {
class = Tx_Formhandler_Finisher_Mail
config {
admin {
subject = TEXT
subject.data = GP:formhandler|tx_formhandler_log_inserted_uid
subject.noTrimWrap = |Order number: ||
}
}
}
}

RealURL with GET parameters

We have developed a typo3 plug in that searches for trucks. For SEO reasons, we are trying to use the realURL plug in to make the URLs friendlier to use.
On the front page we have several call to actions that link to the search page with certain search parameters. An example is bellow:
/search-results/?tx_fds_searchresults[type_name]=Trailer
This link works as expected. On the results page is a link to the listings page with more details. An example is bellow:
/listing/?tx_fds_listing[id]=119870
This link is not working. tx_fds_listing[id] is not being populated in the arguments passed to the plug in controller.
At first we thought it might be a config issue but again, it isn't present on other pages.
The ID is not a database object and may be a text string instead.
Edit:
I should add that it works fine with RealURL turned off.
We get the id as $id = $this->request->getArgument('id');
Edit 2:
Here is the error message from the logs.
[ALERT] request="28233e225150a" component="TYPO3.CMS.Frontend.ContentObject.Exception.ProductionExceptionHandler": Oops, an error occurred! Code: 201512141630381db91bba - {"exception":"exception 'TYPO3\\CMS\\Extbase\\Mvc\\Exception\\NoSuchArgumentException' with message 'An argument \"id\" does not exist for this request.'
I also tried renaming the variable to name, but that didn't work either.
I have a solution that solves the root cause of the problem, if not the specific issue.
So I had to add additional mapping to the realurl_conf.php file. For example to get the listing id:
$config['domain.com']['postVarSets'][3]['stock'] = array(array('GETvar' => 'tx_fds_listing[id]'));
This makes the effective URL:
/listing/stock/119870
This was the intended usage for the plugin, so this is a good result. I also added configuration for ajax and pdfs. This required modification to the typoscript that was not obvious.
PDF TS:
pdf = PAGE
pdf {
typeNum = 300
10 = USER_INT
10 {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
#vendorName = TYPO3
extensionName = Fds
pluginName = Listing
#controller = FDS
controller = Tx_Fds_Controller_FDSController
#action = listingPdf
switchableControllerActions.FDS.1 = listingPdf
}
config {
disableAllHeaderCode = 1
additionalHeaders = Content-type:application/pdf
xhtml_cleaning = 0
admPanel = 0
}
}
PDF RealURL Config:
$config['domain.com']['postVarSets'][3]['pdf'] = array('type' => 'single', 'keyValues' => array ('type' => 300));
PDF effective URL:
/listing/pdf/stock/119870

TYPO3 formhandler update-table in finisher_db without uid?

I'm using TYPO3 6.2.x with fe-login and formhandler. I created a form, where you can register a new fe-user.
I want to have a 'complete user registration' for,m where the user inputs the username the password and a doi-code for verification.
I thought if formhandler has a finisher-db supporting saltedpassword, it has to have a validator (database -> equalsField -> saltedpassword) as well. But I can't find any.
Something like:
validators {
1.class = Validator_Default
1.config {
fieldConf {
password.errorCheck {
1 = required
2 = saltedpassword <-- does not exist
3 = isInDBTable
3 {
table = fe_users
field = password
#or maybe: special = password ?
showHidden = 1
}
}
}
}
}
So I need help here, please.
//Update 2015-08-31
I got rid of the password field in the formhandler to seperate finish-registration and login as #Jost mentioned.
Now I have a more sincere problem:
I now have a formhandler form where the user is asked to input his email-address and the doi-code. I wanted to use the finisher_db for updating the user in the db. But the update of formhandler-finisher requires the uid of the element to update. Of course I don't have the uid at this state. Is there another way to use the native formhandler finishers?
If not, can someone please give me a heads up of how to write your own finisher for this purpose?