Primer vistazo a Sharepoint 2010
Faltan unos días para que la primera Beta de Sharepoint 2010 salga a la luz, así que para comenzar a informarse sobre las novedades que mejor que empezar por este artículo que cubre de manera general la mayoría de los aspectos:
http://blogs.msdn.com/sharepoint/archive/2009/10/19/sharepoint-2010.aspx
Visual Studio 2010 and .NET Framework 4 Beta 2
A partir de hoy vía MSDN esta disponible la Beta 2 de Visual Studio 2010:
http://msdn.microsoft.com/es-mx/vstudio/dd582936(en-us).aspx
Si aún no estas familiarizado con las nuevas cosas que tendremos en .NET 4:
http://msdn.microsoft.com/en-us/library/bb386063(VS.100).aspx
Sharepoint CSS Builder
La mayoría de las ocasiones al trabjar con Sharepoint es necesario ocultar algún(os) elemento(s) de la interface por default de Sharepoint, ahora, esta herramienta publicada como servicio Web puede ayudarnos a generar rápidamente el CSS necesario:
ASP.NET AJAX AsyncFileUpload
Una de las funcionalidades más complicadas de manejar con ASP.NET AJAX era sin duda tener controles de FileUpload, ya que por default no era posible incluir este control dentro de un UpdatePanel.
Pues bien, la nueva versión del Control Toolkit, además de corregir bugs, incluye el nuevo control AsyncFileUpload.
He aquí un excelente post para conocer este nuevo control del ASP.NET AJAX Control Toolkit:
http://geeks.ms/blogs/rcarreras/archive/2009/10/04/subiendo-archivos-as-237-ncrono-en-asp-net-con-el-control-asyncfileupload.aspx
Cabe mencionar que la recomendación en el uso de el ASP.NET AJAX ControlToolkit es para escenarios simples y con una perspectiva que no interfiera con la forma normal de trabajar con controles de servidor de ASP.NET, para desarrolladores con poca o nula experiencia y conocimiento de AJAX, ya que las limitantes de los controles hacen topar con pared muy pronto además de que es bien sabido que no es la mejor forma de integrar AJAX en una aplicación Web.
MOSS Object Model: Obtener la lista de grupos de Sharepoint a los que pertenece el usuario logeado
private List<string> GetSPGroups() { List<string> groupNames = new List<string>(); SPGroupCollection groups = SPContext.Current.Web.CurrentUser.Groups; foreach (SPGroup group in groups) { groupNames.Add(group.Name); } return groupNames; }
Más posibilidades con la clase SPGroup:
http://msdn.microsoft.com/es-es/library/microsoft.sharepoint.spgroup.aspx
Sharepoint PeopleEditor control (AKA PeoplePicker)
Para usar el people picker en una página ASP.NET:
<SharePoint:PeopleEditor runat="server" ID="PE1" AutoPostBack="true" AllowEmpty="false" SelectionSet="User,SecGroup,SPGroup" BorderWidth="0" Width="200px" PlaceButtonsUnderEntityEditor="false" Rows="1"/>
Validación de al menos un usuario resuelto:
(PE1.Accounts.Count<1)
Guardando los usuarios seleccionados en una columna de tipo Person:
SPFieldUserValueCollection values = new SPFieldUserValueCollection(); foreach (PickerEntity entity in PE1.ResolvedEntities) { SPFieldUserValue fuv = new SPFieldUserValue(SPContext.Current.Web, Convert.ToInt16(entity.EntityData[PeopleEditorEntityDataKeys.UserId]), entity.Description); values.Add(fuv); } oListItem["ColumnaTipoPersona"] = values;
Recuperando el valor guardado en una columna de tipo Person y asignación al control PeoplePicker:
// oListItem = SPListItem de la lista donde se encuentra la columna tipo Person: SPFieldUserValue ppUser = new SPFieldUserValue(oWebsiteRoot, oListItem["ColumnaTipoPersona"].ToString()); PE1.CommaSeparatedAccounts = ppUser.User.LoginName;
Para la asignación de valor tambien se puede usar directamente una cuenta de usuario con la forma “dominio\usuario”, sin embargo es recomendable asignar el valor desde la clase SPFieldUserValue, sobre todo cuando sean valores recuperados desde otro origen.
Referencias:
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.peopleeditor.aspx
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfielduservalue.aspx
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.pickerentity.aspx
Es posible realizar configuraciones especiales como incluir propiedades extra del directorio activo, delimitar las búsquedas dentro de un arbol del bosque del A.D., etc, vía la utilería stsadm: