En este post vamos a ampliar el post anterior para conseguir el mismo efecto, es decir, una nueva opción en el menú de Site-settings que nos lleve a la página principal de la administración del sitio de SharePoint Online, pero esta vez lo haremos todo desde código .NET. Así, podemos hacer el vínculo dinámico, según la URL de cada sitio de Office 365, y empaquetarlo como una pequeña funcionalidad.

Para ello, creamos un proyecto vacío de SharePoint, y añadimos una nueva feature:

image

Seguidamente, le añadimos un EventReceiver:

image

Descomentamos los eventos que nos interesan:

Y en el FeatureActivated, añadimos el código necesario para crear la CustomAction:

Como veis, hemos hecho uso de la clase SPUserCustomAction, que permite crear una nueva acción, y que tiene unas propiedades prácticamente idénticas a las que teníamos en el XML del post anterior.

Para sacar la URL del portal de admin, y que como ya vimos tiene el formato: portal-admin.sharepoint.com, me he creado una pequeña función que devuelve esa cadena, partiendo de la propia URL del SPWeb (no me he calentado mucho los cascos, supongo que se podrá optimizar):

La última consideración sobre el código, es que al ser creada desde código, conviene que podamos eliminarla, tb desde código, cuando se desactiva la Feature. Como veremos ahora mismo, para eliminar una Custom action desde código, debemos conocer su Guid interno. Cuando la creamos desde XML, ese Guid se lo podemos asignar “a mano”, pero desde código esto no es posible, ya que lo hace internamente SharePoint. Es por ello que debemos guardarnos de alguna forma el Guid de la nueva Custom Action, para que en el momento de desactivar la feature, lo podamos hacer.

Yo he elegido almacenar el GUID en el PropertyBag del propio SPWeb. Esto se consigue con este código:

Donde:

Es una simple constante que me he definido a nivel de Feature, para la Key de la PropertyBag.

Para acabar, aquí tenemos el código del desactivado:

Como vemos, sacamos el Guid de la PropertyBag, y eliminamos la CustomAction correspondiente.

Y nada más, generamos el WSP, lo subimos al sitio de SPOnline, y activamos la Feature.

image

Y como me acabo de empezar a leer la biografía de Steve Jobs, sólo puedo acabar diciendo: “Stay hungry, stay foolish!”

Sonrisa