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;
        }
Example #3
0
        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);
            }
        }
Example #4
0
        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());
        }
Example #5
0
        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;
            }
        }
Example #6
0
        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;
            }
        }
Example #7
0
        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);
        }
Example #8
0
        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();
        }
Example #10
0
 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);
        }
Example #12
0
        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}";
        }
Example #13
0
        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());
        }
Example #14
0
        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();
        }
Example #16
0
        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());
        }
Example #17
0
        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());
        }
Example #18
0
        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;
        }
Example #20
0
        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);
            }
        }
Example #22
0
        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;
            }
        }
Example #23
0
        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());
        }
Example #24
0
        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());
        }
Example #25
0
        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);
            }
        }
Example #26
0
 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);
                                }
                            }
                        }
                    }
                }
            }
        }