SAPUI5 is a suitable framework to build responsive-design UIs that renders to the available screen estate of diverse device types: smartphone, tablet, and desktop. It is therefore a fit to deliver an alternative UI to SharePoint's PeopleFinder functionality, in case the out-of-the-box SharePoint UI (that is, with potentially the rendering still made company specific via customized Search Display Templates) for whatever reason does not qualify as sufficient fit. The basic requirement of a SAPUI5 mobile application is that it can consume data and functionality via OData REST services. The SharePoint platform supports such an architecture via the standard SharePoint REST services:
The integration surface for a peoplefinder functionality comprises 3 main elements:
- To interactive present people suggestions to user while typing in characters of the people name ==> Get names list of matched users on search input
- Get detailed list of matched users on search input
- Get details for selected user
1. Get names list of matched users on search input
Best:
Alternative is to search in User Information List:
but this has some disadvantages:
Best:
SharePoint end-point | https://<SharePoint root-url>/_api/search/query?querytext='preferredname:Jones*'''&selectproperties='PreferredName'&sourceid='B09A7990-05EA-4AF9-81EF-EDFAB16C4E31'&rowlimit=10 |
Alternative is to search in User Information List:
SharePoint end-point | https://<SharePoint root-url>/_vti_bin/listdata.svc/UserInformationList?$filter=((ContentType eq 'Person') and (substringof('Jones',LastName)))&$orderby=Name |
but this has some disadvantages:
- Incomplete qua users: user is only added to UserInformationList on first visit to SharePoint site; users not visited yet, are not included
- Overcomplete: UserInformationList is never cleaned up, former colleagues remain in the list
- Incomplete qua search: UserInformation does not contain a full name field
2. Get detailed list of matched users on search input
Search in full content / all crawled people data fields:
Search in identified property-field(s) only:
Search in full content / all crawled people data fields:
SharePoint end-point | https:// <SharePoint root-url>/_api/search/query?querytext='Mobile*'&selectproperties='FirstName,LastName'&sourceid='B09A7990-05EA-4AF9-81EF-EDFAB16C4E31'&rowlimit=10 |
Search in identified property-field(s) only:
SharePoint end-point | https:// <SharePoint root-url>/_api/search/query?querytext='department:Mobile*'&selectproperties='FirstName,LastName'&sourceid='B09A7990-05EA-4AF9-81EF-EDFAB16C4E31'&rowlimit=10 |
3. Get details for selected user
Get all public properties:
Get one single identified user profile property only:
Get all public properties:
SharePoint end-point | https:// <SharePoint root-url>/_api/SP.UserProfiles.PeopleManager/GetPropertiesFor(accountName=@v)?@v='<uname of user>' |
Get one single identified user profile property only:
SharePoint end-point | https://<SharePoint root-url>/_api/SP.UserProfiles.PeopleManager/GetUserProfilePropertyFor(accountName=@v,propertyName='AboutMe')?@v='<uname of user>' |