<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comentarios en: Tractis estrena un nuevo sistema de workflow, alertas y ventanas modales</title>
	<atom:link href="http://blog.negonation.com/es/tractis-estrena-un-nuevo-sistema-de-workflow-alertas-y-ventanas-modales/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.negonation.com/es/tractis-estrena-un-nuevo-sistema-de-workflow-alertas-y-ventanas-modales/</link>
	<description>Justice is ripe for disruption</description>
	<lastBuildDate>Mon, 23 Jan 2012 09:55:37 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
	<item>
		<title>By: manu_drac</title>
		<link>http://blog.negonation.com/es/tractis-estrena-un-nuevo-sistema-de-workflow-alertas-y-ventanas-modales/comment-page-1/#comment-1315</link>
		<dc:creator>manu_drac</dc:creator>
		<pubDate>Sun, 29 Oct 2006 23:18:31 +0000</pubDate>
		<guid isPermaLink="false">http://blog.negonation.com/es/tractis-estrena-un-nuevo-sistema-de-workflow-alertas-y-ventanas-modales/#comment-1315</guid>
		<description>Si! Muchas gracias Manolo! Me han quedado claro los 2 ejemplos que pones :D Ahora solo falta aplicar-lo en mi caso :P

No me acordaba que se podían sobrecargar métodos, demasiada información :D

