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();
     }
 }
Esempio n. 2
0
        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));
        }