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,72 @@
<?php
/**
* @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');
JHtml::stylesheet('plg_system_nrframework/chainedfields.css', ['relative' => true, 'version' => 'auto']);
JHtml::script('plg_system_nrframework/chainedfields.js', ['relative' => true, 'version' => 'auto']);
extract($displayData);
if (!$data)
{
return;
}
?>
<div
class="nr-chained-fields"
data-data-source="<?php echo $data_source; ?>"
data-csv="<?php echo htmlspecialchars(json_encode($csv)); ?>"
data-base-url="<?php echo JUri::base(); ?>"
data-loading="<?php echo \JText::_('NR_LOADING'); ?>">
<?php
if (!$value)
{
foreach ($data['inputs'] as $key => $input)
{
$selectedOrDisabled = isset($data['choices'][$key]) && !$data['choices'][$key]['isSelected'] && $key !== 0 ? 'disabled' : 'selected';
?>
<select <?php echo $selectedOrDisabled; ?> name="<?php echo $input['name']; ?>" id="<?php echo $input['id']; ?>" class="nr-chained-fields-select form-select">
<option class="placeholder" data-original="<?php echo $input['label']; ?>" value=""><?php echo $input['label']; ?></option>
<?php
if ($key == 0)
{
foreach ($data['choices'] as $key => $choice)
{
?><option value="<?php echo $choice['value']; ?>"><?php echo $choice['text']; ?></option><?php
}
}
?>
</select>
<?php
}
}
else
{
foreach ($value as $key => $value)
{
$selectedOrDisabled = empty($value['choices']) ? ' disabled' : '';
?>
<select<?php echo $selectedOrDisabled; ?> name="<?php echo $value['name']; ?>" id="<?php echo $value['id']; ?>" class="nr-chained-fields-select form-select">
<option class="placeholder" data-original="<?php echo $value['label']; ?>" value=""><?php echo $value['label']; ?></option>
<?php
if ($value['choices'])
{
foreach ($value['choices'] as $key => $choice)
{
?><option<?php echo $choice['isSelected'] ? ' selected' : ''; ?> value="<?php echo $choice['value']; ?>"><?php echo $choice['text']; ?></option><?php
}
}
?>
</select>
<?php
}
}
?>
</div>

View File

@@ -0,0 +1,45 @@
<?php
/**
* @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');
JHtml::stylesheet('plg_system_nrframework/conditionbuilder.css', ['relative' => true, 'version' => 'auto']);
JHtml::script('plg_system_nrframework/helper.js', ['relative' => true, 'version' => 'auto']);
JHtml::script('plg_system_nrframework/conditionbuilder.js', ['relative' => true, 'version' => 'auto']);
extract($displayData);
?>
<div class="cb"
data-token="<?php echo JSession::getFormToken(); ?>"
data-root="<?php echo JURI::base(); ?>"
data-option="<?php echo JFactory::getApplication()->input->get('option'); ?>"
data-layout="<?php echo JFactory::getApplication()->input->get('layout'); ?>"
data-include-rules="<?php echo $include_rules; ?>"
data-exclude-rules="<?php echo $exclude_rules; ?>">
<div class="cb-groups"></div>
<div class="actions">
<a class="icon tf-cb-add-new-group" href="#" title="<?php echo JText::_('NR_CB_ADD_CONDITION_GROUP'); ?>">
<span class="icon icon-plus-2"></span>
<span class="text"><?php echo JText::_('NR_CB_ADD_CONDITION_GROUP'); ?></span>
<svg class="loading" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14px" height="14px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
<circle cx="50" cy="50" fill="none" stroke="#333" stroke-width="10" r="35" stroke-dasharray="164.93361431346415 56.97787143782138">
<animateTransform attributeName="transform" type="rotate" repeatCount="indefinite" dur="1s" values="0 50 50;360 50 50" keyTimes="0;1"></animateTransform>
</circle>
</svg>
</a>
</div>
</div>
<?php
echo $geo_modal;
if (!empty($available_condititions))
{
\NRFramework\HTML::renderProOnlyModal();
}
?>

View File

@@ -0,0 +1,75 @@
<?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');
extract($displayData);
?>
<div class="cb-group" data-key="<?php echo $groupKey ?>">
<div class="cb-item-toolbar group">
<div class="show">
<?php echo JText::_('NR_CB_SHOW_WHEN'); ?>
<select name="<?php echo $name; ?>[<?php echo $groupKey; ?>][matching_method]" class="form-select width-auto form-select-small">
<option <?php echo (isset($groupConditions['matching_method']) && $groupConditions['matching_method'] == 'all') ? 'selected ' : ''; ?>value="all"><?php echo strtolower(JText::_('NR_ALL')); ?></option>
<option <?php echo (isset($groupConditions['matching_method']) && $groupConditions['matching_method'] == 'any') ? 'selected ' : ''; ?>value="any"><?php echo strtolower(JText::_('NR_ANY')); ?></option>
</select>
<?php echo JText::_('NR_CB_OF_THE_CONDITIONS_MATCH'); ?>
</div>
<div class="cb-item-buttons">
<div class="links">
<a class="cb-button only-icon remove removeGroupCondition" href="#" title="<?php echo \JText::_('NR_CB_TRASH_CONDITION_GROUP'); ?>"><span class="icon icon-trash"></span></a>
</div>
<div class="toggle-status" title="<?php echo \JText::_('NR_CB_TOGGLE_RULE_GROUP_STATUS') ?>">
<?php
$checked = isset($groupConditions['enabled']) && (string) $groupConditions['enabled'] == '1';
require_once JPATH_PLUGINS . '/system/nrframework/fields/nrtoggle.php';
$field = new \JFormFieldNRToggle();
$element = new \SimpleXMLElement('<field name="' . $name . '[' . $groupKey . '][enabled]" type="NRToggle" class="small" checked="' . $checked . '" />');
$field->setup($element, null);
echo $field->__get('input');
?>
</div>
</div>
</div>
<div class="cb-items">
<?php
// Array of conditions items in HTML format
if (isset($condition_items_parsed) && is_array($condition_items_parsed))
{
foreach ($condition_items_parsed as $html)
{
echo $html;
}
}
// Render conditions items in raw format
else if (isset($groupConditions['rules']))
{
foreach ($groupConditions['rules'] as $conditionKey => $condition)
{
echo \NRFramework\Conditions\ConditionBuilder::add($name, $groupKey, $conditionKey, (array) $condition, $include_rules, $exclude_rules);
}
}
?>
</div>
<div class="item-group-footer text-right text-end">
<a class="cb-button icon btn outline tf-cb-add-new-group" href="#" title="<?php echo JText::_('NR_CB_ADD_CONDITION'); ?>">
<span class="icon icon-plus-2"></span>
<span class="text"><?php echo JText::_('NR_CB_ADD_CONDITION'); ?></span>
<svg class="loading" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14px" height="14px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
<circle cx="50" cy="50" fill="none" stroke="#333" stroke-width="10" r="35" stroke-dasharray="164.93361431346415 56.97787143782138">
<animateTransform attributeName="transform" type="rotate" repeatCount="indefinite" dur="1s" values="0 50 50;360 50 50" keyTimes="0;1"></animateTransform>
</circle>
</svg>
</a>
</div>
</div>

View File

@@ -0,0 +1,46 @@
<?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');
extract($displayData);
?>
<div class="cb-item" data-key="<?php echo $conditionKey ?>">
<div class="cb-item-toolbar">
<div class="cb-dropdown">
<?php echo $toolbar->renderFieldset('base'); ?>
</div>
<div class="cb-item-buttons">
<svg class="loading" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="25px" height="25px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
<circle cx="50" cy="50" fill="none" stroke="#dddddd" stroke-width="10" r="35" stroke-dasharray="164.93361431346415 56.97787143782138">
<animateTransform attributeName="transform" type="rotate" repeatCount="indefinite" dur="1s" values="0 50 50;360 50 50" keyTimes="0;1"></animateTransform>
</circle>
</svg>
<div class="links">
<a class="cb-button only-icon remove tf-cb-remove-condition" href="#" title="<?php echo \JText::_('NR_CB_TRASH_CONDITION'); ?>"><span class="icon icon-trash"></span></a>
<a class="cb-button only-icon tf-cb-add-new-group" href="#" title="<?php echo \JText::_('NR_CB_ADD_CONDITION'); ?>"><span class="icon icon-plus-2"></span></a>
</div>
<div class="toggle-status" title="<?php echo \JText::_('NR_CB_TOGGLE_RULE_STATUS') ?>">
<?php
require_once JPATH_PLUGINS . '/system/nrframework/fields/nrtoggle.php';
$field = new \JFormFieldNRToggle();
$element = new \SimpleXMLElement('<field name="' . $name . '[enabled]" type="NRToggle" class="small" checked="' . $enabled . '" />');
$field->setup($element, null);
echo $field->__get('input');
?>
</div>
</div>
</div>
<div class="cb-item-content">
<?php echo $options ? $options : '<div class="select-condition-message">' . JText::_('NR_CB_SELECT_CONDITION_GET_STARTED') . '</div>'; ?>
</div>
</div>

View File

@@ -0,0 +1,36 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2018 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);
?>
<div class="tf-dimension-control">
<div class="tf-dimension-controls">
<?php
foreach ($dimensions as $key => $label)
{
$item_name = $name . '[' . $key . ']';
$item_value = isset($value->$key) ? $value->$key : '';
$is_linked = isset($value->linked) ? $value->linked : $linked;
?>
<div class="item">
<input type="number" value="<?php echo $item_value; ?>" class="tf-dimension-control-input" id="<?php echo $item_name; ?>" name="<?php echo $item_name; ?>" />
<label for="<?php echo $item_name; ?>"><?php echo JText::_($label) ?></label>
</div>
<?php
}
?>
</div>
<a href="#" class="icon-link tf-dimension-control-link-button<?php echo $is_linked ? ' active' : ''; ?>"></a>
<input type="hidden" class="tf-dimension-control-link-value" value="<?php echo $is_linked ? '1' : '0'; ?>" name="<?php echo $name; ?>[linked]" />
</div>

View File

@@ -0,0 +1,47 @@
<?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');
extract($displayData);
if (empty($images))
{
return;
}
$value = !empty($value) ? $value : $images[0];
$heightAtt = !empty($height) ? ' style="height:' . $height . ';"' : '';
?>
<div class="nr-images-selector <?php echo $class; ?>" style="max-width: <?php echo $width;?>;">
<?php
if ($required)
{
?><input type="hidden" required class="required" id="<?php echo $id; ?>"/><?php
}
foreach ($images as $key => $img)
{
$id = "nr-images-selector-" . md5(uniqid() . $img);
$item_value = $key_type === 'filename' ? pathinfo($img, PATHINFO_FILENAME) : $img;
$isChecked = $value == $item_value ? ' checked="checked"' : '';
?>
<div class="nr-images-selector-item image"<?php echo $heightAtt; ?>>
<input type="radio" id="<?php echo $id; ?>" value="<?php echo $item_value; ?>" name="<?php echo $name; ?>"<?php echo $isChecked; ?> />
<label for="<?php echo $id; ?>"><img src="<?php echo JURI::root() . $img; ?>" alt="<?php echo $img; ?>" /></label>
</div>
<?php
}
?>
</div>

View File

@@ -0,0 +1,76 @@
<?php
/**
* @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');
JHtml::stylesheet('plg_system_nrframework/inlinefileupload.css', ['relative' => true, 'version' => 'auto']);
JHtml::script('plg_system_nrframework/inlinefileupload.js', ['relative' => true, 'version' => 'auto']);
extract($displayData);
?>
<div class="nr-inline-file-upload" data-name="<?php echo $name; ?>" data-upload-folder="<?php echo $upload_folder; ?>" data-base-url="<?php echo JUri::base(); ?>">
<div class="loader"><?php echo \JText::_('NR_LOADING'); ?></div>
<div class="upload-area<?php echo $value ? ' hidden' : ''; ?>">
<button class="file-selector-opener btn"><?php echo \JText::_('NR_SELECT_A_FILE'); ?></button>
<input
type="file"
class="file-selector"
<?php
if (!empty($accept))
{
?>
accept="<?php echo $accept; ?>"
<?php
}
?>
/>
</div>
<div class="uploaded-files">
<?php
if ($value)
{
if (file_exists($value))
{
$filePathInfo = NRFramework\File::pathinfo($value);
$file_name = $filePathInfo['basename'];
$file_size = JFile::exists($value) ? filesize($value) : 0;
$file_size = $file_size ? number_format($file_size / 1024, 2) . ' KB' : $file_size;
?>
<div class="nr-inline-file-upload-item">
<span class="icon icon-file-2"></span>
<span class="file-name"><?php echo $file_name; ?></span>
<span class="size"><?php echo $file_size; ?></span>
<a href="#" class="remove icon-cancel-circle nr-inline-file-upload-item-remove" data-confirm="<?php echo \JText::_('NR_ARE_YOU_SURE_YOU_WANT_TO_DELETE_THIS_ITEM') ?>"></a>
<input type="hidden" value="<?php echo $value; ?>" name="<?php echo $name; ?>">
</div>
<?php
}
else
{
?>
<div class="error visible">
<?php echo \JText::_('NR_UPLOADED_FILE_NO_LONGER_EXISTS'); ?>
<div class="actions">
<button class="nr-inline-file-upload-item-clear btn"><?php echo \JText::_('NR_CLEAR'); ?></button>
</div>
<input type="hidden" value="" name="<?php echo $name; ?>">
</div>
<?php
}
}
?>
</div>
<div class="error"></div>
</div>
<template class="nr-inline-file-upload-item">
<span class="icon icon-file-2"></span>
<span class="file-name"></span>
<span class="size"></span>
<a href="#" class="remove icon-cancel-circle nr-inline-file-upload-item-remove" data-confirm="<?php echo \JText::_('NR_ARE_YOU_SURE_YOU_WANT_TO_DELETE_THIS_ITEM') ?>"></a>
</template>

View File

@@ -0,0 +1,52 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2022 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);
if (!$filters)
{
return;
}
?>
<div class="tf-library-filters">
<?php
foreach ($filters as $key => $filter)
{
?>
<div class="tf-library-filter-item open" data-type="<?php echo $key; ?>">
<div class="tf-library-filter-item-label">
<span><?php echo $filter['label']; ?></span>
<svg class="tf-library-filter-item-toggle" width="10" height="7" viewBox="0 0 10 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path opacity="0.5" d="M9 1.5L5.70711 4.79289C5.31658 5.18342 4.68342 5.18342 4.29289 4.79289L1 1.5" stroke="currentColor" stroke-linecap="round"/>
</svg>
</div>
<div class="tf-library-filter-choices">
<?php
foreach ($filter['items'] as $_key => $label)
{
$choice_item_key = 'tf_library_filters' . $key . '_filter_' . $_key;
?>
<div class="tf-library-filter-choice-item">
<input type="checkbox" class="tf-library-filter-choice-item-checkbox" id="<?php echo $choice_item_key; ?>" value="<?php echo $label; ?>" />
<label for="<?php echo $choice_item_key; ?>"><?php echo $label ?></label>
</div>
<?php
}
?>
</div>
</div>
<?php
}
?>
</div>

View File

@@ -0,0 +1,32 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2022 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);
?>
<div class="tf-library-footer">
<a href="<?php echo $create_new_template_link; ?>" target="_blank">
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="8" cy="8" r="6" stroke="currentColor" />
<line x1="8" y1="5" x2="8" y2="11" stroke="currentColor" stroke-linecap="round" />
<line x1="11" y1="8" x2="5" y2="8" stroke="currentColor" stroke-linecap="round" />
</svg>
<?php echo \JText::_('NR_START_FROM_SCRATCH'); ?>
</a>
<a href="https://www.tassos.gr/contact?topic=Custom Development&plugin=<?php $project_name; ?>" target="_blank">
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.6 11H6.1C6.1 10.7239 5.87614 10.5 5.6 10.5V11ZM5.6 14H5.1C5.1 14.1905 5.20823 14.3644 5.37912 14.4486C5.55002 14.5327 5.75387 14.5125 5.90486 14.3963L5.6 14ZM3 2.5H13V1.5H3V2.5ZM13.5 3V10H14.5V3H13.5ZM2.5 10V3H1.5V10H2.5ZM5.6 10.5H3V11.5H5.6V10.5ZM6.1 14V11H5.1V14H6.1ZM13 10.5H9.84012V11.5H13V10.5ZM8.92556 10.8111L5.29514 13.6037L5.90486 14.3963L9.53527 11.6037L8.92556 10.8111ZM1.5 10C1.5 10.8284 2.17157 11.5 3 11.5V10.5C2.72386 10.5 2.5 10.2761 2.5 10H1.5ZM13.5 10C13.5 10.2761 13.2761 10.5 13 10.5V11.5C13.8284 11.5 14.5 10.8284 14.5 10H13.5ZM9.84012 10.5C9.50931 10.5 9.18777 10.6094 8.92556 10.8111L9.53527 11.6037C9.62267 11.5365 9.72985 11.5 9.84012 11.5V10.5ZM13 2.5C13.2761 2.5 13.5 2.72386 13.5 3H14.5C14.5 2.17157 13.8284 1.5 13 1.5V2.5ZM3 1.5C2.17157 1.5 1.5 2.17157 1.5 3H2.5C2.5 2.72386 2.72386 2.5 3 2.5V1.5Z" fill="currentColor"/>
</svg>
<?php echo \JText::_('NR_REQUEST_TEMPLATE'); ?>
</a>
</div>

View File

@@ -0,0 +1,54 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2022 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);
use Joomla\CMS\Language\Text;
?>
<div class="tf-template-library-item-info">
<div class="item-description"></div>
<div class="template-details">
<div class="items tf-library-info-grid cols-3">
<div class="tf-cell category">
<div class="title is-grey"><?php echo $category_label; ?>:</div>
<div class="content"></div>
</div>
<div class="tf-cell solution">
<div class="title is-grey"><?php echo Text::_('NR_SOLUTION'); ?>:</div>
<div class="content"></div>
</div>
<div class="tf-cell goal">
<div class="title is-grey"><?php echo Text::_('NR_GOAL'); ?>:</div>
<div class="content"></div>
</div>
</div>
</div>
<div class="template-details compatibility-details">
<div class="details-header-items">
<div class="tf-library-info-grid cols-3">
<div class="tf-cell"><?php echo Text::_('NR_REQUIREMENTS'); ?></div>
<div class="tf-cell"><?php echo Text::_('NR_DETECTED'); ?></div>
<div class="tf-cell"><?php echo Text::_('NR_CHECK'); ?></div>
</div>
</div>
<div class="dependency-items"></div>
<div class="template dependency-item tf-library-info-grid cols-3">
<div class="tf-cell requirement"></div>
<div class="tf-cell detected"></div>
<div class="tf-cell value">
<svg class="checkmark is-hidden" width="20" height="16" viewBox="0 0 20 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 8.65556L6.89552 14.5L19 1.5" stroke="#82DE78" stroke-width="2" stroke-linecap="round"/></svg>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,48 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2022 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);
?>
<div class="tf-library-list">
<div class="tf-library-item blank_popup">
<span class="tf-library-item-wrap">
<a class="parent" href="<?php echo $create_new_template_link; ?>">
<svg width="32" height="32" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="12" cy="12" r="10" stroke="currentColor"/>
<line x1="12" y1="7.5" x2="12" y2="16.5" stroke="currentColor" stroke-linecap="round"/>
<line x1="16.5" y1="12" x2="7.5" y2="12" stroke="currentColor" stroke-linecap="round"/>
</svg>
<span class="title"><?php echo $blank_template_label; ?></span>
<span class="description"><?php echo \JText::_('NR_START_FROM_SCRATCH'); ?></span>
</a>
</span>
</div>
<?php
// Skeleton
for ($i = 0; $i < 15; $i++)
{
?>
<div class="tf-library-item skeleton">
<div class="tf-library-item-wrap">
<div></div>
<div class="actions">
<div></div>
<div></div>
</div>
</div>
</div>
<?php
}
?>
</div>

View File

@@ -0,0 +1,484 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2022 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);
if (!$templates)
{
return;
}
use Joomla\CMS\Language\Text;
if (!$main_category_label)
{
$main_category_label = Text::_('NR_CATEGORY');
}
$parsed_project_version = strstr($project_version, '-', true);
$project_version = $parsed_project_version ? $parsed_project_version : $project_version;
$j_version = JVERSION;
$capabilities_solution_label = Text::_('NR_SOLUTION');
$capabilities_content_label = Text::_('NR_GOAL');
$capabilities_joomla_label = Text::_('NR_UPDATE_JOOMLA');
$capabilities_joomla_url = \JURI::base() . 'index.php?option=com_joomlaupdate';
$capabilities_project_label = sprintf(Text::_('NR_UPDATE_EXTENSION_X'), $project_name);
$capabilities_project_url = $update_url = \JURI::base() . 'index.php?option=com_installer&view=update';
$install_url = \JURI::base() . 'index.php?option=com_installer&view=install';
$install_svg_icon = '<svg class="icon" width="16" height="14" viewBox="0 0 16 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2 10L2 13L14 13L14 10" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/><path d="M8.5 1C8.5 0.723858 8.27614 0.5 8 0.5C7.72386 0.5 7.5 0.723858 7.5 1L8.5 1ZM7.64645 10.3536C7.84171 10.5488 8.15829 10.5488 8.35355 10.3536L11.5355 7.17157C11.7308 6.97631 11.7308 6.65973 11.5355 6.46447C11.3403 6.2692 11.0237 6.2692 10.8284 6.46447L8 9.29289L5.17157 6.46447C4.97631 6.2692 4.65973 6.2692 4.46447 6.46447C4.2692 6.65973 4.2692 6.97631 4.46447 7.17157L7.64645 10.3536ZM7.5 1L7.5 10L8.5 10L8.5 1L7.5 1Z" fill="currentColor"/></svg>';
$activate_svg_icon = '<svg class="icon" width="16" height="14" viewBox="0 0 16 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2 10L2 13L14 13L14 10" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/><path d="M8.5 1C8.5 0.723858 8.27614 0.5 8 0.5C7.72386 0.5 7.5 0.723858 7.5 1L8.5 1ZM7.64645 10.3536C7.84171 10.5488 8.15829 10.5488 8.35355 10.3536L11.5355 7.17157C11.7308 6.97631 11.7308 6.65973 11.5355 6.46447C11.3403 6.2692 11.0237 6.2692 10.8284 6.46447L8 9.29289L5.17157 6.46447C4.97631 6.2692 4.65973 6.2692 4.46447 6.46447C4.2692 6.65973 4.2692 6.97631 4.46447 7.17157L7.64645 10.3536ZM7.5 1L7.5 10L8.5 10L8.5 1L7.5 1Z" fill="currentColor"/></svg>';
$update_svg_icon = '<svg class="icon" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.50006 4.6001L7.70013 2.80017L9.50006 1.00024" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/><path d="M8.60022 2.80029C11.5824 2.80029 14 5.21786 14 8.20008C14 9.79931 13.3048 11.2362 12.2001 12.2249" stroke="currentColor" stroke-linecap="round"/><path d="M6.5 11.7993L8.29993 13.5992L6.5 15.3992" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/><path d="M7.39979 13.5989C4.41757 13.5989 2 11.1814 2 8.19915C2 6.59991 2.69522 5.16305 3.79993 4.17432" stroke="currentColor" stroke-linecap="round"/></svg>';
$pro_svg_icon = '<svg class="icon" width="16" height="14" viewBox="0 0 16 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M7.5 10C7.5 10.2761 7.72386 10.5 8 10.5C8.27614 10.5 8.5 10.2761 8.5 10L7.5 10ZM8.35355 3.64645C8.15829 3.45118 7.84171 3.45118 7.64645 3.64645L4.46447 6.82843C4.2692 7.02369 4.2692 7.34027 4.46447 7.53553C4.65973 7.7308 4.97631 7.7308 5.17157 7.53553L8 4.70711L10.8284 7.53553C11.0237 7.7308 11.3403 7.7308 11.5355 7.53553C11.7308 7.34027 11.7308 7.02369 11.5355 6.82843L8.35355 3.64645ZM8.5 10L8.5 4L7.5 4L7.5 10L8.5 10Z" fill="currentColor"/><path d="M14 7C14 10.3137 11.3137 13 8 13C4.68629 13 2 10.3137 2 7C2 3.68629 4.68629 1 8 1C11.3137 1 14 3.68629 14 7Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/></svg>';
$key_svg_icon = '<svg class="icon" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="4.81803" cy="11.3135" r="3" transform="rotate(-45 4.81803 11.3135)" stroke="currentColor"/><line x1="6.93933" y1="9.19231" x2="13.3033" y2="2.82835" stroke="currentColor" stroke-linecap="round"/><path d="M12.5962 4.24219L14.0104 5.6564" stroke="currentColor" stroke-linecap="round"/><path d="M10.4749 6.36377L11.182 7.07088" stroke="currentColor" stroke-linecap="round"/></svg>';
$insert_svg_icon = '<svg class="icon" width="16" height="14" viewBox="0 0 16 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3 4L3 1L14 1L14 13L3 13L3 10" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/><path d="M2 6.5C1.72386 6.5 1.5 6.72386 1.5 7C1.5 7.27614 1.72386 7.5 2 7.5V6.5ZM11.3536 7.35355C11.5488 7.15829 11.5488 6.84171 11.3536 6.64645L8.17157 3.46447C7.97631 3.2692 7.65973 3.2692 7.46447 3.46447C7.2692 3.65973 7.2692 3.97631 7.46447 4.17157L10.2929 7L7.46447 9.82843C7.2692 10.0237 7.2692 10.3403 7.46447 10.5355C7.65973 10.7308 7.97631 10.7308 8.17157 10.5355L11.3536 7.35355ZM2 7.5L11 7.5V6.5L2 6.5V7.5Z" fill="currentColor"/></svg>';
$error_svg_icon = '<svg class="icon" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.3351 6.19586L14.8335 6.1558C14.8198 5.98487 14.7194 5.8329 14.5676 5.75318C14.4157 5.67346 14.2336 5.67711 14.0851 5.76285L14.3351 6.19586ZM9.26069 9.12581L9.54456 8.7142C9.38565 8.60461 9.17786 8.59628 9.01069 8.6928L9.26069 9.12581ZM7.8715 6.71947L8.1215 7.15248C8.28866 7.05597 8.38534 6.87187 8.3699 6.67947L7.8715 6.71947ZM12.9456 3.78971L13.1956 4.22272C13.3441 4.13697 13.4383 3.98108 13.4452 3.80971C13.4521 3.63834 13.3706 3.47541 13.2294 3.37807L12.9456 3.78971ZM10.8097 5.02286L10.5597 4.58984C10.415 4.67343 10.3215 4.82385 10.3108 4.99068L10.8097 5.02286ZM10.7023 6.68909L10.2033 6.65691C10.1903 6.85835 10.2997 7.04783 10.4807 7.1373L10.7023 6.68909ZM12.199 7.42915L11.9774 7.87735C12.1273 7.95145 12.3042 7.94575 12.449 7.86216L12.199 7.42915ZM12.9741 9.69824C14.2675 8.9515 14.9456 7.54965 14.8335 6.1558L13.8367 6.23593C13.919 7.25948 13.4207 8.2857 12.4741 8.83221L12.9741 9.69824ZM8.97683 9.53742C10.1279 10.3313 11.6808 10.4449 12.9741 9.69824L12.4741 8.83221C11.5276 9.37869 10.3898 9.29714 9.54456 8.7142L8.97683 9.53742ZM4.02698 12.7248L9.51069 9.55882L9.01069 8.6928L3.52698 11.8588L4.02698 12.7248ZM1.44618 12.0333C1.96789 12.937 3.12335 13.2466 4.02698 12.7248L3.52698 11.8588C3.10164 12.1044 2.55777 11.9587 2.3122 11.5333L1.44618 12.0333ZM2.1377 9.45253C1.23407 9.97424 0.924469 11.1297 1.44618 12.0333L2.3122 11.5333C2.06664 11.108 2.21237 10.5641 2.6377 10.3186L2.1377 9.45253ZM7.6215 6.28646L2.1377 9.45253L2.6377 10.3186L8.1215 7.15248L7.6215 6.28646ZM9.23251 3.21753C7.93928 3.96418 7.26126 5.36578 7.3731 6.75946L8.3699 6.67947C8.28777 5.65605 8.78604 4.63 9.73251 4.08356L9.23251 3.21753ZM13.2294 3.37807C12.0784 2.58449 10.5257 2.47093 9.23251 3.21753L9.73251 4.08356C10.6789 3.53714 11.8166 3.61861 12.6618 4.20136L13.2294 3.37807ZM11.0597 5.45587L13.1956 4.22272L12.6956 3.3567L10.5597 4.58984L11.0597 5.45587ZM11.2012 6.72127L11.3087 5.05504L10.3108 4.99068L10.2033 6.65691L11.2012 6.72127ZM12.4206 6.98094L10.9239 6.24089L10.4807 7.1373L11.9774 7.87735L12.4206 6.98094ZM14.0851 5.76285L11.949 6.99614L12.449 7.86216L14.5851 6.62888L14.0851 5.76285Z" fill="currentColor"/></svg>';
$loading_svg_icon = '<svg class="icon loading" width="16" height="16" xmlns="http://www.w3.org/2000/svg" style="shape-rendering: auto;" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"><circle cx="50" cy="50" fill="none" stroke="currentColor" stroke-width="10" r="40" stroke-dasharray="160.22122533307947 55.40707511102649"><animateTransform attributeName="transform" type="rotate" repeatCount="indefinite" dur="1s" values="0 50 50;360 50 50" keyTimes="0;1"></animateTransform></circle></svg>';
$info_item_atts = defined('nrJ4') ? '' : ' data-bs-toggle="modal" data-toggle="modal" data-bs-target="#tf-library-item-info-popup" href="#tf-library-item-info-popup"';
$info_item_class = defined('nrJ4') ? ' tf-library-template-item-info-popup-trigger' : '';
foreach ($templates as $template_key => $template)
{
$is_favorite = array_key_exists($template->id, $favorites);
$image = isset($template->image) ? $template->image : '';
$external_extensions = $template->fields->{'templates-external-extensions'};
$item_class = '';
$valid_j_version = $valid_item_version = $valid_third_party_extension_version = false;
$required_j_version = isset($template->fields->{'templates-minimum-joomla-version'}) && !empty($template->fields->{'templates-minimum-joomla-version'}) ? $template->fields->{'templates-minimum-joomla-version'} : '';
$required_item_version = isset($template->fields->{'templates-minimum-extension-version'}) && !empty($template->fields->{'templates-minimum-extension-version'}) ? $template->fields->{'templates-minimum-extension-version'} : '';
$errors = [];
$capabilities = [
'pro' => [
'requirement' => $template->is_pro ? 'pro' : 'lite',
'detected' => $project_license_type === 'lite' ? 'lite' : 'pro'
],
'category' => [
'value' => $template->category,
'label' => $main_category_label
],
'solution' => [
'value' => $template->filters->solution,
'label' => $capabilities_solution_label
],
'goal' => [
'value' => $template->filters->goal,
'label' => $capabilities_content_label
],
'joomla' => [
'value' => $required_j_version,
'label' => $capabilities_joomla_label,
'icon' => '',
'url' => $capabilities_joomla_url,
'detected' => $j_version
],
'project' => [
'value' => $required_item_version,
'label' => $capabilities_project_label,
'icon' => '',
'url' => $capabilities_project_url,
'detected' => $project_version
],
'third_party_dependencies' => [
'value' => $external_extensions,
'errors' => []
],
'license_error' => [
'value' => ''
]
];
/**
* A template may not be available for the following reasons:
* - User has an older version than the one specified in the template
* - Extension version may be outdated
* - 3rd-party extensions are required and missing (not installed and/or not activated)
*/
// Joomla Version Check
if ($required_j_version)
{
$valid_j_version = !empty(trim($required_j_version)) ? version_compare($j_version, $required_j_version, '>=') : false;
if (!$valid_j_version)
{
$capabilities['joomla']['icon'] = 'update';
$errors['joomla'] = $capabilities['joomla'];
$errors['joomla']['full_label'] = Text::_('NR_UPDATE_JOOMLA_TO_INSERT_TEMPLATE');
}
}
// Item Version Check
if ($required_item_version)
{
$valid_item_version = !empty(trim($required_item_version)) ? version_compare($project_version, $required_item_version, '>=') : false;
if (!$valid_item_version)
{
$capabilities['project']['icon'] = 'update';
$errors['project'] = $capabilities['project'];
$errors['project']['full_label'] = sprintf(Text::_('NR_UPDATE_EXTENSION_X_TO_INSERT_TEMPLATE'), $project_name);
}
}
// 3rd party extensions Check
if (is_array($external_extensions) && count($external_extensions))
{
foreach ($external_extensions as $key => $external_extension)
{
$valid_third_party_extension_version = false;
$icon = $label = $full_label = $detected = 'none';
if (!$external_extension->slug || !$external_extension->name || !$external_extension->version)
{
continue;
}
// 3rd-party extension is not installed
if (!\NRFramework\Extension::isInstalled($external_extension->slug))
{
$icon = 'install';
$label = sprintf(Text::_('NR_INSTALL_EXTENSION_X'), $external_extension->name);
$full_label = sprintf(Text::_('NR_INSTALL_EXTENSION_X_TO_INSERT_TEMPLATE'), $external_extension->name);
}
// 3rd-party extension is installed but not active
else if (!\NRFramework\Extension::isEnabled($external_extension->slug))
{
$icon = 'activate';
$label = sprintf(Text::_('NR_ACTIVATE_EXTENSION_X'), $external_extension->name);
$full_label = sprintf(Text::_('NR_ACTIVATE_EXTENSION_X_TO_INSERT_TEMPLATE'), $external_extension->name);
}
// 3rd-party extension is installed, active but we need to check whether its version is valid
else
{
$third_party_extension_installed_version = \NRFramework\Extension::getVersion($external_extension->slug);
$parsed_third_party_extension_installed_version = strstr($third_party_extension_installed_version, '-', true);
$third_party_extension_installed_version = $parsed_third_party_extension_installed_version ? $parsed_third_party_extension_installed_version : $third_party_extension_installed_version;
$valid_third_party_extension_version = !empty(trim($external_extension->version)) ? version_compare($third_party_extension_installed_version, $external_extension->version, '>=') : false;
$icon = 'update';
$label = sprintf(Text::_('NR_UPDATE_EXTENSION_X'), $external_extension->name);
$full_label = sprintf(Text::_('NR_UPDATE_EXTENSION_X_TO_INSERT_TEMPLATE'), $external_extension->name);
$detected = $third_party_extension_installed_version;
}
// Set third party item information
$capabilities['third_party_dependencies']['value'][$key]->icon = $icon;
$capabilities['third_party_dependencies']['value'][$key]->label = $label;
$capabilities['third_party_dependencies']['value'][$key]->full_label = $full_label;
$capabilities['third_party_dependencies']['value'][$key]->detected = $detected;
$capabilities['third_party_dependencies']['value'][$key]->url = $icon === 'update' ? $update_url : $install_url;
$capabilities['third_party_dependencies']['value'][$key]->valid = $valid_third_party_extension_version;
if (!$valid_third_party_extension_version)
{
// Add the external extensions we are having issues with
$capabilities['third_party_dependencies']['errors'][] = $external_extension->name;
// Set error index used to retrieve this error message action
$capabilities['third_party_dependencies']['error_index'] = $key;
// Add the error
$errors['third_party_dependencies_' . $key] = $capabilities['third_party_dependencies'];
}
}
}
/**
* Check other cases where a template may not be available:
* - Is Pro but we have the Free version
* - Is Pro and template is Pro
* - We have not entered a license key OR We have entered a license key but it's not valid
*/
// Is Pro but we have the Free version
if ($project_license_type === 'lite' && $template->is_pro)
{
$errors = [
'pro' => [
'icon' => 'pro',
'class' => 'red',
'data_attributes' => 'data-pro-only="' . $template->title . '"',
'label' => Text::_('NR_UPGRADE_TO_UC_PRO'),
'full_label' => Text::_('NR_UPGRADE_TO_PRO_TO_UNLOCK_TEMPLATE')
]
] + $errors;
}
// Is Pro and template is Pro
else if ($project_license_type === 'pro' && $template->is_pro && (empty($license_key) || $license_key_status !== 'valid'))
{
// We have not entered a license key
if (empty($license_key))
{
$errors['license'] = [
'icon' => 'key',
'url' => $product_license_settings_url,
'label' => Text::_('NR_SET_LICENSE_KEY'),
'full_label' => Text::_('NR_NO_LICENSE_KEY_DETECTED')
];
$capabilities['license_error']['value'] = 'missing';
}
// We have entered a license key but it's invalid/expired
else if ($license_key_status !== 'valid')
{
$errors['license'] = [
'icon' => 'key',
'url' => 'https://www.tassos.gr/subscriptions',
'label' => Text::_('NR_INVALID_EXPIRED_LICENSE_KEY'),
'full_label' => Text::_('NR_INVALID_LICENSE_KEY_ENTERED')
];
$capabilities['license_error']['value'] = 'invalid_expired';
}
}
if ($errors)
{
$item_class .= ' has-errors';
// If its a PRO template and we are not a PRO user, add a "is-pro" CSS class
if ($template->is_pro && $project_license_type === 'lite')
{
$item_class .= ' is-pro';
}
}
?>
<div
class="tf-library-item<?php echo $item_class; ?>"
data-id="<?php echo $template->id; ?>"
data-note="<?php echo $template->fields->{'templates-note'}; ?>"
<?php
foreach ($template->sort as $sort_key => $sort_value)
{
?>data-sort-<?php echo $sort_key; ?>="<?php echo $sort_value; ?>"<?php
}
?>
data-filter-category="<?php echo $template->category; ?>"
<?php foreach ($template->filters as $filter_key => $filter_value): ?>
data-filter-<?php echo $filter_key; ?>="<?php echo $filter_value; ?>"
<?php endforeach; ?>
<?php if ($project_license_type === 'lite'): ?>
data-filter-compatibility="<?php echo $template->is_pro ? 'Pro' : 'Free'; ?>"
<?php endif; ?>
data-title="<?php echo $template->title; ?>"
data-capabilities="<?php echo htmlspecialchars(json_encode($capabilities), ENT_QUOTES, 'UTF-8'); ?>">
<div class="tf-library-item-wrap">
<div class="tf-template-item-message is-hidden">
<span class="tf-template-item-message-text">This is a message</span>
<svg class="fpf-library-messages-hide-btn" height="14" viewBox="0 0 14 15" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="14" y="12.5933" width="2.47487" height="17.3241" transform="rotate(135 14 12.5933)" fill="currentColor"></rect>
<rect width="2.47487" height="17.3241" transform="matrix(-0.707109 -0.707105 0.707109 -0.707105 1.75 14.3433)" fill="currentColor"></rect>
</svg>
</div>
<div class="tf-library-item-image-wrapper">
<div class="tf-library-item-image-inner">
<img loading="lazy" src="<?php echo $image; ?>" alt="<?php echo $template->title; ?>" />
<div class="tf-library-item-hover">
<a href="#templates-library-previewer" class="tf-button outline tf-library-preview-item" title="<?php echo Text::_('NR_PREVIEW_TEMPLATE'); ?>">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="11.5" cy="11.5" r="6" stroke="currentColor"/>
<line x1="15.7071" y1="16" x2="19" y2="19.2929" stroke="currentColor" stroke-linecap="round"/>
<line x1="11.5" y1="9" x2="11.5" y2="14" stroke="currentColor"/>
<line x1="14" y1="11.5" x2="9" y2="11.5" stroke="currentColor"/>
</svg>
<span><?php echo Text::_('NR_PREVIEW'); ?></span>
</a>
<?php if (isset($errors['joomla']) || isset($errors['project']) || isset($errors['third_party_dependencies_0'])): ?>
<div class="dependencies-wrapper">
<div class="title"><?php echo Text::_('NR_REQUIREMENTS'); ?></div>
<div class="dependencies">
<?php
if (array_key_exists('joomla', $errors))
{
?><span class="error<?php echo $info_item_class; ?>"<?php echo $info_item_atts; ?>><?php echo Text::_('NR_JOOMLA') . ' ' . ($required_j_version ? $required_j_version : $j_version); ?></span><?php
}
if (array_key_exists('project', $errors))
{
?><span class="error<?php echo $info_item_class; ?>"<?php echo $info_item_atts; ?>><?php echo $project_name . ' ' . ($required_item_version ? $required_item_version : $project_version); ?></span><?php
}
if (is_array($external_extensions) && count($external_extensions))
{
foreach ($external_extensions as $external_extension_key => $external_extension)
{
if (!array_key_exists('third_party_dependencies_' . $external_extension_key, $errors) || !array_key_exists('errors', $errors['third_party_dependencies_' . $external_extension_key]) || !in_array($external_extension->name, $errors['third_party_dependencies_' . $external_extension_key]['errors']))
{
continue;
}
?><span class="error<?php echo $info_item_class; ?>"<?php echo $info_item_atts; ?>><?php echo $external_extension->name . ' ' . $external_extension->version; ?></span><?php
}
}
?>
</div>
</div>
<?php endif; ?>
</div>
</div>
<?php
if ($template->is_pro && $project_license_type === 'lite')
{
?>
<span class="ribbon"><?php echo Text::_('NR_PRO'); ?></span>
<?php
}
?>
</div>
<div class="tf-library-item-bottom">
<div class="template-label"><?php echo $template->title; ?></div>
<div class="tf-library-item-bottom-buttons">
<a data-template-id="<?php echo $template->id; ?>" class="info tf-library-template-item-info<?php echo $info_item_class; ?>" title="<?php echo Text::_('NR_TEMPLATE_INFORMATION'); ?>"<?php echo $info_item_atts; ?> href="#tf-library-item-info-popup">
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="8" cy="8" r="7" stroke="currentColor"/>
<rect x="7" y="7" width="2" height="5" fill="currentColor"/>
<rect x="7" y="4" width="2" height="2" fill="currentColor"/>
</svg>
</a>
<a href="#" class="tf-library-favorite-icon tf-library-favorite-item<?php echo $is_favorite ? ' active' : ''; ?>" title="<?php echo Text::_('NR_LIBRARY_SAVE_TEMPLATE_FAVORITES'); ?>">
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.902 6.62124C14.3943 9.04222 11.0187 11.1197 7.99845 14C4.97819 11.1197 1.60265 9.04223 1.09492 6.62125C0.231957 2.50649 5.47086 -0.0322558 7.99845 4.12617C10.7204 -0.0322523 15.7649 2.50648 14.902 6.62124Z" stroke="currentColor" stroke-linejoin="round"/>
</svg>
</a>
</div>
<div class="tf-library-item-actions">
<?php
// We have errors with this template
if (!empty($errors))
{
// Multiple errors, but do not show this message when we still need to Upgrade to Pro.
if (count($errors) > 1 && !isset($errors['pro']))
{
?>
<a class="<?php echo $info_item_class; ?>"<?php echo $info_item_atts; ?> href="#tf-library-item-info-popup" data-template-id="<?php echo $template->id; ?>">
<?php
echo $error_svg_icon;
echo Text::_('NR_MULTIPLE_ISSUES_DETECTED');
?>
</a>
<?php
}
// One error
else
{
$error_keys = array_keys($errors);
$error_values = array_values($errors);
$error_items = [$error_values[0]];
foreach ($error_items as $error_item)
{
// 3rd-party dependency has an array of extensions
if (isset($error_item['value']) && is_array($error_item['value']) && isset($error_item['error_index']))
{
$error_item = (array) $error_item['value'][$error_item['error_index']];
}
$class = isset($error_item['class']) ? $error_item['class'] : '';
$data_atts = isset($error_item['data_attributes']) ? ' ' . $error_item['data_attributes'] : '';
$url = isset($error_item['url']) ? $error_item['url'] : '#';
if ($url !== '#')
{
$data_atts .= ' target="_blank"';
}
?>
<a href="<?php echo $url; ?>" class="<?php echo $class; ?>"<?php echo $data_atts; ?>>
<?php echo ${$error_item['icon'] . '_svg_icon'}; ?>
<?php if (isset($error_item['full_label'])): ?>
<span class="full-label"><?php echo $error_item['full_label']; ?></span>
<?php endif; ?>
<span class="short-label"><?php echo $error_item['label']; ?></span>
</a>
<?php
}
}
}
// No errors, we can use the template
else
{
?>
<a href="#" class="tf-library-item-insert-btn" data-template-id="<?php echo $template->id; ?>">
<?php
echo $insert_svg_icon;
echo $loading_svg_icon;
?>
<span class="full-label"><?php echo Text::_('NR_INSERT_TEMPLATE'); ?></span>
<span class="short-label"><?php echo Text::_('NR_INSERT'); ?></span>
</a>
<?php
}
?>
</div>
</div>
<div class="info-popup-actions">
<?php
// Show errors
if ($errors)
{
foreach ($errors as $error_key => $error)
{
// 3rd-party dependency has an array of extensions
if (isset($error['value']) && is_array($error['value']) && isset($error['error_index']))
{
$error = (array) $error['value'][$error['error_index']];
}
$url = isset($error['url']) ? $error['url'] : '#';
$class = isset($error['class']) ? $error['class'] : '';
$data_atts = isset($error['data_attributes']) ? ' ' . $error['data_attributes'] : '';
if ($error['icon'] !== 'pro')
{
$class .= ' orange';
}
// Add error key (which capability this error corresponds to, i.e. joomla, pro, etc...)
$class .= ' ' . $error_key;
?>
<a href="<?php echo $url; ?>" target="_blank" class="tf-button outline <?php echo $class; ?>"<?php echo $data_atts; ?>>
<?php echo ${$error['icon'] . '_svg_icon'}; ?>
<span class="short-label"><?php echo $error['label']; ?></span>
</a>
<?php
}
}
// Show insert button
else
{
?>
<a href="#" class="tf-button outline blue tf-library-item-insert-btn" data-template-id="<?php echo $template->id; ?>">
<?php
echo $insert_svg_icon;
echo $loading_svg_icon;
echo Text::_('NR_INSERT_TEMPLATE_NOW');
?>
</a>
<?php
}
?>
</div>
</div>
</div>
<?php
}

View File

@@ -0,0 +1,27 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2022 Tassos Marinos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
defined('_JEXEC') or die('Restricted access');
?>
<div class="tf-library-no-results">
<svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="41" cy="40" r="36" fill="#D7DBFB"/>
<path opacity="0.2" fill-rule="evenodd" clip-rule="evenodd" d="M26.5432 7.02026C39.6252 7.54949 50.0683 18.3222 50.0683 31.534C50.0683 37.5897 47.8743 43.133 44.2379 47.4123L46.3613 49.5357C47.4768 49.0018 48.854 49.1969 49.7782 50.1211L65.7755 66.1184C63.8226 67.9715 61.6621 69.6079 59.3324 70.989L44.1213 55.7779C43.1983 54.8549 43.0025 53.4799 43.5339 52.3652L41.4092 50.2405C37.1304 53.8753 31.5884 56.0682 25.5342 56.0682C17.2197 56.0682 9.87116 51.9322 5.43383 45.6055C5.14824 43.7788 5 41.9067 5 39.9999C5 38.3624 5.10933 36.7505 5.32108 35.1709C7.03793 44.7769 15.4346 52.0682 25.5342 52.0682C36.8749 52.0682 46.0683 42.8748 46.0683 31.534C46.0683 20.1933 36.8749 10.9999 25.5342 10.9999C22.7676 10.9999 20.1289 11.547 17.7202 12.5389C20.3611 10.2979 23.3294 8.43109 26.5432 7.02026Z" fill="#41495B"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M40.4373 43.4401C41.2184 42.659 42.4847 42.659 43.2658 43.4401L57.4079 57.5822C58.189 58.3633 58.189 59.6296 57.4079 60.4106C56.6269 61.1917 55.3605 61.1917 54.5795 60.4106L40.4373 46.2685C39.6563 45.4874 39.6563 44.2211 40.4373 43.4401Z" fill="#41495B"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M61.1675 69.8248L44.1209 52.7782C42.9493 51.6066 42.9493 49.7071 44.1209 48.5356L45.5351 47.1214C46.7067 45.9498 48.6061 45.9498 49.7777 47.1214L67.2705 64.6141C65.439 66.5681 63.392 68.3176 61.1675 69.8248Z" fill="#F5CE81"/>
<path d="M48.0683 28.5342C48.0683 40.9794 37.9794 51.0683 25.5342 51.0683C13.0889 51.0683 3 40.9794 3 28.5342C3 16.0889 13.0889 6 25.5342 6C37.9794 6 48.0683 16.0889 48.0683 28.5342Z" fill="#F4F5FE"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M25.5342 8C14.1935 8 5 17.1935 5 28.5342C5 39.8749 14.1935 49.0683 25.5342 49.0683C36.8749 49.0683 46.0683 39.8749 46.0683 28.5342C46.0683 17.1935 36.8749 8 25.5342 8ZM1 28.5342C1 14.9843 11.9843 4 25.5342 4C39.084 4 50.0683 14.9843 50.0683 28.5342C50.0683 42.084 39.084 53.0683 25.5342 53.0683C11.9843 53.0683 1 42.084 1 28.5342Z" fill="#41495B"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M25.5 14C17.4919 14 11 20.4919 11 28.5C11 29.6046 10.1046 30.5 9 30.5C7.89543 30.5 7 29.6046 7 28.5C7 18.2827 15.2827 10 25.5 10C26.6046 10 27.5 10.8954 27.5 12C27.5 13.1046 26.6046 14 25.5 14Z" fill="white"/>
</svg>
<div class="noresults-title"><?php echo \JText::_('NR_OOPS_NO_MATCHES_FOUND'); ?></div>
</div>