Saludos, soys unos màquinas</description>
		<content:encoded><![CDATA[<p>Si! Muchas gracias Manolo! Me han quedado claro los 2 ejemplos que pones <img src='http://blog.negonation.com/es/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Ahora solo falta aplicar-lo en mi caso <img src='http://blog.negonation.com/es/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>No me acordaba que se podían sobrecargar métodos, demasiada información <img src='http://blog.negonation.com/es/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Saludos, soys unos màquinas</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Manolo Santos</title>
		<link>http://blog.negonation.com/es/tractis-estrena-un-nuevo-sistema-de-workflow-alertas-y-ventanas-modales/comment-page-1/#comment-1311</link>
		<dc:creator>Manolo Santos</dc:creator>
		<pubDate>Sun, 29 Oct 2006 19:34:17 +0000</pubDate>
		<guid isPermaLink="false">http://blog.negonation.com/es/tractis-estrena-un-nuevo-sistema-de-workflow-alertas-y-ventanas-modales/#comment-1311</guid>
		<description>Para el sistema de alertas no hace falta tocar nada de  RoR. Una de las cosas buenas de RoR, de Ruby en realidad es que se puede sobrecargar un método de cualquier clase para modificar su comportamiento. Pero ni siquiera ha sido necesario para hacer el sistema de alertas. 

En application.rb definimos el siguiente método que es el que utilizamos para mostrar las alertas, klass puede valer: :notice, :warning, :error, :mailed, etc...:

&lt;pre&gt;
def notify(klass=:notice, title=nil, body=nil)
  message = &quot;&quot;
  message += &quot;&lt;h4&gt;#{title}&lt;/h4&gt;&quot; if title
  message += body if body
  flash[klass] = message
end 
&lt;/pre&gt;

Por ejemplo:

&lt;pre&gt;
notify :notice, _(&quot;The contract has been saved&quot;), _(&quot;&lt;p&gt;Contracts saved while locked are private to you. Not even the group admin can read them&lt;/p&gt;&quot;)
&lt;/pre&gt;

En el layout invocamos al codigo que muestra las alertas, definido en application_helper.rb:

&lt;pre&gt;
  def show_flash()
    txt = &quot;&quot;
    unless flash.empty?
      txt &lt;&lt; &quot;&lt;div onclick=\&quot;this.hide();\&quot; id=\&quot;flashbox-container-id\&quot; class=\&quot;flashcontainer\&quot;&gt;&quot;
      txt &lt;&lt; &quot;&lt;div class=\&quot;sombras\&quot;&gt;&quot;
      flash.each_key do &#124;c&#124;
        txt &lt;&lt; &quot;&lt;div class=\&quot;flashBox #{c.to_s}\&quot;&gt;&quot;
        txt &lt;&lt; flash[c]
        @session[&#039;flash&#039;] = nil 
        txt &lt;&lt; &quot;&lt;/div&gt;&quot;
      end
      txt &lt;&lt; &quot;&lt;/div&gt;&quot;
      txt &lt;&lt; &quot;&lt;div class=\&quot;fondo-error\&quot;&gt;&lt;/div&gt;&quot;
      txt &lt;&lt; &quot;&lt;/div&gt;&quot;
      txt &lt;&lt; &quot;&lt;script&gt;FlashTimeouts.add()&lt;/script&gt;&quot;
    else
      txt &lt;&lt; &quot;&lt;div id=\&quot;flashbox-container-id\&quot; style=\&quot;display:none\&quot;&gt;&lt;/div&gt;&quot;
    end
    return txt
  end
&lt;/pre&gt;

El resto de la magia es CSS: cada klass tiene un estilo CSS distinto que define el icono y el color que muestra, como en:

&lt;pre&gt;
div.warning {
  background: #F14545 url(/images/emblems/warning.png) no-repeat 5px 5px;
}
&lt;/pre&gt;

Un caso en el que sí que es necesario sobrecargar un método de RoR es cuando salta una excepción inexperada durante una invocación en AJAX. En este caso comprobamos si se ha lanzado durante una petición AJAX y en ese caso mostramos un mensaje de alerta.

&lt;pre&gt;
  def rescue_action_in_public(exception)
      if request.xhr? 
        notify :error, _(&quot;Your action hasn&#039;t been performed&quot;), _(&quot;&lt;p&gt;&lt;strong&gt;Exception: &lt;/strong&gt;%s&lt;/p&gt;&quot;) % exception.to_s
        render :update do &#124;page&#124;    
          page.replace &#039;flashbox-container-id&#039;, show_flash()
        end
      else
        @exception = exception
        render :partial =&gt; &quot;shared/error&quot;
      end
    end
&lt;/pre&gt;

En resumen, con la sobrecarga de métodos de Ruby puedes modificar el comportamiento de RoR sin necesidad de tocar el código fuente de RoR en absoluto. Espero haber contestado a tu pregunta. </description>
		<content:encoded><![CDATA[<p>Para el sistema de alertas no hace falta tocar nada de  RoR. Una de las cosas buenas de RoR, de Ruby en realidad es que se puede sobrecargar un método de cualquier clase para modificar su comportamiento. Pero ni siquiera ha sido necesario para hacer el sistema de alertas. </p>
<p>En application.rb definimos el siguiente método que es el que utilizamos para mostrar las alertas, klass puede valer: :notice, :warning, :error, :mailed, etc&#8230;:</p>
<pre>
def notify(klass=:notice, title=nil, body=nil)
  message = ""
  message += "&lt;h4&gt;#{title}&lt;/h4&gt;" if title
  message += body if body
  flash[klass] = message
end
</pre>
<p>Por ejemplo:</p>
<pre>
notify :notice, _("The contract has been saved"), _("&lt;p&gt;Contracts saved while locked are private to you. Not even the group admin can read them&lt;/p&gt;")
</pre>
<p>En el layout invocamos al codigo que muestra las alertas, definido en application_helper.rb:</p>
<pre>
  def show_flash()
    txt = ""
    unless flash.empty?
      txt &lt;&lt; "&lt;div onclick=\"this.hide();\" id=\"flashbox-container-id\" class=\"flashcontainer\"&gt;"
      txt &lt;&lt; "&lt;div class=\"sombras\"&gt;"
      flash.each_key do |c|
        txt &lt;&lt; "&lt;div class=\"flashBox #{c.to_s}\"&gt;"
        txt &lt;&lt; flash[c]
        @session['flash'] = nil
        txt &lt;&lt; "&lt;/div&gt;"
      end
      txt &lt;&lt; "&lt;/div&gt;"
      txt &lt;&lt; "&lt;div class=\"fondo-error\"&gt;&lt;/div&gt;"
      txt &lt;&lt; "&lt;/div&gt;"
      txt &lt;&lt; "&lt;script&gt;FlashTimeouts.add()&lt;/script&gt;"
    else
      txt &lt;&lt; "&lt;div id=\"flashbox-container-id\" style=\"display:none\"&gt;&lt;/div&gt;"
    end
    return txt
  end
</pre>
<p>El resto de la magia es CSS: cada klass tiene un estilo CSS distinto que define el icono y el color que muestra, como en:</p>
<pre>
div.warning {
  background: #F14545 url(/images/emblems/warning.png) no-repeat 5px 5px;
}
</pre>
<p>Un caso en el que sí que es necesario sobrecargar un método de RoR es cuando salta una excepción inexperada durante una invocación en AJAX. En este caso comprobamos si se ha lanzado durante una petición AJAX y en ese caso mostramos un mensaje de alerta.</p>
<pre>
  def rescue_action_in_public(exception)
      if request.xhr?
        notify :error, _("Your action hasn't been performed"), _("&lt;p&gt;&lt;strong&gt;Exception: &lt;/strong&gt;%s&lt;/p&gt;") % exception.to_s
        render :update do |page|
          page.replace 'flashbox-container-id', show_flash()
        end
      else
        @exception = exception
        render :partial => "shared/error"
      end
    end
</pre>
<p>En resumen, con la sobrecarga de métodos de Ruby puedes modificar el comportamiento de RoR sin necesidad de tocar el código fuente de RoR en absoluto. Espero haber contestado a tu pregunta.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: manu_drac</title>
		<link>http://blog.negonation.com/es/tractis-estrena-un-nuevo-sistema-de-workflow-alertas-y-ventanas-modales/comment-page-1/#comment-1251</link>
		<dc:creator>manu_drac</dc:creator>
		<pubDate>Fri, 27 Oct 2006 20:33:07 +0000</pubDate>
		<guid isPermaLink="false">http://blog.negonation.com/es/tractis-estrena-un-nuevo-sistema-de-workflow-alertas-y-ventanas-modales/#comment-1251</guid>
		<description>Una pregunta un poco técnica referente al sistema de alertas.  Supongo que habeis tocado el fichero que gestiona los mensajes de error de rails para que puedan aparecer de la manera que vosotros os plazca.

Yo pensaba que estos ficheros estarian dentro del aplicativo que uno está desarrollando, pero ayer me di cuenta que es un fichero del sistema de rails, genérico... si lo modificas allí, todos las webs que crees funcionarán de la misma manera y puede que no interese.

Vosotros como lo habeis hecho? En caso de poner la web en un servidor propio, no hay problema porque te configuras rails como quieras y listo, pero si es un servidor compartido dudo mucho que dejen que toquemos los ficheros del sistema RoR. Perdon si molesta la pregunta técnica. ;)</description>
		<content:encoded><![CDATA[<p>Una pregunta un poco técnica referente al sistema de alertas.  Supongo que habeis tocado el fichero que gestiona los mensajes de error de rails para que puedan aparecer de la manera que vosotros os plazca.</p>
<p>Yo pensaba que estos ficheros estarian dentro del aplicativo que uno está desarrollando, pero ayer me di cuenta que es un fichero del sistema de rails, genérico&#8230; si lo modificas allí, todos las webs que crees funcionarán de la misma manera y puede que no interese.</p>
<p>Vosotros como lo habeis hecho? En caso de poner la web en un servidor propio, no hay problema porque te configuras rails como quieras y listo, pero si es un servidor compartido dudo mucho que dejen que toquemos los ficheros del sistema RoR. Perdon si molesta la pregunta técnica. <img src='http://blog.negonation.com/es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Blanco</title>
		<link>http://blog.negonation.com/es/tractis-estrena-un-nuevo-sistema-de-workflow-alertas-y-ventanas-modales/comment-page-1/#comment-1196</link>
		<dc:creator>David Blanco</dc:creator>
		<pubDate>Wed, 25 Oct 2006 22:11:49 +0000</pubDate>
		<guid isPermaLink="false">http://blog.negonation.com/es/tractis-estrena-un-nuevo-sistema-de-workflow-alertas-y-ventanas-modales/#comment-1196</guid>
		<description>Jajajaja... la verdad es que lo de contratar por internet es tan obvio que no parece ninguna novedad. Sin embargo, ¡todavía no hay nada así!.

En cualquier caso, &lt;em&gt;que no panda el cúnico&lt;/em&gt;. Como dice Guy Kawasaki: &quot;&lt;em&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://blog.guykawasaki.com/2006/02/the_art_of_rain.html&quot; rel=&quot;nofollow&quot;&gt;persigue a los ateos, no a los agnósticos&lt;/a&gt;&lt;/em&gt;&quot;.</description>
		<content:encoded><![CDATA[<p>Jajajaja&#8230; la verdad es que lo de contratar por internet es tan obvio que no parece ninguna novedad. Sin embargo, ¡todavía no hay nada así!.</p>
<p>En cualquier caso, <em>que no panda el cúnico</em>. Como dice Guy Kawasaki: &#8220;<em><a rel="nofollow" target="_blank" href="http://blog.guykawasaki.com/2006/02/the_art_of_rain.html" rel="nofollow">persigue a los ateos, no a los agnósticos</a></em>&#8220;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anónimo</title>
		<link>http://blog.negonation.com/es/tractis-estrena-un-nuevo-sistema-de-workflow-alertas-y-ventanas-modales/comment-page-1/#comment-1192</link>
		<dc:creator>Anónimo</dc:creator>
		<pubDate>Wed, 25 Oct 2006 19:45:01 +0000</pubDate>
		<guid isPermaLink="false">http://blog.negonation.com/es/tractis-estrena-un-nuevo-sistema-de-workflow-alertas-y-ventanas-modales/#comment-1192</guid>
		<description>La idea de los contratos online con firma dígital es genial, en cuanto me enteré se lo dije a mi jefe, para mejorar nosotros usando Tractis, y me dijo &quot;bueno no es nada del otro mundo&quot;

Me quedé frio.</description>
		<content:encoded><![CDATA[<p>La idea de los contratos online con firma dígital es genial, en cuanto me enteré se lo dije a mi jefe, para mejorar nosotros usando Tractis, y me dijo &#8220;bueno no es nada del otro mundo&#8221;</p>
<p>Me quedé frio.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Blanco</title>
		<link>http://blog.negonation.com/es/tractis-estrena-un-nuevo-sistema-de-workflow-alertas-y-ventanas-modales/comment-page-1/#comment-1187</link>
		<dc:creator>David Blanco</dc:creator>
		<pubDate>Wed, 25 Oct 2006 13:54:34 +0000</pubDate>
		<guid isPermaLink="false">http://blog.negonation.com/es/tractis-estrena-un-nuevo-sistema-de-workflow-alertas-y-ventanas-modales/#comment-1187</guid>
		<description>@Andrés, espero que no defraudemos las expectativas :)

@Nicolás, sí, una api está en nuestros planes pero todavía nos quedan unos meses. 

@Jaime, tienes toda la razón. De hecho, estamos en ello. Espero tener noticias al respecto pronto y no hablo más que si no luego estas cosas se gafan...</description>
		<content:encoded><![CDATA[<p>@Andrés, espero que no defraudemos las expectativas <img src='http://blog.negonation.com/es/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>@Nicolás, sí, una api está en nuestros planes pero todavía nos quedan unos meses. </p>
<p>@Jaime, tienes toda la razón. De hecho, estamos en ello. Espero tener noticias al respecto pronto y no hablo más que si no luego estas cosas se gafan&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jaime</title>
		<link>http://blog.negonation.com/es/tractis-estrena-un-nuevo-sistema-de-workflow-alertas-y-ventanas-modales/comment-page-1/#comment-1186</link>
		<dc:creator>Jaime</dc:creator>
		<pubDate>Wed, 25 Oct 2006 13:05:19 +0000</pubDate>
		<guid isPermaLink="false">http://blog.negonation.com/es/tractis-estrena-un-nuevo-sistema-de-workflow-alertas-y-ventanas-modales/#comment-1186</guid>
		<description>Lo más interesante de todo el post es algo obvio y de perogrullo, pero que muchas veces olvidamos

Las ideas y los desarrollos tienen su origen en una persona o un equipo, que son quienes al final la depuran e  implementan segun su vision. Pero serán los usuarios los que al final decidirán si la aplicación les convence (y la usabilidad tiene mucho que ver).

Muchas veces el desarrollador, desde su vision privilegiada, no es consciente de que hay cosas que se le escapan y que se podrian hacer de mejor y mas sencilla forma. Ahi entra el usuario, quien aporta &quot;su&quot; vision, complementando y enriqueciendo el producto

Por ello, animo a todo el equipo de Tractis a seguir con las pruebas y las beta-test. Pero creo que se puede ir mas alla. Salvando las distancias del tiempo y de la confidencialidad, creo que para que un feed back sea de verdad 360º hay que enseñar la aplicacion a otros usuarios que quizas no conozcan este blog, ni la pagina Web desde la que te puedes suscribir, ni hayan oido alguna vez hablar de Rails o CSS, pero que seguramente algun dia, si todo esto tiene exito, la tendran en la pantalla de su ordenador...</description>
		<content:encoded><![CDATA[<p>Lo más interesante de todo el post es algo obvio y de perogrullo, pero que muchas veces olvidamos</p>
<p>Las ideas y los desarrollos tienen su origen en una persona o un equipo, que son quienes al final la depuran e  implementan segun su vision. Pero serán los usuarios los que al final decidirán si la aplicación les convence (y la usabilidad tiene mucho que ver).</p>
<p>Muchas veces el desarrollador, desde su vision privilegiada, no es consciente de que hay cosas que se le escapan y que se podrian hacer de mejor y mas sencilla forma. Ahi entra el usuario, quien aporta &#8220;su&#8221; vision, complementando y enriqueciendo el producto</p>
<p>Por ello, animo a todo el equipo de Tractis a seguir con las pruebas y las beta-test. Pero creo que se puede ir mas alla. Salvando las distancias del tiempo y de la confidencialidad, creo que para que un feed back sea de verdad 360º hay que enseñar la aplicacion a otros usuarios que quizas no conozcan este blog, ni la pagina Web desde la que te puedes suscribir, ni hayan oido alguna vez hablar de Rails o CSS, pero que seguramente algun dia, si todo esto tiene exito, la tendran en la pantalla de su ordenador&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nicolas Orellana</title>
		<link>http://blog.negonation.com/es/tractis-estrena-un-nuevo-sistema-de-workflow-alertas-y-ventanas-modales/comment-page-1/#comment-1185</link>
		<dc:creator>Nicolas Orellana</dc:creator>
		<pubDate>Wed, 25 Oct 2006 09:02:20 +0000</pubDate>
		<guid isPermaLink="false">http://blog.negonation.com/es/tractis-estrena-un-nuevo-sistema-de-workflow-alertas-y-ventanas-modales/#comment-1185</guid>
		<description>Hay que destacar David que aunque no me encuentro trabajando con ustedes en el desarrollo, que Rails tiene mucho que ver en esa motivacion con la que trabajan y como unifican con esos helpers la informaciones que me imagino futuras APIs de tractis para el trabajo colaborativo entre desarrolladores?

Porque David, yo quiero poner los ultimos contratos en mi website cuando tractis este 100% operativo. :)

Saludos y que genial compartir con ustedes algo que partio de 0 y ver como va avanzando ::)</description>
		<content:encoded><![CDATA[<p>Hay que destacar David que aunque no me encuentro trabajando con ustedes en el desarrollo, que Rails tiene mucho que ver en esa motivacion con la que trabajan y como unifican con esos helpers la informaciones que me imagino futuras APIs de tractis para el trabajo colaborativo entre desarrolladores?</p>
<p>Porque David, yo quiero poner los ultimos contratos en mi website cuando tractis este 100% operativo. <img src='http://blog.negonation.com/es/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Saludos y que genial compartir con ustedes algo que partio de 0 y ver como va avanzando ::)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrés Romero</title>
		<link>http://blog.negonation.com/es/tractis-estrena-un-nuevo-sistema-de-workflow-alertas-y-ventanas-modales/comment-page-1/#comment-1184</link>
		<dc:creator>Andrés Romero</dc:creator>
		<pubDate>Wed, 25 Oct 2006 08:21:13 +0000</pubDate>
		<guid isPermaLink="false">http://blog.negonation.com/es/tractis-estrena-un-nuevo-sistema-de-workflow-alertas-y-ventanas-modales/#comment-1184</guid>
		<description>Estoy impaciente por poder probarlo yo también :(

A muchos nos tenéis expectantes (supongo que también eso es un logro no?)

Ánimo!!.</description>
		<content:encoded><![CDATA[<p>Estoy impaciente por poder probarlo yo también <img src='http://blog.negonation.com/es/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>A muchos nos tenéis expectantes (supongo que también eso es un logro no?)</p>
<p>Ánimo!!.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: manu_drac</title>
		<link>http://blog.negonation.com/es/tractis-estrena-un-nuevo-sistema-de-workflow-alertas-y-ventanas-modales/comment-page-1/#comment-1183</link>
		<dc:creator>manu_drac</dc:creator>
		<pubDate>Wed, 25 Oct 2006 07:16:50 +0000</pubDate>
		<guid isPermaLink="false">http://blog.negonation.com/es/tractis-estrena-un-nuevo-sistema-de-workflow-alertas-y-ventanas-modales/#comment-1183</guid>
		<description>Ship, genial! A ver si encuentro un hueco y pruebo un poco la nueva versión. :D</description>
		<content:encoded><![CDATA[<p>Ship, genial! A ver si encuentro un hueco y pruebo un poco la nueva versión. <img src='http://blog.negonation.com/es/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>

