示例#1
0
    private void gridElem_OnAction(string actionName, object actionArgument)
    {
        switch (actionName.ToLowerCSafe())
        {
        case "edit":
            SelectedItemID = ValidationHelper.GetInteger(actionArgument, 0);
            RaiseOnEdit();
            break;

        case "delete":
            MediaLibraryInfo mli = MediaLibraryInfoProvider.GetMediaLibraryInfo(ValidationHelper.GetInteger(actionArgument, 0));
            // Check 'Manage' permission
            if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(mli, PERMISSION_MANAGE))
            {
                ShowError(MediaLibraryHelper.GetAccessDeniedMessage(PERMISSION_MANAGE));
                return;
            }
            try
            {
                MediaLibraryInfoProvider.DeleteMediaLibraryInfo(ValidationHelper.GetInteger(actionArgument, 0));
            }
            catch (Exception ex)
            {
                EventLogProvider.LogException("Media library", "DELETEOBJ", ex, SiteContext.CurrentSiteID);

                ShowError(ex.Message, EventLogProvider.GetExceptionLogMessage(ex), null);
            }
            break;
        }

        RaiseOnAction(actionName, actionArgument);
    }
    /// <summary>
    /// Initializes controls
    /// </summary>
    private void InitializeControl()
    {
        RaiseOnCheckPermissions(PERMISSION_READ, this);

        if (!CheckPermissions())
        {
            ShowError(MediaLibraryHelper.GetAccessDeniedMessage("Manage"));
            return;
        }

        if (MediaLibraryGroupID > 0)
        {
            editElem.ObjectType = MediaLibraryInfo.OBJECT_TYPE_GROUP;
        }

        // Hide code name edit for simple mode
        if (DisplayMode == ControlDisplayModeEnum.Simple)
        {
            editElem.FieldsToHide.Add("LibraryName");
        }

        if (!Enable)
        {
            editElem.Enabled = false;
        }
    }
 /// <summary>
 /// Handle all the necessary actions performed while file info is imported into the DB.
 /// </summary>
 /// <param name="importAll">Indicates whether the all files should be imported at once</param>
 private void HandleFileImport(bool importAll)
 {
     // Check 'File create' permission
     if (MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(LibraryInfo, "filecreate"))
     {
         // Get set of file paths
         if (!string.IsNullOrEmpty(ImportFilePaths))
         {
             // Import single file
             if (importAll)
             {
                 // Import all files
                 HandleMultipleMediaFiles();
             }
             else
             {
                 HandleSingleMediaFile();
             }
         }
         else
         {
             // Inform user on error
             RaiseOnAction("importnofiles", null);
         }
     }
     else
     {
         RaiseOnAction("importerror", MediaLibraryHelper.GetAccessDeniedMessage("filecreate"));
     }
 }
示例#4
0
    /// <summary>
    /// UniGrid action buttons event handler.
    /// </summary>
    protected void GridOnAction(string actionName, object actionArgument)
    {
        // Process proper action
        switch (actionName.ToLower())
        {
        case "delete":
            if (this.IsMediaThumbnail)
            {
                // Delete thumbnail file
                if (this.LibraryInfo != null)
                {
                    // Check 'File delete' permission
                    if (MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(this.LibraryInfo, "filemodify"))
                    {
                        MediaFileInfoProvider.DeleteMediaFilePreview(CMSContext.CurrentSiteName, this.LibraryID, this.FileInfo.FilePath, false);

                        if (this.FileInfo != null)
                        {
                            SiteInfo si = SiteInfoProvider.GetSiteInfo(FileInfo.FileSiteID);
                            if (si != null)
                            {
                                // Log synchronization task
                                SynchronizationHelper.LogObjectChange(FileInfo, TaskTypeEnum.UpdateObject);
                            }

                            // Drop the cache dependencies
                            CacheHelper.TouchKeys(MediaFileInfoProvider.GetDependencyCacheKeys(this.FileInfo, true));
                        }
                    }
                    else
                    {
                        lblError.Text = MediaLibraryHelper.GetAccessDeniedMessage("filemodify");
                    }
                }

                // Ensure recent action is forgotten
                this.gridAttachments.ClearActions();
            }
            else
            {
                if (this.LibraryInfo != null)
                {
                    // Check 'File delete' permission
                    if (MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(this.LibraryInfo, "filedelete"))
                    {
                        // Delete Media File
                        if (this.FileInfo != null)
                        {
                            MediaFileInfoProvider.DeleteMediaFileInfo(this.FileInfo);
                        }
                    }
                }
            }

            // Force reload data
            ReloadData();
            break;
        }
    }
    /// <summary>
    /// Edit file event handler.
    /// </summary>
    protected void btnRefresh_Click(object sender, EventArgs e)
    {
        // Check 'File modify' permission
        if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(LibraryInfo, "filemodify"))
        {
            ShowError(MediaLibraryHelper.GetAccessDeniedMessage("filemodify"));

            SetupFile();
            return;
        }

        FileInfo fi = CMS.IO.FileInfo.New(MediaFileInfoProvider.GetMediaFilePath(CMSContext.CurrentSiteName, LibraryInfo.LibraryFolder, FilePath));

        if ((fi != null) && (LibraryInfo != null))
        {
            if (FileInfo != null)
            {
                FileInfo.FileModifiedWhen = DateTime.Now;
                // Set media file info
                FileInfo.FileSize = fi.Length;
                if (ImageHelper.IsImage(FileInfo.FileExtension))
                {
                    ImageHelper ih = new ImageHelper();
                    ih.LoadImage(File.ReadAllBytes(fi.FullName));
                    FileInfo.FileImageWidth  = ih.ImageWidth;
                    FileInfo.FileImageHeight = ih.ImageHeight;
                }
                FileInfo.FileTitle       = txtEditTitle.Text.Trim();
                FileInfo.FileDescription = txtEditDescription.Text.Trim();

                // Save
                MediaFileInfoProvider.SetMediaFileInfo(FileInfo);

                // Remove old thumbnails
                MediaFileInfoProvider.DeleteMediaFileThumbnails(FileInfo);

                // Inform user on success
                ShowConfirmation(GetString("media.refresh.success"));

                SetupTexts();

                SetupFile();
                pnlUpdateGeneral.Update();

                SetupPreview();
                pnlUpdatePreviewDetails.Update();

                SetupEdit();
                pnlUpdateFileInfo.Update();

                SetupVersions(false);
                pnlUpdateVersions.Update();

                RaiseOnAction("rehighlightitem", Path.GetFileName(FileInfo.FilePath));
            }
        }
    }
 private void uploader_OnNotAllowed(string permissionType, CMSAdminControl sender)
 {
     if (sender != null)
     {
         sender.StopProcessing = true;
     }
     uploader.StopProcessing    = true;
     uploader.Visible           = false;
     messageElem.ErrorMessage   = MediaLibraryHelper.GetAccessDeniedMessage("filecreate");
     messageElem.DisplayMessage = true;
 }
