first commit

This commit is contained in:
2026-02-08 21:16:11 +01:00
commit e17b7026fd
8881 changed files with 1160453 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<form>
<fieldset addfieldpath="plugins/system/nrframework/fields"></fieldset>
<fieldset name="main" addfieldpath="administrator/components/com_convertforms/models/forms/fields">
<field name="name" type="text"
label="NR_NAME"
description="COM_CONVERTFORMS_CAMPAIGNS_NAME_DESC"
class="input-xlarge"
required="true"
/>
<field name="state" type="list"
label="JSTATUS"
description="NR_FIELD_STATE_DESC"
class="chzn-color-state"
size="1"
default="1">
<option value="1">JPUBLISHED</option>
<option value="0">JUNPUBLISHED</option>
<option value="2">JARCHIVED</option>
<option value="-2">JTRASHED</option>
</field>
<field name="service" type="cfservices"
label="COM_CONVERTFORMS_CHOOSE_SERVICE"
description="COM_CONVERTFORMS_CAMPAIGN_SYNC_DESC"
class="chzn-color-state">
</field>
<field name="id" type="hidden"
label="JGLOBAL_FIELD_ID_LABEL"
description="JGLOBAL_FIELD_ID_DESC"
default="0"
readonly="true"
class="readonly"
/>
</fieldset>
</form>

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<form>
<fieldset name="main" addfieldpath="administrator/components/com_convertforms/models/forms/fields">
<field name="state" type="list"
label="JSTATUS"
description="NR_FIELD_STATE_DESC"
class="chzn-color-state"
size="1"
default="1">
<option value="1">JPUBLISHED</option>
<option value="0">JUNPUBLISHED</option>
<option value="2">JARCHIVED</option>
<option value="-2">JTRASHED</option>
</field>
<field name="id" type="text"
label="JGLOBAL_FIELD_ID_LABEL"
description="JGLOBAL_FIELD_ID_DESC"
default="0"
readonly="true"
class="readonly"
/>
<field name="form_id" type="convertforms"
label="COM_CONVERTFORMS_FORM"
readonly="true"
/>
<field name="visitor_id" type="text"
label="COM_CONVERTFORMS_VISITOR_ID"
readonly="true"
/>
<field name="user_id" type="user"
label="Joomla User"
/>
<field name="created" type="calendar"
label="NR_CREATED_DATE"
description="NR_CREATED_DATE_DESC"
size="40"
translateformat="true"
showtime="true"
filter="user_utc"
readonly="true"
/>
<field name="modified" type="calendar"
label="NR_MODIFIFED_DATE"
description="NR_MODIFIFED_DATE_DESC"
size="40"
translateformat="true"
showtime="true"
filter="user_utc"
readonly="true"
/>
<fields name="params">
<field name="leadnotes" type="textarea"
label="COM_CONVERTFORMS_NOTES"
rows="10"
class="span12"
/>
</fields>
</fieldset>
<fieldset name="params" addfieldpath='/plugins/system/nrframework/fields'>
<field name="params"/>
</fieldset>
</form>

View File

@@ -0,0 +1,72 @@
<?xml version="1.0" encoding="utf-8"?>
<form>
<fieldset name="submission" addfieldpath="plugins/system/nrframework/fields">
</fieldset>
<fieldset name="submission" addfieldpath="administrator/components/com_convertforms/models/forms/fields/">
<field name="filter_form_id" type="convertforms"
label="COM_CONVERTFORMS_FORM"
description="COM_CONVERTFORMS_FORM"
required="true">
</field>
<field name="filter_search" type="text"
label="COM_CONVERTFORMS_FILTER_SEARCH"
description="COM_CONVERTFORMS_FILTER_SEARCH_DESC"
/>
<field name="filter_period" type="list"
label="COM_CONVERTFORMS_PERIOD"
default="">
<option value="">NR_ANY</option>
<option value="today">COM_CONVERTFORMS_TODAY</option>
<option value="yesterday">COM_CONVERTFORMS_YESTERDAY</option>
<option value="this_week">COM_CONVERTFORMS_THIS_WEEK</option>
<option value="this_month">COM_CONVERTFORMS_THIS_MONTH</option>
<option value="this_year">COM_CONVERTFORMS_THIS_YEAR</option>
<option value="last_week">COM_CONVERTFORMS_LAST_WEEK</option>
<option value="last_month">COM_CONVERTFORMS_LAST_MONTH</option>
<option value="last_year">COM_CONVERTFORMS_LAST_YEAR</option>
<option value="daterange">COM_CONVERTFORMS_DATE_RANGE</option>
</field>
<field name="filter_created_from" type="calendar"
label="COM_CONVERTFORMS_START_DATE"
hint="COM_CONVERTFORMS_START_DATE"
format="%Y-%m-%d"
showon="filter_period:daterange"
class="input-medium"
/>
<field name="filter_created_to" type="calendar"
label="COM_CONVERTFORMS_END_DATE"
hint="COM_CONVERTFORMS_END_DATE"
format="%Y-%m-%d"
showon="filter_period:daterange"
/>
<field name="filter_state" type="status"
label="State"
default="1"
/>
<field name="export_type" type="list"
label="Export as"
default="csv">
<option value="csv">CSV</option>
<option value="json">JSON</option>
</field>
<field name="advanced" type="nrtoggle"
label="Advanced options"
/>
<field name="limit" type="list"
label="Batch"
default="10000"
showon="advanced:1">
<option value="1000">1,000</option>
<option value="5000">5,000</option>
<option value="10000">10,000</option>
<option value="30000">30,000</option>
<option value="50000">50,000</option>
</field>
<!-- <field name="state" type="status"
label="JSTATE"
showon="advanced:1">
<option value="">JOPTION_SELECT_PUBLISHED</option>
</field> -->
</fieldset>
</form>

View File

