sábado, 30 de agosto de 2014

Variable CTX–Sharepoint 2013

La variable ctx es llamada variable de contexto, esta variable no está disponible en cada contexto de Sharepoint, por lo cual ten cuidado donde la usas. Por ejemplo: es muy usada en display templates de Search (link). En las páginas de forms de las listas/librerías (New, Edit y Display forms) y layouts (ej: site settings) NO suele estar definida esta variable. En las home page/wiki pages suele estar disponible. En las vistas de las listas también suele estar disponible.LO cual cómo les decía revisen donde la pueden usar. En el App Model tampoco está disponible obviamente.

Es una propiedad de read-only solamente, es decir sólo puedo leer la información de la misma. Para verla, abrimos la developer tools del IE (F12) y en la consola escribimos ctx

image

image

image

image

Con respecto a las funciones podemos tener las siguientes:

image

Voy a comentar las más importantes propiedades o funciones.

Por ejemplo si yo estoy en una vista de la lista podemos ver las propiedades.

Si en las propiedades avanzadas de la lista, marco/desmarco algunas propiedades, veo las propiedades avanzadas de la variable

image

Variable ContentTypesEnabled –> true

image

image

image

AllowCreateFolder –> undefined

image

image

AllowGridMode  --> false

image

image

EnabledMinorVersions –> true

Si yo selecciono dos items, me aparecerá la información en la propiedad “CurrentSelectItems”

image

También podemos obtener las urls de los forms de new/edit/display

image

image

Podemos ver la cantidad de items de la página de la vista (TotalListItems), el GUID de la View (propiedad view) y el nombre de la vista (ViewTitle). La propiedad verEnabled hace referencia si está habilitado el versionado (1) o no (0).

image

Después tenemos las propiedades listName  (guid de la lista), listTemplate (101 es una librería), listTitle (nombre de la libreria) y listUrlDir (url relativa de la librería)

image

Otra propiedad importante es ListSchema, la cual tiene todo el esquema propio de la libreria:

DefaultItemOpen = 1 –> es cuando seteas Open in the browser en las propiedades avanzadas de la librería

image

Después tenes todas propiedades propias del sitio: HttpRoot, CurrentLanguage, CurrentUICultureName, etc. Otras propiedades importantes son CurrentUserId (es el ID de la User Information List) y CurrentUserIsSiteAdmin.

image

Hay un montón de propiedades más, pero para finalizar voy a hacer uso de la propiedad ListData

image

La cual permite recorrer todas las filas de la view actual, y procesar los campos.

Por ejemplo. ctx.ListData.Row[0]

image

si yo escribo lo siguiente: alert(ctx.ListData.Row[0].FileLeafRef)

image

Una propiedad muy útil es : PermMask, que define que permisos tiene el usuario actual sobre ese item específico (row

image

FullMask = 0x7FFFFFFFFFFFFFFF (Grant all permissions). En este link tienen una lista de mask de permisos.

netsh–Una manera simple de hacer network trace sin instalar nada en nuestros ambientes de Sharepoint

A partir de Windows 7/2008R2 vino una tool llamada netsh para realizar traces de nuestras placas de red (entre otras cosas de este comando).

http://technet.microsoft.com/en-us/library/dd878517%28v=ws.10%29.aspx

Aplica a: Windows Server 2012|2012 R2, Windows 8|8.1, Windows Server 2008R2, Windows 7

Probado sobre: Sharepoint 2013 SP1, CU agosto, Windows Server 2012, Azure VM (A6 instance)

Algunas ventajas de este comando:

  • No instalo nada en mis servers, ya viene incluido dentro de mi SO
  • Permite tracing persistentes, esto es, incluso con reboots, el trace sigue funcionando
  • Nos permite enfocar el trace en un escenario específico (Ej: dns, lan, dhcp, etc)
  • Los paquetes generados del trace (ETL) pueden ser abiertos por Wireshark, Network Monitor o Message Analyzer
  • Podemos ver reportes rápidos del trace (.cab)

Primero vemos que escenarios (conjunto de providers de trace) tenemos:

netsh trace show scenarios

image

Si nos interesa algún escenarios específico, podemos ejecutar

netsh trace show scenario lan

image

Pueden tener más providers con este comando: netsh trace show providers >c:\providers.txt

Revisando este archivo, veo que hay providers de Sharepoint

{0119F589-72D7-4EC3-ADF5-1F082061E832}    Microsoft-SharePoint Products-Web Content Management
{137DEDCF-DAEC-4E65-A6BC-02212AECD32F}    Microsoft-SharePoint Products-Office Automation Services
{1C415899-58B3-4BFC-9236-105E7FD38719}    Microsoft-SharePoint Products-SharePoint Foundation Search
{252BB337-A7F5-413F-9B03-F36FA4F18EF8}    Microsoft-SharePoint Products-Business Connectivity Services
{278E40D0-FDAA-4EB4-AB6B-9E0AD6BDBE79}    Microsoft-SharePoint Products-Excel Services Application
{38BB51E9-CF75-40CA-92CC-49E22F935F65}    Microsoft-SharePoint Products-Visio Graphics Service
{4CB0A010-80C2-4CDF-BB9D-8B7E923FAC8F}    Microsoft-SharePoint Products-Access Services 2010
{4F33CA13-30A4-4AF2-AEB7-DE59AA6C2563}    Microsoft-SharePoint Products-Services Infrastructure
{5311B1CA-DDE7-408B-A097-F7A1BF5BB170}    Microsoft-SharePoint Products-Access Services
{6FB10E7F-F8EF-44A7-9678-25744648F92C}    Microsoft-SharePoint Products-Document Conversions
{6FB7E0CD-52E7-47DD-997A-241563931FC2}    Microsoft-SharePoint Products-SharePoint Foundation
{73541538-24DA-4282-AE1C-3A6321C23FB8}    Microsoft-SharePoint Products-Secure Store Service
{8B3DDD3D-2B09-4669-BF81-E2D6921FEEEA}    Microsoft-SharePoint Products-SharePoint Portal Server
{A3499A35-DB34-421A-94FC-4D76522BEAB3}    Microsoft-SharePoint Products-InfoPath Forms Services
{A7CD5295-CBBA-4DCA-8B67-D5BE061B6FAE}    Microsoft-SharePoint Products-PerformancePoint Service
{B9499A35-DB34-421A-94FC-5A8DBBBC4228}    Microsoft-SharePoint Products-Education
{BAFFAE3D-E80A-4219-B41F-5760B7CEC473}    Microsoft-SharePoint Products-Shared
{C33B4F2A-64E9-4B39-BD72-F0C2F27A619A}    Microsoft-SharePoint Products-SharePoint Server
{C544CCCA-DCAA-416D-B91B-E639B8B28589}    Microsoft-SharePoint Products-Word Automation Services
{C8263AFE-83A5-448C-878C-1E5F5D1C4252}    Microsoft-SharePoint Products-SharePoint Server Search
{C8A9829C-C62B-46CD-AACF-95788DE23730}    Microsoft-SharePoint Products-SharePoint Translation Services
{D191778A-DFE4-11DE-A777-F8AD55D89593}    SharePoint Express
{E0E675CD-EA07-450D-9841-786EAC9A9812}    Microsoft-SharePoint Products-eApproval
{F78D66EC-09A9-42A2-AC7A-5EE2062DE7E4}    Microsoft-SharePoint Products-Document Management Server

Si yo quisiera ver un provider específico, ejecuto lo siguiente:

netsh trace show provider name="Microsoft-SharePoint Products-SharePoint Portal Server"

image

Estos providers nos permite enforcarnos en un trace espcífico, ej: search de Sharepoint

Ej: netsh trace start persistent=yes capture=yes tracefile=c:\temp\nettrace-search.etl" provider="Microsoft-SharePoint Products-SharePoint Server Search"

En este post, no me voy a enfocar en un escenario específico, sólo haré un trace de todo el tráfico del servidor de Sharepoint

Para ello ejecuto el siguiente comando:

netsh trace start persistent=yes capture=yes tracefile=C:\Temp\nettrace-sharepoint.etl

recuerda revisar que tengas espacio suficiente en el directorio. Por default usará 250 MB.

Acá tenés todos los parámetros del comando: http://technet.microsoft.com/en-us/library/dd878517%28v=ws.10%29.aspx#bkmk_traceStart

http://msdn.microsoft.com/en-us/library/windows/desktop/dd569142%28v=vs.85%29.aspx

Considera en principio los siguientes: level, maxSize

image

image

Ahora navego un poco el sitio de Sharepoint, y después de 10 minutos ejecuto el siguiente comando para detenerlo.

netsh trace stop

image

Veo que se generaron los dos archivos

image

Si yo ingreso al archivo .cab, veo un montón de archivos.

image

Si abro el archivo report.html (selecciona todos los files –> extract), nos muestra un montón de información del trace

image

Si selecciono un item, por ejemplo “DNS Information” veo más info

image

Los que nos importa es ver el archivo .etl con alguna tool de red. Exporta tu archivo .etl a tu máquina, y abre el archivo con Wireshark, Message Analyzer o Network Monitor

Por ejemplo mediante Message Analyzer (Browse)

image

Después selecciono Analysis Grid/Sequence Match

image

Veo el diagnóstico de los paquetes de red

image

Ej: veo 3 segmentos perdidos

Si cambio la vista “Analysis Grid”

image

Veo todos los paquetes del trace

image

Si yo aplico un filtro (tcp.port==80)

image

Si yo le aplico otro filtro (add destination to filter)

image

y aplico el filtro (cambia or por and)

image

Veo lo que me interesaba, filtrar los paquetes relacionados a mi sitio de Sharepoint

image

Cómo pueden ver tengo un montón de paquetes con status 401

image

Si yo me enfoco en un message number (648), veo que hubo dos paquetes en esta operación

image

Message Number 648: mi solicitud al Sharepoint montado sobre Azure

image

Algunos parámetros útiles del message number:

Method: Get

Host: chrissp2013dev.cloudpapp.net

Referer Url y User-Agent

image

Message Number 649: la respuesta del servidor de Sharepoint

image

Algunos parámetros útiles del message number:

StatusCode: 401 (unauthorized)

MicrosoftSharePointTeamServices: 15.0.0.4551 (es la versión de Sharepoint que está corriendo sobre Azure IaaS)

request-id o SPRequestGuid: 9094b39c-ee71-007a-0000-011f7b37ee10 (es el GUID asociado en los ULS logs)

Si yo reviso los logs mediante ULS Viewer, veo la solicutud

image

SPIisLatency: 0 (es el queue time del IIS antes de pasarle la solicitud a Sharepoint)image
SPRequestDuration: 3 (es el tiempo que tardo Sharepoint en procesar la solicitud )

La misma información la pueden procesar con Wireshark o Network Monitor.

Para mayor información sobre netsh, consulta este post, muy buen repaso por todos los componentes del trace: http://chentiangemalc.wordpress.com/2012/02/22/netsh-traceuse-it/