示例#7
0
    private void gallery_OnNotAllowed(string permissionType, CMSAdminControl sender)
    {
        if (sender != null)
        {
            sender.StopProcessing = true;
        }

        gallery.StopProcessing       = true;
        gallery.Visible              = false;
        gallery.UniPager.PageControl = null;
        messageElem.ErrorMessage     = MediaLibraryHelper.GetAccessDeniedMessage(permissionType);
        messageElem.DisplayMessage   = true;
    }
    private void formMediaFileCustomFields_OnBeforeSave(object sender, EventArgs e)
    {
        // Check 'File modify' permission
        if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(LibraryInfo, "filemodify"))
        {
            ShowError(MediaLibraryHelper.GetAccessDeniedMessage("filemodify"));

            DisplayCustomFields(true);
            formMediaFileCustomFields.StopProcessing = true;

            // Update form
            SetupEdit();
        }
    }
    /// <summary>
    /// OnBeforeValidate event handler.
    /// </summary>
    protected void editElem_OnBeforeValidate(object sender, EventArgs e)
    {
        // Check permission before save
        if (!CheckPermissions())
        {
            ShowError(MediaLibraryHelper.GetAccessDeniedMessage("Manage"));
            editElem.StopProcessing = true;
            return;
        }

        // Get the code name of the edited media library
        if ((MediaLibraryID == 0) && (DisplayMode == ControlDisplayModeEnum.Simple))
        {
            editElem.FieldControls["LibraryName"].Text = ValidationHelper.GetCodeName(editElem.FieldControls["LibraryDisplayName"].Text, null, "_group_" + Guid.NewGuid());
        }
    }
示例#10
0
 /// <summary>
 /// Check perrmissions for selected library.
 /// </summary>
 private bool CheckPermissions()
 {
     // If mFiles is empty handle directory copy/move
     if (String.IsNullOrEmpty(Files) && !mAllFiles)
     {
         if (Action.ToLower().Trim() == "copy")
         {
             // Check 'Folder create' permission
             if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(LibraryInfo, "foldercreate"))
             {
                 lblError.Text = MediaLibraryHelper.GetAccessDeniedMessage("foldercreate");
                 return(false);
             }
         }
         else
         {
             // Check 'Folder modify' permission
             if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(LibraryInfo, "foldermodify"))
             {
                 lblError.Text = MediaLibraryHelper.GetAccessDeniedMessage("foldermodify");
                 return(false);
             }
         }
     }
     else
     {
         if (Action.ToLower().Trim() == "copy")
         {
             // Check 'File create' permission
             if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(LibraryInfo, "filecreate"))
             {
                 lblError.Text = MediaLibraryHelper.GetAccessDeniedMessage("filecreate");
                 return(false);
             }
         }
         else
         {
             // Check 'File modify' permission
             if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(LibraryInfo, "filemodify"))
             {
                 lblError.Text = MediaLibraryHelper.GetAccessDeniedMessage("filemodify");
                 return(false);
             }
         }
     }
     return(true);
 }
