Mostrando entradas con la etiqueta Oculto. Mostrar todas las entradas
Mostrando entradas con la etiqueta Oculto. Mostrar todas las entradas

sábado, 21 de mayo de 2016

Ocultar el Contenido de Sitio del menú lateral en SharePoint 2013

Recientemente nos han pedido que ocultemos de todo SharePoint 2013 de la navegación lateral la opción de "Contenidos del Sitio". Para ello, basta con incluir en la página maestra o una referencia a una hoja de estilos o a un archivo Javascript que contenga:

CSS:
.ms-core-listMenu-verticalBox a.ms-core-listMenu-item.ms-core-listMenu-heading[href*='viewlsts.aspx'] {
   display:none;
}

Javascript:
$(".ms-core-listMenu-verticalBox a.ms-core-listMenu-item.ms-core-listMenu-heading[href*='viewlsts.aspx']").attr("style","display:none");


sábado, 23 de enero de 2016

Eliminar una palabra de un texto en SharePoint

Esta entrada es una continuación de la anterior. En la anterior entrada vimos como era posible completar un campo de tipo hipervínculo. Todo ello, vino de una lista llamada Miembros que servía para guardar todos nuestros contactos de diferentes grupos y una lista llamada Grupos, que nos servia para nombrar los diferentes grupos y para tener un "botón" que al hacer clic en el, nos permitiera mandar un correo a todos los miembros de ese Grupo.

Obviamente la siguiente parte que tuvimos que implementar era el mecanismo de dar de baja miembros de dicho grupo. El eliminar elementos de la lista de Miembros, es básico, es eliminar un elemento de la lista. Pero eso no nos eliminaría el correo asociado de la lista Grupos donde esta el "botón".

Así que lo que hicimos fue crear una columna de tipo elección en la lista Miembros, que llamamos Eliminar miembro, cuyo valor por defecto es No. Pero que cuando el usuario quiera eliminar un contacto, simplemente tenga que cambiar a . También cree una columna oculta de tipo texto llamada Todos, donde guardaría los valores de todos los email que había bajo el "botón" Enviar Email. Adicionalmente cree 4 campos calculados sobre la lista  Miembros: SinCorreoI, SinCorreoD, SinCorreoPre y SinCorreo.

Estos campos calculados nos servirán para almacenar los correos que hay a la izquierda del correo que queremos eliminar y sin el "mailto:", la parte derecha que hay tras el correo a eliminar, concatenar ambas partes y finalmente comprobar si es vacío o si quedan correos tras eliminar el correo a borrar.

Para ellos utilizamos también un flujo de trabajo sobre la lista Miembros que se lanza cuando se modifica un elemento y que tiene la siguiente forma:


Ejecutaremos sólo el borrado, si seleccionan Eliminar miembro a .

Lo siguiente que hacemos es guardar en la variable del flujo EmailTodos de tipo cadena, los emails que hay en el "botón".


Lo siguiente que hacemos es rellenar la columna oculta Todos de tipo una línea de texto, de nuestra lista Miembros con el valor de la variable EmailTodos, que contendrá todos los emails:


Tras ello, entra en funcionamiento las columnas calculadas que hemos citado antes:

  • SinCorreoI: =RIGHT(LEFT(Todos;(FIND(Email;Todos)-1));LEN(LEFT(Todos;(FIND(Email;Todos)-1)))-7)
  • SinCorreoD: =RIGHT(Todos;(LEN(Todos)-((FIND(Email;Todos)+LEN(Email)))))
  • SinCorreoPre: =SincorreoI&SinCorreoD
  • SinCorreo: =IF(SinCorreoPre="";"@";SinCorreoPre)
Lo siguiente que hacemos es esperar a que se ejecute y se rellenen los campos calculados. Personalmente tuve que poner una espera hasta que en el campo hubiera una arroba, ya que la acción esperar 1 minuto, no terminaba nunca por un problema de configuración de nuestro SharePoint que debemos revisar. Sino hubiera sido más óptimo poner una espera de 1 minutos y la última columna calculada hubiera sido:

  • SinCorreo: =IF(SinCorreoPre="";"";SinCorreoPre)
