Я успешно создал сайт-сайт программным путем с помощью приемника событий (C#). Microsoft подтвердила, что создание семейства сайтов с JavaScript невозможно. Я думал, что поделюсь своим полным решением, так как я не вижу полной документации от начала до конца.
- Я последовал за эти шаги, чтобы настроить правильную среду разработки для SP2013 http://msdn.microsoft.com/en-us/library/fp179923.aspx
- Я создал новую VS2012 пустой проект SharePoint 2013, я выбрал решение фермы
- Добавить веб-ссылку
- Нажмите правую кнопку мыши на сервисных ссылках
- Добавить ссылки на службы
- Расширенная кнопка
- Добавить веб-ссылки Кнопка
- HTTP: // {SharePointServer}: {порт} /_vti_adm/Admin.asmx
- Войти с учетом фермы
- название ссылки "SPAdminService"
- Добавить Reference Кнопка
Добавить событие Receiver
- правой кнопкой мыши по проекту
- добавить
- новый товар
- приемник события
Вот код для файла eventreceiver.cs:
using System;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.Workflow;
namespace SharePointProject5.EventReceiver1
{
/// <summary>
/// List Item Events
/// </summary>
public class EventReceiver1 : SPItemEventReceiver
{
/// <summary>
/// An item is being added.
/// </summary>
public override void ItemAdding(SPItemEventProperties properties)
{
base.ItemAdding(properties);
//create admin service reference
SPAdminService.Admin admService = new SPAdminService.Admin();
//grant proper admin credentials to admin service
admService.Credentials = new System.Net.NetworkCredential("Farmaccount", "Password", "Domain");
try
{
//specify new site collection path
String SitePath = "http://twv101sp13/pm/new2013";
//setup properties to create the site, see reference below for more info
admService.CreateSite(SitePath, "new site", "description", 1033, "STS#1", "bluebunny\\sp13admin", "System Account", "[email protected]", "", "");
}
catch (System.Web.Services.Protocols.SoapException ex)
{
//I added this section so any errors would be logged in the server application log
SPSecurity.RunWithElevatedPrivileges(
delegate()
{
System.Diagnostics.EventLog.WriteEntry("Application", "Message:\n" + ex.MRessage + "\nDetail:\n" +
ex.Detail.InnerText +
"\nStackTrace:\n" + ex.StackTrace);
});
}
}
}
}
Таким образом, вы только хотите, чтобы это выполнить, когда определенный список добавляет элемент, поэтому вам нужно изменить файл Elements.xml.
Откройте Elements.xml, замените эту строку <Receivers ListTemplateId="101">
с <Receivers ListUrl="http://{SharepointSite}/{targetListName}">
- это так мы можем предназначаться только этот список и не все списки на сайте
правой кнопкой мыши проект и развернуть
Вы должны иметь возможность создать новый элемент, а затем проверить свою новую коллекцию сайтов.
Одна из проблем, которые я испытал, это сайты, которые не могут начинаться с числового символа.
В нижней части этой статьи рассказывается, как отлаживать приемник событий функции. Без этого я был бы мертв в воде: http://msdn.microsoft.com/en-us/library/ee231550.aspx
Эти три статьи помогли много:
http://msdn.microsoft.com/en-us/library/websvcadmin.admin.createsite.aspx
http://onceinawhilescribble.blogspot.com/2013/05/creating-simple-event-receiver-in.html
http://www.sharepointpals.com/post/How-to-create-a-custom-list-level-event-receiver-in-SharePoint-2013-and-SharePoint-2010
Я не знаю, как это сделать в Javascript, но где угодно вы можете запускать код C# с повышенными привилегиями, просто вызовите любую перегрузку SPSite.CreateSelfServiceSite, и все готово. – Renan