Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Reads the giving directory and populates the node with folders/files structure
        /// </summary>
        /// <param name="hostNode"></param>
        /// <param name="folderPath"></param>
        internal static void LoadModuleFilesFromLocalFolder(ModelNode hostNode, string folderPath)
        {
            var files = Directory.GetFiles(folderPath);
            var folders = Directory.GetDirectories(folderPath);

            foreach (var file in files)
            {
                hostNode.AddDefinitionNode(new ModuleFileDefinition
                {
                    Content = File.ReadAllBytes(file),
                    FileName = Path.GetFileName(file),
                    Overwrite = true
                });
            }

            foreach (var subFolder in folders)
            {
                var subFolderPath = subFolder;

                var folderDef = new FolderDefinition
                {
                    Name = Path.GetFileName(subFolderPath)
                };

                hostNode.AddDefinitionNode(folderDef, folderNode => LoadModuleFilesFromLocalFolder(folderNode, subFolderPath));
            }
        }
Exemplo n.º 3
0
        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 void ValidateFolderProps(Folder folder, FolderDefinition folderModel)
        {
            TraceUtils.WithScope(traceScope =>
            {
                var pair = new ComparePair<FolderDefinition, Folder>(folderModel, folder);

                traceScope.WriteLine(string.Format("Validating model:[{0}] folder:[{1}]", folderModel, folder));

                traceScope.WithTraceIndent(trace => pair
                    .ShouldBeEqual(trace, m => m.Name, o => o.Name));
            });
        }
        public override ModelNode ReverseSingleHost(object reverseHost, ReverseOptions options)
        {
            var item = (reverseHost as FolderReverseHost).HostFolder;

            var def = new FolderDefinition();

            def.Name = item.Name;

            return new FolderModelNode
            {
                Options = { RequireSelfProcessing = true },
                Value = def
            };
        }
Exemplo n.º 6
0
        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;
        }
Exemplo n.º 7
0
        private SPListItem EnsureListFolder(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;
            var currentFolder = folderModelHost.CurrentList.ParentWeb.GetFolder(currentUrl);

            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)
            {
                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
            {
                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;
        }
Exemplo n.º 8
0
        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;
        }
        private void ValidateListFolder(FolderModelHost folderModelHost, FolderDefinition folderModel)
        {
            var folder = GetListFolder(folderModelHost, folderModel);

            ValidateFolderProps(folder, folderModel);
        }
        public void Deploy_ModuleFiles()
        {
            // Step 1, define security groups
            var helloModuleFile = new ModuleFileDefinition
            {
                FileName = "hello-module.txt",
                Content = Encoding.UTF8.GetBytes("A hello world module file provision.")
            };

            var angularFile = new ModuleFileDefinition
            {
                FileName = "angular.min.js",
                Content = Encoding.UTF8.GetBytes(ResourceReader.ReadFromResourceName("Modules.js.angular.min.js"))
            };

            var jQueryFile = new ModuleFileDefinition
            {
                FileName = "jquery-1.11.1.min.js",
                Content = Encoding.UTF8.GetBytes(ResourceReader.ReadFromResourceName("Modules.js.jquery-1.11.1.min.js"))
            };

            var jsFolder = new FolderDefinition { Name = "spmeta2-custom-js" };

            // deploy web model - list and add content type links to list
            var webModel = SPMeta2Model
                             .NewWebModel(web =>
                             {
                                 web
                                     .AddList(BuiltInListDefinitions.StyleLibrary, list =>
                                     {
                                         list
                                             .AddModuleFile(helloModuleFile)
                                             .AddFolder(jsFolder, folder =>
                                             {
                                                 folder
                                                     .AddModuleFile(angularFile)
                                                     .AddModuleFile(jQueryFile);
                                             });
                                     });
                             });

            DeployWebModel(webModel);
        }
Exemplo n.º 11
0
 protected Folder GetLibraryFolder(FolderModelHost folderModelHost, FolderDefinition folderModel)
 {
     return GetLibraryFolder(folderModelHost.CurrentListFolder, folderModel.Name);
 }