View File

@@ -0,0 +1,17 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2022 Tassos Marinos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
defined('_JEXEC') or die('Restricted access');
?>
<div class="tf-library-preview">
<div class="tf-library-preview-inner"></div>
</div>

View File

@@ -0,0 +1,46 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2022 Tassos Marinos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
defined('_JEXEC') or die('Restricted access');
?>
<div class="tf-library-sidebar">
<!-- Top -->
<div class="top">
<div class="flex-container align-center align-middle">
<div class="tf-library-sidebar-toggle opener" title="<?php echo \JText::_('NR_OPEN_SIDEBAR'); ?>">
<svg width="16" height="15" viewBox="0 0 16 15" fill="none" xmlns="http://www.w3.org/2000/svg">
<line x1="6.5" y1="2.5" x2="15.5" y2="2.5" stroke="currentColor" stroke-linecap="round"/>
<line x1="0.5" y1="2.5" x2="2.5" y2="2.5" stroke="currentColor" stroke-linecap="round"/>
<line x1="13.5" y1="7.5" x2="15.5" y2="7.5" stroke="currentColor" stroke-linecap="round"/>
<line x1="0.5" y1="7.5" x2="9.5" y2="7.5" stroke="currentColor" stroke-linecap="round"/>
<line x1="7.5" y1="12.5" x2="15.5" y2="12.5" stroke="currentColor" stroke-linecap="round"/>
<line x1="0.5" y1="12.5" x2="3.5" y2="12.5" stroke="currentColor" stroke-linecap="round"/>
<circle cx="4.5" cy="2.5" r="2" stroke="currentColor"/>
<circle cx="11.5" cy="7.5" r="2" stroke="currentColor"/>
<circle cx="5.5" cy="12.5" r="2" stroke="currentColor"/>
</svg>
</div>
<div class="on-sidebar-open flex-container align-center align-middle tf-library-sidebar-toggle" title="<?php echo \JText::_('NR_CLOSE_SIDEBAR'); ?>">
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M2.14645 7.64645C1.95118 7.84171 1.95118 8.15829 2.14645 8.35355L5.32843 11.5355C5.52369 11.7308 5.84027 11.7308 6.03553 11.5355C6.2308 11.3403 6.2308 11.0237 6.03553 10.8284L3.20711 8L6.03553 5.17157C6.2308 4.97631 6.2308 4.65973 6.03553 4.46447C5.84027 4.2692 5.52369 4.2692 5.32843 4.46447L2.14645 7.64645ZM14.5 8.5C14.7761 8.5 15 8.27614 15 8C15 7.72386 14.7761 7.5 14.5 7.5V8.5ZM2.5 8.5H14.5V7.5H2.5V8.5Z" fill="currentColor"/>
<line x1="14.5" y1="3.5" x2="14.5" y2="12.5" stroke="currentColor" stroke-linecap="round"/>
</svg>
<span class="top-title"><?php echo \JText::_('NR_FILTERS'); ?></span>
</div>
</div>
<a href="#" class="tf-library-filters-clear-all"><?php echo \JText::_('NR_CLEAR_ALL'); ?></a>
</div>
<!-- /Top -->
<!-- Filters -->
<div class="tf-library-sidebar-filters"><?php echo \JText::_('NR_LOADING_FILTERS'); ?></div>
<!-- /Filters -->
</div>

