blog de gin

blog de gin

Just another Geek weblog

Convertir un pulsación de la tecla ENTER en un TAB con Javascript

View Comments

Bueno, en este caso el usuario es el que manda y si quiere que un puto ENTER lo mande a otro campo pues así se hará, aunque no veo que tiene de malo la tecla tabulador(en mis tiempos…), pues ambas estan normalmente en los extremos del teclado… mmm… será por complacer a las mayorías en lugar de los zurdos, y si es un zurdo el único que va a usar el sistema, bah!.

El caso es que si usamos jQuery, colocamos este capturador del evento, al presionar alguna tecla:

$(document).ready(function() {
/* Aquí podría filtrar que controles necesitará manejar,
 * en el caso de incluir un dropbox $('input, select');
 */
tb = $('input');

if ($.browser.mozilla) {
	$(tb).keypress(enter2tab);
} else {
	$(tb).keydown(enter2tab);
}
});

Esta función hace que un ENTER se comporte como un TAB, esto hará que al dar ENTER el elemento siguiente obtenga el foco.

function enter2tab(e) {
	if (e.keyCode == 13) {
		cb = parseInt($(this).attr('tabindex'));

		if ($(':input[tabindex=\'' + (cb + 1) + '\']') != null) {
			$(':input[tabindex=\'' + (cb + 1) + '\']').focus();
			$(':input[tabindex=\'' + (cb + 1) + '\']').select();
			e.preventDefault();

			return false;
		}
	}
}

El código original(base de este) se encuentra aquí, sin embargo, mi versión opera utilizando la propiedad tabindex de los elementos HTML, lo cual es lo que necesitaba.

Written by gin

June 4th, 2010 at 5:47 pm

Actualizar Trac en Debian Etch usando Backports

View Comments

Si, soy bien guevón por tener un servidor con Etch aún, pero no tengo nada crítico allí.

Lo primero, agregar el repo para APT.

printf "\ndeb http://www.backports.org/debian etch-backports main contrib non-free" \
 >> /etc/apt/sources.list

Actualizar la lista de repositorios.

apt-get update
apt-get install debian-backports-keyring

e instalar Trac.

apt-get update
apt-get -t etch-backports install trac

Y por último, como ya tenía creado algunos proyectos, pues actualizarlos.

trac-admin /var/lib/trac/project_1 upgrade

Written by gin

June 3rd, 2010 at 4:41 pm

Instalación de Subversion + Trac

View Comments

Esta anotación es para recordar como crear un repositorio de control de versiones con Subversion y Trac(como sistema de seguimiento de errores y gestión de proyectos), siempre normalmente uso Debian para estos menesteres.

sudo apt-get install -y trac apache2 libapache2-mod-python \
	libapache2-svn python-setuptools subversion-tools \
	python-subversion python-dev build-essential graphviz \
	htmldoc enscript;

La ubicación esta a criterio de donde ocupen donde este.

sudo mkdir /var/lib/trac;
sudo mkdir /var/lib/svn;

El esqueleto del proyecto.

sudo mkdir /tmp/project;
sudo mkdir /tmp/project/branches;
sudo mkdir /tmp/project/tags;
sudo mkdir /tmp/project/trunk;

Se crean el/los proyectos, se hace el import inicial.

sudo svnadmin create /var/lib/svn/project_1 --fs-type fsfs;
sudo svn import /tmp/project file:///var/lib/svn/project_1 -m "initial import";
rm -Rf /tmp/project;

Se crean los usuarios.

sudo htpasswd -cm /etc/apache2/dav_svn.passwd admin;

sudo htpasswd -m /etc/apache2/dav_svn.passwd user1;
sudo htpasswd -m /etc/apache2/dav_svn.passwd user2;
sudo htpasswd -m /etc/apache2/dav_svn.passwd user3;

Se asignan permisos para la lista de usuarios.

sudo chown www-data:www-data /etc/apache2/dav_svn.passwd;

Se procede a la configuración mínima del proyecto con Trac.

/usr/bin/trac-admin /var/lib/trac/project_1 initenv;

Se asignan permisos a el/los repositorios.

sudo find /var/lib/svn/project_1 -type f -exec chmod 660 {} \;
sudo find /var/lib/svn/project_1 -type d -exec chmod 2770 {} \;

sudo find /var/lib/trac/project_1 -type f -exec chmod 660 {} \;
sudo find /var/lib/trac/project_1 -type d -exec chmod 2770 {} \;

sudo chown -R root:www-data /var/lib/trac;
sudo chown -R root:www-data /var/lib/svn;

Este seria la configuración del VirtualHost usando Apache: /etc/apache2/sites-enabled/trac (que debería ser un enlace simbólico apuntando a /etc/apache2/sites-available/trac).

<VirtualHost *:80>
	ServerAdmin webmaster@localhost
	ServerName localhost
	DocumentRoot /var/www
	ErrorLog /var/log/apache2/error.trac.log
	CustomLog /var/log/apache2/access.trac.log combined

	<LocationMatch /trac>
		SetHandler mod_python
		PythonInterpreter main_interpreter
		PythonHandler trac.web.modpython_frontend
		PythonOption TracEnvParentDir /var/lib/trac/
		PythonOption TracUriRoot /trac/
		PythonOption PYTHON_EGG_CACHE /tmp/
	</LocationMatch>

	<LocationMatch "/trac/[^/]+/login">
		AuthType Basic
		AuthName "Trac"
		AuthUserFile /etc/apache2/dav_svn.passwd
		Require valid-user
	</LocationMatch>
</VirtualHost>

Para la autenticación.

/etc/apache2/mods-available/dav_svn.conf
<Location /svn>
	DAV svn
	SVNParentPath /var/lib/svn
	SVNListParentPath On
	AuthType Basic
	AuthName "Repositorio subversion"
	AuthUserFile /etc/apache2/dav_svn.passwd
	SVNAutoversioning on
	Require valid-user
</Location>

Habilitamos módulos necesarios para Apache.

sudo a2enmod dav;
sudo a2enmod dav_fs;
sudo a2enmod python;
sudo a2dissite default;
sudo a2ensite trac;

Reiniciamos Apache si es necesario.

sudo /etc/init.d/apache2 reload;

o

sudo /etc/init.d/apache2 force-reload;

en última instancia :(.

sudo /etc/init.d/apache2 restart;

Written by gin

June 2nd, 2010 at 10:23 pm

Utilizando ficheros alternativos de configuración con CodeIgniter

View Comments

Es muy incómodo tener un solo fichero de configuración para almacenar variables que necesitemos reutilizar, en CI, podemos distribuirlas en diferentes ficheros y tener mejor organizado nuestro proyecto.

Lo común en usar la clase Config para obtener estas variables de config/config.php

$config['index_page'] = "index.php";

y en el controlador hacemos:

echo $this->config->item('index_page');

Si queremos un fichero diferente, para guardar preferencias particulares, lo guardamos en el directorio config, por ejemplo: config/site.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

$config['site_title']	= "Lo que sea";

/* End of file site.php */
/* Location: ./system/application/config/site.php */

Y le decimos a CI que lo cargue automáticamente, esto se lo indicamos en config/autoload.php, donde le pasamos un array a la variable $autoload['config'] con el nombre de los ficheros que tengamos(sin la extensión .php).

$autoload['config'] = array('site');

Asi, ya podemos extraer nuestra variable.

echo $this->config->item('site_title');

Written by gin

June 1st, 2010 at 10:51 pm