jueves, 20 de diciembre de 2012

Tips Info #87 Sharepoint 2010

1-Error al acceder a la sección Central Administration -> Application Management -> Manage web applications -> selecciono el web-application -> General settings -> Resource Throttling

Updates are currently disallowed on GET requests. 
To allow updates on a GET, set the 'AllowUnsafeUpdates' property on SPWeb

Se puede setear esta opción del web application mediante powershell


$w = get-spwebapplication URL_SharepointWebApplication
$w.HttpThrottleSettings
$w.Update()


2-Event 2159 SharePoint


The user does not have permission to perform this action.
Log entry for EventID 2159:
Event 5586 (SharePoint Foundation) of severity 'Error' occurred xx more time(s) and was suppressed in the event log
   
1.Abrir SQL Server Configuration Manager
2.Ir hasta SQL Server Network Configuration – Protocols for <nombre instancia>
3.Click derecho sobre “Named Pipes” y elige "Enabled"
4.Reiniciar el servidor para que tome los cambios


Dar  permisos de “VIEW SERVER STATE” a la cuenta de farm. A veces es necesario darle permisos a la cuenta del app pool del web application
use [master]
GO
GRANT VIEW SERVER STATE TO [domain\farm_account]
GO


3-Limpiar la cache de InfoPath Form en la máquina local


Cuando se carga un formulario de InfoPath desde Sharepoint, la plantilla de formulario se descarga y se almacena en caché localmente. A veces, después de que la plantilla se ha actualizado en el servidor, el cliente no siempre obtiene la plantilla de formulario actualizada, porque utiliza la cache local.


Windows XP


C:\Documents and Settings\[User]\Local Settings\Application Data\Microsoft\InfoPath\FormCache2
C:\Documents and Settings\[User]\Local Settings\Application Data\Microsoft\InfoPath\FormCache3


Vista/7


C:\Users\[User]\AppData\Local\Microsoft\InfoPath\FormCache2
C:\Users\[User]\AppData\Local\Microsoft\InfoPath\FormCache3


Otra posibilidad es ejecutar: C:\Program Files\Microsoft Office\Office12>INFOPATH.EXE /cache clearall


El path depende de donde tenga instalado el office.


4-SharePoint Datasheet View Soporte para mensajes de errores custom de Event Receiver


Al utilizar un event receiver, y se quiere lanzar un error junto a la cancelación de la operación, se puede utilizar el siguiente código:


public override void ItemAdding(SPItemEventProperties properties)
{
     string title = properties.AfterProperties["Title"].ToString();
     //condicion de error
     if (title == "Testing")
     {
          // Cancelo con error
          properties.Status = SPEventReceiverStatus.CancelWithError;
 
          // Custom mensaje de error
          string ErrorMessage =  "Testing is not a valid entry. Please try again";
 
          properties.ErrorMessage = ErrorMessage;
     }
}


Antes de la instalación del KB



Después de la instalación del KB



Si se utiiza la vista estandar, el mensaje se mostrará de forma correcta.
Se puede solucionar el problema con el siguiente KB:   
http://support.microsoft.com/kb/2597943


Limitaciones:
    -No permite redireccionar dentro del Event Receiver


5-Sharepoint 2010 Token timeout (seguridad)


Cuando un usuario de dominio inicia sesión en SharePoint, el servidor creará un token que contiene información sobre ese usuario, junto con los grupos de dominio que puede ser un miembro. De forma predeterminada, SharePoint 2010 almacena esta información por 24 horas, momento en el que el token caducará y cuando el usuario inicie la sesión de nuevo, se creará un nuevo token.
Se puede cambiar el valor del tiempo de espera. El siguiente comando stsadm cambia  el tiempo de espera a 1 hora. Recuerda hacer un iisreset.


stsadm.exe -o setproperty -propertyname token-timeout -propertyvalue 60
Para verificar el valor ejecute lo siguiente:


stsadm.exe -o getproperty -propertyname token-timeout
   
Más información: http://msdn.microsoft.com/en-us/library/aa543158(office.14).aspx

lunes, 17 de diciembre de 2012

Tips Info #86 Sharepoint 2010

1-Contenido condicional para usuarios anónimos y logueados

Una posibilidad es usar el control SPSecurityControl que permite mostrar contenido condicional para los usuarios dependiendo de sus permisos.

Este control no permite mostrar contenido sólo para usuarios anónimos.Para ello utilizaremos el control LoginView.

<asp:LoginView runat="server">
     <AnonymousTemplate>
        <span style="font-family: Arial; font-size: 10pt;">Bienvenido, Invitado
            <asp:LoginStatus ID="LoginStatusUsuarioAnonimo" runat="Server" />
        </span>
    </AnonymousTemplate>
    <LoggedInTemplate>
        Bienvenido,
        <asp:LoginName ID="LoginNameUsuarioLogueado" runat="Server" />
        <asp:LoginStatus ID="LoginStatusUsuarioLogueado" runat="Server" />
    </LoggedInTemplate>
</asp:LoginView>

El control LoginName mostrará el nombre del usuario logueado, y en el caso de usuarios anónimos no mostrará nada.

El control LoginStatus mostrará un link de Log Out para usuarios autenticados y un link de Log In para usuarios anónimos.

2-Formula para validar un email dentro de una columna de Sharepoint

Dos posibles fórmulas:

FORMULA 1

=(LEN(LEFT([Email],FIND("@",[Email])-1))>0)
+(LEN(RIGHT([Email],LEN([Email])-FIND(".",[Email],FIND("@",[Email]))))>0)
+(LEN(MID([Email],FIND("@",[Email])+1,FIND(".",[Email],FIND("@",[Email]))-FIND("@",[Email])-1))>0)
+(ISERROR(FIND(" ",[Email]))=TRUE)
=4

FORMULA 2

=IF(
  OR(
    ISERROR(FIND("@",Email)),
    ISERROR(FIND(".",Email,FIND("@",Email)))
  ),
  FALSE,
  AND(
    LEN(LEFT(Email,FIND("@",Email)-1))>0,
    LEN(RIGHT(Email,LEN(Email)-FIND(".",Email,FIND("@",Email))))>0,
    LEN(MID(Email,FIND("@",Email)+1,FIND(".",Email,FIND("@",Email))-FIND("@",Email)-1))>0,
    (ISERROR(FIND(" ",TRIM(Email))))
  )
)

3-Renombrar web application mediante powershell

$wapp = Get-SPWebApplication "SharePoint - 80"
$wapp.Name = "Intranet -80"
$wapp.Update()
Para verificar si se actualizó de forma correcta ejecute lo siguiente:
Get-SPWebApplication "Intranet -80"

4-Error al utilizar server object: The web server process that was being debugged has been terminated by Internet Information Services (IIS). This can be avoided by configuring Application Pool ping setting in IIS. See help for further details.

Por ejemplo al utilizar la siguiente línea de código SPListItemCollection collListItemsSrc = oList.GetItems(oView) , nos puede lanzar el error previamente definido.
Esto se debe a que el tamaño de la configuración “The maximum unresponsive ping time” es insuficiente. El default es de 90 segundos. Puedes aumentar el tiempo o deshabilitar el Ping Enabled.
image

5-Propiedad AllowEveryoneViewItems  de las librerias/listas


Esta propiedad permite acceder de forma directa a los documentos de una librería o a los attachments de una lista. Esta propiedad sólo funciona cuando los usuarios navegan directamente a un archivo a través del navegador, y no tiene ningún efecto sobre el resto de la interfaz de usuario o el modelo de objetos.


Esta propiedad es útil para trabajar con usuarios anónimos.


$web = Get-SPWeb -Identity http://url_sitio
$list = $web.Lists.TryGetList("titulo lista");
$list.AllowEveryoneViewItems = $true
$list.Update()

domingo, 16 de diciembre de 2012

Tips Info #3 Sharepoint 2013

1-Error page en Sharepoint 2013

Al activar la feature SharePoint Publishing feature, se agrega una página llamada PageNotFoundError.aspx y se encuentra disponible en la librería Pages

New-Picture-37

Para poder agregar la página, se debe agregar el content type “Error Page“. Este content type se basa en el content type Pages

 

New-Picture-38

New-Picture-40

2-Agregar una página de Sharepoint 2013 en un frame

Sharepoint 2013 agrega un header X-Frame options para prevenir de ataques clickjacking

Al agregar una página de Sharepoint 2013 en un frame, puede lanzarnos el siguiente mensaje: "This content cannot be displayed in a frame"

Cada respuesta HTTP envía una X-Frame-Options: header SAMEORIGIN, lo que indica que esta página no debe ser cargada en un IFRAME,  si la página que la hostea está en un dominio diferente de la página de SharePoint.

Por lo tanto, páginas externas llamadas desde Sharepoint no se verán afectadas, lo mismo que páginas de Sharepoint del mismo dominio que la actual. Pero páginas de Sharepoint 2013 llamadas desde otro dominio dentro de un frame nos lanzará el siguiente mensaje: "This content cannot be displayed in a frame"

Para solucionar este problema se puede agregar el siguiente web part: <WebPartPages:AllowFraming runat="server" />

Este webpart NO agregar el header de X-Frame-Options. Al crear páginas desde Visual Studio o cualquier herramienta de desarrollo de Microsoft, agregará de forma automática este webpart.

3-Modelo de Apps en Sharepoint 2013

IC599129

4-Error:  “The file reached the maximum download limit warnings. Check that the full text of the document can be meaningfully crawled”.

Abre el SharePoint Management Shell

$searchapp = Get-SPEnterpriseSearchServiceApplication
$searchapp.GetProperty("MaxDownloadSize") # el valor default es 64MB
$searchapp.SetProperty("MaxDownloadSize", 128) #128 es un valor adecuado para un límite de download
$searchapp.Update()

Reinciar el servicio OSearch14
Otra propiedad útil es MaxGrowFactor (por default 4), esto llevará a indexar 256MB (64 x 4), al igual que MaxDownloadSizexMaxGrowFactor.

5-Property Bag Values enSharePoint 2013 – Search

En la nueva versión de Sharepoint 2013, se puede agregar metadata a los sites/listas mediante la propiedad Bag y que esa metadata esté disponible en los resultados de búsqueda.

$web = Get-SPWeb http://websiteSharepoint
$web.AllowUnsafeUpdates = true
$web.AllProperties["PropiedadWeb"] = "valorWeb"
$web.IndexedPropertyKeys.Add("PropiedadWeb")
$web.Update()
$web.AllowUnsafeUpdates = false

Lo mismo se puede hacer para listas

$list = $web.Lists["Tareas"]
$folder = $list.RootFolder
$folder.Properties["PropiedadTareas"] = "valorTareas"
$list.AllowUnsafeUpdates = true
$folder.Update()
$list.IndexedRootFolderPropertyKeys.Add("PropiedadTareas")
$list.Update()
$list.AllowUnsafeUpdates = false

Una vez que se configuró las propiedades, se deberá hacer un full crawl.

Si se busca valorWeb o valorTareas, nos devolverá el site y lista respectivamente.

sábado, 15 de diciembre de 2012

Tips Info #85 Sharepoint 2010

1-Script para obtener el tamaño, cantidad de usuarios y url de todos los sites collections mediante powershell

Get-SPSiteAdministration -Limit All | select Url, @{label = "Size";Ex = {$_.DiskUsed/1MB}}, UsersCount | Sort-Object -Descending -Property "Size" | ConvertTo-Html -title "Site Collections" | Set-Content sitecollectionsinfo.html

2-Obtener las versiones de los documentos vía querystring – powershell – client object

Via querystring

Se puede usar el parámetro IncludeVersions=TRUE , por ejemplo:

http://sitecollection/sites/demo/docs/Forms/AllItems.aspx?IncludeVersions=TRUE

Vía powershell

$SPWeb = Get-SPWeb http://nombredelsite
foreach($List in $SPWeb.Lists)
{
   $ItemsColl = $List.Items
   foreach ($item in $ItemsColl)
    {
      foreach($version in $item.Versions)
        {
Write-Host $version.VersionLabel
        }
    }
}
$SPWeb.Dispose()

Vía client object

public void GetVersions()
{
    ClientContext clientContext = new ClientContext("http://website_url");
    Web site = clientContext.Web;
    clientContext.Load(site);
    clientContext.ExecuteQuery();

    File file = site.GetFileByServerRelativeUrl("/Libreria/documento.pdf");
    clientContext.Load(file);
    clientContext.ExecuteQuery();

    ListItem currentItem = file.ListItemAllFields;
    clientContext.Load(currentItem);
    clientContext.ExecuteQuery();

    FileVersionCollection versions = file.Versions;
    clientContext.Load(versions);
    clientContext.ExecuteQuery();

    if (versions != null)
    {
        foreach(FileVersion _version in versions)
        {
            Console.WriteLine("Version : {0}",_version.VersionLabel);
        }
    }
}

3-Script de SQL para saber el “Database growth rate” de las bases de contenido

Creo el store sobre la base de datos master

USE [master]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[sp_track_db_growth](@dbnameParam sysname = NULL)
AS
BEGIN
DECLARE @dbname sysname
-- Set the current DB, if dbname is not given input
SET @dbname = COALESCE(@dbnameParam, DB_NAME())
 
SELECT    CONVERT(char, backup_start_date, 111) AS [Date], --yyyy/mm/dd format
    CONVERT(char, backup_start_date, 108) AS [Time],
    @dbname AS [Database Name], [filegroup_name] AS [Filegroup Name], logical_name AS [Logical Filename],
    physical_name AS [Physical Filename], CONVERT(numeric(20,4),file_size/1048576) AS [File Size (MB)],
    Growth AS [Growth Percentage (%)]
FROM
(
    SELECT    b.backup_start_date, a.backup_set_id, a.file_size, a.logical_name, a.[filegroup_name], a.physical_name,
        (
            SELECT    CONVERT(numeric(20,4),((a.file_size * 100.00)/i1.file_size)-100)
            FROM    msdb.dbo.backupfile i1
            WHERE     i1.backup_set_id =
                        (
                            SELECT    MAX(i2.backup_set_id)
                            FROM    msdb.dbo.backupfile i2 JOIN msdb.dbo.backupset i3
                                ON i2.backup_set_id = i3.backup_set_id
                            WHERE    i2.backup_set_id < a.backup_set_id AND
                                i2.file_type='D' AND
                                i3.database_name = @dbname AND
                                i2.logical_name = a.logical_name AND
                                i2.logical_name = i1.logical_name AND
                                i3.type = 'D'
                        ) AND
                i1.file_type = 'D'
        ) AS Growth
    FROM    msdb.dbo.backupfile a JOIN msdb.dbo.backupset b
        ON a.backup_set_id = b.backup_set_id
    WHERE    b.database_name = @dbname AND
        a.file_type = 'D' AND
        b.type = 'D'
       
) as Derived
WHERE (Growth <> 0.0) OR (Growth IS NULL)
ORDER BY 'File Size (MB)' desc
END

