Twitter lanza el botón Follow para poder seguir directamente desde la web

Habemus botón Follow“.

Acabado de lanzar y ya lo hemos integrado para que veáis como queda. xD

El código como podéis ver es sencillísimo:

<a href="http://twitter.com/jorsang1" class="twitter-follow-button" data-show-count="false" data-lang="es">@jorsang1</a>
<a href="http://twitter.com/MadBlake" class="twitter-follow-button" data-show-count="false" data-lang="es">@MadBlake</a>
<a href="http://twitter.com/tw_ticnology" class="twitter-follow-button" data-show-count="false" data-lang="es">@tw_ticnology</a>
<script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>

Si queréis ver las opciones de personalización que ofrece el botón, lo tenéis muy bien documentado en la página oficial: http://dev.twitter.com/pages/follow_button

Venga! Nos seguimos!! xD

Error visualizando la ficha de un ítem como editor de backend en K2 de Joomla

Enlazando con el post anterior, resulta que al actualizar la versión del plugin K2fields a la 0.4.8, ocurre que cuando un usuario de tipo ‘editor’ de backend intenta editar un ítem, al cabo de un tiempo de espera la página se queda en blanco.

Como en el post anterior, solo que ahora solo le pasa a los usuarios de back que no son administradores y antes de que se muestre el formulario. No al guardar.

Depurando el plugin, vemos que hay una parte del código que parece encargarse de alguna forma, de que ese editor solo pueda modificar los filtros de los artículos que sean suyos o modificados por él, o una cosa así.

Por ahora, a falta de disponer de más información, simplemente hemos evitado que los usuarios editores ejecuten el trozo de ‘código corrupto‘, igual que lo evitan los administradores.

Para ello, tenemos que ir a la carpeta ‘\plugins\k2\’ y editar el archivo ‘k2fields.php’.
Buscamos la función ‘static function getUserAddedExtraFieldValues($filter = null, $jsonEncoded = true)’.
Y en el trozo:

if ($filter) {
    $user = & JFactory::getUser();
    $userId = $user->get ('id');
    $db = & JFactory::getDBO();
    $query = "SELECT extra_fields FROM #__k2_items WHERE created_by = {$userId} OR modified_by = {$userId}";
    $db->setQuery($query);
    $rows = $db->loadObjectList();

    foreach ($rows as $row) {
        $values = $json->decode($row->extra_fields);

        if (!is_array($values)) continue;
        
        foreach ($values as $value) {
            $exists = isset($nonSaveableFields[$value->id])
                 && !is_object($value->value) // need to check how multiple select saves values
                 && isset($nonSaveableFields[$value->id][$value->value]);

            if ($filter == plgk2k2fields::FILTER_NOT_ADDED_BY_USER && $exists
             || $filter == plgk2k2fields::FILTER_ADDED_BY_USER && !$exists) {
                unset($nonSaveableFields[$value->id][$value->value]);
            }
        }
    }

    foreach ($nonSaveableFields as $n => $nonSaveableField) {
        if (sizeof($nonSaveableField) == 0) {
            unset($nonSaveableFields[$n]);
        }
    }
}

Cogemos el primer if, y le ponemos:

if (false){//($filter) {

Con esto por el momento se soluciona el problema.

Vamos a intentar ponernos en contacto con el autor para comentarle el ‘bug’, y a ver si se puede resolver en la siguiente versión.

Si detectáis algún efecto colateral, no dudéis en comentarlo.

Error al guardar un ítem en K2 de Joomla

Si cuando tienes cierto volumen en un K2, vas a guardar un ítem, y ves que tarda demasiado tiempo y al final te sale una pantalla en blanco, posiblemente estés teniendo el mismo problema que nosotros.

Mira a ver si tienes el plugin “K2Fields” y si este está en su versión 0.4.7 o anterior. Si es así, ahí va a estar el problema…

Simplemente descarga la última versión del K2Fields (ahora la 0.4.8), desinstala la vieja e instala la nueva, y a funcionar.

Además, no hay que preocuparse por la configuración que tuviéramos de los extra_fiels ni de sus valores. Eso va a parte.

Esperamos haber sido de ayuda.

Depurando en fichero de log de joomla. Midiendo tiempos.

Joomla ofrece un sencillo pero bastante completo sistema de log para volcar a archivo los resultados de nuestra depuración en tiempo de ejecución.

Una forma de utilizarlo rápidamente es ir a la clase donde se encuentra la función que queremos depurar (por ejemplo K2ModelItem en ‘administrator\components\com_k2\models\’) y añadirle la función:

function simpleLog($comment, $userId = 0)
{
    // Incluimos las librerias
    jimport('joomla.error.log');
    $options = array(
        'format' => "{DATE}\t{TIME}\t{USER_ID}\t{COMMENT}"
    );
    // Creamos la instancia de el fichero de log y lo usamos
    $log = &JLog::getInstance(AJAX_ERROR_LOG, $options);
    $log->addEntry(array('comment' => $comment, 'user_id' => $userId));
}

Con esta función, ya podemos depurar cualquier cosa mostrándolo en un archivo de log (En el ejemplo: AJAX_ERROR_LOG).

Enlazando con el título del post, os pongo un ejemplo para la obtención de tiempos dentro del método ‘save’ de esta clase:

var $t1 = time();

....

var $t2 = time();
K2ModelItem::simpleLog("Tiempo en realizar XXXX: " . round(abs($t2 - $t1) / 1,2). " segundos");

Recuerda comprobar que hayan permisos de escritura sobre la carpeta de log que tienes configurada en la ‘configuracion global’ de joomla.

Más info: http://weblog.paulbernal.com/cms/joomla/generando-logs-hacia-archivos-en-joomla-1-5-con-jlog/

Cadena de texto multilínea en javascript

Parecerá una tontería pero seguro que muchos aún andan concatenando las líneas de un string con las ‘comillas’ y el ‘más’, al estilo:

var s = "Esto es un texto " +
"multilinea en javascript\n" +
"Gracias.";
alert(s);
/* Salida:
Esto es un texto multilinea en javascript
Gracias.
*/

No es mucho más sencillo, esto?

var s = "Esto es un texto \
multilinea en javascript\n\
Gracias.";
alert(s);
/* Salida:
Esto es un texto multilinea en javascript
Gracias.
*/

Happy codding!