示例#1
0
        public File CreateRootGroupsFolder(int userID, int portalID)
        {
            //create folder
            FileController ctrl = new FileController();
            UserController ctrlUser = new UserController();
            UserInfo user = ctrlUser.GetUser(portalID, userID);

            //create root shared folder
            File rootPortalFolder = new File();
            //rootPortalFolder.ChildCount = 0;
            rootPortalFolder.CreatedByUserID = userID;
            rootPortalFolder.CreatedByUserName = user.DisplayName;
            rootPortalFolder.CreatedDate = System.DateTime.Now;
            rootPortalFolder.IsInTrash = false;
            rootPortalFolder.IsFolder = true;
            rootPortalFolder.ItemType = 0;
            rootPortalFolder.LastModifiedByUserID = userID;
            rootPortalFolder.LastModifiedByUserName = user.DisplayName;
            rootPortalFolder.LastModifiedDate = System.DateTime.Now;
            rootPortalFolder.Name = "Groups Root Folder";
            rootPortalFolder.Description = "";
            rootPortalFolder.ParentID = GetRootPortalFolder(portalID, userID).ID;
            rootPortalFolder.PortalID = portalID;

            ctrl.Create(rootPortalFolder);

            //add permissions
            //admins only

            //update files config
            FileConfigurationController ctrlConfig = new FileConfigurationController();
            var configs = ctrlConfig.GetItems(portalID) as List<FileConfiguration>;
            configs[0].RootGroupsFolderID = rootPortalFolder.ID;
            ctrlConfig.Update(configs[0]);

            //unify existing user folders under default users folder
            foreach (var userFolder in ctrl.GetV702GroupFolders(portalID))
            {
                userFolder.ParentID = rootPortalFolder.ID;
                ctrl.Update(userFolder);
            }

            //return default new root users folder
            return rootPortalFolder;
        }
示例#2
0
        public File CreateGroupFolder(int roleID, int portalID, UserInfo currentUser)
        {
            FileController ctrl = new FileController();
            File rootGroupFolder = new File();

            //rootGroupFolder.ChildCount = 0;
            rootGroupFolder.CreatedByUserID = currentUser.UserID;
            rootGroupFolder.CreatedByUserName = currentUser.DisplayName;
            rootGroupFolder.CreatedDate = System.DateTime.Now;
            rootGroupFolder.IsInTrash = false;
            rootGroupFolder.IsFolder = true;
            rootGroupFolder.ItemType = 0;
            rootGroupFolder.LastModifiedByUserID = currentUser.UserID;
            rootGroupFolder.LastModifiedByUserName = currentUser.DisplayName;
            rootGroupFolder.LastModifiedDate = System.DateTime.Now;
            RoleController ctrlRole = new RoleController();
            RoleInfo role = ctrlRole.GetRole(roleID, portalID);
            rootGroupFolder.Name = role.RoleName;
            rootGroupFolder.ParentID = GetRootGroupsFolder(portalID, currentUser.UserID).ID;
            rootGroupFolder.PortalID = portalID;
            rootGroupFolder.RoleID = roleID;

            ctrl.Create(rootGroupFolder);

            Permission permission = new Permission();
            permission.CanAddFiles = true;
            permission.CanAddFolders = true;
            permission.CanDelete = false;
            permission.CanModify = false;
            permission.CanModifyPermission = false;
            permission.CanSee = true;
            permission.FileID = rootGroupFolder.ID;
            permission.ModuleID = 0;
            permission.PortalID = portalID;
            permission.RoleID = role.RoleID;
            permission.RoleName = role.RoleName;

            PermissionController ctrlPerm = new PermissionController();
            ctrlPerm.Create(permission);

            return rootGroupFolder;
        }
示例#3
0
        /// ----------------------------------------------------------------------------- 
        /// <summary> 
        /// Page_Load runs when the control is loaded 
        /// </summary> 
        /// ----------------------------------------------------------------------------- 
        protected void Page_Load(object sender, System.EventArgs e)
        {
            try
            {
                #region Check Registration and Trial Period

                string strProductName = "QuickDocs Pro";
                //check registration
                try
                {
                    switch (DNNQuickApps.Modules.RegistrationClient.API.IsRegistered(PortalAlias.HTTPAlias, strProductName, "QD_MODULESGALORE"))
                    {
                        case RegistrationClientAPIResult.Registered:

                            break;
                        case RegistrationClientAPIResult.Localhost:
                            ModuleController ctrl1 = new ModuleController();
                            ModuleInfo info1 = ctrl1.GetModule(ModuleId);
                            ShowMessage("<a href=\"http://www.dnnquickapps.com\">DNNQuickApps.com</a> QuickDocsPro - Using Developer License", ModuleId);
                            break;
                        case RegistrationClientAPIResult.NotRegistered:
                            string strMessage;

                            ModuleController ctrl = new ModuleController();
                            ModuleInfo info = ctrl.GetModule(ModuleId);

                            if (info.CreatedOnDate < System.DateTime.Now.AddDays(-30))
                            {
                                strMessage = String.Format("The trial period has expired for Product: <b>{1}</b> on Site Alias: <b>{0}</b> and the module is not registered. Visit <a href=\"http://www.DNNQuickApps.com\">DNNQuickApps.com</a> to purchase a license and register.", PortalAlias.HTTPAlias, strProductName);
                                ShowUserErrorMessage(strMessage, ModuleId);
                                HideAllFileControls();
                                return;
                            }
                            else
                            {
                                DateTime expirationDate = info.CreatedOnDate.AddDays(30);
                                int daysRemaining = (expirationDate.DayOfYear + (expirationDate.Year * 365)) - (System.DateTime.Now.DayOfYear + (System.DateTime.Now.Year * 365));
                                strMessage = String.Format("{0} days remaining in trial for Product: <b>{2}</b> on Site Alias: <b>{1}</b>.  Visit <a href=\"http://www.dnnquickapps.com\">DNNQuickApps.com</a> to purchase a license and register.", daysRemaining, PortalAlias.HTTPAlias, strProductName);
                                ShowMessage(strMessage, ModuleId);
                            }
                            break;
                    }
                }
                catch (Exception ex)
                {
                    ShowUserErrorMessage("Problem loading registration codes from DNNQuickApps.com QuickRegistration Client.", ModuleId);
                    HideAllFileControls();
                    return;
                }

                #endregion

                #region Verify module configuration and get module settings
                //check if files is configured
                FileConfigurationController configCtrl = new FileConfigurationController();
                List<FileConfiguration> configs = configCtrl.GetItems(PortalId) as List<FileConfiguration>;
                if (configs.Count == 0)
                {
                    ShowMessage(String.Format("The Files module has not been configured for this portal.  Go to the <a href=\"{0}\">Portal Settings</a> to complete setup.", EditUrl("PortalSettings")), ModuleId);
                    HideAllFileControls();
                    return;
                }

                //files mode
                if (Settings["FilesMode"] != null)
                {
                    _strFilesMode = Settings["FilesMode"].ToString();
                }
                else
                {
                    ShowMessage(String.Format("This Files module has not been setup.  Go to the <a href=\"{0}\">Module Settings</a> to complete setup.", EditUrl(TabId, "Module", false, "moduleId=" + ModuleId)), ModuleId);
                    HideAllFileControls();
                    return;
                }

                //get module root folder ID
                _moduleRootFolderID = GetModuleRootFolderID(_strFilesMode);

                #endregion

                #region Get query string parameters

                //Determine ItemId of CustomerSelfService to Update
                if (this.Request.QueryString["Folder"] != null) //if none, then _parent = -1
                {
                    _parentID = Int32.Parse(this.Request.QueryString["Folder"]);
                }

                //check for userID
                if (this.Request.QueryString["UserID"] != null) //if none, then _userIDParam = -1
                {
                    _userIDParameter = Int32.Parse(this.Request.QueryString["UserID"]);
                }

                //check for groupID
                if (this.Request.QueryString["GroupID"] != null) //if none, then _roleIDParam = -1
                {
                    _roleIDParameter = Int32.Parse(this.Request.QueryString["GroupID"]);
                }

                //check for trash view
                if (this.Request.QueryString["View"] != null)
                {
                    _view = this.Request.QueryString["View"];
                }

                //sort field
                if (this.Request.QueryString["Sort"] != null)
                {
                    _sortType = this.Request.QueryString["sort"];
                }

                //ModuleID param
                bool boolModuleIDMatched = false; //used to determine if query strings apply to this instance
                if (this.Request.QueryString["ModuleID"] != null)
                {
                    _moduleID = Int32.Parse(this.Request.QueryString["ModuleID"]);
                    if (_moduleID == ModuleId)
                    {
                        boolModuleIDMatched = true;
                    }
                }
                else
                {
                    _moduleID = ModuleId;
                    boolModuleIDMatched = true;
                }

                //look for success message
                if (this.Request.QueryString["Success"] != null && boolModuleIDMatched == true)
                {
                    _messageSuccess = this.Request.QueryString["Success"];
                    ShowUserSuccessMessage(_messageSuccess, ModuleId);
                }
                #endregion

                FileController objQuickFiles = new FileController();

                #region Resolve the current parent ID
                //get parent folder
                //after this, _parentID has the correct folder
                if (_parentID != -1) //folder parameter found
                {
                    objQuickFiles = new FileController();
                    //Verify permission to object
                    File parentFolder = objQuickFiles.Get(_parentID);

                    if (parentFolder == null)//folder does not exist
                    {
                        ShowUserErrorMessage("The requested object does not exist.", ModuleId);
                        HideAllFileControls();
                        return;
                    }

                    //current user can't see the folder
                    if (!parentFolder.CanSee(UserId, PortalId, PortalSettings.AdministratorRoleId, true))
                    {
                        ShowUserErrorMessage("You do not have sufficient permission to view this object.", ModuleId);
                        HideAllFileControls();
                        return;
                    }

                    //todo: verify parentID/folder exists under module folder or file ID when passed as a parameter
                }
                else //set to module root folder
                {
                    _parentID = _moduleRootFolderID;
                }

                //show root folder if specifc module folder is selected and this module is not
                //specified moduleid,
                //supports multiple file modules on one page
                if (_moduleID != Null.NullInteger && !boolModuleIDMatched)
                {
                    _parentID = _moduleRootFolderID;
                }

                #endregion

                #region Get Root Folder and Files Collection
                //declare files collection
                List<File> colQuickFiles;

                //check for alternate view and build files collection
                if (_view == "trash")
                {
                    if (UserInfo.IsInRole(PortalSettings.AdministratorRoleName))
                    {
                        colQuickFiles = objQuickFiles.GetItemsInTrash(UserId, PortalId, PortalSettings.AdministratorRoleId) as List<File>;
                        _colQuickFiles = colQuickFiles;
                    }
                    else
                    {
                        ShowUserErrorMessage("You do not have sufficient permission to view this object.", ModuleId);
                        HideAllFileControls();
                        return;
                    }
                }
                else
                {
                    //if parentid still -1, return null and hide controls
                    if (_parentID != -1)
                    {
                        switch (_strFilesMode)
                        {
                            case "UserFiles":
                                colQuickFiles = objQuickFiles.GetUserItemsByParent(_parentID, UserId, PortalId, PortalSettings.AdministratorRoleId, _sortType, _userIDParameter) as List<File>;
                                break;
                            case "GroupFiles":
                                colQuickFiles = objQuickFiles.GetGroupItemsByParent(_parentID, UserId, PortalId, PortalSettings.AdministratorRoleId, _sortType, _roleIDParameter) as List<File>;
                                break;
                            default:
                                colQuickFiles = objQuickFiles.GetItemsByParent(_parentID, UserId, PortalId, PortalSettings.AdministratorRoleId, _sortType) as List<File>;
                                break;
                        }

                        _colQuickFiles = colQuickFiles;
                    }
                    else
                    {
                        HideAllFileControls();
                        ShowMessage(String.Format("This Files module is not configured correctly.  Go to the <a href=\"{0}\">Module Settings</a> to fix setup.", EditUrl(TabId, "Module", false, "moduleId=" + ModuleId)), ModuleId);
                        return;
                    }
                }
                #endregion

                radLVFiles.DataSource = colQuickFiles;

                if (!Page.IsPostBack)
                {

                    #region Set Theme
                    //get theme
                    string skinName = "Default";
                    if (Settings["Theme"] != null)
                    {
                        //skinManager.Skin = (String)Settings["Theme"];
                        skinName = (String)Settings["Theme"];
                    }
                    radMenuBreadCrumbs.Skin = skinName;
                    radLVFiles.Skin = skinName;
                    radMenuNewItems.Skin = skinName;
                    radExplorerSplitter.Skin = skinName;
                    #endregion

                    // bind the content to the repeater
                    radLVFiles.DataBind();

                    #region Check for query string message and display if module id matches
                    //check for message
                    if (boolModuleIDMatched)
                    {
                        if (Session["SuccessMessage"] != null)
                        {
                            ShowUserSuccessMessage(Session["SuccessMessage"].ToString(), ModuleId);
                            Session["SuccessMessage"] = null;
                        }

                        if (Session["WarningMessage"] != null)
                        {
                            ShowUserErrorMessage(Session["WarningMessage"].ToString(), ModuleId);
                            Session["WarningMessage"] = null;
                        }
                    }
                    #endregion

                    #region Add Delete Confirmation to Delete button
                    //delete confirmation
                    if (_view == "trash")
                    {
                        //lbnDelete.Attributes.Add("onClick", "javascript:return confirm('Are you sure you want to permanently delete the selected item(s)?');");
                        lnkViewTrashOrFiles.Text = "View Files";
                        lnkViewTrashOrFiles.NavigateUrl = Globals.NavigateURL(TabId, "", "View=default", "UserId=" + _userIDParameter);
                        imgTrashOrFiles.ImageUrl = "images/folder_16_hot.png";
                    }
                    else
                    {
                        //lbnDelete.Attributes.Add("onClick", "javascript:return confirm('Are you sure you wish to delete the selected item(s)?');");
                        lnkViewTrashOrFiles.Text = "View Trash";
                        lnkViewTrashOrFiles.NavigateUrl = Globals.NavigateURL(TabId, "", "View=trash", "UserId=" + _userIDParameter);
                        imgTrashOrFiles.ImageUrl = "images/trash_16_hot.png";
                    }
                    #endregion

                    #region Set New Action URLs

                    switch (_strFilesMode)
                    {
                        case "UserFiles":
                            SetNewFileURL(EditUrl("Type", "1", "New", "Parent=" + _parentID.ToString(), "UserID=" + _userIDParameter));
                            SetNewFolderURL(EditUrl("Type", "0", "New", "Parent=" + _parentID.ToString(), "UserID=" + _userIDParameter));
                            SetNewHyperlinkURL(EditUrl("Type", "2", "New", "Parent=" + _parentID.ToString(), "UserID=" + _userIDParameter));

                            break;
                        case "GroupFiles":
                            SetNewFileURL(EditUrl("Type", "1", "New", "Parent=" + _parentID.ToString(), "GroupID=" + _roleIDParameter));
                            SetNewFolderURL(EditUrl("Type", "0", "New", "Parent=" + _parentID.ToString(), "GroupID=" + _roleIDParameter));
                            SetNewHyperlinkURL(EditUrl("Type", "2", "New", "Parent=" + _parentID.ToString(), "GroupID=" + _roleIDParameter));

                            break;
                        case "SharedFiles":
                            SetNewFileURL(EditUrl("Type", "1", "New", "Parent=" + _parentID.ToString()));
                            SetNewFolderURL(EditUrl("Type", "0", "New", "Parent=" + _parentID.ToString()));
                            SetNewHyperlinkURL(EditUrl("Type", "2", "New", "Parent=" + _parentID.ToString()));
                            break;
                    }
                    #endregion

                    File currentFolder = objQuickFiles.Get(_parentID);
                    ApplyPermissions(currentFolder, _view);

                    //onlyl add breadcrumbs and folder detail if view is not trash
                    if (_view == "trash")
                    {
                        return;
                    }

                    #region create breadcrumbs drop-down

                    List<File> reorderedBreadcrumbs = new List<File>();

                    //get module root folder and current folder
                    File topFolder = objQuickFiles.Get(_moduleRootFolderID);

                    List<File> breadcrumbs = objQuickFiles.GetParentBreadcrumbs(_parentID, UserId, PortalId, PortalSettings.AdministratorRoleId, _moduleRootFolderID);
                    int countBreadCrumbs = breadcrumbs.Count;

                    int s = 0;
                    for (int i = countBreadCrumbs - 1; i >= 0; i--)
                    {
                        reorderedBreadcrumbs.Add(breadcrumbs[i]);
                        s++;
                    }

                    if (reorderedBreadcrumbs.Count > 1)
                    {
                        //Add up button
                        RadMenuItem menuUp = new RadMenuItem();
                        menuUp.ImageUrl = "images/folder_up_16_hot.png";
                        menuUp.Value = reorderedBreadcrumbs[reorderedBreadcrumbs.Count - 2].ID.ToString();
                        menuUp.Text = "..";
                        //menuUp.Text = reorderedBreadcrumbs[reorderedBreadcrumbs.Count - 2].Name + " &#8250"; //&#8250 &#9658
                        menuUp.ToolTip = "Go to the parent folder: " + reorderedBreadcrumbs[reorderedBreadcrumbs.Count - 2].Name;
                        switch (_strFilesMode)
                        {
                            case "UserFiles":
                                menuUp.NavigateUrl = Globals.NavigateURL(TabId, "", "Folder=" + menuUp.Value, "ModuleID=" + ModuleId.ToString(), "UserID=" + _userIDParameter);
                                break;
                            case "GroupFiles":
                                menuUp.NavigateUrl = Globals.NavigateURL(TabId, "", "Folder=" + menuUp.Value, "ModuleID=" + ModuleId.ToString(), "GroupID=" + _roleIDParameter);
                                break;
                            default:
                                menuUp.NavigateUrl = Globals.NavigateURL(TabId, "", "Folder=" + menuUp.Value, "ModuleID=" + ModuleId.ToString());
                                break;
                        }

                        //menuUp.PopOutImageUrl = "~/images/arrow-right.png";
                        if (menuUp.Text.Length > 30)
                        {
                            menuUp.Text = menuUp.Text.Substring(0, 29) + "...";
                        }

                        radMenuBreadCrumbs.Items.Add(menuUp);
                    }

                    //Menu version
                    RadMenuItem topLevel = new RadMenuItem(reorderedBreadcrumbs[reorderedBreadcrumbs.Count - 1].Name);
                    topLevel.ImageUrl = "images/folder_16_hot.png";
                    topLevel.Value = "topLevel";

                    if (topLevel.Text.Length > 30)
                    {
                        topLevel.Text = topLevel.Text.Substring(0, 29) + "...";
                    }
                    radMenuBreadCrumbs.Items.Add(topLevel);

                    if (reorderedBreadcrumbs.Count > 1)
                    {
                        int intLevel = 1;
                        foreach (File breadcrumb in reorderedBreadcrumbs)
                        {
                            RadMenuItem nextItem = new RadMenuItem();
                            nextItem.Text = breadcrumb.Name;
                            nextItem.Value = breadcrumb.ID.ToString();
                            nextItem.ImageUrl = String.Format("images/breadcrumb{0}.gif", intLevel);
                            switch (_strFilesMode)
                            {
                                case "UserFiles":
                                    nextItem.NavigateUrl = Globals.NavigateURL(TabId, "", "Folder=" + nextItem.Value, "ModuleID=" + ModuleId.ToString(), "UserID=" + _userIDParameter);
                                    break;
                                case "GroupFiles":
                                    nextItem.NavigateUrl = Globals.NavigateURL(TabId, "", "Folder=" + nextItem.Value, "ModuleID=" + ModuleId.ToString(), "GroupID=" + _roleIDParameter);
                                    break;
                                default:
                                    nextItem.NavigateUrl = Globals.NavigateURL(TabId, "", "Folder=" + nextItem.Value, "ModuleID=" + ModuleId.ToString());
                                    break;
                            }

                            topLevel.Items.Add(nextItem);
                            intLevel++;
                        }
                        //select last child item
                        topLevel.Items[topLevel.Items.Count - 1].Selected = true;
                    }
                    else
                    {
                        topLevel.Enabled = false;
                    }
                    #endregion

                    //ADD folder properties if not root folder
                    if (_parentID != _moduleRootFolderID)
                    {
                        RadMenuItem folderProperties = new RadMenuItem();
                        folderProperties.ImageUrl = "images/info_16_hot.png";
                        switch (_strFilesMode)
                        {
                            case "UserFiles":
                                folderProperties.NavigateUrl = EditUrl("ID", _parentID.ToString(), "Details", "Parent=" + _parentID.ToString(), "UserID=" + _userIDParameter);
                                break;
                            case "GroupFiles":
                                folderProperties.NavigateUrl = EditUrl("ID", _parentID.ToString(), "Details", "Parent=" + _parentID.ToString(), "GroupID=" + _roleIDParameter);
                                break;
                            default:
                                folderProperties.NavigateUrl = EditUrl("ID", _parentID.ToString(), "Details", "Parent=" + _parentID.ToString());
                                break;
                        }

                        folderProperties.ToolTip = "View folder details";
                        folderProperties.Text = "";
                        radMenuBreadCrumbs.Items.Add(folderProperties);

                        //lnkFolderSettings.NavigateUrl = EditUrl("ID", _parentID.ToString(), "Details", "Parent=" + _parentID.ToString());
                    }
                                        #region Open File Action
                    //check for file open action
                    if (this.Request.QueryString["Open"] != null)
                    {
                        _openID = Int32.Parse(this.Request.QueryString["Open"]);

                        if (this.Request.QueryString["Version"] != null)
                        {
                            OpenFile(_openID, Int32.Parse(this.Request.QueryString["Version"]), "Open");
                        }
                        else
                        {
                            OpenFile(_openID, -1, "Open");
                        }
                    }

                    if (this.Request.QueryString["Download"] != null)
                    {
                        _openID = Int32.Parse(this.Request.QueryString["Download"]);

                        if (this.Request.QueryString["Version"] != null)
                        {
                            OpenFile(_openID, Int32.Parse(this.Request.QueryString["Version"]), "Download");
                        }
                        else
                        {
                            OpenFile(_openID, -1, "Download");
                        }
                    }

                    #endregion
                }
            }

            catch (Exception exc)
            {
                //Module failed to load
                Exceptions.ProcessModuleLoadException(this, exc);
            }
        }
        protected void lbnDelete_Click(object sender, EventArgs e)
        {
            if (this.Request.QueryString["File"] != null)
            {
                _FileID = Int32.Parse(this.Request.QueryString["File"]);
            }

            FileConfigurationController ctrlConfig = new FileConfigurationController();
            var configs = ctrlConfig.GetItems(PortalId) as List<FileConfiguration>;
            if (_FileID == configs[0].RootSharedFolderID || _FileID == configs[0].RootGroupsFolderID || _FileID == configs[0].RootUsersFolderID)
            {
                DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "Error: Can not delete a protected folder", DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.RedError);
                lbnDelete.Visible = false;
                lbnOK.Visible = false;
                lbnCancel.Visible = true;
                return;
            }

            FileController fileCtrl = new FileController();
            File file = fileCtrl.Get(_FileID);
            _filesToDelete = new List<File>();

            DeleteChildren(file);

            foreach (File toDelete in _filesToDelete)
            {

                fileCtrl.Delete(toDelete);
            }

            string strMessage;
            if (_permanentlyDeletedFilesCount > 0)
            {
                strMessage = String.Format("Permanently deleted {0} item(s).", _permanentlyDeletedFilesCount);
            }
            else
            {
                strMessage = String.Format("Successfully deleted {0} item(s) and skipped {1} item(s).", _deletedFilesCount, _notDeletedFilesCount);
            }

            DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, strMessage, DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.GreenSuccess);

            lbnDelete.Visible = false;
            lbnOK.Visible = true;
            lbnCancel.Visible = false;
        }
示例#5
0
        private void OpenFile(int fileID, int versionNumber, string strMode)
        {
            FileController ctrl = new FileController();
            File file;
            File requestedFile = ctrl.Get(fileID);

            if (versionNumber == -1)
            {
                if (requestedFile.ItemType == 1) //file, don't need version of link
                {
                    file = ctrl.GetCurrentVersion(fileID);
                }
                else
                {
                    file = requestedFile; //set open to requested file
                }
            }
            else
            {
                file = ctrl.GetVersion(fileID, versionNumber);
            }

            FileConfigurationController configCtrl = new FileConfigurationController();
            List<FileConfiguration> configs = configCtrl.GetItems(PortalId) as List<FileConfiguration>;

            if (file != null)
            {
                if (requestedFile.CanSee(UserId, PortalId, PortalSettings.AdministratorRoleId, true))
                {

                    if (file.ItemType == 2) //hyperlink
                    {
                        #region "Audit"
                        //Audit: Create Item
                        AuditController ctrlAudit = new AuditController();
                        Audit viewAudit = new Audit() { EventDate = System.DateTime.Now, EventDetails = "", EventName = "Opened Link", FileID = requestedFile.ID, UserID = UserId };
                        ctrlAudit.Create(viewAudit);
                        #endregion

                        Response.Redirect(file.LinkURL);
                    }

                    if (file.ItemType == 1) //file
                    {
                        #region "Audit"
                        //Audit: Create Item
                        AuditController ctrlAudit = new AuditController();
                        Audit viewAudit;
                        if (versionNumber == -1)
                        {
                            viewAudit = new Audit() { EventDate = System.DateTime.Now, EventDetails = "", EventName = "Downloaded", FileID = requestedFile.ID, UserID = UserId };
                        }
                        else
                        {
                            viewAudit = new Audit() { EventDate = System.DateTime.Now, EventDetails = "Version: " + file.VersionNumber, EventName = "Downloaded Version", FileID = requestedFile.ID, UserID = UserId };
                        }
                        ctrlAudit.Create(viewAudit);
                        #endregion

                        bool canOpenFileType = false;
                        switch (file.FileType.ToLower())
                        {
                            case "text/plain":
                                canOpenFileType = true;
                                break;
                            case "text/html":
                                canOpenFileType = true;
                                break;
                            case "text/xml":
                                canOpenFileType = true;
                                break;
                            case "image/gif":
                                canOpenFileType = true;
                                break;
                            case "image/jpeg":
                                canOpenFileType = true;
                                break;
                            case "image/tiff":
                                canOpenFileType = true;
                                break;
                            case "image/bmp":
                                canOpenFileType = true;
                                break;
                            case "image/png":
                                canOpenFileType = true;
                                break;
                        }

                        if (strMode == "Open" && canOpenFileType == true)
                        {
                            Response.Clear();
                            Response.ClearHeaders();
                            Response.ClearContent();
                            Response.ContentType = file.FileType;
                            Response.AddHeader("Content-Length", file.FileLength.ToString());
                            //Response.Flush();
                            //Response.AppendHeader("content-disposition", String.Format("inline; filename={0}.{1}", requestedFile.Name, file.Extension));

                            //Set the appropriate ContentType.
                            //Response.ContentType = file.FileType;
                            //Get the physical path to the file.
                            string FilePath = MapPath(configs[0].FilesLocation + file.AttachmentPath);
                            //Write the file directly to the HTTP content output stream.
                            Response.WriteFile(FilePath);
                        }
                        else
                        {
                            Response.Clear();
                            //Response.ClearHeaders();
                            //Response.ClearContent();
                            Response.ContentType = file.FileType;
                            Response.AddHeader("Content-Length", file.FileLength.ToString());
                            //Response.Flush();

                            Response.AddHeader("Content-Disposition", String.Format("attachment; filename={0}.{1}", requestedFile.Name, file.Extension));
                            Response.Flush();
                            Response.TransmitFile(configs[0].FilesLocation + file.AttachmentPath);
                        }

                        //Response.Flush();
                        Response.End();
                    }
                }
                else
                {
                    //Response.Redirect(Globals.NavigateURL("TabId", "", "WarningMessage=You do not have permission to the requested object."));
                    ShowUserErrorMessage("You do not have permission to the requested object.", ModuleId);
                }
            }
            else
            {
                //Response.Redirect(Globals.NavigateURL("TabId", "", "WarningMessage=The requested object does not exist."));
                ShowUserErrorMessage("The requested object does not exist.", ModuleId);

            }
        }
        private void PopulateTree(string strParentID, int searchValue, File targetFile)
        {
            FileController fileCtrl = new FileController();
            File rootFile;
            if (strParentID != "-1")
            {
                rootFile = fileCtrl.Get(Convert.ToInt32(strParentID));
            }
            else
            {
                rootFile = new File();
                rootFile.ID = -1;
                rootFile.Name = "Portal Root Folder";
            }

            List<File> listFiles = fileCtrl.GetItemsByParent(rootFile.ID, UserId, PortalId, PortalSettings.AdministratorRoleId, "Asc") as List<File>;
            System.Web.UI.WebControls.TreeNode rootNode = new System.Web.UI.WebControls.TreeNode(rootFile.Name, rootFile.ID.ToString(), "images/folder_16_hot.png");
            rootNode.Expanded = false;
            treeFolders.Nodes.Add(rootNode);
            populateChildren(rootNode, searchValue, targetFile);
        }
 private void BindVersions(File objFile)
 {
     //load file versions
     FileController objQuickFiles = new FileController();
     listVersions = objQuickFiles.GetVersions(objFile.ID, UserId, PortalId, PortalSettings.AdministratorRoleId, "") as List<File>;
     gridVersions.DataSource = listVersions;
     gridVersions.DataBind();
     lblVersionCount.Text = listVersions.Count.ToString();
 }
        private void ApplyPermissionsToDirectChildren(File file, List<Permission> filePermissions)
        {
            FileController fileCtrl = new FileController();
            PermissionController permCtrl = new PermissionController();
            //List<File> childFiles = fileCtrl.GetItemsByParent(file.ID, UserId, PortalId, PortalSettings.AdministratorRoleId, "");
            List<File> childFiles = fileCtrl.GetItems(file.ID) as List<File>;
            foreach (File childFile in childFiles)
            {
                //check edit permission
                if (childFile.CanEditPermissions(UserId, PortalId, PortalSettings.AdministratorRoleId, false))
                {
                    //delete existing permissions
                    List<Permission> deletePermissions = permCtrl.GetItems(childFile.ID) as List<Permission>;
                    foreach (Permission deletePermission in deletePermissions)
                    {
                        Permission permissionToDelete = permCtrl.Get(deletePermission.ID, childFile.ID);
                        permCtrl.Delete(permissionToDelete);
                    }

                    //add file permissions
                    foreach (Permission filePermission in filePermissions)
                    {
                        Permission newPermission = new Permission();
                        newPermission.ID = filePermission.ID;
                        newPermission.ModuleID = filePermission.ModuleID;
                        newPermission.PortalID = filePermission.PortalID;
                        newPermission.CanSee = filePermission.CanSee;
                        newPermission.CanModify = filePermission.CanModify;
                        newPermission.CanAddFiles = filePermission.CanAddFiles;
                        newPermission.CanAddFolders = filePermission.CanAddFolders;
                        newPermission.CanDelete = filePermission.CanDelete;
                        newPermission.CanModifyPermission = filePermission.CanModifyPermission;
                        newPermission.IsOwner = filePermission.IsOwner;
                        newPermission.RoleID = filePermission.RoleID;
                        newPermission.RoleName = filePermission.RoleName;
                        newPermission.UserID = filePermission.UserID;
                        newPermission.UserName = filePermission.UserName;

                        //assign new permission to child item
                        newPermission.FileID = childFile.ID;
                        permCtrl.Create(newPermission);
                    }

                    //report updated file
                    _updatedPermissionFiles.Add(childFile);
                }
                else
                {
                    //report non-updated file
                    _notUpdatedPermissionFiles.Add(childFile);
                }

                //do child files
                ApplyPermissionsToDirectChildren(childFile, filePermissions);
            }
        }
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// Page_Load runs when the control is loaded
        /// </summary>
        /// <remarks>
        /// </remarks>
        /// <history>
        /// </history>
        /// -----------------------------------------------------------------------------
        protected void Page_Load(System.Object sender, System.EventArgs e)
        {
            try
            {
                //get parameters
                if (this.Request.QueryString["Parent"] != null)
                {
                    _ParentID = Int32.Parse(this.Request.QueryString["Parent"]);
                }
                if (this.Request.QueryString["File"] != null)
                {
                    _FileID = Int32.Parse(this.Request.QueryString["File"]);
                }

                if ((string)Settings["ModuleRootFolderID"] != null)
                {
                    _moduleRootFolderID = (string)Settings["ModuleRootFolderID"];
                }

                //check for userID
                if (this.Request.QueryString["UserID"] != null) //if none, then _userIDParam = -1
                {
                    _userIDParameter = Int32.Parse(this.Request.QueryString["UserID"]);
                }
                //check for groupID
                if (this.Request.QueryString["GroupID"] != null) //if none, then _roleIDParam = -1
                {
                    _roleIDParameter = Int32.Parse(this.Request.QueryString["GroupID"]);
                }

                //help message
                DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "Select the location to move the item. <br/>Folders can not be moved under themselves in the hierarchy and are hidden.", DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.BlueInfo);

                FileController fileCtrl = new FileController();
                File targetFile = fileCtrl.Get(_FileID);

                if (!Page.IsPostBack)
                {
                    if (UserInfo.IsInRole(PortalSettings.AdministratorRoleName))
                    {

                        PopulateTree("-1", _ParentID, targetFile);
                    }
                    else
                    {
                        PopulateTree(_moduleRootFolderID, _ParentID, targetFile);
                    }
                }
            }
            catch (Exception exc) //Module failed to load
            {
                Exceptions.ProcessModuleLoadException(this, exc);
            }
        }
示例#10
0
        public File CreateUserFolder(int userID, int portalID, UserInfo currentUser)
        {
            FileController ctrl = new FileController();
            File rootUserFolder = new File();
            //rootUserFolder.ChildCount = 0;
            rootUserFolder.CreatedByUserID = currentUser.UserID;
            rootUserFolder.CreatedByUserName = currentUser.DisplayName;
            rootUserFolder.CreatedDate = System.DateTime.Now;
            rootUserFolder.IsInTrash = false;
            rootUserFolder.IsFolder = true;
            rootUserFolder.ItemType = 0;
            rootUserFolder.LastModifiedByUserID = currentUser.UserID;
            rootUserFolder.LastModifiedByUserName = currentUser.DisplayName;
            rootUserFolder.LastModifiedDate = System.DateTime.Now;
            UserController ctrlUser = new UserController();
            UserInfo user = ctrlUser.GetUser(portalID, userID);
            rootUserFolder.Name = user.DisplayName;
            rootUserFolder.ParentID = GetRootUsersFolder(portalID, userID).ID;
            rootUserFolder.PortalID = portalID;
            rootUserFolder.HomeFolderUserID = user.UserID;

            ctrl.Create(rootUserFolder);

            //all users read permission
            Permission AllUserspermission = new Permission();
            AllUserspermission.CanAddFiles = false;
            AllUserspermission.CanAddFolders = false;
            AllUserspermission.CanDelete = false;
            AllUserspermission.CanModify = false;
            AllUserspermission.CanModifyPermission = false;
            AllUserspermission.CanSee = true;
            AllUserspermission.FileID = rootUserFolder.ID;
            AllUserspermission.ModuleID = 0;
            AllUserspermission.PortalID = portalID;
            AllUserspermission.RoleID = 1000000;
            AllUserspermission.RoleName = "All Users";

            PermissionController ctrlPerm = new PermissionController();
            ctrlPerm.Create(AllUserspermission);

            //add user add items permission
            Permission userPermission = new Permission();
            userPermission.CanAddFiles = true;
            userPermission.CanAddFolders = true;
            userPermission.CanDelete = false;
            userPermission.CanModify = false;
            userPermission.CanModifyPermission = false;
            userPermission.CanSee = true;
            userPermission.FileID = rootUserFolder.ID;
            userPermission.ModuleID = 0;
            userPermission.PortalID = portalID;
            userPermission.UserID = user.UserID;
            userPermission.UserName = user.Username;

            ctrlPerm.Create(userPermission);

            return rootUserFolder;
        }