@@ -0,0 +1,40 @@
<?php
/**
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2020 Tassos Marinos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
// No direct access to this file
defined('_JEXEC') or die;
JFormHelper::loadFieldClass('list');
class JFormFieldCampaigns extends JFormFieldList
{
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
$lists = ConvertForms\Helper::getCampaigns();
if (!count($lists))
{
return;
}
$options = array();
foreach ($lists as $option)
{
$options[] = JHTML::_('select.option', $option->id, $option->name);
}
$options = array_merge(parent::getOptions(), $options);
return $options;
}
}

View File

@@ -0,0 +1,43 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2020 Tassos Marinos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
defined('_JEXEC') or die('Restricted access');
JFormHelper::loadFieldClass('list');
class JFormFieldCFServices extends JFormFieldList
{
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Trigger all ConvertForms plugins
JPluginHelper::importPlugin('convertforms');
// Get a list with all available services
$services = JFactory::getApplication()->triggerEvent('onConvertFormsServiceName');
$options[] = JHTML::_('select.option', '0', JText::_('JDISABLED'));
// Alphabetically sort services
asort($services);
foreach ($services as $option)
{
$options[] = JHTML::_('select.option', $option['alias'], $option['name']);
}
return array_merge(parent::getOptions(), $options);
}
}

View File

@@ -0,0 +1,137 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2020 Tassos Marinos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
defined('_JEXEC') or die('Restricted access');
require_once JPATH_PLUGINS . '/system/nrframework/helpers/field.php';
class JFormFieldNR_Choices extends NRFormField
{
/**
* Default Choices
*
* @var array
*/
private $defaultChoices = array(
1 => array("label" => "First Choice"),
2 => array("label" => "Second Choice"),
3 => array("label" => "Third Choice")
);
/**
* Get Input HTML
*
* @return string
*/
protected function getInput()
{
$this->addMedia();
$choiceType = $this->get("choicetype", "dropdown");
// Settings
$showValuesFieldName = $this->name . '[showvalues]';
$showValuesFieldChecked = isset($this->value["showvalues"]) ? "checked" : "";
$showCalcValuesFieldName = $this->name . '[showcalcvalues]';
$showCalcValuesFieldChecked = isset($this->value["showcalcvalues"]) ? "checked" : "";
// Choices
$choices = $this->getChoices();
$nextid = max(array_keys($choices)) + 1;
$html[] = '
<div id="nr_choices_' . $this->id . '" class="nr_choices" data-min="1" data-fieldname="' . $this->name . '" data-nextid="' . $nextid . '">
';
foreach ($choices as $key => $value)
{
// Skip empty choices
if (!isset($value["label"]) || $value["label"] == '')
{
continue;
}
$choiceName = $this->name . '[choices][' . $key . ']';
$checked = (isset($value["default"]) && (bool) $value["default"] === true) ? "checked" : "";
$choiceValue = isset($value["value"]) ? $value["value"] : "";
$choiceCalcValue = isset($value["calc-value"]) ? $value["calc-value"] : "";
$choiceLabel = $value["label"];
$html[] = '
<div class="nr-choice-item" data-id=' . $key . '>
<div>
<input tabindex="-1"
class="nr-choice-default norender"
type="'.($choiceType == "dropdown" ? "radio" : "checkbox") .'"
name="' . $choiceName . '[default]"
value="1" '.$checked .'>
</div>
<div class="nr-choice-sort">
<span class="cf-icon-menu"></span>
</div>
<div class="nr-choice-input">
<input placeholder="' . JText::_('COM_CONVERTFORMS_ENTER_LABEL') . '" class="form-control nr-choice-label" name="' . $choiceName . '[label]" value="' . htmlspecialchars($choiceLabel) . '" type="text"/>
<input '.(!$showValuesFieldChecked ? "style=\"display:none;\"" : "").' placeholder="Enter saved value" class="form-control nr-choice-value" name="' . $choiceName . '[value]" value="'.$choiceValue.'" type="text"/>
<input '.(!$showCalcValuesFieldChecked ? "style=\"display:none;\"" : "").' placeholder="Enter Calculation Value" class="form-control nr-choice-calc-value" name="' . $choiceName . '[calc-value]" value="'.$choiceCalcValue.'" type="text"/>
</div>
<div class="nr-choice-control">
<a tabindex="-1" href="#" class="nr-choice-add"><span class="cf-icon-plus"></span></a>
<a tabindex="-1" href="#" class="nr-choice-remove"><span class="cf-icon-minus"></span></a>
</div>
</div>
';
}
// Add settings fields
$html[] = '
</div>
<div class="nr-choice-settings">
<span>
<input value"1" class="showvalues" type="checkbox" id="' . $showValuesFieldName . '" name="' . $showValuesFieldName . '" '.$showValuesFieldChecked.'>
<label title="' . JText::_('COM_CONVERTFORMS_FIELD_OPTIONS_SHOW_VALUES_DESC') . '" for="' . $showValuesFieldName . '">' . JText::_('COM_CONVERTFORMS_FIELD_OPTIONS_SHOW_VALUES') . '</label>
</span>
<span>
<input value"1" class="showcalcvalues" type="checkbox" id="' . $showCalcValuesFieldName . '" name="' . $showCalcValuesFieldName . '" '.$showCalcValuesFieldChecked.'>
<label title="' . JText::_('COM_CONVERTFORMS_FIELD_OPTIONS_CALC_VALUES_DESC') . '" for="' . $showCalcValuesFieldName . '">' . JText::_('COM_CONVERTFORMS_FIELD_OPTIONS_CALC_VALUES') . '</label>
</span>
</div>
';
return implode(" ", $html);
}
/**
* Get Field Choices
*
* @return array
*/
private function getChoices()
{
// Setup some default choices if we don't have saved data
if (!isset($this->value) || !isset($this->value["choices"]) || count($this->value["choices"]) == 0)
{
return $this->defaultChoices;
}
return $this->value["choices"];
}
/**
* Adds CSS and JavaScript files to DOM
*/
private function addMedia()
{
JHtml::script('https://cdn.jsdelivr.net/npm/sortablejs@latest/Sortable.min.js');
JHtml::script('com_convertforms/choices.js', ['relative' => true, 'version' => 'auto']);
}
}

View File

@@ -0,0 +1,43 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2020 Tassos Marinos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
defined('_JEXEC') or die('Restricted access');
JFormHelper::loadFieldClass('list');
JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_convertforms/' . 'models');
class JFormFieldConvertForms extends JFormFieldList
{
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
$model = JModelLegacy::getInstance('Forms', 'ConvertFormsModel', ['ignore_request' => true]);
$state = isset($this->element['state']) ? (string) $this->element['state'] : 1;
$model->setState('filter.state', explode(',', $state));
$convertforms = $model->getItems();
$options = array();
foreach ($convertforms as $key => $convertform)
{
$name = $convertform->state != 1 ? $convertform->name . ' (' . JText::_('JUNPUBLISHED') . ')' : $convertform->name;
$options[] = JHTML::_('select.option', $convertform->id, $name . ' (' . $convertform->id . ')');
}
return array_merge(parent::getOptions(), $options);
}
}

View File

@@ -0,0 +1,92 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2020 Tassos Marinos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
defined('_JEXEC') or die('Restricted access');
class JFormFieldCSSClasses extends JFormFieldText
{
/**
* Layout class prefix
*
* @var string
*/
private $class_prefix = 'cf-';
/**
* List of available layout classes
*
* @var array
*/
private $layouts = array(
'one-half, one-half',
'one-third, one-third, one-third',
'one-fourth, one-fourth, one-fourth, one-fourth',
'one-third, two-thirds',
'two-thirds, one-third',
'one-fourth, one-fourth, two-fourths',
'two-fourths, one-fourth, one-fourth',
'one-fourth, two-fourths, one-fourth'
);
/**
* Display a layouts button next to the field label
*
* @return string
*/
protected function getLabel()
{
$html = '
<a class="cf-layout-btn" href="#"
data-show-label="' . JText::_('COM_CONVERTFORMS_SHOW_LAYOUTS') . '"
data-hide-label="' . JText::_('COM_CONVERTFORMS_HIDE_LAYOUTS') . '">
' . JText::_('COM_CONVERTFORMS_SHOW_LAYOUTS') .
'</a>';
return parent::getLabel() . $html;
}
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getInput()
{
$uniqueClasses = array();
$html = '
<div class="cf-layout-classes">
<span>' . JText::_('COM_CONVERTFORMS_SELECT_LAYOUT') . '</span>
<div class="cf-layout-list">';
foreach ($this->layouts as $key => $layout)
{
$classes = explode(',', $layout);
$html .= '<div class="cf-layout">';
foreach ($classes as $key => $class)
{
$class = trim($class);
$classLabel = ucfirst(str_replace('-', ' ', $class));
$html .= ' <span title="' . $classLabel . '" class="' . $this->class_prefix . $class . '"></span>';
}
$html .= '</div>';
}
$html .= '</div></div>';
return $html . parent::getInput();
}
}

View File

@@ -0,0 +1,140 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2020 Tassos Marinos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
defined('_JEXEC') or die('Restricted access');
use ConvertForms\FieldsHelper;
class JFormFieldFormFields extends JFormField
{
/**
* Disable field label
*
* @return void
*/
protected function getLabel()
{
return;
}
/**
* Method to attach a JForm object to the field.
*
* @param SimpleXMLElement $element The SimpleXMLElement object representing the <field /> tag for the form field object.
* @param mixed $value The form field value to validate.
* @param string $group The field name group control value.
*
* @return boolean True on success.
*
* @since 3.6
*/
public function setup(SimpleXMLElement $element, $value, $group = null)
{
if (!parent::setup($element, $value, $group))
{
return false;
}
if ($this->value)
{
// Convert JSON passed in the default property to array
if (is_string($this->value))
{
$this->value = json_decode($this->value, true);
}
// Migration Fixes
foreach ($this->value as $key => &$value)
{
if (is_object($value))
{
$value = (array) $value;
}
$value['key'] = (int) str_replace('fields', '', $key);
}
}
return true;
}
/**
* Get field input
*
* @return string
*/
protected function getInput()
{
$html = JLayoutHelper::render('layout', array(
'formControl' => $this->name . '[' . $this->fieldname . 'X]',
'items' => $this->renderItems(),
'fieldgroups' => FieldsHelper::getFieldTypes(),
'nextid' => $this->getNextID()
),
__DIR__ . '/formfields/');
$this->addMediaFiles();
return $html;
}
private function getNextID()
{
$max = 0;
if (is_array($this->value))
{
foreach ($this->value as $key => $item)
{
$max = $item['key'] > $max ? $item['key'] : $max;
}
}
return $max + 1;
}
private function renderItems()
{
$items = array();
if (!$this->value || !is_array($this->value))
{
return $items;
}
$i = 0;
foreach ($this->value as $key => $item)
{
if (!$class = FieldsHelper::getFieldClass($item['type']))
{
continue;
}
$formControl = $this->name . '[' . $this->fieldname . $item['key'] . ']';
$items[] = array(
'form' => $class->getOptionsForm($formControl, $item),
'data' => $item
);
$i++;
}
return $items;
}
private function addMediaFiles()
{
JHtml::script('com_convertforms/choices.js', ['relative' => true, 'version' => 'auto']);
}
}

View File

@@ -0,0 +1,93 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2020 Tassos Marinos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
defined('_JEXEC') or die('Restricted access');
extract($displayData);
$activeTab = count($items) > 0 ? 'fmAllFields' : 'fmaddField';
JHtml::script('https://cdn.jsdelivr.net/npm/sortablejs@latest/Sortable.min.js');
?>
<div class="fm" data-formcontrol="<?php echo $formControl ?>" data-nextid="<?php echo $nextid; ?>">
<?php
echo JHtml::_('bootstrap.startTabSet', 'fieldsManager', array('active' => $activeTab));
echo JHtml::_('bootstrap.addTab', 'fieldsManager', 'fmaddField', JText::_('COM_CONVERTFORMS_ADD_FIELD'));
?>
<div class="fmAvailableFields">
<?php foreach ($fieldgroups as $group => $fieldgroup) {
?>
<div class="fmFieldGroup">
<h5><?php echo $fieldgroup['title'] ?></h5>
<div class="fmFields">
<?php foreach ($fieldgroup['fields'] as $key => $field) {
$isProOnly = !$field['class'];
?>
<div>
<button class="cf-btn btn-dark addField" type="button" data-type="<?php echo $field['name']; ?>" title="<?php echo $field['desc']; ?>"<?php if ($isProOnly) { ?> data-pro-only="<?php echo str_replace('Field', '', $field['title']) . ' Field' ?>"<?php } ?>>
<?php echo $field['title'] ?>
<?php if ($isProOnly) { ?>
<span class="icon-lock right"></span>
<?php } ?>
</button>
</div>
<?php } ?>
</div>
</div>
<?php } ?>
</div>
<?php
echo JHtml::_('bootstrap.endTab');
echo JHtml::_('bootstrap.addTab', 'fieldsManager', 'fmAllFields', JText::_('COM_CONVERTFORMS_ALL_FIELDS'));
?>
<div class="fmAddedFields">
<?php foreach ($items as $key => $item) { ?>
<div class="item" data-key="<?php echo $item['data']['key'] ?>">
<span class="fmFieldLabel"></span>
<span class="fmFieldControl">
<a href="#" class="copyField" title="<?php echo JText::_('COM_CONVERTFORMS_FIELDS_COPY') ?>">
<span class="cf-icon-copy"></span>
</a>
<a href="#" class="removeField" title="<?php echo JText::_('COM_CONVERTFORMS_FIELDS_DELETE') ?>">
<span class="cf-icon-cancel"></span>
</a>
</span>
</div>
<?php } ?>
</div>
<?php
echo JHtml::_('bootstrap.endTab');
echo JHtml::_('bootstrap.addTab', 'fieldsManager', 'fmItems', JText::_('JOPTIONS'));
?>
<div class="fmItems">
<?php
foreach ($items as $key => $item)
{
echo $item['form'];
}
?>
</div>
<?php
echo JHtml::_('bootstrap.endTab');
echo JHtml::_('bootstrap.endTabSet');
?>
</div>

View File

