/*
* Este script hace de puente entre el modal (tingle actualmente) y el CMS
*/
/**
* Cache para modales
* @type Array
*/
var modales_cargados = new Array();
/**
* Instancia del modal
* @type tingle.modal
*/
var popupModal;
// LOADERS:
$(document).ready(function() {
// instanciate new modal
popupModal = new tingle.modal({
footer: true,
stickyFooter: true,
closeMethods: ['overlay', 'button', 'escape'],
closeLabel: "Close",
//cssClass: ['custom-class-1', 'custom-class-2'],
onOpen: function() { },
onClose: function() {
// Deseleccionamos el texto que se haya podido quedar por bug
if (document.selection) document.selection.empty();
else if (window.getSelection) window.getSelection().removeAllRanges();
},
beforeClose: function() {
// here's goes some logic
// e.g. save content before closing the modal
return true; // close the modal
//return false; // nothing happens
}
});
// set content
/*popupModal.setContent('\
here\'s some content
\n\
');*/
popupModal.addFooterBtn('Cerrar', 'tingle-btn tingle-btn--danger', function() {
popupModal.close();
});
// open modal
//popupModal.open();
});
// Refrescos de los modales
$(document).bind('ready ajaxComplete', function(){
$(".modal-trigger, .popup-login, .popup-registro").off();
// Muestra en un modal la vista del proyecto especificado
$(".modal-trigger").click(function () {
// Abrimos un modal y Evitamos que se redirija al enlace (devolvera false si se puede mostrar para bloquear el clic)
return abrir_modal_ajax($(this).attr('href'), false, false, 600);
});
$(".popup-login").click(function () {
return abrir_modal_ajax($(this).attr('href'), false, '600', 600, true);
});
$(".popup-registro").click(function () {
return abrir_modal_ajax(HTTP_CONTROLADOR + 'clientes.php?seccion=cuenta&action=registro', false, '600', 600, true);
});
});
/**
* Intenta abrir un modal ajax, si no lo consigue redirige al
* @param {type} contenedor
* @param {type} url
* @param {type} refresh
* @param {type} width_modal
* @param {type} min_height Altura minima del navegador para cargar el modal
* @param {type} absolute_modal
* @returns {undefined}
*/
function abrir_modal_ajax_crossweb(url, width_modal, min_height) {
if (abrir_modal_ajax(url, true, width_modal, min_height)) {
// Si devuelve true es que no lo ha podido abrir (evita que el enlace se bloquee)
location.replace(url);
}
}
/**
* Funcion que abre un modal a traves de una URL, si ya ha sido cargado lo saca de la cache
* @param contenedor Clase/Nombre del contenedor
* @param url URL a cargar
* @param refresh Si es true actualizara la cache
* @param width_modal Tamaño del modal
* @param min_height Altura minima del navegador para cargar el modal
* @param absolute_modal Si es true el modal estara en posicion absoluta en lugar de fija desde donde se instancie
*/
function abrir_modal_ajax(url, refresh, width_modal, min_height) {
// Lo bloqueamos en los moviles a la fuerza
// && window.innerHeight >= height_modal
if (width_modal === undefined || !width_modal) width_modal = '800';
if (min_height === undefined || !min_height) min_height = '500';
url_clean = filtrarURL(url);
if (window.innerWidth >= width_modal && window.innerHeight >= min_height) {
if (refresh || modales_cargados[url_clean] === undefined) {
//modales_cargados[id] = jQuery.ajax(url);
$.ajax({
type: 'POST',
url: url,
cache: false,
data: {isAjax: 'true'}
})
.done(function (msg) {
modales_cargados[url_clean] = msg;
abrir_modal(msg, width_modal, min_height);
});
} else {
abrir_modal(modales_cargados[url_clean], width_modal, min_height);
}
return false;
}
return true;
}
/**
*
* @param {type} contenedor
* @param {type} html
* @param {type} width En PX (sin "px")
* @param min_height Nos servira para calcular la posicion
* @param absolute_modal Si es true el modal estara en posicion absoluta en lugar de fija desde donde se instancie
* @returns {undefined}
*/
function abrir_modal(html, width, min_height) {
popupModal.setContent(html);
$( document ).trigger( "ajaxComplete" );
popupModal.open();
}