View File

@@ -0,0 +1,40 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2022 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);
$items_payload = [
'create_new_template_link' => $create_new_template_link,
'blank_template_label' => $blank_template_label
];
$footer_payload = [
'create_new_template_link' => $create_new_template_link,
'project_name' => $project_name
];
$layouts_path = JPATH_PLUGINS . '/system/nrframework/layouts';
JHtml::_('jquery.framework');
?>
<div class="tf-library-page" data-preview-url="<?php echo $preview_url; ?>" data-options="<?php echo htmlspecialchars(json_encode($displayData)); ?>">
<?php echo \JLayoutHelper::render('library/sidebar', [], $layouts_path); ?>
<div class="tf-library-body">
<?php
echo \JLayoutHelper::render('library/toolbar', [], $layouts_path);
echo \JLayoutHelper::render('library/noresults', [], $layouts_path);
echo \JLayoutHelper::render('library/items', $items_payload, $layouts_path);
echo \JLayoutHelper::render('library/footer', $footer_payload, $layouts_path);
?>
</div>
</div>

View File

@@ -0,0 +1,78 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2022 Tassos Marinos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
defined('_JEXEC') or die('Restricted access');
?>
<!-- Library Toolbar -->
<div class="tf-library-toolbar">
<!-- Left -->
<div class="toolbar-left">
<div class="tf-library-search">
<input type="search" id="tf_search_template" data-search="true" placeholder="<?php echo \JText::_('NR_SEARCH'); ?>..." name="tf-library-search">
<svg class="tf-library-search-icon" width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
<path d="M12.207 12.2075L15.9994 15.9999" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
</svg>
</div>
</div>
<!-- /Left -->
<!-- Right -->
<div class="toolbar-right">
<a href="#" class="item tf-library-favorite-icon tf-library-view-favorites">
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.902 6.62124C14.3943 9.04222 11.0187 11.1197 7.99845 14C4.97819 11.1197 1.60265 9.04223 1.09492 6.62125C0.231957 2.50649 5.47086 -0.0322559 7.99845 4.12617C10.7204 -0.0322523 15.7649 2.50648 14.902 6.62124Z" fill="currentColor" stroke="currentColor" stroke-linejoin="round"/>
</svg>
<?php echo \JText::_('NR_MY_FAVORITES'); ?>
</a>
<div class="item sorting-selector-item">
<div class="sort-wrapper">
<div class="sorting-selected-label">
<span class="selected-label"><?php echo \JText::_('NR_FEATURED'); ?></span>
<svg width="10" height="6" viewBox="0 0 10 6" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9 1L5.70711 4.29289C5.31658 4.68342 4.68342 4.68342 4.29289 4.29289L1 0.999999" stroke="currentColor" stroke-linecap="round"/></svg>
</div>
<ul class="sorting-selector-items">
<li data-value="featured" class="selected"><?php echo \JText::_('NR_FEATURED'); ?></li>
<li data-value="popularity"><?php echo \JText::_('NR_POPULAR'); ?></li>
<li data-value="trending"><?php echo \JText::_('NR_TRENDING'); ?></li>
<li data-value="date"><?php echo \JText::_('NR_NEWEST'); ?></li>
</ul>
</div>
</div>
</div>
<!-- /Right -->
</div>
<!-- /Library Toolbar -->
<!-- Library Selected Filters -->
<div class="tf-library-selected-filters-pills-wrapper">
<div><?php echo \JText::_('NR_SHOWING_RESULTS_FOR'); ?></div>
<div class="tf-library-selected-filters-pills"></div>
<div class="tf-library-filter-template">
<div class="filter" data-filter="">
<span class="filter-label"></span>
<svg class="tf-library-filter-pill-item-remove" width="14" height="14" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="5" cy="5" r="4.5" stroke="currentColor"/>
<rect x="7" y="6.5" width="0.707105" height="4.94973" transform="rotate(135 7 6.5)" fill="currentColor"/>
<rect width="0.707105" height="4.94973" transform="matrix(-0.707109 -0.707105 0.707109 -0.707105 3.5 7)" fill="currentColor"/>
</svg>
</div>
</div>
<a href="#" class="tf-library-filters-clear-all"><?php echo \JText::_('NR_CLEAR_ALL'); ?></a>
</div>
<!-- /Library Selected Filters -->
<!-- Library Messages -->
<div class="tf-library-messages alert alert-warning is-hidden">
<span class="tf-library-messages-text"></span>
<button type="button" class="close btn-close tf-library-messages-hide-btn" data-<?php echo defined('nrJ4') ? 'bs-' : ''; ?>>
<?php echo !defined('nrJ4') ? '<span aria-hidden="true">&times;</span>' : ''; ?>
</button>
</div>
<!-- /Library Messages -->

