این مقاله نحوه دریافت ویژگی های کاربر در شیرپوینت آنلاین را توضیح می دهد.
اکنون می توانید مستقیماً نمایه های کاربر را پرس و جو کنید و داده های مورد نیاز را از سمت مشتری دریافت کنید.
در شیرپوینت آنلاین ما فقط میتوانیم راهحلهای sandboxed را مستقر کنیم. برخی محدودیتها در استفاده از Microsoft.Office.Server.UserProfiles در راهکارهای sandboxed SharePoint وجود دارد. اگر میخواهید ویژگیها را از پروفایلهای کاربر دریافت کنید، میتوانید از اسکریپت زیر استفاده کنید.
مرحله 1: در قسمت وب جعبه شنی شیرپوینت (صفحه ascx.) منابع زیر را مطابق شکل زیر اضافه کنید.
(jQuery مورد نیاز نیست، اما من آن را اضافه کرده ام، زیرا هنگام انجام پرس و جوهای REST به آن برای تابع $.ajax نیاز داریم.)
- <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.0.min.js"></script>
- <script src="/_layouts/15/SP.Runtime.js"></script>
- <script src="/_layouts/15/SP.js"></script>
- <script src="/_layouts/15/SP.UserProfiles.js"></script>
دریافت ویژگی های کاربر فعلی از نمایه کاربر
در اینجا بخش اسکریپت برای دریافت ویژگی های پروفایل کاربر فعلی است. اسکریپت زیر را در صفحه ".ascx" بخش وب خود اضافه کنید:
- <script type="text/javascript">
- (function ($) {
- //debugger;
- $(document).ready(function () {
- // ensure that the SP.UserProfiles.js file is loaded before the custom code runs.
- SP.SOD.executeOrDelayUntilScriptLoaded(loadUserData, 'SP.UserProfiles.js');
- });
- var userProfileProperties;
- function loadUserData()
- {
- //debugger;
- //Get Current Context
- var clientContext = new SP.ClientContext.get_current();
- //Get Instance of People Manager Class
- var peopleManager = new SP.UserProfiles.PeopleManager(clientContext);
- userProfileProperties = peopleManager.getMyProperties();
- clientContext.load(userProfileProperties);
- clientContext.executeQueryAsync(onSuccessful, onFailure);
- }
- function onSuccessful (sender, args) {
- //debugger;
- //Get default properties
- var username = userProfileProperties.get_displayName();
- var desigination = userProfileProperties.get_title();
- var pictureURL = userProfileProperties.get_pictureUrl();
- //Get custom properties
- var employeeID = userProfileProperties.get_userProfileProperties().EmployeeID;
- // alert(username + "/" + pictureURL + "/" + employeeID + "/" + desigination);
- // lblEmployeeDesignationValue, lblEmployeeIdValue – lable id
- document.getElementById('<%= lblEmployeeDesignationValue.ClientID %>').innerHTML = desigination;
- document.getElementById('<%= lblEmployeeIdValue.ClientID %>').innerHTML = employeeID;
- if (pictureURL != null || pictureURL == "" ) {
- document.getElementById('<%= imgUser.ClientID %>').src = pictureURL;
- }
- else {
- document.getElementById('<%= imgUser.ClientID %>').src =
- “/_catalogs/masterpage/MetroOnlineLMSStyles/images/UserImage.jpg"
- }
- }
- function onFailure(sender, args)
- {
- alert("Error: " + args.get_message());
- }
- </script>
همین.
دریافت ویژگی های چند کاربر در یک درخواست
در اینجا بخش کد برای دریافت ویژگی های پروفایل چند کاربر در یک درخواست است. اسکریپت زیر را در صفحه "ASCX" بخش وب خود اضافه کنید.
ما می توانیم از اسکریپت زیر برای شیرپوینت داخلی و آنلاین (o365) نیز استفاده کنیم.
- <script type="text/JavaScript">
- (function($)
- {
- $(document).ready(function()
- {
- // Ensure that the SP.UserProfiles.js file is loaded before the custom code runs.
- SP.SOD.executeOrDelayUntilScriptLoaded(loadUserData, 'SP.UserProfiles.js');
- });
- var userProfileProperties = [];
- //Array containing domain\usernames of multiple users. You can get the usernames any way you want.
- var targerUsers = ["i:0#.f|membership|user@yoursite.onmicrosoft.com","i:0#.f|membership|user1@yoursite.onmicrosoft.com"];
- //If you are on On-Premise:
- //var targerUsers = ["domain\\username","domain\\demouser1"];
- function loadUserData(){
- //Get Current Context
- var clientContext = new SP.ClientContext.get_current();
- //Get Instance of People Manager Class
- var peopleManager = new SP.UserProfiles.PeopleManager(clientContext);
- //Property to fetch from the User Profile
- var propertyName = "PreferredName";
- for(var i=0;i<targerUsers.length;i++){
- //Create new instance of UserProfileProperty
- userProfileProperties[i] = peopleManager.getUserProfilePropertyFor(targerUsers[i], propertyName);
- }
- //Execute the Query. (No load method necessary)
- clientContext.executeQueryAsync(onSuccessful, onFailure);
- }
- //Success method
- function onSuccessful () {
- var message = "";
- for(var i=0;i<userProfileProperties.length;i++){
- message += "\" Name\" property is " + userProfileProperties[i].get_value();
- }
- alert(message);
- }
- //Failure method
- function onFailure (sender, args) {
- alert("Error: " + args.get_message());
- }
- })(jQuery);
- </script>
همین. کد بالا ویژگی های چند کاربر را در یک درخواست دریافت می کند.
خلاصه
این مقاله دریافت ویژگی های کاربر از پروفایل های کاربر در شیرپوینت را به صورت آنلاین بررسی می کند.