示例#11
0
    protected void btnOk_Click(object sender, EventArgs e)
    {
        MediaLibraryInfo libInfo = MediaLibraryInfoProvider.GetMediaLibraryInfo(this.LibraryID);

        if (libInfo != null)
        {
            // Check 'Folder delete' permission
            if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(libInfo, "folderdelete"))
            {
                this.lblError.Text    = MediaLibraryHelper.GetAccessDeniedMessage("folderdelete");
                this.lblError.Visible = true;
                return;
            }

            try
            {
                // Delete folder and all files within
                MediaLibraryInfoProvider.DeleteMediaLibraryFolder(CMSContext.CurrentSiteName, this.LibraryID, this.FolderPath, false);

                // Get path of the parent folder of the currently deleted folder
                this.FolderPath           = DirectoryHelper.CombinePath(this.LibraryFolder, this.FolderPath);
                this.mDeletedFolderParent = this.FolderPath.Remove(this.FolderPath.LastIndexOf("\\"));

                // Let the parent control know the folder was deleted
                if (OnFolderDeleted != null)
                {
                    OnFolderDeleted(this.mDeletedFolderParent);
                }

                this.lblError.Visible = false;
            }
            catch (Exception ex)
            {
                // Display an error to the user
                this.lblError.Text    = GetString("general.erroroccurred") + " " + ex.Message;
                this.lblError.Visible = true;
            }
        }
    }
示例#12
0
    void gridElem_OnAction(string actionName, object actionArgument)
    {
        switch (actionName.ToLower())
        {
        case "edit":
            this.SelectedItemID = ValidationHelper.GetInteger(actionArgument, 0);
            this.RaiseOnEdit();
            break;

        case "delete":
            MediaLibraryInfo mli = MediaLibraryInfoProvider.GetMediaLibraryInfo(ValidationHelper.GetInteger(actionArgument, 0));
            // Check 'Manage' permission
            if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(mli, CMSAdminControl.PERMISSION_MANAGE))
            {
                this.lblError.Text    = MediaLibraryHelper.GetAccessDeniedMessage(CMSAdminControl.PERMISSION_MANAGE);
                this.lblError.Visible = true;
                return;
            }
            try
            {
                MediaLibraryInfoProvider.DeleteMediaLibraryInfo(ValidationHelper.GetInteger(actionArgument, 0));
            }
            catch (Exception ex)
            {
                EventLogProvider eventLog = new EventLogProvider();
                eventLog.LogEvent("Media library", "DELETEOBJ", ex, CMSContext.CurrentSiteID);

                this.lblError.Text    = ex.Message;
                this.lblError.ToolTip = EventLogProvider.GetExceptionLogMessage(ex);
                this.lblError.Visible = true;
            }
            break;
        }

        this.RaiseOnAction(actionName, actionArgument);
    }
示例#13
0
    /// <summary>
    /// Edit file event handler.
    /// </summary>
    protected void btnEdit_Click(object sender, EventArgs e)
    {
        // Check 'File modify' permission
        if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(LibraryInfo, "filemodify"))
        {
            this.lblErrorEdit.Text    = MediaLibraryHelper.GetAccessDeniedMessage("filemodify");
            this.lblErrorEdit.Visible = true;

            SetupTexts();
            SetupEdit();

            // Update form
            pnlUpdateEditInfo.Update();
            pnlUpdateFileInfo.Update();
            return;
        }

        FileInfo fi = CMS.IO.FileInfo.New(MediaFileInfoProvider.GetMediaFilePath(CMSContext.CurrentSiteName, this.LibraryInfo.LibraryFolder, this.FilePath));

        if ((fi != null) && (this.LibraryInfo != null))
        {
            // Check if the file exists
            if (!fi.Exists)
            {
                this.lblErrorEdit.Text    = GetString("general.wasdeleted");
                this.lblErrorEdit.Visible = true;
                this.pnlUpdateEditInfo.Update();
                return;
            }

            string path         = MediaLibraryHelper.EnsurePath(this.FilePath);
            string fileName     = URLHelper.GetSafeFileName(this.txtEditName.Text.Trim(), CMSContext.CurrentSiteName, false);
            string origFileName = Path.GetFileNameWithoutExtension(fi.FullName);

            // Check if the filename is in correct format
            if (!ValidationHelper.IsFileName(fileName))
            {
                this.lblErrorEdit.Text    = GetString("media.rename.wrongformat");
                this.lblErrorEdit.Visible = true;
                this.pnlUpdateEditInfo.Update();
                return;
            }

            if (this.FileInfo != null)
            {
                if ((CMSContext.CurrentUser != null) && (!CMSContext.CurrentUser.IsPublic()))
                {
                    this.FileInfo.FileModifiedWhen     = CMSContext.CurrentUser.DateTimeNow;
                    this.FileInfo.FileModifiedByUserID = CMSContext.CurrentUser.UserID;
                }
                else
                {
                    this.FileInfo.FileModifiedWhen = DateTime.Now;
                }
                // Check if filename is changed ad move file if necessary
                if (fileName != origFileName)
                {
                    try
                    {
                        // Check if file with new file name exists
                        string newFilePath = Path.GetDirectoryName(fi.FullName) + "\\" + fileName + fi.Extension;
                        if (!File.Exists(newFilePath))
                        {
                            string newPath = (string.IsNullOrEmpty(Path.GetDirectoryName(path)) ? "" : Path.GetDirectoryName(path) + "/") + fileName + this.FileInfo.FileExtension;
                            MediaFileInfoProvider.MoveMediaFile(CMSContext.CurrentSiteName, this.FileInfo.FileLibraryID, path, newPath, false);
                            this.FileInfo.FilePath = CMS.MediaLibrary.MediaLibraryHelper.EnsurePath(newPath);
                        }
                        else
                        {
                            this.lblErrorEdit.Text    = GetString("general.fileexists");
                            this.lblErrorEdit.Visible = true;
                            this.pnlUpdateEditInfo.Update();
                            return;
                        }
                    }
                    catch (Exception ex)
                    {
                        this.lblErrorEdit.Text    = GetString("media.rename.failed") + ": " + ex.Message;
                        this.lblErrorEdit.Visible = true;
                        this.pnlUpdateEditInfo.Update();
                        return;
                    }
                }
                // Set media file info
                this.FileInfo.FileName        = fileName;
                this.FileInfo.FileTitle       = this.txtEditTitle.Text;
                this.FileInfo.FileDescription = this.txtEditDescription.Text;

                // Save
                MediaFileInfoProvider.SetMediaFileInfo(this.FileInfo);
                this.FilePath = this.FileInfo.FilePath;

                // Update file modified if not moving physical file
                if (fileName == origFileName)
                {
                    fi.LastWriteTime = FileInfo.FileModifiedWhen;
                }

                // Inform user on success
                this.lblInfoEdit.Text    = GetString("general.changessaved");
                this.lblInfoEdit.Visible = true;
                this.pnlUpdateEditInfo.Update();

                SetupEdit();
                this.pnlUpdateFileInfo.Update();

                SetupTexts();
                SetupFile();
                this.pnlUpdateGeneral.Update();

                SetupPreview();
                this.pnlUpdatePreviewDetails.Update();

                SetupVersions(false);
                pnlUpdateVersions.Update();

                RaiseOnAction("rehighlightitem", Path.GetFileName(this.FileInfo.FilePath));
            }
        }
    }
