fixed: DataForm doesn't send emails correctly

This commit is contained in:
Graham Knop 2008-06-20 08:56:57 +00:00
parent 682885ac17
commit deaa6c65c0
2 changed files with 40 additions and 35 deletions

View file

@ -1,4 +1,5 @@
7.5.13 7.5.13
- fixed: DataForm doesn't send emails correctly
- fixed: CS posts don't have correct URLs generated - fixed: CS posts don't have correct URLs generated
- fixed: Unable to template user profile viewing and editing screens. - fixed: Unable to template user profile viewing and editing screens.
- fixed: Product Variants not saving SKU - fixed: Product Variants not saving SKU

View file

@ -440,15 +440,19 @@ sub getTabOrder {
#------------------------------------------------------------------- #-------------------------------------------------------------------
sub deleteAttachedFiles { sub deleteAttachedFiles {
my $self = shift; my $self = shift;
my @fields = shift; my %params = @_;
@fields = @{ $self->getFieldOrder } my $entryData = $params{entryData};
unless @fields; my $entryId = $params{entryId};
my $fields = $self->getFieldOrder;
my $fieldConfig = $self->getFieldConfig; my $fieldConfig = $self->getFieldConfig;
my $entries = $self->session->db->buildArrayRef("select entryData from DataForm_entry where assetId=?", [$self->getId]);
foreach my $entry (@$entries) { if ($entryId) {
my $entryData = decode_json($entry->{entryData}); my $entry = $self->session->db->buildArrayRef("select entryData from DataForm_entry where assetId=? and DataForm_entryId=?", [$self->getId, $entryId]);
for my $field ( @fields ) { $entryData = decode_json($entry->{entryData});
}
if ($entryData) {
for my $field ( @$fields ) {
my $form = $self->_createForm($fieldConfig->{$field}, $entryData->{$field}); my $form = $self->_createForm($fieldConfig->{$field}, $entryData->{$field});
if ($form->can('getStorageLocation')) { if ($form->can('getStorageLocation')) {
my $storage = $form->getStorageLocation; my $storage = $form->getStorageLocation;
@ -456,14 +460,26 @@ sub deleteAttachedFiles {
} }
} }
} }
else {
my $entries = $self->session->db->buildArrayRef("select entryData from DataForm_entry where assetId=?", [$self->getId]);
foreach my $entry (@$entries) {
my $entryData = decode_json($entry->{entryData});
$self->deleteEntryFiles($entryData);
for my $field ( @$fields ) {
my $form = $self->_createForm($fieldConfig->{$field}, $entryData->{$field});
if ($form->can('getStorageLocation')) {
my $storage = $form->getStorageLocation;
$storage->delete;
}
}
}
}
} }
#------------------------------------------------------------------- #-------------------------------------------------------------------
sub getAttachedFiles { sub getAttachedFiles {
my $self = shift; my $self = shift;
my $entryId = shift; my $entryData = shift;
my $entry = $self->getCollateral('DataForm_entry', 'DataForm_entryId', $entryId);
my $entryData = decode_json($entry->{entryData});
my $fieldConfig = $self->getFieldConfig; my $fieldConfig = $self->getFieldConfig;
my @paths; my @paths;
for my $field ( values %{$fieldConfig} ) { for my $field ( values %{$fieldConfig} ) {
@ -641,7 +657,7 @@ sub getRecordTemplateVars {
} }
my $hidden = ($field->{status} eq 'hidden' && !$self->session->var->isAdminOn) || ($field->{isMailField} && !$self->get('mailData')); my $hidden = ($field->{status} eq 'hidden' && !$self->session->var->isAdminOn) || ($field->{isMailField} && !$self->get('mailData'));
my $form = $self->_createForm($field, $value); my $form = $self->_createForm($field, $value);
my $value = $form->getValueAsHtml; $value = $form->getValueAsHtml;
my %fieldProperties = ( my %fieldProperties = (
"form" => $form->toHtml, "form" => $form->toHtml,
"name" => $field->{name}, "name" => $field->{name},
@ -773,28 +789,16 @@ sub purge {
sub sendEmail { sub sendEmail {
my $self = shift; my $self = shift;
my $var = shift; my $var = shift;
my ($to, $subject, $from, $bcc, $cc); my $entryData = shift;
foreach my $row (@{$var->{field_loop}}) { my $to = $entryData->{to};
if ($row->{"field.name"} eq "to") { my $subject = $entryData->{subject};
$to = $row->{"field.value"}; my $from = $entryData->{from};
} elsif ($row->{"field.name"} eq "from") { my $bcc = $entryData->{bcc};
$from = $row->{"field.value"}; my $cc = $entryData->{cc};
} elsif ($row->{"field.name"} eq "cc") {
$cc = $row->{"field.value"};
} elsif ($row->{"field.name"} eq "bcc") {
$bcc = $row->{"field.value"};
} elsif ($row->{"field.name"} eq "subject") {
$subject = $row->{"field.value"};
} elsif ($row->{"field.type"} eq "textArea") {
$row->{"field.value"} =~ s/\n/<br\/>/;
} elsif ($row->{"field.type"} eq "textarea") {
$row->{"field.value"} = WebGUI::HTML::format($row->{"field.value"},'mixed');
}
}
my $message = $self->processTemplate($var,$self->get("emailTemplateId")); my $message = $self->processTemplate($var,$self->get("emailTemplateId"));
WebGUI::Macro::process($self->session,\$message); WebGUI::Macro::process($self->session,\$message);
my @attachments = $self->get('mailAttachments') ? my @attachments = $self->get('mailAttachments')
@{$self->getAttachedFiles($var->{entryId})} ? @{ $self->getAttachedFiles($entryData) }
: (); : ();
if ($to =~ /\@/) { if ($to =~ /\@/) {
my $mail = WebGUI::Mail::Send->create($self->session,{ my $mail = WebGUI::Mail::Send->create($self->session,{
@ -923,7 +927,7 @@ sub www_deleteEntry {
my $self = shift; my $self = shift;
return $self->session->privilege->insufficient() unless $self->canEdit; return $self->session->privilege->insufficient() unless $self->canEdit;
my $entryId = $self->session->form->process("entryId"); my $entryId = $self->session->form->process("entryId");
$self->deleteAttachedFiles($entryId); $self->deleteAttachedFiles(entryId => $entryId);
$self->deleteCollateral("DataForm_entry","DataForm_entryId",$entryId); $self->deleteCollateral("DataForm_entry","DataForm_entryId",$entryId);
$self->session->stow->set("mode","list"); $self->session->stow->set("mode","list");
return $self->www_view; return $self->www_view;
@ -1386,13 +1390,13 @@ sub www_process {
} }
$var->{error_loop} = \@errors; $var->{error_loop} = \@errors;
$var = $self->getRecordTemplateVars($var); $var = $self->getRecordTemplateVars($var, $entryData);
if (@errors) { if (@errors) {
$self->prepareView($var); $self->prepareView($var);
return $self->processStyle($self->view); return $self->processStyle($self->view);
} }
if ($self->get("mailData") && !$entryId) { if ($self->get("mailData") && !$entryId) {
$self->sendEmail($var); $self->sendEmail($var, $entryData);
} }
if ($self->get('storeData')) { if ($self->get('storeData')) {
my $entryJSON = encode_json($entryData); my $entryJSON = encode_json($entryData);