Exemplo n.º 12
0
        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 void Deploy_FoldersToList()
        {
            // Step 1, define security groups
            var customerIssues = new ListDefinition
            {
                Title = "Customer KPIs",
                Url = "CustomerKPI",
                Description = "Stores customer related KPIs.",
                TemplateType = BuiltInListTemplateTypeId.GenericList
            };

            var Year2010 = new FolderDefinition { Name = "2010" };
            var Year2011 = new FolderDefinition { Name = "2011" };
            var Year2012 = new FolderDefinition { Name = "2012" };

            var Q1 = new FolderDefinition { Name = "Q1" };
            var Q2 = new FolderDefinition { Name = "Q2" };
            var Q3 = new FolderDefinition { Name = "Q3" };
            var Q4 = new FolderDefinition { Name = "Q4" };

            // deploy web model - list and add content type links to list
            var webModel = SPMeta2Model
                             .NewWebModel(web =>
                             {
                                 web
                                     .AddList(customerIssues, list =>
                                     {
                                         list
                                             .AddFolder(Year2010, folder =>
                                             {
                                                 folder
                                                     .AddFolder(Q1)
                                                     .AddFolder(Q2)
                                                     .AddFolder(Q3)
                                                     .AddFolder(Q4);
                                             })
                                             .AddFolder(Year2011, folder =>
                                             {
                                                 folder
                                                     .AddFolder(Q1)
                                                     .AddFolder(Q2)
                                                     .AddFolder(Q3)
                                                     .AddFolder(Q4);
                                             })
                                             .AddFolder(Year2012, folder =>
                                             {
                                                 folder
                                                     .AddFolder(Q1)
                                                     .AddFolder(Q2)
                                                     .AddFolder(Q3)
                                                     .AddFolder(Q4);
                                             });
                                     });
                             });

            DeployWebModel(webModel);
        }
Exemplo n.º 14
0
        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;
        }
Exemplo n.º 15
0
        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;
        }
Exemplo n.º 16
0
        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;
        }
Exemplo n.º 17
0
        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;
        }
Exemplo n.º 18
0
        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;
        }
Exemplo n.º 19
0
        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;
        }
Exemplo n.º 20
0
        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;
        }
Exemplo n.º 21
0
        protected Folder GetListFolder(FolderModelHost folderModelHost, FolderDefinition folderModel)
        {
            var tmp = string.Empty;
            var result = GetListFolder(folderModelHost, folderModel, out tmp);

            return result;
        }
Exemplo n.º 22
0
 public static ModelNode AddFolder(this ModelNode model, FolderDefinition definition)
 {
     return AddFolder(model, definition, null);
 }
Exemplo n.º 23
0
        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;
        }
Exemplo n.º 24
0
 public static ModelNode AddFolder(this ModelNode model, FolderDefinition definition, Action<ModelNode> action)
 {
     return model.AddDefinitionNode(definition, action);
 }
Exemplo n.º 25
0
        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;
        }
Exemplo n.º 26
0
        /// <summary>
        /// Reads the giving directory and populates the node with folders/files structure
        /// </summary>
        /// <param name="hostNode"></param>
        /// <param name="folderPath"></param>
        /// <param name="shouldIncludeFolderOrFile"></param>
        internal static void LoadModuleFilesFromLocalFolder(ModelNode hostNode, string folderPath,
            Func<string, bool> shouldIncludeFolderOrFile)
        {
            var files = Directory.GetFiles(folderPath);
            var folders = Directory.GetDirectories(folderPath);

            foreach (var file in files)
            {
                if (shouldIncludeFolderOrFile != null)
                {
                    if (!shouldIncludeFolderOrFile(file))
                        continue;
                }

                hostNode.AddDefinitionNode(new ModuleFileDefinition
                {
                    Content = File.ReadAllBytes(file),
                    FileName = Path.GetFileName(file),
                    Overwrite = true
                });
            }

            foreach (var subFolder in folders)
            {
                var subFolderPath = subFolder;

                if (shouldIncludeFolderOrFile != null)
                {
                    if (!shouldIncludeFolderOrFile(subFolderPath))
                        continue;
                }

                var folderDef = new FolderDefinition
                {
                    Name = Path.GetFileName(subFolderPath)
                };

                hostNode.AddDefinitionNode(folderDef, folderNode => LoadModuleFilesFromLocalFolder(folderNode, subFolderPath, shouldIncludeFolderOrFile));
            }
        }