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…

SharePoint 2010. Integración con Adobe

Parece que al fin ha llegado, imaginaros la cara que se me ha quedado cuando he abierto un documento PDF desde SharePoint y me he encontrado con la siguiente imagen.

SharePoint2010-pdf

La última versión de Adobe (Acrobat y Reader) permite desproteger y proteger los documentos en SharePoint cuando los abrimos directamente desde el navegador o desde la ventana de explorador. Incluyendo con esta posibilidad la de realizar modificaciones y guardarlas directamente.

Este es el enlace del cambio en la versión 10.1 (http://kb2.adobe.com/cps/869/cpsid_86901.html).

Si tenemos instalado la versión Acrobat, además de estas funcionalidades, tenemos integración con los Workflows de la plataforma.

 

Saludos a todos…

SharePoint 2010. Evitar que un usuario pueda ver el contenido de un documento

En el post sobre Gestión Documental (http://geeks.ms/blogs/adiazmartin/archive/2010/09/11/sharepoint-2010-gesti-243-n-documental.aspx) me han preguntado como si existe algún permiso que permita a un usuario listar los documentos pero que no permita abrirlo y ver su contenido.

La respuesta es no, no existe ese nivel de permiso, sin embargo, podemos utilizar Active Directory Rights Management para solucionar esta casuística.

¿Qué es Rights Management?

Rights Management es un servicio del Directorio Activo que nos permite administrar el control de acceso a la información de nuestra empresa. Cuando integramos este servicio a SharePoint, la información documental es gestionada y tiene que cumplir con las reglas configuradas en este, por ejemplo:

  • Cuando un usuario puede imprimir un documento.
  • Cuando un usuario puede ejecutar VBA (Visual Basic for Applications) en un documento
  • Si un usuario puede abrir y ver el contenido de un documento
  • ….

ADRM y SharePoint

Una vez que activamos Rights Management en la Administración Central en SharePoint, podemos configurar la protección en las biblioteca de documentos. En la configuración de la biblioteca, tenemos la configuración del IRM que nos permite crear una política de acceso en ella y evitar que los usuarios puedan imprimir esos documentos, acceder a ellos de manera programática, etc.

 

Saludos a todos…