martes, 21 de enero de 2014

SP2013: Cambiar los colores predeterminados de la superposición de calendarios (Calendar Overlay)

Si habéis utilizado la característica de "superposición de calendarios", muchos habréis pensado que los colores que vienen por defecto son muy sosos, se parecen entre sí y además no dejan modificarse a nuestro gusto, a pesar de que el cliente SIEMPRE lo quiere modificar todo a su gusto.

¿Hay alguna solución fácil que se pueda implantar rápidamente sin "romper" nada? Efectivamente, ¿Quieres cambiar colores? Juguemos con CSS...

Eso sí, hay que tener en cuenta que en SharePoint (2010 y 2013) NUNCA podemos superponer más de 10 calendarios (el original + 9 overlays).

1.- Vayamos al calendrio en questión y editemos la página web que lo contiene.
2.- Añadamos el WebPart de "Script Editor"
3.- Pulsamos en "Edit Snippet" y añadimos el siguiente código (cambiando los códigos de color por los que nosotros queramos):

<style type="text/css">
.ms-acal-color1{
 BACKGROUND-COLOR: #92D051
 }
 .ms-acal-selcolor1{
 BACKGROUND-COLOR: #92D051
 }
 .ms-acal-apanel-color1{
 BORDER-COLOR: #92D051; BACKGROUND-COLOR: #92D051;
 }
 .ms-acal-color2{
 BACKGROUND-COLOR: #FFBD05
 }
 .ms-acal-selcolor2{
 BACKGROUND-COLOR: #FFBD05
 }
 .ms-acal-apanel-color2{
 BORDER-COLOR: #FFBD05; BACKGROUND-COLOR: #FFBD05;
 }
 .ms-acal-color3{
 BACKGROUND-COLOR: #943634
 }
 .ms-acal-selcolor3{
 BACKGROUND-COLOR: #943634
 }
 .ms-acal-apanel-color3{
 BORDER-COLOR: #943634; BACKGROUND-COLOR: #943634;
 }

 .ms-acal-color4{
 BACKGROUND-COLOR: #BCCAE4
 }
 .ms-acal-selcolor4{
 BACKGROUND-COLOR: #BCCAE4
 }
 .ms-acal-apanel-color4{
 BORDER-COLOR: #BCCAE4; BACKGROUND-COLOR: #BCCAE4;
 }

 .ms-acal-color5{
 BACKGROUND-COLOR: #B0A1C8
 }
 .ms-acal-selcolor5{
 BACKGROUND-COLOR: #B0A1C8
 }
 .ms-acal-apanel-color5{
 BORDER-COLOR: #B0A1C8; BACKGROUND-COLOR: #B0A1C8;
 }

 .ms-acal-color6{
 BACKGROUND-COLOR: #FFFFCB
 }
 .ms-acal-selcolor6{
 BACKGROUND-COLOR: #FFFFCB
 }
 .ms-acal-apanel-color6{
 BORDER-COLOR: #FFFFCB; BACKGROUND-COLOR: #FFFFCB;
 }

 .ms-acal-color7{
 BACKGROUND-COLOR: #9AFE68
 }
 .ms-acal-selcolor7{
 BACKGROUND-COLOR: #9AFE68
 }
 .ms-acal-apanel-color7{
 BORDER-COLOR: #9AFE68; BACKGROUND-COLOR: #9AFE68;
 }

 .ms-acal-color8{
 BACKGROUND-COLOR: #FFFD01
 }
 .ms-acal-selcolor8{
 BACKGROUND-COLOR: #FFFD01
 }
 .ms-acal-apanel-color8{
 BORDER-COLOR: #FFFD01; BACKGROUND-COLOR: #FFFD01;
 }

 .ms-acal-color9{
 BACKGROUND-COLOR: #F80302
 }
 .ms-acal-selcolor9{
 BACKGROUND-COLOR: #F80302
 }
 .ms-acal-apanel-color9{
 BORDER-COLOR: #F80302; BACKGROUND-COLOR: #F80302;
 }

.ms-acal-item div, .ms-acal-item div a,.ms-acal-apanel-item SPAN {color: #000000 !important}
</style>

Como veis se han de modificar 3 estilos para cada color. La última línea antes del </style> define el color de fondo por defecto del texto del calendario (lo cambié a negro para que se viera bien con amarillos y otros colores claros).

4.- Guardamos el resultado, y salimos de la edición del snippet y de la página web.
5.- Ya podemos ir añadiendo calendarios, teniendo en cuenta que el estilo 1 (ms-acal-color1 ...) se corresponderá con el primer color seleccionable del listado, el estilo 2 con el segundo, etc.

Una vez completada la superposición de calendarios, deberíais ver algo parecido a lo siguiente:


Por supuesto, esto tiene la ventaja de que únicamente afectará a ESTE calendario. Si queréis añadir los mismos colores a otros calendarios, copiad el mismo snippet en ellos. Si queréis otros calendarios con otros colores, coged el código del snippet y modificad los códigos de color a vuestro antojo.

¡Pues eso es todo! ¡De nuevo tenemos al cliente contento!

¡¡Un saludo!!