silverstripe-userforms/code/Model/Recipient/UserFormRecipientItemRequest.php

63 lines
1.7 KiB
PHP
Raw Normal View History

2015-07-24 04:37:48 +02:00
<?php
/**
* Controller that handles requests to EmailRecipient's
*
* @package userforms
*/
2016-07-21 07:53:59 +02:00
class UserFormRecipientItemRequest extends GridFieldDetailForm_ItemRequest
{
2015-07-24 04:37:48 +02:00
2016-07-21 07:53:59 +02:00
private static $allowed_actions = array(
'edit',
'view',
'ItemEditForm',
'preview'
);
2015-07-24 04:37:48 +02:00
2016-07-21 07:53:59 +02:00
/**
* Renders a preview of the recipient email.
*/
public function preview()
{
// Enable theme for preview (may be needed for Shortcodes)
Config::nest();
Config::inst()->update('SSViewer', 'theme_enabled', true);
$content = $this->customise(new ArrayData(array(
2016-07-21 07:53:59 +02:00
'Body' => $this->record->getEmailBodyContent(),
'HideFormData' => $this->record->HideFormData,
'Fields' => $this->getPreviewFieldData()
)))->renderWith($this->record->EmailTemplate);
Config::unnest();
return $content;
2016-07-21 07:53:59 +02:00
}
2015-07-24 04:37:48 +02:00
2016-07-21 07:53:59 +02:00
/**
* Get some placeholder field values to display in the preview
* @return ArrayList
*/
private function getPreviewFieldData()
{
$data = new ArrayList();
2015-07-24 04:37:48 +02:00
2016-07-21 07:53:59 +02:00
$fields = $this->record->Form()->Fields()->filter(array(
'ClassName:not' => 'EditableLiteralField',
'ClassName:not' => 'EditableFormHeading'
));
2015-07-24 04:37:48 +02:00
2016-07-21 07:53:59 +02:00
foreach ($fields as $field) {
$data->push(new ArrayData(array(
2017-05-01 07:37:50 +02:00
'Name' => $field->dbObject('Name'),
'Title' => $field->dbObject('Title'),
'Value' => DBField::create_field('Varchar', '$' . $field->Name),
'FormattedValue' => DBField::create_field('Varchar', '$' . $field->Name)
2016-07-21 07:53:59 +02:00
)));
}
2015-07-24 04:37:48 +02:00
2016-07-21 07:53:59 +02:00
return $data;
}
2015-07-24 04:37:48 +02:00
}