SharePoint: Como crear un proveedor personalizado para generar Documents ID!

Como sabéis, una de las características novedosas que incorporó SharePoint 2010 a nivel de ECM (Enterprise Content Management) fue la posibilidad de asignar un ID de documento único a cada documento de una colección de sitios de forma que por una parte se facilitase su localización y por otra se permitiese asignar ese ID de acuerdo a un cierto patrón. Una pregunta habitual cuando se trabaja con ID de documentos es si es posible que ese ID se genere de una forma personalizada…la respuesta es que sí a través de crear un proveedor personalizado para generar esos Document ID. Os dejo varias referencias al respecto:

Anuncios

SharePoint Online: Nuevo Look & Feel para la página “Sitios” (“Sites”)!

Dentro de los últimos cambios introducidos en SharePoint Online, estos días nos hemos encontrado conque la página “Sitios” (“Sites”) tiene un nuevo Look & Feel y también funcionalidad adicional:

  • A nivel de Look & Feel, nos encontramos conque además del nombre y Url de cada sitio que estamos siguiendo, se muestra su logotipo. Esto es así tanto para el listado de sitios de Sites I’m following como para el listado Suggested sites to follow.
  • A nivel de funcionalidad, se añadido una caja de búsqueda para facilitar la búsqueda de información desde “Sitios” aunque desde mi punto de vista, le falta un poco de funcionalidad y se podría haber aprovechado para añadir la búsqueda inteligente que se incorporó a OneDrive.

image

SharePoint Online: New Look & Feel for the Sites page!

One of the last changes we have seen in SharePoint Online is the new Look & Feel for the “Sites” page and also some additional functionality added by Microsoft:

  • In terms of Look & Feel, the site logo has been added to the site name and site URL in both the “Sites I’m following!” list and the “Suggested sites to follow” one.
  • On the other hand, Microsoft has added a search box to the “Sites” page so user can easy find content / people / conversations from here. This search box addition is great, but I’m missing here the smart search Microsoft added to OneDrive for business some weeks ago.

image

SharePoint: Some helpful Urls / Query Strings (I)!

Reading this post written by my MVP fellow Sahil Malik about some useful SharePoint query strings, I have decided to extend Sahil’s article remarking which of these query strings are available in SharePoint Online (If you want to know the purpose of each query string, I strongly recommend to read Sahil’s post):

  • {Url de la Página}/?contents=1, provides access to the Web Parts maintenance page. As you know, this page allows you to delete problematic WebParts on your page, restore hiding Web Parts, close a Web Part, etc.
  • 15/UsageDetails.aspx, /_layouts/spusageweb.aspx, _layouts/15/storman.aspx, they provide information about site usage and storage usage in a site / site collection.
  • ?toolpaneview=2, classic view (SharePoint 2007 style) of the Web Parts gallery with all the Web Parts you can add in a page.
  • ?mobile=1 y ?mobile=0, allows you to switch between the default mobile view available in SharePoint and the normal view.
  • AllItems.aspx?FilterField1=fieldName&FilterValue1=value, allows you to filter the All Items view in a list specifying the column you want to use as a filter and the filter value.
  • /_layouts/sitemanager.aspx, this is really cool since it allows you to access to the Site Manager page where you can see all your information architecture for the current site at a glance. Additionally, you can perform Copy and Move operations with elements in the site hierarchy (sites, lists, document libraries, etc).
  • Lists/TaxonomyHiddenList/AllItems.aspx, shortcut to the Taxonomy hidden list.
  • _layouts/15/new.aspx?ListTemplate=100, displays the page to create a custom list in the site.
  • /_layouts/15/closeConnection.aspx?loginasanotheruser=true, allows to sign in the site with a different user.
  • /_layouts/savetmpl.aspx, provides access to the save as site template functionality.

I hope you find this information useful.

SharePoint: Algunas Urls de utilidad (I)!

