Muchas veces cuando creamos listas en SharePoint son listas concretas, vemos que no nos sirven las plantillas de SharePoint, sino que es más fácil utilizar la plantilla de Lista personalizada e ir añadiendo las columnas necesarias.
En ese caso, hay veces que nuestra lista no necesita una columna de tipo una línea de texto. Pero para sorpresa nuestra, el Tipo de Contenido que tiene por defecto es Elemento, el cual tiene una columna Título de tipo una línea de texto.
Sí hacemos clic en la columna a través de la configuración de la lista, vemos que no nos permite eliminarla, sólo indicar si es obligatoria o no:
Para poder ocultarla podremos hacerlo desde el Tipo de Contenido pero para ello deberemos habilitar la administración de tipos de contenidos. Para ello, lo primero que haremos será acceder a la configuración de la lista y seleccionar la opción de Configuración avanzada:
En la ventana que nos lleva, deberemos seleccionar Sí en la pregunta de permitir la administración de tipos de contenido:
Tras aceptar dicho cambio, podremos ver como nos aparece una nueva zona en la configuración de la lista, destinada a los tipos de contenidos, mostrándonos el tipo del contenido Elemento, sobre el cual podremos hacer clic:
Una vez dentro del tipo de contenido, podremos acceder a la columna Título, que es la columna que queremos ocultar:
Tras ello, ya podremos seleccionar, si la queremos requerida, opcional u oculta, como es nuestro caso:
Esto hará que la columna ya no nos aparezca en los formularios por defecto de la lista (NewForm, EditForm y DispForm).
Mi experiencia con esta columna, me recomienda completarla por medio de un flujo, con el ID o el valor que sea y mostrarla en las vistas de la lista. Ya que esta columna es la que contiene todo el menú de edición, que nos permite acceder al DispForm, EditForm, Flujos, Eliminar... Mientras que la columna Editar, sólo me permite acceder al EditForm:
sábado, 9 de abril de 2016
sábado, 19 de marzo de 2016
Flujo de trabajo (tipo 2010) reutilizable en SharePoint 2013
En un cliente hemos montado la nueva versión 2013 y vistos nuestros antecedentes con ellos, nos han dado carta blanca para personalizarlo como nosotros veamos mejor. Así que una de las decisiones que hemos tomado, es trabajar con tipo de contenidos. Esto nos reporta una serie de mejoras que no tenemos si trabajos directamente creando las columnas biblioteca a biblioteca o lista a lista.
Una de esas mejoras, es poder utilizar flujos de trabajo reutilizables:
Si procedemos a crear un flujo reutilizable, una de las cosas que nos lo marcará sera el tipo de contenido al que lo asociamos. En nuestro ejemplo utilizaremos Dossier de Prensa:
Tras crear nuestro flujo con sus acciones y condiciones, lo guardamos y podremos ver que podemos decidir si queremos que puedan o no, lanzarlo a mano, automático cuando se crea o se modifica elementos.
También podemos observar que se engloba dentro de Flujo de trabajo reutilizable:
De hecho, SharePoint Designer nos lo mostrará como un flujo reutilizable globalmente, como son los propios flujos de SharePoint de Aprobación, Recopilación de firmas, etc...
Ahora sólo deberemos acceder con el navegador a las bibliotecas donde utilicemos ese tipo de contenido y desde el menú contextual superior de la biblioteca, elegiremos la opción de Agregar un flujo de trabajo:
Esto nos llevará a una página donde podremos seleccionar el tipo de contenido y tras ello, nos saldrá nuestro flujo, y por último sólo quedará definir que evento es el que nos lanzará nuestro flujo:
Resumen: Crear flujos reutilizables asociados a un tipo de contenido, nos sirve para poder gestionar cualquier cambio desde un único sitio y una única vez. El cómo encima de estas líneas.
Una de esas mejoras, es poder utilizar flujos de trabajo reutilizables:
Tras crear nuestro flujo con sus acciones y condiciones, lo guardamos y podremos ver que podemos decidir si queremos que puedan o no, lanzarlo a mano, automático cuando se crea o se modifica elementos.
También podemos observar que se engloba dentro de Flujo de trabajo reutilizable:
De hecho, SharePoint Designer nos lo mostrará como un flujo reutilizable globalmente, como son los propios flujos de SharePoint de Aprobación, Recopilación de firmas, etc...
Ahora sólo deberemos acceder con el navegador a las bibliotecas donde utilicemos ese tipo de contenido y desde el menú contextual superior de la biblioteca, elegiremos la opción de Agregar un flujo de trabajo:
Esto nos llevará a una página donde podremos seleccionar el tipo de contenido y tras ello, nos saldrá nuestro flujo, y por último sólo quedará definir que evento es el que nos lanzará nuestro flujo:
Resumen: Crear flujos reutilizables asociados a un tipo de contenido, nos sirve para poder gestionar cualquier cambio desde un único sitio y una única vez. El cómo encima de estas líneas.
sábado, 20 de febrero de 2016
Recordatorio de vencimiento de tareas (III)
En dos entradas anteriores, ya aborde este tema:
http://sharepointyamigos.blogspot.com.es/2012/07/recordatorio-de-vencimiento-de-tareas.html
http://sharepointyamigos.blogspot.com.es/2012/11/recordatorio-de-vencimiento-de-tareas-ii.html
Para que la directiva de información se lance todos los días, es cierto que hay que modificar dos tareas programadas de la administración central. Que por defecto, viene configuradas a que se lancen semanalmente y que debido a este tema, nos interesa modificar a que se lancen diariamente.
Estas tareas son "Information management policy" y "Expiration policy".
Para ello, accederemos a la administración central de nuestro SharePoint y en el menú lateral elegiremos la opción Monitoring:
En la página que se nos abre, deberemos eligir la opción Review job definitions, que se encuentra dentro del menú Timer Jobs:
Dentro de la cual, deberemos buscar las tareas programas "Information management policy" y "Expiration policy". Para cambiar la periodicidad deberemos hacer clic en el nombre de la tarea deseada, de la aplicación web deseada:
Y una vez dentro, cambiaremos la periodicidad a diaria y pondremos la hora de inicio y la hora de fin de la tarea programada:
Haremos lo mismo para la tarea "Expiration policy" teniendo en cuenta que debe ejecutarse en el tiempo, tras la tarea "Information management policy":
Y solucionado, todo lo comentando en las entradas anteriores, serán validas y se ejecutarán todos los días.
IMPORTANTE:
La tarea Expiration policy debe ejecutarse tras la de Information management policy y ambas en el mismo día y por supuesto, que se ejecuten antes de la hora interesada de recibir los correos.
http://sharepointyamigos.blogspot.com.es/2012/07/recordatorio-de-vencimiento-de-tareas.html
http://sharepointyamigos.blogspot.com.es/2012/11/recordatorio-de-vencimiento-de-tareas-ii.html
Para que la directiva de información se lance todos los días, es cierto que hay que modificar dos tareas programadas de la administración central. Que por defecto, viene configuradas a que se lancen semanalmente y que debido a este tema, nos interesa modificar a que se lancen diariamente.
Estas tareas son "Information management policy" y "Expiration policy".
Para ello, accederemos a la administración central de nuestro SharePoint y en el menú lateral elegiremos la opción Monitoring:
En la página que se nos abre, deberemos eligir la opción Review job definitions, que se encuentra dentro del menú Timer Jobs:
Dentro de la cual, deberemos buscar las tareas programas "Information management policy" y "Expiration policy". Para cambiar la periodicidad deberemos hacer clic en el nombre de la tarea deseada, de la aplicación web deseada:
Y una vez dentro, cambiaremos la periodicidad a diaria y pondremos la hora de inicio y la hora de fin de la tarea programada:
Haremos lo mismo para la tarea "Expiration policy" teniendo en cuenta que debe ejecutarse en el tiempo, tras la tarea "Information management policy":
Y solucionado, todo lo comentando en las entradas anteriores, serán validas y se ejecutarán todos los días.
IMPORTANTE:
La tarea Expiration policy debe ejecutarse tras la de Information management policy y ambas en el mismo día y por supuesto, que se ejecuten antes de la hora interesada de recibir los correos.
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 Sí. 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 Sí.
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:
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 Sí. 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:
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, 12 de diciembre de 2015
Campo de hipervínculo en flujos de trabajo 2013
Esta semana un cliente nos ha propuesto un reto. El reto consistía en tener en una lista todos los miembros de los diferentes grupos de trabajo con los que trataban. Hasta aquí, sencillo. Lo siguiente era tener un "botón" que les abriera Outlook y le pusiera todos los correos de los miembros de ese grupo. Esto ya tiene más interés.
La solución una lista llamada Grupos donde listemos los grupos y un "botón" que ponga Enviar Email.
Ese "botón" es un campo de tipo hipervínculo donde la dirección web es mailto:david@dominio.es;blanca@dominio.es; .... Mientras que la descripción del campo pone Enviar Email.
Para dar de alta los miembros, tendremos otra lista llamada Miembros, donde tenemos tres campos (pueden ser más pero nosotros sólo necesitamos esos tres) Nombre (Texto), Grupo (Búsqueda sobre la lista Grupos) y Email (Una linea de texto).
¿Cómo creamos y rellenamos el "botón"? Con un flujo de trabajo sobre la lista Miembros que se lanza cuando se crea un nuevo elemento.
¿Qué hará nuestro flujo?
Resumiendo: Tendremos dos ramas, una por la que iremos si el grupo tiene emails asociados y otra por la que el grupo aún no tiene emails asociados. La condición será:
Que consiste en ir a la lista Grupos y miraremos el campo Emails, que es donde guardaremos nuestros emails concatenados con ";", para ello, queremos el elemento de la lista Grupos, cuyo nombre coincida con el grupo del elemento que ha lanzado el flujo en la lista Miembros.
Si avanzamos por la primera rama, guardamos en una variable del flujo (EmailAnteriores) de tipo Cadena, los emails que ya hay de ese grupo (los recogemos como campo de tipo Dirección URL):
Para en un siguiente paso concatenar esos emails (recuperamos la variable EmailAnteriores con el tipo Dirección de correo electrónico) con el email de elementos de la lista Miembros que ha lanzado el flujo:
El siguiente paso será guardar esa concatenación de los email anteriores y el actual en otra variable de Flujo de tipo cadena (EmailsFinal), pero completar también un campo de descripción que ponga Enviar Email.
Para ello la cadena se genera, con la variable Email donde se encuentran todos los emails del grupo, y separado por una coma y un espacio, el nombre a mostrar:
Y finalmente sólo nos quedará guardar la variable de flujo EmailsFinal, sobre el campo Emails de la lista Grupos, que es nuestro "botón" Enviar Email:
La segunda rama, será la que nos generé el primer correo en la lista Grupos, porque hemos agregado el primer miembro en la lista Miembros. Con la única particularidad de que como estamos guardando en un campo de tipo hipervínculo, deberemos poner delante la palabra "mailto:":
RESUMEN:
Para completar campos de tipo hipervínculo a través de un flujo, deberemos crear una variable de tipo cadena, y completar con la "url, texto descriptivo". Muy importante la coma y el espacio.
La solución una lista llamada Grupos donde listemos los grupos y un "botón" que ponga Enviar Email.
Ese "botón" es un campo de tipo hipervínculo donde la dirección web es mailto:david@dominio.es;blanca@dominio.es; .... Mientras que la descripción del campo pone Enviar Email.
Para dar de alta los miembros, tendremos otra lista llamada Miembros, donde tenemos tres campos (pueden ser más pero nosotros sólo necesitamos esos tres) Nombre (Texto), Grupo (Búsqueda sobre la lista Grupos) y Email (Una linea de texto).
¿Cómo creamos y rellenamos el "botón"? Con un flujo de trabajo sobre la lista Miembros que se lanza cuando se crea un nuevo elemento.
¿Qué hará nuestro flujo?
Resumiendo: Tendremos dos ramas, una por la que iremos si el grupo tiene emails asociados y otra por la que el grupo aún no tiene emails asociados. La condición será:
Si avanzamos por la primera rama, guardamos en una variable del flujo (EmailAnteriores) de tipo Cadena, los emails que ya hay de ese grupo (los recogemos como campo de tipo Dirección URL):
Para en un siguiente paso concatenar esos emails (recuperamos la variable EmailAnteriores con el tipo Dirección de correo electrónico) con el email de elementos de la lista Miembros que ha lanzado el flujo:
El siguiente paso será guardar esa concatenación de los email anteriores y el actual en otra variable de Flujo de tipo cadena (EmailsFinal), pero completar también un campo de descripción que ponga Enviar Email.
Para ello la cadena se genera, con la variable Email donde se encuentran todos los emails del grupo, y separado por una coma y un espacio, el nombre a mostrar:
Y finalmente sólo nos quedará guardar la variable de flujo EmailsFinal, sobre el campo Emails de la lista Grupos, que es nuestro "botón" Enviar Email:
La segunda rama, será la que nos generé el primer correo en la lista Grupos, porque hemos agregado el primer miembro en la lista Miembros. Con la única particularidad de que como estamos guardando en un campo de tipo hipervínculo, deberemos poner delante la palabra "mailto:":
RESUMEN:
Para completar campos de tipo hipervínculo a través de un flujo, deberemos crear una variable de tipo cadena, y completar con la "url, texto descriptivo". Muy importante la coma y el espacio.
domingo, 15 de noviembre de 2015
Trabajando con las Master Pages de SharePoint 2013
Si estáis acostumbrados a trabajar con SharePoint 2007 y/o 2010, seguro que más de una vez habréis tenido que modificar su página maestra o master page.
Para ello, habréis abierto el sitio raíz de vuestra colección de sitios con SharePoint Designer y habréis accedido a la carpeta _catalogs/masterpage, donde están esos maravillosos archivos .master:
O bien, habréis accedido vía web a través de la opción Páginas maestra y diseños de página, que se encuentra en la configuración de sitio del sitio raíz de vuestra colección de sitios:
Pues bien, habréis modifica esos archivos .master y seguro que con un poco de trabajo, habéis conseguido lo que queríais: Modificar las migas, incluir una CSS, incluir un JS...
Al ir a hacer esto en 2013, puede que os hayáis encontrado una sorpresa y tras copiar el archivo .master, habréis intentado renombrarlo y os habrá salido un mensaje que dice: Error del servidor: Este archivo no se puede mover, eliminar, editar ni se puede cambiar su nombre.
Comprobareis que tampoco podéis borrarlo.
La solución para todo, es copiar el archivo .html que tiene el mismo nombre. Tras ello, ya podremos por medio del archivo .html, modificar el nombre, eliminarlo, etc... Pero en cambio, si lo que hacemos es modificar el código del archivo .master, veremos que no nos deja. Eso es porque el código .master, esta asociado al .html.
La manera de modificar la master page que plantea Microsoft, es por medio de la edición del archivo .html asociado. Esto puede ser muy engorroso y no muy agradable (al menos esa ha sido mi experiencia).
Para ello, existe la posibilidad de desasociar el .html del .master y trabajar con el .master directamente. Bastaría con acceder a la configuración del sitio raíz de nuestra colección de sitios y elegir la opción Páginas maestras y diseños de página que se encuentra bajo la agrupación Galerías del diseñador web:
Una vez dentro, buscaremos nuestro archivo .html y editaremos sus propiedades, desmarcando la opción de Archivo asociado:
A partir de este momento, ya será posible modificar el archivo .master, tal y como estábamos acostumbrados en las versiones 2007 y 2010.
Importante: NO volver a marcar esta opción, ya que como nos advierte, que nos macharía nuestro archivo .master, con el código generado a paritr del .html que no ha sido modificado.
Para ello, habréis abierto el sitio raíz de vuestra colección de sitios con SharePoint Designer y habréis accedido a la carpeta _catalogs/masterpage, donde están esos maravillosos archivos .master:
O bien, habréis accedido vía web a través de la opción Páginas maestra y diseños de página, que se encuentra en la configuración de sitio del sitio raíz de vuestra colección de sitios:
Al ir a hacer esto en 2013, puede que os hayáis encontrado una sorpresa y tras copiar el archivo .master, habréis intentado renombrarlo y os habrá salido un mensaje que dice: Error del servidor: Este archivo no se puede mover, eliminar, editar ni se puede cambiar su nombre.
Comprobareis que tampoco podéis borrarlo.
La solución para todo, es copiar el archivo .html que tiene el mismo nombre. Tras ello, ya podremos por medio del archivo .html, modificar el nombre, eliminarlo, etc... Pero en cambio, si lo que hacemos es modificar el código del archivo .master, veremos que no nos deja. Eso es porque el código .master, esta asociado al .html.
La manera de modificar la master page que plantea Microsoft, es por medio de la edición del archivo .html asociado. Esto puede ser muy engorroso y no muy agradable (al menos esa ha sido mi experiencia).
Para ello, existe la posibilidad de desasociar el .html del .master y trabajar con el .master directamente. Bastaría con acceder a la configuración del sitio raíz de nuestra colección de sitios y elegir la opción Páginas maestras y diseños de página que se encuentra bajo la agrupación Galerías del diseñador web:
Una vez dentro, buscaremos nuestro archivo .html y editaremos sus propiedades, desmarcando la opción de Archivo asociado:
A partir de este momento, ya será posible modificar el archivo .master, tal y como estábamos acostumbrados en las versiones 2007 y 2010.
Importante: NO volver a marcar esta opción, ya que como nos advierte, que nos macharía nuestro archivo .master, con el código generado a paritr del .html que no ha sido modificado.
domingo, 18 de octubre de 2015
Cómo habilitar varias líneas de texto enriquecido en una biblioteca
Seguro que si lleváis un tiempo trabajando con SharePoint, estaréis acostumbrados a que el tipo de columna de Varias líneas de texto, pueda ser de Texto sin formato, Texto enriquecido o Texto enriquecido mejorado.
Pero si probáis a hacer esa misma columna en una biblioteca, veréis que no os da la opción, ¿dónde está?, ¿lo he soñado?. No, por defecto y desde el navegador la opción de elegir entre los tipos de columna de Varias líneas de texto sólo esta disponible para las listas.
Pero como todo en SharePoint, tiene solución.
Bastará con añadir nuestra columna de tipo Varías líneas de texto, abrir el sitio donde se encuentra nuestra biblioteca con SharePoint Designer y seleccionar Listas y bibliotecas, tras seleccionar nuestra biblioteca. Podremos hacer clic sobre Editar las columnas de la lista.
Esto nos mostrará las columnas de nuestra biblioteca y tras selección las columna deseada, en mi caso Borrar, podremos hacer clic en la ribbon superior en la opción Configuración de columnas y esto nos abrirá una ventana, donde podremos dejarla como Texto sin formato, o bien cambiarla a Texto enriquecido o Texto enriquecido mejorado:
Guardaremos los cambios y listo.
Pero si probáis a hacer esa misma columna en una biblioteca, veréis que no os da la opción, ¿dónde está?, ¿lo he soñado?. No, por defecto y desde el navegador la opción de elegir entre los tipos de columna de Varias líneas de texto sólo esta disponible para las listas.
Pero como todo en SharePoint, tiene solución.
Bastará con añadir nuestra columna de tipo Varías líneas de texto, abrir el sitio donde se encuentra nuestra biblioteca con SharePoint Designer y seleccionar Listas y bibliotecas, tras seleccionar nuestra biblioteca. Podremos hacer clic sobre Editar las columnas de la lista.
Esto nos mostrará las columnas de nuestra biblioteca y tras selección las columna deseada, en mi caso Borrar, podremos hacer clic en la ribbon superior en la opción Configuración de columnas y esto nos abrirá una ventana, donde podremos dejarla como Texto sin formato, o bien cambiarla a Texto enriquecido o Texto enriquecido mejorado:
Guardaremos los cambios y listo.
Suscribirse a:
Entradas (Atom)










