SharePoint 2010. Suministro de noticias en Windows 8 (I)

Con Windows 8 nos presentaron un nuevo Framework de desarrollo, WinRT y las Metro Styles App. Para los que no hayan leído sobre esto, os recomiendo las sesiones del Build.

win8-WinRT

La novedad que más me ha llamado la atención es la próxima tienda de aplicaciones, o Store, que tendremos en Windows 8 para ofrecer a los usuarios nuestras aplicaciones. Esto nos abre un mercado no explotado en Windows por muchas empresas y que permite desarrollar y ofrecer a todos los usuarios de Windows 8, aplicaciones, tanto de productividad empresarial como de redes sociales, como juegos, etc. Y es aquí dónde metemos en juego a SharePoint.

Si revisamos la UI de SharePoint, no es un producto que esté preparado para el Touch (o al menos de momento), y esto nos permitirá desarrollar aplicaciones que, utilizando el Metro Style, permita a los usuarios realizar tareas cotidianas en nuestro servidor de colaboración empresarial.

En este primer post, veremos como conectarnos al suministro de actividades (vimos el Activity Feed en el Webcast sobre El lado social de SharePoint) y mostrarlo en una interfaz táctil.

Primero tendremos que elegir el lenguaje con el que vamos a desarrollar, deberíamos de elegir con el que nos sintamos más cómodos, ya que todos tienen las mismas funcionalidades. Yo he elegido C#, con el utilizaremos XAML para desarrollar la vista de los datos.

XAML

Aquí, básicamente, definimos algunas columnas y ponemos un ListView con el template adecuado para que se visualice la información correctamente, en este caso ponemos la foto del usuario, la fecha de publicación y el tipo de publicación.

<ListView x:Name="ItemListView"  

          ItemsSource="{Binding Path=Items}"

          SelectionChanged="ItemListView_SelectionChanged"

          Margin="60,0,0,10">

    <ListView.ItemTemplate>

        <DataTemplate>

            <StackPanel>

                <TextBlock Text="{Binding Path=Title}"  

                           FontSize="24" Margin="5,0,0,0" TextWrapping="Wrap" />

                <Grid>

                    <Grid.ColumnDefinitions>

                        <ColumnDefinition Width="1*" MinWidth="60" />

                        <ColumnDefinition Width="3*" />

                    </Grid.ColumnDefinitions>

                    <Image Source="{Binding Path=Picture}" Margin="15,0,0,0" Grid.Column="0" />

                    <StackPanel Grid.Column="1">

                        <TextBlock Text="{Binding Path=Author}" 

                           FontSize="16" Margin="15,0,0,0"/>

                        <TextBlock Text="{Binding Path=PubDate, Converter={StaticResource dateConverter}}" 

                           FontSize="16" Margin="15,0,0,0"/>

                    </StackPanel>

                </Grid>

                

            </StackPanel>

        </DataTemplate>

    </ListView.ItemTemplate>

</ListView>

Code Behind

Bien, ahora nos toca cargar los datos, para eso vamos a utilizar el RSS del Activity Feed. Realizamos una llamada asíncrona utilizando el nuevo async Task y la clase SyndicationFeed del modelo de objetos de WinRT (Windows.Web.Syndication).

private async Task GetFeedAsync(string feedUriString)

{

    //Creamos un cliente de Syndication y le pasamos las credenciales del dominio. Esto debemos parametrizarlo para que el usuario lo guarde en la aplicación

    var client = new SyndicationClient(new PasswordCredential { UserName = @"Dominiouser", Password = @"lacontraseñadelusuario" });

    var feedUri = new Uri(feedUriString);

    try

    {

        //Llamamos asíncronamente para obtener el Feed y lo procesamos en una clase que enviaremos al contexto del XAML

        SyndicationFeed feed = await client.RetrieveFeedAsync(feedUri);

        var feedData = new FeedData();

        feedData.Title = feed.Title.Text;

        foreach (SyndicationItem item in feed.Items)

        {

            FeedItem feedItem = new FeedItem();

            feedItem.Title = item.Title.Text;

            feedItem.PubDate = item.PublishedDate.DateTime;

            feedItem.Author = item.Authors[0].Name.ToString();

            if (feed.SourceFormat == SyndicationFormat.Atom10)

            {

                feedItem.Content = item.Content.Text;

            }

            else if (feed.SourceFormat == SyndicationFormat.Rss20)

            {

                feedItem.Content = item.Summary.Text;

            }

            feedItem.Picture = item.Authors[0].ElementExtensions[2].NodeValue;

            if (!feedItem.Picture.StartsWith("http://") && !feedItem.Picture.StartsWith("https://"))

                feedItem.Picture = "/Images/person.png";

            feedData.Items.Add(feedItem);

        }

        this.DataContext = feedData;

        ItemListView.SelectedIndex = 0;

    }

    catch (Exception ex)

    {

        // Log Error.

        TitleText.Text = ex.Message;

    }

}

Nos queda hacer la llamada al método con la URL del suministro de noticias (http://URLDELSITIO/_layouts/activityfeed.aspx?consolidated=true) de nuestro SharePoint, que también deberíamos de poner en la configuración de la aplicación, y ver el resultado.

SharePoint-Windows8-ActivityFeed

 

En el próximo post, hablaremos de crear un servicio de notificaciones que utilizaremos para crear un Live Tiles en el inicio de Windows 8 y ver los cambios de actividades de SharePoint en él.

 

Saludos a todos…

Un pensamiento en “SharePoint 2010. Suministro de noticias en Windows 8 (I)”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *