<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Dokeos Latinoamérica &#187; akelos</title>
	<atom:link href="http://dokeoslatinoamerica.wordpress.com/tag/akelos/feed/" rel="self" type="application/rss+xml" />
	<link>http://dokeoslatinoamerica.wordpress.com</link>
	<description>Reportes de actividad, tips y consideraciones</description>
	<lastBuildDate>Tue, 15 Dec 2009 21:13:47 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='dokeoslatinoamerica.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/067f4f68c6dd2fd8b9447fc660b4fa12?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Dokeos Latinoamérica &#187; akelos</title>
		<link>http://dokeoslatinoamerica.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://dokeoslatinoamerica.wordpress.com/osd.xml" title="Dokeos Latinoamérica" />
		<item>
		<title>Curso interno sobre Akelos</title>
		<link>http://dokeoslatinoamerica.wordpress.com/2009/09/01/curso-interno-sobre-akelos/</link>
		<comments>http://dokeoslatinoamerica.wordpress.com/2009/09/01/curso-interno-sobre-akelos/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 17:18:14 +0000</pubDate>
		<dc:creator>ywarnier</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[eventos]]></category>
		<category><![CDATA[técnico]]></category>
		<category><![CDATA[akelos]]></category>
		<category><![CDATA[framework]]></category>

		<guid isPermaLink="false">http://dokeoslatinoamerica.wordpress.com/?p=954</guid>
		<description><![CDATA[Jhon y Ronny nos están honrando hoy con un pequeño curso sobre Akelos, el framework PHP con el cual van desarrollando OpenC2C y otras aplicaciones desde hace tiempo.


El framework Akelos, aparte de ofrecer funcionalidades basadas en el modelo de Ruby on Rails (mucho más que CakePHP), ofrece una gestión integrada de pruebas automatizadas (generación de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dokeoslatinoamerica.wordpress.com&blog=3963915&post=954&subd=dokeoslatinoamerica&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Jhon y Ronny nos están honrando hoy con un pequeño curso sobre Akelos, el framework PHP con el cual van desarrollando OpenC2C y otras aplicaciones desde hace tiempo.</p>
<p><a href="http://dokeoslatinoamerica.files.wordpress.com/2009/09/jhon-akelos.jpg"><img class="aligncenter size-medium wp-image-955" title="jhon-akelos" src="http://dokeoslatinoamerica.files.wordpress.com/2009/09/jhon-akelos.jpg?w=300&#038;h=222" alt="jhon-akelos" width="300" height="222" /></a></p>
<p><a href="http://dokeoslatinoamerica.files.wordpress.com/2009/09/jhon-akelos.jpg"><a href="http://dokeoslatinoamerica.files.wordpress.com/2009/09/ronny-akelos.jpg"><img class="aligncenter size-medium wp-image-958" title="ronny-akelos" src="http://dokeoslatinoamerica.files.wordpress.com/2009/09/ronny-akelos.jpg?w=300&#038;h=254" alt="ronny-akelos" width="300" height="254" /></a></a></p>
<p>El framework Akelos, aparte de ofrecer funcionalidades basadas en el modelo de Ruby on Rails (mucho más que CakePHP), ofrece una gestión integrada de pruebas automatizadas (generación de esqueletos de pruebas), gestión de internacionalización y creación automatizada de esqueletos de objetos (incluyendo interfaces CRUD &#8211; Create Read Update Delete).</p>
<p>Este capacitación interna viene frente a un proyecto de desarrollo grande en el cual vamos a estar trabajando a lo largo del mes de Septiembre.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dokeoslatinoamerica.wordpress.com/954/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dokeoslatinoamerica.wordpress.com/954/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dokeoslatinoamerica.wordpress.com/954/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dokeoslatinoamerica.wordpress.com/954/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dokeoslatinoamerica.wordpress.com/954/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dokeoslatinoamerica.wordpress.com/954/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dokeoslatinoamerica.wordpress.com/954/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dokeoslatinoamerica.wordpress.com/954/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dokeoslatinoamerica.wordpress.com/954/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dokeoslatinoamerica.wordpress.com/954/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dokeoslatinoamerica.wordpress.com&blog=3963915&post=954&subd=dokeoslatinoamerica&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dokeoslatinoamerica.wordpress.com/2009/09/01/curso-interno-sobre-akelos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4087b5f4b4733f0ca6015be5f79d4ad8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ywarnier</media:title>
		</media:content>

		<media:content url="http://dokeoslatinoamerica.files.wordpress.com/2009/09/jhon-akelos.jpg?w=300" medium="image">
			<media:title type="html">jhon-akelos</media:title>
		</media:content>

		<media:content url="http://dokeoslatinoamerica.files.wordpress.com/2009/09/ronny-akelos.jpg?w=300" medium="image">
			<media:title type="html">ronny-akelos</media:title>
		</media:content>
	</item>
		<item>
		<title>Subir archivos usando AKelos Framework + validaciones respectivas</title>
		<link>http://dokeoslatinoamerica.wordpress.com/2009/05/06/subir-archivos-usando-akelos-framework-validaciones-respectivas/</link>
		<comments>http://dokeoslatinoamerica.wordpress.com/2009/05/06/subir-archivos-usando-akelos-framework-validaciones-respectivas/#comments</comments>
		<pubDate>Wed, 06 May 2009 16:32:02 +0000</pubDate>
		<dc:creator>darkvela</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[técnico]]></category>
		<category><![CDATA[akelos]]></category>
		<category><![CDATA[archivos]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[php5]]></category>

		<guid isPermaLink="false">http://dokeoslatinoamerica.wordpress.com/?p=716</guid>
		<description><![CDATA[En este post el objetivo es conocer un poco más sobre este poderoso Framework y todas sus bondades, para ello en esta sección voy a compartir con ustedes como subir archivos al servidor y las validaciones respectivas (tamaño, tipo, extension, etc).
Primero como todos sabemos interactuamos con la vista para cargar el archivo a subir, en [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dokeoslatinoamerica.wordpress.com&blog=3963915&post=716&subd=dokeoslatinoamerica&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>En este post el objetivo es conocer un poco más sobre este poderoso Framework y todas sus bondades, para ello en esta sección voy a compartir con ustedes como subir archivos al servidor y las validaciones respectivas (tamaño, tipo, extension, etc).</p>
<p>Primero como todos sabemos interactuamos con la vista para cargar el archivo a subir, en formato Akelos:</p>
<p>&lt;p&gt;&lt;label for=&#8221;screenshot_file&#8221;&gt;_{Image}&lt;/label&gt;&lt;br /&gt;<br />
&lt;?= $form_tag_helper-&gt;file_field_tag(&#8216;<strong>screenshot[file]</strong>&#8216;); ?&gt; &lt;i&gt;_{Only accepts JPG, JPEG, PNG or GIF (no animation)}&lt;/i&gt;<br />
&lt;/p&gt;<br />
&lt;p&gt;&lt;label for=&#8221;screenshot_title&#8221;&gt;_{Image description}&lt;/label&gt;&lt;br /&gt;<br />
&lt;?php  echo $active_record_helper-&gt;input(&#8217;screenshot&#8217;, &#8216;title&#8217;,array(&#8216;maxlength&#8217;=&gt;50))?&gt;<br />
&lt;/p&gt;</p>
<p>Luego interactúa el controlador primero guardando el nombre del archivo en BD y enviando los datos del archivo en un array a una función dentro del modelo, recojemos los valores <strong>POST</strong>:</p>
<p>@$fileuploaded = $this-&gt;params['screenshot']['file'];<br />
@$this-&gt;params['screenshot']['file'] = $this-&gt;params['screenshot']['file']['name'];</p>
<p>Enviamos lo datos a la funció <strong>setUploadedFile</strong>:</p>
<p>$this-&gt;Screenshot-&gt;setUploadedFile($fileuploaded);</p>
<p>Seteamos la variable para realizar el <strong>save()</strong> en Akelos:</p>
<p>$this-&gt;Screenshot-&gt;setAttributes($this-&gt;params['screenshot']);</p>
<p>Finalmente ahora el trabajo depende del modelo <strong>screenshot.php:</strong></p>
<p>function setUploadedFile($var) {<br />
$this-&gt;uploadedfile = $var;<br />
}</p>
<p>Ahora validamos:</p>
<p>function validateOnCreate() {<br />
if ($this-&gt;getErrorsOn(&#8216;file&#8217;) === false) {<br />
try{<br />
$safe_extension = array(&#8216;png&#8217;,'jpeg&#8217;,'jpg&#8217;,'gif&#8217;,'JPG&#8217;,'GIF&#8217;);  // solo acepta estas extensiones (bueno para imagenes)</p>
<p>if ($this-&gt;uploadedfile['error'])<br />
throw new Exception($this-&gt;t(&#8216;Error while uploading file!&#8217;));</p>
<p>@$path_parts = pathinfo($this-&gt;uploadedfile['name']);<br />
if (!empty($path_parts['extension'])) {<br />
if (!in_array($path_parts['extension'],$safe_extension))<br />
throw new Exception($this-&gt;t(&#8216;Invalid file type in pictures.&#8217;));  // validamos la extension del file<br />
}</p>
<p>} catch (Exception $e) {<br />
$this-&gt;addError(&#8216;file&#8217;,'&lt;span style=&#8221;color:red&#8221;&gt;&#8217;.$e-&gt;getMessage().&#8217;&lt;/span&gt;&#8217;);<br />
}<br />
}<br />
if ($this-&gt;hasErrors()) return false;<br />
else return true;<br />
}</p>
<p>Ahora creamos una funcion para parsee el nombre del archivo y lo guarde en el campo file (por ejempo) de la BD:</p>
<p>function beforeCreate(){<br />
@$path_parts = pathinfo($this-&gt;uploadedfile['name']);<br />
if (!empty($path_parts['basename'])) {<br />
$name_length = 31 &#8211; strlen($path_parts['extension']);<br />
$this-&gt;uploadedfile['name'] = AK::randomString($name_length).&#8217;.&#8217;.$path_parts['extension'];<br />
$this-&gt;set(&#8216;file&#8217;, $this-&gt;uploadedfile['name']);<br />
}<br />
return true;<br />
}</p>
<p>Ahora usamos una función para guardar el file en nuestro servidor.</p>
<p>function afterCreate(){<br />
$root = &#8216;ruta_path&#8217;;<br />
$target_path_root = $root;<br />
AK::make_dir(substr($target_path_root,0,-1)); // crea el directorio si no existe</p>
<p>$target_path = $target_path_root.basename($this-&gt;uploadedfile['name']);<br />
move_uploaded_file($this-&gt;uploadedfile['tmp_name'], $target_path); // lo copia<br />
return true;<br />
}</p>
<p>Y por últomo una función para elimianr en caso de hacer un <strong>destroy()</strong>:</p>
<p>function beforeDestroy(){<br />
$path = &#8216;ruta_path&#8217;;<br />
@unlink($path.$this-&gt;get(&#8216;file&#8217;));<br />
return true;<br />
}</p>
<p><strong>Ojo: </strong>no cambiar el nombre de las funciones (son propias de Akelos), y si quiero actualizar mi imagen uso en vez de Create -&gt; Update.</p>
<p>Espero que sea de ayuda para aquellos que quieren iniciarse con Akelos, luego explicaré como convertir una imagen a thumbnail.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dokeoslatinoamerica.wordpress.com/716/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dokeoslatinoamerica.wordpress.com/716/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dokeoslatinoamerica.wordpress.com/716/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dokeoslatinoamerica.wordpress.com/716/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dokeoslatinoamerica.wordpress.com/716/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dokeoslatinoamerica.wordpress.com/716/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dokeoslatinoamerica.wordpress.com/716/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dokeoslatinoamerica.wordpress.com/716/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dokeoslatinoamerica.wordpress.com/716/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dokeoslatinoamerica.wordpress.com/716/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dokeoslatinoamerica.wordpress.com&blog=3963915&post=716&subd=dokeoslatinoamerica&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dokeoslatinoamerica.wordpress.com/2009/05/06/subir-archivos-usando-akelos-framework-validaciones-respectivas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/10e8fdede389186a213e54652f8b8319?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">darkvela</media:title>
		</media:content>
	</item>
		<item>
		<title>Traducciones con parámetros</title>
		<link>http://dokeoslatinoamerica.wordpress.com/2009/04/16/traducciones-con-parametros/</link>
		<comments>http://dokeoslatinoamerica.wordpress.com/2009/04/16/traducciones-con-parametros/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 17:49:40 +0000</pubDate>
		<dc:creator>adagioparacuerdas</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[técnico]]></category>
		<category><![CDATA[akelos]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[internationalization]]></category>
		<category><![CDATA[multilanguage]]></category>
		<category><![CDATA[multilenguaje]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://dokeoslatinoamerica.wordpress.com/?p=639</guid>
		<description><![CDATA[La i18n (internationalization) de Akelos (framework PHP) nos permite incluir parámetros en la invocación. A continuación compartimos un ejemplo con ustedes:
.
Trabajaremos con el controlador product
Y el método greeting
archivo app/controller/product_controller.php
function greeting() {
}
.
En la vista (archivo app/views/product/greeting.tpl):
translate( 'Hello %user_name. Justice %question_mark', array('%user_name' =&#62; 'Osho', '%question_mark' =&#62; '?') );
?&#62;
Aquí debemos prestar atención a los parámetros que se indican [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dokeoslatinoamerica.wordpress.com&blog=3963915&post=639&subd=dokeoslatinoamerica&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div id="attachment_643" class="wp-caption aligncenter" style="width: 251px"><a href="http://akelos.org/"><img class="size-full wp-image-643" title="Akelos" src="http://dokeoslatinoamerica.files.wordpress.com/2009/04/akelos-logo.jpg?w=241&#038;h=121" alt="Akelos" width="241" height="121" /></a><p class="wp-caption-text">Akelos</p></div>
<div id="attachment_644" class="wp-caption aligncenter" style="width: 130px"><img class="size-full wp-image-644" title="i18n" src="http://dokeoslatinoamerica.files.wordpress.com/2009/04/i18n-icon.png?w=120&#038;h=120" alt="i18n" width="120" height="120" /><p class="wp-caption-text">i18n</p></div>
<p>La i18n (internationalization) de <a href="http://akelos.org">Akelos</a> (framework PHP) nos permite incluir parámetros en la invocación. A continuación compartimos un ejemplo con ustedes:</p>
<p><span style="color:#ffffff;">.</span></p>
<p>Trabajaremos con el controlador <strong>product</strong></p>
<p>Y el método <strong>greeting</strong></p>
<p>archivo <em>app/controller/product_controller.php</em><br />
<code>function greeting() {</code></p>
<p>}</p>
<p><span style="color:#ffffff;">.</span></p>
<p>En la vista (archivo <em>app/views/product/greeting.tpl</em>):<br />
<code>translate( 'Hello %user_name. Justice %question_mark', array('%user_name' =&gt; 'Osho', '%question_mark' =&gt; '?') );<br />
?&gt;</code><br />
Aquí debemos prestar atención a<strong> los parámetros que se indican con el prefijo de porcentaje</strong> (&#8216;%&#8217;). Y como <strong>segundo parámetro</strong> del método translate tenemos el <strong>arreglo con llaves y valores para los parámetros</strong>.</p>
<p><span style="color:#ffffff;">.</span></p>
<p>En los archivos de traducción se puede ser flexibles con la presencia y posición de las variables al interior de las expresiones.</p>
<p>Ej:</p>
<p>archivo <em>app/locales/product/en.php</em><br />
<code>$dictionary['Hello %user_name. Justice %question_mark']='Hello %user_name. Justice %question_mark';</code></p>
<p>archivo <em>app/locales/product/es.php</em><br />
<code>$dictionary['Hello %user_name. Justice %question_mark']='%user_name e. Justicia chu.';</code></p>
<p>Obtendríamos como resultado:<br />
- Hello Joseph. Justice?<br />
- Joseph e. Justicia chu.</p>
<p>De esta forma podemos ubicar las palabras en el lugar correspondiente de acuerdo a las reglas de cada lenguaje. Incluso prescindir de elementos como ciertos signos de puntuación que sólo son válidos en determinados idiomas.</p>
<p>También podemos reutilizar expresiones ya traducidas, así evitamos las variaciones en la traducción de frases muy similares. La clave es identificar patrones en las expresiones, cuando en la práctica escribimos repetidas veces lo mismo.</p>
<p>- Ha fallado el comando DELETE.<br />
- Command EXECUTE has failed.</p>
<p>Y podemos dar por cerrada una etapa de traducción antes de terminar el proceso de desarrollo de la lógica de una solución.</p>
<p>- Le quedan 2 tareas por revisar.<br />
- 1 task to do.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dokeoslatinoamerica.wordpress.com/639/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dokeoslatinoamerica.wordpress.com/639/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dokeoslatinoamerica.wordpress.com/639/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dokeoslatinoamerica.wordpress.com/639/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dokeoslatinoamerica.wordpress.com/639/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dokeoslatinoamerica.wordpress.com/639/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dokeoslatinoamerica.wordpress.com/639/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dokeoslatinoamerica.wordpress.com/639/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dokeoslatinoamerica.wordpress.com/639/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dokeoslatinoamerica.wordpress.com/639/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dokeoslatinoamerica.wordpress.com&blog=3963915&post=639&subd=dokeoslatinoamerica&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dokeoslatinoamerica.wordpress.com/2009/04/16/traducciones-con-parametros/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a93b767a129cdaca73bb2772fc1c17f3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">adagioparacuerdas</media:title>
		</media:content>

		<media:content url="http://dokeoslatinoamerica.files.wordpress.com/2009/04/akelos-logo.jpg" medium="image">
			<media:title type="html">Akelos</media:title>
		</media:content>

		<media:content url="http://dokeoslatinoamerica.files.wordpress.com/2009/04/i18n-icon.png" medium="image">
			<media:title type="html">i18n</media:title>
		</media:content>
	</item>
		<item>
		<title>Introducción a Akelos Framework</title>
		<link>http://dokeoslatinoamerica.wordpress.com/2009/03/20/introduccion-a-akelos-framework/</link>
		<comments>http://dokeoslatinoamerica.wordpress.com/2009/03/20/introduccion-a-akelos-framework/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 22:48:37 +0000</pubDate>
		<dc:creator>jhp1411</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[akelos]]></category>
		<category><![CDATA[Bermi Ferrer]]></category>
		<category><![CDATA[framewok]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://dokeoslatinoamerica.wordpress.com/?p=510</guid>
		<description><![CDATA[Quiero compartir mi experiencia ya que desde hace meses atrás empece a involucrarme en el mundo de los framework y en especial con Akelos Framewok y a sido una gran experiencia ya que facilita y recude muchas lineas de codigo a la hora de desarrollar aplicaciones.
en este post empésaremos comentaremos el origen y algunos conceptos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dokeoslatinoamerica.wordpress.com&blog=3963915&post=510&subd=dokeoslatinoamerica&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Quiero compartir mi experiencia ya que desde hace meses atrás empece a involucrarme en el mundo de los framework y en especial con Akelos Framewok y a sido una gran experiencia ya que facilita y recude muchas lineas de codigo a la hora de desarrollar aplicaciones.</p>
<p>en este post empésaremos comentaremos el origen y algunos conceptos basicos de este potente framewoks.</p>
<p><strong>Akelos PHP Framework</strong> es una versión para PHP de la plataforma de desarrollo Ruby on Rails. Al igual que Rails, proclama incrementar la velocidad y facilidad con la que se pueden desarrollar aplicaciones web que utilizan bases de datos.</p>
<p>Combina la simplicidad con la posibilidad de desarrollar aplicaciones escribiendo menos código que con otros frameworks y con un mínimo de configuración, ofreciendo también la posibilidad de crear esqueletos de código (Scaffolds) para acelerar este proceso.<br />
Abreviado generalmente como Akelos, es un proyecto de código abierto escrito en el lenguaje de programación PHP. Las aplicaciones escritas utilizandoAkelos siguen paradigma de la arquitectura Modelo Vista Controlador (MVC).</p>
<p><object type='application/x-shockwave-flash' wmode='transparent' data='http://static.slideshare.net/swf/ssplayer2.swf?id=280660&#038;doc=introduccion-al-akelos-php-framework-1203930004188103-4' width='450' height='369'><param name='movie' value='http://static.slideshare.net/swf/ssplayer2.swf?id=280660&#038;doc=introduccion-al-akelos-php-framework-1203930004188103-4' /><param name='allowFullScreen' value='true' /><param name='allowScriptAccess' value='always' /></object><br />
Akelos a sido desarrollado por Bermi Ferrer, este framework soporta Multiplataforma y la gran ventaja es que cuenta con una licencia LGPL.</p>
<p>Aqui les comparto un enlace externo donde entrevistan que le hicieron a Bermi Ferrer.</p>
<p><a title="Entrevista" href="http://loogic.com/entrevista-a-bermi-ferrer-creador-de-akelos/" target="_blank">Entrevista</a></p>
<p><a title="sitio oficial" href="http://www.akelos.org" target="_blank">Site Akelos </a></p>
<p>Nota: en nuestro siguiente post comensaremos a iniciarnos en el mundo del desarrollo de las aplicaciones con akelos desde lo basico a lo complejo. espero sus comentarios y aportes que siempre seran vienvenidos.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dokeoslatinoamerica.wordpress.com/510/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dokeoslatinoamerica.wordpress.com/510/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dokeoslatinoamerica.wordpress.com/510/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dokeoslatinoamerica.wordpress.com/510/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dokeoslatinoamerica.wordpress.com/510/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dokeoslatinoamerica.wordpress.com/510/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dokeoslatinoamerica.wordpress.com/510/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dokeoslatinoamerica.wordpress.com/510/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dokeoslatinoamerica.wordpress.com/510/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dokeoslatinoamerica.wordpress.com/510/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dokeoslatinoamerica.wordpress.com&blog=3963915&post=510&subd=dokeoslatinoamerica&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dokeoslatinoamerica.wordpress.com/2009/03/20/introduccion-a-akelos-framework/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0dddd724f84f80b9b71a70f28c4ef663?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jhp1411</media:title>
		</media:content>
	</item>
		<item>
		<title>Algunos frameworks para PHP más usados</title>
		<link>http://dokeoslatinoamerica.wordpress.com/2009/01/14/algunos-frameworks-para-php-mas-usados/</link>
		<comments>http://dokeoslatinoamerica.wordpress.com/2009/01/14/algunos-frameworks-para-php-mas-usados/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 22:06:28 +0000</pubDate>
		<dc:creator>cfasanando</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[akelos]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[prado]]></category>
		<category><![CDATA[programacion]]></category>

		<guid isPermaLink="false">http://dokeoslatinoamerica.wordpress.com/?p=255</guid>
		<description><![CDATA[A continuación las características de algunos de los Frameworks para PHP más usados.
Zend Frameworks
El Zend Frameworks es simple, no necesita instalación especial, requiere PHP 5 e incorpora el patrón MVC.
Se debe descargar y copiarlo hacia nuestro servidor local, veamos a través de un pequeño ejemplo cómo podemos crear un lector de RSS. Los ficheros que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dokeoslatinoamerica.wordpress.com&blog=3963915&post=255&subd=dokeoslatinoamerica&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>A continuación las características de algunos de los Frameworks para PHP más usados.</p>
<h3>Zend Frameworks</h3>
<p>El Zend Frameworks es simple, no necesita instalación especial, requiere PHP 5 e incorpora el patrón MVC.</p>
<p>Se debe <a href="http://framework.zend.com/download">descargar</a> y copiarlo hacia nuestro servidor local, veamos a través de un pequeño ejemplo cómo podemos crear un lector de RSS. Los ficheros que creemos podemos copiarlos dentro del directorio “<code>library</code>”.</p>
<div class="codigo">
<pre>&lt;?php
// Componente requerido
require_once 'Zend/Feed.php';

// Incluimos la dirección de nuestro fichero rss que deseamos importar
$feed = Zend_Feed::import('http://localhost/rss.php');

// Se recorrerán todos los item del fichero, mostrando el titulo y el enlace
foreach ($feed-&gt;items as $item) {
    echo "&lt;p&gt;" . $item-&gt;title() . "&lt;br /&gt;";
    echo $item-&gt;link()  . "&lt;/p&gt;";
}
?&gt;</pre>
</div>
<h3>Symfony</h3>
<p>Diseñado con el objetivo de optimizar la creación de las aplicaciones web, con el uso de sus características. Posee una librería de clases que permiten reducir el tiempo de desarrollo.</p>
<p>Symfony está desarrollado en PHP5, se puede utilizar en plataformas *nix (Unix, Linux) y Windows. Requiere de una instalación, configuración y líneas de comando, incorpora el patrón MVC, soporta AJAX, plantillas y un gran número de bases de datos.</p>
<p>Luego de <a href="http://www.symfony-project.com/get/sf_sandbox.tgz">descargar</a>, debemos desempaquetar hacia un directorio dentro de nuestro servidor web. Puede configurar el archivo “<code>symfony.bat</code>” e introducir la ruta completa del archivo “<code>php.exe</code>” en la línea 34.</p>
<div class="codigo">
<pre>set PHP_COMMAND=c:/xampp/xampp/php/php.exe</pre>
</div>
<p>Si nos encontramos en el directorio “<code>sf_sandbox</code>” podemos ir a las líneas de comando y conocer la versión del framework: <code>symfony -V. </code>Podemos verificar la creación de nuestro proyecto introduciendo en el navegador, por ejemplo: <code>http://localhost/sf_sandbox/web/frontend_dev.php</code></p>
<p>La estructura de los directorios es:</p>
<div class="codigo">
<pre>sf_sandbox/ // directorio del proyecto
 apps/      // archivos de la aplicación
 batch/     // procesos
 cache/     // cache
 config/    // configuración
 data/      // archivos y códigos de datos
 doc/       // documentación
 lib/       // librerías y códigos de proposito general
 log/       // archivos de log
 plugins/   // plugins
 test/      // tests
 web/       // directorio público</pre>
</div>
<p>Si deseamos crear un weblog debemos crear el archivo “<code>schema.yml</code>” en el directorio “<code>sf_sandbox/config/</code>”. Después de haberlo creado podemos usar las siguientes líneas de comando dentro del directorio “<code>sf_sandbox/</code>”:</p>
<ul>
<li>symfony propel-generate-crud frontend post Post : crear y listar Post.</li>
<li>symfony propel-generate-crud frontend comment Comment : crear y listar comentarios.</li>
<li>symfony clear-cache : limpiar la cache.</li>
</ul>
<p>Los modulos serán creados en “<code>sf_sandbox\apps\frontend\modules\</code>”. Podemos ver el resultado:</p>
<ul>
<li>http://localhost/sf_sandbox/web/frontend_dev.php/post</li>
<li>http://localhost/sf_sandbox/web/frontend_dev.php/comment</li>
</ul>
<p>Se puede acceder a los archivos y modificar las plantillas a nuestro gusto.</p>
<h3>Seagull</h3>
<p>El framework Seagull, nos permite realizar una programación modular, posee un Sistema de Gestión de Contenidos (CMS).</p>
<p>Entre sus características de encuentran su compatibilidad con PHP 4 y PHP 5, ORM integrado, incorpora el patrón MVC, uso de templates, soporte para múltiples bases de datos, validación de datos, alto nivel de configuración, autentificación, integración de librerías PEAR.</p>
<p>Debemos descargar el framework, luego descomprimirlo hacia un directorio dentro de nuestro servidor web. Luego introducimos la dirección en nuestro navegador para realizar su instalación. Ejemplo: <code>http://localhost/seagull/www/</code>.</p>
<p>Debemos completar los 6 pasos siguientes:</p>
<ul>
<li>Aceptar la licencia</li>
<li>Autorización</li>
<li>Debemos crear en el directorio el archivo “<code>AUTH.txt</code>” que contenga el código generado o descargarlo en “<code>seagull/</code>”. Si se crea correctamente podremos continuar al siguiente paso.</li>
<li>Detección: aquí se detectará los módulos disponibles, así como la configuración y versión de PHP.</li>
<li>Conexión con las bases de datos: debemos configurar los datos necesarios para realizar la conexión con el servidor de base de datos.</li>
<li>Configuración de la base de datos: introducir el nombre de la base de datos. Se puede utilizar una existente.</li>
<li>Creación del Usuario Administrador: se creará la cuenta de usuario que utilizaremos para administrar a Seagull Framework.</li>
</ul>
<p>Luego de Finalizar su instalación podemos crear contenidos visitando <code>http://localhost/ seagull/www/</code> e introduciendo el usuario y clave de administración.</p>
<h3>Prado</h3>
<p>Prado está basado en componentes eventos con el objetivo de acelerar el desarrollo de aplicaciones web usando PHP 5.</p>
<p>El concepto del desarrollo de aplicaciones en Prado es diferente, se utilizan componentes, eventos y propiedades en vez de procedimientos, URL y parámetros.</p>
<p>Este Framework combina especificaciones en un archivo XML, plantillas HTML y una clase PHP. Prado, cuenta con soporte para AJAX, validación, autentificación, plantillas, múltiples bases de datos.</p>
<p>Entre los beneficios que podemos encontrar para el desarrollo de aplicaciones web se encuentran:</p>
<ul>
<li>Reutilización: los códigos y componentes pueden ser reutilizados.</li>
<li>Fácil uso: la creación y uso de componentes es fácil.</li>
<li>Funcionamiento: utiliza una técnica de caché para asegurar el funcionamiento de aplicaciones basadas en el.</li>
<li>Integración: permite la separación del contenido y la presentación.</li>
</ul>
<p>Podemos <a href="http://www.xisc.com/download/">descargar</a> y descomprimir Prado en un directorio, luego acceder al siguiente demo.</p>
<h3>CodeIgniter</h3>
<p>CodeIgniter es un buen framework, utilizado por una gran comunidad de usuarios. Construido para codificadores PHP que necesitan una herramienta de desarrollo fácil para crear aplicaciones web simples y elegantes.</p>
<p>Entre sus características podemos encontrar su compatibilidad con PHP 4 y PHP 5, incorpora el modelo MVC, soporte para múltiples bases de datos, plantillas, validaciones, no requiere instalación, podemos encontrar una librería con un gran número de clases.</p>
<p>Podemos <a href="http://codeigniter.com/download.php">descargarlo</a> y descomprimir este paquete dentro un directorio en nuestro servidor web.</p>
<h4>Cómo instalar CodeIgniter:</h4>
<p>Debemos acceder al archivo “<code>application/config/config.php</code>” e introducir la URL de nuestro sitio. Si realizaremos conexiones con nuestro servidor de base de datos necesitaremos configurar el archivo “<code>application/config/database.php</code>” e introducir los datos necesarios para realizar la conexión como son: host del servidor, usuario, contraseña, nombre de la base de datos, driver a utilizar (mysql, postgre, oracle, etc).</p>
<h4>Crea tu primera aplicación con CodeIgniter:</h4>
<p>CodeIgniter framework contiene un directorio donde se crearán las vistas “<code>view</code>” y los controles “<code>controllers</code>”. Crearemos nuestra primera vista en “<code>application/views/</code>” y la llamaremos “<code>aplicacionview.php</code>” con el contenido:</p>
<div class="codigo">
<pre>&lt;html&gt;
&lt;head&gt;
&lt;title&gt;&lt;?=$title;?&gt;&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;&lt;?=$heading;?&gt;&lt;/h1&gt;
&lt;h3&gt;Mi aplicación&lt;/h3&gt;
&lt;ul&gt;
&lt;?php foreach($todo_list as $item):?&gt;
&lt;li&gt;&lt;?=$item;?&gt;&lt;/li&gt;
&lt;?php endforeach;?&gt;
&lt;/ul&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p>Luego crearemos el control para esta vista en “<code>application/controller/</code>” llamado “<code>aplicacion.php</code>” con el siguiente código:</p>
<div class="codigo">
<pre>&lt;?php
//Aplicación es el nombre del control
class Aplicación extends Controller {

	function index()
	{
		//utilizamos un array
		$data['todo_list'] = array('Chat', 'Encuesta', 'Correo');
		// títulos y bienvenida de la aplicación
		$data['title'] = "Mi aplicación";
		$data['heading'] = "Bienvenidos a mi aplicación";

//nombre de la vista que deseamos cargar
		$this-&gt;load-&gt;view('aplicacionview', $data);
	}
}
?&gt;</pre>
</div>
<p>Para ver nuestra aplicación solo basta con introducir en la URL: <code>http://localhost/CodeIgniter/index.php/aplicacion/</code></p>
<h3>CakePHP</h3>
<p>CakePHP<a href="http://www.cakephp.org/"> </a>es un Framework similar a CodeIgniter de desarrollo rápido. Es una estructura de librerías y clases para programar aplicaciones web. Su base es el Framework de Ruby on Rails.</p>
<p>Nos brinda la posibilidad de interactuar con las base de datos, usando ActiveRecord. Incorpora el patrón MVC, compatible con PHP4 y PHP5, URLs amigables, Soporta AJAX, incluye caching, validación.</p>
<p>Debemos <a href="http://cakephp.org/downloads">descargarlo</a>, descomprimirlo y hacer un directorio. La estructura de directorios es la siguiente:</p>
<div class="codigo">
<pre>.../(Directorio donde se encuentra instalado)
    /app
        /config
        /controllers
        /models
        /plugins
        /tmp
        /vendors
        /views
        /webroot (se incluirán imagines, javascript, css)
        .htaccess
        index.php
    /cake
    /vendors
    .htaccess
    index.php</pre>
</div>
<p>El directorio “<code>app/tmp/</code>” debe tener permiso de escritura. Podemos observar el sitio en <code>http://localhost/cake/</code>. Para editar la página es necesario crear un documento dentro del directorio “<code>/app/views/pages/</code>” con el nombre “<code>home.html</code>“:</p>
<div class="codigo">
<pre>&lt;h1&gt;PRUEBA&lt;/h1&gt;</pre>
</div>
<p>Para modificar el diseño se debe crear un documento en “<code>/app/views/layouts/</code>” con el nombre “<code>default.html</code>”:</p>
<div class="codigo">
<pre>&lt;html&gt;
&lt;head&gt;
&lt;title&gt;&lt;?php echo $title_for_layout?&gt;&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;!-- Aquí se mostrarán las vistas --&gt;
&lt;?php echo $content_for_layout ?&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p>También podemos hacer uso de controles, modelos, entre otros.</p>
<h3>PHP on TRAX</h3>
<p>El PHP on TRAX es compatible con PHP5, incluye el patrón MVC, incluye validación y AJAX, múltiples bases de datos. Podemos <a href="http://www.phpontrax.com/downloads">descargarlo</a> y descomprimirlo hacia un directorio en nuestro servidor web.</p>
<h3>Zoop Framework</h3>
<p>Zoop es un Framework PHP Orientado a Objeto basado en el modelo MVC, sus desarrolladores lo caracterizan por ser rápido, eficiente y fácil destinado para programadores.</p>
<p>Requiere PHP 4.3.10 o superior, además podemos contar con librerías para “PEAR”. Cuenta con soporte e integración con AJAX, caching, validación, sistemas de plantillas Smarty, creación de PDF, plantillas para el envío de correo electrónico usando SMTP, cuenta con compatibilidad con múltiples base de datos.</p>
<p>Debemos <a href="http://zoopframework.com/ss.4/6941/download.html">descargar</a> los archivos que encontramos en el repositorio y descomprimirlos hacia un directorio de nuestro servidor web. Los usuarios pueden encontrar en su comunidad: blog, foros de discusión, listas de correo, documentación, video demostraciones, ejemplos sobre el uso de las librerías “Prototype”.</p>
<p>Luego nos permite acceder al directorio de “<code>skeleton</code>” y configurar el archivo “<code>config.php</code>”, donde debemos definir la ruta del framework: define(’zoop_dir’, app_dir . “c:/apache/htdocs/zoop”);</p>
<h3>WACT</h3>
<p>Por sus siglas en ingles “Web Application Component Toolkit” es un frameworks para el desarrollo de aplicaciones web.</p>
<p>Facilita un aprovechamiento modular, sus componentes permiten la integración con otras aplicaciones web. Implementa el patrón MVC. La versión actual de WACT requiere PHP 5, por ahora solo está disponible desde Subversión.</p>
<h3>AKELOS PHP FRAMEWORK</h3>
<p>Es una plataforma de desarrollo de aplicaciones web basado en el MVC (Modelo Vista Controlador), patrón de diseño. Sobre la base de las buenas prácticas, que lo permite:</p>
<p>1.- Escribir opiniones usando Ajax fácilmente<br />
2.- Control de las solicitudes y las respuestas a través de un controlador<br />
3.- Gestión de aplicaciones internacionalizadas<br />
4.- Comunicar los modelos y la base de datos mediante simples convenciones</p>
<p>Su Akelos puede ejecutar aplicaciones basadas en la mayoría de los proveedores de servicios de alojamiento compartido, ya que sólo requiere Akelos PHP estará disponible en el servidor. Esto significa que el Akelos PHP Framework es el candidato ideal para la distribución independiente de las aplicaciones web, ya que no requiere ningun estándar para ejecutar la configuración de PHP. <a href="http://akelos.org/download" target="_blank">Descargar Akelos</a>.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dokeoslatinoamerica.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dokeoslatinoamerica.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dokeoslatinoamerica.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dokeoslatinoamerica.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dokeoslatinoamerica.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dokeoslatinoamerica.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dokeoslatinoamerica.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dokeoslatinoamerica.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dokeoslatinoamerica.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dokeoslatinoamerica.wordpress.com/255/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dokeoslatinoamerica.wordpress.com&blog=3963915&post=255&subd=dokeoslatinoamerica&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dokeoslatinoamerica.wordpress.com/2009/01/14/algunos-frameworks-para-php-mas-usados/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7061e9baf0994870dac058c9b7edc517?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cfasanando</media:title>
		</media:content>
	</item>
		<item>
		<title>Como solucionar el conflicto entre JQuery y Prototype usando Akelos PHP Framework</title>
		<link>http://dokeoslatinoamerica.wordpress.com/2009/01/08/como-solucionar-el-conflicto-entre-jquery-y-prototype-usando-akelos-php-framework/</link>
		<comments>http://dokeoslatinoamerica.wordpress.com/2009/01/08/como-solucionar-el-conflicto-entre-jquery-y-prototype-usando-akelos-php-framework/#comments</comments>
		<pubDate>Thu, 08 Jan 2009 16:18:25 +0000</pubDate>
		<dc:creator>darkvela</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[técnico]]></category>
		<category><![CDATA[akelos]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Prototype]]></category>

		<guid isPermaLink="false">http://dokeoslatinoamerica.wordpress.com/?p=218</guid>
		<description><![CDATA[Como sabemos JQuery y Prototype son  frameworks escritos en Javascript que permiten simplificar la manera de interactuar con documentos HTML orientándose al desarrollo sencillo y dinámico de aplicaciones web.
Akelos PHP Framework es una plataforma de desarrollo de aplicaciones web basado en el MVC (Modelo Vista Controlador) desarrollado por Bermi Ferrer, el cual contiene las [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dokeoslatinoamerica.wordpress.com&blog=3963915&post=218&subd=dokeoslatinoamerica&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Como sabemos <strong>JQuery</strong> y <strong>Prototype</strong> son  frameworks escritos en Javascript que permiten simplificar la manera de interactuar con documentos HTML orientándose al desarrollo sencillo y dinámico de aplicaciones web.</p>
<p><strong>Akelos PHP Framework</strong> es una plataforma de desarrollo de aplicaciones web basado en el MVC (Modelo Vista Controlador) desarrollado por <strong>Bermi Ferrer</strong>, el cual contiene las buenas prácticas permitiendo simplificar el tiempo de implementación.</p>
<p>Bueno después de esta pequeña introducción, vamos a nuestro caso:</p>
<p>A veces queremos manejar eventos, desarrollar animaciones y agregar interacción con la tecnología AJAX a nuestras aplicaciones web y para ello decidimos usar <strong>JQuery</strong>, pero como Akelos por defecto usa el <strong>Prototype</strong> hay un probrema de compatibilidad, entonces para poder solucionar este problema:</p>
<p>Para nuestro ejemplo nos vamos al directorio <strong>view / layouts</strong> porsupuesto dentro de nuestra aplicación y seleccionamos <strong>main.tpl</strong> (puede ser otro tpl, pero se recomienda que sea en el principal).<br />
La librería Prototype ya está funcionando así que la llamamos:</p>
<p><em> <strong>&lt;%= javascript_include_tag &#8216;prototype&#8217; %&gt;<br />
&lt;%= javascript_include_tag &#8217;scriptaculous&#8217; %&gt;<br />
&lt;%= javascript_include_tag &#8216;editam&#8217; %&gt;</strong></em></p>
<p>Luego después de haber instalado nuestra librería JQuery en (se recomienda en este directorio) : <strong>public / javascripts / jquery.js</strong> la llamamos en nuestro tpl:</p>
<p><em><strong>&lt;%= javascript_include_tag &#8216;jquery&#8217; %&gt;<br />
&lt;%= javascript_include_tag &#8216;treeview&#8217; %&gt;</strong> (un plugin jquery de ejemplo)</em></p>
<p>Al final de las llamadas Prototype y Jquery ingresamos esta pequeña línea de código:</p>
<p style="margin-bottom:0;"><em><strong>&lt;script&gt;jQuery.noConflict();&lt;/script&gt;</strong></em></p>
<p>Ah y no te olvides de cambiar el caracter <strong>&#8220;#&#8221;</strong> por <strong>&#8220;jQuery&#8221;</strong>, por ejemplo:</p>
<p><em><strong>Antes:</strong></em></p>
<p>function change_visibility(url,container){<br />
<strong>#</strong>(container).html(&#8216;&lt;b style=&#8221;color:blue&#8221;&gt;_{Updating}&#8230;&lt;/b&gt;&#8217;);<br />
<strong>#</strong>(container).load(url);<br />
}</p>
<p><em><strong>Despues:</strong></em></p>
<p>function change_visibility(url,container){<br />
<strong>jQuery</strong>(container).html(&#8216;&lt;b style=&#8221;color:blue&#8221;&gt;_{Updating}&#8230;&lt;/b&gt;&#8217;);<br />
<strong>jQuery</strong>(container).load(url);<br />
}</p>
<p>Y ya está solucionado el problema de trabajar con estos dos grandes frameworks.</p>
<p><em><strong>Nota: Todas las llamadas a los scripts se deben ingresar antes del script que evita el conflicto.</strong></em></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dokeoslatinoamerica.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dokeoslatinoamerica.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dokeoslatinoamerica.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dokeoslatinoamerica.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dokeoslatinoamerica.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dokeoslatinoamerica.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dokeoslatinoamerica.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dokeoslatinoamerica.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dokeoslatinoamerica.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dokeoslatinoamerica.wordpress.com/218/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dokeoslatinoamerica.wordpress.com&blog=3963915&post=218&subd=dokeoslatinoamerica&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dokeoslatinoamerica.wordpress.com/2009/01/08/como-solucionar-el-conflicto-entre-jquery-y-prototype-usando-akelos-php-framework/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/10e8fdede389186a213e54652f8b8319?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">darkvela</media:title>
		</media:content>
	</item>
		<item>
		<title>Akelos : Time Zones</title>
		<link>http://dokeoslatinoamerica.wordpress.com/2008/08/01/akelos-time-zones/</link>
		<comments>http://dokeoslatinoamerica.wordpress.com/2008/08/01/akelos-time-zones/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 15:38:13 +0000</pubDate>
		<dc:creator>danielphp</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[proyectos]]></category>
		<category><![CDATA[técnico]]></category>
		<category><![CDATA[akelos]]></category>
		<category><![CDATA[desarrollo web]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://dokeoslatinoamerica.wordpress.com/?p=68</guid>
		<description><![CDATA[Primero tenemos que tener en cuenta que debemos activar &#8220;getters&#8221; and &#8220;setters&#8221;, que son metodos con los cuales podemos procesar los atributos de un objeto, antes de grabarlos o llamarlos. Para activar getters and setters debe escribir la siguiente linea en config.php:

define(&#8216;AK_ACTIVE_RECORD_ENABLE_AUTOMATIC_SETTERS_AND_GETTERS&#8217;, true);
Para manejar TimeZones, debemos tener un punto de referencia absoluto, por eso vamos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dokeoslatinoamerica.wordpress.com&blog=3963915&post=68&subd=dokeoslatinoamerica&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Primero tenemos que tener en cuenta que debemos activar &#8220;getters&#8221; and &#8220;setters&#8221;, que son metodos con los cuales podemos procesar los atributos de un objeto, antes de grabarlos o llamarlos. Para activar getters and setters debe escribir la siguiente linea en config.php:<span style="color:#0000ff;"><br />
</span></p>
<p><span style="color:#0000ff;">define(&#8216;AK_ACTIVE_RECORD_ENABLE_AUTOMATIC_SETTERS_AND_GETTERS&#8217;, true)</span>;</p>
<p>Para manejar TimeZones, debemos tener un punto de referencia absoluto, por eso vamos a guardar todas las fechas en GMT y formato datetime (SQL), lo guardamos en formato datetime y no timestamp para aprovechar las funciones SQL (tipo DateAdd o Datediff dependiendo de la plataforma)  y para mayor entendimiento en caso de una revision visual de la base de datos.</p>
<p>Hay que tener en cuenta que la conversion de fechas solo lo haremos desde el servidor, osea no vamos a cambiar nada en la base de datos, solo definir campos datetimes.</p>
<p>Para convertir una fecha a GMT necesitamos 2 variables, la FECHA y el TIMEZONE del usuario y lo mismo si queremos convertir la fecha GMT (sacada de la base de datos) al Timezone del usuario. Akelos viene integrado con una clase muy util llamada AKTimeZone, esta clase nos ayudara a facilitar el proceso.</p>
<p>Entonces lo primero que tenemos que hacer es llamar a la clase AKTimeZone e inicializar un objeto AKTimezone que nos ayudara a hacer las conversiones.</p>
<p>Vamos al archivo shared_model.php y incluiremos la clase AKTimezone y para inicializar el objeto lo haremos dentro del metodo init(). Hay que tener en cuenta que cuando incluimos la clase AKTimezone automaticamente cambia el timezone del sistema a GMT.</p>
<p><span style="color:#0000ff;">require_once(AK_LIB_DIR.DS.&#8217;AkLocalize&#8217;.DS.&#8217;AkTimeZone.php&#8217;);<br />
require_once(AK_LIB_DIR.DS.&#8217;AkActiveRecord.php&#8217;);</span></p>
<p><span style="color:#0000ff;">class ActiveRecord extends AkActiveRecord<br />
{<br />
var $my_timezone;</span></p>
<p><span style="color:#0000ff;">function init($attributes)<br />
{</span></p>
<p><span style="color:#0000ff;">if(@empty($_SESSION['timezone']['name'])) $_SESSION['timezone']['name'] = &#8216;UTC&#8217;;<br />
$_AkCurrentZone = new AkTimeZone();<br />
$this-&gt;my_timezone =&amp; $_AkCurrentZone-&gt;create(</span><span style="color:#0000ff;">$_SESSION['timezone']['name']</span><span style="color:#0000ff;">);</span></p>
<p><span style="color:#0000ff;">return parent::init($attributes);</span></p>
<p><span style="color:#0000ff;">}</span></p>
<p>Ten en cuenta que debes tener a la mano el Timezone del usuario en este caso yo lo tengo en la variable <span style="color:#0000ff;">$_SESSION['timezone']['name']<span style="color:#000000;">, con esto ya puedes crear el objeto que nos ayudara para las conversiones.</span><br />
</span></p>
<p>Dado que <strong>AKTimezone configura el sistema en GMT</strong>, no es necesario crear ningun metodo para guardar en GMT las fechas generadas por created_at o updated_at.</p>
<p>Lo que si tenemos que hacer es <strong>crear un Getter para cada fecha GMT que queremos mostrar</strong> con el Timezone del usuario actual. Aqui un ejemplo de mostrar created_at en el Timezone actual del usuario, fijate que <strong>el getter debe ser escrito de manera CamelCase</strong>.</p>
<p><span style="color:#0000ff;">function getCreatedAt(){<br />
$var = $this-&gt;created_at;<br />
$converted = gmmktime(substr($var,11,2),substr($var,14,2),substr($var,17,2),substr($var,5,2),substr($var,8,2),substr($var,0,4));<br />
return gmdate(&#8220;Y-m-d H:i:s&#8221;,$this-&gt;my_timezone-&gt;adjust($converted));//my time<br />
}</span></p>
<p>Para llamar un getter en el View hay 2 formas, presta atención que los <strong>getters and setters solo son ejecutados con este tipo de llamada</strong>s:</p>
<p><span style="color:#0000ff;">$sale-&gt;get(&#8216;created_at&#8217;)<br />
{sale.created_at?}</span></p>
<p>Este tipo de llamada <strong>NO activaran los getters and setters</strong>:</p>
<p><span style="color:#ff0000;">$sale-&gt;created_at</span></p>
<p>En el caso que tengamos un campo en un formulario, donde el usuario ingresa una fecha, tenemos que convertir la fecha ingresada a GMT y despues ajustarla usando el Timezone del usuario, pero esto lo haremos solo cuando vaya a ser grabado en la base de datos. Aqui un ejemplo suponiendo que el campo se llame &#8220;user_input_date&#8221; :</p>
<p><span style="color:#0000ff;">function beforeSave(){<br />
$var = $this-&gt;user_input_date;<br />
$converted = gmmktime(substr($var,11,2),substr($var,14,2),substr($var,17,2),substr($var,5,2),substr($var,8,2),substr($var,0,4));</span><span style="color:#0000ff;"> $this-&gt;user_input_date = gmdate(&#8220;M d Y H:i:s&#8221;,$this-&gt;my_timezone-&gt;unadjust($converted));<br />
return true;<br />
}</span></p>
<p>Y con esto cubrimos el manejo de zonas horarias (Time Zones) en akelos.</p>
<h2><strong>Extendido</strong></h2>
<p>1. Si estas preocupado por TimeZones con DST, no debes tener preocupaciones, la clase AKTimeZone deja que el sistema operativo se encargue de dar el &#8220;offset&#8221; correcto para el timezone usado, osea tu única preocupación es que el sistema operativo del servidor tenga sus librerias de zonas horarias actualizadas.</p>
<p>2. <span style="color:#0000ff;"><span style="color:#000000;"><span style="color:#0000ff;">$_SESSION['timezone']['name'] </span>contiene el nombre del timezone (ejm: America/Chicago, America/Costa Rica), eso significa que cada usuario debe tener un campo en la base de datos con su respectivo nombre de Timezone. Si  tienes un sistema de usuarios y solo tienes guardado el offset de cada usuario (ejm: -09:00,+05:00), esta información no es suficiente en el mundo real, ya que cada pais y region tiene sus propias reglas horarias y reglas DST, por lo cual es obsoleto guardar solo el offset, la manera correcta es guardar la zona horaria.</span></span></p>
<p>3. AKTimeZone viene con algunos metodos bastante utiles. por ejemplo toString() el cual imprimira : &#8220;(GMT+01:10) TimezoneActual&#8221;, si quieres usarlo con los ejemplos previos, puedes usarlo asi:</p>
<p><span style="color:#0000ff;"> &lt;div align=&#8221;right&#8221;&gt;_{Current Time Zone} : &lt;?php echo $my_timezone-&gt;toString() ?&gt;&lt;/div&gt;</span></p>
<p>En caso quieras generar una lista &#8220;select&#8221; de TimeZones puedes usar el metodo getTimezones() que devolvera un array de los timezones. para generar el codigo akelos completo puedes hacerlo asi:<br />
<span style="color:#0000ff;">&lt;? echo $form_options_helper-&gt;select(&#8216;user&#8217;, &#8216;timezone&#8217;, array_keys($my_timezone-&gt;getTimezones())); ?&gt;</span></p>
<p>4. Debes saber que la clase AKTimeZone ya viene con timezones definidos lo cual seria un problema si mas adelante aparece un timezone nuevo, por lo cual debes tomar las medidas necesarias para enfrentar estas situaciones como por ejemplo teniendo una tabla de timezones en la base de datos.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dokeoslatinoamerica.wordpress.com/68/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dokeoslatinoamerica.wordpress.com/68/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dokeoslatinoamerica.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dokeoslatinoamerica.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dokeoslatinoamerica.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dokeoslatinoamerica.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dokeoslatinoamerica.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dokeoslatinoamerica.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dokeoslatinoamerica.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dokeoslatinoamerica.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dokeoslatinoamerica.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dokeoslatinoamerica.wordpress.com/68/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dokeoslatinoamerica.wordpress.com&blog=3963915&post=68&subd=dokeoslatinoamerica&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dokeoslatinoamerica.wordpress.com/2008/08/01/akelos-time-zones/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3c5b875c8ba2663653d76c3b1a048f7a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">danielphp</media:title>
		</media:content>
	</item>
	</channel>
</rss>