internal static void LoadList(CmdletContext ctx, List list, bool detailed) { ctx.Load(list); ctx.Load(list, l => l.RootFolder, l => l.DefaultViewUrl, l => l.HasUniqueRoleAssignments); if (detailed) { ctx.Load(list, l => l.DefaultDisplayFormUrl, l => l.DefaultEditFormUrl, l => l.DefaultNewFormUrl, l => l.IsSiteAssetsLibrary, l => l.OnQuickLaunch, l => l.SchemaXml, l => l.UserCustomActions, l => l.ValidationFormula, l => l.ValidationMessage, l => l.WorkflowAssociations); SPOFolder.LoadFolder(ctx, list.RootFolder, detailed, true); } else { ctx.ExecuteQuery(); } }
public SPOFolder GetFolder(bool detailed) { if (detailed && _detailedFolder != null) { return(_detailedFolder); } if (!detailed && _basicFolder != null) { return(_basicFolder); } if (detailed && _detailedFolder == null) { SPOFolder.LoadFolder(SPOSiteContext.CurrentSiteContext.Context, _item.Folder, true, true); _detailedFolder = new SPOFolder(_item.Folder, true); _basicFolder = _detailedFolder; return(_detailedFolder); } else if (!detailed && _basicFolder == null) { SPOFolder.LoadFolder(SPOSiteContext.CurrentSiteContext.Context, _item.Folder, false, true); _basicFolder = new SPOFolder(_item.Folder, true); return(_basicFolder); } return(null); }
public SPOFolder GetFolder(string listRelativeFolderUrl, bool detailed, bool createIfMissing) { SPOFolder rootFolder = this.GetRootFolder(detailed); if (string.IsNullOrEmpty(listRelativeFolderUrl)) { return(rootFolder); } string rootFolderUrl = rootFolder.ServerRelativeUrl.TrimEnd('/'); Folder folder = null; try { folder = _list.ParentWeb.GetFolderByServerRelativeUrl(rootFolderUrl + "/" + listRelativeFolderUrl); SPOFolder.LoadFolder(SPOSiteContext.CurrentSiteContext.Context, folder, detailed, true); } catch (ServerException) { folder = null; } if (folder == null && createIfMissing) { if (!this.EnableFolderCreation) { this.EnableFolderCreation = true; this.Update(); } string[] folders = listRelativeFolderUrl.Trim('/').Split('/'); string folderPath = string.Empty; for (int i = 0; i < folders.Length; i++) { string parentFolder = folderPath; folderPath += "/" + folders[i]; folder = null; try { folder = _list.ParentWeb.GetFolderByServerRelativeUrl(rootFolderUrl + folderPath); SPOFolder.LoadFolder(SPOSiteContext.CurrentSiteContext.Context, folder, detailed, true); } catch (ServerException) { folder = null; } if (folder == null) { ListItemCreationInformation lici = new ListItemCreationInformation(); lici.LeafName = folders[i]; lici.FolderUrl = rootFolderUrl + parentFolder; // folderPath.Trim('/'); lici.UnderlyingObjectType = FileSystemObjectType.Folder; var item = _list.AddItem(lici); item["Title"] = folders[i]; item.Update(); item.Context.ExecuteQuery(); folder = item.Folder; SPOFolder.LoadFolder(SPOSiteContext.CurrentSiteContext.Context, folder, detailed, true); } } } // Still no folder so error out if (folder == null) { throw new Exception(string.Format("The folder '{0}' could not be found.", listRelativeFolderUrl)); } return(new SPOFolder(folder, true)); }