示例#11
0
        private int GetModuleRootFolderID(string strFilesMode)
        {
            int rootFolderID = -1;
            FileController ctrlFiles = new FileController();
            File rootFile = null;

            switch (strFilesMode)
            {
                case "SharedFiles":
                    try
                    {
                        if (Settings["ModuleRootFolderID"] != null)
                        {
                            rootFolderID = Convert.ToInt32(Settings["ModuleRootFolderID"].ToString());
                        }
                        else
                        {
                            rootFile = ctrlFiles.GetRootPortalFolder(PortalId, UserId); // GetDefaultPortalFolder(UserId, PortalId);
                        }

                    }
                    catch {}
                    break;
                case "UserFiles":
                    if (this.Request.QueryString["UserID"] != null)
                    {
                        rootFile = GetDefaultUserFolder(Convert.ToInt32(this.Request.QueryString["UserID"].ToString()));
                    }
                    break;
                case "GroupFiles":
                    if (this.Request.QueryString["GroupID"] != null)
                    {
                        rootFile = GetDefaultGroupFolder(Convert.ToInt32(this.Request.QueryString["GroupID"].ToString()));
                    }
                    break;
            }

            if (rootFile != null)
            {
                rootFolderID = rootFile.ID;
            }
            return rootFolderID;
        }
示例#12
0
 private void UpdateModIDFromParent(int parentID, int moduleID)
 {
     FileController ctrlFiles = new FileController();
     foreach (File file in ctrlFiles.GetItems(parentID))
     {
         file.ModuleID = moduleID;
         ctrlFiles.Update(file);
         UpdateModIDFromParent(file.ID, moduleID);
     }
 }
示例#13
0
        public File CreateRootSharedFolder(int userID, int portalID)
        {
            FileController ctrl = new FileController();
            UserController ctrlUser = new UserController();
            UserInfo user = ctrlUser.GetUser(portalID, userID);

            //create root shared folder
            File rootPortalFolder = new File();
            //rootPortalFolder.ChildCount = 0;
            rootPortalFolder.CreatedByUserID = userID;
            rootPortalFolder.CreatedByUserName = user.DisplayName;
            rootPortalFolder.CreatedDate = System.DateTime.Now;
            rootPortalFolder.IsInTrash = false;
            rootPortalFolder.IsFolder = true;
            rootPortalFolder.ItemType = 0;
            rootPortalFolder.LastModifiedByUserID = userID;
            rootPortalFolder.LastModifiedByUserName = user.DisplayName;
            rootPortalFolder.LastModifiedDate = System.DateTime.Now;
            rootPortalFolder.Name = "Site Root Folder";
            rootPortalFolder.Description = "";
            rootPortalFolder.ParentID = -1;
            rootPortalFolder.PortalID = portalID;

            ctrl.Create(rootPortalFolder);

            //add default permission
            PermissionController ctrlPerm = new PermissionController();
            Permission perm = new Permission();
            perm.CanAddFiles = true;
            perm.CanAddFolders = true;
            perm.CanSee = true;
            perm.FileID = rootPortalFolder.ID;
            perm.PortalID = portalID;
            perm.RoleID = 1000000;
            perm.RoleName = "All Users";

            ctrlPerm.Create(perm);

            //update files config
            FileConfigurationController ctrlConfig = new FileConfigurationController();
            var configs = ctrlConfig.GetItems(portalID) as List<FileConfiguration>;
            configs[0].RootUsersFolderID = rootPortalFolder.ID;
            ctrlConfig.Update(configs[0]);

            return rootPortalFolder;
        }
示例#14
0
        private void PopulateTree(int searchValue)
        {
            FileController fileCtrl = new FileController();
            FileConfigurationController ctrlConfig = new FileConfigurationController();
            var configs = ctrlConfig.GetItems(PortalId) as List<FileConfiguration>;
            if (configs.Count > 0)
            {
                //check for root shared folder
                var rootFolder = fileCtrl.GetRootPortalFolder(PortalId, UserId);

                //if none exists, create
                if (rootFolder == null)
                {
                    rootFolder = fileCtrl.CreateRootSharedFolder(UserId, PortalId);
                }
                configs[0].RootSharedFolderID = rootFolder.ID;

                //check root users folder
                if (configs[0].RootUsersFolderID == 0)
                {
                    //if none exists, create
                    configs[0].RootUsersFolderID = fileCtrl.CreateRootUsersFolder(UserId, PortalId).ID;
                }

                //check root groups folder
                if (configs[0].RootGroupsFolderID == 0)
                {
                    //if none exists, create
                    configs[0].RootGroupsFolderID = fileCtrl.CreateRootGroupsFolder(UserId, PortalId).ID;
                }

                //update config
                ctrlConfig.Update(configs[0]);
            }

            File rootFile = new File();
            rootFile.ID = -1;
            rootFile.Name = "QuickDocsPro";

            List<File> listFiles = fileCtrl.GetItemsByParent(rootFile.ID, UserId, PortalId, PortalSettings.AdministratorRoleId, "Asc") as List<File>;
            System.Web.UI.WebControls.TreeNode rootNode = new System.Web.UI.WebControls.TreeNode(rootFile.Name, rootFile.ID.ToString(), "images/window_16_hot.png");
            rootNode.Expanded = false;

            treeFolders.Nodes.Add(rootNode);
            populateChildren(rootNode, searchValue, configs[0]);

            if (rootNode.Value == searchValue.ToString())
            {
                rootNode.Selected = true;
            }
        }
