<?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/"
	>

<channel>
	<title>El Futirifoken &#187; falta uno</title>
	<atom:link href="http://www.gazer.com.ar/tag/falta-uno/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gazer.com.ar</link>
	<description>El arte de no decir nada ;-)</description>
	<lastBuildDate>Mon, 26 Dec 2011 19:56:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Edit In Place con Prototype</title>
		<link>http://www.gazer.com.ar/2009/01/21/edit-in-place-con-prototype/</link>
		<comments>http://www.gazer.com.ar/2009/01/21/edit-in-place-con-prototype/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 13:25:57 +0000</pubDate>
		<dc:creator>Gazer</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[falta uno]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[prototype]]></category>

		<guid isPermaLink="false">http://www.gazer.com.ar/?p=1001</guid>
		<description><![CDATA[Una de las cosas que me venían pidiendo en ¡Falta Uno! era que se le pudieran asignar nombre a los equipos de un partido. En un principio pensé solo en poner los campos en el formulario de &#8220;crear partido&#8221; pero después me pareció que quedaba piola que se puedan editar directamente desde el resumen, usando [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las cosas que me venían pidiendo en <a href="http://www.falta-uno.com.ar/">¡Falta Uno!</a> era que se le pudieran asignar nombre a los equipos de un partido. En un principio pensé solo en poner los campos en el formulario de &#8220;crear partido&#8221; pero después me pareció que quedaba piola que se puedan editar directamente desde el resumen, usando un &#8220;Edit in place&#8221;. Me puse a buscar si había algo hecho con Proptotype (que es lo que uso en este proyecto) y encontré <a href="http://editinplace.org/">esto</a> que viene con varios <a href="http://release.editinplace.org/latest/example.html">ejemplos</a>.</p>
<p>La biblioteca es muy fácil de usar y bastante flexible en cómo queremos que se comporte el edit (puede ser un input, un textarea, un combo). Suponiendo que los nombres de equipos estén siendo mostrados de la siguiente manera :</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;h2 id=&quot;team_name_1&quot;&gt;&lt;%= h(@match.team[0].name) %&gt;&lt;/h2&gt;
&nbsp;
&lt;!-- skip --&gt;
&nbsp;
&lt;h2 id=&quot;team_name_2&quot;&gt;&lt;%= h(@match.team[1].name) %&gt;&lt;/h2&gt;</pre></div></div>

<p>Para poder editar los títulos simplemente basta con ejecutar el siguiente código cuando se carga la página :</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'team_name_1'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">editInPlace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
  auto_adjust<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
  select_text<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
  save_url<span style="color: #339933;">:</span> <span style="color: #3366CC;">'&lt;%= changename_match_path(@match, :team =&gt; 1) %&gt;'</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'team_name_2'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">editInPlace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
  auto_adjust<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
  select_text<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
  save_url<span style="color: #339933;">:</span> <span style="color: #3366CC;">'&lt;%= changename_match_path(@match, :team =&gt; 2) %&gt;'</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Es recomendable poner este código dentro de un método y usar un Observer para ejecutarlo, así mantenemos separada la lógica JS del HTML. Bastaría con un simple <code>Event.observe(window, 'load', initEIP);</code>.</p>
<p>Por el lado del servidor, el método que atiende el request (el definido el save_url) tiene que devolver el nuevo valor que va a tomar el campo. Por ejemplo, si el nombre no se pudo cambiar, deberíamos devolver el anterior. En este caso que es simple el template a devolver es el siguiente :</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;%= h(@team.name) %&gt;</pre></div></div>

<p>Para terminar, en caso de que el navegador del usuario no tenga JS queda el formulario de &#8220;Editar/Crear Partido&#8221; donde se pueden poner los nombres de manera tradicional.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gazer.com.ar/2009/01/21/edit-in-place-con-prototype/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

