Capturar todos los errores en una aplicación ASP .Net

.NET

La verdad es que algo muy sencillo de hacer y que deberíamos hacer como norma en todas nuestras aplicaciones.

Simplemente tenemos que implementar el método “Application_Error” del “Global.asax.cs” y podremos capturar cualquier error que se produzca en la aplicación aunque no hayamos controlado la Excepción con un Try-Catch.

Una vez capturado el error, podemos mostrarlo en nuestro Log (es aconsejable tener uno), o enviarnos un email con lo que ha pasado, e incluso limpiar el error y hacer como que no ha pasado nada…

Bueno, ahí va el código:

protected void Application_Error(Object sender, EventArgs ea)
{
    string uriFormat = "\r\n\r\nURI: {0}\r\n\r\n";
    string exceptionFormat = "{0}: \"{1}\"\r\n{2}\r\n\r\n";

    StringBuilder message = new StringBuilder();

    if (Request != null)
    {
        message.AppendFormat(uriFormat, Request.Path);
    }

    if (Server != null)
    {
        Exception e;
        for (e = Server.GetLastError(); e != null; e = e.InnerException)
        {
            message.AppendFormat(exceptionFormat, e.GetType().Name, e.Message, e.StackTrace);
        }
    }

    // En este caso, escribimos en nuestro log
    MyAppLogger.Log("** APP ERROR Sin controlar la excepción **\n" + message.ToString());

    //Server.ClearError(); // descomentar esto para cancelar el error
}

Sistema de comentarios de Facebook en tu web con moderación

Facebook

Cada vez es más usual ver sitios webs que utilizan el plugin de facebook para comentarios.
De esta forma nos podemos ahorrar desarrollar el sistema de comentarios, o como mínimo tener que maquetarlo para nuestro WP, Joomla, Drupal, etc…, y además es un sistema muy práctico y atractivo para los usuarios.

1

Empezaremos visitando la página del plugin donde se explica cómo funciona: http://developers.facebook.com/docs/reference/plugins/comments/
Podemos cambiar los parámetros de la caja al gusto y darle a “Get Code” y obtendremos un código como el siguiente:

<div id="fb-root"></div>
<script src="https://connect.facebook.net/es_ES/all.js#xfbml=1"></script>
<fb:comments href="#CURRENT_URL#" num_posts="XX" width="YYY"></fb:comments>

Como veis, he puesto el idioma “es_ES”, y hago hincapié en la url. Tenemos que poner la actual. Por ejemplo en Joomla sería: <?php echo JURI::current(); ?>

2

Creamos una aplicación desde nuestro perfil de facebook para poder controlar los comentarios del plugin.
Para ello, vamos a: http://www.facebook.com/developers/
Una vez creada, aseguraros que tenéis el Id de la aplicación, y que le habéis especificado la url y el dominio como en la imagen:

Si no, tenéis que darle a “Editar configuración” e ir a la pestaña “Sitio Web” como:

3

El siguiente paso es añadir la información del app id que hemos obtenido en los metatags de la página.

Lo suyo es poner los metas “<meta property=”fb:app_id” content=”186556708058144″/>” y “<meta property=”fb:admins” content=”#UID#”/>” en el <head> de nuestro html y añadir el namespace de facebook al tag html “<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”es-es” lang=”es-es” xmlns:fb=”http://www.facebook.com/2008/fbml”>”. El segundo meta (fb:admins) no es necesario, pero siempre está bien ponerlo con el UID del mismo perfil que crea la aplicación como mínimo (podemos poner más separados por comas).

4

Por último ya solo nos queda probarlo e ir a la herramienta que nos ofrece facebook para gestionar los comentarios en: http://developers.facebook.com/tools/comments

Desde aquí además, en la opción “Configurar” podemos seleccionar la opción “Déjame aprobar cada comentario antes de ser mostrado a todos.”

Pues nada.
Podéis ver un ejemplo de cómo queda en nuestra página corporativa recién estrenada.
Esperamos que os haya ayudado este artículo.

Happy coding!!

Problema al subir imágenes en artículos de K2 de Joomla

Joomla

Si os está pasando que al intentar subir una imagen para un artículo de K2 el CMS parece que no hace nada, es recomendable revisar los permisos de las carpetas ‘/media/’ y ‘/tmp/’ del raiz.

Poniéndolos a 777 es posible que el problema quede solucionado.

Además. acordaos de recargar la página eliminando las cachés del navegador (Ctrl + F5).

Esperamos que os sea de ayuda.

Apprise: Una buena alternativa a los alert() de javascript

Diseño web

Son cada vez más los que piensan que no debemos utilizar el alert de javascript de cara al usuario final, pero los programadores estamos demasiado acostumbrados a utilizarlos y son nuestros compañeros de depuración en casos en los que no podemos gastar a ‘San Firebug’ ni similares.

Pues bien. Apprise es una alternativa muy ligera y elegante para sustituir a nuestros viejos alerts.

Además permite personalizar los textos y amplía alguna funcionalidad como podemos ver:

Alternativa al alert de javascript

Además, podemos fácilmente sobrecargar la función alert() para que al implementar ‘apprise’ no tengamos que ir cambiando los viejos alerts uno a uno, e incluso los podamos seguir usando.

if(document.getElementById) {
    window.alert = function(txt) {
        apprise(txt);
    }
}

Pues nada.

Esperamos que os guste y que os sirva.

Happy codding….

Problema con el cambio de idioma en los menus con Joomfish y la cache de Joomla activada

Joomla

Recientemente nos hemos encontrado con el problema de que los items de menú no se traducían al cambiar de idioma, hasta que no volvíamos a refrescar la página.

Al parecer cuando se cambia de idioma, el componente de ‘mainmenu‘ carga el resultado de la cache, y después lo escribe, de forma que es la segunda vez que cargamos la página cuando recoge de cache el resultado correcto.

En principio, esto se debería solucionar facilmente, deshabilitando la cache para los módulos ‘mainmenu‘ que tengamos, pero no es así. Sigue sin funcionar.

La solución drástica, es deshabilitar toda la cache de Joomla desde la configuración general, pero de esa manera perdemos demasiado rendimiento. No es una buena solución.

La mejor solución, sería tener un archivo de cache diferente para cada idioma, pero no es una solución sencilla, y lo que hemos encontrado, solo es válido si tenemos el archivo ‘/include/cache/lite.php‘ (al parecer de la versión 1.0 de Joomla). Ver el hilo del foro sobre esto.

Para los que no tenemos ese archivo, y a falta de una solución mejor (si la tienes, puedes compartirla en un comentario), podemos desactivar la cache de los módulos ‘mainmenu’ modificando el archivo ‘\modules\mod_mainmenu\helper.php‘.

Lo único que tenemos que hacer es no utilizar el sistema de cache para llamar al método ‘buildXML’ en las líneas 77 y 78, y llamarlo de forma normal.

Quedaría algo como:

//$cache =& JFactory::getCache('mod_mainmenu');
//$string = $cache->call(array('modMainMenuHelper', 'buildXML'), $params);
$string = modMainMenuHelper::buildXML($params);

Pues nada. Eso es todo.

Esperamos que os sea de ayuda.