<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>DotPress</title>
	<atom:link href="http://www.dotpress.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dotpress.net</link>
	<description>Making a Web so much Accesible</description>
	<pubDate>Mon, 05 May 2008 22:50:35 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Creando los Formularios de un Componente en Joomla!</title>
		<link>http://www.dotpress.net/2008/05/05/creando-los-formularios-de-un-componente-en-joomla/</link>
		<comments>http://www.dotpress.net/2008/05/05/creando-los-formularios-de-un-componente-en-joomla/#comments</comments>
		<pubDate>Mon, 05 May 2008 22:50:35 +0000</pubDate>
		<dc:creator>Juan Manuel Lemus</dc:creator>
		
		<category><![CDATA[Joomla]]></category>

		<guid isPermaLink="false">http://www.dotpress.net/?p=20</guid>
		<description><![CDATA[Si estamos creando un componente debemos diseñar una manera en que este pueda tratar la información que mostramos (a menos que hagamos un mambot o algo más avanzado en materia de integración con Joomla!).  Para esto creamos los formularios que son una de las últimas partes de un módulo básico.
La programación de los formularios [...]]]></description>
			<content:encoded><![CDATA[<p>Si estamos creando un componente debemos diseñar una manera en que este pueda tratar la información que mostramos (a menos que hagamos un mambot o algo más avanzado en materia de integración con Joomla!).  Para esto creamos los formularios que son una de las últimas partes de un módulo básico.</p>
<p>La programación de los formularios no es tán distinta de la de las tablas, en la parte en que nos comunicamos con la base de datos con el objeto database, por ejemplo.  Es más que todo la organización que ya llevemos en nuestro componente la que ayudará a que sepamos como armar la lógica del formulario.</p>
<p>En el componente que desarrollé segui la lógica siguiente:</p>
<p><strong>URL:</strong> index2.php?option=com_reservations&#038;<strong>act=cars&#038;task=edit</strong>&#038;id=Mazda+323</p>
<p><strong>Paso 1</strong>: Crear una función que seleccione al elemento seleccionado y ejecute la función para mostrar el formulario:</p>
<p><code>function editCar( $car_model, $option, $act, $task )<br />
{<br />
&nbsp; &nbsp; global $database;<br />
&nbsp; &nbsp; if ( $car_model != NULL ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; $query = &#8220;SELECT * FROM #__reservations_cars WHERE car_model = &#8216;$car_model&#8217;&#8221;;<br />
&nbsp; &nbsp; &nbsp; &nbsp; $database->setQuery( $query );<br />
&nbsp; &nbsp; &nbsp; &nbsp; $car   = $database->loadObjectList();<br />
&nbsp; &nbsp; &nbsp; &nbsp; $car   = $car[0];<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; $query     = &#8220;SELECT id_cartype, cartype_description_en FROM #__reservations_cars_type ORDER BY cartype_description_en ASC&#8221;;<br />
&nbsp; &nbsp; $database->setQuery( $query );<br />
&nbsp; &nbsp; $car_types = $database->loadObjectList();<br />
&nbsp; &nbsp; Reservations_HTML::editCars( $car, $car_types, $option, $act, $task );<br />
}<br />
</code></p>
<p><strong>Paso 2</strong>: Mostrar el formulario con los datos enviados:</p>
<p><code>function editCars( $car, $car_types, $option, $act )<br />
{<br />
&nbsp; &nbsp; mosCommonHTML::loadOverlib();<br />
&nbsp; &nbsp; ?><br />
&nbsp; &nbsp; &lt;script type = "text/javascript"&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; function submitbutton(pressbutton) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var form = document.adminForm;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (pressbutton == 'cancel') {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; submitform( pressbutton );<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (form.car_model.value == "") {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; alert("Car Information must have a Car Model");<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; submitform( pressbutton );<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &lt;/script&gt;<br />
&nbsp; &nbsp; &lt;table class = "adminheading"&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;tr&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;th class = "edit"&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Car Repository: &lt;small&gt;&lt;?php echo ($car == NULL) ? "New" : "Edit"; ?&gt;&lt;/small&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/th&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/tr&gt;<br />
&nbsp; &nbsp; &lt;/table&gt;<br />
&nbsp; &nbsp; &lt;br /&gt;<br />
&nbsp; &nbsp; &lt;form action = "index2.php" enctype = "multipart/form-data" method = "post" name = "adminForm"&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;?php if ( $car-&gt;car_model ) { ?&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;input name = "old_car_model" type = "hidden" value = "&lt;?php echo $car-&gt;car_model; ?&gt;" /&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;?php } ?&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;table class = "adminform"&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;tr&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;th colspan = "4"&gt;Item Details&lt;/th&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/tr&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;tr&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td width = "75"&gt;Car Model:&lt;/td&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td width = "250"&gt;&lt;input class = "text_area" maxlength = "128" name = "car_model" size = "30" type = "text" &lt;?php if ( $car-&gt;car_model ) { ?&gt;value = "&lt;?php echo $car-&gt;car_model; ?&gt;"&lt;?php } ?&gt; /&gt;&lt;/td&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td width = "75"&gt;Car Type:&lt;/td&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;select class = "inputbox" name = "car_type"&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;?php<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for ($i = 0, $n = count( $car_types ); $i &lt; $n; $i++) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $cartype = &#038;$car_types[$i];<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mosMakeHtmlSafe($cartype);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ?&gt;&lt;option &lt;?php if ( $car-&gt;car_type == $cartype-&gt;id_cartype ) { ?&gt; selected = &#8220;selected&#8221; &lt;?php } ?&gt; value = &#8220;&lt;?php echo $cartype-&gt;id_cartype; ?&gt;&#8221;&gt;&lt;?php echo $cartype-&gt;id_cartype ?&gt;&lt;/option&gt;&lt;?php<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ?&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/select&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/td&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/tr&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;tr&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;Car Published:&lt;/td&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;select class = &#8220;inputbox&#8221; name = &#8220;car_published&#8221;&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;option &lt;?php if ( $car-&gt;car_published === 1 ) { ?&gt; selected = &#8220;selected&#8221; &lt;?php } ?&gt; value = &#8220;1&#8243;&gt;Published&lt;/option&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;option &lt;?php if ( $car-&gt;car_published === 0 ) { ?&gt; selected = &#8220;selected&#8221; &lt;?php } ?&gt; value = &#8220;0&#8243;&gt;Unpublished&lt;/option&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/select&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/td&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;Car Preview:&lt;/td&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input type = &#8220;file&#8221; name = &#8220;car_preview&#8221; /&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/td&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/tr&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;tr&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td colspan = &#8220;4&#8243;&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Car Description (required): &lt;br /&gt;&lt;br /&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;?php<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // parameters : areaname, content, hidden field, width, height, rows, cols<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; editorArea( &#8216;car_description&#8217;, $car-&gt;car_description, &#8216;car_description&#8217;, &#8216;100%;&#8217;, &#8216;350&#8242;, &#8216;75&#8242;, &#8216;20&#8242; ) ;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ?&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/td&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/tr&gt;<br />
&nbsp; &nbsp; &lt;/table&gt;<br />
&nbsp; &nbsp; &lt;input name = &#8220;option&#8221; type = &#8220;hidden&#8221; value = &#8220;&lt;?php echo $option;?&gt;&#8221; /&gt;<br />
&nbsp; &nbsp; &lt;input name = &#8220;act&#8221; type = &#8220;hidden&#8221; value = &#8220;&lt;?php echo $act;?&gt;&#8221; /&gt;<br />
&nbsp; &nbsp; &lt;input name = &#8220;task&#8221; type = &#8220;hidden&#8221; value = &#8220;&#8221; /&gt;<br />
&nbsp; &nbsp; &lt;input name = &#8220;boxchecked&#8221; type = &#8220;hidden&#8221; value = &#8220;0&#8243; /&gt;<br />
&nbsp; &nbsp; &lt;input name = &#8220;hidemainmenu&#8221; type = &#8220;hidden&#8221; value = &#8220;0&#8243;&gt;<br />
&nbsp; &nbsp; &lt;input name = &#8220;&lt;?php echo josSpoofValue(); ?&gt;&#8221; type = &#8220;hidden&#8221; value = &#8220;1&#8243; /&gt;<br />
&nbsp; &nbsp; &lt;/form&gt;<br />
&nbsp; &nbsp; &lt;?php<br />
}<br />
</code></p>
<p>Es importante que los últimos elementos <span class = "code">INPUT</span> estén presentes, pues estos preservan el nombre del módulo, el  <span class = "code">ACT</span> y el  <span class = "code">TASK</span> pues todo va al archivo  <span class = "code">INDEX2.PHP</span> vía POST.  Los demás sigo sin comprender cual es su cometido, pero es mejor dejarlo.</p>
<p>Asi mismo, tambien es posible controlar y validar en la misma página del formulario que los datos ingresados son correctos.  Dependiendo del botón presionado, así la función actuará.  En este ejemplo la función JavaScript  submitbutton permite controlar el envio de los datos a la siguiente función y validar que un valor dentro de los datos requeridos, haya sido ingresado.</p>
<p><strong>Paso 3</strong>: La función receptora se encarga de tratar los datos ingresados y de redireccionar a donde es debido.</p>
<p>Como podemos darnos cuenta, es bastante sencillo construir un componente de Joomla!.  En la siguiente parte del tutorial, veremos el manejo de parámetros nativo en Joomla!, que aunque no implemente en el componente que cree, si es posible de utilizar para crear áreas de configuración con una cuantas líneas del archivo de instalación.<br />
<h3>Artículos Relacionados</h3>
<ul class="related_post">
<li><a href="http://www.dotpress.net/2008/04/15/conectandonos-a-la-base-de-datos-y-trabajar-con-tablas-en-el-administrador-de-joomla-10x/" title="Conectandonos a la Base de Datos y trabajar con tablas en el administrador de Joomla! 1.0.x">Conectandonos a la Base de Datos y trabajar con tablas en el administrador de Joomla! 1.0.x</a></li>
<li><a href="http://www.dotpress.net/2008/04/07/recibiendo-parametros-en-joomla-y-creando-una-toolbar/" title="Recibiendo parámetros en Joomla! y creando una Toolbar">Recibiendo parámetros en Joomla! y creando una Toolbar</a></li>
<li><a href="http://www.dotpress.net/2008/03/24/creacion-de-componentes-para-joomla-10x/" title="Creación de componentes para Joomla! 1.0.x">Creación de componentes para Joomla! 1.0.x</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dotpress.net/2008/05/05/creando-los-formularios-de-un-componente-en-joomla/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Algunas anotaciones sobre la compra de Yahoo! y Microsoft</title>
		<link>http://www.dotpress.net/2008/04/17/algunas-anotaciones-sobre-la-compra-de-yahoo-y-microsoft/</link>
		<comments>http://www.dotpress.net/2008/04/17/algunas-anotaciones-sobre-la-compra-de-yahoo-y-microsoft/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 16:28:26 +0000</pubDate>
		<dc:creator>Juan Manuel Lemus</dc:creator>
		
		<category><![CDATA[DotPress]]></category>

		<category><![CDATA[Google]]></category>

		<category><![CDATA[Microsoft]]></category>

		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://www.dotpress.net/?p=18</guid>
		<description><![CDATA[Sin lugar a dudas la mayor de todas las ofertas que están alimentando la Burbuja 2.0 (Bubble 2.0) sería la acestada por la compra de Yahoo! por parte del gigante del software: Microsoft.  Es hasta cierto punto interesante como una compañía cuyo mayor mercado está basado en los servicios de Internet puede ser catalogada [...]]]></description>
			<content:encoded><![CDATA[<p>Sin lugar a dudas la mayor de todas las ofertas que están alimentando la Burbuja 2.0 (Bubble 2.0) sería la acestada por la compra de Yahoo! por parte del gigante del software: Microsoft.  Es hasta cierto punto interesante como una compañía cuyo mayor mercado está basado en los servicios de Internet puede ser catalogada como una gran compañía de la talla de otras de servicios más tradicionales.</p>
<p>Mucho del potencial real de las compañías .COM (o de negocios permanentes para la Web) está en la cantidad de usuarios que hacen uso de sus servicios.  Yahoo! fué uno de los sobrevivientes de la primera burbuja tecnológica y ahora, es seducida a venderse a Microsoft, que está hasta cierto punto desesperada de recuperar su prestigio en todos los frentes posibles.</p>
<p>Me llama poderosamente la atención la sutileza de Microsoft de ofrecerle a los directivos de Yahoo! comprarles su empresa y también la actitud de los mismos directivos de rechazar semejante oferta asumiendo que el precio de la compañía estaba siendo subvalorado.  ¿Es realmente esa la razón fundamental de que Yahoo! rechazará la compra de Microsoft o hay otros intereses detras de ello?</p>
<p>Yahoo! es poseedorea de muchos servicios realmente exitos.  Posiblemente su buque insignia de servicios sea Flickr (la mayor comunidad de usuarios aficionados a la fotografía).  Obviamente Microsoft no solamente está interesado en adquirir este servicio sino la gama completa de los servicios propiedad e Yahoo!.</p>
<p>Pero recordemos que Microsoft tiene servicios similares.  Que objetivo tendría comprar estas herramientas de Yahoo!.  </p>
<p>Muchas de las especulaciones apuntan a que Microsoft realmente lo que quiere es hacer frente al gigante de Internet: Google.  El modelo de negocios de Google ha sido uno de los más influyentes en esta segunda era de las empresas tecnológicas y es la punta de lanza en el sector de Internet.  Google ha adquirido un gran renombre en Internet y ha utilizado este nombre para introducir servicios que poco a poco están peleando con los productos tradicionales de Microsoft.</p>
<p>Los ejemplos de esto son: Gmail y sobre todo Google Docs; fuerte competidor de la suite ofimática de Microsoft; Microsoft Office.  Google siempre a lanzados servicios sencillos y sobre todo con un potencial de expansión tremendo a sus usuarios de forma casi gratuita (algunas versiones o características si han sido de pago), y eso pone en seria desventaja a Microsoft que se ve atacada por casi todos los frentes.</p>
<p>Pero volviendo al punto de interés de este escrito.  Cual es el verdadero interes de Microsoft de engullir a Yahoo!.  Creo que hay varios intereses de por medio:</p>
<ul>
<li>Aumentar su presencia de usuarios en Internet; usuarios que pueden ser transformados en una multitud de usuarios de sus otros servicios.</li>
<li>Hacer mayor frente a Google, que claramente ha retado a Microsoft (aunque la compra de Yahoo! no creará una super fuerza en contra del buscador, si creará un muy fuerte rival).</li>
<li>Mejorar sus servicios en base a la experiencia del portal.  Creo que muchos servicios de Yahoo! desaparecerían de tajo, fusionados con los servicios de Microsoft.  Otros como Flickr (sobre todo Flickr) se reestrucurarían a la manera de los de Redmond.</li>
</ul>
<p>Del otro lado, tenemos a Yahoo! que aunque esta acosada por las grandes pérdidas que ha acumulado y por la presión de los accionistas a vender, se niega a tal acción y dando varias patadas de ahogado, que aunque son en base a la argumentación de rescatar y aumentar su valorización tendrán, a mi parecer, un transfondo mayor.</p>
<p>Por que Yahoo! a integrado el sistema de publicidad de Google en período de pruebas.  ¿Acaso Google está asesorando a los directivos de Yahoo! ?.  He de recordar que esto es mera especulación y no hay base para tal respuesta.  Lo sierto es que Microsoft está interesado en comprar Yahoo! y sea como sea quiere hacerlo, aún pasando por los mismos directivos de Microsoft y comprando las acciones de los inversores.</p>
<p>Mi comclusión final es que Microsoft terminará comprando a Yahoo! por más allá de la oferta inicial.  Podemos ver un gran cambio en la estructura de Internet en donde se enfrentarán Google y Microsoft como grandes rivales.  Talvez el siguiente paso sea que Google adquiera a Microsoft.  El futuro se encargará de decidirlo.<br />
<h3>Artículos Relacionados</h3>
<ul class="related_post">
<li>Artículos Relacionados</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dotpress.net/2008/04/17/algunas-anotaciones-sobre-la-compra-de-yahoo-y-microsoft/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Conectandonos a la Base de Datos y trabajar con tablas en el administrador de Joomla! 1.0.x</title>
		<link>http://www.dotpress.net/2008/04/15/conectandonos-a-la-base-de-datos-y-trabajar-con-tablas-en-el-administrador-de-joomla-10x/</link>
		<comments>http://www.dotpress.net/2008/04/15/conectandonos-a-la-base-de-datos-y-trabajar-con-tablas-en-el-administrador-de-joomla-10x/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 18:43:31 +0000</pubDate>
		<dc:creator>Juan Manuel Lemus</dc:creator>
		
		<category><![CDATA[Joomla]]></category>

		<guid isPermaLink="false">http://www.dotpress.net/?p=17</guid>
		<description><![CDATA[Una de las partes más importantes a la hora de crear un componente en Joomla! es el de tabular los resultados en tablas.  Este proceso es bantante sencillo de realizar; requiriendo de conectarse a la base de datos y describir una estructura de tablas sencilla con paginación.
El estándar de programación del módulo nos indica [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las partes más importantes a la hora de crear un componente en Joomla! es el de tabular los resultados en tablas.  Este proceso es bantante sencillo de realizar; requiriendo de conectarse a la base de datos y describir una estructura de tablas sencilla con paginación.</p>
<p>El estándar de programación del módulo nos indica que tengamos un archivo donde se concentre mayormente la parte lógica y otro donde se encuentre el diseño de la aplicación.  En este caso, las funciones de obtención de datos las hacemos en el archivo <span class = "code">admin.*.php</span> y las de visualización de los datos en el archivo <span class = "code">admin.*.html.php</span>.  </p>
<p><code>global $database, $mainframe, $mosConfig_list_limit;<br />&nbsp;<br />
$limit 		= intval( $mainframe->getUserStateFromRequest( &#8220;viewlistlimit&#8221;, &#8216;limit&#8217;, $mosConfig_list_limit ) );<br />
$limitstart = intval( $mainframe->getUserStateFromRequest( &#8220;view{$option}limitstart&#8221;, &#8216;limitstart&#8217;, 0 ) );<br />&nbsp;<br />
$query      = &#8220;SELECT COUNT(*) FROM #__reservations_cars&#8221;;<br />
$database->setQuery( $query );<br />
$total      = $database->loadResult();<br />&nbsp;<br />
require_once( $GLOBALS['mosConfig_absolute_path'] . &#8216;/administrator/includes/pageNavigation.php&#8217; );<br />&nbsp;<br />
$pageNav    = new mosPageNav( $total, $limitstart, $limit  );<br />
$query      = &#8220;SELECT A.*, B.`id_cartype` FROM #__reservations_cars AS A, #__reservations_cars_type AS B WHERE A.`car_type` = B.`id_cartype` ORDER BY A.`car_model` ASC, B.`cartype_description_en` ASC&#8221;;<br />
$database->setQuery( $query, $pageNav->limitstart, $pageNav->limit );<br />
$rows       = $database->loadObjectList();	<br />&nbsp;<br />
if ($database->getErrorNum()) {<br />
&nbsp; &nbsp; echo $database->stderr();<br />
&nbsp; &nbsp; return false;<br />
}<br />
Reservations_HTML::CarsList( $option, $act, $rows, $pageNav );</code></p>
<p>El objeto encargado de conectarnos a la base de datos es <span class = "code">$database</span>.  Dentro de la función es recomendable que incluyamos las variables <span class = "code">$mainframe</span> y <span class = "code">$mosConfig_list_limit</span>  (para la paginación).</p>
<p>En el ejemplo la segunda línea de la función establece el valor del límite de resultados, y la tercera línea la posición inicial de los registros en la tabla.  En Joomla! el funcionamiento del objeto $database hace que primero mandemos la consulta y que mediante funciones carguemos los resultados dependiendo de nuestras necesidades. </p>
<p>Como cuando instalamos Joomla! en nuestro sitio, podemos colocarle un prefijo a la base de datos.   Cuando enviamos el query a la función cada nombre de la tabla debe ir con (<span class = "code">#__</span>) y la función lo cambiará al verdadero prefijo de la base de datos.   En este ejemplo cargamos el arreglo de resultados con la función <span class = "code">$database->loadResult();</span>.  Siempre es importante verificar errores, en especial en la fase de pruebas con la función <span>$database->getErrorNum()</span>.</p>
<p><strong class = "_16px">Creando la tabla de resultados:</strong></p>
<p>Como el ejemplo era algo extenso, he decidido resumirlo en los puntos más importantes.  </p>
<ul>
<li>La variable <span class = "code">$rows</span> de la función anterior debe ser un parámetro por referencia.</li>
<li>Habrá que incluir la variable $my y $mosConfig_live_site (path del sitio en ruta absoluta);</li>
<li>Hay que cargar el overLib();</li>
</ul>
<p><code>function CarsList( $option, $act, &#038;$rows, &#038;$pageNav )<br />
{<br />
&nbsp; &nbsp; global $my, $mosConfig_live_site;<br />
	&nbsp; &nbsp; mosCommonHTML::loadOverlib();</code></p>
<p>Creamos la tabla con los estilos de la hoja de estilo del administrador (para obtenerlos, buscamos un componente ya creado y mediante Firebug vamos obteniendolos).  La tabla contenedora es de clase adminlist y se utilizan elementos TH para los cabezales de la tabla.</p>
<p>Es importante que cada línea de la tabla tenga un ID.  El ciclo para agregar cada línea de la tabla comienza asi:</p>
<p><code>$k = 0;<br />
for ($i = 0, $n = count( $rows ); $i < $n; $i++) {<br />
&nbsp; &nbsp; $row     = &#038;$rows[$i];<br />
&nbsp; &nbsp; mosMakeHtmlSafe($row);<br />
&nbsp; &nbsp; // --&gt; Codigo &lt;--<br />
&nbsp; &nbsp; $k = 1 - $k;<br />
}</code></p>
<p>Cada fila del arreglo <span class = "code">$row</span> es un objeto cuyas propiedades son los nombres de los campos de la tabla. La ultima línea del código del ciclo es bastante interesante: convierte el valor de la variable <span class = "code">$k</span> a 0 y 1 alternativamente, con el objetivo de hacer el efecto cebra en la tabla.</p>
<p>Toda la tabla debe estar dentro de un formulario HTML y al final de la tabla, colocamos los elementos necesarios para hacer la paginación.</p>
<p>Esto es todo en este nuevo artículo de la serie para la creación de componentes en Joomla!.  En la cuarta entrega especificaremos detalles sobre la creación de los formularios y el modo de interacción con los botones del toolbar.</code><br />
<h3>Artículos Relacionados</h3>
<ul class="related_post">
<li><a href="http://www.dotpress.net/2008/05/05/creando-los-formularios-de-un-componente-en-joomla/" title="Creando los Formularios de un Componente en Joomla!">Creando los Formularios de un Componente en Joomla!</a></li>
<li><a href="http://www.dotpress.net/2008/04/07/recibiendo-parametros-en-joomla-y-creando-una-toolbar/" title="Recibiendo parámetros en Joomla! y creando una Toolbar">Recibiendo parámetros en Joomla! y creando una Toolbar</a></li>
<li><a href="http://www.dotpress.net/2008/03/24/creacion-de-componentes-para-joomla-10x/" title="Creación de componentes para Joomla! 1.0.x">Creación de componentes para Joomla! 1.0.x</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dotpress.net/2008/04/15/conectandonos-a-la-base-de-datos-y-trabajar-con-tablas-en-el-administrador-de-joomla-10x/feed/</wfw:commentRss>
		</item>
		<item>
		<title>markItUp: Editor de texto ligero</title>
		<link>http://www.dotpress.net/2008/04/11/markitup-editor-de-texto-ligero/</link>
		<comments>http://www.dotpress.net/2008/04/11/markitup-editor-de-texto-ligero/#comments</comments>
		<pubDate>Fri, 11 Apr 2008 21:40:58 +0000</pubDate>
		<dc:creator>Juan Manuel Lemus</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.dotpress.net/?p=16</guid>
		<description><![CDATA[Después de utilizar editores como FCKeditor o TinyMCE, encuentro este editor bastante sencillo y por ende ligero muy al estilo del editor de WordPress (pero no el de texto enriquecido)
Lo que me ha gustado más de este editor es que permite utilizar diferentes formatos al HTML tradicional, como Bbcode o la propia sintáxis de Wiki. [...]]]></description>
			<content:encoded><![CDATA[<p>Después de utilizar editores como FCKeditor o TinyMCE, encuentro este editor bastante sencillo y por ende ligero muy al estilo del editor de WordPress (pero no el de texto enriquecido)</p>
<p>Lo que me ha gustado más de este editor es que permite utilizar diferentes formatos al HTML tradicional, como Bbcode o la propia sintáxis de Wiki. Posiblemente no pueda reemplazar a otros editores más completos y sobre todo, destinados a usuarios con pocos conocimientos de HTML, pero seguro que para muchos en algunos proyectos sencillos de editores de contenidos resultará bastante útil.</p>
<p>El editor requiere de jQuery como librería de soporte.   Su modo de puesta en funcionamiento es bastante sencillo:</p>
<p><code>&lt;script type="text/javascript" src="jquery.js"&gt;&lt;/script&gt;<br />
&lt;script type="text/javascript" src="markitup/jquery.markitup.js"&gt;&lt;/script&gt;</code></p>
<p>Tambíen necesitamos un archivo de <strong>Settings</strong> o en su defecto un arreglo con esa información.  Claro, no podemos olvidar incluir las hojas de estilos y asignamos al textarea que queremos asignarle la propiedad de ser un editor enriquecido:</p>
<p><code>&lt;script type="text/javascript"&gt;<br />
&nbsp; &nbsp; $(document).ready(function() {<br />
&nbsp; &nbsp; &nbsp; &nbsp; $("#markItUp").markItUp(mySettings);<br />
&nbsp; &nbsp;});<br />
&lt;/script&gt;<br />
...<br />
&lt;textarea id="markItUp"&gt;&lt;/textarea&gt;<br />
</code></p>
<p>Y claro, se puede personalizar y hacer mil cosas con la librería.  El nombre de este componente es <a href="http://markitup.jaysalvat.com/" target = "_blank">MarkItUP.</a></p>
<h3>Artículos Relacionados</h3>
<ul class="related_post">
<li><a href="http://www.dotpress.net/2008/03/28/ejecutando-ruby-en-el-interprete-de-javascript/" title="Ejecutando Ruby en el interprete de JavaScript">Ejecutando Ruby en el interprete de JavaScript</a></li>
<li><a href="http://www.dotpress.net/2008/03/27/agregando-nuevas-funcionabilidades-a-nuestras-hojas-de-estilo-con-morecss/" title="Agregando nuevas funcionabilidades a nuestras hojas de estilo con MoreCSS">Agregando nuevas funcionabilidades a nuestras hojas de estilo con MoreCSS</a></li>
<li><a href="http://www.dotpress.net/2008/03/27/picomet-una-simple-libreria-para-comet/" title="pi.comet: Una simple librería para Comet">pi.comet: Una simple librería para Comet</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dotpress.net/2008/04/11/markitup-editor-de-texto-ligero/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Bluga.net: crear thumbnails de sitios con API incluida</title>
		<link>http://www.dotpress.net/2008/04/11/bluganet-crear-thumbnails-de-sitios-con-api-incluida/</link>
		<comments>http://www.dotpress.net/2008/04/11/bluganet-crear-thumbnails-de-sitios-con-api-incluida/#comments</comments>
		<pubDate>Fri, 11 Apr 2008 16:32:34 +0000</pubDate>
		<dc:creator>Juan Manuel Lemus</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[API]]></category>

		<category><![CDATA[Snaps]]></category>

		<category><![CDATA[Thumbnails]]></category>

		<guid isPermaLink="false">http://www.dotpress.net/?p=14</guid>
		<description><![CDATA[Desde que vi la funcionabilidad e Snap de poder generar miniaturas de otros sitios y de páginas web en general, supe que quería aplicar esa funcionabilidad.  Ahora, vía WWWha&#8217;ts new encuentro este interesante servicio que ofrece la posibilidad de obtener las miniaturas de nuestro sitio y a los desarrolladores aventureros, la disponibilidad para crear [...]]]></description>
			<content:encoded><![CDATA[<p>Desde que vi la funcionabilidad e <a href="http://www.span.com" target = "_blank" rel = "nofollow">Snap</a> de poder generar miniaturas de otros sitios y de páginas web en general, supe que quería aplicar esa funcionabilidad.  Ahora, vía <a href="http://wwwhatsnew.com" target = "_blank">WWWha&#8217;ts new</a> encuentro este interesante servicio que ofrece la posibilidad de <a href="http://webthumb.bluga.net/home" target = "_blank">obtener las miniaturas de nuestro sitio</a> y a los desarrolladores aventureros, la disponibilidad para crear aplicaciones que hagan uso de su API.</p>
<p><strong class = "_16px">Versiones de la API:</strong></p>
<p>A fecha de publicación de este artículo existía una API para Python y Ruby. La versión para PHP aún estaba en beta.  El servicio no es gratuito y cada uso de la API nos costará 1 crédito con algunas variantes según las opciones que utilicemos.</p>
<p><center><img alt = "DotPress.net utilizando la API de WebThumbnails de Bluga.net" src = "http://www.dotpress.net/wp-content/uploads/2008/04/webthumbnails-bluganet-dotpressnet.jpg" /></center></p>
<p><strong class = "_16px">Principios de funcionamiento con la API de Bluga.net:</strong></p>
<ul>
<li>La API está basada en XML y su comunicación es através del objeto base de AJAX: <a href="http://en.wikipedia.org/wiki/XMLHttpRequest" target = "_blank">XMLHttpRequest.</a>  Desde la misma página de Bluga advierten que si se trata de utilizar por un método propio no funcionará por las restricciones del uso de JavaScript en otros servidores (XSS).</li>
<li>Hay que registrarse y obtener un API-Key para usar el servicio.  </li>
<li>La respuesta será dada en formato XML de haber tenido éxito en la transacción y en texto plano en caso de falla.</li>
</ul>
<p>Una llamada estándar será parecida al siguiente ejemplo:</p>
<p><code>&lt;webthumb&gt;<br />
&nbsp; &nbsp; &lt;apikey&gt;apikey here&lt;/apikey&gt;<br />
&nbsp; &nbsp; &lt;request&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;url&gt;webthumb.bluga.net&lt;/url&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp;  &lt;outputType&gt;png&lt;/outputType&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp;   &lt;width&gt;1280&lt;/width&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;height&gt;1024&lt;/height&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp;  &lt;fullthumb&gt;1&lt;/fullthumb&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;customThumbnail width="120" height="120" /&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;effect&gt;mirror&lt;/effect&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;delay&gt;5&lt;/delay&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp;  &lt;excerpt&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;x&gt;400&lt;/x&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;y&gt;400&lt;/y&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;height&gt;200&lt;/height&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  &lt;width&gt;200&lt;/width&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/excerpt&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;notify&gt;http://webthumb.bluga.net/notify.php&lt;/notify&gt;<br />
&nbsp; &nbsp; &lt;/request&gt;<br />
&lt;/webthumb&gt;</code></p>
<p>Donde la respuesta también estaría dada mediante un objeto XML de la siguiente manera:</p>
<p><code>&lt;webthumb&gt;<br />
&nbsp; &nbsp; &lt;jobStatus&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;status id='wt47c5fcba65776' submissionTime='2008-02-27 17:13:46' browserWidth='1024' browserHeight='768' inProcess='1' &gt;&lt;/status&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;status id='wt47c5f71c37c3a' submissionTime='2008-02-27 16:49:48' browserWidth='1024' browserHeight='768' pickup='http://webthumb.bluga.net/data/3a/7c/c3/wt47c5f71c37c3a.zip' completionTime='2008-02-27 16:50:01'&gt;Complete&lt;/status&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;status id='wt47c5f71c3b6d2' submissionTime='2008-02-27 16:49:48' browserWidth='1280' browserHeight='1024' pickup='http://webthumb.bluga.net/data/d2/b6/c3/wt47c5f71c3b6d2.zip' completionTime='2008-02-27 16:50:06'&gt;Complete&lt;/status&gt;<br />
&nbsp; &nbsp; &lt;/jobStatus&gt;<br />
&lt;/webthumb&gt;</code></p>
<h3>Artículos Relacionados</h3>
<ul class="related_post">
<li>Artículos Relacionados</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dotpress.net/2008/04/11/bluganet-crear-thumbnails-de-sitios-con-api-incluida/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Moowheel: visualizando conexiones con CANVAS</title>
		<link>http://www.dotpress.net/2008/04/10/moowheel-visualizando-conexiones-con-canvas/</link>
		<comments>http://www.dotpress.net/2008/04/10/moowheel-visualizando-conexiones-con-canvas/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 18:54:22 +0000</pubDate>
		<dc:creator>Juan Manuel Lemus</dc:creator>
		
		<category><![CDATA[Mootols]]></category>

		<category><![CDATA[AJAX]]></category>

		<category><![CDATA[Canvas]]></category>

		<category><![CDATA[HTML5]]></category>

		<category><![CDATA[JSON]]></category>

		<guid isPermaLink="false">http://www.dotpress.net/?p=12</guid>
		<description><![CDATA[Uno de las etiquetas menos utilizadas para HTML es el elementos CANVAS.  Este elementos es algo más que interesante para el uso y en simples palabras nos permite crear imagenes en tiempo real con especificaciones XML/SVG y JavaScript.
Ahora Josh Gross creador de AjaxAIM ha creado una interesante manera de visualizar información de conexiones entre [...]]]></description>
			<content:encoded><![CDATA[<p>Uno de las etiquetas menos utilizadas para HTML es el elementos <a href="http://en.wikipedia.org/wiki/Canvas_(HTML_element)" target = "_blank">CANVAS.</a>  Este elementos es algo más que interesante para el uso y en simples palabras nos permite crear imagenes en tiempo real con especificaciones XML/SVG y JavaScript.</p>
<p>Ahora <a href="http://www.unwieldy.net" target = "_blank">Josh Gross</a> creador de <a href="http://www.ajaxim.com/" target = "_blank">AjaxAIM</a> ha creado una interesante manera de visualizar información de conexiones entre diferentes objetos utilizando JSON, Mootols y por supuesto, el objeto CANVAS.</p>
<p>Entre los diferentes usos de esta bonita y elegante librería basada en Mootols está la <strong>creación de grafos en JavaScript</strong> o algunos otros, como hizo notar mi compañero de trabajo: crear garabatos y líneas difíciles de relacionar a simple vista.</p>
<p><center><a href="http://www.unwieldy.net/moowheel/" target = "_blank"><img alt = "Moowheel" src = "http://www.dotpress.net/wp-content/uploads/2008/04/moowheels-canvas-mootols-json.jpg" /></a></center></p>
<p><strong class = "_16px">Requerimientos:</strong></p>
<p>Este script requiere tres librerías.  Estás serían CanvasText (que probee el soporte de texto), ExCanvas (para soporte del elemento canvas en Internet Explorer) y la librería de MooTools con soporte para Class, Class.Extras, Element, Element.Event. Element.Dimensions y Json.Remote.</p>
<p><strong class = "_16px">Documentación:</strong></p>
<p>En la manera más simple, la creación del objeto se produce con la siguiente llamada a la función:</p>
<p><code>new MooWheel(dataArray, canvasElement);</code></p>
<p>Ahora, si tenemos que recibir los datos mediante el uso de AJAX, podemos utilizar este otro procedimiento:</p>
<p><code>new MooWheel(false, canvasElement, {<br />
   json: {<br />
      url: 'http://your.json.url/request.php',<br />
      method: 'get',<br />
      send: {<br />
         'some_variable': 'some_data'<br />
      }<br />
   }<br />
});</code></p>
<p>Esto hace una llamada asíncrona y el formato de respuesta es JSON.  La documentación completa de las demás funciones está en la <a href="http://www.unwieldy.net/moowheel/" target = "_blank">página del componente</a>.<br />
<h3>Artículos Relacionados</h3>
<ul class="related_post">
<li><a href="http://www.dotpress.net/2008/03/27/picomet-una-simple-libreria-para-comet/" title="pi.comet: Una simple librería para Comet">pi.comet: Una simple librería para Comet</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dotpress.net/2008/04/10/moowheel-visualizando-conexiones-con-canvas/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Recibiendo parámetros en Joomla! y creando una Toolbar</title>
		<link>http://www.dotpress.net/2008/04/07/recibiendo-parametros-en-joomla-y-creando-una-toolbar/</link>
		<comments>http://www.dotpress.net/2008/04/07/recibiendo-parametros-en-joomla-y-creando-una-toolbar/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 19:10:22 +0000</pubDate>
		<dc:creator>Juan Manuel Lemus</dc:creator>
		
		<category><![CDATA[Joomla]]></category>

		<guid isPermaLink="false">http://www.dotpress.net/?p=11</guid>
		<description><![CDATA[Cuando creamos un componente en Joomla!, este debe interactuar con su entorno. Generalmente este “entorno” necesita de información suministrada por el usuario a através de formularios. Joomla!, proporciona funciones interesantes para la recuperación y obtención de los parámetros y se la colocación de toolbars para el manejo de eventos.

$act = mosGetParam($_REQUEST, 'act', array(0));
$task = mosGetParam($_REQUEST, [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando creamos un componente en Joomla!, este debe interactuar con su entorno. Generalmente este “entorno” necesita de información suministrada por el usuario a através de formularios. Joomla!, proporciona funciones interesantes para la recuperación y obtención de los parámetros y se la colocación de toolbars para el manejo de eventos.</p>
<p><code><br />
$act = mosGetParam($_REQUEST, 'act', array(0));<br />
$task = mosGetParam($_REQUEST, 'task');<br />
$cid = mosGetParam($_REQUEST, 'cid', array(0));<br />
</code></p>
<p>En Joomla! generalmente se suele colocar el código de arriba desde el principio del script en el archivo <span class = "code">admin.*.php</span> ó <span class = "code">*.php</span> y una estructura de control SWITCH para dirigir el flujo de procedimiento según la función que se busca.</p>
<p>Entre las funciones más sencillas para obtener el valor de un parámetro enviado, solemos utilizar la función <span class = "code">mosGetParam</span> que recibe el arreglo de valores <span class = "code">$_REQUEST y el valor del nombre de la llave. El tercer parámetro es opcional e indica que valor por defecto a asignarle a la variable en caso no se encuentra el valor del parámetro deseado.<br />
</span></p>
<p><strong class="_16px">Creación del Toolbar en Joomla!</strong></p>
<p>Los archivos que intervienen en la creación de la toolbar son <span class = "code">toolbar.*.php</span> y <span class = "code">toolbar.*.html.php</span> aunque realmente si seguimos los estándares de desarrollo de un componente en Joomla!, veremos que realmente debe ser el segundo archivo el que imprima cada botón.</p>
<p><code><br />
mosMenuBar::startTable();<br />
mosMenuBar::archiveList();<br />
mosMenuBar::spacer();<br />
mosMenuBar::publishList();<br />
mosMenuBar::spacer();<br />
mosMenuBar::unpublishList();<br />
mosMenuBar::spacer();<br />
mosMenuBar::customX( 'movesect', 'move.png', 'move_f2.png', 'Move' );<br />
mosMenuBar::spacer();<br />
mosMenuBar::customX( 'copy', 'copy.png', 'copy_f2.png', 'Copy' );<br />
mosMenuBar::spacer();<br />
mosMenuBar::trash();<br />
mosMenuBar::spacer();<br />
mosMenuBar::editListX( 'editA' );<br />
mosMenuBar::spacer();<br />
mosMenuBar::addNewX();<br />
mosMenuBar::spacer();<br />
mosMenuBar::help( 'screen.content' );<br />
mosMenuBar::endTable();<br />
</code></p>
<p>Toda toolbar se inicia con la función <span class = "code">mosMenuBar::startTable();</span> y finaliza con <span class = "code">mosMenuBar::endTable();</span>. Hay varias funciones ya definidas como las que siguen en el anterior ejemplo que dibujan el boton de archivar, publicar, despublicar, eliminar, agregar y ayuda. Cada botón se separa con un <span class = "code">mosMenuBar::spacer();</span>.</p>
<p>También puede agregarse nuevos botones mediante la función <span class = "code">mosMenuBar::customX</span> donde los parámetros son: nombre del comando, imagen de icono, imagen de icono desabilitado y etiqueta.</p>
<p>Cada botón generalmente ejecuta una petición mediante el refresco de la página y esos eventos pueden ser capturados mediante el uso de la función <span class = "code">mosGetParam($_REQUEST, &#8216;task&#8217;);</span>. Es muy interesante la creación de componentes para muchos sistemas como Joomla! ó WordPress. En el próximo capítulo de la serie veremos el código para conectarnos a la base de datos del sistema y crear nuestra tabla de resultados con paginación y algunas funciones del toolbar.</p>
<h3>Artículos Relacionados</h3>
<ul class="related_post">
<li><a href="http://www.dotpress.net/2008/05/05/creando-los-formularios-de-un-componente-en-joomla/" title="Creando los Formularios de un Componente en Joomla!">Creando los Formularios de un Componente en Joomla!</a></li>
<li><a href="http://www.dotpress.net/2008/04/15/conectandonos-a-la-base-de-datos-y-trabajar-con-tablas-en-el-administrador-de-joomla-10x/" title="Conectandonos a la Base de Datos y trabajar con tablas en el administrador de Joomla! 1.0.x">Conectandonos a la Base de Datos y trabajar con tablas en el administrador de Joomla! 1.0.x</a></li>
<li><a href="http://www.dotpress.net/2008/03/24/creacion-de-componentes-para-joomla-10x/" title="Creación de componentes para Joomla! 1.0.x">Creación de componentes para Joomla! 1.0.x</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dotpress.net/2008/04/07/recibiendo-parametros-en-joomla-y-creando-una-toolbar/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Instalación de Internet Explorer en Mac OS X con VMware</title>
		<link>http://www.dotpress.net/2008/04/01/instalacion-de-internet-explorer-en-mac-os-x-con-vmware/</link>
		<comments>http://www.dotpress.net/2008/04/01/instalacion-de-internet-explorer-en-mac-os-x-con-vmware/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 22:01:56 +0000</pubDate>
		<dc:creator>Juan Manuel Lemus</dc:creator>
		
		<category><![CDATA[Internet Explorer]]></category>

		<category><![CDATA[Mac OS]]></category>

		<category><![CDATA[VMware]]></category>

		<guid isPermaLink="false">http://www.dotpress.net/?p=7</guid>
		<description><![CDATA[La única “piedra en el zapato” de contar con un equipo con Mac OS X, para aquellos que se dedican a maquetar sitios, es la ausencia del explorador de Microsoft.  Sin duda, el que no se le haya dado continuidad a la aplicación crea una gran limitante, que al fin es realmente cubierta con [...]]]></description>
			<content:encoded><![CDATA[<p>La única “piedra en el zapato” de contar con un equipo con Mac OS X, para aquellos que se dedican a maquetar sitios, es la ausencia del explorador de Microsoft.  Sin duda, el que no se le haya dado continuidad a la aplicación crea una gran limitante, que al fin es realmente cubierta con la mejor solución: virtualización. </p>
<p>En el terreno de la virtualización para la plataforma Mac OS existen dos grandes soluciones: <a href="http://www.parallels.com" target = "_blank">Parallels</a> y <a href="http://www.vmware.com/products/fusion/" target = "_blank">VMware Fusion </a>.  Pero, por que comentamos virtualización en este tema; es sencillo: <strong>la única alternativa viable para utilizar Internet Explorer en Mac OS X es virtualizar</strong>.  Y cuando hablo de virtualizar me refiero a todo el sistema operativo de Microsoft: Windows XP o Windows Vista.</p>
<p>Ahora, el proceso es mucho más sencillo.  Recientemente me ha tocado maquetar un sitio completo y definitivamente era muy dificil el obviar a Internet Explorer dentro del testeo, especialmente por lo grandes males de los que sabemos que padece el explorador y su “manera” de maquetar las páginas.  </p>
<p><img src="http://www.dotpress.net/wp-content/uploads/2008/04/ie-mac-os-vmware-preview.jpg" alt="Internet Explorer en Mac OS X con VMware (Preview)" title="ie-mac-os-vmware-preview" class="alignnone size-medium wp-image-8" /></p>
<p>Arriba, la prueba de que la virtualización es llevada.  En este caso, las pruebas se realizaron en un MacBook con Intel Core 2 Duro a 2.20 GHz y 1 GB de RAM.  Mi apreciación personal para este equipo es que para correr Windows Vista virtualizado se necesitan al menos 2 GB de RAM para que el rendimiento de los sistemas operativo no se vea tan drasticamente lento.  Dado que Windows XP no demanda tantos recursos como Windows Vista, considero que con la maquina virtual asignada con 256 MB de RAM es más que suficiente.</p>
<p>Creo que esta es la mejor manera de poder hacer uso de estas herramientas que solo están disponibles en el sistema operativo de Microsoft.  Esperaria que el rendimiento de los programas de virtualización siga mejorando conforme el tiempo y que de poder ser posible que en un futuro no muy lejano pudiese prescindirse de alguna manera de la carga del sistema operativo huesped; aunque claro, ya existen herramientas como WINE que aunque tienen un gran desempeño de virtualización, realmente no terminan de convencerme.</p>
<p>Después de la prueba y con la máquina virtual apagada, el sistema comienza a recuperarse y estoy empezando a sentir que necesita ser reiniciado, por que será ?<br />
<h3>Artículos Relacionados</h3>
<ul class="related_post">
<li>Artículos Relacionados</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dotpress.net/2008/04/01/instalacion-de-internet-explorer-en-mac-os-x-con-vmware/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ejecutando Ruby en el interprete de JavaScript</title>
		<link>http://www.dotpress.net/2008/03/28/ejecutando-ruby-en-el-interprete-de-javascript/</link>
		<comments>http://www.dotpress.net/2008/03/28/ejecutando-ruby-en-el-interprete-de-javascript/#comments</comments>
		<pubDate>Fri, 28 Mar 2008 20:28:31 +0000</pubDate>
		<dc:creator>Juan Manuel Lemus</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.dotpress.net/2008/03/28/ejecutando-ruby-en-el-interprete-de-javascript/</guid>
		<description><![CDATA[Me gusta el blog Ajaxian por que es de los grandes blogs en idioma inglés en los que encuentras la mejor información de una manera fácil y con ejemplos. Nuevamente, tomo uno de las noticias de este gran blog para refererirme a esta gran curiosidad: Ruby del lado del cliente.
He visto varias cosas interesantes pero [...]]]></description>
			<content:encoded><![CDATA[<p>Me gusta el blog <a href="http://www.ajaxian.com" target = "_blank">Ajaxian</a> por que es de los grandes blogs en idioma inglés en los que encuentras la mejor información de una manera fácil y con ejemplos. Nuevamente, tomo uno de las noticias de este gran blog para refererirme a esta gran curiosidad: Ruby del lado del cliente.</p>
<p>He visto varias cosas interesantes pero estos chicos realmente me sorprenden. Directo del departamento de investigación del blog Ajaxian, llega la noticia de <a href="http://hotruby.accelart.jp/" target = "_blank">HotRuby</a>  que es una <a href="http://hotruby.accelart.jp/js/HotRuby.js">implementación del lenguaje Ruby en JavaScript</a>.</p>
<p>El modo de funcionamiento de bastante peculiar pues parece que para hacer esta interesante combinación HotRuby “<a href="http://hotruby.accelart.jp/compileRuby_cgi" target = "_blank">toma el resultado de YAMV</a> y lo interpreta para luega procesarlo en formato JSON”:</p>
<p><code># Ruby <br />
VM::InstructionSequence.compile(cgi['src'], &quot;src&quot;, 1,OutputCompileOption).to_a.to_json<br />
</code></p>
<p>Y claro, el codigo en lenguaje Ruby lo puedes embeber en la página HTML con la etiqueta SCRIPT:</p>
<p><code>&lt;script type = &quot;text/ruby&quot;&gt;<br />
&nbsp; &nbsp; class Pi<br />
&nbsp; &nbsp; &nbsp; &nbsp; def initialize<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @a = 355.0<br />
&nbsp; &nbsp; &nbsp; &nbsp; end<br />
&nbsp; &nbsp; &nbsp; &nbsp; def calc<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; b = 113.0<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return @a / b<br />
&nbsp; &nbsp; &nbsp; &nbsp; end<br />
&nbsp; &nbsp; &nbsp; &nbsp; PI = 'PI is about'<br />
&nbsp; &nbsp; end<br />
&nbsp; &nbsp; puts Pi::PI<br />
&nbsp; &nbsp; puts Pi.new.calc<br />
&lt;/script&gt;<br />
&lt;body onload = &quot;prettyPrint(); new HotRuby().runFromScriptTag('/compileRuby.cgi')&quot;&gt;</p>
<p></code></p>
<p>El codigo resultante puede interactuar “tan bien” con el entorno de DOM que de hecho puede soportar Flash. Los chicos creadores del proyecto han puesto a disposición un excelente ejemplo del <a href="http://hotruby.accelart.jp/test-web/Box2DFlashAS3.html" target = "_blank">funcionamiento de Ruby, JavaScript y Flash</a>. Yo me pregunto, que tan práctico será hacer este tipo de combinación entre lenguajes. Aunque seguro, no podré colocar los datos de conexión a mi base de datos.</p>
<h3>Artículos Relacionados</h3>
<ul class="related_post">
<li><a href="http://www.dotpress.net/2008/04/11/markitup-editor-de-texto-ligero/" title="markItUp: Editor de texto ligero">markItUp: Editor de texto ligero</a></li>
<li><a href="http://www.dotpress.net/2008/03/27/agregando-nuevas-funcionabilidades-a-nuestras-hojas-de-estilo-con-morecss/" title="Agregando nuevas funcionabilidades a nuestras hojas de estilo con MoreCSS">Agregando nuevas funcionabilidades a nuestras hojas de estilo con MoreCSS</a></li>
<li><a href="http://www.dotpress.net/2008/03/27/picomet-una-simple-libreria-para-comet/" title="pi.comet: Una simple librería para Comet">pi.comet: Una simple librería para Comet</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dotpress.net/2008/03/28/ejecutando-ruby-en-el-interprete-de-javascript/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Agregando nuevas funcionabilidades a nuestras hojas de estilo con MoreCSS</title>
		<link>http://www.dotpress.net/2008/03/27/agregando-nuevas-funcionabilidades-a-nuestras-hojas-de-estilo-con-morecss/</link>
		<comments>http://www.dotpress.net/2008/03/27/agregando-nuevas-funcionabilidades-a-nuestras-hojas-de-estilo-con-morecss/#comments</comments>
		<pubDate>Thu, 27 Mar 2008 21:38:27 +0000</pubDate>
		<dc:creator>Juan Manuel Lemus</dc:creator>
		
		<category><![CDATA[CSS]]></category>

		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.dotpress.net/2008/03/27/agregando-nuevas-funcionabilidades-a-nuestras-hojas-de-estilo-con-morecss/</guid>
		<description><![CDATA[Mientras esperamos a que las nuevas especificaciones de CSS 3 sean publicadas y los navegadores hagan los cambios necesarios para dar soporte a las mismas, proyectos con MoreCSS nos permiten agregar nuevas funcionabilidades a nuestras hojas de estilo, que nos hacen la vida más sencilla a quienes creamos la adaptación de los diseños a Internet. [...]]]></description>
			<content:encoded><![CDATA[<p>Mientras esperamos a que las nuevas especificaciones de CSS 3 sean publicadas y los navegadores hagan los cambios necesarios para dar soporte a las mismas, proyectos con MoreCSS nos permiten agregar nuevas funcionabilidades a nuestras hojas de estilo, que nos hacen la vida más sencilla a quienes creamos la adaptación de los diseños a Internet.  El proyecto pinta muy bien y esperamos que siga creciendo en el futuro.</p>
<p><a href="http://www.yellowgreen.de/morecss" target = "_blank">MoreCSS</a> es un proyecto de origen alemán llamado <a href="http://www.yellowgreen.de" target = "_blank">Yello Green</a> que como se describe anteriomente permite agregar soporte de propiedades CSS que no están en el estándar, pero que nos ayudarán a nosotros como maquetadores a mejorar nuestros hojas de estilo y el diseño en general de la página que estemos trabajando sin recurrir a otras tantas opciones de terceros (generalmente en lenguaje JavaScript).</p>
<p><strong class="_16px">Instalación y uso</strong></p>
<p>El soporte de estas propiedades a través de MoreCSS está dado por un JavaScript muy al estilo del framework <a href="http://www.mootools.net" target = "_blank">Mootools</a> (es decir, no se entiende nada en la versión empaquetada pero es muy liviana.  El métod de uso es muy sencillo:</p>
<p><code>&lt;link href = &quot;path/to/your/MoreCSS/stylesheet.css&quot; rel = &quot;MoreCSS&quot; /&gt;<br />
&lt;script href = &quot;MoreCSS.js&quot; type = &quot;text/javascript&quot;&gt;&lt;/script&gt;<br />
</code></p>
<p>Como comentan en el sitio del proyecto, es necesario que usted agregue la hoja de estilo de MoreCSS antes de agregar el archivo de la libreria (el archivo JS) y lo optimo será colocarlos antes de cualquier inclusión de elementos.</p>
<p>En muchos casos, el uso de las nuevas propiedades es similar a las del estándard CSS, salvo algunas limitantes por ser un desarrollo muy reciente.  También se comenta que para un mejor uso, se utilizen elementos identificados mediante un ID.</p>
<p>Me gusta mucho la propuesta de aumentar las capacidades de CSS por que realmente muchos de los comportamientos de determinados sitios son en base a la propuesta de diseño y que mejor que la hoja de estilo para definir este comportamiento.</p>
<p>Actualmente se soportan más de veinte nuevas características y la lista sigue sumando.  Les reomiendo que le hechen un ojo a la librería y puedan hacer sus propias pruebas.<br />
<h3>Artículos Relacionados</h3>
<ul class="related_post">
<li><a href="http://www.dotpress.net/2008/04/11/markitup-editor-de-texto-ligero/" title="markItUp: Editor de texto ligero">markItUp: Editor de texto ligero</a></li>
<li><a href="http://www.dotpress.net/2008/03/28/ejecutando-ruby-en-el-interprete-de-javascript/" title="Ejecutando Ruby en el interprete de JavaScript">Ejecutando Ruby en el interprete de JavaScript</a></li>
<li><a href="http://www.dotpress.net/2008/03/27/picomet-una-simple-libreria-para-comet/" title="pi.comet: Una simple librería para Comet">pi.comet: Una simple librería para Comet</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dotpress.net/2008/03/27/agregando-nuevas-funcionabilidades-a-nuestras-hojas-de-estilo-con-morecss/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
