Centrar Operacion Popup

Buenas gente:
Alguien sabe como hacer para que cuando se llama a la operacion que es popup, esta aparezca centrada en la pantalla.
Gracias

Hola

El window.open de javascript tiene como parametros left y top (en pixels).
Creo que no funcionan con todos los navegadores y no se si está soportado por toba.
Podés probar en la especificacion del popup

Emilio

Hola Gustavo,

por defecto Toba (segun el tipo de pagina seleccionado), centra el cuerpo de la operacion dentro del viewport, el tema es que si tiene scrollbars y el tamaño de la ventana es menor al tamaño minimo requerido por el HTML para mostrar la operacion, puede que quede medio atravesado.

Saludos

ante esto, la pregunta de cajon.

Que se quiere centrar, la ventana popup en el monitor de la compu o el contenido del popup?

Emilio

La operacion popup en pantalla.
Saludos

Hola

Hasta donde llegué no se puede.

Emilio

Gente:
existe alguna forma de pasar los parametros visuales para la llamada a la operacion? Probamos pasando top y left y funciona, el tema es que tenemos que saber la resolucion de la pantalla y escribir alguna funcion que calcule y centre el popup en pantalla.
saludo

Hola Gustavo

Con toba pasastes left y top?
Lo del tamaño de pantalla creo que unicamente via javascript.
Por ahi si se modifica la funcion para abrir un popup podés ponerle que tome screen.width y screen.height

Emilio

El left y top se lo pasamos en la parte de parametros en el ef_popup por toba editor
saludos

ok. yo no lo logré.

te paso lo siguiente:

en basico.js, funcion abrir popup modificala por lo siguiente

function abrir_popup(id, url, opciones, extra, dep) {
	vars = '';
	ancho_ventana = opciones['width'];
	alto_ventana = opciones['height'];
	tope = (screen.height - alto_ventana)/2;
	left = (screen.width - ancho_ventana)/2;
	if (typeof opciones != 'undefined') {
		if (typeof opciones == 'string') {
			vars += opciones
		} else {
			for (var o in opciones) {
				vars += o + '=' + opciones[o] + ',';
			}
		}
	}
	vars += 'top' + '=' + tope + ',';
	vars += 'left' + '=' + left + ',';

las opciones a ancho y alto deberían estar definidas, etc.
probalo en las situaciones que te toque trabajar.

Emilio

Para quien aun quiera centrar los popups:
Lo que hice y lo probé, funciona perfecto en toba 2.7.4, creo que en otras versiones debería andar,.
Espero que les sirva!!!
Saludos!!

En el editor pongo :

centrar: true, width:400, height:600, scrollbars: yes

El código solo valida que se haya pasado el parametro “centrar” no importa si el lógico o caracteres…

En basico.js

function abrir_popup(id, url, opciones, extra, dep, wn) {
	vars = '';
	if (typeof opciones != 'undefined') {

	/* desde aca */
		if (typeof opciones == 'object') {

			if ( typeof opciones['centrar'] == 'string') {
				
				if ( typeof opciones['width'] == 'string') {
					ancho_ventana = opciones['width'];
					left = (screen.width/2) - (ancho_ventana/2);
					vars += 'left' + '=' + left + ',';
				}
				if ( typeof opciones['height'] == 'string' ) {
					alto_ventana = opciones['height'];	
					tope = (screen.height/2) - (alto_ventana/2);
					vars += 'top' + '=' + tope + ',';
				}
			}
		}
	  /* hasta aca */

		if (typeof opciones == 'string') {
			vars += opciones ;
			
		} else {
			for (var o in opciones) {
				vars += o + '=' + opciones[o] + ',';
				
			}
		}
	}
	
	if (typeof dep == 'undefined') {dep = true;}
	if (dep) {
		vars += 'dependent=1';
	}
	if (typeof extra != 'undefined') {
		vars += extra;
	}
	if (typeof wn == 'undefined' || trim(wn) == '') {
		wn = 'ventana_' + window.toba_hilo_item[1] + id;
	}	
	var no_esta_definida  = !ventana_hija[id] || ventana_hija[id].closed || !ventana_hija[id].focus || (window.opera && ventaja_hija[id].opera);
	if (no_esta_definida) {				
		// No fue definida, esta cerrada o no puede tener foco
		//Agrego el id de item a la ventana para que cuando enlace popups en cadena no repita
		ventana_hija[id] = window.open(url, wn, vars);
		if (isset(ventana_hija[id]) && (! window.opera || ventana_hija[id].opera)) {
			ventana_hija[id].focus();
		} else {
			var recursiva = 'abrir_popup("' + id + '", "' + url + '", "' + vars + '", "", false, ' + wn +')';
			var js = 'if (' + recursiva + ') overlay();';
			var html = "El navegador evitó que el sistema abriera una ventana emergente.
 Puede abrirla manualmente haciendo <a href='#' onclick='"
					+ js + "'>click aquí</a>";
			notificacion.agregar(html, 'warning');
			return false;
		}		
	} else {
		// Ya fue definida, no esta cerrada  y puede tener foco
		ventana_hija[id].focus();		
		ventana_hija[id].location.href = url;
		ventana_hija[id].opener = window;
	}
	return true;
}