Compare commits

...

7 Commits

Author SHA1 Message Date
FabioL bb43544c59 Merge branch 'master' of https://github.com/devcode-it/openstamanager 2024-05-17 17:53:52 +02:00
FabioL 5140dc5b78 Fix per AdminLTE3 2024-05-17 17:53:49 +02:00
Pek5892 909d535b5f Aggiunta rientri menu sidebar 2024-05-17 17:29:55 +02:00
FabioL 2179e9f30f Merge branch 'master' of https://github.com/devcode-it/openstamanager 2024-05-17 17:27:14 +02:00
FabioL 697685e268 Migliorie grafiche login e preloader 2024-05-17 17:27:12 +02:00
Pek5892 90d9a80f4f Fix line_chart.js 2024-05-17 16:49:14 +02:00
Pek5892 123582b730 Fix modulo statistiche 2024-05-17 16:42:59 +02:00
13 changed files with 168 additions and 115 deletions

View File

@ -30,6 +30,10 @@
url('../fonts/sourcesanspro-regular-webfont.svg') format('svg');
}
.preloader{
background-color: #f4f6f9de !important;
}
html {
font-size: 13px;
height: 100%;
@ -1002,6 +1006,10 @@ table.dataTable {
color: dodgerblue;
}
.tooltipster-box ul{
list-style: none;
}
/*
* Colore testo btn-box-tool
*/
@ -1531,6 +1539,16 @@ kbd{
padding: 20px;
}
.sidebar .nav-treeview .nav-link {
margin-left: 10px;
width: auto !important;
}
.sidebar .nav-treeview .nav-treeview .nav-link {
margin-left: 20px;
width: auto !important;
}
@media screen and (max-width: 767px) {
.navbar-left {
display: inline-block;

View File

@ -16,6 +16,11 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
// Aggiunta dell'ingranaggio all'unload della pagina
$(window).on("beforeunload", function () {
$("#main_loading").css('height', '100vh').find('img').show().removeClass('animation__shake').addClass('animation__shake');
});
// Fix multi-modal
$(document).on('hidden.bs.modal', '.modal', function () {
$(this).remove();

View File

@ -644,7 +644,7 @@ if (!empty($messages['error'])) {
foreach ($messages['error'] as $value) {
echo '
<div class="alert alert-danger push">
<h4><i class="icon fa fa fa-ban"></i> ' . tr('Errore') . '</h4>
<h4><i class="fa fa fa-ban"></i> ' . tr('Errore') . '</h4>
' . $value . '
</div>';
}
@ -655,7 +655,7 @@ if (!empty($messages['warning'])) {
foreach ($messages['warning'] as $value) {
echo '
<div class="alert alert-warning push">
<h4><i class="icon fa fa-warning"></i> ' . tr('Attenzione') . '</h4>
<h4><i class="fa fa-warning"></i> ' . tr('Attenzione') . '</h4>
' . $value . '
</div>';
}

View File

@ -158,29 +158,34 @@ if (!empty(flash()->getMessage('error'))) {
echo '
<form action="?op=login" method="post" autocomplete="off">
<div class="login-box">
<div class="login-logo">
<img src="'.App::getPaths()['img'].'/logo_completo.png" alt="'.tr('OpenSTAManager, il software gestionale open source per assistenza tecnica e fatturazione elettronica').'" style="max-width: 100%; max-height: 100%;">
</div>
<div class="card card-outline card-orange">
<div class="card-header text-center">
<img src="'.App::getPaths()['img'].'/logo_completo.png" alt="'.tr('OpenSTAManager, il software gestionale open source per assistenza tecnica e fatturazione elettronica').'" class="img-fluid">
</div>
<div class="login-box-body">
<p class="login-box-msg">'.tr('Accedi con le tue credenziali').'</p>
<div class="form-group has-feedback">
<input type="text" name="username" autocomplete="username" class="form-control" placeholder="'.tr('Nome utente').'"';
<div class="card-body">
<p class="login-box-msg">'.tr('Accedi con le tue credenziali').'</p>
<div class="input-group mb-3">
<input type="text" name="username" autocomplete="username" class="form-control" placeholder="'.tr('Nome utente').'"';
if (isset($username)) {
echo ' value="'.$username.'"';
}
echo ' required>
<span class="form-control-feedback"><i class="fa fa-user"></i> </span>
</div>
<div class="input-group-append">
<div class="input-group-text">
<i class="fa fa-user"></i>
</div>
</div>
</div>
<div class="form-group has-feedback">
{[ "type": "password", "name": "password", "autocomplete": "current-password", "placeholder": "'.tr('Password').'" ]}
</div>
<div class="input-group mb-3">
{[ "type": "password", "name": "password", "autocomplete": "current-password", "placeholder": "'.tr('Password').'" ]}
</div>
<button type="submit" class="btn btn-danger btn-block btn-flat">'.tr('Accedi').'</button>
<br>
<p><a href="'.base_path().'/reset.php">'.tr('Password dimenticata?').'</a></p>';
<button type="submit" class="btn btn-danger btn-block btn-flat">'.tr('Accedi').'</button>
<br>
<p><a href="'.base_path().'/reset.php">'.tr('Password dimenticata?').'</a></p>';
if ($microsoft) {
echo '
<div class="social-auth-links text-center">

View File

@ -30,7 +30,7 @@ switch ($name) {
['idanagrafica', '<>', $id_record],
])->count() == 0;
$message = $disponibile ? '<i class="icon fa fa-check text-green"></i> '.tr('Il codice anagrafica è disponibile.') : '<i class="icon fa fa-warning text-yellow"></i> '.tr("Il codice anagrafica è già utilizzato in un'altra anagrafica.");
$message = $disponibile ? '<i class="fa fa-check text-green"></i> '.tr('Il codice anagrafica è disponibile.') : '<i class="fa fa-warning text-yellow"></i> '.tr("Il codice anagrafica è già utilizzato in un'altra anagrafica.");
$response = [
'result' => $disponibile,
@ -46,7 +46,7 @@ switch ($name) {
['idanagrafica', '<>', $id_record],
])->count() == 0;
$message = $disponibile ? '<i class="icon fa fa-check text-green"></i> '.tr('Questo codice fiscale non è ancora stato utilizzato.') : '<i class="icon fa fa-warning text-yellow"></i> '.tr("Il codice fiscale è già utilizzato in un'altra anagrafica.");
$message = $disponibile ? '<i class="fa fa-check text-green"></i> '.tr('Questo codice fiscale non è ancora stato utilizzato.') : '<i class="fa fa-warning text-yellow"></i> '.tr("Il codice fiscale è già utilizzato in un'altra anagrafica.");
// Validazione del Codice Fiscale
// Se anagrafica non ancora definita OPPURE Se il codice fiscale è diverso dalla partita iva ma solo per anagrafiche Private e Aziende.
@ -54,7 +54,7 @@ switch ($name) {
$check = Validate::isValidTaxCode($value);
if (empty($check)) {
$disponibile = false;
$message .= '<br><i class="icon fa fa-warning text-yellow"></i> '.tr('Il codice fiscale _COD_ non possiede un formato valido.', [
$message .= '<br><i class="fa fa-warning text-yellow"></i> '.tr('Il codice fiscale _COD_ non possiede un formato valido.', [
'_COD_' => $value,
]);
}
@ -106,7 +106,7 @@ switch ($name) {
}
}
$message = $valido ? '<i class="icon fa fa-check text-green"></i> '.tr('Il codice intermediario è valido.') : '<i class="icon fa fa-warning text-yellow"></i> '.tr('Il codice intermediario non sembra essere valido. Lunghezza attesa _LENGTH_ caratteri.', ['_LENGTH_' => $length]);
$message = $valido ? '<i class="fa fa-check text-green"></i> '.tr('Il codice intermediario è valido.') : '<i class="fa fa-warning text-yellow"></i> '.tr('Il codice intermediario non sembra essere valido. Lunghezza attesa _LENGTH_ caratteri.', ['_LENGTH_' => $length]);
$response = [
'result' => $valido,
@ -122,7 +122,7 @@ switch ($name) {
['idanagrafica', '<>', $id_record],
])->count() == 0;
$message = $disponibile ? '<i class="icon fa fa-check text-green"></i> '.tr('Questa partita iva non è ancora stata utilizzata') : '<i class="icon fa fa-warning text-yellow"></i> '.tr("La partita iva è già utilizzata in un'altra anagrafica");
$message = $disponibile ? '<i class="fa fa-check text-green"></i> '.tr('Questa partita iva non è ancora stata utilizzata') : '<i class="fa fa-warning text-yellow"></i> '.tr("La partita iva è già utilizzata in un'altra anagrafica");
$partita_iva = !empty($anagrafica) && is_numeric($value) ? $anagrafica->nazione->iso2.$value : $value;
@ -146,7 +146,7 @@ switch ($name) {
$message .= '. ';
if (!empty($errors)) {
$message .= '<br><i class="icon fa fa-times text-red"></i> '.tr('_NUM_ errori', ['_NUM_' => count($errors)]).':<ul>';
$message .= '<br><i class="fa fa-times text-red"></i> '.tr('_NUM_ errori', ['_NUM_' => count($errors)]).':<ul>';
foreach ($errors as $error) {
$message .= '<li>'.$error.'</li>';
}
@ -169,7 +169,7 @@ switch ($name) {
])->count() == 0;
$result = $disponibile;
$message = $disponibile ? '<i class="icon fa fa-check text-green"></i> '.tr('Questa email non è ancora stata utilizzata') : '<i class="icon fa fa-warning text-yellow"></i> '.tr("L'email è già utilizzata in un'altra anagrafica");
$message = $disponibile ? '<i class="fa fa-check text-green"></i> '.tr('Questa email non è ancora stata utilizzata') : '<i class="fa fa-warning text-yellow"></i> '.tr("L'email è già utilizzata in un'altra anagrafica");
$errors = [];
$check = Validate::isValidEmail($value);
@ -188,7 +188,7 @@ switch ($name) {
$message .= '. ';
if (!empty($errors)) {
$message .= '<br><i class="icon fa fa-times text-red"></i> '.tr('_NUM_ errori', ['_NUM_' => count($errors)]).':<ul>';
$message .= '<br><i class="fa fa-times text-red"></i> '.tr('_NUM_ errori', ['_NUM_' => count($errors)]).':<ul>';
foreach ($errors as $error) {
$message .= '<li>'.$error.'</li>';
}

View File

@ -109,7 +109,7 @@ foreach ($stati_intervento as $stato) {
<li>
<input type="checkbox" id="stato_'.$stato['id'].'" class="dashboard_stato" value="'.$stato['id'].'" '.$attr.'>
<label for="stato_'.$stato['id'].'">
'.$stato['descrizione']. '&nbsp;<span class="icon pull-right" style="background-color:'.$stato['colore'].';"></span>
'.$stato['descrizione']. '&nbsp;<span class="pull-right" style="background-color:'.$stato['colore'].';"></span>
</label>
</li>';
}
@ -182,7 +182,7 @@ foreach ($tecnici_disponibili as $tecnico) {
<li>
<input type="checkbox" id="tecnico_'.$tecnico['id'].'" class="dashboard_tecnico" value="'.$tecnico['id'].'" '.$attr.'>
<label for="tecnico_'.$tecnico['id'].'">
'.$tecnico['ragione_sociale']. '&nbsp;<span class="icon pull-right" style="background-color:'.$tecnico['colore'].';"></span>
'.$tecnico['ragione_sociale']. '&nbsp;<span class="pull-right" style="background-color:'.$tecnico['colore'].';"></span>
</label>
</li>';
}

View File

@ -114,7 +114,7 @@ if ($module->getTranslation('title') == 'Fatture di vendita' && $services_enable
if (sizeof($documenti_invio) > 0) {
echo '
<div class="alert push alert-warning">
<h4><i class="icon fa fa-clock-o"></i>'.tr('Attenzione').'</h4>'.tr('Le seguenti fatture sono in attesa di essere inviate').':<ul>';
<h4><i class="fa fa-clock-o"></i>'.tr('Attenzione').'</h4>'.tr('Le seguenti fatture sono in attesa di essere inviate').':<ul>';
foreach ($documenti_invio as $documento) {
echo '
<li><b>'.$documento.'</b></li>';

View File

@ -33,38 +33,40 @@ echo '
$start = $_SESSION['period_start'];
$end = $_SESSION['period_end'];
echo '
<div class="card card-warning">
<div class="card-header">
<h4 class="card-title">'.tr('Periodi temporali').'</h4>
<div class="card-tools">
<button class="btn btn-warning btn-sm" onclick="add_calendar()">
<i class="fa fa-plus"></i> '.tr('Aggiungi periodo').'
</button>
<button type="button" class="btn btn-tool" data-card-widget="collapse">
<i class="fa fa-minus"></i>
</button>
</div>
</div>
<div class="card-body" id="calendars">
</div>
</div>';
// Fatturato
echo '
<div class="card card-success">
<div class="card card-info">
<div class="card-header">
<h4 class="card-title">'.tr('Vendite e acquisti').'</h4>
<div class="card-tools">
<button type="button" class="btn btn-tool" data-card-widget="collapse">
<i class="fa fa-minus"></i>
</button>
</div>
</div>
<canvas class="card-body" id="fatturato" height="500"></canvas>
<div class="card-body">
<div class="card card-warning collapsed-card">
<div class="card-header">
<h4 class="card-title">'.tr('Periodi temporali').'</h4>
<div class="card-tools">
<button class="btn btn-warning btn-sm" onclick="add_calendar()">
<i class="fa fa-plus"></i> '.tr('Aggiungi periodo').'
</button>
<button type="button" class="btn btn-tool" data-card-widget="collapse">
<i class="fa fa-plus"></i>
</button>
</div>
</div>
<div class="card-body" id="calendars">
</div>
</div>
<canvas id="fatturato" height="50"></canvas>
</div>
</div>';
// Script per il grafico del fatturato
echo '
<script>
@ -219,7 +221,7 @@ $totale = $dbo->fetchArray('SELECT
echo '
<div class="row">
<div class="col-md-6">
<div class="card card-warning">
<div class="card card-info">
<div class="card-header">
<h4 class="card-title">'.tr('I 20 clienti TOP per il periodo').': '.Translator::dateToLocale($start).' - '.Translator::dateToLocale($end).'</h4>
@ -306,7 +308,7 @@ $totale = $dbo->fetchArray('SELECT
echo '
<div class="col-md-6">
<div class="card card-danger">
<div class="card card-info">
<div class="card-header">
<h4 class="card-title">'.tr('I 20 articoli più venduti per il periodo').': '.Translator::dateToLocale($start).' - '.Translator::dateToLocale($end).'</h4>
@ -388,20 +390,23 @@ foreach ($tipi as $tipo) {
}
echo '
<div class="card card-info">
<div class="card-header">
<h4 class="card-title">'.tr('Numero interventi per tipologia').'</h4>
<div class="row">
<div class="col-md-6">
<div class="card card-info">
<div class="card-header">
<h4 class="card-title">'.tr('Numero interventi per tipologia').'</h4>
<div class="card-tools">
<button type="button" class="btn btn-tool" data-card-widget="collapse">
<i class="fa fa-minus"></i>
</button>
<div class="card-tools">
<button type="button" class="btn btn-tool" data-card-widget="collapse">
<i class="fa fa-minus"></i>
</button>
</div>
</div>
<div class="card-body">
<canvas id="interventi_n_tipologia"></canvas>
</div>
</div>
</div>
<div class="card-body">
<canvas id="interventi_n_tipologia" height="100"></canvas>
</div>
</div>';
</div>';
// Script for the chart displaying the number of interventions by type
echo '
@ -445,19 +450,22 @@ foreach ($tipi as $tipo) {
}
echo '
<div class="card card-info">
<div class="card-header">
<h4 class="card-title">'.tr('Ore interventi per tipologia').'</h4>
<div class="col-md-6">
<div class="card card-info">
<div class="card-header">
<h4 class="card-title">'.tr('Ore interventi per tipologia').'</h4>
<div class="card-tools">
<button type="button" class="btn btn-tool" data-card-widget="collapse">
<i class="fa fa-minus"></i>
</button>
<div class="card-tools">
<button type="button" class="btn btn-tool" data-card-widget="collapse">
<i class="fa fa-minus"></i>
</button>
</div>
</div>
<div class="card-body">
<canvas id="interventi_ore_tipologia"></canvas>
</div>
</div>
</div>
<div class="card-body">
<canvas id="interventi_ore_tipologia" height="100"></canvas>
</div>
</div>';
// Script per il grafico delle ore interventi per tipologia
@ -528,30 +536,33 @@ foreach ($tecnici as $tecnico) {
}
echo '
<div class="card card-info">
<div class="card-header">
<h4 class="card-title">'.tr('Ore di lavoro per tecnico').'</h4>
<div class="row">
<div class="col-md-6">
<div class="card card-info">
<div class="card-header">
<h4 class="card-title">'.tr('Ore di lavoro per tecnico').'</h4>
<div class="row">
<div class="col-md-3 float-right">';
<div class="row">
<div class="col-md-3 float-right">';
if ($_SESSION['superselect']['idtipiintervento']) {
echo '
{["type": "select", "multiple": "1", "label": "'.tr('Tipi attività').'", "name": "idtipiintervento[]", "ajax-source": "tipiintervento", "value": "'.implode(',', (array) json_decode($_SESSION['superselect']['idtipiintervento'])).'", "placeholder": "Tutti" ]}';
{["type": "select", "multiple": "1", "label": "'.tr('Tipi attività').'", "name": "idtipiintervento[]", "ajax-source": "tipiintervento", "value": "'.implode(',', (array) json_decode($_SESSION['superselect']['idtipiintervento'])).'", "placeholder": "Tutti" ]}';
}
echo '
</div>
</div>
<div class="card-tools">
<button type="button" class="btn btn-tool" data-card-widget="collapse">
<i class="fa fa-minus"></i>
</button>
</div>
</div>
<div class="card-body">
<canvas id="sessioni"></canvas>
</div>
</div>
<div class="card-tools">
<button type="button" class="btn btn-tool" data-card-widget="collapse">
<i class="fa fa-minus"></i>
</button>
</div>
</div>
<div class="card-body">
<canvas id="sessioni" height="100"></canvas>
</div>
</div>';
</div>';
// Script per il grafico ore interventi per tecnico
echo '
@ -703,19 +714,23 @@ $dataset .= '{
]
},';
echo '
<div class="card card-info">
<div class="card-header">
<h4 class="card-title">'.tr('Nuove anagrafiche').'</h4>
<div class="card-tools">
<button type="button" class="btn btn-tool" data-card-widget="collapse">
<i class="fa fa-minus"></i>
</button>
<div class="col-md-6">
<div class="card card-info">
<div class="card-header">
<h4 class="card-title">'.tr('Nuove anagrafiche').'</h4>
<div class="card-tools">
<button type="button" class="btn btn-tool" data-card-widget="collapse">
<i class="fa fa-minus"></i>
</button>
</div>
</div>
<div class="card-body">
<canvas id="n_anagrafiche"></canvas>
</div>
</div>
</div>
<div class="card-body">
<canvas id="n_anagrafiche" height="100"></canvas>
</div>
</div>';
// Script per il grafico dei nuovi clienti per mese

View File

@ -44,8 +44,8 @@ class LineChart extends Stat {
labels.push(date.format("MMMM YYYY"));
});
while (chart.data.badges.length < data.results.length) {
chart.data.badges.push("");
while (chart.data.labels.length < data.results.length) {
chart.data.labels.push("");
}
chart.data.datasets.push({
@ -100,11 +100,11 @@ class LineChart extends Stat {
color = color.substr(0, 7);
chart.data.datasets.splice(dataset_index, 1);
chart.data.badges.splice(dataset_index, 1);
chart.data.labels.splice(dataset_index, 1);
}
while (chart.data.badges.length > max_length) {
chart.data.badges.pop("");
while (chart.data.labels.length > max_length) {
chart.data.labels.pop("");
}
chart.update();

View File

@ -73,7 +73,7 @@ switch ($name) {
])->count() == 0;
$result = $disponibile;
$message = $disponibile ? '<i class="icon fa fa-check text-green"></i> '.tr('Questa email non è ancora stata utilizzata') : '<i class="icon fa fa-warning text-yellow"></i> '.tr("L'email è già utilizzata in un'altra anagrafica");
$message = $disponibile ? '<i class="fa fa-check text-green"></i> '.tr('Questa email non è ancora stata utilizzata') : '<i class="fa fa-warning text-yellow"></i> '.tr("L'email è già utilizzata in un'altra anagrafica");
$errors = [];
$check = Validate::isValidEmail($value);
@ -92,7 +92,7 @@ switch ($name) {
$message .= '. ';
if (!empty($errors)) {
$message .= '<br><i class="icon fa fa-times text-red"></i> '.tr('_NUM_ errori', ['_NUM_' => count($errors)]).':<ul>';
$message .= '<br><i class="fa fa-times text-red"></i> '.tr('_NUM_ errori', ['_NUM_' => count($errors)]).':<ul>';
foreach ($errors as $error) {
$message .= '<li>'.$error.'</li>';
}

View File

@ -45,7 +45,7 @@ if (!empty($fatture_generate_errore->count())) {
echo '
<div class="alert alert-warning push alert-dismissible" role="alert">
<button class="close" type="button" data-dismiss="alert" aria-hidden="true"><span aria-hidden="true">×</span><span class="sr-only">'.tr('Chiudi').'</span></button>
<h4><i class="icon fa fa-warning"></i>'.tr('Attenzione').'</h4>'.(($fatture_generate_errore->count() > 1) ? tr('Le seguenti fatture hanno ricevuto uno scarto o presentano errori in fase di trasmissione') : tr('La seguente fattura ha ricevuto uno scarto o presenta errori in fase di trasmissione')).':
<h4><i class="fa fa-warning"></i>'.tr('Attenzione').'</h4>'.(($fatture_generate_errore->count() > 1) ? tr('Le seguenti fatture hanno ricevuto uno scarto o presentano errori in fase di trasmissione') : tr('La seguente fattura ha ricevuto uno scarto o presenta errori in fase di trasmissione')).':
<ul>';
foreach ($fatture_generate_errore as $fattura_generata) {
@ -91,7 +91,7 @@ $fatture_generate = Fattura::vendita()
if (!empty($fatture_generate->count())) {
echo '
<div class="alert alert-info push info-dismissible" role="alert"><button class="close" type="button" data-dismiss="alert" aria-hidden="true"><span aria-hidden="true">×</span><span class="sr-only">'.tr('Chiudi').'</span></button>
<h4><i class="icon fa fa-info"></i>'.tr('Informazione').'</h4> '.(($fatture_generate->count() > 1) ? tr('Le seguenti fatture sono in attesa di una ricevuta da più di 7 giorni') : tr('La seguente fattura è in attesa di una ricevuta da più di 7 giorni')).':
<h4><i class="fa fa-info"></i>'.tr('Informazione').'</h4> '.(($fatture_generate->count() > 1) ? tr('Le seguenti fatture sono in attesa di una ricevuta da più di 7 giorni') : tr('La seguente fattura è in attesa di una ricevuta da più di 7 giorni')).':
<ul>';
foreach ($fatture_generate as $fattura_generata) {

View File

@ -101,6 +101,7 @@ class DefaultHandler implements HandlerInterface
*/
protected function password(&$values, &$extras)
{
$result = '
<script>
const characters ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!%-()*[]";
@ -197,6 +198,10 @@ class DefaultHandler implements HandlerInterface
}
// Delega al metodo "text", per la generazione del codice HTML
$values['icon-after'] = '
<div class="input-group-text">
<span class="fa fa-eye-slash clickable" id="'.$values['id'].'_toggle" onclick="togglePassword_'.$values['id'].'();"></span>
</div>';
$result .= $this->text($values, $extras);
return $result;

View File

@ -39,8 +39,10 @@ class HTMLWrapper implements WrapperInterface
$values['icon-before'] = isset($values['icon-before']) ? $this->parser($values, $extras, $values['icon-before']) : null;
$values['icon-after'] = isset($values['icon-after']) ? $this->parser($values, $extras, $values['icon-after']) : null;
$result .= '
<div class="form-group '.$extra_class.'">';
if (!empty($extra_class)) {
$result .= '
<div class="'.$extra_class.'">';
}
// Generazione dell'etichetta
if (!empty($values['label'])) {
@ -71,14 +73,14 @@ class HTMLWrapper implements WrapperInterface
if (!empty($values['icon-before']) || !empty($values['icon-after']) || !empty($values['validation'])) {
if (!empty($values['icon-after'])) {
$result .= '
<span class="input-group-addon after'.(!empty($values['icon-custom']) ? ' '.$values['icon-custom'] : '').'">'.$values['icon-after'].'</span>';
<span class="input-group-append after'.(!empty($values['icon-custom']) ? ' '.$values['icon-custom'] : '').'">'.$values['icon-after'].'</span>';
}
if (!empty($values['validation'])) {
$result .= '
<span class="input-group-addon after" id="'.$pseudo_id.'_validation">
<div class="input-group-append after" id="'.$pseudo_id.'_validation">
<span class="tip" title="'.tr('Validazione').'"><i class="fa fa-question-circle "></i></span>
</span>';
</div>';
}
$result .= '
@ -102,8 +104,11 @@ class HTMLWrapper implements WrapperInterface
$result .= '
<div id="'.$values['id'].$rand.'-errors"></div>';
$result .= '
if ($values['type'] == 'checkbox') {
$result .= '
</div>';
}
if (!empty($values['label'])) {
unset($values['label']);
}