示例#15
0
        private void populateChildren(System.Web.UI.WebControls.TreeNode parentNode, int searchValue, FileConfiguration config)
        {
            if (parentNode == null)
                return;

            //get folders
            FileController fileCtrl = new FileController();
            List<File> listFiles = fileCtrl.GetItemsByParent(Convert.ToInt32(parentNode.Value), UserId, PortalId, PortalSettings.AdministratorRoleId, "Asc") as List<File>;

            foreach (File file in listFiles)
            {
                //Skip getting child items if:
                //item is not folder || item is a folder and matches target item || item can't be modified
                if (file.ItemType != 0 || !file.CanModify(UserId, PortalId, PortalSettings.AdministratorRoleId, true))
                {
                    continue;
                }

                System.Web.UI.WebControls.TreeNode fileChild;

                //check for protected folders
                if (file.ID == config.RootUsersFolderID || file.ID == config.RootGroupsFolderID || file.ID == config.RootSharedFolderID)
                {
                    file.Name = file.Name + " (protected)";
                    fileChild = new System.Web.UI.WebControls.TreeNode(file.Name, file.ID.ToString(), "images/lock_16_hot.png");
                }
                else
                {
                    fileChild = new System.Web.UI.WebControls.TreeNode(file.Name, file.ID.ToString(), "images/folder_16_hot.png");
                }

                if (parentNode != null)
                {
                    //fileChild.PopulateOnDemand = true;
                    fileChild.Expanded = false;
                    parentNode.ChildNodes.Add(fileChild);
                    populateChildren(fileChild, searchValue, config);

                    if (fileChild.Value == searchValue.ToString())
                    {
                        fileChild.Selected = true;
                        ExpandParentNode(fileChild);
                    }
                }
            }
        }
示例#16
0
        public override void UpdateSettings()
        {
            try
            {
                ModuleController objModules = new ModuleController();

                switch (cmbFilesMode.SelectedValue.ToString())
                {
                    case "UserFiles":
                        objModules.UpdateTabModuleSetting(TabModuleId, "ModuleRootFolderID", "-1");
                        break;
                    case "GroupFiles":
                        objModules.UpdateTabModuleSetting(TabModuleId, "ModuleRootFolderID", "-1");
                        break;
                    default:
                        //can't select root folder or no folder: show error
                        if (treeFolders.SelectedNode == null || treeFolders.SelectedValue == "-1")
                        {
                            FileController ctrlFiles = new FileController();
                            File rootSiteFolder = ctrlFiles.GetRootPortalFolder(UserId, PortalId); //.GetDefaultPortalFolder(UserId, PortalId);
                            objModules.UpdateTabModuleSetting(TabModuleId, "ModuleRootFolderID", rootSiteFolder.ID.ToString());
                        }
                        else
                        {
                            objModules.UpdateTabModuleSetting(TabModuleId, "ModuleRootFolderID", treeFolders.SelectedValue);
                        }
                        break;
                }
                objModules.UpdateTabModuleSetting(TabModuleId, "FilesMode", cmbFilesMode.SelectedValue);
                objModules.UpdateTabModuleSetting(TabModuleId, "Theme", cmbTheme.SelectedValue);
                objModules.UpdateTabModuleSetting(TabModuleId, "ShowAuditHistory", chkShowAuditHistory.Checked.ToString());

            }

            catch (Exception exc)
            {
                //Module failed to load
                Exceptions.ProcessModuleLoadException(this, exc);
            }
        }
示例#17
0
        private File GetDefaultGroupFolder(int roleID)
        {
            if (roleID == -1)
                return null;

            FileController ctrl = new FileController();
            File rootGroupFolder = ctrl.GetGroupFolder(roleID, PortalId, UserInfo);
            return rootGroupFolder;
        }
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// Page_Load runs when the control is loaded
        /// </summary>
        /// <remarks>
        /// </remarks>
        /// <history>
        /// </history>
        /// -----------------------------------------------------------------------------
        protected void Page_Load(System.Object sender, System.EventArgs e)
        {
            try
            {

                //get parameters
                if (this.Request.QueryString["Parent"] != null)
                {
                    _ParentID = Int32.Parse(this.Request.QueryString["Parent"]);
                }
                if (this.Request.QueryString["File"] != null)
                {
                    _FileID = Int32.Parse(this.Request.QueryString["File"]);
                }
                //check for userID
                if (this.Request.QueryString["UserID"] != null) //if none, then _userIDParam = -1
                {
                    _userIDParameter = Int32.Parse(this.Request.QueryString["UserID"]);
                }
                //check for groupID
                if (this.Request.QueryString["GroupID"] != null) //if none, then _roleIDParam = -1
                {
                    _roleIDParameter = Int32.Parse(this.Request.QueryString["GroupID"]);
                }

                //if ((string)Settings["ModuleRootFolderID"] != null)
                //{
                //    _moduleRootFolderID = (string)Settings["ModuleRootFolderID"];

                //}

                //help message
                //DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "Select the location to move the item. <br/>Folders can not be moved under themselves in the hierarchy and are hidden.", DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.BlueInfo);

                FileController fileCtrl = new FileController();
                File sourceFile = fileCtrl.Get(_FileID);

                if (!Page.IsPostBack)
                {
                    FileController ctrlFile = new FileController();
                    var imageFile = ctrlFile.Get(_FileID, _ParentID);
                    if (!imageFile.CanSee(UserId, PortalId, PortalSettings.AdministratorRoleId, false))
                    {
                        Response.Redirect(Globals.NavigateURL());
                        return;
                    }

                    string imageURL = Globals.NavigateURL(TabId, "", "Folder=" + _ParentID.ToString(), "Open=" + _FileID.ToString(), "UserId=" + _userIDParameter);
                    radImageEditor.ImageUrl = imageURL;
                    radImageEditor.CanvasMode = Telerik.Web.UI.ImageEditor.CanvasMode.Yes;

                }
            }
            catch (Exception exc) //Module failed to load
            {
                Exceptions.ProcessModuleLoadException(this, exc);
            }
        }
示例#19
0
        private File GetDefaultUserFolder(int userID)
        {
            if (userID == -1)
                return null;

            FileController ctrl = new FileController();
            File rootUserFolder = ctrl.GetUserFolder(userID, PortalId, UserInfo);// GetRootUserFolder(userID);
            return rootUserFolder;
        }
示例#20
0
        protected void lbnDeleteVersions_Click(object sender, EventArgs e)
        {
            FileController fileCtrl = new FileController();
            foreach (GridViewRow row in gridVersions.Rows)
            {
                CheckBox chkSelect = (CheckBox)row.FindControl("chkSelect");
                if (chkSelect.Checked == false)
                    continue;
                File file = fileCtrl.Get(Int32.Parse(row.Cells[0].Text));

                if (file != null)
                {
                    //check if at least one version exists
                    FileController ctrl = new FileController();
                    List<File> parentFileVersions = ctrl.GetVersions(file.ParentID, UserId, PortalId, PortalSettings.AdministratorRoleId, "");

                    if (parentFileVersions.Count > 1)
                    {
                        //2 or more versions exist, delete version
                        FileConfigurationController configCtrl = new FileConfigurationController();
                        List<FileConfiguration> configs = configCtrl.GetItems(PortalId) as List<FileConfiguration>;
                        fileCtrl.DeleteVersion(file, configs[0].FilesLocation);
                    }
                    else
                    {
                        //1 or fewer versions exist, do not delete and show error message
                        ShowUserErrorMessage("Can't delete last version.  At least one version of the file must exist.");
                    }
                }
            }

            BindVersions(fileCtrl.Get(Int32.Parse(this.Request.QueryString["ID"])));
        }
