Office Store, ¿Una tienda de futuro?

Este fin de semana pasado, los grupos de usuarios de SharePoint de España, realizamos, casi en simultáneo en Madrid, Barcelona y Valencia, tres hackathon relacionados con el primer Office and SharePoint Challenge, que organiza Microsoft a nivel mundial. La idea era tener unas jornadas de formación sobre el nuevo modelo de desarrollo de Apps para SharePoint y Office, y empezar a desarrollar Apps para un concurso que elegirá a las 5 mejores para salir en Channel 9.

Lo primero de todo, agradecer a LevaPoint, y en especial a Adrián Díaz, por encargarse de la organización en Valencia y encargarse de mi ?, con un anfitrión así, me apunto a cualquier evento o sarao que se organice por Valencia, inclusive, si queremos llenar Mestalla de desarrolladores.

Después de la formación y las horas de desarrollo, empezamos con la ronda de presentación de proyectos, y es aquí donde os quiero hacer reflexionar. Cuando hablamos de la Office Store ¿en qué pensamos? Yo después de ver los proyectos de Valencia, tengo muchos conceptos y se me ha abierto la mente a proyectos que no me planteaba en la tienda. Llevo un par de días de vacaciones por Valencia, y no hago sino darle vueltas a los siguientes tipos de Apps:

  • Aplicaciones empresariales que buscan mejorar SharePoint, o proveer a la plataforma de funcionalidades que no tiene
  • Aplicaciones empresariales que utilizan la seguridad de SharePoint y a este como concentrador de aplicaciones
  • Pequeñas funcionalidades o AddIn para Office o SharePoint, que pueden ser empresariales o no, pensemos que la tienda también llega a usuarios no empresariales
  • Aplicaciones de marketing empresarial, estas son las típicas que desarrollamos para Smartphone y que, sin quererlo, el sábado apareció una. ¿Por qué no utilizar una tienda empresarial para promocionar productos empresariales o funcionalidades de este tipo?

Personalmente, apuesto por la tienda de Office, creo que como desarrolladores, o empresa de desarrollo, nos puede dar muchas ventas y visibilidad en grandes empresas, que no se planteen comprar en la tienda, nos puedan contactar porque mes gusta nuestro producto.

 

¿Qué os parece la tienda? ¿Os proponéis publicar alguna App?

SharePoint App. Llamada a un servicio externo con WebProxy

Preparando el Office & SharePoint App Challenge que tenemos la próxima semana y aprovechando que queremos que CompartiMOSS tenga una SharePoint App en la Store, empezamos con el desarrollo de esta App, aprovechando los servicios REST de SharePoint 2013.

CompartiMOSS App tiene que usar la API de búsqueda para mostrar los números y los artículos, además de permitir buscar el contenido de estos, más o menos, como se hacemos en la web, pero dentro de una App.

¿Fácil no? Básicamente, tenemos que usar jQuery para hacer la llamada al servicio REST, en la siguiente URL http://host/site/_api/search y parsear la información, para mostrarla con los estilos de CompartiMOSS. Algo como:

    $.ajax(

        {

            url: http://host/_api/search/query?querytext='sharepoint',


            method: “GET”,

            headers:

            {

                “accept”“application/json;odata=verbose”,

            },

            success: onSuccess,

            error: onError

        }

 

        function onSuccess() {           


            var results = data.d.query.PrimaryQueryResult.RelevantResults.Table.Rows.results;


   

            var html = "<div class='results'>";


            for (var i = 0; i < results.length; i++)


            {


                html += "<div>";


                var clickableLink = "<a href='" + results[i].Cells.results[6].Value + "'>" 


    + results[i].Cells.results[3].Value + "</a><br/><span>Type: " + results[i].Cells.results[17].Value  + "</span><br/>";


                html += clickableLink;


                html += "</div>";


            }


   

            html += "</div>";


            $("#searchResults").html(html);


        }


 

Error. Gracias a nuestro queridísimo Javascript, nos encontramos con un problema conocido y muy habitual de llamadas en cross-domain. Nuestra App, que se ejecutará en el dominio de nuestro SharePoint, no permite las llamadas Javascript a un dominio externo, como el de CompartiMOSS.

MDSN y JC al rescate. Hablando con Juan Carlos y Fabian, descubrimos en la MSDN que en la API de SharePoint 2013, hay un objeto WebProxy que permite, a las SharePoint Apps, realizar llamadas cross-domain de una forma bastante sencilla. Con estos cambios:

        var context = SP.ClientContext.get_current();


        var request = new SP.WebRequestInfo();


        request.set_url("http://host/_api/search/query?querytext='sharepoint'");


        request.set_method("GET");


        request.set_headers({ "Accept""application/json;odata=verbose" });


        var response = SP.WebProxy.invoke(context, request);


        context.executeQueryAsync(successHandler, errorHandler);


 

No realizamos la llamada Ajax, sino que le pasamos la petición al WebProxy de SharePoint, que es el encargado de realizar la llamada asíncrona y devolvernos el resultado.

    function successHandler() {


        if (SPSearchResults.response.get_statusCode() == 200) {


            var body = JSON.parse(SPSearchResults.response.get_body());


            var results = body.d.query.PrimaryQueryResult.RelevantResults.Table.Rows.results;


 

            var html = "<div class='results'>";


 

            for (var i = 0; i < results.length; i++) {


                var linkUrl = results[i].Cells.results[4].Value;


                var title = results[i].Cells.results[5].Value;


                var desc = results[i].Cells.results[6].Value;


                var picture = results[i].Cells.results[2].Value;


 

                html += "<div class='divCompartiMOSSMagazineNumber' id='Number" + i + "'>";


                html += "<div class='divPicture'>";


                html += "<a href='" + linkUrl + "'>" + picture + "</a>";


                html += "</div>";


                html += "<div class='divOverlay'>";


                html += "<a class='linkOverlay' href='" + linkUrl + "'>";


                html += "<h2 class='ms-noWrap'>" + title + "</h2>";


                html += "<div>" + desc + "</div>";


                html += "</a>";


                html += "</div>";


                html += "</div>";


            }


 

            html += "</div>";


            $("#searchResults").html(html);


            $(".divCompartiMOSSMagazineNumber").hover(


                function () {


                    $(".divOverlay"this).css('top''0');


                },


                function () {


                    $(".divOverlay"this).css('top''300px');


                });


        }


        else {


            var errordesc;


 

            errordesc = "<P>Status code: " +


                SPSearchResults.response.get_statusCode() + "<br/>";


            errordesc += SPSearchResults.response.get_body();


            $("#searchResults").html(errordesc);


        }


    }


 

y junto con un poco de maquillaje css, obtener el resultado deseado:

 

Una vez más se demuestra que SharePoint es una gran plataforma y que incluye diversas funcionalidades que nos facilitan la vida a los desarrolladores.

 

Saludos a todos…

CEUS VIII. 8ª Conferencia de Usuarios de SharePoint

Ya tenemos SharePoint 2013 y como todos los años, también tenemos Conferencia de Usuarios de SharePoint, con mucho más contenido que otros años, centrándose en la nueva versión y en todas las novedades que esta nos trae.

 

Cuatro tracks que nos os podéis perder, donde clientes, expertos en SharePoint y MVP os enseñarán todas las bondades de nuestro servidor favorito (le robo la frase a JC).

  • Colaboración y comunicación
  • Social Enterprise
  • Digital Market Internet
  • Big Data, Business Analytics

Será el martes 9 de abril en el Teatro Goya y os podéis registrar en el siguiente enlace.

Este año, me ha tocado dar una sesión sobre las SharePoint Apps y la Office Store, donde os contaré las novedades y la gran oportunidad que se nos abre con la tienda de aplicaciones.

 

Saludos a todos…