Mostrando entradas con la etiqueta Minimal Download Strategy. Mostrar todas las entradas
Mostrando entradas con la etiqueta Minimal Download Strategy. Mostrar todas las entradas

domingo, 6 de julio de 2014

Función “SP.SOD.executeFunc” en Sharepoint 2013

Es un método (SP.SOD.executeFunc(key, functionName, fn)) que nos disponibiliza Sharepoint que nos asegura que el archivo especificado (key) que contiene la función específica (functionName) es cargada y después ejecuta la callback function (fn). Un caso de uso para “SP.SOD.executeFunc” podría ser que se cargue la librería específica (Ej: jquery) antes de llamar a una función definida que hace uso de la misma. Esta forma de ejecución se llama “Script on Demand”.

Este método es el recomendado para Sharepoint 2013 en vez de el método “ExecuteOrDelayUntilScriptLoaded” que era el recomendado en 2010.

Veamos algunos ejemplos, e issues con algunas funciones relacionadas

Primero veo que en el sitio donde estoy haciendo las demos, la feature de publishing feature está deshabilitada. El site es de tipo “Developer Site”

image

Agrego un web part de script,

image

Agrego el siguiente código

<script language="javascript">
SP.SOD.executeOrDelayUntilScriptLoaded(function () { alert('SP.js se cargo bien'); }, 'SP.js');
</script>

El método SP.SOD.executeOrDelayUntilScriptLoaded(func, depScriptFileName) usa un procedimiento llamado “Delay until …” que ejecuta la función específica (func) si el archivo (depScriptFileName) contenido es cargado, lo agrega a una cola (queue) de carga.

image

Al guardar la página, veo que me lanza el popup

image

Pero que pasa si activo la feature “Sharepoint Server Publishing Infraestructure”

image

Veo que también se carga correctamente

image

Ahora activo la  feature “Sharepoint Server Publishing”

image

Entro a la librería “Pages”

image

y creo una publishing page (Article Page)

image

image

Agrego de nuevo un script web  part

image

y agrego de nuevo el código script

<script language="javascript">
SP.SOD.executeOrDelayUntilScriptLoaded(function () { alert('SP.js se cargo bien'); }, 'SP.js');
</script>

Y de nuevo se ejecutó bien.

image

Que pasa si yo uso solamente ExecuteOrDelayUntilScriptLoaded, sin SP.SOD. Este era el método en 2010 que se usaba para esperar hasta que se cargue la librería definida en el método.

El script de nuevo funciona perfecto.

Ahora voy a crear un sitio de tipo Publishing Portal

image

Y hago los mismos pasos, esta vez ejecuto con SP.SOD.executeOrDelayUntilScriptLoaded

image

IMPORTANTE: Sin publicar la página, el script anda perfecto. En estado draft anda bien.

image

IMPORTANTE: Una vez que publico la página (Publish this draft) y el script DEJO de funcionar por algún motivo. NO me lanza el popup que lanzaba antes.

image

Si yo edito la página, si me aparece el popup antes de pasar a diseño. “Cosas de Sharepoint”, jeje

Cómo podemos hacer que funcione nuestro código de javascript en cualquier sitio?? Usando el método “SP.SOD.executeFunc”

<script language="javascript">
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function () { alert('SP.js se cargo bien'); })
</script>

Ahora todo funciona perfecto, en cualquier sitio, y con cualquier feature activada.

image

Que pasa si ahora activo la feature “Minimal Download Strategy”, una feature que carga porciones solamente si tiene cambios. Es una feature que ocaciones a veces problemas con código javascript. La activo y veo que

image

Y veo que también funciona perfecto

image

IMPORTANTE: siempre usa SP.SOD.executeFunc para ejecutar tu código javascript. (Script on Demand)

Tips adicional: cómo cargar jquery y custom.js de forma correcta.

Subimos la librería de jquery a la librería “Site Assets”

image

image

Agrego un web part de script y agrego el siguiente código de javascript

<script language="javascript">
SP.SOD.registerSod('jquery', this.L_Menu_BaseUrl + "/SiteAssets/jquery.js");
SP.SOD.executeFunc("jquery", null, function () {
    alert('Se cargo bien jquery, ejecuto mi código jquery');   
});
</script>

image

Que pasa si tenemos nuestro código dentro de un archivo js, ej: app.js

image

Ej: en el archivo app.js tengo lo siguiente

function EjecutarCodigoJquery()
{
    $(document).ready(function() {
        document.title = 'Custom jquery title';
    });
}

Podemos cargar el código de la siguiente manera en el script web part:

<script language="javascript">
    SP.SOD.registerSod('jquery', this.L_Menu_BaseUrl + "/SiteAssets/jquery.js");
    SP.SOD.registerSod('appcustom', this.L_Menu_BaseUrl + "/SiteAssets/app.js");
    RegisterSodDep('appcustom', 'jquery');
    SP.SOD.executeFunc("appcustom", null, function () {
            EjecutarCodigoJquery();
    });

</script>

Guardando la página veo que se cambio el título de la página (document.title = 'Custom jquery title')

image

sábado, 31 de mayo de 2014

Setear ancho de columnas con jQuery

Lo que voy a hacer es achicar el ancho de la columna “Title”

image

Edito la página, y agrego un Script Editor

 

image

Agrego el siguiente script:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript">
</script><script type="text/javascript">
$(function(){
    $(".ms-viewheadertr th:contains('Title')").css("width", "50px");
});       
</script>

Al guardar la página la columna Title quedo con ancho 50px

image

image

 

PD: te recomiendo que deshabilitar la feature Minimal Download Strategy. En el caso que no quieras deshabilitar esta feature, puedes agregar el link a la librería de jquery directamente en la master page:

http://www.gsoft.com/en/blog/sharepoint-2013-developing-with-the-new-mds-feature

image

jueves, 21 de marzo de 2013

Links útiles #27 Sharepoint 2013

1-Ambiente de Desarrollo para Sharepoint 2013

Esta guía indica como armar una ambiente de desarrollo para Sharepoint 2013

http://msdn.microsoft.com/en-us/library/ee554869.aspx

2-Columna de Geolocalización de Sharepoint 2013

Este artículo nos muestra como crear una columna de geo localización

http://yalla.itgroove.net/2013/03/1354/

10 Configuring Location and Map Functionality in SharePoint 2013 SharePoint 2010 sharepoint 2013   

3-Social features API en Sharepoint 2013

Este artículo nos muestra un panorama completo de cómo trabajar con las características sociales de SP2013: newsfeeds, publicar post, following people

http://www.techbubbles.com/sharepoint/social-features-in-sharepoint-2013-part2/

SP.Social (Javascript Object Model) –> http://msdn.microsoft.com/en-us/library/jj193034.aspx#SPjavarlanding_social

Microsoft.SharePoint.Client.Social () –> http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.client.social.aspx

Microsoft.Office.Server.Social (Server Object Model) –> http://msdn.microsoft.com/en-us/library/microsoft.office.server.social.aspx

4-Agregar una Managed Property al Panel de refinamiento de Sharepoint 2013

Este artículo agregará una propiedad en el panel de refinamiento

http://blogs.msdn.com/b/russmax/archive/2013/03/15/sharepoint-2013-search-adding-company-to-the-refinement-panel.aspx

5-Feature Minimal Download Strategy en Sharepoint 2013

Sharepoint 2013 introduce una feature llamada Minimal Download Strategy

http://sharepointfordeveloper.blogspot.com.ar/2013/03/SharePoint2013MinimaldownloadSharePointAjaxDeltaTag.html

http://www.wictorwilen.se/sharepoint-2013---introduction-to-the-minimal-download-strategy-mds

9-Comenzando el desarrollo de Apps para Sharepoint 2013

Este artículo nos introduce al desarrollo de apps en Sharepoint con Napa Tool y Visual Studio 2012

http://mannualag.wordpress.com/2013/03/07/nuisances-of-starting-developing-apps-for-sharepoint-2013/

10-Remote Event receiver para una App Hosted en Sharepoint 2013

Este artículo demuestra el uso de la nueva feature llamada Remote Event Receiver de Sharepoint 2013

http://blogs.technet.com/b/sharepointdevelopersupport/archive/2013/03/13/how-to-create-a-remote-event-receiver-for-a-sharepoint-hosted-app.aspx