示例#14
0
    /// <summary>
    /// New file event handler.
    /// </summary>
    protected void btnNew_Click(object sender, EventArgs e)
    {
        MediaFileInfo mfi = null;

        try
        {
            string newFileName = txtNewFileName.Text.Trim();
            // Check if the filename is in correct format
            if (!ValidationHelper.IsFileName(newFileName))
            {
                lblErrorNew.Text = GetString("media.rename.wrongformat");
                ErrorOccurred    = true;
            }
            else
            {
                // Check 'File create' permission
                if (MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(LibraryInfo, "filecreate"))
                {
                    if (LibraryInfo != null)
                    {
                        // Get file and library info
                        if (CurrentFile != null)
                        {
                            if (File.Exists(CurrentFile.FullName))
                            {
                                // Save new file in the DB
                                if (SaveRequired != null)
                                {
                                    mfi = SaveRequired(CurrentFile, txtNewFileTitle.Text.Trim(), txtNewDescripotion.Text.Trim(), URLHelper.GetSafeFileName(newFileName, SiteContext.CurrentSiteName, false), FilePath);
                                    if (mfi != null)
                                    {
                                        mfi.RelatedData = CurrentFile.FullName;
                                    }
                                }
                            }
                            else
                            {
                                lblErrorNew.Text = GetString("media.newfile.notexist");
                                ErrorOccurred    = true;
                            }
                        }
                    }
                }
                else
                {
                    lblErrorNew.Text = MediaLibraryHelper.GetAccessDeniedMessage("filecreate");
                    ErrorOccurred    = true;
                }
            }
        }
        catch (Exception ex)
        {
            ErrorOccurred    = true;
            lblErrorNew.Text = (ex.InnerException != null ? ex.InnerException.Message : ex.Message);
        }

        // Display user with error encountered
        if (ErrorOccurred)
        {
            lblErrorNew.Visible = true;
            RaiseOnAction("error");
        }
        else
        {
            RaiseOnAction("save", mfi);
        }
    }
    protected void btnOK_Click(object sender, EventArgs e)
    {
        // Check whether the current user is authorized to manage the edited media library
        if (!CheckPermissions())
        {
            ShowError(MediaLibraryHelper.GetAccessDeniedMessage("Manage"));
            return;
        }

        // Get the code name of the edited media library
        string codeName = txtCodeName.Text;

        if (DisplayMode == ControlDisplayModeEnum.Simple)
        {
            if (MediaLibraryID == 0)
            {
                codeName = ValidationHelper.GetCodeName(txtDisplayName.Text, null, "_group_" + Guid.NewGuid());
            }
            else
            {
                codeName = LibraryInfo.LibraryName;
            }
        }
        codeName = codeName.Trim();

        // Validate user input
        if (!ValidateForm(codeName))
        {
            return;
        }

        // Create new object (record) if needed
        MediaLibraryInfo mli = (MediaLibraryID > 0) ? LibraryInfo : new MediaLibraryInfo();

        mli.LibraryDisplayName = txtDisplayName.Text;

        if (txtFolder.Enabled)
        {
            mli.LibraryFolder = txtFolder.Text;
        }

        mli.LibraryDescription = txtDescription.Text;
        mli.LibraryName        = codeName;

        // If the library is group related
        if (MediaLibraryGroupID > 0)
        {
            mli.LibraryGroupID = MediaLibraryGroupID;
            // If creating new group library setup default security

            if (MediaLibraryID == 0)
            {
                // Set default group media library security
                mli.FileCreate   = SecurityAccessEnum.GroupMembers;
                mli.FileDelete   = SecurityAccessEnum.Nobody;
                mli.FileModify   = SecurityAccessEnum.Nobody;
                mli.FolderCreate = SecurityAccessEnum.Nobody;
                mli.FolderDelete = SecurityAccessEnum.Nobody;
                mli.FolderModify = SecurityAccessEnum.Nobody;
                mli.Access       = SecurityAccessEnum.GroupMembers;
            }
        }

        mli.LibrarySiteID = CMSContext.CurrentSiteID;

        try
        {
            MediaLibraryInfoProvider.SetMediaLibraryInfo(mli);
        }
        catch (Exception ex)
        {
            ShowError(GetString("general.errorsaving"), ex.Message, null);
            return;
        }

        if ((mli != null) && (mli.LibraryID != 0))
        {
            // Add teaser image to media library
            ucMetaFile.ObjectID = mli.LibraryID;
            ucMetaFile.SiteID   = mli.LibrarySiteID;
            ucMetaFile.UploadFile();
            UpdateImagePath(mli);

            try
            {
                MediaLibraryInfoProvider.SetMediaLibraryInfo(mli);
            }
            catch (Exception ex)
            {
                ShowError(GetString("general.errorsaving"), ex.Message, null);
                return;
            }
            // Update current media library id
            MediaLibraryID = mli.LibraryID;

            ShowChangesSaved();

            FillForm(mli);

            RaiseOnSaved();
        }

        // Reload header if changes were saved
        ScriptHelper.RefreshTabHeader(Page, GetString("general.general"));
    }
    /// <summary>
    /// Initializes the control properties.
    /// </summary>
    protected void SetupControl()
    {
        MediaLibraryInfo mli = MediaLibraryInfoProvider.GetMediaLibraryInfo(MediaLibraryName, SiteContext.CurrentSiteName);

        if (mli != null)
        {
            // If dont have 'Manage' permission
            if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(mli, "read"))
            {
                // Check 'File create' permission
                if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(mli, "libraryaccess"))
                {
                    folderTree.StopProcessing  = true;
                    folderTree.Visible         = false;
                    messageElem.ErrorMessage   = MediaLibraryHelper.GetAccessDeniedMessage("libraryaccess");
                    messageElem.DisplayMessage = true;
                    return;
                }
            }

            // Tree
            if (string.IsNullOrEmpty(MediaLibraryPath))
            {
                folderTree.RootFolderPath     = MediaLibraryHelper.GetMediaRootFolderPath(SiteContext.CurrentSiteName);
                folderTree.MediaLibraryFolder = mli.LibraryFolder;
            }
            else
            {
                folderTree.RootFolderPath = MediaLibraryHelper.GetMediaRootFolderPath(SiteContext.CurrentSiteName) + mli.LibraryFolder;
                int index = MediaLibraryPath.LastIndexOfCSafe('/');
                if ((index > -1) && (MediaLibraryPath.Length > (index + 1)))
                {
                    folderTree.MediaLibraryFolder = MediaLibraryPath.Substring(index + 1);
                }
                else
                {
                    folderTree.MediaLibraryFolder = MediaLibraryPath;
                }
                folderTree.MediaLibraryPath = Path.EnsureBackslashes(MediaLibraryPath);
            }

            // Set images path
            if (CultureHelper.IsPreferredCultureRTL())
            {
                folderTree.ImageFolderPath = GetImageUrl("RTL/Design/Controls/Tree", true, true);
            }
            else
            {
                folderTree.ImageFolderPath = GetImageUrl("Design/Controls/Tree", true, true);
            }

            folderTree.SourceFilterName     = FilterName;
            folderTree.FileIDQueryStringKey = FileIDQueryStringKey;
            folderTree.PathQueryStringKey   = PathQueryStringKey;
            folderTree.DisplayFileCount     = DisplayFileCount;

            // Add tree to the filter collection
            CMSControlsHelper.SetFilter(ValidationHelper.GetString(GetValue("WebPartControlID"), ID), folderTree);
        }
        else
        {
            folderTree.StopProcessing = true;
            folderTree.Visible        = false;
        }
    }
