Social Icons

lunes, 18 de enero de 2010

Viajando en el tiempo con una nube de tags

Vaya tela, escribo este post para tapar un poco el de antes y me sale este título, no tengo remedio, soy un impresentable.

Bueno, a lo que vamos. Estamos haciendo unos desarrollos para hacer de MOSS un facebook ¿ahora que ya está aquí SP2010? sí ahora.Y entre otras cosas como comentarios a las publicaciones y valoraciones se nos requería una nube de tags.

Delante de un Croissant a la plancha nos planteamos la estrategia para realizar semejante proeza sin par y se nos ocurrió que para llevar el conteo de ocurrencias de cada tag en la web íbamos a tener una lista en el sitio raíz y allí actualizaríamos cada vez que alguien hiciese checkin del elemento. En nuestro caso nos venía de perlas suscribirnos al evento ItemCheckedIn porque lo que necesitamos categorizar taggear pa ti y pa mi son páginas de publicación, pero ¿Cómo puedo actualizar los valores de la lista de tags? Si simplemente sumo uno a la lista de tags y no borro el antiguo no tendré una lista consistente… Necesitamos saber cuál había marcado justo antes del checkin.

Pues nos creamos un método extensor basado en las versiones anteriores del elemento y podremos conocerlo sin problemas.

public static string PreviousValueInHystory(this SPListItem item, string fieldName)
{
Object obj = null;

if (item.Versions.Count > 0)
obj = item.Versions[0][fieldName];

if (obj == null)
return string.Empty;
else
return string.IsNullOrEmpty(obj.ToString()) ? string.Empty : obj.ToString();
}

Por cierto, si os suscribís al ItemCheckedIn tendreis que cambiar el Versions[0] por Versions[1] porque el cero será el que acabáis de crear en el mismo momento de llamar al método.

No hay comentarios: