Hacer uso del modelo de objetos de Servidor (SSOM) dentro de un objeto SPWeb, tenemos un método AllUsers que puede ser útil para establecer esta función. Sin embargo, este método tiene un «pero» relativamente grande. Este método solamente devuelve los usuarios que se han autentificado contra SharePoint por lo menos una vez. Esto puede ser un lastre fundamentalmente si el sistema se está implantando y todavía no todo el mundo ha accedido al sistema.
Podemos optar por implementar una conexión para consultar estos usuarios directamente de Active Directory. Esta opción puede ser válida, aunque no es de lejos la mejor opción. Los motivos son:
Dentro del modelo de objetos de cliente de JavaScript, existen unos métodos que se pueden utilizar para realizar las consultas de usuario. Para ello, hay utilizar el método SP.UI.ApplicationPages.ClientPeoplePickerWebServiceInterface.clientPeoplePickerSearchUser que está dentro de la librería SP.js. Este método es el que utiliza internamente el control People Picker. A este método le tienes que añadir el contexto de SharePoint y establecer los parámetros de la búsqueda. Un ejemplo sería el siguiente:
queryPeople: function(query) { var deferred = new jQuery.Deferred(); EnsureScript('SP.js', typeof SP.ClientContext, function() { EnsureScript('autofill.js', typeof SPClientAutoFill, function() { var searchQuery = new SP.UI.ApplicationPages.ClientPeoplePickerQueryParameters(); searchQuery.set_allowMultipleEntities(true); searchQuery.set_maximumEntitySuggestions(10); searchQuery.set_allowEmailAddresses(true); searchQuery.set_principalType(1); searchQuery.set_principalSource(15); searchQuery.set_queryString(query); var clientContext = SP.ClientContext.get_current(); var searchResult = SP.UI.ApplicationPages.ClientPeoplePickerWebServiceInterface.clientPeoplePickerSearchUser(clientContext, searchQuery); clientContext.executeQueryAsync(function() { var users = []; var results = clientContext.parseObjectFromJsonString(searchResult.get_value()); for (var i = 0; i < results.length; i++) { var filtered = $(users).filter(function() { return this.value == results[i].DisplayText; }); if (filtered.length == 0) { var title = results[i].EntityData.Title; if (title == undefined) { title = ""; } var sip = results[i].EntityData.SIPAddress; if (sip == undefined) { sip = results[i].EntityData.Email; } users.push({ value: results[i].DisplayText, id: results[i].Key, email: results[i].EntityData.Email, networkaddress: results[i].Description, title: title, sip: sip }); } } deferred.resolve(users); }); }); }); return deferred.promise(); },
Ahora bien, para establecer la funcionalidad social, faltaría desarrollar cuándo queremos realizar la búsqueda. Los pasos a desarrollar serían: implementar un método que cada vez que se introduzca una «@» se invoque a este procedimiento y mostremos los resultados obtenidos. Este desarrollo lo dejo a curiosidad del lector.
A la hora de utilizar los usuarios que hay en SharePoint, tenemos muchas opciones que se pueden adecuar a la gran mayoría de nuestros escenarios. Podemos hacer uso de elementos de serie de SharePoint (como vimos en anteriores entradas) o extender su funcionalidad y adaptarlo a los requisitos de los usuarios (modificar la funcionalidad y/o la interfaz gráfica). La elección de una opción u otra depende de los requisitos que tengamos y de nuestra habilidad con los desarrollos.
Este sitio web utiliza cookies para que tengas la mejor experiencia de usuario. Si continuas navegando, estás dando tu consentimiento para aceptar las cookies y también nuestra política de cookies (esperemos que no te empaches con tanta cookie 😊)