View File

@@ -0,0 +1,50 @@
<?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');
extract($displayData);
?>
<div class="tf-notice<?php echo !empty($class) ? ' ' . $class : ''; ?>" role="alert">
<?php if (isset($icon) && !empty($icon)): ?>
<svg class="color" xmlns="http://www.w3.org/2000/svg" height="40" width="40" viewBox="0 0 40 40"><?php echo $icon; ?></svg>
<?php endif; ?>
<div class="content">
<div class="title"><?php echo isset($title) ? $title : ''; ?></div>
<?php if (isset($description)): ?>
<div class="description"><?php echo $description; ?></div>
<?php endif; ?>
</div>
<?php if ($actions): ?>
<div class="actions"><?php echo $actions; ?></div>
<?php endif; ?>
<?php if ($tooltip): ?>
<div class="notice-tooltip-wrapper">
<svg class="notice-tooltip-icon" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<mask id="mask0_113_8" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="24" height="24">
<rect width="24" height="24" fill="#D9D9D9"/>
</mask>
<g mask="url(#mask0_113_8)">
<path d="M11.95 18C12.3 18 12.596 17.879 12.838 17.637C13.0793 17.3957 13.2 17.1 13.2 16.75C13.2 16.4 13.0793 16.1043 12.838 15.863C12.596 15.621 12.3 15.5 11.95 15.5C11.6 15.5 11.304 15.621 11.062 15.863C10.8207 16.1043 10.7 16.4 10.7 16.75C10.7 17.1 10.8207 17.3957 11.062 17.637C11.304 17.879 11.6 18 11.95 18ZM11.05 14.15H12.9C12.9 13.6 12.9627 13.1667 13.088 12.85C13.2127 12.5333 13.5667 12.1 14.15 11.55C14.5833 11.1167 14.925 10.704 15.175 10.312C15.425 9.92067 15.55 9.45 15.55 8.9C15.55 7.96667 15.2083 7.25 14.525 6.75C13.8417 6.25 13.0333 6 12.1 6C11.15 6 10.3793 6.25 9.788 6.75C9.196 7.25 8.78333 7.85 8.55 8.55L10.2 9.2C10.2833 8.9 10.471 8.575 10.763 8.225C11.0543 7.875 11.5 7.7 12.1 7.7C12.6333 7.7 13.0333 7.84567 13.3 8.137C13.5667 8.429 13.7 8.75 13.7 9.1C13.7 9.43333 13.6 9.74567 13.4 10.037C13.2 10.329 12.95 10.6 12.65 10.85C11.9167 11.5 11.4667 11.9917 11.3 12.325C11.1333 12.6583 11.05 13.2667 11.05 14.15ZM12 22C10.6167 22 9.31667 21.7373 8.1 21.212C6.88333 20.6873 5.825 19.975 4.925 19.075C4.025 18.175 3.31267 17.1167 2.788 15.9C2.26267 14.6833 2 13.3833 2 12C2 10.6167 2.26267 9.31667 2.788 8.1C3.31267 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.31233 8.1 2.787C9.31667 2.26233 10.6167 2 12 2C13.3833 2 14.6833 2.26233 15.9 2.787C17.1167 3.31233 18.175 4.025 19.075 4.925C19.975 5.825 20.6873 6.88333 21.212 8.1C21.7373 9.31667 22 10.6167 22 12C22 13.3833 21.7373 14.6833 21.212 15.9C20.6873 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6873 15.9 21.212C14.6833 21.7373 13.3833 22 12 22ZM12 20C14.2333 20 16.125 19.225 17.675 17.675C19.225 16.125 20 14.2333 20 12C20 9.76667 19.225 7.875 17.675 6.325C16.125 4.775 14.2333 4 12 4C9.76667 4 7.875 4.775 6.325 6.325C4.775 7.875 4 9.76667 4 12C4 14.2333 4.775 16.125 6.325 17.675C7.875 19.225 9.76667 20 12 20Z" />
</g>
</svg>
<div class="notice-tooltip">
<div class="notice-tooltip-arrow"></div>
<div class="notice-tooltip-inner"><?php echo $tooltip; ?></div>
</div>
</div>
<?php endif; ?>
<?php if ($dismissible): ?>
<button type="button" class="close btn-close" data-dismiss="alert" aria-label="Close">
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><mask id="mask0_105_53" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="24" height="24"><rect width="24" height="24" fill="#D9D9D9"/></mask><g mask="url(#mask0_105_53)"><path d="M6.4 19L5 17.6L10.6 12L5 6.4L6.4 5L12 10.6L17.6 5L19 6.4L13.4 12L19 17.6L17.6 19L12 13.4L6.4 19Z" /></g></svg>
</button>
<?php endif; ?>
</div>

