{source}
<!--
- Notas -
Sourcerer
Para empotrar PHP dentro de las páginas se necesita tener instalada la extensión Sourcerer (https://extensions.joomla.org/extension/sourcerer)
jQuery
Valorar si la de jquery se puede quitar.
Datatables
Se hace uso de una tabla javascript para presentar los resultados (https://datatables.net). Esta tabla proporciona la paginación y las búsquedas.
Esta tabla puede configurarse. Ejemplos: desactivar paginación, activar un scroll, cambiar cantidad de resultados por página, etc... De esta forma puede adaptarse su comportamiento al diseño que se quiera.
Documentación: https://datatables.net/reference/option/
La dependencia con datatables, el css y el js, incluyen código de integración con Bootstrap. Si da problemas quitar estas dependencias y sustituir por:
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs-3.3.6/dt-1.10.12/r-2.1.0/datatables.min.css"/>
<script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
<script type="text/javascript" src="https://cdn.datatables.net/v/bs-3.3.6/dt-1.10.12/r-2.1.0/datatables.min.js"></script>
-->
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/dt/dt-1.10.12/r-2.1.0/datatables.min.css"/>
<script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
<script type="text/javascript" src="https://cdn.datatables.net/v/dt/dt-1.10.12/r-2.1.0/datatables.min.js"></script>
<?
//configuracion
//ruta de la base de datos
$dbname = "aguastenerife_01";
$dbhost ="localhost";
$dbuser="aguastenerife_01";
$dbpass="dppQwMWZfx";
//Directorio virtual donde están los pdfs (Requiere su creación en Apache apuntando al directorio real de los documentos)
$raizDocumentos = "https://www.aguastenerife.org";
//CONSULTAS SQL
//Tipos y cantidad de contratos en curso (Verificado)
$sqlsubtiposcontratosencurso= "SELECT mojs8_t_subtiposcontrato.DescSubTipoContrato, mojs8_t_subtiposcontrato.IdSubtipoCon, Count(mojs8_contratoscurso.visible) AS cantidad FROM mojs8_t_subtiposcontrato LEFT JOIN mojs8_contratoscurso ON (mojs8_t_subtiposcontrato.IdSubTipoCon = mojs8_contratoscurso.IdSubtipoCon and mojs8_contratoscurso.visible = true) GROUP BY mojs8_t_subtiposcontrato.DescSubTipoContrato, mojs8_t_subtiposcontrato.IdSubtipoCon Order by mojs8_t_subtiposcontrato.IdSubtipoCon asc ;";
//Tipos y cantidad de contratos adjudicados (Verificado)
$sqlsubtiposcontratosadjudicados = "SELECT mojs8_t_subtiposcontrato.DescSubTipoContrato, mojs8_t_subtiposcontrato.IdSubtipoCon, Count(mojs8_contratosadjudicados.visible) AS cantidad
FROM mojs8_t_subtiposcontrato LEFT JOIN mojs8_contratosadjudicados
/*ON (mojs8_t_subtiposcontrato.IdSubTipoCon = mojs8_contratosadjudicados.IdSubtipoCon and mojs8_contratosadjudicados.visible = true) */
ON (mojs8_t_subtiposcontrato.IdSubTipoCon = mojs8_contratosadjudicados.IdSubtipoCon ) GROUP BY mojs8_t_subtiposcontrato.DescSubTipoContrato, mojs8_t_subtiposcontrato.IdSubtipoCon
Order by mojs8_t_subtiposcontrato.IdSubtipoCon asc;";
//Lista de contratos en curso (Verificado)
$sqlcontratosencurso="SELECT mojs8_contratoscurso.IdCodigoCon, mojs8_contratoscurso.Denominacion, mojs8_contratoscurso.CAdm, mojs8_contratoscurso.Ctecn, mojs8_contratoscurso.FechaFinPreOferta, mojs8_contratoscurso.PresupuestoBas, mojs8_contratoscurso.Observaciones, mojs8_tiposimpuestos.DescTipoImpuesto, mojs8_contratoscurso.FechaPublicacion, mojs8_contratoscurso.FueraPlazo FROM mojs8_contratoscurso INNER JOIN mojs8_tiposimpuestos ON mojs8_contratoscurso.Impuestos = mojs8_tiposimpuestos.IdTipoImpuesto WHERE (((mojs8_contratoscurso.visible)=True) AND ((mojs8_contratoscurso.IdSubtipoCon)=:idSubTipoContrato)) order by mojs8_contratoscurso.FechaPublicacion desc, mojs8_contratoscurso.IdCodigoCon desc;";
//Detalle de mesa de contratación de un contrato en curso (Verificado)
$sqlmesacontratacion="SELECT mojs8_mesacontratacion.Fecha, mojs8_mesacontratacion.Documento, mojs8_mesacontratacion.Descripcion FROM mojs8_contratoscurso INNER JOIN mojs8_mesacontratacion ON (mojs8_contratoscurso.IdSubtipoCon = mojs8_mesacontratacion.IdSubtipoCon) AND (mojs8_contratoscurso.IdTipoCon = mojs8_mesacontratacion.IdTipoCon) AND (mojs8_contratoscurso.IdCodigoCon = mojs8_mesacontratacion.IdCodigoCon) where mojs8_contratoscurso.IdCodigoCon=:IdCodigoCon";
//Detalle de tramitacion de un contrato en curso (Verificado)
$sqldetallestramitacion="SELECT mojs8_detallestramitacion.Fecha, mojs8_detallestramitacion.Documento, mojs8_detallestramitacion.Descripcion
FROM mojs8_contratoscurso INNER JOIN mojs8_detallestramitacion
ON (mojs8_contratoscurso.IdSubtipoCon = mojs8_detallestramitacion.IdSubtipoCon) AND (mojs8_contratoscurso.IdTipoCon = mojs8_detallestramitacion.IdTipoCon) AND (mojs8_contratoscurso.IdCodigoCon = mojs8_detallestramitacion.IdCodigoCon) where mojs8_contratoscurso.IdCodigoCon=:IdCodigoCon";
//Detalle de anuncios de un contrato en curso (Verificado)
$sqlanunciosofic="SELECT mojs8_anunciosofic.Fecha, mojs8_anunciosofic.Anuncio,mojs8_t_tiposanuncio.DescTipoAnu FROM mojs8_t_tiposanuncio INNER JOIN (mojs8_contratoscurso INNER JOIN mojs8_anunciosofic ON (mojs8_contratoscurso.IdTipoCon = mojs8_anunciosofic.IdTipoCon) AND (mojs8_contratoscurso.IdCodigoCon = mojs8_anunciosofic.IdCodigoCon) AND (mojs8_contratoscurso.IdSubtipoCon = mojs8_anunciosofic.IdSubtipoCon)) ON mojs8_t_tiposanuncio.IdTipoAnu = mojs8_anunciosofic.IdTipoAnu WHERE (((mojs8_contratoscurso.IdCodigoCon)=:IdCodigoCon))";
//Lista de contratos adjudicados (Verificado)
$sqlcontratosadjudicados="SELECT mojs8_contratosadjudicados.IdCodigoCon, mojs8_contratosadjudicados.Denominacion, mojs8_adjudicatarios.Nombre, mojs8_contratosadjudicados.Observaciones, mojs8_contratosadjudicados.FechaPublicacion, mojs8_contratosadjudicados.FechaFormalizacion , mojs8_contratosadjudicados.PresupuestoBase, mojs8_contratosadjudicados.PresupuestoAdjudicacion, mojs8_contratosadjudicados.FechaFinPresentacionOfer , mojs8_contratosadjudicados.FechaAdjudicacion , mojs8_tiposimpuestos.DescTipoImpuesto FROM mojs8_contratosadjudicados mojs8_contratosadjudicados INNER JOIN mojs8_adjudicatarios ON mojs8_contratosadjudicados.IdAdjudicatario = mojs8_adjudicatarios.IdAdjudicatario INNER JOIN mojs8_tiposimpuestos ON mojs8_contratosadjudicados.Impuestos = mojs8_tiposimpuestos.IdTipoImpuesto WHERE ((mojs8_contratosadjudicados.visible=True) AND (mojs8_contratosadjudicados.IdSubtipoCon=:idSubTipoContrato ))";
//Conversión necesaria pq hay columnas con tildes en el nombre
$sqlcontratosadjudicados=utf8_decode($sqlcontratosadjudicados);
////Detalle de anuncios de un contrato adjudicado (Verificado)
$sqlanunciosoficfechas="SELECT mojs8_anunciosoficfechas.Fecha, mojs8_anunciosoficfechas.Anuncio, mojs8_t_tiposanuncio.DescTipoAnu
FROM mojs8_t_tiposanuncio INNER JOIN (mojs8_contratosadjudicados INNER JOIN mojs8_anunciosoficfechas
ON (mojs8_contratosadjudicados.IdTipoCon = mojs8_anunciosoficfechas.IdTipoCon) AND (mojs8_contratosadjudicados.IdCodigoCon = mojs8_anunciosoficfechas.IdCodigoCon) AND
(mojs8_contratosadjudicados.IdSubtipoCon = mojs8_anunciosoficfechas.IdSubtipoCon)) ON mojs8_t_tiposanuncio.IdTipoAnu = mojs8_anunciosoficfechas.IdTipoAnu
WHERE (((mojs8_contratosadjudicados.IdCodigoCon)=:IdCodigoCon) and (mojs8_anunciosoficfechas.IdSubTipoAnu)=1) order by mojs8_anunciosoficfechas.Fecha;";
////Detalle de anuncios de adjudicación de un contrato adjudicado (Verificado)
$sqlanunciosoficfechasAdj="SELECT mojs8_anunciosoficfechas.Fecha, mojs8_anunciosoficfechas.Anuncio, mojs8_t_tiposanuncio.DescTipoAnu FROM mojs8_t_tiposanuncio INNER JOIN (mojs8_contratosadjudicados INNER JOIN mojs8_anunciosoficfechas ON (mojs8_contratosadjudicados.IdTipoCon = mojs8_anunciosoficfechas.IdTipoCon) AND (mojs8_contratosadjudicados.IdCodigoCon = mojs8_anunciosoficfechas.IdCodigoCon) AND (mojs8_contratosadjudicados.IdSubtipoCon = mojs8_anunciosoficfechas.IdSubtipoCon)) ON mojs8_t_tiposanuncio.IdTipoAnu = mojs8_anunciosoficfechas.IdTipoAnu WHERE (((mojs8_contratosadjudicados.IdCodigoCon)=:IdCodigoCon) and (mojs8_anunciosoficfechas.IdSubTipoAnu)=2);";
//FUNCIONES AUXILIARES
//Conectar a la base de datos
function conectarDB($dbhost,$dbname,$dbuser,$dbpass){
return new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
}
//Ejecutar sentencias SQL
function cargar($db, $sql, $parametros=null){
$aux= $db->prepare($sql);
$aux->execute($parametros);
return $aux->fetchAll();
}
//Conectamos
$db = conectarDB($dbhost,$dbname,$dbuser,$dbpass);
$uri = $_SERVER['REQUEST_URI'];
$uriLimpia = 'https://www.aguastenerife.org/index.php?option=com_content&view=article&id=249&Itemid=587&lang=es';
//Variables que dictan el modo de consulta
$tipoContratoActual="encurso";
$idTipoContratoActual=1;
if (isset($_GET['tipocontrato'])) {
$tipoContratoActual =$_GET['tipocontrato'];
}
if (isset($_GET['idtipocontrato'])) {
$idTipoContratoActual=$_GET['idtipocontrato'];
}
?>
<div id="sp-left" class="col-sm-3 col-md-3"><div class="sp-column custom-class"><div class="sp-module "><div class="sp-module-content"><ul class="nav menu">
<li><strong>Contratos en curso</strong>
<ul>
<? $tiposContratosEnCurso = cargar($db,$sqlsubtiposcontratosencurso);?>
<? foreach($tiposContratosEnCurso as $tipoContrato) { ?>
<? $url = $uriLimpia."&tipocontrato=encurso&idtipocontrato=".$tipoContrato['IdSubtipoCon']; ?>
<? $claseTipoContratoDestacado = ($tipoContratoActual=="encurso"&&$idTipoContratoActual==$tipoContrato['IdSubtipoCon'])?"tipoContratoDestacado":""; ?>
<li class="<? echo $claseTipoContratoDestacado ; ?>">
<a href="/<? echo $url; ?>">
<? echo ($tipoContrato['DescSubTipoContrato']) ?> (<? echo $tipoContrato['cantidad'] ?>)
</a>
</li>
<? } ?>
</ul>
</li>
<li style="margin-top: 20px;"><strong>Contratos formalizados</strong>
<ul>
<? $tiposcontratosadjudicados = cargar($db,$sqlsubtiposcontratosadjudicados);?>
<? foreach($tiposcontratosadjudicados as $tipoContrato) { ?>
<? $url = $uriLimpia."&tipocontrato=adjudicado&idtipocontrato=".$tipoContrato['IdSubtipoCon']; ?>
<? $claseTipoContratoDestacado = ($tipoContratoActual=="adjudicado"&&$idTipoContratoActual==$tipoContrato['IdSubtipoCon'])?"tipoContratoDestacado":""; ?>
<li class="<? echo $claseTipoContratoDestacado ; ?>">
<a href="/<? echo $url; ?>">
<? echo ($tipoContrato['DescSubTipoContrato']) ?> (<? echo $tipoContrato['cantidad'] ?>)
</a>
</li>
<? } ?>
</ul>
</li>
</ul>
</div></div></div></div>
<div id="sp-component" class="col-sm-9 col-md-9"><div class="sp-column "><div id="system-message-container">
</div>
<table id="table_id" class="display responsive no-wrap table table-striped dataTable no-footer multidata-table" >
<? if ($tipoContratoActual=="encurso") { ?>
<thead>
<tr>
<th data-priority="1">Código Contratación</th>
<th data-priority="2">Fecha Publicación</th>
<th data-priority="3">Denominación</th>
<th data-priority="4">Presup. Base € (sin IGIC)</th>
<th data-priority="98">Impuestos</th>
<th data-priority="5">Anuncios</th>
<th data-priority="6">Pliego Condiciones Administrativas</th>
<th data-priority="7">Pliego Condiciones Técnicas <i class="fa fa-question" aria-hidden="true"></i><span class="tooltip-body" style="display: none;"><span class="tooltip-ok" style="display: block;"></span>En caso de proyectos muy extensos, estos se dividirán en varios archivos ZIP los cuales se deberán descargar sin cambiarles el nombre en una misma carpeta descomprimiendo únicamente el que acaba en ".001" o en ".zip" con cualquier herramienta adecuada (como "7ZIP" que podrán descargar <a href="http://7zip-es.updatestar.com/" target="_blank"><b>aquí</b>)</a></span></th>
<th data-priority="8">Detalles</th>
<th data-priority="9">Mesa de contratación</th>
<th data-priority="99">Fecha Fin Presentación Ofertas</th>
<th data-priority="100">Observaciones</th>
</tr>
</thead>
<tbody>
<? $contratosEnCurso= cargar($db,$sqlcontratosencurso,array(':idSubTipoContrato'=>$idTipoContratoActual)); ?>
<? foreach($contratosEnCurso as $contratoEnCurso) { ?>
<? $jsonCAdm = json_decode( $contratoEnCurso['CAdm'], true);?>
<? $jsonCtecn = json_decode( $contratoEnCurso['Ctecn'], true);?>
<tr>
<td><? echo $contratoEnCurso['IdCodigoCon']; ?></td>
<td>
<? echo date("d/m/Y", strtotime($contratoEnCurso['FechaPublicacion']));?>
<? if ($contratoEnCurso['FueraPlazo']){?>
<span class="warning">(Plazo cerrado)</span>
<? } ?>
</td>
<td ><? echo ($contratoEnCurso['Denominacion']); ?></td>
<td><? echo number_format ($contratoEnCurso['PresupuestoBas'] , 2 , "," , "." ); ?></td>
<td><? echo ($contratoEnCurso['DescTipoImpuesto']); ?></td>
<td>
<? $anunciosOfic= cargar($db,$sqlanunciosofic,array(':IdCodigoCon'=> $contratoEnCurso['IdCodigoCon'])); ?>
<ul>
<? foreach($anunciosOfic as $anuncioOfic) { ?>
<? $jsonAnuncioOfic = json_decode( $anuncioOfic['Anuncio'], true);?>
<li><a target="_blank" href="/<? echo $raizDocumentos.$jsonAnuncioOfic[0]['name']; ?>"><i class="fa fa-file-<? echo substr($jsonAnuncioOfic[0]['name'], -3); ?>-o" aria-hidden="true"></i>
Anuncio <? echo ($anuncioOfic['DescTipoAnu']); ?> - <i><? echo date("d/m/Y", strtotime($anuncioOfic['Fecha']));?></i></a>
</li>
<? } ?>
</ul>
</td>
<td>
<ul>
<? foreach ($jsonCAdm as $doc){ ?>
<li>
<a target="_blank" href="/<? echo $raizDocumentos.$doc['name']; ?>"><i class="fa fa-file-<? echo substr($doc['name'], -3); ?>-o" aria-hidden="true"></i>
<? echo $doc['usrName']; ?>
</a>
</li>
<? } ?>
</ul>
</td>
<td >
<ul>
<? foreach ($jsonCtecn as $doc){ ?>
<li>
<a target="_blank" href="/<? echo $raizDocumentos.$doc['name']; ?>"><i class="fa fa-file-<? if(substr($doc['name'], -3)=='xls'){echo"excel";}else {echo substr($doc['name'], -3);} ?>-o" aria-hidden="true"></i>
<? echo $doc['usrName']; ?>
</li>
</a>
<? } ?>
</ul>
</td>
<td>
<? $detallestramitacion= cargar($db,$sqldetallestramitacion,array(':IdCodigoCon'=> $contratoEnCurso['IdCodigoCon'])); ?>
<ul>
<? foreach($detallestramitacion as $detalleTramitacion) { ?>
<? $jsonDetalle = json_decode( $detalleTramitacion['Documento'], true);?>
<li>
<a target="_blank" href="/<? echo $raizDocumentos.$jsonDetalle[0]['name']; ?>"><i class="fa fa-file-<? echo substr($jsonDetalle[0]['name'], -3); ?>-o" aria-hidden="true"></i>
<? echo ($detalleTramitacion['Descripcion']);?> - <? echo date("d/m/Y", strtotime($detalleTramitacion['Fecha']));?>
</a>
</li>
<? } ?>
</ul>
</td>
<td>
<? $mesasDeContratacion= cargar($db,$sqlmesacontratacion,array(':IdCodigoCon'=> $contratoEnCurso['IdCodigoCon'])); ?>
<ul>
<? foreach($mesasDeContratacion as $mesaDeContratacion) { ?>
<? $jsonMesa = json_decode( $mesaDeContratacion['Documento'], true);?>
<li>
<a target="_blank" href="/<? echo $raizDocumentos.$jsonMesa[0]['name']; ?>"><i class="fa fa-file-<? echo substr($jsonMesa[0]['name'], -3); ?>-o"aria-hidden="true"></i>
<? echo ($mesaDeContratacion['Descripcion']);?> - <? echo date("d/m/Y", strtotime($mesaDeContratacion['Fecha']));?> </li>
</a>
<? } ?>
</ul>
</td>
<td><? echo date("d/m/Y H:i:s", strtotime($contratoEnCurso['FechaFinPreOferta']));?></td>
<td><? echo ($contratoEnCurso['Observaciones']); ?></td>
</tr>
<? } //fin foreach contratosencuso?>
</tbody>
<? } //fin if tipocontratoactual==encurso ?>
<? if ($tipoContratoActual=="adjudicado") { ?>
<thead>
<tr>
<th data-priority="1">Código contratación</th>
<th data-priority="3">Adjudicatario</th>
<th data-priority="4">Denominación</th>
<th data-priority="5">Fecha Formalización</th>
<th data-priority="6">Presupuesto Base € (sin IGIC)</th>
<th data-priority="98">Impuestos</th>
<th data-priority="7">Presupuesto Adjudicación €</th>
<th data-priority="8">Fecha Fin Presentación Oferta</th>
<th data-priority="9">Anuncios adjudicación</th>
<th data-priority="100">Observaciones</th>
<th data-priority="101">Anuncios oficiales de Formalización</th>
</tr>
</thead>
<tbody>
<? $contratosadjudicados= cargar($db,$sqlcontratosadjudicados, array('idSubTipoContrato'=>$idTipoContratoActual)); ?>
<? foreach($contratosadjudicados as $contratoAdjudicado) { ?>
<tr>
<td><? echo $contratoAdjudicado['IdCodigoCon']; ?></td>
<td><? echo ($contratoAdjudicado['Nombre']); ?></td>
<td><? echo ($contratoAdjudicado['Denominacion']); ?></td>
<td><? if($contratoAdjudicado['FechaFormalizacion']==NULL){echo" ";}else {echo date("d/m/Y", strtotime($contratoAdjudicado['FechaFormalizacion']));}?></td>
<td><? echo number_format ($contratoAdjudicado['PresupuestoBase'] , 2 , "," , "." ); ?></td>
<td><? echo ($contratoAdjudicado['DescTipoImpuesto']); ?></td>
<td><? echo number_format ($contratoAdjudicado['PresupuestoAdjudicacion'] , 2 , "," , "." ); ?></td>
<td><? echo date("d/m/Y", strtotime($contratoAdjudicado['FechaFinPresentacionOfer']));?></td>
<td>
<? $anunciosoficfechasAdj= cargar($db,$sqlanunciosoficfechasAdj,array(':IdCodigoCon'=> $contratoAdjudicado['IdCodigoCon'])); ?>
<ul>
<? foreach($anunciosoficfechasAdj as $anuncioOficFechasAdj) { ?>
<? $jsonAnuncioOficFechasAdj = json_decode( $anuncioOficFechasAdj['Anuncio'], true);?>
<li>
<a target="_blank" href="/<? echo $raizDocumentos.$jsonAnuncioOficFechasAdj[0]['name']; ?>"><i class="fa fa-file-<? echo substr($jsonAnuncioOficFechasAdj[0]['name'], -3); ?>-o" aria-hidden="true"></i>
<? echo ($anuncioOficFechasAdj['DescTipoAnu']);?> - <? echo date("d/m/Y", strtotime($anuncioOficFechasAdj['Fecha']));?>
</a>
</li>
<? } ?>
</td>
<td><? echo ($contratoAdjudicado['Observaciones']); ?></td>
<td>
<? $anunciosoficfechas= cargar($db,$sqlanunciosoficfechas,array(':IdCodigoCon'=> $contratoAdjudicado['IdCodigoCon'])); ?>
<ul>
<? foreach($anunciosoficfechas as $anuncioOficFechas) { ?>
<? $jsonAnuncioOficFechas = json_decode( $anuncioOficFechas['Anuncio'], true);?>
<li>
<a target="_blank" href="/<? echo $raizDocumentos.$jsonAnuncioOficFechas[0]['name']; ?>"><i class="fa fa-file-<? echo substr($jsonAnuncioOficFechas[0]['name'], -3); ?>-o" aria-hidden="true"></i>
<? echo ($anuncioOficFechas['DescTipoAnu']);?> - <? echo date("d/m/Y", strtotime($anuncioOficFechas['Fecha']));?>
</a>
</li>
<? } ?>
</ul>
</td>
</tr>
<? } //fin foreach contratosadjudicados?>
</tbody>
<? } //fin if tipocontratoactual==adjudicado?>
</table>
</div></div>
<script>
$(document).ready( function () {
$('#table_id').DataTable({
ordering: false,
language: {
decimal: ",",
thousands: ",",
emptyTable: "No se han encontrado resultados",
lengthMenu: "Resultados a mostrar _MENU_ ",
info: "Mostrando del _START_ al _END_ de _TOTAL_ resultados",
search: "Buscar",
searchPlaceholder: "",
paginate: {
first: 'Primero',
previous: 'Anterior',
next: 'Siguiente',
last: 'Último'
},
aria: {
paginate: {
first: 'Primero',
previous: 'Anterior',
next: 'Siguiente',
last: 'Último'
}
}
},
responsive: true
} );
$('th').addClass('info');
var table = $('#table_id').DataTable();
$('#table_id tbody').on('click', 'tr', function () {
jQuery('.fa-question').click(function( event ) {
jQuery('.tooltip-body').show();
jQuery('.fa-question').addClass("fa-minus-circle");
jQuery('.fa-question').removeClass("fa-question");
} );
jQuery('.fa-minus-circle').click(function( event ) {
jQuery('.tooltip-body').hide();
jQuery('.fa-minus-circle').addClass("fa-question");
jQuery('.fa-minus-circle').removeClass("fa-minus-circle");
} );
} );
});
</script>
{/source}