No obstante el resto del flujo lo separe en un paso más para asegurarme de que estaban todos los valores asignados.

En el paso 2, lo único que hacemos es establecer la variable del flujo EmailTodosSin de tipo cadena con el valor de la columna SinCorreo.

Lo último que hacemos es volver a rellenar el "botón" tal y como vimos en la anterior entrada, con el valor de la variable, que puede contener correo o no. Y en ambos casos, lo último que hacemos el borrar el elemento de la lista Miembros que queríamos borrar.

RESUMEN:

En las acciones de flujos de SharePoint no existe una función que nos haga eliminar una palabra de un cadena de texto. Sólo existe en 2013 la opción de quedarnos con una parte a partir de una posición determinada. Entonces para ello, utilizaremos columnas calculadas.



sábado, 27 de junio de 2015

Error en los espacios de reunión de SharePoint: 'g_InstanceID' no esta definido

Jugando con las páginas maestras en SharePoint, descubrí que al volver a aplicar la default.master, a un sitio que tuviera como subsitio un espacio de reuniones, me genero un error de Javascript que me decía que 'g_InstanceID' no esta definido y me impedía que al hacer clic en las fechas de la parte izquierda, pudiera ver el contenido de los documentos asociados a dicha fecha:


Para solucionar esto, basta con hacer una copia de la página maestra, en nuestro caso default.master, renombrarla y añadir tras la etiqueta <%@ Import Namespace=”Microsoft.SharePoint” %>:


<%@ Register Tagprefix="Meetings" Namespace="Microsoft.SharePoint.Meetings" 
Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, 
PublicKeyToken=71e9bce111e9429c" %>

Y tras la apertura de la etiqueta de <body> añadiremos:

<Meetings:PropertyBag runat="server"/>

Guardaremos la nueva pagina maestra, la publicaremos y la aplicaremos a nuestro espacio de reuniones y veremos como el problema se ha solucionado.

Fuente: http://sympmarc.com/2008/07/02/how-to-fix-recurring-meeting-workspace-error-%E2%80%98g_instanceid%E2%80%99-is-undefined/

sábado, 22 de junio de 2013

Autonumeración con reseteo anual en SharePoint

Por ponernos en situación. Un cliente nos pidió un sistema donde sus usuarios hicieran una solicitud y SharePoint le autoasignará un número único.

Hasta aquí todo bien, pues podemos utilizar la columna ID, propia de cualquier lista o biblioteca de SharePoint. Pero querían que el 1 de enero se reiniciará dicho indice. Además querían que el número asignado, se correspondiera a Número-Año, por ejemplo 289-2013.

Para esto, vamos a utilizar algo que ya he comentado en otra entrada anterior:
http://sharepointyamigos.blogspot.com.es/2013/04/uso-de-listas-auxiliares-en-flujos-de.html
Es decir, vamos a utilizar una lista auxiliar, para llevar el conteo del elemento en el que vamos.

Tendremos nuestra lista de recepción (Solicitudes), con tres campos a rellenar por los solicitantes:
Título, Descripción y Área.
También tendrá un campo de una línea de texto oculto llamado Número de solicitud y otro calculado, llamado Año.

Para ocultar una columna bastará con entrar en la administración de la lista:


Una vez dentro, iremos a la columna Configuración general y seleccionaremos la opción Configuración avanzada:


Lo primero que nos preguntarán en la Configuración avanzada, es si deseamos permitir la administración de tipos de contenido. Responderemos que :


Esto nos habilitará la opción de gestionar las columnas, en la zona Tipos de contenido:

Sí hacemos clic sobre nuestro Tipo de contenido, podremos ver las columnas que lo forman y su Estado:


 Al hacer clic en la columna Número de solicitud, podremos cambiar su Estado a Oculta:


La columna Año, en cambio será una columna calculada de tipo Número, a la que le asignaremos el año asociado al año de creación de la solicitud:


