150 lines
5.2 KiB
PHP
150 lines
5.2 KiB
PHP
<?php
|
|
/**
|
|
*
|
|
* Classe Widgets
|
|
*
|
|
* @version : 0.2
|
|
* La classe viene inclusa per poter creare il codice dei widgets
|
|
* Per poterla utilizzare è necessario che precedentemente sia stata inclusa la classe per la manipolazione del database
|
|
*
|
|
*/
|
|
class Widgets {
|
|
|
|
/**
|
|
* Funzione createWidget
|
|
* $id_widget: l'id numerico del widget da creare ed inserire nella pagina
|
|
* Sa seconda del tipo di widget inserisce il codice HTML per la sua creazione nella pagina.
|
|
* Ottiene i dati per la creazione
|
|
* del widget da tabella, in maniera da crearli in maniera dinamica a seconda dei campi
|
|
*/
|
|
function createWidget($id_widget, $class, $totalNumber = 6) {
|
|
global $dbo;
|
|
global $rootdir;
|
|
|
|
// se ho passato il parametro allora
|
|
if (isset($id_widget)) {
|
|
// ottengo i dati del widget passato come parametro da database
|
|
$rs_w = $dbo->fetchArray("SELECT * FROM zz_widget_modules WHERE id=" . prepare($id_widget));
|
|
|
|
// a seconda del tipo inserisco il widget in maniera differente
|
|
switch ($rs_w[0]['type']) {
|
|
// widget di tipo statistiche
|
|
case "print" :
|
|
case "stats" :
|
|
$query = $rs_w[0]['query'];
|
|
$query = str_replace("|period_start|", $_SESSION['period_start'], $query);
|
|
$query = str_replace("|period_end|", $_SESSION['period_end'], $query);
|
|
|
|
$dato = "";
|
|
if($query != "") $dato = $dbo->fetchArray($query)[0]['dato'];
|
|
|
|
// inserisco il widget
|
|
echo '
|
|
<li class="col-xs-12 col-sm-6 col-md-4 col-lg-' . intval(12/$totalNumber) . ' li-widget" id="widget_' . $rs_w[0]['id'] . '">
|
|
<button type="button" class="close" onclick="if(confirm(\'Disabilitare questo widget?\')) { $.post( \'' . $rootdir . '/modules/aggiornamenti/actions.php?id_module=' . $rs_w[0]['id_module'] . '\', { op: \'disable_widget\', id: \'' . $rs_w[0]['id'] . '\' }, function(response){ location.href = \'' . $rootdir . '/controller.php?id_module=' . $rs_w[0]['id_module'] . '\'; }); };" ><span aria-hidden="true">×</span><span class="sr-only">' . _("Chiudi") . '</span></button>
|
|
<a class="clickable" ';
|
|
if ($rs_w[0]['more_link'] != '') {
|
|
if ($rs_w[0]['more_link_type'] == 'link') {
|
|
|
|
echo 'href="' . $rs_w[0]['more_link'] . '"';
|
|
}
|
|
else if ($rs_w[0]['more_link_type'] == 'popup') {
|
|
echo 'data-href="' . $rs_w[0]['more_link'] . '" data-toggle="modal" data-title="' . $rs_w[0]['text'] . '" data-target="#bs-popup"';
|
|
}
|
|
|
|
else if ($rs_w[0]['more_link_type'] == 'javascript') {
|
|
$link = $rs_w[0]['more_link'];
|
|
$link = str_replace("|period_start|", $_SESSION['period_start'], $link);
|
|
$link = str_replace("|period_end|", $_SESSION['period_end'], $link);
|
|
echo 'onclick="' . $link . '"';
|
|
}
|
|
}
|
|
echo '>
|
|
<div class="info-box">
|
|
<span class="info-box-icon" style="background-color:' . $rs_w[0]['bgcolor'] . '">
|
|
<i class="' . $rs_w[0]['icon'] . '"></i>
|
|
</span>
|
|
<div class="info-box-content">
|
|
<span class="info-box-text">' . $rs_w[0]['text'] . '</span>
|
|
<span class="info-box-number">' . $dato . '</span>
|
|
</div>
|
|
</div>
|
|
</a>
|
|
</li>';
|
|
break;
|
|
|
|
// widget di tipo chart: importa la pagina php specificata nel campo php_include della tabella, non ha l'icona
|
|
case "chart" :
|
|
echo '
|
|
<li class="' . $class . '" id="' . $rs_w[0]['id'] . '">
|
|
<!-- small box -->
|
|
<div class="small-box bg-' . $rs_w[0]['bgcolor'] . '">
|
|
<div class="inner">';
|
|
include_once ($rs_w[0]['php_include']);
|
|
echo '
|
|
</div>
|
|
</div>
|
|
</li>';
|
|
break;
|
|
|
|
// widget custom con codice php e icona
|
|
case "custom" :
|
|
echo '
|
|
<li class="' . $class . '" id="' . $rs_w[0]['id'] . '">
|
|
<!-- small box -->
|
|
<div class="small-box bg-' . $rs_w[0]['bgcolor'] . '">
|
|
<div class="inner">';
|
|
include_once ($rs_w[0]['php_include']);
|
|
echo '
|
|
</div>
|
|
<div class="icon">
|
|
<i class="' . $rs_w[0]['icon'] . '"></i>
|
|
</div>
|
|
</div>
|
|
</li>';
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Funzione addModuleWidgets
|
|
* $id_modulo: modulo in cui ci si trova
|
|
* $location: location all'interno del modulo, per esempio controller oppure inserimento/modifica
|
|
* Prende da database tutti i widget associati al modulo passato come parametro e li aggiunge con createWidget
|
|
* alla pagina
|
|
*/
|
|
function addModuleWidgets($id_module, $location) {
|
|
global $dbo;
|
|
|
|
if (isset($id_module)) {
|
|
// ottengo da db gli id dei widget associati al modulo
|
|
$rs_w = $dbo->fetchArray("SELECT id, location, class FROM zz_widget_modules WHERE id_module=\"" . $id_module . "\" AND location=\"" . $location . "\" AND enabled=1 ORDER BY `order` ASC");
|
|
|
|
$cont = count($rs_w);
|
|
|
|
if($cont!=0){
|
|
if($cont > 6) $cont = 6;
|
|
if($cont <= 2) $cont = 4;
|
|
|
|
// aggiungo la riga per bootstrap
|
|
echo '
|
|
<ul class="row widget" id="widget-' . $location . '" data-class="' . $rs_w[0]['class'] . '">';
|
|
|
|
// aggiungo ad uno ad uno tutti i widget
|
|
for($i = 0; $i < sizeof($rs_w); $i ++) {
|
|
$this->createWidget($rs_w[$i]['id'], $rs_w[$i]['class'], $cont);
|
|
}
|
|
|
|
echo '
|
|
</ul>
|
|
<script>
|
|
equalHeight("#widget-' . $location . ' .li-widget .box");
|
|
</script>';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
?>
|