Для одного из клиентских требований я должен автоматизировать создание сайта Sharepoint одним нажатием кнопки. По сути, это будет форма списка SharePoint, в которой пользователь будет вводить данные в виде заголовка, URL-адреса и выбирать шаблон. После нажатия на кнопку «Сохранить» должен быть создан сайт sharepoint. Мне удалось реализовать это с помощью веб-части HTML-формы, но теперь мне нужно использовать форму списка SharePoint OOTB, и мне нужно сделать то же самое. Ниже приведен код, который я написал, который создает сайт sharepoint при нажатии кнопки, код работает нормально и создает сайт в зависимости от выбора. Я использую SharePoint онлайн.
Любые идеи о том, как преобразовать этот подход в подход формы списка Sharepoint?
<script src="//code.jquery.com/jquery-3.2.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
function PreSaveAction(){
CreateSubWeb();
return true;
}
function CreateSubWeb() {
// defualt list Title field
var webTitle=$("input[title='Client_x0020_Name']").val();
//custom fields URL and Template
var url=$("input[title='Site_x0020_URL']").val();
var template=$("input[title='Custom_x0020_Template']").val();
// current web url
var webUrl = _spPageContextInfo.webAbsoluteUrl;
var clientContext = new SP.ClientContext(webUrl);
this.oWebsite = clientContext.get_web();
var webCreationInfo = new SP.WebCreationInformation();
webCreationInfo.set_title(webTitle);
webCreationInfo.set_language(1033);
webCreationInfo.set_url(url);
webCreationInfo.set_useSamePermissionsAsParentSite(true);
if(template == 'Customer W Project'){
webCreationInfo.set_webTemplate("{2936BD84-30AD-413E-8933-2A6B7856D10F}#Template 2");
}
else
{
webCreationInfo.set_webTemplate("{ED884F01-6B10-4791-A704-FF05A047D0F3}#Template 1");
}
oWebsite.get_webs().add(webCreationInfo);
oWebsite.update();
clientContext.executeQueryAsync(onQuerySucceeded, onQueryFailed);
}
function onQuerySucceeded(sender, args) {
alert('success');
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
</script>