示例#17
0
    /// <summary>
    /// Handles folder actions.
    /// </summary>
    public string ProcessFolderAction()
    {
        MediaLibraryInfo libInfo = MediaLibraryInfoProvider.GetMediaLibraryInfo(this.LibraryID);

        if (libInfo != null)
        {
            if (this.Action.ToLower().Trim() == "new")
            {
                if (this.CheckAdvancedPermissions)
                {
                    CurrentUserInfo currUser = CMSContext.CurrentUser;

                    // Not a global admin
                    if (!currUser.IsGlobalAdministrator)
                    {
                        // Group library
                        bool isGroupLibrary = (libInfo.LibraryGroupID > 0);
                        if (!(isGroupLibrary && currUser.IsGroupAdministrator(libInfo.LibraryGroupID)))
                        {
                            // Checked resource name
                            string resource = (isGroupLibrary) ? "CMS.Groups" : "CMS.MediaLibrary";

                            // Check 'CREATE' & 'MANAGE' permissions
                            if (!(currUser.IsAuthorizedPerResource(resource, CMSAdminControl.PERMISSION_MANAGE) || MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(libInfo, "foldercreate")))
                            {
                                this.lblError.Text    = MediaLibraryHelper.GetAccessDeniedMessage("foldercreate");
                                this.lblError.Visible = true;
                                return(null);
                            }
                        }
                    }
                }
                // Check 'Folder create' permission
                else if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(libInfo, "foldercreate"))
                {
                    this.lblError.Text    = MediaLibraryHelper.GetAccessDeniedMessage("foldercreate");
                    this.lblError.Visible = true;
                    return(null);
                }
            }
            else
            {
                // Check 'Folder modify' permission
                if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(libInfo, "foldermodify"))
                {
                    this.lblError.Text    = MediaLibraryHelper.GetAccessDeniedMessage("foldermodify");
                    this.lblError.Visible = true;
                    return(null);
                }
            }

            SiteInfo si = SiteInfoProvider.GetSiteInfo(libInfo.LibrarySiteID);
            if (si != null)
            {
                // Validate form entry
                string errMsg = ValidateForm(this.Action, si.SiteName);
                this.ErrorOccurred = !string.IsNullOrEmpty(errMsg);

                // If validation suceeded
                if (errMsg == "")
                {
                    try
                    {
                        // Update info only if folder was renamed
                        if (MediaLibraryHelper.EnsurePath(FolderPath) != MediaLibraryHelper.EnsurePath(mNewFolderPath))
                        {
                            if (this.Action.ToLower().Trim() == "new")
                            {
                                // Create/Update folder according to action
                                MediaLibraryInfoProvider.CreateMediaLibraryFolder(si.SiteName, LibraryID, mNewFolderPath, false);
                            }
                            else
                            {
                                // Create/Update folder according to action
                                MediaLibraryInfoProvider.RenameMediaLibraryFolder(si.SiteName, LibraryID, FolderPath, mNewFolderPath, false);
                            }

                            // Inform the user on success
                            this.lblInfo.Text    = GetString("general.changessaved");
                            this.lblInfo.Visible = true;

                            // Refresh folder name
                            this.FolderPath = mNewFolderPath;
                            UpdateFolderName();

                            // Reload media library
                            if (OnFolderChange != null)
                            {
                                OnFolderChange(this.mNewTreePath);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        // Display an error to the user
                        this.lblError.Text    = GetString("general.erroroccurred") + " " + ex.Message;
                        this.lblError.Visible = true;

                        this.mNewTreePath = null;
                    }
                }
                else
                {
                    // Display an error to the user
                    this.lblError.Text    = errMsg;
                    this.lblError.Visible = true;
                    this.mNewTreePath     = null;
                }
            }
        }

        return(this.mNewTreePath);
    }
    /// <summary>
    /// Edit file event handler.
    /// </summary>
    protected void btnEdit_Click(object sender, EventArgs e)
    {
        // Check 'File modify' permission
        if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(LibraryInfo, "filemodify"))
        {
            ShowError(MediaLibraryHelper.GetAccessDeniedMessage("filemodify"));

            SetupTexts();
            SetupEdit();

            // Update form
            pnlUpdateFileInfo.Update();
            return;
        }

        FileInfo fi = CMS.IO.FileInfo.New(MediaFileInfoProvider.GetMediaFilePath(CMSContext.CurrentSiteName, LibraryInfo.LibraryFolder, FilePath));

        if ((fi != null) && (LibraryInfo != null))
        {
            // Check if the file exists
            if (!fi.Exists)
            {
                ShowError(GetString("media.error.FileDoesNotExist"));
                return;
            }

            string path         = MediaLibraryHelper.EnsurePath(FilePath);
            string fileName     = URLHelper.GetSafeFileName(txtEditName.Text.Trim(), CMSContext.CurrentSiteName, false);
            string origFileName = Path.GetFileNameWithoutExtension(fi.FullName);

            Validator fileNameValidator = new Validator()
                                          .NotEmpty(fileName, GetString("media.error.FileNameIsEmpty"))
                                          .IsFileName(fileName, GetString("media.error.FileNameIsNotValid"))
                                          .MatchesCondition(fileName, x => x != "." && x != "..", GetString("media.error.FileNameIsRelative"));

            if (!fileNameValidator.IsValid)
            {
                ShowError(HTMLHelper.HTMLEncode(fileNameValidator.Result));
                return;
            }

            if (FileInfo != null)
            {
                if ((CMSContext.CurrentUser != null) && (!CMSContext.CurrentUser.IsPublic()))
                {
                    FileInfo.FileModifiedWhen     = CMSContext.CurrentUser.DateTimeNow;
                    FileInfo.FileModifiedByUserID = CMSContext.CurrentUser.UserID;
                }
                else
                {
                    FileInfo.FileModifiedWhen = DateTime.Now;
                }
                // Check if filename is changed ad move file if necessary
                if (fileName != origFileName)
                {
                    try
                    {
                        // Check if file with new file name exists
                        string newFilePath = Path.GetDirectoryName(fi.FullName) + "\\" + fileName + fi.Extension;
                        if (!File.Exists(newFilePath))
                        {
                            string newPath = (string.IsNullOrEmpty(Path.GetDirectoryName(path)) ? "" : Path.GetDirectoryName(path) + "/") + fileName + FileInfo.FileExtension;
                            MediaFileInfoProvider.MoveMediaFile(CMSContext.CurrentSiteName, FileInfo.FileLibraryID, path, newPath, false);
                            FileInfo.FilePath = MediaLibraryHelper.EnsurePath(newPath);
                        }
                        else
                        {
                            ShowError(GetString("media.error.FileExists"));
                            return;
                        }
                    }
                    catch (Exception ex)
                    {
                        ShowError(GetString("media.error.RenameFileException"), ex.Message, null);
                        return;
                    }
                }
                // Set media file info
                FileInfo.FileName        = fileName;
                FileInfo.FileTitle       = txtEditTitle.Text;
                FileInfo.FileDescription = txtEditDescription.Text;

                // Save
                MediaFileInfoProvider.SetMediaFileInfo(FileInfo);
                FilePath = FileInfo.FilePath;

                // Update file modified if not moving physical file
                if (fileName == origFileName)
                {
                    fi.LastWriteTime = FileInfo.FileModifiedWhen;
                }

                // Inform user on success
                ShowChangesSaved();

                SetupEdit();
                pnlUpdateFileInfo.Update();

                SetupTexts();
                SetupFile();
                pnlUpdateGeneral.Update();

                SetupPreview();
                pnlUpdatePreviewDetails.Update();

                SetupVersions(false);
                pnlUpdateVersions.Update();

                RaiseOnAction("rehighlightitem", Path.GetFileName(FileInfo.FilePath));
            }
        }
    }
    /// <summary>
    /// Handles folder actions.
    /// </summary>
    public string ProcessFolderAction()
    {
        MediaLibraryInfo libInfo = MediaLibraryInfo.Provider.Get(LibraryID);

        if (libInfo != null)
        {
            if (Action.ToLowerCSafe().Trim() == "new")
            {
                if (CheckAdvancedPermissions)
                {
                    var currUser = MembershipContext.AuthenticatedUser;

                    // Not a global admin
                    if (!currUser.CheckPrivilegeLevel(UserPrivilegeLevelEnum.Admin))
                    {
                        // Check 'CREATE' & 'MANAGE' permissions
                        if (!(currUser.IsAuthorizedPerResource("CMS.MediaLibrary", PERMISSION_MANAGE) || MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(libInfo, "foldercreate")))
                        {
                            ShowError(MediaLibraryHelper.GetAccessDeniedMessage("foldercreate"));
                            return(null);
                        }
                    }
                }
                // Check 'Folder create' permission
                else if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(libInfo, "foldercreate"))
                {
                    ShowError(MediaLibraryHelper.GetAccessDeniedMessage("foldercreate"));
                    return(null);
                }
            }
            else
            {
                // Check 'Folder modify' permission
                if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(libInfo, "foldermodify"))
                {
                    ShowError(MediaLibraryHelper.GetAccessDeniedMessage("foldermodify"));
                    return(null);
                }
            }

            SiteInfo si = SiteInfo.Provider.Get(libInfo.LibrarySiteID);
            if (si != null)
            {
                // Validate form entry
                string errMsg = ValidateForm(Action, si.SiteName);
                ErrorOccurred = !string.IsNullOrEmpty(errMsg);

                // If validation succeeded
                if (errMsg == "")
                {
                    try
                    {
                        // Update info only if folder was renamed
                        if (Path.EnsureForwardSlashes(FolderPath) != Path.EnsureForwardSlashes(mNewFolderPath))
                        {
                            if (Action.ToLowerCSafe().Trim() == "new")
                            {
                                // Create/Update folder according to action
                                MediaLibraryInfoProvider.CreateMediaLibraryFolder(si.SiteName, LibraryID, mNewFolderPath);
                            }
                            else
                            {
                                // Create/Update folder according to action
                                MediaLibraryInfoProvider.RenameMediaLibraryFolder(si.SiteName, LibraryID, FolderPath, mNewFolderPath);
                            }

                            // Refresh folder name
                            FolderPath = mNewFolderPath;
                            UpdateFolderName();

                            // Reload media library
                            if (OnFolderChange != null)
                            {
                                OnFolderChange(mNewTreePath);
                            }
                        }

                        // Inform the user on success
                        ShowChangesSaved();
                    }
                    catch (Exception ex)
                    {
                        // Display an error to the user
                        ShowError(GetString("general.erroroccurred") + " " + ex.Message);

                        mNewTreePath = null;
                    }
                }
                else
                {
                    // Display an error to the user
                    ShowError(errMsg);
                    mNewTreePath = null;
                }
            }
        }

        return(mNewTreePath);
    }
    /// <summary>
    /// Initializes the control properties.
    /// </summary>
    protected void SetupControl()
    {
        if (StopProcessing)
        {
            // Do nothing
        }
        else
        {
            MediaLibraryInfo mli = MediaLibraryInfoProvider.GetMediaLibraryInfo(MediaLibraryName, SiteContext.CurrentSiteName);
            if (mli != null)
            {
                // If don't have 'Manage' permission
                if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(mli, "read"))
                {
                    // Check 'File create' permission
                    if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(mli, "libraryaccess"))
                    {
                        repItems.Visible = false;

                        messageElem.ErrorMessage   = MediaLibraryHelper.GetAccessDeniedMessage("libraryaccess");
                        messageElem.DisplayMessage = true;
                        return;
                    }
                }
            }

            int fid = QueryHelper.GetInteger(FileIDQueryStringKey, 0);
            if (fid > 0)
            {
                if (!String.IsNullOrEmpty(SelectedItemTransformationName))
                {
                    repItems.ItemTemplate = TransformationHelper.LoadTransformation(this, SelectedItemTransformationName);
                }
            }
            else
            {
                if (!String.IsNullOrEmpty(TransformationName))
                {
                    repItems.ItemTemplate = TransformationHelper.LoadTransformation(this, TransformationName);
                }
            }
            if (!String.IsNullOrEmpty(FooterTransformationName))
            {
                repItems.FooterTemplate = TransformationHelper.LoadTransformation(this, FooterTransformationName);
            }
            if (!String.IsNullOrEmpty(HeaderTransformationName))
            {
                repItems.HeaderTemplate = TransformationHelper.LoadTransformation(this, HeaderTransformationName);
            }
            if (!String.IsNullOrEmpty(SeparatorTransformationName))
            {
                repItems.SeparatorTemplate = TransformationHelper.LoadTransformation(this, SeparatorTransformationName);
            }

            repItems.DataBindByDefault = false;
            repItems.OnPageChanged    += repItems_OnPageChanged;

            // Add repeater to the filter collection
            CMSControlsHelper.SetFilter(ValidationHelper.GetString(GetValue("WebPartControlID"), ID), repItems);

            repItems.HideControlForZeroRows = HideControlForZeroRows;
            repItems.ZeroRowsText           = ZeroRowsText;
        }
    }
