Blog Archives

SharePoint 2013 Drag & Drop en Document Library

Hola,

seguro que alguna vez os ha pasado, queréis arrastrar un documento a una librería de documentos y en Chrome funciona pero en IE no. Bueno, internet esta lleno de artículos acerca de esto, pero yo lo pongo otra vez así no se me olvida.

DragDrop1 DragDrop2 DragDrop3

Para que funcione, se tiene que tener :

  • Internet Explorer 11
  • Internet Explorer 10
  • Internet Explorer 9 con Office 2013 Instalado
  • Internet Explorer 8 con Office 2013 Instalado
  • FireFox última versión
  • Chrome última versión

La info la he obtenido de  http://blogs.technet.com/b/wkng/archive/2012/11/07/sharepoint-server-2013-drag-and-drop-contents-to-library.aspx

Guardar sitio como plantilla

Si alguna vez habéis intentado guardar un sitio de publicación como plantilla, os encontrareis que el link no está disponible. Esto es porque no está soportado como se comenta en este link http://support.microsoft.com/kb/2492356/es.

Seguro que alguien ha pensado lo siguiente: “Bueno, me creo un site que no sea de publicación, voy a la url de guardar sitio como plantilla y copio la url de la página.”

Bueno si alguien lo ha probado, ya sabrá que la url es /_layouts/15/savetmpl.aspx , pero al acceder nos sale el siguiente error:

ErrorGuardarComo

Problemón… pues después de buscar en google he encontrado que el problema es que el sitio tiene la variable “SaveSiteAsTemplateEnabled” a false. Para cambiar ese valor y ponerlo a true, he encontrado que se puede hacer o por PowerShell o por el SharePoint Desginer.

Yo lo he probado por PowerShell  y me ha funcionado.  Estos son los comandos:

$web = Get-SPWeb http://aplicacionweb/sitiopublicacion

$web.AllProperties["SaveSiteAsTemplateEnabled"] = "true"

$web.Update()

Después de esto, he podido guardar el sitio como plantilla y luego crear uno en base a esta plantilla, así que el flujo completo funciona. Otra cosa es que este bien hacerlo o que sea lo recomendable, allí cada uno con su conciencia.

Estos son los artículos que he encontrado en google :

http://blogs.msdn.com/b/how24/archive/2013/06/13/save-publishing-site-as-a-template.aspx

y

http://www.keremozen.com/2013/09/02/save-sharepoint-2013-publishing-site-as-template/

Error sincronización perfiles se usuario

He estado intentando configurar la sincronización de perfiles de usuario y me daba un error. Mirando el visor de eventos y el log del SharePoint, al final me encuentro con estos errores :

Exception occured while retrieving profiling information for the user=[username]: Microsoft.Office.Server.UserProfiles.UserNotFoundException: Error al recuperar el perfil de usuario.     at Microsoft.Office.Server.UserProfiles.UserProfileCache.GetUserData(UserProfileManager o…

ErrorPerfiles

Buscando más detalles, voy a mirar el log del servicio de sincronización, para ello ejecuto el programa “miisclient” que se encuentra en C:\Program Files\Microsoft Office Servers\15.0\Synchronization Service\UIShell.

Aqui vemos todo el detalle de la ejecución y para cada acción podemos ver sus detalles. En nuestro caso, viendo localizando el error del visor de eventos, vemos que el error exacto es : “Se denego el acceso a la replicación“.

SincronizacionPerfiles

El error lo que nos indica es que la cuenta que se encarga de la sincronización de perfiles de usuario, no tiene los permisos necesarios en el AD, concretamente necesita “Replicating directory changes“.  Siguiendo estos pasos le damos los permisos correctos y funciona correctamente. Para asignar los permisos, seguiremos los siguientes pasos : http://technet.microsoft.com/es-es/library/hh296982

En mi caso, eso no es todo. Este problema viene porque la sincronización de perfiles, funcionaba en SharePoint 2007, y el departamento de sistemas, no lo ve claro, y tiene “miedo” a conceder estos permisos, ya que piensa que son permisos bidereccionales. Pues para eso, les pase estos links, donde claramente indica que Unidireccional, que solo se usa para obtener datos de AD.

En este artículo lo explica.

http://technet.microsoft.com/es-es/library/jj219646.aspx

  • La opción de importación de AD no realiza sincronización bidireccional. Esto significa que los cambios realizados en los perfiles de usuario de SharePoint no se sincronizarán de vuelta con el controlador de dominios

i aquí también lo explica.

http://technet.microsoft.com/es-es/library/8451dde9-bbd1-4285-bc24-71bd795fb912#permission

La cuenta de sincronización para una conexión a Servicios de dominio de Active Directory (AD DS) debe tener los permisos siguientes:

  • Debe tener el permiso Replicar cambios de directorio en el dominio con el que realizará la sincronización. Para más información, vea la sección “Concesión del permiso Replicar cambios de directorio en un dominio” de Concesión de permisos de Servicios de dominio de Active Directory para la sincronización de perfiles en SharePoint Server 2013.

El permiso Repicar cambios de directorio le permite a una cuenta consultar los cambios en el directorio, pero no le permite hacer cambios en el directorio

Así, que sin miedo.

Añadir campo a un display template

En este post os explicaré como se puede añadir un campo a un display template.

En mi caso, estoy usando el display template “Item_CommonItem_Body.html” que se encuentra en –>_catalogs – masterpag -display Templates – search. Lo que quiero es añadir un campo personalizado de texto que le he llamado “entradilla” y la imagen del artículo.

Lo primero de todo, es asegurarnos que los 2 campos están como propiedades administradas, para ellos vamos a la aplicación de servicio de búsqueda y lo verificamos. En mi caso, sí que están, lo único que he tenido que marcar “consulta”, “búsqueda”, “recuperar”

search

Una vez sabemos que las propiedades administradas están correctamente configuradas, nos vamos a modificar el display template. Lo que tenemos que hacer es añadir estas propiedades en el tag <mso:ManagedPropertyMapping msdt:dt=”string”>.  Se añade como par de valores, “Campo”:”Valor”, “campo”,”valor”, ….

Añadimos las 2 propiedades <mso:ManagedPropertyMapping msdt:dt=”string”>’Entradilla’:’entradillaOWSMTXT’,’Image’:’PublishingImage’….

Para recuperar su valor, lo haremos de la siguiente manera: ( en este caso, si la noticia/artículo/página no tiene imagen, le pongo una por defecto )

var entradilla = $getItemValue(ctx, "Entradilla");
var imagenURL = $getItemValue(ctx, "Image");
var imagen = "";
if (!$isEmptyString(imagenURL.value))
{ imagen = imagenURL.value }else { imagen = "<img src = '/es-es/PublishingImages/download.jpg' alt='Imagen Por defecto'/>"}

Con esto ya tenemos los valores, ahora solo falta mostrarlos. Yo muestro la entradilla en una <p> y la foto en un <div>

<div id="_#= $htmlEncode(id + Srch.U.Ids.title) =#_" class="ms-srch-item-title">
<h3 class="ms-srch-ellipsis">
_#= titleHtml =#_
</h3>
<p>
_#= entradilla =#_
</p>
<div>
_#= imagen =#_
</div>
</div>

Com veis, con _#= campo =#_ se obtiene su valor y se puede mostrar como se quiera.

Espero os sirva de ayuda.