Leyendo este post de Sahil Malik sobre Urls útiles cuando trabajamos con SharePoint, me ha parecido una buena idea replicar su post en mi blog y de paso ir añadiendo a futuro nuevas entradas con otras Urls útiles que tenemos que conocer:

  • Acceso a la página de mantenimiento de Web Parts que nos permite, entre otras cosas, eliminar aquellas Web Parts que puedan estar dando problemas en una cierta página: {Url de la Página}/?contents=1
  • Acceso a información de uso a nivel de sitio y de colección de sitios: 15/UsageDetails.aspx o /_layouts/spusageweb.aspx . Si lo que queréis es acceder directamente a información del estado de almacenamiento, entonces tendréis que ir a la página _layouts/15/storman.aspx
  • Visualización alternativa del catálogo de Web Parts añadiendo el query string: ?toolpaneview=2
  • Cambio entre la vista móvil y vista no móvil: ?mobile=1 vs. ?mobile=0
  • Filtrar una lista de forma simple mediante la Url: AllItems.aspx?FilterField1=fieldName&FilterValue1=value
  • Visualizar, para cualquier sitio, su contenido y estructura: /_layouts/sitemanager.aspx
  • Acceso a la lista de información del usuario: /_catalogs/users/simple.aspx
  • Acceso a la lista oculta de taxonomía: Lists/TaxonomyHiddenList/AllItems.aspx
  • Crear una nueva lista de una sola vez: /_vti_bin/owssvr.dll?Cmd=NewList&ListTemplate=100&Title=TestList&LangID=1033
  • Acceso rápido para crear un nuevo enlace en el menú de acceso rápido: _layouts/15/new.aspx?ListTemplate=100
  • Obtener CAML para una lista: /_vti_bin/owssvr.dll?Cmd=Display&List=TestList&LangID=1033
  • Iniciar sesión como otro usuario: /_layouts/15/closeConnection.aspx?loginasanotheruser=true
  • Guardar un sitio como plantilla: /_layouts/savetmpl.aspx

Nota: Algunas de estas Urls sólo son operativas para SharePoint OnPremises…otras funcionan también en SharePoint Online. En concreto:

  • {Url de la Página}/?contents=1
  • 15/UsageDetails.aspx, /_layouts/spusageweb.aspx, _layouts/15/storman.aspx
  • ?toolpaneview=2
  • ?mobile=1 y ?mobile=0
  • AllItems.aspx?FilterField1=fieldName&FilterValue1=value
  • /_layouts/sitemanager.aspx
  • Lists/TaxonomyHiddenList/AllItems.aspx
  • _layouts/15/new.aspx?ListTemplate=100
  • /_layouts/15/closeConnection.aspx?loginasanotheruser=true
  • /_layouts/savetmpl.aspx

SharePoint: Como ordenar las vistas de una lista (I)!

Esta pregunta la realizaban el otro día en los foros de Office 365 con el objetivo de poder ordenar de una forma personalizada las vistas en el combo Vistas de una lista cualquiera de SharePoint…como casi todo en SharePoint, por supuesto que es posible dar respuesta a este tipo de requerimiento…aunque (a falta de pruebas), con matices:

  • Programáticamente, aquí os dejo un ejemplo de como conseguir una ordenación a la carta haciendo uso de PowerShell: http://www.codeproject.com/Articles/155803/How-to-sort-View-List-DropDown-in-SharePoint-2010.aspx. La misma idea aplica si se hace uso del modelo de objetos de servidor, y faltaría revisar si con el modelo de objetos en cliente es posible realizar esta aproximación. Por lo tanto, el ejemplo os vale para SharePoint 2013 OnPremise, y para Online depende de si el modelo de objetos en cliente nos ofrece la posibilidad de realizar esta ordenación.
  • Fuera de la opción más “tequi”, si sabemos que el combo ordena las vistas siguiendo una ordenación alfabética, lo que podemos hacer es añadir al nombre de las vistas un número de modo que las consigamos ordenar como deseamos:  http://thevirtualzoneblog.wordpress.com/2011/03/10/views-in-alphabetical-order/

Espero que el post os sea de utilidad.

SharePoint 2013: Como crear, actualizar y borrar property bags con PowerShell (I)!