示例#21
0
    protected void btnOK_Click(object sender, EventArgs e)
    {
        bool isAuthorized = false;

        // Check 'Manage' permission for user
        if (this.LibraryInfo != null)
        {
            isAuthorized = MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(this.LibraryInfo, "Manage");
        }
        else
        {
            if (CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.MediaLibrary", "Manage"))
            {
                isAuthorized = true;
            }
            else
            {
                if ((this.MediaLibraryGroupID > 0) && (CMSContext.CurrentUser.IsGroupAdministrator(this.MediaLibraryGroupID)))
                {
                    isAuthorized = true;
                }
            }
        }

        // If user isn't authorized let her now
        if (!isAuthorized)
        {
            lblError.Text    = MediaLibraryHelper.GetAccessDeniedMessage("Manage");
            lblError.Visible = true;
            return;
        }
        string codeName = txtCodeName.Text;

        if (DisplayMode == ControlDisplayModeEnum.Simple)
        {
            if (this.MediaLibraryID == 0)
            {
                codeName = ValidationHelper.GetCodeName(txtDisplayName.Text, null, "_group_" + Guid.NewGuid());
            }
            else
            {
                codeName = this.LibraryInfo.LibraryName;
            }
        }
        codeName = codeName.Trim();

        // Validate input boxes
        if (!ValidateForm(codeName))
        {
            return;
        }

        // Create new object (record) if needed
        MediaLibraryInfo mli = null;

        if (this.MediaLibraryID > 0)
        {
            mli = this.LibraryInfo;
        }
        else
        {
            mli = new MediaLibraryInfo();
        }

        mli.LibraryDisplayName = txtDisplayName.Text;

        if (txtFolder.Enabled)
        {
            mli.LibraryFolder = txtFolder.Text;
        }

        mli.LibraryDescription = txtDescription.Text;
        mli.LibraryName        = codeName;

        // If the library is group related
        if (this.MediaLibraryGroupID > 0)
        {
            mli.LibraryGroupID = this.MediaLibraryGroupID;
            // If creating new group library setup default security

            if (this.MediaLibraryID == 0)
            {
                // Set default group media library security
                mli.FileCreate   = SecurityAccessEnum.GroupMembers;
                mli.FileDelete   = SecurityAccessEnum.Nobody;
                mli.FileModify   = SecurityAccessEnum.Nobody;
                mli.FolderCreate = SecurityAccessEnum.Nobody;
                mli.FolderDelete = SecurityAccessEnum.Nobody;
                mli.FolderModify = SecurityAccessEnum.Nobody;
                mli.Access       = SecurityAccessEnum.GroupMembers;
            }
        }

        mli.LibrarySiteID = CMSContext.CurrentSiteID;

        try
        {
            MediaLibraryInfoProvider.SetMediaLibraryInfo(mli);
        }
        catch
        {
            lblError.Text    = GetString("general.errorsaving");
            lblError.Visible = true;
            return;
        }

        if ((mli != null) && (mli.LibraryID != 0))
        {
            // Add teaser image to media library
            ucMetaFile.ObjectID = mli.LibraryID;
            ucMetaFile.UploadFile();
            UpdateImagePath(mli);

            try
            {
                MediaLibraryInfoProvider.SetMediaLibraryInfo(mli);
            }
            catch (Exception ex)
            {
                lblError.Text    = ex.Message;
                lblError.Visible = true;
                return;
            }
            // Update current media library id
            this.MediaLibraryID = mli.LibraryID;

            lblInfo.Visible = true;
            lblInfo.Text    = GetString("general.changessaved");

            FillForm(mli);

            this.RaiseOnSaved();
        }

        // Reload header if changes were saved
        ScriptHelper.RefreshTabHeader(Page, GetString("general.general"));
    }