@@ -0,0 +1,86 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2020 Tassos Marinos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
defined('_JEXEC') or die('Restricted access');
JFormHelper::loadFieldClass('checkboxes');
class JFormFieldLeadColumns extends JFormFieldCheckboxes
{
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
$formID = $this->getFormID();
$form_fields = ConvertForms\Helper::getColumns($formID);
$optionsForm = [];
foreach ($form_fields as $key => $field)
{
$label = ucfirst(str_replace('param_', '', $field));
if (strpos($field, 'param_') === false)
{
$label = JText::_('COM_CONVERTFORMS_' . $label);
}
$optionsForm[] = (object) [
'value' => $field,
'text' => $label
];
}
return $optionsForm;
}
protected function getInput()
{
JFactory::getDocument()->addScriptDeclaration('
function cfSubmissionColumnsApply(that) {
// Reset task in case it was previously set and would trigger the task on submit such as submissions export
let task = document.querySelector("input[type=\"hidden\"][name=\"task\"]");
if (task) {
task.value = "";
}
that.form.submit();
}
');
$html = '
<div class="chooseColumns">
<a class="btn btn-secondary" data-bs-toggle="collapse" data-toggle="collapse" href="#" data-target=".chooseColumnsOptions" data-bs-target=".chooseColumnsOptions">'
. JText::_('COM_CONVERTFORMS_CHOOSE_COLUMNS') . '
</a>
<div class="collapse chooseColumnsOptions">
<div>
' . parent::getInput() . '
<button class="btn btn-sm btn-success" onclick="cfSubmissionColumnsApply(this);">'
. JText::_('JAPPLY') .
'</button>
</div>
</div>
</div>
';
return $html;
}
private function getFormID()
{
return $this->form->getData()->get('filter.form_id');
}
}

View File

@@ -0,0 +1,43 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2020 Tassos Marinos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
defined('_JEXEC') or die('Restricted access');
class JFormFieldServiceLists extends JFormFieldText
{
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getInput()
{
$this->addMedia();
return implode(" ", array(
parent::getInput(),
'<button type="button" class="btn btn-secondary viewLists">
<span class="icon-loop"></span> Lists
</button>
<ul class="cflists"></ul>'
));
}
/**
* Adds field's JavaScript and CSS files to the document
*/
private function addMedia()
{
JHtml::stylesheet('com_convertforms/servicelists.css', ['relative' => true, 'version' => 'auto']);
JHtml::script('com_convertforms/servicelists.js', ['relative' => true, 'version' => 'auto']);
}
}

View File

