Una introducción a python

Python es un lenguaje de programación interpretado, interactivo y multiplataforma, que con su facilidad y potencia hace las delicias de miles de programadores (y sin saberlo, también de los usuarios de los programas que estos desarrollan) alrededor del mundo.

La comunidad de Python Argentina es particularmente activa, solidaria y muy capaz técnicamente.

Esta charla fue dada por Facundo Batista, uno de los fundadores de PyAr, en las 7mas Jornada Regionales de Software Libre realizadas en Córdoba, Argentina, en 2007.

Aquí la presentación

© automático

Más por costumbre que utilidad solemos poner la antigüedad de un sitio web al pie de página, asociado al símbolo ©, o (cc) si usamos Creative Commons.

En el 2007 hicimos el sitio, y en este 2009 todavía muestra.

© 2007

¡Muy feo! Aunque no hayamos actualizado el sitio desde entonces, nuestro deber, como buenos mentirosos, es lograr que el visitante no se entere.

Así que podemos hacer que el año, o el período Año inicio - Año actual se actualice automáticamente.

Muy simple:

© <BOUCLE_yearbegin(ARTICLES){par date}{0,1}>
    #SET{year, #DATE|annee} #GET{year}
  </BOUCLE_yearbegin>
[(#GET{year}|=={#DATE|annee}|?{'' , - #DATE|annee} )]

Explicación

  • Por convención, asumimos que el año de inicio del sitio es el año del primer artículo publicado, lo cual a mi me suena bastante lógico.
  • Un bucle recupera esta información, la muestra y a la vez la guarda en una variable spip #SET{year, #DATE|annee}.
  • Fuera del bucle comparamos el año ya mostrado con el actual, obtenida de la baliza #DATE sin contexto. Si son iguales, no se muestra nada más (para que no quede algo como © 2009 - 2009, que quedaría bien feo). Pero si son distintos, se muestra el año actual

El resultado, será:

© 2007 - 2009

Y si la lógica o el reloj del servidor no fallan, en cada año nuevo se incrementará el año final del período sin que toquemos una línea de código.

Suscribirse a los comentarios por RSS

Con SPIP 2.0, más precisamente en la revisión 13407 se agregaron algunos esqueletos al juego de esqueletos estándar.

Unos muy interesantes son los que permiten suscribirse a los comentarios.

squelettes-dist/rss_forum_article.html
squelettes-dist/rss_forum_breve.html
squelettes-dist/rss_forum_rubrique.html
squelettes-dist/rss_forum_syndic.html
squelettes-dist/rss_forum_thread.html

Por ejemplo, en el foro de un articulo, podriamos incluir el siguiente código, antes del bucle de comentarios de un artículo:

[] Suscribite a los comentarios de este artículo

Un código análogo, llamando al esqueleto correspondiente y pasando el parámetro correcto, sirve para las breves, las secciones, los artículos sindicados y los hilos de discusión (en foros con comentarios anidados).

Mostrar u ocultar contenido, fácil

Adrian León consultó en la lista spip-es:

Estoy intentado poner balizas de este tipo:

#BOUTON_BLOCK

#DEBUT_BLOCK

Desde el editor del sitio privado en el texto de un artículo. No conozco la forma de que funcione desde ahí (sale escrito como texto en la página resultante. ¿Hay alguna manera de hacerlo?

Estaba intentando, me enteré después, usar este plugin

Al otro día yo contesté:

Hola Adrián. Desconocía de qué hablabas hasta que Marina mandó el link. Me parece que en el algunas ocasiones los plugins están opacando las soluciones más eficientes e ingeniosas, esas que buscabamos antes de que todo fuese "enchufable". ¡Spip se está wordpressisando!

Lo que quiero decir es que me parece que hay formas mejores de hacer eso. Yo tengo un ejemplo para darte

Andá al pie del artículo, y hacé click en Opinar: despliega (u oculta, depende del estado) el formulario de comentarios.

Es, sin balizas ni plugins, lo que parece que hace esa contrib.

Y el código es de risa: un pelín de jQuery (con su efecto toggle() )

El esqueleto del ejemplo que propongo es bien sencillo. El formulario aparece encerrado en una div y escondido con la propiedad CSS display:none. De manera simplificada [1] :

[(#FORMULAIRE_FORUM)]

Y el link que produce el efecto mostrar/ocultar (en este caso «opinar» )tiene este código.

Opinar

En perfecto argentino se diría: ¡una papa!

Breve explicación: Al hacer click sobre el link, se ejecuta el evento Onclick, que mendiante jQuery (que ya se encuentra en todo sitio SPIP si existe la baliza #INSERT_HEAD en el <head> de los esqueletos), se busca la el bloque con ID «form-comment» (o sea, el div contenedor del formulario), y se aplica toggle(), que es una funcion que si el bloque está oculto, lo muestra, y se está visible lo oculta. Simple y efectivo.

Permitiendo el uso desde la redacción

Hasta aquí el reemplazo al plugin, que no da una solución completa a la consulta de Adrían, porque esta solución también está programado en los esqueletos del sitio. Pero, con simples modificaciones, se puede usar dentro del texto de los artículos.

El truco es este: la balizas no se pueden usar en el texto, pero los modelos sí. Y como spip respeta el HTML, tenemos solución: generamo el link interruptor a través de un modelo [2].

Creamos un modelo dentro de modeles/toggle.html (dentro de la carpeta de nuestros esqueletos) con el siguiente código:

#ENV{texto}

¡Y listo!

Para usarlo, en el cuerpo del artículo se invocaría al modelo con dos parámetros: el identificador del contenedor, y el texto de link controlador.

Donde se quiera mostrar el link escribimos:

System Message: WARNING/2 (<string>, line 95)

Literal block expected; none found.

y donde queramos que vaya el contenido oculto:

Hola amigos, esto es una astucia para el compañero Adrian!
</div>

Sólo hay que asegurarse de que el ID del contenedor sea el mismo que el parametro div que pasamos a nuestro modelo. Por supuesto, esto permite tener múltiples bloques ocultos y link controladores.

El resultado

esto funciona?

¡Hola amigos, esto es una astucia para el compañero Adrian!