Archive for March 20th, 2004

Instalando Plugins

Saturday, March 20th, 2004

Bueno, he creado un pequeño tar.bz2 de lo que se necesita para los plugins, tiene un parche para un archivo, un style.css (clases que su style.css debe de tener), el directorio plugins y el sql.

El archivo lo encuentran aquí.

Simplemente lo bajan a su directorio principal ($HOME en linux)

$ tar xjvf plugins.tar.bz2
$ cd mipagina/include/
$ patch -p1 gadget.php < ../../plugins/gadget.diff (Contestan Y)
$ cd ..
$ mysql mibasededatos < ../plugins.sql
$ cp -R ../include/* include/
$ cp -R ../plugins/plugins/ .
$ echo "" >> themes/mitema/style.css (para meter un espacio en blanco)
$ cat ../plugins/templates/style.css >> themes/mitema/style.css

Listo!

Nuevos Plugins y nuevo mecanismo

Saturday, March 20th, 2004

Bueno, pues ayer de estar pensando que podía estar ocasionando que los posts tardaran algo en aparecer llegue a muchas conclusiones (y todas fueron ciertas), el update de jaws me mostraba 20 noticias por default, y con eso que escribo poco.. ya se imaginan pq tardaba tanto el parser (bueno.. cosa de 3 segundos).

Hoy viendo el código pues llegue a la conclusión más obvia, que yo estaba parseando el html por la cantidad de plugins que yo tenía, entonces se me ocurrió que parseara el texto una sola vez (nl2br_jaws) y el resto fueran funciones ereg_ de cada plugin.. pero cambiar la forma de los plugins por código bbcode y pues ahora se nota la velocidad.

Ahora contamos con:

* Plugin FindFriend: Un plugin que va a buscar amigos en la tabla friend, para decirle si va a ser un amigo, simplemente tenemos que indicarle con el tag [\friend] el amigo que queremos, si lo encuentra  pues hace un link, sino pos lo muestre como texto solito.
* SyntaxHighLight: Mi plugin favorito, funciona parecido al bbcode, con la diferencia que le da HighLight al texto y sopota 15 lenguajes.
* nl2br_jaws: Es un parser del HTML, que cuida los br, para que no se anden grabando en donde no van.

En un rato subo los archivos necesarios para que lo puedan poner en su Jaws blog y para que ion pueda subirlo al CVS.

Plugins Funcionando

Saturday, March 20th, 2004

Bueno, hoy platiqué un rato con Ion sobre el tema de plugins para el blog, le comenté lo que estaba desarrollando (el Syntax) y pues no le pareció mala idea.

Luego me puse a pelear con el código html, ya que me dejaba siempre une spacio en blanco, y sorpresa!, el problema no es.. ni más ni menos que el propio nl2br de php.

Cuando nosotros usamos nl2br lo que hacemos es leer en texto plano el archivo y por cada nueva linea le cargamos un ‘br’, ¿pero qué pasa si en el código html, el tag era un comentario?, como el comentario es una liena nueva, pues entonces me iba a imprimir dos br’s, cosa que no queremos, lo mismo pasaba con div, pre, p.

Así que al no tener nada que hacer en la escuela (digo, después de un accidente quien va a tener tiempo para nadar haciendo otras cosas, jeje) y me puse a trabajar en una implementación de nl2br, que la llamamos: nl2br_jaws.

Ahora Jaws ya cuenta con el famoso sistema de plugins (bueno, solamente yo lo tengo xD, pero próximamente todos lo van a poder tener), que por ahora hace la gracia de imprimir el texto bonito y darle highlight.

Los plugins los puedes activar desde una tabla de mysql (próximamente en el admin.php), así que pues bueno ya toy feliz :-)

La única cosa que le falta, es un poco de velocidad al parser, sería cosa de implementar una mega clase que haga muchos plugins.. o aguantar un segundo más xD.

Weno, los dejo.. con un poco de:

function nl2br_jaws($html) {
 
  //Convert new lines to br
  $html = nl2br($html);
  //We create a parser using the html text
  $parser = new HtmlParser($html);
  //The var will be 'collecting' the html needed
  $new_html = "";
  //A var that will contain the previous tag
  $previous_tag = "";
  while($parser->parse()) {
    //The NodeType is type element
    if($parser->iNodeType == "1") {
      //We don't have a previous tag? (we shouldn't have one)
      if(empty($previous_tag)) {
.....
}