Y nuestra lista auxiliar (Contador) constará de dos campos. Año y Último número. En nuestro caso, ambos serán de tipo número.

Deberemos rellenar nuestra lista con elementos de la forma:


Esta lista nos servirá para que el flujo lanzado por la creación de un elemento en la lista Solicitudes, venga a esta lista, busque la entrada que coincida con el año actual, recoja el número de Solicitudes creadas para este año y lo incremente en uno y lo guarde de nuevo en la lista Contador.

Todo ello, lo haremos creando un flujo asociado a la lista Solicitudes:


Lo primero que haremos será seleccionar la Acción de Realizar el cálculo:


Primero definiremos que es lo que queremos sumar, en nuestro caso será el valor del campo Último Número de la entrada cuyo Año coincide con nuestro Año actual (obtenido en la columna calculada de Solicitudes):


SharePoint Designer nos advertirá de que puede darse que haya varios elementos que cumplan dicha condición de búsqueda, pero no tenemos nada que temer, ya que nosotros hemos definido un único elemento por cada año en la lista Contador:


Lo siguiente que haremos será sumarle 1 y guardarlo en una variable del flujo:


Lo último que nos queda es guardar ese número calculado en la variable en nuestra lista auxiliar. Para que así el valor de Último Número recoja nuestra ejecución:


También deberemos guardar el número asignado en la lista Solicitudes en el campo Número de solicitud, pero para ello, lo guardaremos ya con el formato deseado Número-Año, para ello utilizaremos una Cadena dinámica:


Ya sólo nos queda guardar el Número de solicitud en el elemento:


Adicionalmente, nos pidieron que se le notificará al peticionario vía correo electrónico, por eso añadimos un nuevo paso donde incluíamos este valor:


Tras todo este proceso, tendremos almacenado en nuestra lista de Solicitudes, la solicitud, con su Número de solicitud correspondiente y tendremos una lista de control, que nos permitirá saber cuantas peticiones hemos recibido cada año.


viernes, 14 de diciembre de 2012

Cómo recuperar elementos web de una página de SharePoint

En mi trabajo diario, en la parte de soporte. Hay un problema que es recurrente. Generalmente, tenemos clientes que son colaboradores o propietarios de la solución y se dedican a añadir contenido, editarlo y/o eliminarlo.

Pero muchas veces, por desconocimiento o por descuido, hacen clic sobre la opción Cerrar de un Elemento Web:


Y la llamada más común, es para decirme que no saben como, pero les ha desaparecido de tal página el componente. Entonces, me sonrió para mí y les pido un momento.

Accedo al sitio en cuestión, por ejemplo:
http://misitio/default.aspx

Y añado:
?contents=1

Quedando:
http://misitio/default.aspx?contents=1

Y esto nos llevará a una página de administración, similar a:


Donde podremos detectar ese componente que se ha escondido, ya que será el que tenga valor a NO, en la columna ¿Abrir en la página?.

Para hacer que vuelva a aparecer, bastará con seleccionar su cajetilla que hay a la izquierda y elegir la opción Restablecer:


Cuando volvamos a la página en cuestión, veremos que nuestro elemento ha vuelto a aparecer.

Si no es así, puede ser que haya algo en nuestro SharePoint que no este bien (Ya me ha pasado en un cliente) y la alternativa sería, abrir el espacio con SharePoint Designer.

Será fácilmente detectable la zona en cuestión, ya que en la vista en Diseño, será el que se presente como traslucido:



Bastaría con hacer clic con el botón derecho sobre esa zona y seleccionar Propiedades de elementos Web:


Y en la ventana que se nos abre, deberemos desmarcar la opción Cerrar el elemento Web y tras Aceptar en esa ventana y guardar todos los cambios, podremos ver como hemos recuperado dicho Elemento Web:



Si nuestro Elemento Web, no aparece en ninguna de estas dos opciones, será porque nuestros usuarios lo habrán eliminado de la pagina. Y eso es otro caso...