示例#21
0
 public int ChildCount()
 {
     FileController ctrlFile = new FileController();
         return ctrlFile.GetDirectChildItems(ID).Count();
 }
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// Page_Load runs when the control is loaded
        /// </summary>
        /// <remarks>
        /// </remarks>
        /// <history>
        /// </history>
        /// -----------------------------------------------------------------------------
        protected void Page_Load(System.Object sender, System.EventArgs e)
        {
            try
            {
                //get parameters
                if (this.Request.QueryString["File"] != null)
                {
                    FileID = Int32.Parse(this.Request.QueryString["File"]);
                }
                if (this.Request.QueryString["Parent"] != null)
                {
                    ParentID = Int32.Parse(this.Request.QueryString["Parent"]);
                }
                //check for userID
                if (this.Request.QueryString["UserID"] != null) //if none, then _userIDParam = -1
                {
                    _userIDParameter = Int32.Parse(this.Request.QueryString["UserID"]);
                }
                //check for groupID
                if (this.Request.QueryString["GroupID"] != null) //if none, then _roleIDParam = -1
                {
                    _roleIDParameter = Int32.Parse(this.Request.QueryString["GroupID"]);
                }

                if (FileID == Null.NullInteger)
                {
                    Response.Redirect(Globals.NavigateURL());
                }

                //get file name
                FileController objFiles = new FileController();
                File objFile = objFiles.Get(FileID);

                lblName.Text = objFile.Name;

                //async uploader
                string strAllowedFiles = DotNetNuke.Entities.Controllers.HostController.Instance.GetString("FileExtensions");
                string[] strSearchPatterns = strAllowedFiles.Split(',');
                asyncFileUpload.AllowedFileExtensions = strSearchPatterns;
                asyncFileUpload.EnableInlineProgress = true;
                asyncFileUpload.MaxFileInputsCount = 1;

                //TODO check if user has permission to add versions
            }
            catch (Exception exc) //Module failed to load
            {
                Exceptions.ProcessModuleLoadException(this, exc);
            }
        }
        public override IList<DotNetNuke.Services.Search.Entities.SearchDocument> GetModifiedSearchDocuments(ModuleInfo moduleInfo, DateTime beginDate)
        {
            //create search item collection
            var searchItemColl = new List<SearchDocument>();// SearchItemInfoCollection();

            //get list of items by moduleID
            FileController ctrlFiles = new FileController();
            foreach (File file in ctrlFiles.GetSearchableItems(beginDate))
            {
                //SearchItemInfo sii = new SearchItemInfo();
                SearchDocument sii = new SearchDocument();

                string strContent;
                string strGUID;
                string strDescription;
                switch (file.ItemType)
                {
                    case 1: //file
                        strContent = String.Format("{0} {1} {2} {3} {4}", file.Name, file.Description, file.CreatedByUserName, file.LastModifiedByUserName, file.FileType);
                        strGUID = "Open=" + file.ID.ToString();

                        var parentFile = ctrlFiles.Get(file.ParentID);
                        int parentID = parentFile.ID;
                        if (parentFile.ItemType != 0)
                        {
                            parentID = parentFile.ParentID;
                        }
                        strDescription = file.Description;// String.Format("<a href=\"{0}\">[Open Containing Folder]</a> {1}", Globals.NavigateURL(moduleInfo.TabID, "", "Folder=" + parentID.ToString()), file.Description);

                        break;
                    case 2: //hyperlink
                        strContent = String.Format("{0} {1} {2} {3} {4}", file.Name, file.Description, file.CreatedByUserName, file.LastModifiedByUserName, file.FileType);
                        strGUID = "Open=" + file.ID.ToString();
                        strDescription = file.Description;// String.Format("<a href=\"{0}\">[Open Containing Folder]</a> {1}", Globals.NavigateURL(moduleInfo.TabID, "", "Folder=" + file.ParentID.ToString()), file.Description);

                        break;

                    default: //folder
                        strContent = String.Format("{0} {1} {2} {3} {4}", file.Name, file.Description, file.CreatedByUserName, file.LastModifiedByUserName, file.FileType);
                        strGUID = "Folder=" + file.ID.ToString();
                        strDescription = file.Description;

                        break;
                }

                //get see permissions
                PermissionController ctrlPerm = new PermissionController();
                var perms = ctrlPerm.GetItems(file.ID);
                string strPerms = "";
                foreach (Permission perm in perms)
                {
                    if (perm.CanSee)
                    {
                        if (perm.UserID != 0)
                        {
                            //user perm
                            strPerms += String.Format("[{0}];", perm.UserID);
                        }
                        else
                        {
                            //role perm
                            if (perm.RoleName == "All Users")
                            {
                                strPerms = "";
                                break;
                            }
                            strPerms += perm.RoleName;
                        }
                    }
                }
                if (strPerms.Length > 0)
                {
                    strPerms = strPerms.Substring(0, strPerms.Length - 1);
                }

                sii.AuthorUserId = file.LastModifiedByUserID;
                sii.ModuleId = file.ModuleID;
                sii.Body = strContent;
                //sii.CultureCode = "";
                sii.Description = strDescription;
                sii.IsActive = true;
                //sii.Keywords = strContent;
                sii.ModifiedTimeUtc = file.LastModifiedDate;
                sii.ModuleDefId = moduleInfo.ModuleDefID;
                sii.ModuleId = file.ModuleID;
                //sii.NumericKeys = "";
                sii.Permissions = strPerms;
                sii.PortalId = file.PortalID;
                sii.QueryString = strGUID;
                //sii.RoleId = -1;
                //sii.SearchTypeId = -1;
                sii.TabId = moduleInfo.TabID;
                //sii.Tags = "";
                sii.Title = file.Name;
                sii.UniqueKey = file.ID.ToString();
                //sii.Url = "";

                /*
                sii.PubDate = file.CreatedDate;
                sii.Description = strDescription;
                sii.SearchItemId = file.ID;
                sii.Content = strContent;
                sii.SearchKey = file.ID.ToString();
                sii.GUID = strGUID;
                sii.TabId = ModInfo.TabID;
                sii.Title = file.Name;
                */
                searchItemColl.Add(sii);
            }

            return searchItemColl;
        }
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// Page_Load runs when the control is loaded
        /// </summary>
        /// <remarks>
        /// </remarks>
        /// <history>
        /// </history>
        /// -----------------------------------------------------------------------------
        protected void Page_Load(System.Object sender, System.EventArgs e)
        {
            try
            {
                //get parameters
                if (this.Request.QueryString["Parent"] != null)
                {
                    _ParentID = Int32.Parse(this.Request.QueryString["Parent"]);
                }
                if (this.Request.QueryString["File"] != null)
                {
                    _FileID = Int32.Parse(this.Request.QueryString["File"]);
                }
                //check for userID
                if (this.Request.QueryString["UserID"] != null) //if none, then _userIDParam = -1
                {
                    _userIDParameter = Int32.Parse(this.Request.QueryString["UserID"]);
                }
                //check for groupID
                if (this.Request.QueryString["GroupID"] != null) //if none, then _roleIDParam = -1
                {
                    _roleIDParameter = Int32.Parse(this.Request.QueryString["GroupID"]);
                }

                if (!Page.IsPostBack)
                {
                    //get item
                    FileController fileCtrl = new FileController();
                    File targetFile = fileCtrl.Get(_FileID);

                    //check if user has delete permission
                    if (!targetFile.CanDelete(UserId, PortalId, PortalSettings.AdministratorRoleId, true))
                    {
                        this.Response.Redirect(Globals.NavigateURL(this.TabId, "", "Folder=" + _ParentID, "ModuleID=" + ModuleId, "Error=You do not have sufficient permissions to delete this item."), true);
                    }

                    //build delete message
                    string strDeleteMessage = "Are you sure? Click the Delete button to remove the '" + targetFile.Name;
                    if (targetFile.ItemType == 0) //is folder
                    {
                        strDeleteMessage = strDeleteMessage + "' folder and all child items?";
                    }
                    else if (targetFile.ItemType == 1) //file
                    {
                        strDeleteMessage = strDeleteMessage + "' file?";
                    }
                    else if (targetFile.ItemType == 2) //link
                    {
                        strDeleteMessage = strDeleteMessage + "' hyperlink?";
                    }

                    //help message
                    DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, strDeleteMessage, DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.YellowWarning);
                }
            }
            catch (Exception exc) //Module failed to load
            {
                Exceptions.ProcessModuleLoadException(this, exc);
            }
        }
        private void populateChildren(System.Web.UI.WebControls.TreeNode parentNode, int searchValue, File targetFile)
        {
            if (parentNode == null)
                return;

            //if (this.Request.QueryString["File"] != null)
            //{
            //    _FileID = Int32.Parse(this.Request.QueryString["File"]);
            //}

            //get folders
            FileController fileCtrl = new FileController();
            List<File> listFiles = fileCtrl.GetItemsByParent(Convert.ToInt32(parentNode.Value), UserId, PortalId, PortalSettings.AdministratorRoleId, "Asc") as List<File>;

            foreach (File file in listFiles)
            {
                //Skip getting child items if:
                //item is not folder || item is a folder and matches target item || item can't be modified
                //if (file.ItemType != 0 || file.ID == _FileID|| !file.CanModify(UserId, PortalId, PortalSettings.AdministratorRoleId))
                if (file.ItemType != 0 || !file.CanModify(UserId, PortalId, PortalSettings.AdministratorRoleId, true))
                {
                    continue;
                }
                System.Web.UI.WebControls.TreeNode fileChild = new System.Web.UI.WebControls.TreeNode(file.Name, file.ID.ToString(), "images/folder_16_hot.png");
                if (parentNode != null)
                {
                    //fileChild.PopulateOnDemand = true;
                    fileChild.Expanded = false;
                    //don't get child folder for target
                    if (targetFile.ID != file.ID)
                    {
                        parentNode.ChildNodes.Add(fileChild);
                        populateChildren(fileChild, searchValue, targetFile);
                    }

                    if (fileChild.Value == searchValue.ToString())
                    {
                        fileChild.Selected = true;
                        ExpandParentNode(fileChild);
                    }

                }
            }
        }
        private void DeleteChildren(File file)
        {
            //delete ALL children items where user has delete permission

            FileController fileCtrl = new FileController();
            List<File> files = fileCtrl.GetItems(file.ID) as List<File>;
            foreach (File childFile in files)
            {
                if (file.ItemType == 0)
                {
                    DeleteChildren(childFile);
                }
            }
                //send to trash if not folder
                if (file.ItemType != 0 && file.CanDelete(UserId, PortalId, PortalSettings.AdministratorRoleId, false))
                {
                    //send to trash if not there already
                    if (!file.IsInTrash)
                    {
                        file.IsInTrash = true;
                        fileCtrl.Update(file);
                        #region "Audit"
                        //Audit: Create Item
                        AuditController ctrlAudit = new AuditController();
                        Audit deleteAudit = new Audit() { EventDate = file.LastModifiedDate, EventDetails = "", EventName = "Deleted", FileID = file.ID, UserID = UserId };
                        ctrlAudit.Create(deleteAudit);
                        #endregion
                        _deletedFilesCount++;
                        return;
                    }

                    //if file is in trash, delete permissions and file
                    if (file.IsInTrash)
                    {
                        PermissionController permCtrl = new PermissionController();

                        //delete versions and version permissions
                        List<File> versions = fileCtrl.GetItems(file.ID) as List<File>;
                        foreach (File version in versions)
                        {
                            List<Permission> versionPermissions = permCtrl.GetItems(version.ID) as List<Permission>;
                            for (int i = 0; versionPermissions.Count - 1 > i; i++)
                            {
                                permCtrl.Delete(versionPermissions[i]);
                            }
                            fileCtrl.Delete(version);
                        }

                        //delete file permissions
                        List<Permission> folderPermissions = permCtrl.GetItems(file.ID) as List<Permission>;
                        for (int i = 0; folderPermissions.Count - 1 >= i; i++)
                        {
                            permCtrl.Delete(folderPermissions[i]);
                        }

                        //delete file instead of sending to trash
                        _filesToDelete.Add(file);
                        //fileCtrl.Delete(file);

                        _permanentlyDeletedFilesCount++;
                        return;
                    }
                }

                //check if any items exist under folder and delete permission before deleting
                if (file.ItemType == 0 && file.CanDelete(UserId, PortalId, PortalSettings.AdministratorRoleId, false))
                {
                    //get current child count
                    List<File> childFiles = fileCtrl.GetItems(file.ID) as List<File>;
                    int childFilesCount = 0;

                    //count child items not in trash
                    foreach (File childFileCount in childFiles)
                    {
                        if (!childFileCount.IsInTrash)
                        {
                            childFilesCount++;
                        }
                    }

                    //no child items, permanently delete folder
                    if (childFilesCount == 0)
                    {
                        //delete folder permissions
                        PermissionController permCtrl = new PermissionController();
                        List<Permission> folderPermissions = permCtrl.GetItems(file.ID) as List<Permission>;
                        for (int i = 0; folderPermissions.Count - 1 >=  i; i++)
                        {
                            permCtrl.Delete(folderPermissions[i]);
                        }

                        //delete folder instead of sending to trash
                        _filesToDelete.Add(file);
                        //fileCtrl.Delete(file);

                        _deletedFilesCount++;
                        return;
                    }
                    else
                    {
                        _notDeletedFilesCount++;
                        return;
                    }
                }
                _notDeletedFilesCount++;
        }
        protected void lbnOK_Click(object sender, EventArgs e)
        {
            try
            {
                int intSelectedNodeValue = Convert.ToInt32(treeFolders.SelectedNode.Value);
                //get parameters
                if (this.Request.QueryString["Parent"] != null)
                {
                    _ParentID = Int32.Parse(this.Request.QueryString["Parent"]);
                }
                if (this.Request.QueryString["File"] != null)
                {
                    _FileID = Int32.Parse(this.Request.QueryString["File"]);
                }

                FileController fileCtrl = new FileController();
                File targetFile = fileCtrl.Get(_FileID);
                File destinationFolder = fileCtrl.Get(intSelectedNodeValue);
                if (destinationFolder == null)
                {
                    destinationFolder = new File();
                    destinationFolder.ID = -1;
                    destinationFolder.Name = "Portal Root Folder";
                }

                targetFile.ParentID = intSelectedNodeValue;
                targetFile.IsInTrash = false;
                if (UserId != -1)
                {
                    targetFile.LastModifiedByUserName = UserInfo.DisplayName;
                }
                else
                {
                    targetFile.LastModifiedByUserName = "******";
                }
                targetFile.LastModifiedByUserID = -1;
                targetFile.LastModifiedDate = System.DateTime.Now;
                fileCtrl.Update(targetFile);

                //refresh cac
                SynchronizeModule();

                //Redirect back to the portal home page
                this.Response.Redirect(Globals.NavigateURL(this.TabId, "", "Folder=" + _ParentID, "ModuleID=" + ModuleId, "UserID=" + _userIDParameter, "GroupID=" + _roleIDParameter, String.Format("Success={0} moved to: {1}", targetFile.Name, destinationFolder.Name)), true);
            }
            catch (Exception exc) //Module failed to load
            {
                Exceptions.ProcessModuleLoadException(this, exc);
            }
        }
        protected void lbnOK_Click(object sender, EventArgs e)
        {
            try
            {
                //check for trash view
                if (this.Request.QueryString["View"] != null)
                {
                    _view = this.Request.QueryString["View"];
                }

                //can not select portal root or no selection
                if (treeFolders.SelectedNode == null || Convert.ToInt32(treeFolders.SelectedNode.Value) == -1)
                {
                    DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "Error: The item can not be moved to the selected location.  Select a different folder.", DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.RedError);
                    return;
                }
                int intSelectedNodeValue = Convert.ToInt32(treeFolders.SelectedNode.Value);

                //get parameters
                if (this.Request.QueryString["Parent"] != null)
                {
                    _ParentID = Int32.Parse(this.Request.QueryString["Parent"]);
                }
                if (this.Request.QueryString["File"] != null)
                {
                    _FileID = Int32.Parse(this.Request.QueryString["File"]);
                }

                FileController fileCtrl = new FileController();
                File targetFile = fileCtrl.Get(_FileID);
                File destinationFolder = fileCtrl.Get(intSelectedNodeValue);
                if (destinationFolder == null)
                {
                    destinationFolder = new File();
                    destinationFolder.ID = -1;
                    destinationFolder.Name = "Portal Root Folder";
                }

                var orginalLocation = fileCtrl.Get(targetFile.ParentID);

                targetFile.ParentID = intSelectedNodeValue;
                string strEventType = "Moved";
                if (targetFile.IsInTrash)
                {
                    strEventType = "Restored";
                }
                targetFile.IsInTrash = false;
                if (UserId != -1)
                {
                    targetFile.LastModifiedByUserName = UserInfo.DisplayName;
                }
                else
                {
                    targetFile.LastModifiedByUserName = "******";
                }
                targetFile.LastModifiedByUserID = -1;
                targetFile.LastModifiedDate = System.DateTime.Now;
                fileCtrl.Update(targetFile);

                #region "Audit"
                //Audit: Create Item
                AuditController ctrlAudit = new AuditController();
                Audit moveAudit;
                if (strEventType == "Moved")
                {
                    moveAudit = new Audit() { EventDate = targetFile.LastModifiedDate, EventDetails = String.Format("From: {0}(ID:{1}) to: {2}(ID:{3})", orginalLocation.Name, orginalLocation.ID.ToString(), destinationFolder.Name, destinationFolder.ID.ToString()), EventName = strEventType, FileID = targetFile.ID, UserID = UserId };
                }
                else
                {
                    moveAudit = new Audit() { EventDate = targetFile.LastModifiedDate, EventDetails = String.Format("To: {0}(ID:{1})", destinationFolder.Name, destinationFolder.ID.ToString()), EventName = strEventType, FileID = targetFile.ID, UserID = UserId };
                }
                ctrlAudit.Create(moveAudit);
                #endregion

                //refresh cac
                SynchronizeModule();

                //Redirect back to the portal home page
                this.Response.Redirect(Globals.NavigateURL(this.TabId, "", "Folder=" + _ParentID, "ModuleID=" + ModuleId, "UserID=" + _userIDParameter, "GroupID=" + _roleIDParameter, String.Format("Success={0} moved to: {1}", targetFile.Name, destinationFolder.Name), "View=" + _view), true);
            }
            catch (Exception exc) //Module failed to load
            {
                Exceptions.ProcessModuleLoadException(this, exc);
            }
        }