Ejecuto el store

exec sp_track_db_growth 'WSS_Content_XXXXX'

4-Custom 404 page en Sharepoint 2010 (not found page)

  • Crear una página llamada 404.html con tu editor html favorito
  • Ir hasta C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\LangID  donde LangID es lenguaje actual que estás usando. ej: 1033 para el inglés.
  • Copiar la página previamente creada a la carpeta. MI recomendación es subir el archivo en cada LangID que tengas definido.
  • Abrir una consola de powershell y ejecuta lo siguiente:

$webapp =Get-SPWebApplication http://<serverUrl>:<port>
$webapp.FileNotFoundPage = "404.html"
$webapp.update()

Para verificar ejecuta la siguiente consulta: (Get-SPWebApplication http://<serverUrl>:<port>).FileNotFoundPage

Y a continuación ejecuta una consulta vía navegador que genere un 404.

Posibles problemas:

  • No se muestra la página de error custom: hacer un recycle del app pool, o incluso mejor hacer un iisreset.

Otra posibilidad es setear la custom page vía el IIS:

http://www.ngpixel.com/2010/12/23/sharepoint-2010-custom-error-pages/

5-No se puede visualizar el icono de pdf en Sharepoint 2010

image

Para agregar el icono de pdf se deberá hacer lo siguiente:

Ir hasta C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14”) and then to TEMPLATE\IMAGES, y subir el icono de pdf.

6a012875706f1b970c0134873475df970c-800wi

Después se deberá editar el archivo DOCICON.XML dentro de la carpeta TEMPLATE\XML

6a012875706f1b970c013487347657970c-800wi

6a012875706f1b970c0133f4140cb7970b-800wi

A continuación has un iisreset en todos los frontends.

5-Links para hacer un signout de Sharepoint

/_layouts/closeConnection.aspx?loginasanotheruser=true

ó

/_layouts/signout.aspx

Variables/objectos/métodos útiles de javascript disponibles en Sharepoint

Muchas de estos métodos, objectos, variables son generados desde los archivos init.js, core.js , por lo cual es necesario que esté el link a los js anteriormente mencionados.

_spUserId

Esta variable guarda el ID del usuario logueado. Para obtener más información del usuario logueado con esta variable podemos usar el siguiente método definido en el siguiente link:

http://sharepointjavascript.wordpress.com/2011/09/18/accessing-user-profile-information-in-sharepoint-with-javascript-updated-version/

Ej: escribe en la barra de navegación el siguiente script: javascript:alert(_spUserId);

L_Menu_BaseUrl

La url base del site / subsite. Nos ayuda crear paths absolutos. Ej: document.location = L_Menu_BaseUrl + ‘lists/task/allitems.aspx’ //nos redirigue a Task List

L_Menu_LCID

