From ait at linuxmail.org Mon Sep 1 18:21:31 2003 From: ait at linuxmail.org (Alejandro Imass) Date: Wed Aug 4 23:59:40 2004 Subject: =?iso-8859-1?Q?Discusi=F3n: Librer=EDa de Formas en Perl=20?= Message-ID: <20030901232131.30317.qmail@linuxmail.org> Copio a ambas listas a ver si alguien conoce una librer?a en Perl que maneje formas mastro-detalle etc. Mi idea es escribir una librer?a basada en Perl-CGI para esto pero antes quer?a saber si alguien conoce o ha trabajado en una librer?a similar. En principio lo que quiero es hacer algo que sea muy sencillo para desarrollar un GUI en HTML para aplicaciones de negocios. La idea me viene de meterle mano a sql-ledger y francamente estoy fastidiado de lo monol?tico del c?digo y lo complejo que es cambiar una pantalla. Si yo fuese a reescribir un sistema como este, pensar?a bien una librer?a al estilo GNUE-Forms para que sea muy sencillo hacer cambios. Bueno es solo una idea... escucho comentarios! -- ______________________________________________ http://www.linuxmail.org/ Now with e-mail forwarding for only US$5.95/yr Powered by Outblaze ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From fobispo at nic.ve Tue Sep 2 06:44:56 2003 From: fobispo at nic.ve (Francisco Obispo) Date: Wed Aug 4 23:59:40 2004 Subject: =?iso-8859-1?Q?Re:_Discusi=F3n:_Librer=EDa_de_Formas_en_Perl_?= References: <20030901232131.30317.qmail@linuxmail.org> Message-ID: <001f01c37147$a21e0940$0903bc96@sony> Hola, Bueno, yo por lo general me apoyo en el m?dulo CGI para la creaci?n de formularios, Sin embargo, se me ha presentado muchas veces la necesidad de hacer "dropdowns" o "popup menus " como lo quieras ver, relacionados, es decir, cuando seleccionas el primero, los valores del segundo cambian.. te estoy enviando la rutina que lo genera, sin embargo es un poco vieja y estoy seguro que puede ser mejorada: ### Menu Relacionado # # Menu Relacionado # menu_relacionado("TITULO PADRE","TITULO HIJO","SQL"); # SQL tiene que ser PADRE,HIJO,PADRE_CODIGO,HIJO_CODIGO # sub menu_relacionado{ my $m1_encab=shift; my $m2_encab=shift; my $sql=shift; my $gen=shift; my $text1=shift; my $text2=shift; my $res; my $campo1=$gen . "1"; my $campo2=$gen . "2"; my $relateItems=$gen . "relateItems"; my $makeItem=$gen . "makeItem"; my $newItem=$gen . "newItem"; my $makeCat=$gen . "makeCat"; my $newCat=$gen . "newCat"; my $cats=$gen . "cats"; my $catsIndex=$gen . "catsIndex"; my $itemsIndex=$gen . "itemsIndex"; my $catHeading= $gen . "catHeading"; my $itemHeading=$gen . "itemHeading"; my $SCRIPT=" function " . $makeItem ."(name, url) { this.name = name; this.url = url; } function " . $newItem . "(name, url) { " . $itemsIndex . "++; " . $cats . "[" . $catsIndex . "][" . $itemsIndex . "] = new " . $makeItem . "(name, url); " . $cats . "[" . $catsIndex . "].length++; } function " . $makeCat . "(name,valor) { this.name = name; this.valor= valor; this.length = 0; } function " . $newCat . "(name,valor) { " . $catsIndex . "++; " . $itemsIndex. " = -1; " . $cats . "[" . $catsIndex . "] = new " . $makeCat . "(name,valor); } function " . $relateItems . "(cat){ if (cat > 0) { " . $catsIndex . " = cat - 1; with (document.m." . $campo2 . ") { for (var i = options.length; i > 1; i--) options[i] = null; for (var i = 0; i < " . $cats . "[" . $catsIndex . "].length; i++) options[i + 1] = new Option(" . $cats . "[" . $catsIndex . "][i].name," . $cats . "[" . $catsIndex . "][i].url); options[0].selected = true; } } " . $itemsIndex . " = 0; } var isNS3 = (navigator.appName == \"Netscape\" && parseInt(navigator.appVersion) >= 3); var isIE = (navigator.appName == \"Microsoft Internet Explorer\"); var " . $cats . " = new Array(); var " . $catsIndex . " = -1; var " . $itemsIndex . " = -1; var " . $catHeading . " = '" . $m1_encab . "'; // heading for category menu var " . $itemHeading . "= '" . $m2_encab . "'; // heading for pages menu "; my $dbh = DBI->connect($oracle_dsn, $oracle_login, $oracle_pass) || return("$!"); my $sth=$dbh->prepare($sql) || return("$!"); my $arr; $sth->execute; my $oldsub; while($arr=$sth->fetchrow_arrayref){ if($$arr[0] ne $oldsub){ $SCRIPT .= "\n " . $newCat . "('" . $$arr[0] . "','" . $$arr[2] . "')\;\n"; } $SCRIPT .= $newItem . "('" . $$arr[1] . "','" . $$arr[3] . "')\;\n"; $oldsub=$$arr[0]; } $res.=""; #### $res.="
"; return $res; }
La rutina devuelve el c?digo en HTML+JavaScript necesario para hacer el truco, el modo de funcionamiento est? en el encabezado. saludos ----- Original Message ----- From: "Alejandro Imass" To: "Lista de Desarrollo Velug" ; "Perl Mongers Caracas" Sent: Monday, September 01, 2003 7:21 PM Subject: Discusi?n: Librer?a de Formas en Perl > > Copio a ambas listas a ver si alguien conoce una librer?a en Perl que maneje formas mastro-detalle etc. Mi idea es escribir una librer?a basada en Perl-CGI para esto pero antes quer?a saber si alguien conoce o ha trabajado en una librer?a similar. > > En principio lo que quiero es hacer algo que sea muy sencillo para desarrollar un GUI en HTML para aplicaciones de negocios. La idea me viene de meterle mano a sql-ledger y francamente estoy fastidiado de lo monol?tico del c?digo y lo complejo que es cambiar una pantalla. Si yo fuese a reescribir un sistema como este, pensar?a bien una librer?a al estilo GNUE-Forms para que sea muy sencillo hacer cambios. > > Bueno es solo una idea... escucho comentarios! > -- > ______________________________________________ > http://www.linuxmail.org/ > Now with e-mail forwarding for only US$5.95/yr > > Powered by Outblaze > ------------------------------------------------------------------------ > Enviar e-mail a colocando en el cuerpo: > "UNSUBSCRIBE caracas-pm-list" para desuscribirse. > "INFO caracas-pm-list" para conocer las reglas de etiqueta. > ------------------------------------------------------------------------ > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.pm.org/archives/caracas-pm/attachments/20030902/b84f9c0a/attachment.htm From fobispo at nic.ve Tue Sep 2 07:15:18 2003 From: fobispo at nic.ve (Francisco Obispo) Date: Wed Aug 4 23:59:40 2004 Subject: =?iso-8859-1?Q?Re:_Discusi=F3n:_Librer=EDa_de_Formas_en_Perl_?= References: <20030901232131.30317.qmail@linuxmail.org> <001f01c37147$a21e0940$0903bc96@sony> Message-ID: <009a01c3714b$e0127de0$0903bc96@sony> estaba revisando el correo y se me olvidaba lo siguiente: # Menu Relacionado # menu_relacionado("TITULO PADRE","TITULO HIJO","SQL") # SQL tiene que ser PADRE,HIJO,PADRE_CODIGO,HIJO_CODIGO Esto es asi: menu_relacionado("TITULO del menu padre","TITULO del Hijo","SQL","stringIdentificador","Texto a mostrar al lado del Padre","Texto a mostrar al lado del Hijo") se me habia olvidado actualizar el encabezado! ;-) stringIdentificador es para diferenciar los distintos popups en la pagina...ej si le colocas "ubicacion" y haces un query que sea "Estado/Ciudad" entonces ubicacion1 sera estado ubicacion2 sera ciudad espero que les sirva y lo puedan mejorar.. saludos ----- Original Message ----- From: Francisco Obispo To: caracas-pm-list@pm.org Sent: Tuesday, September 02, 2003 7:44 AM Subject: Re: Discusi?n: Librer?a de Formas en Perl Hola, Bueno, yo por lo general me apoyo en el m?dulo CGI para la creaci?n de formularios, Sin embargo, se me ha presentado muchas veces la necesidad de hacer "dropdowns" o "popup menus " como lo quieras ver, relacionados, es decir, cuando seleccionas el primero, los valores del segundo cambian.. te estoy enviando la rutina que lo genera, sin embargo es un poco vieja y estoy seguro que puede ser mejorada: ### Menu Relacionado # # Menu Relacionado # menu_relacionado("TITULO PADRE","TITULO HIJO","SQL"); # SQL tiene que ser PADRE,HIJO,PADRE_CODIGO,HIJO_CODIGO # sub menu_relacionado{ my $m1_encab=shift; my $m2_encab=shift; my $sql=shift; my $gen=shift; my $text1=shift; my $text2=shift; my $res; my $campo1=$gen . "1"; my $campo2=$gen . "2"; my $relateItems=$gen . "relateItems"; my $makeItem=$gen . "makeItem"; my $newItem=$gen . "newItem"; my $makeCat=$gen . "makeCat"; my $newCat=$gen . "newCat"; my $cats=$gen . "cats"; my $catsIndex=$gen . "catsIndex"; my $itemsIndex=$gen . "itemsIndex"; my $catHeading= $gen . "catHeading"; my $itemHeading=$gen . "itemHeading"; my $SCRIPT=" function " . $makeItem ."(name, url) { this.name = name; this.url = url; } function " . $newItem . "(name, url) { " . $itemsIndex . "++; " . $cats . "[" . $catsIndex . "][" . $itemsIndex . "] = new " . $makeItem . "(name, url); " . $cats . "[" . $catsIndex . "].length++; } function " . $makeCat . "(name,valor) { this.name = name; this.valor= valor; this.length = 0; } function " . $newCat . "(name,valor) { " . $catsIndex . "++; " . $itemsIndex. " = -1; " . $cats . "[" . $catsIndex . "] = new " . $makeCat . "(name,valor); } function " . $relateItems . "(cat){ if (cat > 0) { " . $catsIndex . " = cat - 1; with (document.m." . $campo2 . ") { for (var i = options.length; i > 1; i--) options[i] = null; for (var i = 0; i < " . $cats . "[" . $catsIndex . "].length; i++) options[i + 1] = new Option(" . $cats . "[" . $catsIndex . "][i].name," . $cats . "[" . $catsIndex . "][i].url); options[0].selected = true; } } " . $itemsIndex . " = 0; } var isNS3 = (navigator.appName == \"Netscape\" && parseInt(navigator.appVersion) >= 3); var isIE = (navigator.appName == \"Microsoft Internet Explorer\"); var " . $cats . " = new Array(); var " . $catsIndex . " = -1; var " . $itemsIndex . " = -1; var " . $catHeading . " = '" . $m1_encab . "'; // heading for category menu var " . $itemHeading . "= '" . $m2_encab . "'; // heading for pages menu "; my $dbh = DBI->connect($oracle_dsn, $oracle_login, $oracle_pass) || return("$!"); my $sth=$dbh->prepare($sql) || return("$!"); my $arr; $sth->execute; my $oldsub; while($arr=$sth->fetchrow_arrayref){ if($$arr[0] ne $oldsub){ $SCRIPT .= "\n " . $newCat . "('" . $$arr[0] . "','" . $$arr[2] . "')\;\n"; } $SCRIPT .= $newItem . "('" . $$arr[1] . "','" . $$arr[3] . "')\;\n"; $oldsub=$$arr[0]; } $res.=""; #### $res.="
"; return $res; }
La rutina devuelve el c?digo en HTML+JavaScript necesario para hacer el truco, el modo de funcionamiento est? en el encabezado. saludos ----- Original Message ----- From: "Alejandro Imass" To: "Lista de Desarrollo Velug" ; "Perl Mongers Caracas" Sent: Monday, September 01, 2003 7:21 PM Subject: Discusi?n: Librer?a de Formas en Perl > > Copio a ambas listas a ver si alguien conoce una librer?a en Perl que maneje formas mastro-detalle etc. Mi idea es escribir una librer?a basada en Perl-CGI para esto pero antes quer?a saber si alguien conoce o ha trabajado en una librer?a similar. > > En principio lo que quiero es hacer algo que sea muy sencillo para desarrollar un GUI en HTML para aplicaciones de negocios. La idea me viene de meterle mano a sql-ledger y francamente estoy fastidiado de lo monol?tico del c?digo y lo complejo que es cambiar una pantalla. Si yo fuese a reescribir un sistema como este, pensar?a bien una librer?a al estilo GNUE-Forms para que sea muy sencillo hacer cambios. > > Bueno es solo una idea... escucho comentarios! > -- > ______________________________________________ > http://www.linuxmail.org/ > Now with e-mail forwarding for only US$5.95/yr > > Powered by Outblaze > ------------------------------------------------------------------------ > Enviar e-mail a colocando en el cuerpo: > "UNSUBSCRIBE caracas-pm-list" para desuscribirse. > "INFO caracas-pm-list" para conocer las reglas de etiqueta. > ------------------------------------------------------------------------ > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.pm.org/archives/caracas-pm/attachments/20030902/23d408ef/attachment.htm From ait at linuxmail.org Tue Sep 2 08:09:51 2003 From: ait at linuxmail.org (Alejandro Imass) Date: Wed Aug 4 23:59:40 2004 Subject: =?iso-8859-1?Q?Re:=A0Discusi=F3n:=A0Librer=EDa=A0de=A0Formas=A0en =A0Perl=A0?= Message-ID: <20030902130952.1910.qmail@linuxmail.org> Francisco, Me parece interesante y l hechar? un vistaso. Justamente mi propuesta es extender CGI para hacer formas maestro-detalle. En principio lo que quisiera desarrollar es un objeto de alto nivel que sea muy f?cil de implementar. Por ejemplo, comenzar por un objeto tabla al estilo Gupta/Centura y que puedas hacer algo como pasarle un select y el bicho te construya la tabla en HTML de una vez; todo basado en CGI.pm. Luego, una forma que le puedas pasar la relaci?n enre registros y hacer funciones como next, back, insert, update, delete todas "off-the-shelf" con el objeto. En fin, quisiera que la taea de crear una pantalla sea algo sencillo. De hecho, una de la limitantes m?s fuertes que yo veo a la hora de "vender" Perl a mis compa?eros es la falta de un GUI est?ndar y multiplataforma. Conozco Tk y me parece bien pero prefiero las aplicaciones HTML. Tengo ya tiempo trabajano como les dije con Sql-Ledger pero pienso seriamente que, aunque la aplicaci?n es excelente (realmente buena), es un espaguetti porque las raices del c?digo no fueron bien pensadas (quiz?s el autor lo hace adrede para que no todo el mundo le meta la mano?). Por lo momentos por supuesto que no ambisiono reescribir un programa como este, pero si pienso que aplicaciones que quieran llegar m?s lejos deben tener mejores fundaciones. Hoy en d?a por ejemplo, mis tiempos para hacer una pantalla al estilo Sql-Ledger son de al menos 2-3 d?as de dedicaci?n completa. En cambio, prob? CGI en serio y program? ua aplicaci?n simple y completa en unas cuantas horas, el c?digo es mucho m?s elegante y mantenible. De all? me viene la idea de crear una librer?a est?ndar para aplicacions de negocios web usando como base CGI.pm Bienvendo cualquier comentario, ideas, una mano, etc.. Saludos a todos, Alejandro ----- Original Message ----- From: "Francisco Obispo" Date: Tue, 2 Sep 2003 07:44:56 -0400 To: Subject: Re: Discusi?n: Librer?a de Formas en Perl Hola, Bueno, yo por lo general me apoyo en el m?dulo CGI para la creaci?n de formularios, Sin embargo, se me ha presentado muchas veces la necesidad de hacer "dropdowns" o "popup menus " como lo quieras ver, relacionados, es decir, cuando seleccionas el primero, los valores del segundo cambian.. te estoy enviando la rutina que lo genera, sin embargo es un poco vieja y estoy seguro que puede ser mejorada: -- ______________________________________________ http://www.linuxmail.org/ Now with e-mail forwarding for only US$5.95/yr Powered by Outblaze ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From fobispo at nic.ve Tue Sep 2 09:10:13 2003 From: fobispo at nic.ve (Francisco Obispo) Date: Wed Aug 4 23:59:40 2004 Subject: =?iso-8859-1?B?UmU6IFJlOqBEaXNjdXNp8246oExpYnJlcu1hoGRloEZvcm1hc6BlbiAg?= =?iso-8859-1?B?ICCgUGVybKA=?= References: <20030902130952.1910.qmail@linuxmail.org> Message-ID: <00e201c3715b$ede16480$0903bc96@sony> Bueno, me parece buena tu propuesta... me imagino que lo que quieres es hacer un FrameWork que te permita producir interfaces a bases de datos de una forma sencilla/rapida aqui en cnti se esta desarrollando algo similar, pero con Java, creo que es un proyecto de tesis de uno de los programadores. bueno.. avisame como te va y si necesitas algo avisame. saludos ----- Original Message ----- From: "Alejandro Imass" To: ; Sent: Tuesday, September 02, 2003 9:09 AM Subject: Re: Discusi?n: Librer?a de Formas en Perl > Francisco, > > Me parece interesante y l hechar? un vistaso. Justamente mi propuesta es extender CGI para hacer formas maestro-detalle. En principio lo que quisiera desarrollar es un objeto de alto nivel que sea muy f?cil de implementar. Por ejemplo, comenzar por un objeto tabla al estilo Gupta/Centura y que puedas hacer algo como pasarle un select y el bicho te construya la tabla en HTML de una vez; todo basado en CGI.pm. Luego, una forma que le puedas pasar la relaci?n enre registros y hacer funciones como next, back, insert, update, delete todas "off-the-shelf" con el objeto. > En fin, quisiera que la taea de crear una pantalla sea algo sencillo. De hecho, una de la limitantes m?s fuertes que yo veo a la hora de "vender" Perl a mis compa?eros es la falta de un GUI est?ndar y multiplataforma. Conozco Tk y me parece bien pero prefiero las aplicaciones HTML. Tengo ya tiempo trabajano como les dije con Sql-Ledger pero pienso seriamente que, aunque la aplicaci?n es excelente (realmente buena), es un espaguetti porque las raices del c?digo no fueron bien pensadas (quiz?s el autor lo hace adrede para que no todo el mundo le meta la mano?). > > Por lo momentos por supuesto que no ambisiono reescribir un programa como este, pero si pienso que aplicaciones que quieran llegar m?s lejos deben tener mejores fundaciones. Hoy en d?a por ejemplo, mis tiempos para hacer una pantalla al estilo Sql-Ledger son de al menos 2-3 d?as de dedicaci?n completa. En cambio, prob? CGI en serio y program? ua aplicaci?n simple y completa en unas cuantas horas, el c?digo es mucho m?s elegante y mantenible. De all? me viene la idea de crear una librer?a est?ndar para aplicacions de negocios web usando como base CGI.pm > Bienvendo cualquier comentario, ideas, una mano, etc.. > > Saludos a todos, > Alejandro > > > ----- Original Message ----- > From: "Francisco Obispo" > Date: Tue, 2 Sep 2003 07:44:56 -0400 > To: > Subject: Re: Discusi?n: Librer?a de Formas en Perl > > > Hola, > > Bueno, yo por lo general me apoyo en el m?dulo CGI para la creaci?n > de formularios, > > Sin embargo, se me ha presentado muchas veces la necesidad de hacer "dropdowns" > o "popup menus " como lo quieras ver, relacionados, es decir, cuando seleccionas > el primero, los valores del segundo cambian.. > > te estoy enviando la rutina que lo genera, sin embargo es un poco vieja y estoy seguro > que puede ser mejorada: > -- > ______________________________________________ > http://www.linuxmail.org/ > Now with e-mail forwarding for only US$5.95/yr > > Powered by Outblaze > ------------------------------------------------------------------------ > Enviar e-mail a colocando en el cuerpo: > "UNSUBSCRIBE caracas-pm-list" para desuscribirse. > "INFO caracas-pm-list" para conocer las reglas de etiqueta. > ------------------------------------------------------------------------ > ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From sspataro at cantv.net Tue Sep 2 13:28:53 2003 From: sspataro at cantv.net (Salvador Spataro) Date: Wed Aug 4 23:59:40 2004 Subject: =?iso-8859-1?b?RGlzY3VzafNuOqBMaWJyZXLtYaBkZaBGb3JtYXOgZW4KICAg?= =?iso-8859-1?b?IKBQZXJsoA==?= In-Reply-To: <20030902130952.1910.qmail@linuxmail.org> References: <20030902130952.1910.qmail@linuxmail.org> Message-ID: <200309021428.53482.sspataro@cantv.net> yo juego. Aunque no soy la mama de tarzan en perl... Se despide Salvador On Tuesday 02 September 2003 09:09, Alejandro Imass wrote: > Francisco, > > Me parece interesante y l hechar? un vistaso. Justamente mi propuesta es > extender CGI para hacer formas maestro-detalle. En principio lo que > quisiera desarrollar es un objeto de alto nivel que sea muy f?cil de > implementar. Por ejemplo, comenzar por un objeto tabla al estilo > Gupta/Centura y que puedas hacer algo como pasarle un select y el bicho te > construya la tabla en HTML de una vez; todo basado en CGI.pm. Luego, una > forma que le puedas pasar la relaci?n enre registros y hacer funciones como > next, back, insert, update, delete todas "off-the-shelf" con el objeto. En > fin, quisiera que la taea de crear una pantalla sea algo sencillo. De > hecho, una de la limitantes m?s fuertes que yo veo a la hora de "vender" > Perl a mis compa?eros es la falta de un GUI est?ndar y multiplataforma. > Conozco Tk y me parece bien pero prefiero las aplicaciones HTML. Tengo ya > tiempo trabajano como les dije con Sql-Ledger pero pienso seriamente que, > aunque la aplicaci?n es excelente (realmente buena), es un espaguetti > porque las raices del c?digo no fueron bien pensadas (quiz?s el autor lo > hace adrede para que no todo el mundo le meta la mano?). > > Por lo momentos por supuesto que no ambisiono reescribir un programa como > este, pero si pienso que aplicaciones que quieran llegar m?s lejos deben > tener mejores fundaciones. Hoy en d?a por ejemplo, mis tiempos para hacer > una pantalla al estilo Sql-Ledger son de al menos 2-3 d?as de dedicaci?n > completa. En cambio, prob? CGI en serio y program? ua aplicaci?n simple y > completa en unas cuantas horas, el c?digo es mucho m?s elegante y > mantenible. De all? me viene la idea de crear una librer?a est?ndar para > aplicacions de negocios web usando como base CGI.pm Bienvendo cualquier > comentario, ideas, una mano, etc.. > > Saludos a todos, > Alejandro > > > ----- Original Message ----- > From: "Francisco Obispo" > Date: Tue, 2 Sep 2003 07:44:56 -0400 > To: > Subject: Re: Discusi?n: Librer?a de Formas en Perl > > > Hola, > > Bueno, yo por lo general me apoyo en el m?dulo CGI para la creaci?n > de formularios, > > Sin embargo, se me ha presentado muchas veces la necesidad de hacer > "dropdowns" o "popup menus " como lo quieras ver, relacionados, es decir, > cuando seleccionas el primero, los valores del segundo cambian.. > > te estoy enviando la rutina que lo genera, sin embargo es un poco vieja y > estoy seguro que puede ser mejorada: ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From ait at linuxmail.org Wed Sep 24 12:48:49 2003 From: ait at linuxmail.org (Alejandro Imass) Date: Wed Aug 4 23:59:40 2004 Subject: =?iso-8859-1?q?Actualizaci=F3n_de_Desarrollo_CGI::Application:?= =?iso-8859-1?q?:SqlForms.pm?= Message-ID: <20030924174851.30490.qmail@linuxmail.org> Quise darle un t?tulo entendible. Este e-mail es una actualizaci?n sobre el estado de desarrollo de la librer?a que les coment? hace un tiempo que quer?a desarrollar. Como ven ya le escog? un nombre aunque su nombre formal ser?a CGI::Application::SqlForms ya que heredo de Application. Estuve investigando un tiempo en CPAN para no reinventar la rueda y decid? tomar CGI::Application como base ya que establece una l?gica de desarrollo acorde con mis experiencias previas en desarrollos CGI. Hasta ahora estoy solo en la fase de conceptualizaci?n y esto es lo que llevo adelantado. Lo posteo en la lista para escuchar opiniones y sugerencias mientras comienzo el desarrollo del alpha que debe estar listo en unpar de semanas (no porque sea tan lento sino por mi carga habitual de trabajo). Voy a documentar el proyecto en ingl?s para su f?cil publicaci?n y mantenimiento en CPAN aunque me comprometo a una documentaci?n posterior en espa?ol. Hasta ahora solo he dise?ado el UI (User Interface) asbtracto y que no depende ni de CGI::Application y mucho menos de CGI. La idea es que la capa de UI est? atada al negocio independientemente de la salida, aunque por supuesto la primera versi?n ser? integrada con CGI::Application. La idea es que posteriormente cualquiera pueda substitur CGI::Application por GTK, Tk, o Win32 (ugh!). Estados de una forma: ===================== Cada forma tendr? unos estados b?sicos con respecto a la edici?n de registros en la BD. Esto es separado por completo del estado y/o el flujo del documento que es un tema aparte y no tocar? en este e-mail. A lo que me refiero aqui es a los estados de la forma que despliega y edita los registro de un RDMBS. 1) Los _estados_[1] inciales pueden ser ``Search'' e ``Insert''. Es decir que la forma puede entrar en cualquiera de estos dos modos de arranque. 2) Despu?s del _proceso_[1] de ``Search'' o el proceso de ``Insert'' la forma cae en modo ``View'' | ``Modifiy'', dependiendo si fu? una busqueda o una inserci?n respectivamente. Hay un proceso update asociado al bot?n por default (en html, el submit button default, o en un GUI lo que est? asociado a la tecla enter) que procesa la forma y detecta cambios en la misma. Los cambios pueden completar valores haciendo consultas a la BD y otros procesos. El proceso de update es basado en el servidor siempre, evitando cualquier procesamiento innecesario en el cliente (evita el uso de JavaScript, por ejemplo y que las aplicaciones corran en Lynx). 3) Se prevee un mecanismo de ``Locking'', nivel aplicaci?n, que es independiente al bloqueo que ofrece el RDBMS. La idea es que el usuario pueda bloquear la edici?n de un registro y decidir si quiere o n? que otros usuarios vean una copia anterior. 4) Existe un proceso ``Save'' que guarda los cambios en la BD y posiblemente libera el registro a nivel aplicaci?n. Tambi?n regresa la forma al estado ``View''. 5) En cualquiera de los procesos (insert, update, save) se puede verificar el estado de locks que est?n obsoletos (ya que se prevee que todo lock tenga expiraci?n) y/o se anadir? un proceso tipo crontask que verifique el estado de los locks obsoletos. 6) Se prevee que los objetos sean consientes del usuario y su permisolog?a. Los privilegos actualmente ser?s: View, Insert, Delete, y Modify. [2] Anatom?a de una Foma y su Relaci?n con el RDBMS: ================================================ Se preveen los siguiente niveles de widgets: 1) Nivel Aplicaci?n 2) Nivel Tab 3) Nivel Forma 3.1) Nivel Campo, Label, Checkbox (cualquier widget HTML4) 3.2) Nivel Detalle (es una tabla de datos) 3.2.1) Fila 3.2.2) Columna 3.3) Nivel Sub-Detalle . . . 3.x) Nivel Sub-Detalle Reglas y Relaciones: (ojo que todav?a no he oficializado los acr?nimos y pueden cambiar en un futuro) 1) Una forma contiene un tab principal llamado "Main Application Tab" o Master Record (MR). Un MR est? asociado a una tabla de la BD (aunque puede tener foreign keys) y por ende a un query. 2) Un MR puede tener informaci?n principal y tambi?n una secci?n de detalle (DR - Detail Records). La secci?n de detalle est? asociada a una tabla de la BD y aun query que incluye en su WHERE la condici?n del MR o registro principal. La relaci?n entre el MR y el DR por supuesto es un a muchos. 3) Un DR puede tener m?s DR pasando en cascada la condici?n WHERE. 4) Un MR puede tener registros secundarios (SR) que correponden a los "Secondary Tab" en el UI.Igualmente los SR pueden tener DR en cascada como un MR y heredan la condici?n WHERE del MR. Bueno, esto termina la conceptualizaci?n de las formas de m?s bajo nivel y la funcionalidad que quiero prestar en el alpha inicial y probablemente no preste mucho m?s en la primera versi?n. Aunque para la primera versi?n quiero a?adir etado de documentos, trazabilidad de cambios (CFR Part 11), perfil de usuario, las inerfaces para un workflow gen?rico, etc.. Estas cosas la anadir? despu?s de mostrarles c?digo actual con la funcionalidad descrita arriba. Soy todo o?dos. SHOOT! Saludos a todos, Alejandro Imass [1] En mis modelos UML los estados son realmente clases frontera que representan a una forma en un estado en particular. Los procesos con clases de tipo proceso que ejecutan una acci?n. Cuando hable de registro o entidad me refiero a la clase entidad. Todos los elementos mencionados con de los diagramas de colaboraci?n de clases que estoy generando para el dise?o y que voy a publicar en una p?gina web posteriormente. [2] Recordar que este documento solo define la funcionalidad b?sica de edici?n de registros. La permisolog?a sobre acciones y estados del doc (aprobaci?n, ruteo, ancelaci?n, etc.) ser? definidas posteriormente. -- ______________________________________________ http://www.linuxmail.org/ Now with e-mail forwarding for only US$5.95/yr Powered by Outblaze ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From juanjose at lunarpages.com Thu Sep 25 16:01:07 2003 From: juanjose at lunarpages.com (Juan Jose Natera Abreu) Date: Wed Aug 4 23:59:40 2004 Subject: =?iso-8859-1?q?Actualizaci=F3n=20de=20Desarrollo?= =?iso-8859-1?q?=20CGI=3A=3AApplication=3A=3ASqlForms=2Epm?= In-Reply-To: <20030924174851.30490.qmail@linuxmail.org> References: <20030924174851.30490.qmail@linuxmail.org> Message-ID: <200309251401.08118.juanjose@lunarpages.com> Hola Alejandro, Yo he estuve suscrito a la lista de cgi-app por un tiempo, es una comunidad bastante colaboradora. Recuero que varias veces se mencionaron proyectos como este en la lista con nombres como BREAD y CRUD (create/read/update/delete creo), creo que deberias buscar el los archivos de dicha lista o suscribirte y preguntar. En general es una buena idea, la mayoria de las aplicaciones encajan con ese modelo. Te recomendaria que lo hagas los mas flexible posible y proveer hook ups para que cualquiera pueda reemplazar las funcionalidades que oferzcas con su propio codigo. El proyecto mas grande en que he trabajo fue usando CGI::App, realmente facilita las cosas, pero si tuviera que volver a hacerlo cambiaria muchas cosas :). Estudia el diseno de CGI::App y veras que lo mas importante del modulo es que provee un marco de trabajo muy bueno y provee mecanismos que facilitan adaptarlo a lo que necesitas. Tambien valdria la pena que examines CGI::Application::Generator, un modulo que crea esqueletos de aplicaciones. Saludos, JJ ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------