View File

@@ -0,0 +1,26 @@
<?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');
extract($displayData);
?>
<div
class="tf-notices"
data-ext-element="<?php echo $ext_element; ?>"
data-ext-xml="<?php echo $ext_xml; ?>"
data-ext-type="<?php echo $ext_type; ?>"
data-exclude="<?php echo htmlspecialchars(json_encode($exclude)); ?>"
data-root="<?php echo \JURI::base(); ?>"
data-token="<?php echo JSession::getFormToken(); ?>"
data-current-url="<?php echo \JURI::getInstance()->toString(); ?>"
>
</div>

View File

@@ -0,0 +1,118 @@
<?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');
extract($displayData);
if (defined('nrJ4'))
{
JFactory::getDocument()->addScriptDeclaration('
document.addEventListener("DOMContentLoaded", function() {
let proOnlyEl = document.getElementById("proOnlyModal");
proOnlyEl.classList.add("tf-pro-only-modal");
document.body.appendChild(proOnlyEl);
const opts = {
backdrop: "static",
keyboard: false
};
let proOnlyModal = new bootstrap.Modal(proOnlyEl, opts);
document.addEventListener("click", function(e) {
let elem = e.target.closest("[data-pro-only]");
if (!elem) {
return;
}
let proFeature = elem.dataset.proOnly;
if (proFeature === undefined) {
return;
}
event.preventDefault();
if (proFeature) {
proOnlyEl.querySelectorAll("em").forEach(function(el) {
el.innerHTML = proFeature;
});
proOnlyEl.querySelector(".po-upgrade").style.display = "none";
proOnlyEl.querySelector(".po-feature").style.display = "block";
} else {
proOnlyEl.querySelector(".po-upgrade").style.display = "block";
proOnlyEl.querySelector(".po-feature").style.display = "none";
}
proOnlyModal.show();
});
});
');
} else
{
JFactory::getDocument()->addScriptDeclaration('
jQuery(function($) {
var $proOnlyModal = $("#proOnlyModal");
// Move to body so it can be accessible by all buttons
$proOnlyModal.addClass("tf-pro-only-modal");
$proOnlyModal.appendTo("body");
$(document).on("click", "*[data-pro-only]", function() {
event.preventDefault();
var $el = $(this)
feature_name = $el.data("pro-only");
if (feature_name) {
$proOnlyModal.find("em").html(feature_name);
$proOnlyModal.find(".po-upgrade").hide().end().find(".po-feature").show();
} else {
$proOnlyModal.find(".po-feature").hide().end().find(".po-upgrade").show();
}
$proOnlyModal.modal("show");
});
});
');
}
JHtml::stylesheet('plg_system_nrframework/proonlymodal.css', ['relative' => true, 'version' => 'auto']);
?>
<div class="pro-only-body text-center">
<span class="icon-lock"></span>
<!-- This is shown when we click on a Pro only feature button -->
<div class="po-feature">
<h2><?php echo \JText::sprintf('NR_PROFEATURE_HEADER', '') ?></h2>
<p><?php echo JText::sprintf('NR_PROFEATURE_DESC', '') ?></p>
</div>
<!-- This is shown when click on Upgrade to Pro button -->
<div class="po-upgrade">
<h2><?php echo \JText::_($extension_name) ?> Pro</h2>
<p><?php echo JText::sprintf('NR_UPGRADE_TO_PRO_VERSION', \JText::_($extension_name)); ?></p>
</div>
<p><a class="btn btn-danger btn-large" href="<?php echo $upgrade_url ?>" target="_blank">
<?php echo JText::_('NR_UPGRADE_TO_PRO') ?>
</a></p>
<div class="pro-only-bonus"><?php echo JText::sprintf('NR_PROFEATURE_DISCOUNT', $extension_name) ?></div>
<div class="pro-only-footer">
<div>Pre-Sales questions? <a target="_blank" href="http://www.tassos.gr/contact?topic=Pre-sale Question&extension=<?php echo $extension_name ?>">Ask here</a></div>
<div>Already purchased Pro? Learn how to <a target="_blank" href="https://www.tassos.gr/kb/general/how-to-upgrade-an-extension-from-free-to-pro">Unlock Pro Features</a></div>
</div>
</div>

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 © 2018 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);
if (!is_array($fields) || empty($fields))
{
return;
}
?>
<div class="nr-responsive-control<?php echo $class; ?>" style="width:<?php echo $width; ?>">
<div class="top">
<span class="title"><?php echo $title; ?></span>
<div class="actions">
<a href="#" data-type="desktop" title="<?php echo JText::_('NR_DESKTOPS_WITH_BREAKPOINT_INFO'); ?>" class="nr-responsive-control-type-btn icon-screen is-active"></a>
<a href="#" data-type="tablet" title="<?php echo JText::_('NR_TABLETS_WITH_BREAKPOINT_INFO'); ?>" class="nr-responsive-control-type-btn icon-tablet"></a>
<a href="#" data-type="mobile" title="<?php echo JText::_('NR_MOBILES_WITH_BREAKPOINT_INFO'); ?>" class="nr-responsive-control-type-btn icon-mobile"></a>
</div>
</div>
<div class="content">
<div class="item desktop is-active">
<?php echo $fields['desktop']; ?>
</div>
<div class="item tablet">
<?php echo $fields['tablet']; ?>
</div>
<div class="item mobile">
<?php echo $fields['mobile']; ?>
</div>
</div>
</div>

View File

@@ -0,0 +1,23 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2018 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);
?>
<div class="nr-responsive-control-item">
<?php if (!empty($label)) { ?>
<div class="title" title="<?php echo !empty($description) ? $description : ''; ?>"><?php echo $label; ?></div>
<?php } ?>
<?php echo $data; ?>
</div>

View File

@@ -0,0 +1,28 @@
<?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');
?>
<div class="st" id="smarttags">
<div class="st_overlay"></div>
<div class="st_box">
<div class="st_toolbar">
<input placeholder="<?php echo JText::_('NR_SMARTTAGS_SEARCH_PLACEHOLDER') ?>" class="st_input_search" type="text"/>
</div>
<div class="st_container">
<div class="st_nav"></div>
<div class="st_tabs"></div>
</div>
</div>
</div>

View File

@@ -0,0 +1,37 @@
<?php
/**
* @package Joomla.Site
* @subpackage Layout
*
* @copyright Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('JPATH_BASE') or die;
extract($displayData);
/**
* Layout variables
* ---------------------
* $options : (array) Optional parameters
* $label : (string) The html code for the label (not required if $options['hiddenLabel'] is true)
* $input : (string) The input field html code
*/
if (!empty($options['showonEnabled']))
{
JHtml::_('jquery.framework');
JHtml::_('script', 'jui/cms.js', false, true);
}
$class = empty($options['class']) ? '' : ' ' . $options['class'];
$rel = empty($options['rel']) ? '' : ' ' . $options['rel'];
?>
<?php if ($input != '</div>') { ?>
<div class="well nr-well <?php echo $class; ?>"<?php echo $rel; ?>>
<?php } ?>
<?php echo $input; ?>

View File

@@ -0,0 +1,59 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2018 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);
if (!$readonly && !$disabled)
{
\JHtml::script('plg_system_nrframework/widgets/colorpicker.js', ['relative' => true, 'version' => 'auto']);
}
if ($load_stylesheet)
{
\JHtml::stylesheet('plg_system_nrframework/widgets/colorpicker.css', ['relative' => true, 'version' => 'auto']);
}
if ($load_css_vars)
{
JFactory::getDocument()->addStyleDeclaration('
.nrf-colorpicker-wrapper.' . $id . ' {
--input-background-color: ' . $input_bg_color . ';
--input-border-color: ' . $input_border_color . ';
--input-border-color-focus: ' . $input_border_color_focus . ';
--input-text-color: ' . $input_text_color . ';
}
');
}
?>
<div class="nrf-widget nrf-colorpicker-wrapper<?php echo $css_class; ?>">
<input type="color"
value="<?php echo $value; ?>"
<?php if ($readonly || $disabled): ?>
disabled
<?php endif; ?>
/>
<input type="text"
id="<?php echo $id; ?>"
name="<?php echo $name; ?>"
class="<?php echo $input_class; ?>"
value="<?php echo $value; ?>"
placeholder="<?php echo $placeholder; ?>"
<?php if ($required) { ?>
required
<?php } ?>
<?php if ($readonly): ?>
readonly
<?php endif; ?>
/>
</div>

View File

@@ -0,0 +1,41 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2018 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);
if ($countdown_type === 'static' && (empty($value) || $value === '0000-00-00 00:00:00'))
{
return;
}
if ($load_stylesheet)
{
if ($theme !== 'custom')
{
\JHtml::stylesheet('plg_system_nrframework/widgets/countdown.css', ['relative' => true, 'version' => 'auto']);
}
else
{
\JHtml::stylesheet('plg_system_nrframework/widgets/widget.css', ['relative' => true, 'version' => 'auto']);
}
}
if ($load_css_vars && !empty($custom_css))
{
JFactory::getDocument()->addStyleDeclaration($custom_css);
}
\JHtml::script('plg_system_nrframework/widgets/countdown.js', ['relative' => true, 'version' => 'auto']);
?>
<div class="nrf-widget nrf-countdown<?php echo $css_class; ?>" id="<?php echo $id; ?>" <?php echo $atts; ?>></div>

View File

@@ -0,0 +1,58 @@
<?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');
extract($displayData);
if (!$items || !is_array($items) || !count($items))
{
return;
}
if (!$readonly && !$disabled && $lightbox)
{
JHtml::script('plg_system_nrframework/widgets/gallery/gallery.js', ['relative' => true, 'version' => 'auto']);
}
if ($load_stylesheet)
{
JHtml::stylesheet('plg_system_nrframework/widgets/gallery.css', ['relative' => true, 'version' => 'auto']);
}
?>
<div class="nrf-widget tf-gallery-wrapper<?php echo $css_class; ?>" data-id="<?php echo $id; ?>">
<div class="gallery-items<?php echo $gallery_items_css; ?>">
<?php
foreach ($items as $index => $item)
{
// If its an invalid image path, show a warning and continue
if (isset($item['invalid']) && $show_warnings)
{
echo '<div><strong>Warning:</strong> ' . sprintf(\JText::_('NR_INVALID_IMAGE_PATH'), $item['path']) . '</div>';
continue;
}
$item['index'] = $index;
$displayData['item'] = $item;
echo $this->sublayout('item', $displayData);
}
?>
</div>
<?php
if ($lightbox)
{
echo $this->sublayout('glightbox', $displayData);
}
?>
</div>

View File

@@ -0,0 +1,23 @@
<?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');
extract($displayData);
if (!$readonly && !$disabled)
{
JHtml::stylesheet('https://cdn.jsdelivr.net/npm/glightbox@3.1.0/dist/css/glightbox.min.css');
JHtml::script('https://cdn.jsdelivr.net/gh/mcstudios/glightbox@3.1.0/dist/js/glightbox.min.js');
}
?>

View File

@@ -0,0 +1,31 @@
<?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');
extract($displayData);
use NRFramework\Helpers\Widgets\Gallery as GalleryHelper;
?>
<figure class="item">
<?php if ($lightbox) { ?>
<a href="<?php echo $item['url']; ?>" class="tf-gallery-lightbox-item <?php echo $id; ?>" data-type="image" data-description=".glightbox-desc.<?php echo $id; ?>.desc-<?php echo $item['index']; ?>">
<?php } ?>
<img loading="lazy" class="<?php echo $thumb_class ?>" src="<?php echo $item['thumbnail_url']; ?>"<?php echo $item['img_atts']; ?> alt="<?php echo strip_tags($item['alt']); ?>" />
<?php if ($lightbox) { ?>
</a>
<div class="glightbox-desc <?php echo $id . ' desc-' . $item['index']; ?>">
<div class="caption"><?php echo nl2br($item['caption']); ?></div>
<div class="module"><?php echo !empty($module) ? GalleryHelper::loadModule($module) : ''; ?></div>
</div>
<?php } ?>
</figure>

View File

@@ -0,0 +1,214 @@
<?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');
extract($displayData);
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Component\ComponentHelper;
if (!$disabled)
{
if (strpos($css_class, 'ordering-default') !== false)
{
JHtml::script('https://cdn.jsdelivr.net/npm/sortablejs@latest/Sortable.min.js');
}
// Required in the front-end for the media manager to work
if (!defined('nrJ4'))
{
JHtml::_('behavior.modal');
// Front-end editing: The below script is required for front-end media library selection to work as its missing from parent window when called
if (JFactory::getApplication()->isClient('site'))
{
?>
<script>
function jInsertFieldValue(value, id) {
var old_id = document.id(id).value;
if (old_id != id) {
var elem = document.id(id)
elem.value = value;
elem.fireEvent("change");
}
}
</script>
<?php
}
}
else
{
HTMLHelper::_('bootstrap.dropdown', '.dropdown-toggle');
$doc = JFactory::getApplication()->getDocument();
$doc->addScriptOptions('media-picker', [
'images' => array_map(
'trim',
explode(
',',
ComponentHelper::getParams('com_media')->get(
'image_extensions',
'bmp,gif,jpg,jpeg,png'
)
)
)
]);
$wam = $doc->getWebAssetManager();
$wam->useScript('webcomponent.media-select');
Text::script('JFIELD_MEDIA_LAZY_LABEL');
Text::script('JFIELD_MEDIA_ALT_LABEL');
Text::script('JFIELD_MEDIA_ALT_CHECK_LABEL');
Text::script('JFIELD_MEDIA_ALT_CHECK_DESC_LABEL');
Text::script('JFIELD_MEDIA_CLASS_LABEL');
Text::script('JFIELD_MEDIA_FIGURE_CLASS_LABEL');
Text::script('JFIELD_MEDIA_FIGURE_CAPTION_LABEL');
Text::script('JFIELD_MEDIA_LAZY_LABEL');
Text::script('JFIELD_MEDIA_SUMMARY_LABEL');
}
}
// Use admin gallery manager path if browsing via backend
$gallery_manager_path = JFactory::getApplication()->isClient('administrator') ? 'administrator/' : '';
// Javascript files should always load as they are used to populate the Gallery Manager via Dropzone
JHtml::script('plg_system_nrframework/dropzone.min.js', ['relative' => true, 'version' => 'auto']);
JHtml::script('plg_system_nrframework/widgets/gallery/manager_init.js', ['relative' => true, 'version' => 'auto']);
JHtml::script('plg_system_nrframework/widgets/gallery/manager.js', ['relative' => true, 'version' => 'auto']);
if ($load_stylesheet)
{
JHtml::stylesheet('plg_system_nrframework/widgets/gallerymanager.css', ['relative' => true, 'version' => 'auto']);
}
?>
<!-- Gallery Manager -->
<div class="nrf-widget tf-gallery-manager<?php echo $css_class; ?>" data-field-id="<?php echo $field_id; ?>">
<!-- Make Joomla client-side form validator happy by adding a fake hidden input field when the Gallery is required. -->
<?php if ($required) { ?>
<input type="hidden" required class="required" id="<?php echo $id; ?>"/>
<?php } ?>
<!-- Actions -->
<div class="tf-gallery-actions">
<div class="btn-group tf-gallery-actions-dropdown<?php echo !defined('nrJ4') ? ' dropdown' : ''; ?> " title="<?php echo Text::_('NR_GALLERY_MANAGER_SELECT_UNSELECT_IMAGES'); ?>">
<button class="btn btn-secondary add tf-gallery-actions-dropdown-current tf-gallery-actions-dropdown-action select" onclick="return false;"><i class="me-2 icon-checkbox-unchecked"></i></button>
<button class="btn btn-secondary add dropdown-toggle dropdown-toggle-split" data-<?php echo defined('nrJ4') ? 'bs-' : ''; ?>toggle="dropdown" title="<?php echo Text::_('NR_GALLERY_MANAGER_ADD_DROPDOWN'); ?>">
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a href="#" class="dropdown-item tf-gallery-actions-dropdown-action select"><?php echo Text::_('NR_GALLERY_MANAGER_SELECT_ALL_ITEMS'); ?></a></li>
<li><a href="#" class="dropdown-item tf-gallery-actions-dropdown-action unselect is-hidden"><?php echo Text::_('NR_GALLERY_MANAGER_UNSELECT_ALL_ITEMS'); ?></a></li>
</ul>
</div>
<a class="tf-gallery-regenerate-thumbs-button icon-button" title="<?php echo Text::_('NR_GALLERY_MANAGER_REGENERATE_THUMBNAILS'); ?>">
<i class="icon-refresh"></i>
<div class="message"></div>
</a>
<a class="tf-gallery-remove-selected-items-button icon-button" title="<?php echo Text::_('NR_GALLERY_MANAGER_REMOVE_SELECTED_IMAGES'); ?>">
<i class="icon-trash"></i>
</a>
<div class="btn-group add-button<?php echo !defined('nrJ4') ? ' dropdown' : ''; ?>">
<button class="btn btn-success add tf-gallery-add-item-button" onclick="return false;" title="<?php echo Text::_('NR_GALLERY_MANAGER_ADD_IMAGES'); ?>"><i class="me-2 icon-pictures"></i><?php echo Text::_('NR_GALLERY_MANAGER_ADD_IMAGES'); ?></button>
<button class="btn btn-success add dropdown-toggle dropdown-toggle-split" data-<?php echo defined('nrJ4') ? 'bs-' : ''; ?>toggle="dropdown" title="<?php echo Text::_('NR_GALLERY_MANAGER_ADD_DROPDOWN'); ?>">
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li>
<a <?php echo !defined('nrJ4') ? 'rel="{handler: \'iframe\', size: {x: 1000, y: 750}}" href="' . JURI::root() . $gallery_manager_path . '?option=com_media&view=images&tmpl=component&fieldid=' . $id . '_uploaded_file"' : 'href="#" data-bs-toggle="modal" data-bs-target="#tf-GalleryMediaManager" data-gallery-id="' . $id . '"'; ?> class="dropdown-item tf-gallery-browse-item-button<?php echo !defined('nrJ4') ? ' modal' : ''; ?> popup" title="<?php echo Text::_('NR_GALLERY_MANAGER_BROWSE_MEDIA_LIBRARY'); ?>"><i class="me-2 icon-folder-open"></i><?php echo Text::_('NR_GALLERY_MANAGER_BROWSE_MEDIA_LIBRARY'); ?></a>
</li>
</ul>
</div>
<input type="hidden" class="media_uploader_file" id="<?php echo $id; ?>_uploaded_file" />
</div>
<!-- /Actions -->
<!-- Dropzone -->
<div
data-inputname="<?php echo $name; ?>"
data-maxfilesize="<?php echo $max_file_size; ?>"
data-maxfiles="<?php echo $limit_files; ?>"
data-acceptedfiles="<?php echo $allowed_file_types; ?>"
data-value='<?php echo $gallery_items ? json_encode($gallery_items, JSON_HEX_APOS) : ''; ?>'
data-baseurl="<?php echo JURI::base(); ?>"
data-rooturl="<?php echo JURI::root(); ?>"
class="tf-gallery-dz">
<!-- DZ Message Wrapper -->
<div class="dz-message">
<!-- Message -->
<div class="dz-message-center">
<span class="text"><?php echo Text::_('NR_GALLERY_MANAGER_DRAG_AND_DROP_TEXT'); ?></span>
<span class="browse"><?php echo Text::_('NR_GALLERY_MANAGER_BROWSE'); ?></span>
</div>
<!-- /Message -->
</div>
<!-- /DZ Message Wrapper -->
</div>
<!-- /Dropzone -->
<!-- Dropzone Preview Template -->
<template class="previewTemplate">
<div class="tf-gallery-preview-item template" data-item-id="">
<div class="select-item-checkbox" title="<?php echo Text::_('NR_GALLERY_MANAGER_CHECK_TO_DELETE_ITEMS'); ?>">
<input type="checkbox" id="<?php echo $name; ?>[select-item]" />
<label for="<?php echo $name; ?>[select-item]"></label>
</div>
<a href="#" class="tf-gallery-preview-remove-item" title="<?php echo Text::_('NR_GALLERY_MANAGER_CLICK_TO_DELETE_ITEM'); ?>" data-dz-remove><svg fill="#dedede" viewBox="0 0 512 512" width="13" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"/></svg></a>
<div class="inner">
<div class="dz-status"></div>
<div class="dz-thumb">
<div class="dz-progress"><span class="text"><?php echo Text::_('NR_GALLERY_MANAGER_UPLOADING'); ?></span><span class="dz-upload" data-dz-uploadprogress></span></div>
<div class="tf-gallery-preview-in-queue"><?php echo Text::_('NR_GALLERY_MANAGER_IN_QUEUE'); ?></div>
<img data-dz-thumbnail />
</div>
<div class="dz-details">
<div class="detail">
<textarea name="<?php echo $name; ?>[caption]" class="item-caption" placeholder="<?php echo Text::_('NR_GALLERY_MANAGER_CAPTION_HINT'); ?>" title="<?php echo Text::_('NR_GALLERY_MANAGER_CAPTION_HINT'); ?>" rows="5"></textarea>
</div>
</div>
<div class="tf-gallery-preview-error"><div data-dz-errormessage></div></div>
<input type="hidden" value="" class="item-thumbnail" name="<?php echo $name; ?>[thumbnail]" />
</div>
</div>
</template>
<!-- /Dropzone Preview Template -->
<?php
// Print Joomla 4 Media Manager modal only if Gallery is not disabled
if (defined('nrJ4') && !$disabled)
{
$opts = [
'title' => Text::_('NR_GALLERY_MANAGER_SELECT_ITEM'),
'url' => Route::_(JURI::root() . $gallery_manager_path . '?option=com_media&view=media&tmpl=component'),
'height' => '400px',
'width' => '800px',
'bodyHeight' => 80,
'modalWidth' => 80,
'backdrop' => 'static',
'footer' => '<button type="button" class="btn btn-secondary tf-gallery-button-save-selected button-save-selected" data-bs-dismiss="modal">' . Text::_('JSELECT') . '</button>' . '<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">' . Text::_('JCANCEL') . '</button>',
'isJoomla' => true
];
HTMLHelper::_('bootstrap.modal', '#tf-GalleryMediaManager', $opts);
$layoutData = [
'selector' => 'tf-GalleryMediaManager',
'params' => $opts,
'body' => ''
];
echo \Joomla\CMS\Layout\LayoutHelper::render('libraries.html.bootstrap.modal.main', $layoutData);
}
?>
</div>
<!-- /Gallery Manager -->

