250 lines
12 KiB
C#
250 lines
12 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Globalization;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.SharePoint;
|
|
using Taloyhtio.CompanyAutomation.Utils;
|
|
using Taloyhtio.CompanyAutomation.Resources;
|
|
|
|
namespace CompanyAutomation.TestEnvironment
|
|
{
|
|
class Program
|
|
{
|
|
static void Main(string[] args)
|
|
{
|
|
if (args.Length != 1)
|
|
{
|
|
Console.WriteLine("Usage: exe <site_collection_url>");
|
|
return;
|
|
}
|
|
|
|
using (var site = new SPSite(args[0]))
|
|
{
|
|
var rootWeb = site.RootWeb;
|
|
|
|
// set culture is needed for changing list title
|
|
// see https://sharepoint.stackexchange.com/questions/146330/rename-list-with-powershell-sp2013
|
|
var ci = new CultureInfo((int)rootWeb.Language);
|
|
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture = ci;
|
|
|
|
var hallitustiedotteetList = rootWeb.GetListByTitleSafely("Hallitustiedotteet");
|
|
if (hallitustiedotteetList == null)
|
|
{
|
|
var hallitustiedotteetId = rootWeb.Lists.Add("Hallitustiedotteet", string.Empty, SPListTemplateType.Announcements);
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
var newItem = rootWeb.Lists[hallitustiedotteetId].Items.Add();
|
|
newItem[SPBuiltInFieldId.Title] = "Test item hallitus " + i;
|
|
newItem.Update();
|
|
}
|
|
Console.WriteLine("'Hallitustiedotteet' list is created and test items are added");
|
|
}
|
|
|
|
var asukastiedotteetList = rootWeb.GetListByTitleSafely("Asiakastiedotteet");
|
|
if (asukastiedotteetList == null)
|
|
{
|
|
var asukastiedotteetId = rootWeb.Lists.Add("Asukastiedotteet", string.Empty, SPListTemplateType.Announcements);
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
var newItem = rootWeb.Lists[asukastiedotteetId].Items.Add();
|
|
newItem[SPBuiltInFieldId.Title] = "Test item asukas" + i;
|
|
newItem.Update();
|
|
}
|
|
|
|
var list = rootWeb.Lists[asukastiedotteetId];
|
|
list.Title = "Asiakastiedotteet";
|
|
list.Update();
|
|
Console.WriteLine("'Asiakastiedotteet' list is created and test items are added");
|
|
}
|
|
|
|
var sitesList = rootWeb.GetListByTitleSafely(TaloyhtioCompanyAutomation.List_SitesList_Title);
|
|
if (sitesList == null)
|
|
{
|
|
createSitesList(rootWeb);
|
|
Console.WriteLine("'{0}' list is created", TaloyhtioCompanyAutomation.List_SitesList_Title);
|
|
}
|
|
|
|
var contactsList = rootWeb.GetListByTitleSafely("Yhteystiedot");
|
|
if (contactsList == null)
|
|
{
|
|
rootWeb.Lists.Add("Yhteystiedot", string.Empty, SPListTemplateType.Contacts);
|
|
Console.WriteLine("'Yhteystiedot' list is created and test items are added");
|
|
}
|
|
|
|
var palstaWeb = rootWeb.GetSubWebSafely("Tilitoimiston palsta");
|
|
if (palstaWeb == null)
|
|
{
|
|
rootWeb.Webs.Add("lomakkeet", "Tilitoimiston palsta", "", 1035, "BLANKINTERNET#0", false, false);
|
|
Console.WriteLine("'Tilitoimiston palsta' sub web is created on pmc site");
|
|
}
|
|
|
|
var accountingCompanyGroup = SecurityHelper.GetAccountingCompanyGroupSafely(rootWeb);
|
|
if (accountingCompanyGroup == null)
|
|
{
|
|
string groupName = SecurityHelper.GetAccountCompanyGroupName(rootWeb);
|
|
SecurityHelper.EnsureSiteGroup(rootWeb, groupName);
|
|
Console.WriteLine("'{0}' group is created", groupName);
|
|
}
|
|
|
|
var accountingCompanyRoleDefinition = SecurityHelper.GetRoleDefinition(site,
|
|
TaloyhtioCompanyAutomation.PermissionLevel_AccountingCompany_Name);
|
|
if (accountingCompanyRoleDefinition == null)
|
|
{
|
|
createAccountingCompanyPermissionLevel(rootWeb);
|
|
Console.WriteLine("'{0}' permission level is created", TaloyhtioCompanyAutomation.PermissionLevel_AccountingCompany_Name);
|
|
}
|
|
|
|
accountingCompanyGroup = SecurityHelper.GetAccountingCompanyGroupSafely(rootWeb);
|
|
accountingCompanyRoleDefinition = SecurityHelper.GetRoleDefinition(site,
|
|
TaloyhtioCompanyAutomation.PermissionLevel_AccountingCompany_Name);
|
|
if (accountingCompanyGroup != null && accountingCompanyRoleDefinition != null)
|
|
{
|
|
SecurityHelper.AssignGroupRoleToSecurableObject(rootWeb, rootWeb, accountingCompanyRoleDefinition,
|
|
accountingCompanyGroup);
|
|
Console.WriteLine("Granted '{0}' permission level to '{1}' group", TaloyhtioCompanyAutomation.PermissionLevel_AccountingCompany_Name,
|
|
accountingCompanyGroup.Name);
|
|
}
|
|
|
|
var howzeeGroup = SecurityHelper.GetHowzeeGroupSafely(rootWeb);
|
|
if (howzeeGroup == null)
|
|
{
|
|
string groupName = TaloyhtioCompanyAutomation.Group_Howzee_Name;
|
|
SecurityHelper.EnsureSiteGroup(rootWeb, groupName);
|
|
Console.WriteLine("'{0}' group is created", groupName);
|
|
}
|
|
|
|
var howzeeRoleDefinition = SecurityHelper.GetRoleDefinition(site,
|
|
TaloyhtioCompanyAutomation.PermissionLevel_Howzee_Name);
|
|
if (howzeeRoleDefinition == null)
|
|
{
|
|
createHowzeePermissionLevel(rootWeb);
|
|
Console.WriteLine("'{0}' permission level is created", TaloyhtioCompanyAutomation.PermissionLevel_Howzee_Name);
|
|
}
|
|
|
|
howzeeGroup = SecurityHelper.GetHowzeeGroupSafely(rootWeb);
|
|
howzeeRoleDefinition = SecurityHelper.GetRoleDefinition(site, TaloyhtioCompanyAutomation.PermissionLevel_Howzee_Name);
|
|
if (howzeeGroup != null && howzeeRoleDefinition != null)
|
|
{
|
|
SecurityHelper.AssignGroupRoleToSecurableObject(rootWeb, rootWeb, howzeeRoleDefinition, howzeeGroup, false);
|
|
Console.WriteLine("Granted '{0}' permission level to '{1}' group", TaloyhtioCompanyAutomation.PermissionLevel_Howzee_Name,
|
|
howzeeGroup.Name);
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void createAccountingCompanyPermissionLevel(SPWeb web)
|
|
{
|
|
if (!web.HasUniqueRoleDefinitions)
|
|
{
|
|
web.RoleDefinitions.BreakInheritance(false, false);
|
|
}
|
|
|
|
var roleDefinition = new SPRoleDefinition();
|
|
roleDefinition.Name = TaloyhtioCompanyAutomation.PermissionLevel_AccountingCompany_Name;
|
|
roleDefinition.BasePermissions =
|
|
SPBasePermissions.AddListItems |
|
|
SPBasePermissions.EditListItems |
|
|
SPBasePermissions.DeleteListItems |
|
|
SPBasePermissions.ViewListItems |
|
|
SPBasePermissions.ApproveItems |
|
|
SPBasePermissions.OpenItems |
|
|
SPBasePermissions.ViewVersions |
|
|
SPBasePermissions.DeleteVersions |
|
|
SPBasePermissions.ViewFormPages |
|
|
SPBasePermissions.AddAndCustomizePages |
|
|
SPBasePermissions.BrowseDirectories |
|
|
SPBasePermissions.ViewPages |
|
|
SPBasePermissions.BrowseUserInfo |
|
|
SPBasePermissions.UseRemoteAPIs |
|
|
SPBasePermissions.Open;
|
|
|
|
web.RoleDefinitions.Add(roleDefinition);
|
|
}
|
|
|
|
private static void createHowzeePermissionLevel(SPWeb web)
|
|
{
|
|
if (!web.HasUniqueRoleDefinitions)
|
|
{
|
|
web.RoleDefinitions.BreakInheritance(false, false);
|
|
}
|
|
|
|
var roleDefinition = new SPRoleDefinition();
|
|
roleDefinition.Name = TaloyhtioCompanyAutomation.PermissionLevel_Howzee_Name;
|
|
roleDefinition.BasePermissions =
|
|
SPBasePermissions.ManageLists |
|
|
SPBasePermissions.CancelCheckout |
|
|
SPBasePermissions.AddListItems |
|
|
SPBasePermissions.EditListItems |
|
|
SPBasePermissions.DeleteListItems |
|
|
SPBasePermissions.ViewListItems |
|
|
SPBasePermissions.ApproveItems |
|
|
SPBasePermissions.OpenItems |
|
|
SPBasePermissions.ViewVersions |
|
|
SPBasePermissions.DeleteVersions |
|
|
SPBasePermissions.CreateAlerts |
|
|
SPBasePermissions.ViewFormPages |
|
|
|
|
SPBasePermissions.ManagePermissions |
|
|
SPBasePermissions.ViewUsageData |
|
|
SPBasePermissions.ManageSubwebs |
|
|
SPBasePermissions.ManageWeb |
|
|
|
|
SPBasePermissions.AddAndCustomizePages |
|
|
SPBasePermissions.ApplyThemeAndBorder |
|
|
SPBasePermissions.ApplyStyleSheets |
|
|
SPBasePermissions.CreateGroups |
|
|
|
|
SPBasePermissions.BrowseDirectories |
|
|
SPBasePermissions.ViewPages |
|
|
SPBasePermissions.EnumeratePermissions |
|
|
SPBasePermissions.BrowseUserInfo |
|
|
SPBasePermissions.ManageAlerts |
|
|
SPBasePermissions.UseRemoteAPIs |
|
|
SPBasePermissions.UseClientIntegration |
|
|
SPBasePermissions.Open |
|
|
SPBasePermissions.EditMyUserInfo |
|
|
SPBasePermissions.ManagePersonalViews |
|
|
SPBasePermissions.AddDelPrivateWebParts |
|
|
SPBasePermissions.UpdatePersonalWebParts;
|
|
|
|
web.RoleDefinitions.Add(roleDefinition);
|
|
}
|
|
|
|
private static void createSitesList(SPWeb rootWeb)
|
|
{
|
|
var listId = rootWeb.Lists.Add(
|
|
TaloyhtioCompanyAutomation.List_SitesList_Title,
|
|
"",
|
|
"SitesList",
|
|
"00BFEA71-DE22-43B2-A848-C05709900100", // customlist
|
|
(int)SPListTemplateType.GenericList,
|
|
"100",
|
|
SPListTemplate.QuickLaunchOptions.On);
|
|
|
|
var list = rootWeb.Lists[listId];
|
|
|
|
//list.Fields.Add(TaloyhtioCompanyAutomation.Field_CompanyName_Title, SPFieldType.Text, true);
|
|
var titleField = list.Fields[SPBuiltInFieldId.Title];
|
|
titleField.Title = TaloyhtioCompanyAutomation.Field_CompanyName_Title;
|
|
titleField.Update();
|
|
list.Fields.Add(TaloyhtioCompanyAutomation.Field_Accountant_Title, SPFieldType.User, false);
|
|
list.Fields.Add(TaloyhtioCompanyAutomation.Field_Url_Title, SPFieldType.URL, true);
|
|
var urlField = list.Fields[TaloyhtioCompanyAutomation.Field_Url_Title];
|
|
urlField.StaticName = Constants.Fields.URL_STATIC_NAME;
|
|
urlField.Update();
|
|
list.Fields.Add(TaloyhtioCompanyAutomation.Field_MostPopularSite_Title, SPFieldType.Boolean, false);
|
|
list.Fields.Add("Omistaja", SPFieldType.User, false);
|
|
|
|
var view = list.DefaultView;
|
|
view.ViewFields.Add(list.Fields[TaloyhtioCompanyAutomation.Field_Url_Title]);
|
|
view.ViewFields.Add("Omistaja");
|
|
view.ViewFields.Add(list.Fields[TaloyhtioCompanyAutomation.Field_Accountant_Title]);
|
|
view.Update();
|
|
}
|
|
|
|
}
|
|
}
|