<?php
/**
* @package RSForm! Pro
* @copyright (C) 2007-2019 www.rsjoomla.com
* @license GPL, http://www.gnu.org/copyleft/gpl.html
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
require_once JPATH_ADMINISTRATOR.'/components/com_rsform/helpers/field.php';
class RSFormProFieldPreview extends RSFormProField
{
// backend preview
public function getPreviewInput()
{
$attachedField = '{value}';
if ($data = $this->getAttachedFieldData())
{
$attachedField = $data['NAME'];
}
$value = $this->getProperty('TEXT', '');
return '<pre class="rsfp-preview-freetext">'.str_replace('{value}', '<em>' . $attachedField . '</em>', $this->escape($value)).'</pre>';
}
// functions used for rendering in front view
public function getFormInput()
{
if ($data = $this->getAttachedFieldData())
{
$options = array(
'previewId' => $this->componentId,
'fieldId' => $data['componentId'],
'fieldName' => $data['NAME'],
'formId' => $this->formId,
'separator' => static::getFormSeparator($this->formId)
);
if (isset($data['DATESEPARATOR']))
{
$options['separator'] = $data['DATESEPARATOR'];
}
if (isset($data['FILESSEPARATOR']))
{
$options['separator'] = $data['FILESSEPARATOR'];
}
$this->addScriptDeclaration('RSFormPro.previewFields.elements.push(' . json_encode($options) . ');');
$this->addScriptDeclaration('RSFormProUtils.addEvent(window, \'load\', function() { window.setTimeout(RSFormPro.previewFields.attachEvents, 1); });');
}
$html = $this->getProperty('TEXT', '');
$html = str_replace('{value}', '<span id="preview-' . $this->componentId . '"></span>', $html);
return $html;
}
protected function getAttachedFieldData()
{
if ($field = $this->getProperty('SELECTFIELD'))
{
if ($data = RSFormProHelper::getComponentProperties($field))
{
return $data;
}
}
return false;
}
protected static function getFormSeparator($formId)
{
static $cache = array();
if (!isset($cache[$formId]))
{
$db = Factory::getDbo();
$query = $db->getQuery(true)
->select($db->qn('MultipleSeparator'))
->from($db->qn('#__rsform_forms'))
->where($db->qn('FormId') . ' = ' . $db->q($formId));
$cache[$formId] = str_replace(array('\n', '\r', '\t'), array("\n", "\r", "\t"), $db->setQuery($query)->loadResult());
}
return $cache[$formId];
}
}