View File

@@ -0,0 +1,65 @@
<?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;
extract($displayData);
$options = isset($options) ? $options : $displayData;
if ($load_css_vars)
{
JFactory::getDocument()->addStyleDeclaration('
.nrf-widget.osm.' . $id . ' {
--width: ' . $options['width'] . ';
--height: ' . $options['height'] . ';
}
');
}
?>
<div class="nrf-widget osm nr-lazyload-item nr-address-component<?php echo $options['css_class']; ?>">
<div class="inner">
<div class="osm_map_item" data-options="<?php echo htmlspecialchars(json_encode($options)); ?>"></div>
<?php if ($options['showMarkerTooltip']): ?>
<div class="marker-tooltip" style="display:none;"><div class="tooltip-body"><?php echo nl2br($options['markerTooltipValue']); ?></div><div class="arrow"></div></div>
<?php endif; ?>
<div class="field-settings">
<?php if ($options['showCoordsInput']): ?>
<div class="control-group map-coordinates-setting">
<label class="control-label" for="<?php echo $options['id']; ?>_coords_input"><?php echo JText::_('NR_OSM_COORDINATES_LABEL'); ?></label>
<div class="controls coords-wrapper">
<input type="text" id="<?php echo $options['id']; ?>_coords_input" name="<?php echo $options['coordsInputName']; ?>" value="<?php echo $options['value']; ?>" class="address-input nr_address_coords"<?php echo ($options['readonly'] || $options['disabled']) ? ' readonly' : ''; ?> />
<a href="#" class="map_reset_btn<?php echo ($options['readonly'] || $options['disabled']) ? ' disabled' : ''; ?>" title="<?php echo JText::_('NR_OSM_CLEAR_BUTTON_TITLE'); ?>"><?php echo JText::_('NR_CLEAR'); ?></a>
</div>
</div>
<?php else: ?>
<input type="hidden" name="<?php echo $options['coordsInputName']; ?>" class="nr_address_coords" value="<?php echo $options['value']; ?>"<?php echo ($options['readonly'] || $options['disabled']) ? ' readonly' : ''; ?> />
<?php endif; ?>
<?php if ($options['showMarkerTooltipInput']): ?>
<div class="control-group">
<label class="control-label" for="<?php echo $options['id']; ?>_tooltip_label"><?php echo JText::_('NR_OSM_TOOLTIP_LABEL'); ?></label>
<div class="controls">
<textarea id="<?php echo $options['id']; ?>_tooltip_label"
class="address-input"
rows="3"
name="<?php echo $options['markerTooltipName']; ?>"
<?php if ($options['readonly'] || $options['disabled']): ?>
readonly
<?php endif; ?>
placeholder="<?php echo JText::_('NR_OSM_TOOLTIP_LABEL_HINT'); ?>"><?php echo $options['markerTooltipValue']; ?></textarea>
</div>
</div>
<?php endif; ?>
</div>
</div>
</div>

View File

@@ -0,0 +1,70 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2018 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);
if (!$readonly && !$disabled)
{
JHtml::script('plg_system_nrframework/widgets/slider.js', ['relative' => true, 'version' => 'auto']);
}
if ($load_stylesheet)
{
JHtml::stylesheet('plg_system_nrframework/widgets/slider.css', ['relative' => true, 'version' => 'auto']);
}
if ($load_css_vars)
{
JFactory::getDocument()->addStyleDeclaration('
.nrf-slider-wrapper.' . $id . ' {
--base-color: ' . $base_color . ';
--progress-color: ' . $color . ';
--input-bg-color: ' . $input_bg_color . ';
--input-border-color: ' . $input_border_color . ';
--thumb-shadow-color: ' . $color . '26' . ';
}
');
}
?>
<div class="nrf-widget nrf-slider-wrapper <?php echo $css_class; ?>">
<input
type="range"
class="nrf-slider-range"
min="<?php echo $min; ?>"
max="<?php echo $max; ?>"
step="<?php echo $step; ?>"
value="<?php echo $value; ?>"
<?php if ($load_css_vars): ?>
data-base-color="<?php echo $base_color; ?>"
data-progress-color="<?php echo $color; ?>"
style="background: linear-gradient(to right, <?php echo $color; ?> 0%, <?php echo $color . ' ' . $bar_percentage; ?>%, <?php echo $base_color . ' ' . $bar_percentage; ?>%, <?php echo $base_color; ?> 100%)"
<?php endif; ?>
<?php if ($readonly || $disabled): ?>
disabled
<?php endif; ?>
/>
<input
type="number"
value="<?php echo $value; ?>"
id="<?php echo $id; ?>"
name="<?php echo $name; ?>"
min="<?php echo $min; ?>"
max="<?php echo $max; ?>"
step="<?php echo $step; ?>"
class="nrf-slider-value <?php echo $input_class; ?>"
<?php if ($readonly || $disabled): ?>
readonly
<?php endif; ?>
/>
</div>

View File

@@ -0,0 +1,38 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2018 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);
if (!$readonly && !$disabled)
{
JHtml::script('plg_system_nrframework/widgets/rating.js', ['relative' => true, 'version' => 'auto']);
}
if ($load_stylesheet)
{
JHtml::stylesheet('plg_system_nrframework/widgets/rating.css', ['relative' => true, 'version' => 'auto']);
}
if ($load_css_vars)
{
JFactory::getDocument()->addStyleDeclaration('
.nrf-rating-wrapper.' . $id . ' {
--rating-selected-color: ' . $selected_color . ';
--rating-unselected-color: ' . $unselected_color . ';
--rating-size: ' . $size . 'px;
}
');
}
echo $this->sublayout($half_ratings ? 'half' : 'full', $displayData);

View File

@@ -0,0 +1,47 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2018 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);
?>
<div class="nrf-widget nrf-rating-wrapper <?php echo $css_class; ?>">
<?php
for ($i = 1; $i <= $max_rating; $i++)
{
$label_class = '';
$rating_id = $id . '_' . $i;
if ($value && $i <= $value)
{
$label_class = 'iconFilled';
}
?>
<input type="radio" class="<?php echo $input_class; ?>" id="<?php echo $rating_id; ?>" name="<?php echo $name; ?>"
value="<?php echo $i; ?>"
<?php if ($value && $i == $value): ?>
checked
<?php endif; ?>
<?php if ($readonly || $disabled): ?>
disabled
<?php endif; ?>
/>
<label for="<?php echo $rating_id; ?>" class="<?php echo $label_class; ?>" title="<?php echo $i; ?> <?php echo sprintf(\JText::_('NR_STAR'), ($i > 1 ? 's' : '')); ?>">
<svg class="svg-item">
<use xlink:href="<?php echo $icon_url; ?>#nrf-ratings-<?php echo $icon; ?>" />
</svg>
</label>
<?php
}
?>
</div>

View File

@@ -0,0 +1,76 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2018 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);
$css_class .= ' ' . $size;
?>
<div class="nrf-widget nrf-rating-wrapper half <?php echo $css_class; ?>">
<?php
$counter = 0;
$prev_counter = 0;
// initial value value
$rating_value = 0.5;
for ($i = 0; $i < $max_rating; $i++)
{
$label_class = '';
// wrapper start - for half rating item (half and full star)
if ($counter % 2 == 0)
{
$prev_counter = $counter;
?><span class="rating_item_group"><?php
}
$rating_item_type = fmod($rating_value, 1) == 0.5 ? 'half' : 'full';
$rating_id = $id . '_' . $i . '_' . $rating_item_type;
if ($value && $rating_value <= $value)
{
$label_class = ' iconFilled';
}
?>
<input type="radio"
class="<?php echo $input_class; ?>"
id="<?php echo $rating_id; ?>"
name="<?php echo $name; ?>"
value="<?php echo $rating_value; ?>"
<?php if ($value && $rating_value == $value): ?>
checked
<?php endif; ?>
<?php if ($readonly || $disabled): ?>
disabled
<?php endif; ?>
/>
<label class="<?php echo $rating_item_type . $label_class; ?>" for="<?php echo $rating_id; ?>" title="<?php echo $rating_value; ?> <?php echo sprintf(\JText::_('NR_STAR'), ($rating_value > 1 ? 's' : '')); ?>">
<svg class="svg-item">
<use xlink:href="<?php echo $icon_url; ?>#nrf-ratings-<?php echo $icon; ?>" />
</svg>
</label>
<?php
// wrapper end - for half rating item
if ($counter == $prev_counter + 1)
{
?></span><?php
}
$counter++;
// increase value
$rating_value += 0.5;
}
?>
</div>

View File

@@ -0,0 +1,50 @@
<?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');
extract($displayData);
\JHtml::script('https://cdn.jsdelivr.net/npm/signature_pad@4.0.4/dist/signature_pad.umd.min.js');
\JHtml::script('plg_system_nrframework/widgets/signature.js', ['relative' => true, 'version' => 'auto']);
if ($load_stylesheet)
{
\JHtml::stylesheet('plg_system_nrframework/widgets/signature.css', ['relative' => true, 'version' => 'auto']);
}
if ($load_css_vars)
{
JFactory::getDocument()->addStyleDeclaration('
.nrf-widget.signature.' . $id . ' {
--width: ' . $width . ';
--height: ' . $height . ';
--input-border-width: ' . $border_width . ';
--input-border-color: ' . $border_color . ';
--input-border-radius: ' . $border_radius . ';
--input-background-color: ' . $background_color . ';
--line-color: ' . (is_null($line_color) ? $border_color : $line_color) . ';
}
');
}
?>
<div class="nrf-widget signature<?php echo $css_class; ?>">
<div class="nrf-signature-body">
<div class="actions">
<svg class="nrf-signature-clear" width="22" height="22" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm101.8-262.2L295.6 256l62.2 62.2c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L256 295.6l-62.2 62.2c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l62.2-62.2-62.2-62.2c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l62.2 62.2 62.2-62.2c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17z"></path></svg>
<svg class="nrf-signature-reset" width="22" height="22" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z"></path></svg>
</div>
<canvas data-pen-color="<?php echo $pen_color; ?>"></canvas>
<input type="hidden" value="<?php echo htmlspecialchars($value); ?>" name="<?php echo $name; ?>" />
<input type="hidden" value="<?php echo htmlspecialchars($value); ?>" class="initial-value" />
</div>
</div>