@@ -0,0 +1,97 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2021 Tassos Marinos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
defined('_JEXEC') or die('Restricted access');
JFormHelper::loadFieldClass('media');
class JFormFieldSignature extends JFormFieldMedia
{
/**
* Allow editing the signature field on the backend
*
* @return string
*/
protected function getInput()
{
JFactory::getDocument()->addStyleDeclaration('
.previewSignature {
max-width:600px;
position:relative;
}
.previewSignature .btn-download {
position:absolute;
right:10px;
top:10px;
display:none;
}
.previewSignature:hover .btn-download {
display:block;
}
');
$this->class = '';
$parent = parent::getInput();
if (!defined('nrJ4'))
{
JFactory::getDocument()->addStyleDeclaration('
.previewSignature {
border:solid 1px #ccc;
border-radius:3px;
box-sizing: border-box;
}
.previewSignature * {
box-sizing: inherit;
}
.previewSignature .pop-helper, .previewSignature .tooltip {
display:none !important;
}
.previewSignature .input-prepend {
width:100%;
display:flex;
height:34px;
}
.previewSignature .input-prepend > * {
flex:0;
height:100%;
}
.previewSignature .input-prepend input {
flex:1;
border-radius: 0 0 0 3px;
padding-left: 10px;
}
.previewSignature .field-media-wrapper {
margin-bottom: -1px;
margin-left: -1px;
}
.previewSignature .img-prv {
padding:10px;
background-color:#f2f2f2;
text-align:center;
}
');
$parent = '<div class="img-prv"><img src="' . JURI::root() . '/' . $this->value . '"/></div>' . $parent;
}
return '
<div class="previewSignature">' .
$parent . '
<a href="' . JURI::root() . '/' . $this->value . '" title="' . \JText::_('COM_CONVERTFORMS_SIGNATURE_DOWNLOAD') . '" class="btn btn-small btn-primary btn-sm btn-download" download>
<span class="icon-download"></span>
</a>
</div>
';
}
}

View File

@@ -0,0 +1,121 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2020 Tassos Marinos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
defined('_JEXEC') or die('Restricted access');
JFormHelper::loadFieldClass('text');
class JFormFieldTextList extends JFormFieldText
{
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getInput()
{
if (!empty($this->value) && !is_array($this->value))
{
$this->value = (array) $this->value;
}
// Add brackets to field name to accept multiple values
$this->name .= '[]';
$html = '<div class="input_item_list"><div class="input_items">';
if (is_array($this->value) && !empty($this->value))
{
foreach ($this->value as $key => $item)
{
$this->value = $item;
$html .= '<div>' . parent::getInput() . '<button class="btn btn-mini remove_item"><span class="icon-minus"></button></div>';
}
}
$html .= '</div>';
// Add an extra input for template needs
$this->value = '';
$this->disabled = true;
$html .= '<div class="input_item_list_tmpl"> ' . parent::getInput() . '<button class="btn btn-mini remove_item"><span class="icon-minus"></button></div>';
$html .= '<button class="btn btn-mini btn-success add_item"><span class="icon-plus"></span></button></div>';
static $run;
if (!$run)
{
$this->addMedia();
$run = true;
}
return $html;
}
private function addMedia()
{
// Add CSS
JFactory::getDocument()->addStyleDeclaration('
.input_item_list .input_item_list_tmpl {
display:none;
}
.input_item_list div div {
margin-bottom:5px;
display:flex;
display:-webkit-flex;
align-items:center;
-webkit-align-items:center;
}
.input_item_list input {
margin-right:5px;
}
.input_item_list *[class^="icon"] {
margin:0;
pointer-events: none;
}
');
// Add Script
JFactory::getDocument()->addScriptDeclaration('
document.addEventListener("DOMContentLoaded", function(e) {
var els = document.querySelectorAll(".input_item_list");
els.forEach(function(el) {
el.addEventListener("click", function(e) {
e.preventDefault();
// Remove item action
if (e.target.classList.contains("remove_item")) {
var button = e.target;
var container = button.closest(".input_items");
container.removeChild(button.parentNode);
}
// Add new item action
if (e.target.classList.contains("add_item")) {
var el_tmpl = el.querySelector(".input_item_list_tmpl");
var cln = el_tmpl.cloneNode(true);
cln.querySelector("input").disabled = false;
cln.classList.remove("input_item_list_tmpl");
el.querySelector(".input_items").appendChild(cln);
}
});
});
});
');
}
}

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<form>
<fields name="filter">
<field
name="search"
type="text"
label="JSEARCH_FILTER_LABEL"
hint="JSEARCH_FILTER"
/>
<field
name="state"
type="status"
filter="-2,0,1"
label="JPUBLISHED"
onchange="this.form.submit();">
<option value="">JOPTION_SELECT_PUBLISHED</option>
</field>
</fields>
<fields name="list">
<field
name="fullordering"
type="list"
label="NR_LIST_FULL_ORDERING"
description="NR_LIST_FULL_ORDERING_DESC"
onchange="this.form.submit();"
default="a.id DESC">
<option value="">JGLOBAL_SORT_BY</option>
<option value="a.state ASC">JSTATUS_ASC</option>
<option value="a.state DESC">JSTATUS_DESC</option>
<option value="a.name ASC">JGLOBAL_TITLE_ASC</option>
<option value="a.name DESC">JGLOBAL_TITLE_DESC</option>
<option value="a.id ASC">JGRID_HEADING_ID_ASC</option>
<option value="a.id DESC">JGRID_HEADING_ID_DESC</option>
</field>
<field
name="limit"
type="limitbox"
class="input-mini"
default="10"
label="NR_LIST_LIMIT"
description="NN_LIST_LIMIT_DESC"
onchange="this.form.submit();"
/>
</fields>
</form>

View File

@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="utf-8"?>
<form>
<fields name="filter" addfieldpath="administrator/components/com_convertforms/models/forms/fields">
<field name="search" type="text"
label="JSEARCH_FILTER_LABEL"
hint="JSEARCH_FILTER"
/>
<field name="form_id" type="convertforms"
label="COM_CONVERTFORMS_FORM"
description="COM_CONVERTFORMS_FORM"
state="0,1"
onchange="this.form.submit();">
<option disabled="disabled">COM_CONVERTFORMS_FORM_SELECT</option>
</field>
<field name="period" type="list"
label="COM_CONVERTFORMS_PERIOD"
onchange="if (document.getElementById('filter_period').value == 'daterange') return; this.form.submit();">
<option value="">COM_CONVERTFORMS_PERIOD_SELECT</option>
<option value="today">COM_CONVERTFORMS_TODAY</option>
<option value="yesterday">COM_CONVERTFORMS_YESTERDAY</option>
<option value="this_week">COM_CONVERTFORMS_THIS_WEEK</option>
<option value="this_month">COM_CONVERTFORMS_THIS_MONTH</option>
<option value="this_year">COM_CONVERTFORMS_THIS_YEAR</option>
<option value="last_week">COM_CONVERTFORMS_LAST_WEEK</option>
<option value="last_month">COM_CONVERTFORMS_LAST_MONTH</option>
<option value="last_year">COM_CONVERTFORMS_LAST_YEAR</option>
<option value="daterange">COM_CONVERTFORMS_DATE_RANGE</option>
</field>
<field name="created_from" type="calendar"
label="COM_CONVERTFORMS_START_DATE"
hint="COM_CONVERTFORMS_START_DATE"
format="%Y-%m-%d"
onchange="this.form.submit();"
showon="period:daterange"
class="input-medium"
/>
<field name="created_to" type="calendar"
label="COM_CONVERTFORMS_END_DATE"
hint="COM_CONVERTFORMS_END_DATE"
format="%Y-%m-%d"
onchange="this.form.submit();"
showon="period:daterange"
class="input-medium"
/>
<field name="state" type="status"
label="JPUBLISHED"
onchange="this.form.submit();">
<option value="">JOPTION_SELECT_PUBLISHED</option>
</field>
<field name="columns" type="leadcolumns"
label="COM_CONVERTFORMS_CHOOSE_COLUMNS"
onchange="this.form.submit();"
/>
</fields>
<fields name="list">
<field
name="fullordering"
type="list"
label="NR_LIST_FULL_ORDERING"
description="NR_LIST_FULL_ORDERING_DESC"
onchange="this.form.submit();"
default="a.id DESC">
<option value="">JGLOBAL_SORT_BY</option>
<option value="a.id ASC">JGRID_HEADING_ID_ASC</option>
<option value="a.id DESC">JGRID_HEADING_ID_DESC</option>
<option value="a.state ASC">JSTATUS_ASC</option>
<option value="a.state DESC">JSTATUS_DESC</option>
<option value="a.created ASC">JDATE_ASC</option>
<option value="a.created DESC">JDATE_DESC</option>
<option value="a.form_id ASC">COM_CONVERTFORMS_FORM_ASCENDING</option>
<option value="a.form_id DESC">COM_CONVERTFORMS_FORM_DESCENDING</option>
</field>
<field
name="limit"
type="limitbox"
class="input-mini"
default="10"
label="NR_LIST_LIMIT"
description="NN_LIST_LIMIT_DESC"
onchange="this.form.submit();"
/>
</fields>
</form>

View File

@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<form>
<fields name="filter">
<field
name="search"
type="text"
label="JSEARCH_FILTER_LABEL"
hint="JSEARCH_FILTER"
/>
<field
name="state"
type="status"
filter="-2,0,1"
label="JPUBLISHED"
onchange="this.form.submit();">
<option value="">JOPTION_SELECT_PUBLISHED</option>
</field>
</fields>
<fields name="list">
<field
name="fullordering"
type="list"
label="NR_LIST_FULL_ORDERING"
description="NR_LIST_FULL_ORDERING_DESC"
onchange="this.form.submit();"
default="a.id DESC">
<option value="">JGLOBAL_SORT_BY</option>
<option value="a.state ASC">JSTATUS_ASC</option>
<option value="a.state DESC">JSTATUS_DESC</option>
<option value="a.name ASC">JGLOBAL_TITLE_ASC</option>
<option value="a.name DESC">JGLOBAL_TITLE_DESC</option>
<option value="a.id ASC">JGRID_HEADING_ID_ASC</option>
<option value="a.id DESC">JGRID_HEADING_ID_DESC</option>
<option value="leads ASC">COM_CONVERTFORMS_SUBMISSIONS_ASC</option>
<option value="leads DESC">COM_CONVERTFORMS_SUBMISSIONS_DESC</option>
</field>
<field
name="limit"
type="limitbox"
class="input-mini"
default="10"
label="NR_LIST_LIMIT"
description="NN_LIST_LIMIT_DESC"
onchange="this.form.submit();"
/>
</fields>
</form>

View File

@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<form>
<fieldset name="submission" label="Submission" tab="conversion">
<field name="save_data_to_db" type="nrtoggle"
label="COM_CONVERTFORMS_SAVE_DATA_TO_DB"
description="COM_CONVERTFORMS_SAVE_DATA_TO_DB_DESC"
checked="true"
/>
<field name="submission_state" type="list"
label="COM_CONVERTFORMS_SUBMISSION_DEFAULT_STATE"
description="COM_CONVERTFORMS_SUBMISSION_DEFAULT_STATE_DESC"
class="chzn-color-state"
size="1"
default="1"
showon="save_data_to_db:1">
<option value="1">JPUBLISHED</option>
<option value="0">JUNPUBLISHED</option>
<option value="2">JARCHIVED</option>
<option value="-2">JTRASHED</option>
</field>
<field name="campaign" type="campaigns"
label="COM_CONVERTFORMS_COLLECT_LEADS_USING"
description="COM_CONVERTFORMS_COLLECT_LEADS_USING_DESC"
required="true"
/>
<field name="onsuccess" type="list"
label="COM_CONVERTFORMS_SUCCESSFUL_SUBMISSION"
description="COM_CONVERTFORMS_SUCCESSFUL_SUBMISSION_DESC"
default="msg">
<option value="msg">COM_CONVERTFORMS_DISPLAY_MSG</option>
<option value="url">COM_CONVERTFORMS_REDIRECT_USER</option>
</field>
<field name="successmsg" type="textarea"
label="COM_CONVERTFORMS_SUCCESS_TEXT"
description="COM_CONVERTFORMS_SUCCESS_TEXT_DESC"
default="Thanks for contacting us! We will get in touch with you shortly."
class="editorx show-smart-tags"
showon="onsuccess:msg">
</field>
<field name="resetform" type="nrtoggle"
label="COM_CONVERTFORMS_RESET_FORM"
description="COM_CONVERTFORMS_RESET_FORM_DESC"
checked="true"
showon="onsuccess:msg"
/>
<field name="hideform" type="nrtoggle"
label="COM_CONVERTFORMS_HIDE_FORM"
description="COM_CONVERTFORMS_HIDE_FORM_DESC"
checked="true"
showon="onsuccess:msg"
/>
<field name="hidetext" type="nrtoggle"
label="COM_CONVERTFORMS_HIDE_TEXT"
description="COM_CONVERTFORMS_HIDE_TEXT_DESC"
showon="onsuccess:msg"
/>
<field name="successurl" type="text"
label="COM_CONVERTFORMS_SUCCESS_URL"
description="COM_CONVERTFORMS_SUCCESS_URL_DESC"
hint="http://"
showon="onsuccess:url">
</field>
<field name="passdata" type="list"
label="COM_CONVERTFORMS_PASS_DATA"
description="COM_CONVERTFORMS_PASS_DATA_DESC"
showon="onsuccess:url">
<option value="">JNO</option>
<option value="1">COM_CONVERTFORMS_PASS_DATA_GET</option>
<option value="2">COM_CONVERTFORMS_PASS_DATA_POST</option>
</field>
</fieldset>
<fieldset name="behavior" label="COM_CONVERTFORMS_BEHAVIOR" tab="behavior" addfieldpath="plugins/system/nrframework/fields">
<field name="state" type="list"
label="JSTATUS"
description="NR_FIELD_STATE_DESC"
class="chzn-color-state"
size="1"
default="1">
<option value="1">JPUBLISHED</option>
<option value="0">JUNPUBLISHED</option>
<option value="2">JARCHIVED</option>
<option value="-2">JTRASHED</option>
</field>
<field name="honeypot" type="nrtoggle"
label="COM_CONVERTFORMS_HONEYPOT"
description="COM_CONVERTFORMS_HONEYPOT_DESC"
checked="true"
/>
<field name="id" type="hidden"
label="JGLOBAL_FIELD_ID_LABEL"
description="JGLOBAL_FIELD_ID_DESC"
default="0"
readonly="true"
class="readonly"
/>
</fieldset>
<fieldset name="phpscripts" label="COM_CONVERTFORMS_PHPSCRIPT" tab="behavior">
<fields name="phpscripts">
<field name="formprepare" type="textarea"
label="COM_CONVERTFORMS_PHPSCRIPT_FORM_PREPARE"
description="COM_CONVERTFORMS_PHPSCRIPT_FORM_PREPARE_DESC"
rows="10"
/>
<field name="formdisplay" type="textarea"
label="COM_CONVERTFORMS_PHPSCRIPT_FORM_DISPLAY"
description="COM_CONVERTFORMS_PHPSCRIPT_FORM_DISPLAY_DESC"
rows="10"
/>
<field name="formprocess" type="textarea"
label="COM_CONVERTFORMS_PHPSCRIPT_FORM_PROCESS"
description="COM_CONVERTFORMS_PHPSCRIPT_FORM_PROCESS_DESC"
rows="10"
/>
<field name="afterformsubmission" type="textarea"
label="COM_CONVERTFORMS_PHPSCRIPT_AFTER_FORM_SUBMISSION"
description="COM_CONVERTFORMS_PHPSCRIPT_AFTER_FORM_SUBMISSION_DESC"
rows="10"
/>
<field name="notephpscripts" type="note"
description="COM_CONVERTFORMS_PHPSCRIPT_NOTE"
class="alert"
/>
</fields>
</fieldset>
</form>

View File

@@ -0,0 +1,405 @@
<?xml version="1.0" encoding="utf-8"?>
<form>
<fieldset name="box" label="Box" tab="design" addfieldpath="administrator/components/com_convertforms/models/forms/fields">
<field name="name" type="text"
label="NR_NAME"
hint="NR_NAME"
description="COM_CONVERTFORMS_FORMS_NAME_DESC"
/>
<field name="autowidth" type="list"
label="COM_CONVERTFORMS_BOX_WIDTH_TYPE"
description="COM_CONVERTFORMS_BOX_WIDTH_TYPE_DESC"
default="custom">
<option value="auto">NR_AUTO</option>
<option value="custom">NR_CUSTOM</option>
</field>
<field name="width" type="nrnumber"
label="COM_CONVERTFORMS_FORM_WIDTH"
description="COM_CONVERTFORMS_FORM_WIDTH_DESC"
default="500"
min="0"
step="50"
addon="px"
showon="autowidth:custom"
/>
<field name="bgcolor" type="color"
default="rgba(255, 255, 255, 1)"
keywords="transparent,none"
format="rgba"
label="NR_BACKGROUND_COLOR"
description="NR_BACKGROUND_COLOR_DESC"
position="bottom"
/>
<field name="bgimage" type="list"
label="COM_CONVERTFORMS_BACKGROUND_IMAGE"
description="COM_CONVERTFORMS_BACKGROUND_IMAGE_DESC"
filter="intval"
size="1"
default="0">
<option value="0">NR_NONE</option>
<option value="1">NR_UPLOAD</option>
<option value="2">COM_CONVERTFORMS_CUSTOM_URL</option>
</field>
<field name="bgurl" type="text"
hint="http://"
label="COM_CONVERTFORMS_BACKGROUND_URL"
description="COM_CONVERTFORMS_BACKGROUND_URL_DESC"
showon="bgimage:2"
/>
<field name="bgfile" type="media"
label="COM_CONVERTFORMS_BACKGROUND_FILE"
description="COM_CONVERTFORMS_BACKGROUND_FILE_DESC"
showon="bgimage:1"
/>
<field name="bgrepeat" type="list"
showon="bgimage:1,2"
label="NR_BGIMAGE_REPEAT"
description="NR_BGIMAGE_REPEAT_DESC"
default="no-repeat">
<option value="no-repeat">NR_REPEAT_NO</option>
<option value="repeat-x">NR_REPEAT_X</option>
<option value="repeat-y">NR_REPEAT_Y</option>
<option value="repeat">NR_REPEAT</option>
</field>
<field name="bgsize" type="list"
showon="bgimage:1,2"
label="NR_BGIMAGE_SIZE"
description="NR_BGIMAGE_SIZE_DESC"
default="auto">
<option value="auto">NR_AUTO</option>
<option value="cover">NR_IMAGE_SIZE_COVER</option>
<option value="contain">NR_IMAGE_SIZE_CONTAIN</option>
<option value="100% 100%">100% 100%</option>
</field>
<field name="bgposition" type="list"
showon="bgimage:1,2"
label="NR_BGIMAGE_POSITION"
description="NR_BGIMAGE_POSITION_DESC"
default="left top">
<option value="left top">Left Top</option>
<option value="left center">Left Center</option>
<option value="left bottom">Left Bottom</option>
<option value="right top">Right Top</option>
<option value="right center">Right Center</option>
<option value="right bottom">Right Bottom</option>
<option value="center top">Center Top</option>
<option value="center center">Center Center</option>
<option value="center bottom">Center Bottom</option>
</field>
<field name="spacer1"
type="spacer" hr="true"
/>
<field name="text" type="textarea"
label="COM_CONVERTFORMS_MESSAGE"
description="COM_CONVERTFORMS_MESSAGE_DESC"
class="editorx show-smart-tags"
filter="raw"
hint="Enter your message here"
/>
<field name="font" type="nrfonts"
class="nrfont"
label="COM_CONVERTFORMS_BODY_FONT"
description="COM_CONVERTFORMS_BODY_FONT_DESC"
default="Arial">
<option value=" ">JDEFAULT</option>
</field>
<field name="padding" type="nrnumber"
label="NR_PADDING"
description="NR_PADDING_DESC"
addon="px"
min="0"
step="5"
default="0">
</field>
<field name="borderradius" type="nrnumber"
label="COM_CONVERTFORMS_BOX_RADIUS"
description="COM_CONVERTFORMS_BORDER_RADIUS_DESC"
addon="px"
default="0"
min="0"
step="5"
/>
<field name="spacer2"
type="spacer" hr="true"
/>
<field name="borderstyle" type="list"
label="COM_CONVERTFORMS_FORM_BORDER_STYLE"
description="COM_CONVERTFORMS_FORM_BORDER_STYLE_DESC"
default="none">
<option value="none">NR_NONE</option>
<option value="solid">Solid</option>
<option value="dotted">Dotted</option>
<option value="dashed">Dashed</option>
<option value="double">Double</option>
<option value="groove">Groove</option>
<option value="ridge">Ridge</option>
<option value="inset">Inset</option>
<option value="outset">Outset</option>
</field>
<field name="bordercolor" type="color"
label="COM_CONVERTFORMS_FORM_BORDER_COLOR"
description="COM_CONVERTFORMS_FORM_BORDER_COLOR_DESC"
showon="borderstyle:solid,dotted,dashed,double,groove,ridge,inset,outset"
position="bottom"
/>
<field name="borderwidth" type="nrnumber"
addon="px"
default="2"
min="0"
label="COM_CONVERTFORMS_FORM_BORDER_WIDTH"
description="COM_CONVERTFORMS_FORM_BORDER_WIDTH_DESC"
showon="borderstyle:solid,dotted,dashed,double,groove,ridge,inset,outset"
/>
</fieldset>
<fieldset name="image" label="NR_IMAGE" tab="design">
<field name="image" type="list"
label="COM_CONVERTFORMS_IMAGE_SOURCE"
description="COM_CONVERTFORMS_IMAGE_SOURCE_DESC"
filter="intval"
size="1"
default="0">
<option value="0">NR_NONE</option>
<option value="1">NR_UPLOAD</option>
<option value="2">COM_CONVERTFORMS_CUSTOM_URL</option>
</field>
<field name="imageurl" type="text"
hint="http://"
label="COM_CONVERTFORMS_IMAGE_URL"
description="COM_CONVERTFORMS_IMAGE_URL_DESC"
showon="image:2"
/>
<field name="imagefile" type="media"
label="NR_IMAGE_SELECT"
description="COM_CONVERTFORMS_IMAGE_SOURCE"
showon="image:1"
/>
<field name="imgposition" type="list"
showon="image:1,2"
label="COM_CONVERTFORMS_IMAGE_POSITION"
description="COM_CONVERTFORMS_IMAGE_POSITION_DESC"
default="img-above">
<option value="img-above">COM_CONVERTFORMS_IMAGE_ABOVE</option>
<option value="img-below">COM_CONVERTFORMS_IMAGE_BELOW</option>
<option value="img-right">COM_CONVERTFORMS_IMAGE_RIGHT</option>
<option value="img-left">COM_CONVERTFORMS_IMAGE_LEFT</option>
</field>
<field name="imageautowidth" type="list"
label="COM_CONVERTFORMS_IMAGE_WIDTH_TYPE"
description="COM_CONVERTFORMS_IMAGE_WIDTH_TYPE_DESC"
default="auto"
showon="image:1,2">
<option value="auto">NR_AUTO</option>
<option value="custom">NR_CUSTOM</option>
</field>
<field name="imagewidth" type="nrnumber"
label="NR_WIDTH"
description="NR_WIDTH_DESC"
addon="px"
min="0"
step="10"
default="200"
showon="imageautowidth:custom[AND]image:1,2"
/>
<field name="imagesize" type="nrnumber"
label="COM_CONVERTFORMS_IMAGE_SIZE"
description="COM_CONVERTFORMS_IMAGE_SIZE_DESC"
addon="Columns"
max="16"
min="1"
default="6"
filter="intval"
showon="imgposition:img-right,img-left[AND]image:1,2"
/>
<field name="imagehposition" type="nrnumber"
label="COM_CONVERTFORMS_HORIZONTAL_POSITION"
description="COM_CONVERTFORMS_HORIZONTAL_POSITION_DESC"
addon="px"
default="0"
step="5"
showon="image:1,2"
/>
<field name="imagevposition" type="nrnumber"
label="COM_CONVERTFORMS_VERTICAL_POSITION"
description="COM_CONVERTFORMS_VERTICAL_POSITION_DESC"
addon="px"
default="0"
step="5"
showon="image:1,2"
/>
<field name="imagealt" type="text"
label="COM_CONVERTFORMS_IMAGE_ALT"
description="COM_CONVERTFORMS_IMAGE_ALT_DESC"
showon="image:1,2"
/>
<field name="hideimageonmobile" type="nrtoggle"
label="COM_CONVERTFORMS_HIDE_IMAGE_ON_MOBILE"
description="COM_CONVERTFORMS_HIDE_IMAGE_ON_MOBILE_DESC"
showon="image:1,2"
/>
</fieldset>
<fieldset name="layouts" label="Form" tab="design">
<field name="formposition" type="list"
label="COM_CONVERTFORMS_FORM_POSITION"
description="COM_CONVERTFORMS_FORM_POSITION_DESC"
showlabels="false"
default="form-bottom">
<option value="form-left">NR_LEFT</option>
<option value="form-bottom">NR_BOTTOM</option>
<option value="form-right">NR_RIGHT</option>
</field>
<field name="formsize" type="nrnumber"
label="COM_CONVERTFORMS_FORM_SIZE"
description="COM_CONVERTFORMS_COLUMNS_DESC"
addon="Columns"
max="16"
min="1"
default="16"
filter="intval"
showon="formposition:form-left,form-right"
/>
<field name="formbgcolor" type="color"
default=""
keywords="transparent,none"
format="rgba"
label="NR_BACKGROUND_COLOR"
description="NR_BACKGROUND_COLOR_DESC"
position="bottom"
/>
</fieldset>
<fieldset name="fields" label="COM_CONVERTFORMS_FIELDS" tab="fields">
<field name="fields" type="formfields"
hiddenLabel="true"
default='{
"fields0": {
"key": "0",
"type": "email",
"name": "email",
"label": "Enter your email address",
"placeholder": "Enter your email address"
},
"fields1": {
"key": "1",
"type": "text",
"name": "name",
"label": "Enter your name",
"placeholder": "Enter your name"
},
"fields2": {
"key": "2",
"type": "submit",
"text": "Submit"
}
}'
/>
</fieldset>
<fieldset name="formbuilder" label="COM_CONVERTFORMS_FIELDS" tab="design">
<field name="labelscolor" type="color"
default="#888"
label="COM_CONVERTFORMS_LABELS_COLOR"
description="NR_COLOR_DESC"
position="bottom"
/>
<field name="labelsfontsize" type="nrnumber"
default="15"
label="COM_CONVERTFORMS_LABELS_FONT_SIZE"
description="COM_CONVERTFORMS_LABELS_FONT_SIZE"
addon="px"
/>
<field name="labelposition" type="list"
label="COM_CONVERTFORMS_LABEL_POSITION"
description="COM_CONVERTFORMS_LABEL_POSITION_DESC"
default="top">
<option value="top">Top Aligned</option>
<option value="left">Left Aligned</option>
</field>
<field name="required_indication" type="nrtoggle"
label="COM_CONVERTFORMS_REQUIRED_INDICATION"
description="COM_CONVERTFORMS_REQUIRED_INDICATION_DESC"
checked="true"
/>
<field name="inputfontsize" type="nrnumber"
addon="px"
default="15"
min="0"
label="COM_CONVERTFORMS_INPUT_FONT_SIZE"
description="COM_CONVERTFORMS_INPUT_FONT_SIZE_DESC"
/>
<field name="inputcolor" type="color"
default="#888"
label="COM_CONVERTFORMS_INPUT_COLOR"
description="NR_COLOR_DESC"
position="bottom"
/>
<field name="inputbg" type="color"
default="#fff"
label="COM_CONVERTFORMS_INPUT_BGCOLOR"
description="NR_COLOR_DESC"
position="bottom"
/>
<field name="inputalign" type="list"
label="COM_CONVERTFORMS_FORM_TEXT_ALIGN"
description="COM_CONVERTFORMS_FORM_TEXT_ALIGN_DESC"
default="left">
<option value="left">NR_LEFT</option>
<option value="center">NR_CENTER</option>
<option value="right">NR_RIGHT</option>
</field>
<field name="inputbordercolor" type="color"
label="COM_CONVERTFORMS_INPUT_BORDER_COLOR"
description="NR_COLOR_DESC"
default="#ccc"
position="bottom"
/>
<field name="inputborderradius" type="nrnumber"
label="COM_CONVERTFORMS_BORDER_RADIUS"
description="COM_CONVERTFORMS_BORDER_RADIUS_DESC"
addon="px"
default="3"
min="0"
step="1"
/>
<field name="inputvpadding" type="nrnumber"
addon="px"
default="10"
min="0"
label="COM_CONVERTFORMS_VPADDING_SIZE"
description="COM_CONVERTFORMS_INPUT_PADDING_DESC"
/>
<field name="inputhpadding" type="nrnumber"
addon="px"
default="10"
min="0"
label="COM_CONVERTFORMS_HPADDING_SIZE"
description="COM_CONVERTFORMS_INPUT_PADDING_DESC"
/>
<field name="help_text_position" type="list"
label="COM_CONVERTFORMS_HELP_TEXT_POSITION"
description="COM_CONVERTFORMS_HELP_TEXT_POSITION_DESC"
default="after">
<option value="after">COM_CONVERTFORMS_HELP_TEXT_AFTER_INPUT</option>
<option value="before">COM_CONVERTFORMS_HELP_TEXT_BEFORE_INPUT</option>
</field>
</fieldset>
<fieldset name="advanced" label="Advanced" tab="design">
<field name="footer" type="textarea"
label="COM_CONVERTFORMS_FOOTER"
description="COM_CONVERTFORMS_FOOTER_DESC"
filter="raw"
class="editorx show-smart-tags"
/>
<field name="customcss" type="textarea"
label="COM_CONVERTFORMS_CUSTOM_CSS"
description="COM_CONVERTFORMS_CUSTOM_CSS_DESC"
rows="10"
/>
<field name="customcode" type="textarea"
label="COM_CONVERTFORMS_CUSTOM_CODE"
description="COM_CONVERTFORMS_CUSTOM_CODE_DESC"
rows="10"
/>
<field name="classsuffix" type="text"
label="COM_CONVERTFORMS_CLASS_SUFFIX"
description="COM_CONVERTFORMS_CLASS_SUFFIX_DESC"
/>
</fieldset>
</form>