El LCID del site actual. Útil para determinar el lenguaje del site. En este site (http://msdn.microsoft.com/en-US/goglobal/bb964664.aspx) podrán encontrar todos los LCID´s disponibles. Ej: 1033  (Inglés)

L_Menu_SiteTheme

El nombre del theme que se aplica al site. Ej: Lacquer. Si no tiene un theme aplicado, devolverá vacio.

_spPageContextInfo


Es un objecto que tiene muchas propiedades:
    a. webServerRelativeUrl (url relativa para la web actual. Ej: \u002fsites\u002fTestSite\u002WebSite)
    b. siteServerRelativeUrl (current site collection url. Ej: \u002fsites\u002fTestSite)
    c. webLanguage (Ej: 1033)
    d. currentLanguage (Ej: 1033)
    e. webUIVersion (Ej: 4)
    f. userId (Current user, mismo valor que _spUserId: ej: http://www.jbmurphy.com/2012/12/05/using-_sppagecontextinfo-ajax-and-samaccountname-to-show-a-hidden-item-in-a-sharepoint-page/)
    g. alertsEnabled (Si está habilitado las alertas para la página)
    h. allowSilverlightPrompt (Si se permite preguntar por silverlight o no. Ej: true)
    i. pageItemId (Guid del item actual)
    j. pageListId (Guid de la lista que contiene el item actual)
   

Ej: verificar si estoy en el root web del site collection
var siteUrl = _spPageContextInfo.siteServerRelativeUrl;
var webUrl = _spPageContextInfo.webServerRelativeUrl;
var isRootWeb = siteUrl == webUrl;

g_wsaSiteTemplateId
Informa sobre el current site template del site. Ej:  'BLOG#0'

JSRequest
Es un  objecto que nos permite tomar información de la página actual, más que nada los valores presentes en la url.

//Primero se debe llamar al método EnsureSetup
JSRequest.EnsureSetup();

var q = JSRequest.QueryString["itemId"]; //  "page.aspx?ItemId=5" nos devolverá 5
var f = JSRequest.FileName; // Ej: default.aspx
var p = JSRequest.PathName; // url relativa del servidor. Ej: "/website/pages/default.aspx"

_spBodyOnLoadFunctionNames
Array de de funciones de javascript que se ejecuta después de que el DOM esté completamente cargado. Si desea ejecutar su función una vez que la página esté completamente cargada, use este array. Por ejemplo _spBodyOnLoadFunctionNames.push ("MiFuncion");

function MiFuncion() {
   alert('Esta función se ejecutara en el evento onload de la  página');
}

browseris
Este objeto tiene varias propiedades para detectar el nombre del navegador, la versión, versión del sistema operativ.
Por ejemplo, si usted quiere saber si el navegador actual es Internet Explorer o no compruebe browseris.ie

g_ExtensionDefaultForRead

Un arreglo de extensiones de archivos que son siempre checked out como Read only. Ej: jpg, jpeg, bmp

g_ExtensionNotSupportCheckoutToLocal

Un arreglo de extensiones que no son permitidos hacer checkout localmente.Ej: aspx, ascx, cmd

GetUrlKeyValue()
Es una función de javascript que permite obtener parámetros de query string de la url del navegador o de una url pasada como parámetro.

alert(GetUrlKeyValue('query', false, 'www.demo.com?query=te%20st'));
Devolverá ‘te st’. Se especificó una url específica.

alert(GetUrlKeyValue('query', false));
Busca el valor del query string 'query' y nos devuelve el valor decodificado (parámetro false)

alert(GetUrlKeyValue('query'));
Busca el valor del query string 'query, sin decodificar.

escapeProperly
Esta función retorna un valor codificada
var valor = escapeProperly("hola mundo!!"); //valor = "hola%20mundo%21%21"

unescapeProperly

Esta función decodifica un string codificado
var valor = unescapeProperly("hola%20mundo%21%21"); //valor = "hola mundo!!"

STSHtmlEncode(htmlString)
Esta función codifica un texto html

var valor = STSHtmlEncode("<p>ejemplo texto</p>");
//valor = "&lt;p&gt;ejemplo texto&lt;/p&gt;"

TrimSpaces(str)
Remueve los espacios en blanco del principio y final.No remueve caracteres especiales tales como ‘\n’, \t’, para ello se puede usar TrimWhiteSpaces.

var valor = TrimSpaces("   Hola   Mundo!!    "); //valor = "Hola   Mundo!!"

LoginAsAnother(url, bUseSource)
Permite loguearse con otro nombre de usuario.Permite definir la url a donde se enviará el usuario después del login.

<a href="#" onclick="javascript:LoginAsAnother('\u002f_layouts\u002fAccessDenied.aspx?loginasanotheruser=true', 0)">Log on como otro usuario</a>

viernes, 14 de diciembre de 2012

Links útiles #13 Sharepoint 2013

1-Diseñador de workflows para Sharepoint 2013

http://blogs.technet.com/b/office_sp/archive/2012/12/11/introducci-243-n-al-nuevo-dise-241-ador-visual.aspx

http://blogs.technet.com/b/office_sp/archive/2012/12/11/c-243-mo-utilizar-el-dise-241-ador-visual-de-sharepoint-designer-2013-para-mover-los-flujos-de-trabajo-entre-sitios.aspx

2-Rastreos continuos (continuos crawl) en Sharepoint 2010

http://blogs.msdn.com/b/sharepoint_sp/archive/2012/12/11/191-c-243-mo-puedo-alcanzar-la-mejor-actualizaci-243-n-de-resultados-de-la-b-250-squeda-introduciendo-rastreos-continuos-de-sharepoint.aspx

3-Quick Step con Sharepoint 2013 y Designer 2013

http://blogs.technet.com/b/office_sp/archive/2012/12/11/c-243-mo-crear-un-paso-r-225-pido-y-una-acci-243-n-personalizada-para-iniciar-el-flujo-de-trabajo-de-sharepoint-2013.aspx

4-Llamar a un servicio REST desde Sharepoint Designer 2013

http://blogs.technet.com/b/office_sp/archive/2012/10/11/c-243-mo-trabajar-con-un-servicio-web-mediante-la-acci-243-n-llamar-al-servicio-web-http.aspx

5-Routing and Throttling de request en Sharepoint 2013

http://blogs.technet.com/b/speschka/archive/2012/09/14/working-with-request-manager-in-sharepoint-2013.aspx

6-SSL Sharepoint 2013

http://walisystemsinc.com/sharepoint/art/ssl_selfsigned_cert/Setup%20SSL%20in%20SharePoint%202013%20using%20Self-Signed%20Certificate.pdf

jueves, 13 de diciembre de 2012

Tips Info #2 Sharepoint 2013

1-Habilitar el botón “Conectar con Outlook”

Por default no está activado el botón, para activarlo tendrá que usar la opción “Agregar a sitios de Sharepoint”

image

image

image

2-Modificar la navegación global de un sitio de Sharepoint 2013

082212_1852_ModifytheTi1

$app = Get-SPWebApplication -Identity https://webapplication_url

$app.SuiteBarBrandingElementHtml = "<div class='ms-core-brandingText'>Christian azcón</div>"

$app.Update()

3-Setear theme a subsites que hereden del padre en Sharepoint 2013

$url = "http://url_sitecollection"
$site = Get-SPSite -Identity $url
 
foreach ($web in $site.AllWebs) {
  $web.ThemedCssFolderUrl = $site.RootWeb.ThemedCssFolderUrl
  $web.Update()
 
  $web.Dispose()
}
 
$site.Dispose();

4-Drag and drop en Sharepoint 2013: error "Exceeded the limit of number of files."

Sólo se pueden subir 100 documentos a la vez, en el caso que suba más de 100 documentos el sistema lanzará el siguiente error: "Exceeded the limit of number of files."

5-Sintaxis de búsqueda para encontrar archivos pdf

En Sharepoint 2010 se usaban scope con ciertas reglas de file extensions para encontrar los pdf. En Sharepoint 2013 es posible usar la feature “Sintaxis de búsqueda”

Ej:

{searchTerms} (fileextension:pdf AND site:sites/sitecollection/subsite)

La consulta anterior nos devolverá los documentos en pdf, que están dentro del subite, y que contenga una propiedad o contenido con las palabras que ingrese el usuario.

El parámetro {searchTerms} hace referencia al texto que ingreso el usuario final como input de la búsqueda.

Más info: http://blogs.msdn.com/b/sharepoint_sp/archive/2012/12/11/construcci-243-n-de-una-experiencia-de-b-250-squeda-especializada-en-minutos-con-sharepoint-2013.aspx

miércoles, 12 de diciembre de 2012

Links útiles #12 Sharepoint 2013

1-Integración Sharepoint 2013 y Exchange 2013 (Mailboxes)

http://www.bryanporter.com/archive/2012/12/10/how-to-enable-site-mailboxes-with-sharepoint-exchange.aspx

2-Sharepoint 2013 Apps – comandos útiles de powershell para configurar apps

http://blogs.msdn.com/b/besidethepoint/archive/2012/12/10/sharepoint-apps-powershell-helpers.aspx

3-Sharepoint 2013 Low trust apps (Azure)

http://blogs.msdn.com/b/besidethepoint/archive/2012/12/10/sharepoint-low-trust-apps-for-on-premises-deployments.aspx

4-Cross Site Publishing en Sharepoint 2013

http://blogs.technet.com/b/sharepoint_quick_reads/archive/2012/09/18/sharepoint-2013-cross-site-publishing.aspx

http://blogs.technet.com/b/sharepoint_quick_reads/archive/2012/09/19/configure-cross-site-publishing-in-sharepoint-server-2013-step-by-step.aspx

5-Ribbon custom action Sharepoint 2013

http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2012/12/11/creating-sharepoint-ribbon-custom-actions-with-visual-studio-2012.aspx

6-External Content Type en Sharepoint 2013

http://wyldesharepoint.blogspot.com.ar/2012/12/sharepoint-2013-setting-up-external.html

7-Trabajar con Documentos offline y Sharepoint 2013

http://www.learningsharepoint.com/2012/12/12/how-to-work-with-documents-offline-in-sharepoint-2013/

8-Tipos de bases de datos de Sharepoint 2013

http://technet.microsoft.com/en-us/library/cc678868.aspx

9-Introducción a Apps en Sharepoint 2013

http://extreme-sharepoint.com/2012/12/12/sharepoint-2013-apps-basics/

10-Shredded Storage en Sharepoint

https://www.nothingbutsharepoint.com/sites/itpro/Pages/SharePoint-2013-The-Truth-Behind-Shredded-Storage.aspx

martes, 11 de diciembre de 2012

Tips Info #84 Sharepoint 2010

1-Setear la default page de un site mediante powershell

$site = Get-SPSite http://webapplication/sites/site
$web = $site.RootWeb #or $web = $site.OpenWeb("yoursubsite")
$folder = $web.RootFolder
$folder.WelcomePage = "SitePages/homapage.aspx" #or  $folder.WelcomePage = "default.aspx") (or  $folder.WelcomePage = "Shared%20Documents/otra_pagina.aspx")
$folder.update()
$web.Dispose()
$site.Dispose()

2-XSL custom para un XsltListViewWebPart y DataFormWebPart (itemstyle.xsl)

Se puede usar la propiedad XslLink

<Xsl>
<xsl:stylesheet><!-- Se borraron los namespaces para una mejor lectura-->
<xsl:include href="/SiteAssets/Custom.xsl"/>
</xsl:stylesheet>
</Xsl>

3-Configurar major version para todas las librerías y hacer una limpieza de versiones viejas

$SPsiteCollection = Get-SPSite "http://url_sitecollection"
$versionsToKeep = 5;
foreach($SPweb in $SPsiteCollection.AllWebs)

    foreach ($SPlist in $SPweb.Lists)
    { 
        if($SPlist.EnableVersioning=$true)
        {
            $SPlist.MajorVersionLimit = 5;   
            $SPlist.Update();
        }
       
        foreach ($SPListItem in $SPlist.Items)
         {
           $currentVersionsCount= $SPListItem.Versions.count
        
           if($currentVersionsCount -gt $versionstoKeep)
             {
                $SPListItem.SystemUpdate()
             }
         }
    } 
}

4-Session timeout para forms authentication en Sharepoint 2010

Se puede configurar la opción de timeout de la sessión para la autenticación vía forms mediante el siguiente script de powershell

$sts = Get-SPSecurityTokenServiceConfig
$sts.UseSessionCookies = $true
$sts.FormsTokenLifetime = (New-Timespan –Minutes 30)
$sts.LogonTokenCacheExpirationWindow = (New-Timespan –Minutes 30)
$sts.Update()
iisreset

5-Encontrar el número de usuarios en un site collection mediante powershell

Get-SPSiteAdministration -Identity http://sitecollection_url | Select-Object Url, UsersCount

lunes, 10 de diciembre de 2012

Links útiles #55–Sharepoint 2010

1-Custom expiration formula

http://www.c-sharpcorner.com/UploadFile/anavijai/how-to-create-custom-expiration-formula-in-sharepoint-2010/

2-Embeber videos en Sharepoint (mediante API y fields)

http://vgrem.wordpress.com/2012/11/26/embedding-and-sharing-video-in-sharepoint-part-three-aggregating-video-feeds-and-utilizing-api/

http://vgrem.wordpress.com/2012/10/28/embedding-and-sharing-video-in-sharepoint/

3-Forefront Unified Access Gateway paraSharepoint

http://community.bamboosolutions.com/blogs/sharepoint-2013/archive/2012/12/05/how-to-set-up-microsoft-forefront-unified-access-gateway-environment-for-sharepoint-2013.aspx

4-SSL con Client Object

http://brandonatkinson.blogspot.com.ar/2012/12/using-sharepoint-client-object-model.html

5-Abrir la Edit View desde una List View

http://brandonatkinson.blogspot.com.ar/2012/11/open-sharepoint-list-items-directly.html

Links útiles #11 Sharepoint 2013

1-Google analytics para Sharepoint 2013

http://virtualizesharepoint.com/2012/12/04/google-analytics-for-sharepoint-2013-office-365/

2-Search Services mediante powersell en Sharepoint 2013

http://www.toddklindt.com/blog/Lists/Posts/Post.aspx?List=56f96349-3bb6-4087-94f4-7f95ff4ca81f&ID=378&Web=48e6fdd1-17db-4543-b2f9-6fc7185484fc

3-Cambios de la versión Sharepoint 2013 preview a la versión Sharepoint 2013

http://blogs.msdn.com/b/officeapps/archive/2012/11/05/important-developer-changes-from-office-and-sharepoint-2013-preview-to-office-and-sharepoint-2013.aspx

4-Site Policy en Sharepoint 2013

http://www.jrjlee.com/2012/12/enforcing-site-policy-selection-in.html

5-Cross Domains sharepoint 2013

http://blogs.msdn.com/b/officeapps/archive/2012/11/29/solving-cross-domain-problems-in-apps-for-sharepoint.aspx

6-Licencias en Sharepoint 2013

http://blogs.msdn.com/b/officeapps/archive/2012/11/09/licensing-your-apps-for-sharepoint.aspx

http://talbottcrowell.wordpress.com/2012/11/29/sharepoint-2013-using-claims-to-manage-licensing/

7-Apps en Sharepoint 2013

http://blogs.msdn.com/b/kaevans/archive/2012/11/27/creating-high-trust-sharepoint-apps-with-microsoft-office-developer-tools-for-visual-studio-2012-preview-2.aspx

http://sebastiantegel.wordpress.com/2012/11/29/sharepoint-apps-setup/

http://sharepointchick.com/archive/2012/07/29/setting-up-your-app-domain-for-sharepoint-2013.aspx

8-Kerberos en Sharepoint 2013

http://download.microsoft.com/download/B/B/F/BBF0C6F3-6E36-4979-8C43-DE165AD7AE34/SP2010%20Kerberos%20Guide.docx

Reporting Services: http://support.microsoft.com/kb/2723587

9-Web part Timeline y Project Sumary en Sharepoint 2013

http://www.learningsharepoint.com/2012/12/09/the-new-timeline-and-project-summary-webpart-in-sharepoint-2013/

10-Sign is as Diferente User en Sharepoint 2013

http://nickgrattan.wordpress.com/2012/07/23/sign-in-as-different-user-and-sharepoint-2013/

jueves, 6 de diciembre de 2012

Tips Info #83 Sharepoint 2010

1-Agrupar por content type en Sharepoint 2010

Edita el web part, agregando lo siguiente:

screen_2

2-Verificar si se necesita ejecutar un upgrade con psconfig

Ejecutar el siguiente comando de powershell: (get-spserver $env:computername).NeedsUpgrade

3-Obtener la lista de todos los usuarios de un web application

Get-SPWebApplication http://webapplication:puerto | Get-SPSite | Get-SPWeb | Get-SPUser

4-Obtener el tamaño de las bases de Sharepoint 2010 en MB

Get-SPDatabase | Sort-Object disksizerequired -desc | Format-Table Name, @{Label ="Size in MB"; Expression = {$_.disksizerequired/1024/1024}}

5-Algunos tips para considerar al unir un server a la granja de Sharepoint

  • La key de la licencia debe ser la misma para todos los servers de la granja
  • La cuenta que ejecuta Farm Configuration Wizard debe ser la Farm Account.
  • Si usas alias para los sql server, recuerda que cada server debe tener el mismo alias (sino tendrás problemas de conexión a base de datos)
  • Verifica si los nuevos servers se pueden  comunicar con los demás servers

martes, 4 de diciembre de 2012

Links útiles #10–Sharepoint 2013

1-REST en Sharepoint 2013

http://morshemesh.blogspot.com.ar/2012/10/sharepoint-2013-rest-overview-via.html

http://sharingpoint.blogspot.com.ar/2012/11/sharepoint-2013-rest-library.html

2-Discovery Center para encontrar Lync Content en Sharepoint 2013

http://blogs.technet.com/b/jenstr/archive/2012/08/17/using-sharepoint-server-2013-preview-discovery-center-to-find-lync-archived-content.aspx

3-Master page en Sharepoint 2013

http://borderingdotnet.blogspot.com.ar/2012/11/going-html-with-masterpages.html

4-Configuración de Workflows en Sharepoint 2013

http://elczara.wordpress.com/2012/11/25/workflow-configuration-in-sharepoint-2013/

5-Geolocalización en Sharepoint 2013

http://msmvps.com/blogs/sundar_narasiman/archive/2012/11/22/how-to-add-geolocation-fields-to-sharepoint-2013-site.aspx

6-Licencias en Sharepoint 2013

http://www.titus.com/blog/2012/11/spc-diary-day-4-user-license-enforcement-in-sharepoint-2013/

7-Iframes en Sharepont 2013

http://www.learningsharepoint.com/2012/11/24/how-to-use-iframes-in-sharepoint-2013

8-Search RSS en Sharepoint 2013

http://www.mavention.nl/blog/search-based-rss-sharepoint-2013

9-Drag and drop en Sharepoint 2013

http://www.sharepointanalysthq.com/2012/12/drag-and-drop-in-sharepoint-2013/

10-App Domains – On Premise Apps en Sharepoint 2013

http://blogs.perficient.com/microsoft/2012/10/configuring-sharepoint-2013-preview-for-on-premise-apps/

Tips Info #1 Sharepoint 2013

1-Upload multiple en Sharepoint 2013

La opción de Upload multiple files ha sido deprecated, ahora se podrá usar drag and drop desde la vista del explorador, o de cualquier ubicación.

New-Picture-23

New-Picture-53

Fijate que cambio el label de Upload multiple, ahora dice “Upload Files using windows Explorer Instead”

Recuerda revisar si tienes el servicio WebClient iniciado, y también agrega el site de Sharepoint como site seguro.

2-Algunas mejoras de base de datos en Sharepoint 2013

Gracias a MS SQL 2012 Server se usa la feature shredded storage que reduce el tamaño de las content database y optimiza el tráfico de red.

Se removieron un motón de tablas que no se usaban y se simplicó el schema de base de datos.
En SP2013 se utiliza by the MS-FSSHTTP que permite que sólo los cambios que se han editado se guarden en la base de contenido. En 2010 cada vez que generabas una nueva versión, se guardaba la versión vieja y la nueva.

3-Folder y document sets en Sharepoint 2013

Es posible:

  • Crear una carpeta dentro de otra carpeta
  • Crear un document set dentro de una carpeta
  • Crear una carpeta dentro de un document set

No es posible:

  • Crear un document set dentro de un document set

4-Ocultar la Quick launch o left nav mediante la feature “Focus on content”

New-Picture-23

New-Picture-25

New-Picture-26

5-Acceso denegado (401) en un nuevo web application en Sharepoint 2013 ó el navegador pregunta de forma continua por

Ejecute los siguientes pasos:

  • deshabilite la feature DisableLoopbackCheck (link)
  • Agregue una policy de full control sobre el usuario administrador
  • Agregue el usuario del app que ejecuta como farm administrator.
  • Configure la clave de registro BackConnectionHostNames (link)
  • Agregue el site collection como trusted site