Como sabéis, el uso de Property Bags es una de las técnicas que tenemos disponibles en SharePoint para poder definir propiedades de configuración en los distintos niveles lógicos de la arquitectura de la plataforma (Granja, Aplicación Web, Colección de Sitios, Sitio, Lista y Carpeta). Las Property Bags son muy útiles para almacenar cadenas de conexión, datos específicos para nuestras soluciones, etc. En este post, os voy a enseñar como crear, actualizar y borrar property bags por medio de PowerShell…como veréis en el script que os pego a continuación (y que os podéis descargar desde el siguiente enlace de la Script Gallery de TechNet How to create, update and delete a property bag for a site collection), el truco pasa por saber trabajar con la propiedad AllProperties definida en este caso a nivel de sitio de SharePoint…el resto, no es más que jugar con añadir, actualizar y borrar las propiedades por medio de la clave definida.

   1: ############################################################################################################################################

   2: # This script allows to work with SharePoint property bags at the Site Collection Level

   3: # Required Parameters: 

   4: #    ->$sSiteCollection: Site Collection where we want to do add a property bag.

   5: #    ->$sOperationType: Operation type to be done with the property bag - Create - Update - Delete.

   6: #    ->$sPropertyBagKey: Key for the property bag to be added.

   7: #    ->$sPropertyBagValue: Value for the property bag addded.

   8: ############################################################################################################################################

   9:  

  10: If ((Get-PSSnapIn -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null ) 

  11: { Add-PSSnapIn -Name Microsoft.SharePoint.PowerShell }

  12:  

  13: $host.Runspace.ThreadOptions = "ReuseThread"

  14:  

  15: #Definition of the function that allows to create, update and remove a property bag

  16: function WorkWithSiteCollectionPropertyBags

  17: {

  18:     param ($sSiteCollection,$sOperationType,$sPropertyBagKey,$sPropertyBagValue)

  19:     try

  20:     {

  21:         $spSite=Get-SPSite -Identity $sSiteCollection

  22:         $spwWeb=$spSite.OpenWeb()

  23:         switch ($sOperationType) 

  24:         { 

  25:         "Create" {

  26:             Write-Host "Adding property bag $sPropertyBagKey to $sSiteCollection !!" -ForegroundColor Green                        

  27:             $spwWeb.AllProperties.Add($sPropertyBagKey,$sPropertyBagValue)           

  28:             $spwWeb.Update()            

  29:             $sPropertyBag=$spwWeb.AllProperties[$sPropertyBagKey]

  30:             Write-Host "Property bag $sPropertyBagKey has the value $sPropertyBag" -ForegroundColor Green

  31:             } 

  32:         "Read" {

  33:             Write-Host "Reading property bag $sPropertyBagKey" -ForegroundColor Green                 

  34:             $sPropertyBag=$spwWeb.AllProperties[$sPropertyBagKey]

  35:             Write-Host "Property bag $sPropertyBagKey has the value $sPropertyBag" -ForegroundColor Green

  36:             }

  37:         "Update" {

  38:             $sPropertyBag=$spwWeb.AllProperties[$sPropertyBagKey]

  39:             Write-Host "Property bag $sPropertyBagKey has the value $sPropertyBag" -ForegroundColor Green        

  40:             Write-Host "Updating property bag $sPropertyBagKey for $sSiteCollection" -ForegroundColor Green            

  41:             $spwWeb.AllProperties[$sPropertyBagKey]="SPSiteColPBagUpdatedValue_2"                        

  42:             $sPropertyBag=$spwWeb.AllProperties[$sPropertyBagKey]

  43:             Write-Host "Property bag $sPropertyBagKey has the value $sPropertyBag" -ForegroundColor Green

  44:             } 

  45:         "Delete" {

  46:             Write-Host "Deleting property bag $sPropertyBagKey" -ForegroundColor Green                                    

  47:             $spwWeb.AllProperties.Remove($sPropertyBagKey)            

  48:             $spwWeb.Update()            

  49:             $sPropertyBag=$spwWeb.AllProperties[$sPropertyBagKey]

  50:             Write-Host "Property bag $sPropertyBagKey has the value $sPropertyBag" -ForegroundColor Green                

  51:             }           

  52:         default {

  53:             Write-Host "Requested Operation not valid!!" -ForegroundColor DarkBlue            

  54:             }

  55:         }

  56:         $spwWeb.Dispose()

  57:         $spSite.Dispose()

  58:     }

  59:     catch [System.Exception]

  60:     {

  61:         write-host -f red $_.Exception.ToString()

  62:     }

  63: }

  64:  

  65: Start-SPAssignment –Global

  66: #Calling the function

  67: $sSiteCollection="http://<YourSiteCollection>"

  68: $sPropertyBagKey="SPSiteColPBagKey_2"

  69: $sPropertyBagValue="SPSiteColPBagValue_2"

  70: #WorkWithSiteCollectionPropertyBags -sSiteCollection $sSiteCollection -sOperationType "Delete" -sPropertyBagKey $sPropertyBagKey -sPropertyBagValue $sPropertyBagValue

  71: WorkWithSiteCollectionPropertyBags -sSiteCollection $sSiteCollection -sOperationType "Create" -sPropertyBagKey $sPropertyBagKey -sPropertyBagValue $sPropertyBagValue

  72: WorkWithSiteCollectionPropertyBags -sSiteCollection $sSiteCollection -sOperationType "Read" -sPropertyBagKey $sPropertyBagKey -sPropertyBagValue $sPropertyBagValue

  73: WorkWithSiteCollectionPropertyBags -sSiteCollection $sSiteCollection -sOperationType "Update" -sPropertyBagKey $sPropertyBagKey -sPropertyBagValue $sPropertyBagValue

  74: WorkWithSiteCollectionPropertyBags -sSiteCollection $sSiteCollection -sOperationType "Delete" -sPropertyBagKey $sPropertyBagKey -sPropertyBagValue $sPropertyBagValue

  75:  

  76:  

  77: Stop-SPAssignment –Global

  78:  

  79: Remove-PSSnapin Microsoft.SharePoint.PowerShell

Nota: Si alguno tiene la tentación de usar la colección Properties en lugar de AllProperties, le aconsejo que no lo haga sin revisar antes el siguiente enlace y evitarse así unos cuantos dolores de cabeza: http://www.stuartroberts.net/index.php/2011/12/19/remove-property-sppropertybag/