protected void btnNewFolder_Click(object sender, EventArgs e) { try { if (txtNewDirectory.Text.Length > 0) { SharedFileFolder folder = new SharedFileFolder(); folder.ParentId = CurrentFolderId; folder.ModuleId = ModuleId; Module m = new Module(ModuleId); folder.ModuleGuid = m.ModuleGuid; folder.FolderName = Path.GetFileName(txtNewDirectory.Text); if (folder.Save()) { BindData(); } } } catch (Exception ex) { lblError.Text = ex.Message; } upFiles.Update(); }
private void BindData() { if (CurrentFolderId > -1) { SharedFileFolder folder = new SharedFileFolder(this.ModuleId, CurrentFolderId); this.lblCurrentDirectory.Text = folder.FolderName; this.btnGoUp.Visible = true; } else { this.lblCurrentDirectory.Text = string.Empty; this.btnGoUp.Visible = false; } DataView dv = new DataView(SharedFileFolder.GetFoldersAndFiles(ModuleId, CurrentFolderId)); dv.Sort = "filename" + " " + defaultSort; dgFile.DataSource = dv; //dgFile.DataSource = SharedFileFolder.GetFoldersAndFiles(ModuleId, CurrentFolderId); //dgFile.DataKeyField = "ID"; dgFile.DataBind(); lblCounter.Text = dgFile.Rows.Count.ToString() + " " + SharedFileResources.FileManagerObjectsLabel; }
private void DeleteItem(GridViewRow e) { string keys = dgFile.DataKeys[e.RowIndex].Value.ToString(); char[] separator = { '~' }; string[] args = keys.Split(separator); string type = args[1]; if (type == "folder") { int folderID = int.Parse(args[0]); SharedFileFolder folder = new SharedFileFolder(this.ModuleId, folderID); //folder.DeleteAllFiles(this.filePath); SharedFilesHelper.DeleteAllFiles(folder, fileSystem, fileVirtualBasePath, config); SharedFileFolder.DeleteSharedFileFolder(folderID); //TODO: file content changed event so re-index } if (type == "file") { int fileID = int.Parse(args[0]); SharedFile sharedFile = new SharedFile(this.ModuleId, fileID); if (!config.EnableVersioning) { fileSystem.DeleteFile(VirtualPathUtility.Combine(fileVirtualBasePath, sharedFile.ServerFileName)); } sharedFile.Delete(); sharedFile.ContentChanged += new ContentChangedEventHandler(SharedFile_ContentChanged); } }
private void btnUpdateFile_Click(object sender, EventArgs e) { SiteUser siteUser = SiteUtils.GetCurrentSiteUser(); if (siteUser == null) { return; } SharedFile file = new SharedFile(moduleId, itemId); file.ContentChanged += new ContentChangedEventHandler(sharedFile_ContentChanged); if ((file.ItemId > 0) && (file.ModuleId == moduleId)) { file.FriendlyName = txtFriendlyName.Text; file.Description = edDescription.Text; file.FolderId = int.Parse(ddFolders.SelectedValue); if (file.FolderId > -1) { SharedFileFolder folder = new SharedFileFolder(moduleId, file.FolderId); file.FolderGuid = folder.FolderGuid; } if (file.ModuleGuid == Guid.Empty) { Module m = new Module(moduleId); file.ModuleGuid = m.ModuleGuid; } file.UploadUserId = siteUser.UserId; // really last mod date file.UploadDate = DateTime.UtcNow; List <ListItem> selectedRoles = cblRolesThatCanViewFile.Items.Cast <ListItem>() .Where(li => li.Selected) .ToList(); string viewRoles = String.Join(";", selectedRoles.Select(x => x.Value.ToString()).ToArray()); file.ViewRoles = viewRoles; file.Save(); } CurrentPage.UpdateLastModifiedTime(); CacheHelper.ClearModuleCache(moduleId); SiteUtils.QueueIndexing(); if (hdnReturnUrl.Value.Length > 0) { WebUtils.SetupRedirect(this, hdnReturnUrl.Value); return; } WebUtils.SetupRedirect(this, SiteUtils.GetCurrentPageUrl()); }
private void PopulateFolderControls() { Title = SiteUtils.FormatPageTitle(siteSettings, SharedFileResources.SharedFilesEditFolderLabel); heading.Text = SharedFileResources.SharedFilesEditFolderLabel; SharedFileFolder folder = new SharedFileFolder(this.moduleId, this.itemId); if ((folder.FolderId > 0) && (folder.ModuleId == this.moduleId)) { this.pnlNotFound.Visible = false; this.pnlFile.Visible = false; this.pnlFolder.Visible = true; this.txtFolderName.Text = folder.FolderName; List <SharedFileFolder> allFolders = SharedFileFolder.GetSharedModuleFolderList(folder.ModuleId); this.ddFolderList.DataSource = allFolders; this.ddFolderList.DataBind(); this.ddFolderList.Items.Insert(0, new ListItem("Root", "-1")); this.ddFolderList.SelectedValue = folder.ParentId.ToString(); // prevent a folder from being its own parent ListItem item = this.ddFolderList.Items.FindByText(folder.FolderName); if (item != null) { this.ddFolderList.Items.Remove(item); } //// prevent a children folder from being parent //// build list List <int> toRemove = new List <int>(); foreach (ListItem fldItem in this.ddFolderList.Items) { //SharedFileFolder currentFolder = new SharedFileFolder(this.moduleId, Convert.ToInt32(fldItem.Value)); SharedFileFolder currentFolder = SharedFilesHelper.GetFolderFromListById(Convert.ToInt32(fldItem.Value), allFolders); if (currentFolder != null) { if (SharedFilesHelper.GetAllParentsFolderIds(currentFolder, allFolders).Contains(folder.FolderId)) { toRemove.Add(currentFolder.FolderId); } } } // remove list foreach (int itemToRemove in toRemove) { this.ddFolderList.Items.Remove(this.ddFolderList.Items.FindByValue(itemToRemove.ToInvariantString())); } } else { this.pnlNotFound.Visible = true; this.pnlFolder.Visible = false; this.pnlFile.Visible = false; } }
private void PopulateFileControls() { Title = SiteUtils.FormatPageTitle(siteSettings, SharedFileResources.SharedFilesEditLabel); heading.Text = SharedFileResources.SharedFilesEditLabel; SharedFile file = new SharedFile(moduleId, itemId); if ((file.ItemId > 0) && (file.ModuleId == moduleId)) { pnlNotFound.Visible = false; pnlFolder.Visible = false; pnlFile.Visible = true; using (IDataReader reader = SharedFileFolder.GetSharedModuleFolders(file.ModuleId)) { ddFolders.DataSource = reader; ddFolders.DataBind(); } ddFolders.Items.Insert(0, new ListItem("Root", "-1")); ddFolders.SelectedValue = file.FolderId.ToInvariantString(); hdnCurrentFolderId.Value = file.FolderId.ToInvariantString(); if (timeZone != null) { lblUploadDate.Text = file.UploadDate.ToLocalTime(timeZone).ToString(); } else { lblUploadDate.Text = file.UploadDate.AddHours(TimeOffset).ToString(); } SiteUser uploadUser = new SiteUser(siteSettings, file.UploadUserId); lblUploadBy.Text = uploadUser.Name; lblFileSize.Text = file.SizeInKB.ToString(); txtFriendlyName.Text = file.FriendlyName; edDescription.Text = file.Description; if (config.EnableVersioning) { using (IDataReader reader = file.GetHistory()) { grdHistory.DataSource = reader; grdHistory.DataBind(); } } PopulateAllowedRolesList(cblRolesThatCanViewFile, file.ViewRoles); } else { pnlNotFound.Visible = true; pnlFolder.Visible = false; pnlFile.Visible = false; } }
protected void btnUpload_Click(object sender, EventArgs e) { // as long as javascript is available this code should never execute // because the standard file input ir replaced by javascript and the file upload happens // at the service url /SharedFiles/upload.ashx // this is fallback implementation if (!fileSystem.FolderExists(fileVirtualBasePath)) { fileSystem.CreateFolder(fileVirtualBasePath); } SiteUser siteUser = SiteUtils.GetCurrentSiteUser(); if (siteUser == null) { WebUtils.SetupRedirect(this, Request.RawUrl); return; } if (uploader.HasFile) { SharedFile sharedFile = new SharedFile(); string fileName = Path.GetFileName(uploader.FileName); sharedFile.ModuleId = ModuleId; sharedFile.ModuleGuid = ModuleConfiguration.ModuleGuid; sharedFile.OriginalFileName = fileName; sharedFile.FriendlyName = fileName; sharedFile.SizeInKB = (int)(uploader.FileContent.Length / 1024); sharedFile.FolderId = CurrentFolderId; if (CurrentFolderId > -1) { SharedFileFolder folder = new SharedFileFolder(ModuleId, CurrentFolderId); sharedFile.FolderGuid = folder.FolderGuid; } sharedFile.UploadUserId = siteUser.UserId; sharedFile.UserGuid = siteUser.UserGuid; sharedFile.ContentChanged += new ContentChangedEventHandler(SharedFile_ContentChanged); if (sharedFile.Save()) { string destPath = VirtualPathUtility.Combine(fileVirtualBasePath, sharedFile.ServerFileName); using (Stream s = uploader.FileContent) { fileSystem.SaveFile(destPath, s, IOHelper.GetMimeType(Path.GetExtension(sharedFile.FriendlyName).ToLower()), true); } } } WebUtils.SetupRedirect(this, Request.RawUrl); }
public static List <SharedFileFolder> GetAllParentsFolder(SharedFileFolder folder, List <SharedFileFolder> allFolders) { List <SharedFileFolder> list = new List <SharedFileFolder>(); while (folder.ParentId > -1) { folder = GetFolderFromListById(folder.ParentId, allFolders); list.Insert(0, folder);// note: Insert at 0 to preserve a path stucture } return(list); }
protected void dgFile_RowUpdating(object sender, GridViewUpdateEventArgs e) { SiteUser siteUser = SiteUtils.GetCurrentSiteUser(); if (siteUser == null) { return; } try { GridView grid = (GridView)sender; TextBox txtEditName = (TextBox)grid.Rows[e.RowIndex].Cells[1].FindControl("txtEditName"); if (txtEditName.Text.Trim().Length < 1) { return; } string keys = grid.DataKeys[e.RowIndex].Value.ToString(); char[] separator = { '~' }; string[] args = keys.Split(separator); string type = args[1]; if (type == "folder") { int folderID = int.Parse(args[0]); SharedFileFolder folder = new SharedFileFolder(this.ModuleId, folderID); folder.FolderName = Path.GetFileName(txtEditName.Text); folder.Save(); } if (type == "file") { int fileID = int.Parse(args[0]); SharedFile sharedFile = new SharedFile(this.ModuleId, fileID); sharedFile.ContentChanged += new ContentChangedEventHandler(sharedFile_ContentChanged); sharedFile.FriendlyName = Path.GetFileName(txtEditName.Text); sharedFile.UploadUserId = siteUser.UserId; sharedFile.UploadDate = DateTime.UtcNow; //lastModDate sharedFile.Save(); } dgFile.EditIndex = -1; BindData(); } catch (Exception ex) { lblError.Text = ex.Message; } upFiles.Update(); }
private void MoveUp() { if (CurrentFolderId > 0) { SharedFileFolder folder = new SharedFileFolder(ModuleId, CurrentFolderId); CurrentFolderId = folder.ParentId; BindData(); } else { lblError.Text = SharedFileResources.RootDirectoryReached; } }
protected void btnUpload_Click(object sender, EventArgs e) { string upLoadPath = Page.Server.MapPath(WebUtils.GetApplicationRoot() + "/Data/Sites/" + SiteId.ToString(CultureInfo.InvariantCulture) + "/SharedFiles/"); if (!Directory.Exists(upLoadPath)) { Directory.CreateDirectory(upLoadPath); } SiteUser siteUser = SiteUtils.GetCurrentSiteUser(); if (multiFile.Files.Length > 0) { foreach (UploadedFile file in multiFile.Files) { if (file != null && file.FileName != null && file.FileName.Trim().Length > 0) { SharedFile sharedFile = new SharedFile(); Module m = new Module(ModuleId); sharedFile.ModuleId = ModuleId; sharedFile.ModuleGuid = m.ModuleGuid; sharedFile.OriginalFileName = file.FileName; sharedFile.FriendlyName = Path.GetFileName(file.FileName); sharedFile.SizeInKB = (int)(file.ContentLength / 1024); sharedFile.FolderId = CurrentFolderId; if (CurrentFolderId > -1) { SharedFileFolder folder = new SharedFileFolder(ModuleId, CurrentFolderId); sharedFile.FolderGuid = folder.FolderGuid; } sharedFile.UploadUserId = siteUser.UserId; sharedFile.UserGuid = siteUser.UserGuid; sharedFile.ContentChanged += new ContentChangedEventHandler(sharedFile_ContentChanged); if (sharedFile.Save()) { string destPath = Path.Combine(upLoadPath, sharedFile.ServerFileName); if (File.Exists(destPath)) { File.Delete(destPath); } file.MoveTo(destPath, MoveToOptions.Overwrite); } } } } WebUtils.SetupRedirect(this, Request.RawUrl); }
private void BindData() { if (CurrentFolderId > -1) { SharedFileFolder folder = new SharedFileFolder(ModuleId, CurrentFolderId); btnGoUp.Visible = true; rptFoldersLinks.Visible = true; if (displaySettings.ShowClickableFolderPathCrumbs) { lblCurrentDirectory.Visible = false; // by Thomas N List <SharedFileFolder> allFolders = SharedFileFolder.GetSharedModuleFolderList(folder.ModuleId); rptFoldersLinks.DataSource = SharedFilesHelper.GetAllParentsFolder(folder, allFolders); IEnumerable <SharedFileFolder> fullPathList = SharedFilesHelper.GetAllParentsFolder(folder, allFolders).Concat(Enumerable.Repeat(folder, 1)); rptFoldersLinks.DataSource = fullPathList; rptFoldersLinks.DataBind(); } else { lblCurrentDirectory.Text = folder.FolderName; } } else { lblCurrentDirectory.Visible = false; btnGoUp.Visible = false; rptFoldersLinks.Visible = false; } DataView dv = new DataView(SharedFileFolder.GetFoldersAndFiles(ModuleId, CurrentFolderId)); EnumerableRowCollection <DataRow> query = from row in dv.Table.AsEnumerable() where CheckRoles(row.Field <string>("ViewRoles")) select row; DataView view = query.AsDataView(); view.Sort = $"type ASC, filename {config.DefaultSort}"; dgFile.DataSource = view; dgFile.DataBind(); lblCounter.Text = $"{dgFile.Rows.Count.ToString()} {SharedFileResources.FileManagerObjectsLabel}"; }
private void btnDeleteFolder_Click(object sender, EventArgs e) { //SharedFile sharedFile = new SharedFile(moduleId, itemId); //sharedFile.CreateHistory(this.upLoadPath, this.historyPath); //SharedFile.DeleteSharedFile(this.itemId); SharedFileFolder.DeleteSharedFileFolder(this.itemId); CacheHelper.TouchCacheDependencyFile(cacheDependencyKey); if (hdnReturnUrl.Value.Length > 0) { WebUtils.SetupRedirect(this, hdnReturnUrl.Value); return; } WebUtils.SetupRedirect(this, SiteUtils.GetCurrentPageUrl()); }
private void btnUpdateFile_Click(object sender, EventArgs e) { SiteUser siteUser = SiteUtils.GetCurrentSiteUser(); if (siteUser == null) { return; } SharedFile file = new SharedFile(this.moduleId, this.itemId); file.ContentChanged += new ContentChangedEventHandler(sharedFile_ContentChanged); if ((file.ItemId > 0) && (file.ModuleId == this.moduleId)) { file.FriendlyName = this.txtFriendlyName.Text; file.Description = edDescription.Text; file.FolderId = int.Parse(this.ddFolders.SelectedValue); if (file.FolderId > -1) { SharedFileFolder folder = new SharedFileFolder(this.moduleId, file.FolderId); file.FolderGuid = folder.FolderGuid; } if (file.ModuleGuid == Guid.Empty) { Module m = new Module(moduleId); file.ModuleGuid = m.ModuleGuid; } file.UploadUserId = siteUser.UserId; // really last mod date file.UploadDate = DateTime.UtcNow; file.Save(); } CurrentPage.UpdateLastModifiedTime(); CacheHelper.ClearModuleCache(moduleId); SiteUtils.QueueIndexing(); if (hdnReturnUrl.Value.Length > 0) { WebUtils.SetupRedirect(this, hdnReturnUrl.Value); return; } WebUtils.SetupRedirect(this, SiteUtils.GetCurrentPageUrl()); }
private void CreateFile(Module module, SharedFileFolder folder, SiteUser siteUser, XmlNode fileNode) { SharedFile sharedFile = new SharedFile(); sharedFile.ModuleId = module.ModuleId; sharedFile.ModuleGuid = module.ModuleGuid; if (folder != null) { sharedFile.FolderId = folder.FolderId; sharedFile.FolderGuid = folder.FolderGuid; } if (siteUser != null) { sharedFile.UploadUserId = siteUser.UserId; sharedFile.UserGuid = siteUser.UserGuid; } XmlAttributeCollection fileAttributes = fileNode.Attributes; if (fileAttributes["originalFileName"] != null) { sharedFile.OriginalFileName = fileAttributes["originalFileName"].Value; } if (fileAttributes["friendlyName"] != null) { sharedFile.FriendlyName = fileAttributes["friendlyName"].Value; } if (fileAttributes["serverFileName"] != null) { sharedFile.ServerFileName = fileAttributes["serverFileName"].Value; } if (fileAttributes["sortOrder"] != null) { int size = 0; if (int.TryParse(fileAttributes["sortOrder"].Value, out size)) { sharedFile.SizeInKB = size; } } sharedFile.Save(); }
private void btnDeleteFolder_Click(object sender, EventArgs e) { SharedFileFolder folder = new SharedFileFolder(this.moduleId, this.itemId); if ((folder.FolderId > 0) && (folder.ModuleId == this.moduleId)) { SharedFilesHelper.DeleteAllFiles(folder, fileSystem, virtualSourcePath, config); SharedFileFolder.DeleteSharedFileFolder(this.itemId); CacheHelper.ClearModuleCache(moduleId); if (hdnReturnUrl.Value.Length > 0) { WebUtils.SetupRedirect(this, hdnReturnUrl.Value); return; } } WebUtils.SetupRedirect(this, SiteUtils.GetCurrentPageUrl()); }
private void btnUpdateFolder_Click(object sender, EventArgs e) { SharedFileFolder folder = new SharedFileFolder(this.moduleId, this.itemId); if ((folder.FolderId > 0) && (folder.ModuleId == this.moduleId)) { folder.FolderName = this.txtFolderName.Text; folder.ParentId = int.Parse(this.ddFolderList.SelectedValue); folder.Save(); } CacheHelper.TouchCacheDependencyFile(cacheDependencyKey); if (hdnReturnUrl.Value.Length > 0) { WebUtils.SetupRedirect(this, hdnReturnUrl.Value); return; } WebUtils.SetupRedirect(this, SiteUtils.GetCurrentPageUrl()); }
private void PopulateFileControls() { Title = SiteUtils.FormatPageTitle(siteSettings, SharedFileResources.SharedFilesEditLabel); SharedFile file = new SharedFile(this.moduleId, this.itemId); if ((file.ItemId > 0) && (file.ModuleId == this.moduleId)) { this.pnlNotFound.Visible = false; this.pnlFolder.Visible = false; this.pnlFile.Visible = true; using (IDataReader reader = SharedFileFolder.GetSharedModuleFolders(file.ModuleId)) { this.ddFolders.DataSource = reader; this.ddFolders.DataBind(); } this.ddFolders.Items.Insert(0, new ListItem("Root", "-1")); this.ddFolders.SelectedValue = file.FolderId.ToString(); this.lblUploadDate.Text = file.UploadDate.AddHours(timeOffset).ToString(); SiteUser uploadUser = new SiteUser(siteSettings, file.UploadUserId); this.lblUploadBy.Text = uploadUser.Name; this.lblFileSize.Text = file.SizeInKB.ToString(); this.txtFriendlyName.Text = file.FriendlyName; edDescription.Text = file.Description; using (IDataReader reader = file.GetHistory()) { grdHistory.DataSource = reader; grdHistory.DataBind(); } } else { pnlNotFound.Visible = true; pnlFolder.Visible = false; pnlFile.Visible = false; } }
private void BindData() { if (CurrentFolderId > -1) { SharedFileFolder folder = new SharedFileFolder(this.ModuleId, CurrentFolderId); btnGoUp.Visible = true; rptFoldersLinks.Visible = true; if (displaySettings.ShowClickableFolderPathCrumbs) { lblCurrentDirectory.Visible = false; // by Thomas N List <SharedFileFolder> allFolders = SharedFileFolder.GetSharedModuleFolderList(folder.ModuleId); rptFoldersLinks.DataSource = SharedFilesHelper.GetAllParentsFolder(folder, allFolders); IEnumerable <SharedFileFolder> fullPathList = SharedFilesHelper.GetAllParentsFolder(folder, allFolders).Concat(Enumerable.Repeat(folder, 1)); rptFoldersLinks.DataSource = fullPathList; rptFoldersLinks.DataBind(); } else { lblCurrentDirectory.Text = folder.FolderName; } } else { lblCurrentDirectory.Visible = false; btnGoUp.Visible = false; rptFoldersLinks.Visible = false; } DataView dv = new DataView(SharedFileFolder.GetFoldersAndFiles(ModuleId, CurrentFolderId)); dv.Sort = "type ASC, filename" + " " + config.DefaultSort; dgFile.DataSource = dv; dgFile.DataBind(); lblCounter.Text = dgFile.Rows.Count.ToString() + " " + SharedFileResources.FileManagerObjectsLabel; }
protected void dgFile_Sorting(object sender, GridViewSortEventArgs e) { if (ViewState["SortBy"] == null) { ViewState["SortBy"] = "ASC"; } else if (ViewState["SortBy"].ToString().Equals("ASC")) { ViewState["SortBy"] = "DESC"; } else { ViewState["SortBy"] = "ASC"; } DataView dv = new DataView(SharedFileFolder.GetFoldersAndFiles(ModuleId, CurrentFolderId)); dv.Sort = e.SortExpression + " " + ViewState["SortBy"]; dgFile.DataSource = dv; dgFile.DataBind(); upFiles.Update(); }
private void DeleteItem(GridViewRow e) { string keys = dgFile.DataKeys[e.RowIndex].Value.ToString(); char[] separator = { '~' }; string[] args = keys.Split(separator); string type = args[1]; if (type == "folder") { int folderID = int.Parse(args[0]); SharedFileFolder folder = new SharedFileFolder(this.ModuleId, folderID); folder.DeleteAllFiles(this.filePath); SharedFileFolder.DeleteSharedFileFolder(folderID); } if (type == "file") { int fileID = int.Parse(args[0]); SharedFile sharedFile = new SharedFile(this.ModuleId, fileID); sharedFile.ContentChanged += new ContentChangedEventHandler(sharedFile_ContentChanged); sharedFile.Delete(this.filePath); } }
private void PopulateFolderControls() { Title = SiteUtils.FormatPageTitle(siteSettings, SharedFileResources.SharedFilesEditFolderLabel); SharedFileFolder folder = new SharedFileFolder(this.moduleId, this.itemId); if ((folder.FolderId > 0) && (folder.ModuleId == this.moduleId)) { this.pnlNotFound.Visible = false; this.pnlFile.Visible = false; this.pnlFolder.Visible = true; this.txtFolderName.Text = folder.FolderName; using (IDataReader reader = SharedFileFolder.GetSharedModuleFolders(folder.ModuleId)) { this.ddFolderList.DataSource = reader; this.ddFolderList.DataBind(); } this.ddFolderList.Items.Insert(0, new ListItem("Root", "-1")); this.ddFolderList.SelectedValue = folder.ParentId.ToString(); // prevent a folder from being its own parent ListItem item = this.ddFolderList.Items.FindByText(folder.FolderName); if (item != null) { this.ddFolderList.Items.Remove(item); } } else { this.pnlNotFound.Visible = true; this.pnlFolder.Visible = false; this.pnlFile.Visible = false; } }
public void ProcessRequest(HttpContext context) { base.Initialize(context); if (!UserCanEditModule(ModuleId, SharedFile.FeatureGuid)) { log.Info("User has no edit permission so returning 404"); Response.StatusCode = 404; return; } if (CurrentSite == null) { log.Info("CurrentSite is null so returning 404"); Response.StatusCode = 404; return; } if (CurrentUser == null) { log.Info("CurrentUser is null so returning 404"); Response.StatusCode = 404; return; } if (FileSystem == null) { log.Info("FileSystem is null so returning 404"); Response.StatusCode = 404; return; } if (Request.Files.Count == 0) { log.Info("Posted File Count is zero so returning 404"); Response.StatusCode = 404; return; } if (Request.Files.Count > SharedFilesConfiguration.MaxFilesToUploadAtOnce) { log.Info("Posted File Count is greater than allowed amount so returning 404"); Response.StatusCode = 404; return; } module = GetModule(ModuleId, SharedFile.FeatureGuid); if (module == null) { log.Info("Module is null so returning 404"); Response.StatusCode = 404; return; } itemId = WebUtils.ParseInt32FromQueryString("ItemID", itemId); currentFolderId = WebUtils.ParseInt32FromQueryString("frmData", currentFolderId); virtualSourcePath = "~/Data/Sites/" + CurrentSite.SiteId.ToInvariantString() + "/SharedFiles/"; virtualHistoryPath = "~/Data/Sites/" + CurrentSite.SiteId.ToInvariantString() + "/SharedFiles/History/"; Hashtable moduleSettings = ModuleSettings.GetModuleSettings(ModuleId); config = new SharedFilesConfiguration(moduleSettings); context.Response.ContentType = "text/plain";//"application/json"; var r = new System.Collections.Generic.List <UploadFilesResult>(); JavaScriptSerializer js = new JavaScriptSerializer(); if (!FileSystem.FolderExists(virtualSourcePath)) { FileSystem.CreateFolder(virtualSourcePath); } for (int f = 0; f < Request.Files.Count; f++) { HttpPostedFile file = Request.Files[f]; string fileName = Path.GetFileName(file.FileName); SharedFile sharedFile; if ((itemId > -1) && (Request.Files.Count == 1)) { // updating an existing file sharedFile = new SharedFile(ModuleId, itemId); if (config.EnableVersioning) { bool historyCreated = SharedFilesHelper.CreateHistory(sharedFile, FileSystem, virtualSourcePath, virtualHistoryPath); if (historyCreated) { sharedFile.ServerFileName = System.Guid.NewGuid().ToString() + ".config"; } } } else { // new file sharedFile = new SharedFile(); } sharedFile.ModuleId = ModuleId; sharedFile.ModuleGuid = module.ModuleGuid; sharedFile.OriginalFileName = fileName; sharedFile.FriendlyName = fileName; sharedFile.SizeInKB = (file.ContentLength / 1024); sharedFile.FolderId = currentFolderId; if (currentFolderId > -1) { SharedFileFolder folder = new SharedFileFolder(ModuleId, currentFolderId); sharedFile.FolderGuid = folder.FolderGuid; } sharedFile.UploadUserId = CurrentUser.UserId; sharedFile.UserGuid = CurrentUser.UserGuid; sharedFile.UploadDate = DateTime.UtcNow; sharedFile.ContentChanged += new ContentChangedEventHandler(sharedFile_ContentChanged); //file.SaveAs(Server.MapPath("~/Files/" + fileName)); if (sharedFile.Save()) { string destPath = VirtualPathUtility.Combine(virtualSourcePath, sharedFile.ServerFileName); using (Stream s = file.InputStream) { FileSystem.SaveFile(destPath, s, IOHelper.GetMimeType(Path.GetExtension(sharedFile.FriendlyName).ToLower()), true); } } r.Add(new UploadFilesResult() { //Thumbnail_url = savedFileName, Name = fileName, Length = file.ContentLength, Type = file.ContentType }); } CurrentPage.UpdateLastModifiedTime(); CacheHelper.ClearModuleCache(ModuleId); SiteUtils.QueueIndexing(); var uploadedFiles = new { files = r.ToArray() }; var jsonObj = js.Serialize(uploadedFiles); context.Response.Write(jsonObj.ToString()); }
private void btnUpdateFolder_Click(object sender, EventArgs e) { SharedFileFolder folder = new SharedFileFolder(moduleId, itemId); if ((folder.FolderId > 0) && (folder.ModuleId == moduleId)) { List <ListItem> selectedRoles = cblRolesThatCanViewFolder.Items.Cast <ListItem>() .Where(li => li.Selected) .ToList(); string viewRoles = String.Join(";", selectedRoles.Select(x => x.Value.ToString()).ToArray()); folder.ViewRoles = viewRoles; if (cbPushRolesToChildren.Checked) { // Current Folder's (can be root) Folders and Files FoldersAndFiles foldersAndFiles = SharedFileFolder.GetFoldersAndFilesModel(moduleId, folder.FolderId); // Recursively loop through folders and get child items void getChildItems(List <Folder> folders) { foreach (var childFolder in folders) { FoldersAndFiles childFoldersAndFiles = SharedFileFolder.GetFoldersAndFilesModel(moduleId, childFolder.ID); if (childFoldersAndFiles.Folders != null && childFoldersAndFiles.Folders.Count() > 0) { // Add folders to folders list childFoldersAndFiles.Folders.ForEach(f => { foldersAndFiles.Folders.Add(f); }); // Recursively call this function again getChildItems(childFoldersAndFiles.Folders); } if (childFoldersAndFiles.Files != null && childFoldersAndFiles.Files.Count() > 0) { // Add files to files list childFoldersAndFiles.Files.ForEach(f => { foldersAndFiles.Files.Add(f); }); } } } getChildItems(foldersAndFiles.Folders); // Loop through all Folders and set their ViewRoles to the parent folder's foldersAndFiles.Folders.ForEach(f => { var setFolder = new SharedFileFolder { FolderId = f.ID, ModuleId = f.ModuleID, FolderName = f.Name, ParentId = f.ParentID, ModuleGuid = f.ModuleGuid, ParentGuid = f.ParentGuid, ViewRoles = folder.ViewRoles }; setFolder.Save(); }); // Loop through all Files and set their ViewRoles to the parent folder's foldersAndFiles.Files.ForEach(f => { var setFile = new SharedFile { ItemId = f.ID, ModuleId = f.ModuleID, UploadUserId = f.UploadUserID, FriendlyName = f.Name, OriginalFileName = f.OriginalFileName, ServerFileName = f.ServerFileName, SizeInKB = f.SizeInKB, UploadDate = f.UploadDate, FolderId = f.FolderID, ModuleGuid = f.ModuleGuid, UserGuid = f.UserGuid, FolderGuid = f.FolderGuid, Description = f.Description, ViewRoles = folder.ViewRoles }; setFile.Save(); }); // 1. Get all files for current folder // 2. get all folders for current folder (sql should only get folders which contain files or folders) // 3. set viewroles on each file/folder in current folder // 4. step through all folders in current folder and repeat steps 1-3 // SQL Method? // 1. update all files with parentid = current folder id and moduleid = moduleid // 2. update all folders with parent id = current folder id and moduleid = moduleid // 3. update all files/folders within each folder } folder.FolderName = txtFolderName.Text; folder.ParentId = int.Parse(ddFolderList.SelectedValue); folder.Save(); } CacheHelper.ClearModuleCache(moduleId); if (hdnReturnUrl.Value.Length > 0) { WebUtils.SetupRedirect(this, hdnReturnUrl.Value); return; } WebUtils.SetupRedirect(this, SiteUtils.GetCurrentPageUrl()); }
public static void DeleteAllFiles(SharedFileFolder folder, IFileSystem fileSystem, string fileVirtualBasePath, SharedFilesConfiguration config) { // method implemented by Jean-Michel 2008-07-31 // TODO: implement check whether versioning is enabled before calling this method // if we are keeping versions we should not delete the files if (folder == null) { return; } if (fileSystem == null) { return; } if (string.IsNullOrEmpty(fileVirtualBasePath)) { return; } if (folder.FolderId == -1) { return; } ArrayList folders = new ArrayList(); ArrayList files = new ArrayList(); using (IDataReader reader = SharedFile.GetSharedFiles(folder.ModuleId, folder.FolderId)) { while (reader.Read()) { files.Add(Convert.ToInt32(reader["ItemID"])); } } using (IDataReader reader = SharedFileFolder.GetSharedFolders(folder.ModuleId, folder.FolderId)) { while (reader.Read()) { folders.Add(Convert.ToInt32(reader["FolderID"])); } } foreach (int id in files) { SharedFile sharedFile = new SharedFile(folder.ModuleId, id); sharedFile.Delete(); if (!config.EnableVersioning) { fileSystem.DeleteFile(VirtualPathUtility.Combine(fileVirtualBasePath, sharedFile.ServerFileName)); } } foreach (int id in folders) { SharedFileFolder subFolder = new SharedFileFolder(folder.ModuleId, id); DeleteAllFiles(subFolder, fileSystem, fileVirtualBasePath, config); SharedFileFolder.DeleteSharedFileFolder(id); } }
public static List <int> GetAllParentsFolderIds(SharedFileFolder folder, List <SharedFileFolder> allFolders) { return(GetAllParentsFolder(folder, allFolders).Select(fld => fld.FolderId).ToList()); }
public void InstallContent(Module module, string configInfo) { if (string.IsNullOrEmpty(configInfo)) { return; } SiteSettings siteSettings = new SiteSettings(module.SiteId); SiteUser admin = SiteUser.GetNewestUser(siteSettings); string upLoadPath = HostingEnvironment.MapPath("~/Data/Sites/" + module.SiteId.ToInvariantString() + "/SharedFiles/"); if (!Directory.Exists(upLoadPath)) { Directory.CreateDirectory(upLoadPath); } XmlDocument xml = new XmlDocument(); using (StreamReader stream = File.OpenText(HostingEnvironment.MapPath(configInfo))) { xml.LoadXml(stream.ReadToEnd()); } XmlAttributeCollection attributes = xml.DocumentElement.Attributes; if (attributes["filePath"].Value.Length > 0) { string destPath = "~/Data/Sites/" + module.SiteId.ToInvariantString() + "/SharedFiles/"; if (!Directory.Exists(HostingEnvironment.MapPath(destPath))) { Directory.CreateDirectory(HostingEnvironment.MapPath(destPath)); } IOHelper.CopyFolderContents(HostingEnvironment.MapPath(attributes["filePath"].Value), HostingEnvironment.MapPath(destPath)); destPath = "~/Data/Sites/" + module.SiteId.ToInvariantString() + "/SharedFiles/History/"; if (!Directory.Exists(HostingEnvironment.MapPath(destPath))) { Directory.CreateDirectory(HostingEnvironment.MapPath(destPath)); } } foreach (XmlNode node in xml.DocumentElement.ChildNodes) { if (node.Name == "file") //root level files { CreateFile(module, null, admin, node); } } XmlNode foldersNode = null; foreach (XmlNode node in xml.DocumentElement.ChildNodes) { if (node.Name == "folders") { foldersNode = node; break; } } if (foldersNode != null) { foreach (XmlNode folderNode in foldersNode.ChildNodes) { if (folderNode.Name == "folder") { XmlAttributeCollection folderAttributes = folderNode.Attributes; if ((folderAttributes["folderName"] != null) && (folderAttributes["folderName"].Value.Length > 0)) { //create folder SharedFileFolder folder = new SharedFileFolder(); folder.ModuleId = module.ModuleId; folder.ModuleGuid = module.ModuleGuid; folder.FolderName = folderAttributes["folderName"].Value; folder.Save(); foreach (XmlNode fileNode in folderNode.ChildNodes) { if (fileNode.Name == "file") { CreateFile(module, folder, admin, fileNode); } } } } } } }