protected File GetFile(FolderModelHost folderHost, ModuleFileDefinition moduleFile) { Folder folder = null; if (folderHost.CurrentList != null) { folder = folderHost.CurrentListFolder; } else if (folderHost.CurrentContentType != null) { folder = folderHost.CurrentContentTypeFolder; } else if (folderHost.CurrentWebFolder != null) { folder = folderHost.CurrentWebFolder; } var web = folderHost.HostWeb; var context = web.Context; var file = web.GetFileByServerRelativeUrl(GetSafeFileUrl(folder, moduleFile)); context.Load(file, f => f.Exists); context.ExecuteQueryWithTrace(); return(file); }
protected SPFolder GetListFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { var list = folderModelHost.CurrentList; var currentFolderItem = folderModelHost.CurrentListItem; var serverRelativeUrl = folderModelHost.CurrentListItem == null ? list.RootFolder.ServerRelativeUrl : folderModelHost.CurrentListItem.Folder.ServerRelativeUrl; var currentUrl = serverRelativeUrl + "/" + folderModel.Name; TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Loading list folder with URL: [{0}]", currentUrl); var folder = folderModelHost.CurrentList.ParentWeb.GetFolder(currentUrl); if (folder != null && folder.Exists) { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "List folder with URL does exist: [{0}]", currentUrl); } else { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "List folder with URL does not exist: [{0}]", currentUrl); } return(folder); }
private ListItem EnsureListFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { string serverRelativeUrl = string.Empty; var list = folderModelHost.CurrentList; var context = list.Context; var currentFolder = GetListFolder(folderModelHost, folderModel, out serverRelativeUrl); var currentFolderItem = folderModelHost.CurrentListItem; InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentFolder, ObjectType = typeof(Folder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); context.ExecuteQuery(); if (currentFolder == null) { currentFolderItem = list.AddItem(new ListItemCreationInformation { FolderUrl = serverRelativeUrl, LeafName = folderModel.Name, UnderlyingObjectType = FileSystemObjectType.Folder }); currentFolderItem["Title"] = folderModel.Name; currentFolderItem.Update(); context.ExecuteQuery(); } else { context.Load(currentFolder, f => f.ListItemAllFields); context.Load(currentFolder, f => f.Name); context.ExecuteQuery(); currentFolderItem = currentFolder.ListItemAllFields; } InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFolder, ObjectType = typeof(Folder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); return(currentFolderItem); }
protected Folder GetListFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { var tmp = string.Empty; var result = GetListFolder(folderModelHost, folderModel, out tmp); return(result); }
protected Folder GetLibraryFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { var parentFolder = folderModelHost.CurrentLibraryFolder; var context = parentFolder.Context; context.Load(parentFolder, f => f.Folders); context.ExecuteQueryWithTrace(); // dirty stuff, needs to be rewritten var currentFolder = parentFolder .Folders .OfType <Folder>() .FirstOrDefault(f => f.Name == folderModel.Name); if (currentFolder != null) { context.Load(currentFolder, f => f.Name); context.ExecuteQueryWithTrace(); TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Library folder with name does exist: [{0}]", folderModel.Name); } else { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Library folder with name does not exist: [{0}]", folderModel.Name); } return(currentFolder); }
protected string ResolveContentTypeId(FolderModelHost folderHost, ModuleFileDefinition moduleFile) { var context = folderHost.CurrentLibraryFolder.Context; var list = folderHost.CurrentList; var stringCustomContentType = string.Empty; // preload custm content type if (!string.IsNullOrEmpty(moduleFile.ContentTypeName)) { var listContentTypes = list.ContentTypes; context.Load(listContentTypes); context.ExecuteQueryWithTrace(); var listContentType = listContentTypes.ToList() .FirstOrDefault(c => c.Name.ToUpper() == moduleFile.ContentTypeName.ToUpper()); if (listContentType == null) { throw new ArgumentNullException( string.Format("Cannot find content type with Name:[{0}] in List:[{1}]", new string[] { moduleFile.ContentTypeName, list.Title })); } stringCustomContentType = listContentType.Id.ToString(); } return(stringCustomContentType); }
public override void WithResolvingModelHost(object modelHost, DefinitionBase model, Type childModelType, Action <object> action) { var folderModelHost = modelHost.WithAssertAndCast <FolderModelHost>("modelHost", value => value.RequireNotNull()); var folderModel = model.WithAssertAndCast <FolderDefinition>("model", value => value.RequireNotNull()); if (folderModelHost.CurrentLibrary != null) { var currentFolder = EnsureLibraryFolder(folderModelHost, folderModel); var newContext = new FolderModelHost { CurrentLibrary = folderModelHost.CurrentLibrary, CurrentLibraryFolder = currentFolder }; action(newContext); currentFolder.Update(); } else if (folderModelHost.CurrentList != null) { var currentListItem = EnsureListFolder(folderModelHost, folderModel); var newContext = new FolderModelHost { CurrentList = folderModelHost.CurrentList, CurrentListItem = currentListItem }; action(newContext); currentListItem.Update(); } }
private SPFolder FindCurrentLibraryFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { TraceService.Information((int)LogEventId.ModelProvisionCoreCall, "FindCurrentLibraryFolder()"); var currentFolder = GetLibraryFolder(folderModelHost, folderModel); return(currentFolder); }
private Folder GetListFolder(FolderModelHost folderModelHost, FolderDefinition folderModel, out string serverRelativeUrl) { var list = folderModelHost.CurrentList; var context = list.Context; context.Load(list, l => l.RootFolder); context.Load(list, l => l.ParentWeb); #if NET35 throw new SPMeta2NotImplementedException("Not implemented for SP2010 - https://github.com/SubPointSolutions/spmeta2/issues/766"); #endif #if !NET35 if (folderModelHost.CurrentListItem != null) { context.Load(folderModelHost.CurrentListItem, l => l.Folder); } context.ExecuteQueryWithTrace(); serverRelativeUrl = folderModelHost.CurrentListItem == null ? list.RootFolder.ServerRelativeUrl : folderModelHost.CurrentListItem.Folder.ServerRelativeUrl; var currentUrl = serverRelativeUrl + "/" + folderModel.Name; var currentFolder = folderModelHost.CurrentList.ParentWeb.GetFolderByServerRelativeUrl(currentUrl); var doesFolderExist = false; try { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Loading list folder with URL: [{0}]", currentUrl); context.Load(currentFolder, f => f.Name); context.ExecuteQueryWithTrace(); TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "List folder with URL does exist: [{0}]", currentUrl); doesFolderExist = true; } catch (ServerException e) { if (e.ServerErrorTypeName == "System.IO.FileNotFoundException") { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "List folder with URL does not exist: [{0}]", currentUrl); doesFolderExist = false; } } if (doesFolderExist) { return(currentFolder); } #endif return(null); }
private SPFolder EnsureLibraryFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { TraceService.Information((int)LogEventId.ModelProvisionCoreCall, "EnsureLibraryFolder()"); var parentFolder = folderModelHost.CurrentLibraryFolder; // dirty stuff, needs to be rewritten var currentFolder = GetLibraryFolder(folderModelHost, folderModel); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentFolder == null || !currentFolder.Exists ? null : currentFolder, ObjectType = typeof(SPFolder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); if (currentFolder == null || !currentFolder.Exists) { TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "Processing new library folder"); currentFolder = parentFolder.SubFolders.Add(folderModel.Name); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFolder, ObjectType = typeof(SPFolder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); } else { TraceService.Information((int)LogEventId.ModelProvisionProcessingExistingObject, "Processing existing library folder"); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFolder, ObjectType = typeof(SPFolder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); currentFolder.Update(); } return(currentFolder); }
private SPListItem FindCurrentListFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { TraceService.Information((int)LogEventId.ModelProvisionCoreCall, "FindCurrentListFolder()"); var list = folderModelHost.CurrentList; var currentFolder = GetListFolder(folderModelHost, folderModel); return(currentFolder.Item); }
private SPFolder EnsureLibraryFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { var parentFolder = folderModelHost.CurrentLibraryFolder; // dirty stuff, needs to be rewritten var currentFolder = parentFolder .SubFolders .OfType <SPFolder>() .FirstOrDefault(f => f.Name == folderModel.Name); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentFolder == null || !currentFolder.Exists ? null : currentFolder, ObjectType = typeof(SPFolder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); if (currentFolder == null || !currentFolder.Exists) { currentFolder = parentFolder.SubFolders.Add(folderModel.Name); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFolder, ObjectType = typeof(SPFolder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); } else { InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFolder, ObjectType = typeof(SPFolder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); currentFolder.Update(); } return(currentFolder); }
private Folder GetListFolder(FolderModelHost folderModelHost, FolderDefinition folderModel, out string serverRelativeUrl) { var list = folderModelHost.CurrentList; var context = list.Context; context.Load(list, l => l.RootFolder); context.Load(list, l => l.ParentWeb); if (folderModelHost.CurrentListItem != null) { context.Load(folderModelHost.CurrentListItem, l => l.Folder); } context.ExecuteQueryWithTrace(); serverRelativeUrl = folderModelHost.CurrentListItem == null ? list.RootFolder.ServerRelativeUrl : folderModelHost.CurrentListItem.Folder.ServerRelativeUrl; var currentUrl = serverRelativeUrl + "/" + folderModel.Name; var currentFolder = folderModelHost.CurrentList.ParentWeb.GetFolderByServerRelativeUrl(currentUrl); var doesFolderExist = false; try { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Loading list folder with URL: [{0}]", currentUrl); context.Load(currentFolder, f => f.Name); context.ExecuteQueryWithTrace(); TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "List folder with URL does exist: [{0}]", currentUrl); doesFolderExist = true; } catch (ServerException e) { if (e.ServerErrorTypeName == "System.IO.FileNotFoundException") { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "List folder with URL does not exist: [{0}]", currentUrl); doesFolderExist = false; } } if (doesFolderExist) { return(currentFolder); } return(null); }
protected SPFile GetFile(FolderModelHost folderHost, ModuleFileDefinition moduleFile) { if (folderHost.CurrentWebFolder != null) return folderHost.CurrentWebFolder.ParentWeb.GetFile(GetSafeFileUrl(folderHost.CurrentWebFolder, moduleFile)); if (folderHost.CurrentContentType != null) return folderHost.CurrentContentTypeFolder.ParentWeb.GetFile(GetSafeFileUrl(folderHost.CurrentContentTypeFolder, moduleFile)); if (folderHost.CurrentLibraryFolder != null) return folderHost.CurrentLibraryFolder.ParentWeb.GetFile(GetSafeFileUrl(folderHost.CurrentLibraryFolder, moduleFile)); throw new ArgumentException("CurrentWebFolder/CurrentContentType/CurrentLibraryFolder should not be null"); }
private Folder EnsureLibraryFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { TraceService.Information((int)LogEventId.ModelProvisionCoreCall, "EnsureLibraryFolder()"); var parentFolder = folderModelHost.CurrentLibraryFolder; var context = parentFolder.Context; var currentFolder = GetLibraryFolder(folderModelHost, folderModel); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentFolder, ObjectType = typeof(Folder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); if (currentFolder == null) { TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "Processing new library folder"); currentFolder = parentFolder.Folders.Add(folderModel.Name); context.ExecuteQueryWithTrace(); } else { TraceService.Information((int)LogEventId.ModelProvisionProcessingExistingObject, "Processing existing library folder"); } InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFolder, ObjectType = typeof(Folder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); currentFolder.Update(); context.ExecuteQueryWithTrace(); return(currentFolder); }
private void ProcessContentTypeModuleFile(FolderModelHost folderHost, ModuleFileDefinition moduleFile) { var folder = folderHost.CurrentContentTypeFolder; var currentFile = folder.ParentWeb.GetFile(GetSafeFileUrl(folder, moduleFile)); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentFile.Exists ? currentFile : null, ObjectType = typeof(SPFile), ObjectDefinition = moduleFile, ModelHost = folderHost }); if (moduleFile.Overwrite) { var file = folder.Files.Add(moduleFile.FileName, moduleFile.Content, moduleFile.Overwrite); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = file, ObjectType = typeof(SPFile), ObjectDefinition = moduleFile, ModelHost = folderHost }); } else { InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFile.Exists ? currentFile : null, ObjectType = typeof(SPFile), ObjectDefinition = moduleFile, ModelHost = folderHost }); } folder.Update(); }
private Folder GetListFolder(FolderModelHost folderModelHost, FolderDefinition folderModel, out string serverRelativeUrl) { var list = folderModelHost.CurrentList; var context = list.Context; context.Load(list, l => l.RootFolder); context.Load(list, l => l.ParentWeb); if (folderModelHost.CurrentListItem != null) { context.Load(folderModelHost.CurrentListItem, l => l.Folder); } context.ExecuteQuery(); serverRelativeUrl = folderModelHost.CurrentListItem == null ? list.RootFolder.ServerRelativeUrl : folderModelHost.CurrentListItem.Folder.ServerRelativeUrl; var currentUrl = serverRelativeUrl + "/" + folderModel.Name; var currentFolder = folderModelHost.CurrentList.ParentWeb.GetFolderByServerRelativeUrl(currentUrl); var doesFolderExist = false; try { context.Load(currentFolder, f => f.Name); context.ExecuteQuery(); doesFolderExist = true; } catch (ServerException e) { if (e.ServerErrorTypeName == "System.IO.FileNotFoundException") { doesFolderExist = false; } } if (doesFolderExist) { return(currentFolder); } return(null); }
protected string ResolveContentTypeId(FolderModelHost folderHost, ModuleFileDefinition moduleFile) { var context = folderHost.CurrentListFolder.Context; var list = folderHost.CurrentList; var stringCustomContentType = string.Empty; if (!string.IsNullOrEmpty(moduleFile.ContentTypeId)) { stringCustomContentType = moduleFile.ContentTypeId; } else if (!string.IsNullOrEmpty(moduleFile.ContentTypeName)) { stringCustomContentType = ContentTypeLookupService.LookupContentTypeByName(list, moduleFile.ContentTypeName).Id.ToString(); } return(stringCustomContentType); }
public override void WithResolvingModelHost(ModelHostResolveContext modelHostContext) { var modelHost = modelHostContext.ModelHost; var model = modelHostContext.Model; var childModelType = modelHostContext.ChildModelType; var action = modelHostContext.Action; var webDefinition = model as WebDefinition; SPWeb parentWeb = null; if (modelHost is SiteModelHost) { parentWeb = (modelHost as SiteModelHost).HostSite.RootWeb; } if (modelHost is WebModelHost) { parentWeb = (modelHost as WebModelHost).HostWeb; } using (var currentWeb = GetOrCreateWeb(parentWeb, webDefinition, false)) { if (childModelType == typeof(ModuleFileDefinition)) { var folderModelHost = new FolderModelHost { CurrentWeb = currentWeb, CurrentWebFolder = currentWeb.RootFolder, }; action(folderModelHost); } else { action(new WebModelHost { HostWeb = currentWeb }); } currentWeb.Update(); } }
public override void WithResolvingModelHost(ModelHostResolveContext modelHostContext) { var modelHost = modelHostContext.ModelHost; var model = modelHostContext.Model; var childModelType = modelHostContext.ChildModelType; var action = modelHostContext.Action; var folderModelHost = modelHost.WithAssertAndCast <FolderModelHost>("modelHost", value => value.RequireNotNull()); var folderModel = model.WithAssertAndCast <FolderDefinition>("model", value => value.RequireNotNull()); if (folderModelHost.CurrentLibrary != null) { var currentFolder = FindCurrentLibraryFolder(folderModelHost, folderModel); var newContext = new FolderModelHost { CurrentLibrary = folderModelHost.CurrentLibrary, CurrentLibraryFolder = currentFolder }; action(newContext); currentFolder.Update(); } else if (folderModelHost.CurrentList != null) { var currentListItem = FindCurrentListFolder(folderModelHost, folderModel); var newContext = new FolderModelHost { CurrentList = folderModelHost.CurrentList, CurrentListItem = currentListItem }; action(newContext); if (newContext.ShouldUpdateHost) { currentListItem.Update(); } } }
private Folder EnsureLibraryFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { var parentFolder = folderModelHost.CurrentLibraryFolder; var context = parentFolder.Context; var currentFolder = GetLibraryFolder(folderModelHost, folderModel); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentFolder, ObjectType = typeof(Folder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); if (currentFolder == null) { currentFolder = parentFolder.Folders.Add(folderModel.Name); context.ExecuteQuery(); } InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFolder, ObjectType = typeof(Folder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); currentFolder.Update(); context.ExecuteQuery(); return(currentFolder); }
public override void WithResolvingModelHost(object modelHost, DefinitionBase model, Type childModelType, Action <object> action) { var webModelHost = modelHost.WithAssertAndCast <WebModelHost>("modelHost", value => value.RequireNotNull()); var web = webModelHost.HostWeb; var listDefinition = model as ListDefinition; if (web != null && listDefinition != null) { var list = web.GetList(SPUtility.ConcatUrls(web.ServerRelativeUrl, listDefinition.GetListUrl())); if (childModelType == typeof(ModuleFileDefinition)) { action(list.RootFolder); } else if (childModelType == typeof(FolderDefinition)) { var folderModelHost = new FolderModelHost { CurrentLibrary = list as SPDocumentLibrary, CurrentLibraryFolder = list.RootFolder, CurrentList = (list as SPDocumentLibrary != null) ? null : list, CurrentListItem = null, }; action(folderModelHost); } else { action(list); } list.Update(); } else { action(modelHost); } }
protected Folder GetLibraryFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { var parentFolder = folderModelHost.CurrentLibraryFolder; var context = parentFolder.Context; context.Load(parentFolder, f => f.Folders); context.ExecuteQuery(); // dirty stuff, needs to be rewritten var currentFolder = parentFolder .Folders .OfType <Folder>() .FirstOrDefault(f => f.Name == folderModel.Name); if (currentFolder != null) { context.Load(currentFolder, f => f.Name); context.ExecuteQuery(); } return(currentFolder); }
public override void WithResolvingModelHost(object modelHost, DefinitionBase model, Type childModelType, Action <object> action) { var folderModelHost = modelHost.WithAssertAndCast <FolderModelHost>("modelHost", value => value.RequireNotNull()); var folderModel = model.WithAssertAndCast <FolderDefinition>("model", value => value.RequireNotNull()); if (folderModelHost.CurrentList != null && folderModelHost.CurrentList.BaseType == BaseType.DocumentLibrary) { var currentFolder = EnsureLibraryFolder(folderModelHost, folderModel); var newContext = new FolderModelHost { CurrentList = folderModelHost.CurrentList, CurrentLibraryFolder = currentFolder, CurrentWeb = folderModelHost.CurrentWeb //Folder = currentFolder, //List = folderModelHost.CurrentList, //Web = folderModelHost.CurrentWeb }; action(newContext); } else if (folderModelHost.CurrentList != null && folderModelHost.CurrentList.BaseType != BaseType.DocumentLibrary) { var currentListItem = EnsureListFolder(folderModelHost, folderModel); var newContext = new FolderModelHost { CurrentList = folderModelHost.CurrentList, CurrentListItem = currentListItem, CurrentWeb = folderModelHost.CurrentWeb }; action(newContext); } else { throw new NotImplementedException("model host is unklnown"); } }
protected SPFolder GetLibraryFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { var parentFolder = folderModelHost.CurrentLibraryFolder; // dirty stuff, needs to be rewritten var folder = parentFolder .SubFolders .OfType <SPFolder>() .FirstOrDefault(f => f.Name == folderModel.Name); if (folder != null) { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Library folder with name does exist: [{0}]", folderModel.Name); } else { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Library folder with name does not exist: [{0}]", folderModel.Name); } return(folder); }
public override void WithResolvingModelHost(object modelHost, DefinitionBase model, Type childModelType, Action <object> action) { var webDefinition = model as WebDefinition; SPWeb parentWeb = null; if (modelHost is SiteModelHost) { parentWeb = (modelHost as SiteModelHost).HostSite.RootWeb; } if (modelHost is WebModelHost) { parentWeb = (modelHost as WebModelHost).HostWeb; } using (var currentWeb = GetOrCreateWeb(parentWeb, webDefinition, false)) { if (childModelType == typeof(ModuleFileDefinition)) { var folderModelHost = new FolderModelHost { CurrentWeb = currentWeb, CurrentWebFolder = currentWeb.RootFolder, }; action(folderModelHost); } else { action(new WebModelHost { HostWeb = currentWeb }); } currentWeb.Update(); } }
protected bool ShouldDeployLibraryFolder(FolderModelHost folderModelHost) { return(folderModelHost.CurrentList != null && folderModelHost.CurrentList.BaseType == BaseType.DocumentLibrary); }
private ListItem EnsureListFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "EnsureListFolder()"); var serverRelativeUrl = string.Empty; var list = folderModelHost.CurrentList; var context = list.Context; var currentFolder = GetListFolder(folderModelHost, folderModel, out serverRelativeUrl); var currentFolderItem = folderModelHost.CurrentListItem; InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentFolder, ObjectType = typeof(Folder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); context.ExecuteQueryWithTrace(); if (currentFolder == null) { TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "Processing new list folder"); currentFolderItem = list.AddItem(new ListItemCreationInformation { FolderUrl = serverRelativeUrl, LeafName = folderModel.Name, UnderlyingObjectType = FileSystemObjectType.Folder }); currentFolderItem[BuiltInInternalFieldNames.Title] = folderModel.Name; currentFolderItem.Update(); context.ExecuteQueryWithTrace(); context.Load(currentFolderItem.Folder); context.ExecuteQueryWithTrace(); currentFolder = currentFolderItem.Folder; } else { TraceService.Information((int)LogEventId.ModelProvisionProcessingExistingObject, "Processing existing list folder"); context.Load(currentFolder, f => f.ListItemAllFields); context.Load(currentFolder, f => f.Name); context.ExecuteQueryWithTrace(); currentFolderItem = currentFolder.ListItemAllFields; } InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFolder, ObjectType = typeof(Folder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); return(currentFolderItem); }
private void ProcessWebModuleFile(FolderModelHost folderHost, ModuleFileDefinition moduleFile) { throw new SPMeta2NotImplementedException("Module provision under web folders is not implemented yet."); }
private SPListItem EnsureListFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "EnsureListFolder()"); var list = folderModelHost.CurrentList; var currentFolderItem = folderModelHost.CurrentListItem; var serverRelativeUrl = folderModelHost.CurrentListItem == null ? list.RootFolder.ServerRelativeUrl : folderModelHost.CurrentListItem.Folder.ServerRelativeUrl; var currentUrl = serverRelativeUrl + "/" + folderModel.Name; var currentFolder = GetListFolder(folderModelHost, folderModel); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentFolder == null || !currentFolder.Exists ? null : currentFolder, ObjectType = typeof(SPFolder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); if (!currentFolder.Exists) { TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "Processing new list folder"); currentFolderItem = list.AddItem(serverRelativeUrl, SPFileSystemObjectType.Folder); currentFolderItem[SPBuiltInFieldId.Title] = folderModel.Name; currentFolderItem.Update(); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFolderItem.Folder, ObjectType = typeof(SPFolder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); } else { TraceService.Information((int)LogEventId.ModelProvisionProcessingExistingObject, "Processing existing list folder"); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFolder, ObjectType = typeof(SPFolder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); currentFolder.Update(); currentFolderItem = currentFolder.Item; } return(currentFolderItem); }