jueves, 10 de abril de 2008

10mo preview para P4A 3, mejoras importantes y optimizaciones

La fase de prueba está pasando, por lo tanto, unas pequeñas modificaciones se realizaron en muchas partes del código P4A.
  • Una de las cosas importantes para los desarrolladores es que ahora todos los métodos P4A_DB puede utilizar la característica "vinculante" que viene con Zend Framework / PDO.
  • Otras mejoras se lograron P4A si ejecuta en servidores Windows
  • FCKEditor se ha actualizado a la nueva y brillante liberación 2,6 y otras bibliotecas también se actualizaron.
Pero lo más maravilloso es la mejora Javascript / CSS lazy loading. Tenemos muchos javascript pesados con P4A (FCKEditor, el seleccionador de fechas, etc.) y algunas veces su aplicación no las usa... ahora cada componente se carga solo cuando se necesita y sus aplicaciones se iniciaran y correrán mas rápido!
En cualquier caso, revisemos la lista de cambios:
  • Fue resuelto un bug con P4A_Field::getAsRadio() (en las labels se puede hacer clic).
  • Fue agregada la función global P4A_Rmdir_Recursive().
  • El método P4A_Data_Field::setSequence() no agrega más el “_seq” en postfix.
  • El método P4A_DB::nextSequenceId() agrega el “_seq” de postfix dependiendo de la db que esta usando.
  • Fue agregado un respaldo SQL para PostgreSQL al ejemplo products_catalogue.
  • El respaldo para MySQL para products_catalogue fue renombrado a db_dump_mysql.sql.
  • La función global P4A_Quote_SQL_Value() fue eliminada.
  • Fue agregado el método P4A_DB::quote() (es un envoltorio para el método Zend_DB quote).
  • Los métodos P4A_DB::get*(), fetch*(), query*() ahora soportan un array de parametros vinculantes.
  • Las reglas de auto detección P4A_ROOT_PATH fueron cambiadas un poco para la compatibilidad con servidores Windows.
  • La función global P4A_Strip_Double_Backslashes() fue agregada.
  • Las reglas de auto detección P4A_UPLOADS_DIR fueron cambiadas un poco para la compatibilidad con servidores Windows.
  • El CSS para la etiqueta (label) de P4A_Fieldset fue cambiado para la compatibilidad con Safari 3.1.
  • El CSS de P4A_Label fue cambiado un poco para mantener la compatibilidad entre navegadores.
  • El CSS de P4A_Field::getasText() ahora tiene por defecto un ancho (150px).
  • Fue resuelto un error con el método P4A_I18N::mergeTranslation().
  • FCKEditor fue actualizado a 2.6.
  • jQuery::UI::datepicker fue actualizado a 3.4.3.
  • javascript/css lazy loading fue implementado, todos los js/css dependientes de los widget son cargados solo perdiendo un monto de KB en el inicio.
  • El CSS de impresion fue eliminado.
  • Las traducciones fueron sincronizadas.
  • El mensaje "Loading..." ahora puede ser traducido.

Ahora puedes Download P4A 2.99.9, por favor ayudanos con las traducciones y reporta todos los errores que encuentres! Muchas gracias !

PD: Recuerda mantener tus ojos en P4A TV!
PPD: difundelo al mundo :-)

Entrada original:
http://tinyurl.com/5cfcpr

viernes, 4 de abril de 2008

TIP 1: Menú con elementos anidados

Dentro del grupo de usuarios de p4a en español, Eddie nos ha colaborado con esta manera de hacer un menú con un array, permitiendo la mantención y legibilidad del código.

class Program extends P4A {

public function __construct() {
parent::_construct();

$menu =& $this->build("P4A_Menu", "menu");

$items = array(
"catalogos" => array("Catálogos", array(
"seguridad" => array(null, array(
"usuarios" => array(null, null),
"perfiles" => array(null, null),
"modulos" => array("Módulos", null),
"elementos" => array(null, null),
"-" => array(null, null),
"bitacora" => array("Bitácora", null))),
"plantilla" => array(null, array(
"careas" => array("Áreas", null),
"departamentos" => array(null, null),
"niveles" => array(null, null),
"plazas" => array(null, null),
"- " => array(null, null),
"puestos" => array(null, null))),
"nomina" => array("Nómina", array(
"periodos" => array(null, null),
"empleados" => array(null, null))),
"-" => array(null, null),
"tipos" => array(null, array(
"t_areas" => array("Áreas", null),
"nominas" => array("Nóminas", null),
"t_periodos" => array("Periodos", null),
"t_eventos" => array("Eventos", null))))),
"herramientas" => array(null, null),
"procesos" => array(null, null),
"reportes" => array(null, array(
"r_plantilla" => array("Plantilla de Personal (resumen)", null))));

$this->agregaMenu($menu, $items);
}

private function agregaMenu($menu, $items) {
foreach ($items as $nombre => $propiedades) {
$item =& $menu->addItem($nombre);
if($nombre === "-") {
$item->setLabel(str_repeat("-", 20));
} else {
if ($propiedades[0]) {
$item->setLabel($propiedades[0]);
}

if (is_array($propiedades[1])) {
$this->agregaMenu($item, $propiedades[1]);
}
else {
$item->implement("onClick", $this, "muestraMascara");
}
}
}
}

public function muestraMascara() {
$this->openMask($this->active_object->getName());
}
}
Puedes ver el código en la siguiente dirección:

http://p4aenespanol.pastebin.com/m64682c5c

Creo que el código se explica bastante bien, esperamos que sea útil.
Y esperamos sus comentarios !!!

Saludos.

jueves, 3 de abril de 2008

Multiples bases de datos en nuestras aplicaciones

Hoy Fabrizio ha publicado un screencast importante, como conectar nuestra aplicación a múltiples bases de datos en nuestras aplicaciones.

Este screencast muestra la definición de las constantes en el archivo index.php, como se puede ver a continuación.

define("P4A_DSN", 'pgsql://p4a:p4a@localhost/p4a_products_catalogue')

Donde podemos definir nuestra conexión a la base de datos, ya sea esta en Mysql, Postgresql, Oracle o Sqlite.

Además llama la atención, el uso de la función P4a_Db_Source::setDSN(), mírenlo y prueben en su servidor.

De esta forma:

$this->build("p4a_db_source","brands")
->setDSN("pgsql://p4a:p4a@localhost/p4a_products_catalogue")
->setTable("brands")
->addOrder("description")
->load();


http://p4a.crealabsfoundation.org/tv/2008/04/02/multidatabase.html


Saludos a todos

Pronto comenzaremos con algunos tips.