示例#1
0
        /// <summary>
        /// Event for create new folder.
        /// </summary>
        /// <param name="sender">The sender object.</param>
        /// <param name="e">The event arguments.</param>
        public void newFolderToolStripMenuItem_Click(object sender, EventArgs e)
        {
            CreateFolderForm createFolderForm = new CreateFolderForm();

            createFolderForm.SelectedFolder = this.GetSelectedFolder();
            DialogResult dr = createFolderForm.ShowDialog();

            if (dr == DialogResult.OK)
            {
                string folderName     = createFolderForm.FolderName;
                string selectedFolder = createFolderForm.SelectedFolder;

                // create the new folder.
                this.leftSpine1.FolderView.CreateFolder(selectedFolder, folderName);
            }
        }
示例#2
0
 public void CreateFolder()
 {
     if (FolderNode == null)
     {
         return;
     }
     using (var dialog = new CreateFolderForm())
     {
         if (dialog.ShowDialog() == DialogResult.OK)
         {
             var syncDestFolderTask = new SynchronizeDriveEmptyFolderTask(Account,
                                                                          FolderInfo.AccountName, AsyncTask.NormalPriority, null, FolderInfo.File);
             TaskManager.Add(syncDestFolderTask);
             TaskManager.Add(new CreateFolderTask(Account, FolderInfo.AccountName,
                                                  AsyncTask.NormalPriority, new AsyncTask[] { syncDestFolderTask }, dialog.DirecotryName, FolderInfo.File)
             {
                 Tag = FolderNode
             });
         }
     }
 }
示例#3
0
        private void createFolderToolStripMenuItem_Click(object sender, EventArgs e)
        {
            CreateFolderForm f = new CreateFolderForm(managerhistory_itemnodes.NodeWorking());

            f.Show(MainForm);
        }
示例#4
0
文件: FIleList.cs 项目: fiftin/oblqo
 public void CreateFolder()
 {
     if (FolderNode == null)
     {
         return;
     }
     using (var dialog = new CreateFolderForm())
     {
         if (dialog.ShowDialog() == DialogResult.OK)
         {
             var syncDestFolderTask = new SynchronizeDriveEmptyFolderTask(Account,
                 FolderInfo.AccountName, AsyncTask.NormalPriority, null, FolderInfo.File);
             TaskManager.Add(syncDestFolderTask);
             TaskManager.Add(new CreateFolderTask(Account, FolderInfo.AccountName,
                 AsyncTask.NormalPriority, new AsyncTask[] { syncDestFolderTask }, dialog.DirecotryName, FolderInfo.File)
             { Tag = FolderNode });
         }
     }
 }
        public async Task <IActionResult> CreateFolder([Required][FromBody] CreateFolderForm request)
        {
            if (!CheckNewItemName(request.Name, out var badRequest))
            {
                return(badRequest !);
            }

            if (request.ReadAccess == FileAccess.Nobody || request.WriteAccess == FileAccess.Nobody)
            {
                return(BadRequest("Only system can create system readable/writable folders"));
            }

            var user = HttpContext.AuthenticatedUserOrThrow();

            // Check write access
            StorageItem?parentFolder = null;

            if (request.ParentFolder != null)
            {
                parentFolder = await database.StorageItems.FirstOrDefaultAsync(i =>
                                                                               i.Ftype == FileType.Folder && i.Id == request.ParentFolder.Value);

                if (parentFolder == null)
                {
                    return(NotFound("Parent folder doesn't exist"));
                }
            }

            // Write access
            if (parentFolder == null)
            {
                // Only admin can write to root folder
                if (!user.HasAccessLevel(UserAccessLevel.Admin))
                {
                    return(this.WorkingForbid("Only admins can write to root folder"));
                }
            }
            else
            {
                if (!parentFolder.IsWritableBy(user))
                {
                    return(this.WorkingForbid("You don't have write access to the parent folder"));
                }
            }

            // Check for duplicate name
            var parentId = parentFolder?.Id;

            if (await database.StorageItems.FirstOrDefaultAsync(i =>
                                                                i.ParentId == parentId && i.Name == request.Name) != null)
            {
                return(BadRequest("Item with that name already exists in the parent folder"));
            }

            // Folder is fine to be created
            await database.LogEntries.AddAsync(new LogEntry()
            {
                Message      = $"New folder \"{request.Name}\" created with owner",
                TargetUserId = user.Id
            });

            var newFolder = new StorageItem()
            {
                Name            = request.Name,
                Ftype           = FileType.Folder,
                ReadAccess      = request.ReadAccess,
                WriteAccess     = request.WriteAccess,
                AllowParentless = parentId == null,
                ParentId        = parentId,
                OwnerId         = user.Id,
            };

            await database.StorageItems.AddAsync(newFolder);

            await database.SaveChangesAsync();

            logger.LogInformation("New folder \"{Name}\" with read: {ReadAccess} and write access: " +
                                  "{WriteAccess}, created by: {Email}", newFolder.Name,
                                  newFolder.ReadAccess.ToUserReadableString(), newFolder.WriteAccess.ToUserReadableString(), user.Email);

            // Need to queue a job to calculate the folder size
            jobClient.Enqueue <CountFolderItemsJob>((x) => x.Execute(newFolder.Id, CancellationToken.None));

            return(Ok($"New folder with id {newFolder.Id} created"));
        }