تعيين طلب الوصول إلى عنوان البريد الإلكتروني من خلال كسوم
-
10-12-2019 - |
سؤال
في نموذج كائن جانب الخادم ، من الممكن تعيين عنوان البريد الإلكتروني للوصول إلى الطلب من خلال الخاصية SPWeb.RequestAccessEmail
(مسن).
نظرا لأننا ننقل مستأجر شاريبوانت إلى أوفيس 365 ، فأنا أبحث عن طريقة لتعيين هذه القيمة.أعلم أنه من الممكن القيام بذلك يدويا في واجهة المستخدم (إعدادات الموقع > أذونات الموقع > إعدادات طلب الوصول) ولكن نظرا لأن لدينا بعض إنشاء موقع الخدمة الذاتية ، فلا يمكن تغييره يدويا في كل مرة يتم فيها إنشاء الويب.
للأسف لا يوجد عقار Web.RequestAccessEmail
في نموذج كائن جانب العميل.
هل هناك طريقة لتعيين عنوان البريد الإلكتروني هذا من خلال حقيبة الملكية (الملقب Web.AllProperties["__SecretKey"]
) ، خدمة ويب (_vti_bin
, ، إلخ.) أو أي حل آخر?
أي مساعدة هو محل تقدير كبير!
المحلول
في أحدث إصدار من "شاريبوانت أون لاين إدارة شل" (الإصدار 16.0.4630.1200) وشملت Microsoft.SharePoint.Client.dll
يضيف العقار RequestAccessEmail
إلى Web
صف دراسي.
تحميل: https://www.microsoft.com/en-us/download/details.aspx?id=35588
يمكنك استخدام هذا دلل حتى يتم تحرير حزمة نوجيت.
تحرير:منذ الإصدار 16.1.4727.1200
من Microsoft.SharePointOnline.CSOM
نوجيت-حزمة RequestAccessEmail
ويدعم الملكية.
نصائح أخرى
للأسف هذه الخاصية لا يمكن الوصول إليها عن طريق CSOM
.
كيفية استرداد جميع الخصائص المتاحة لكائن عميل الويب:
var allProperties = clientContext.Web.AllProperties;
clientContext.Load(allProperties);
clientContext.ExecuteQuery();
هذا ممكن ولكن في رأيي الإختراق.لقد كتبت مقالا لمناقشة ما إذا كانت هذه طريقة صالحة للقيام بذلك - التلاعب واجهة المستخدم شاريبوانت على إفريم لإضافة ميزات كلينتسايد المفقودة
وهنا رمز:
//quite dirty hack but at this point the only possibility to set the AccessRequest mail via clientside
function setAccessRequest(mail) {
var iframe = document.createElement('iframe');
//set the setrqacc.aspx link
var setrqaccUrl = _spPageContextInfo.webAbsoluteUrl + '/_layouts/15/setrqacc.aspx?type=web';
//create setrqacc.aspx hidden iframe
iframe.setAttribute('src', setrqaccUrl);
iframe.setAttribute('style', 'display:none');
iframe.onload = function () {
//this will fire 2 times - the first time when its initially loaded. the second after the changes were applied (page is reloaded (postback) after the submitbutton is triggered)
var $iframeInput = $('input[id*="_txtEmail"]', $(iframe).contents());
if ($iframeInput.length) {
//initial load - apply settings
$iframeInput.val(mail);
//gets iframeInput's parent so the current input can be placed inside
var $iframeBtn = $('input[id*="_btnSubmit"]', $(iframe).contents());
//trigger the post
$iframeBtn.trigger('click');
} else {
//second load - do callback
callback('AccessRequest');
}
};
document.body.appendChild(iframe);
}
يجب أن تكون ملفوفة في ويتينغديالوغ وبعض التحذيرات عندما يحاول المستخدم الخروج من الصفحة.تحميل صفحة في إفريم يمكن أن يستغرق بعض الوقت وهذا الرمز يفعل ذلك مرتين.