예제 #1
0
    /// <summary>
    /// Initializes all the nested controls.
    /// </summary>
    private void SetupControls()
    {
        // Get media library info
        if (LibraryInfo != null)
        {
            ucMetaFile.ObjectID = LibraryInfo.LibraryID;
            ucMetaFile.SiteID   = LibraryInfo.LibrarySiteID;
            txtFolder.Enabled   = false;

            if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(LibraryInfo, PERMISSION_MANAGE))
            {
                // Disable MetaFile uploader
                ucMetaFile.Enabled = false;
            }
        }
        else
        {
            ucMetaFile.ObjectID = 0;
            txtFolder.Enabled   = true;
        }
        ucMetaFile.ObjectType     = MediaLibraryObjectType.MEDIALIBRARY;
        ucMetaFile.Category       = MetaFileInfoProvider.OBJECT_CATEGORY_THUMBNAIL;
        ucMetaFile.OnAfterDelete += ucMetaFile_OnAfterDelete;
        ucMetaFile.OnAfterUpload += ucMetaFile_OnAfterUpload;
        ucMetaFile.ReloadData();
    }
예제 #2
0
    /// <summary>
    /// Gets and bulk updates media libraries. Called when the "Get and bulk update libraries" button is pressed.
    /// Expects the CreateMediaLibrary method to be run first.
    /// </summary>
    private bool GetAndBulkUpdateMediaLibraries()
    {
        // Prepare the parameters
        string where = "LibraryName LIKE 'MyNew%'";

        // Get the data
        DataSet libraries = MediaLibraryInfoProvider.GetMediaLibraries(where, null);

        if (!DataHelper.DataSourceIsEmpty(libraries))
        {
            // Loop through the individual items
            foreach (DataRow libraryDr in libraries.Tables[0].Rows)
            {
                // Create object from DataRow
                MediaLibraryInfo modifyLibrary = new MediaLibraryInfo(libraryDr);

                // Update the property
                modifyLibrary.LibraryDisplayName = modifyLibrary.LibraryDisplayName.ToUpper();

                // Update the media library
                MediaLibraryInfoProvider.SetMediaLibraryInfo(modifyLibrary);
            }

            return(true);
        }

        return(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
        private byte[] GetFileBinary(BaseInfo image)
        {
            switch (image)
            {
            case MediaFileInfo mediaFile:
                // For files with uploaded binary (new file or update)
                if (mediaFile.FileBinary != null)
                {
                    return(mediaFile.FileBinary);
                }
                // For existing files
                var mediaLibrary = MediaLibraryInfoProvider.GetMediaLibraryInfo(mediaFile.FileLibraryID);
                return(MediaFileInfoProvider.GetFile(mediaFile, mediaLibrary.LibraryFolder, SiteContext.CurrentSiteName));

            case MetaFileInfo metaFile:
                // For files with uploaded binary (new file or update)
                if (metaFile.MetaFileBinary != null)
                {
                    return(metaFile.MetaFileBinary);
                }
                // For existing files
                return(MetaFileInfoProvider.GetFile(metaFile, SiteContext.CurrentSiteName));

            case AttachmentInfo attachment:
                return(attachment.AttachmentBinary);

            case AttachmentHistoryInfo attachmentHistory:
                return(attachmentHistory.AttachmentBinary);

            default:
                return(null);
            }
        }
예제 #5
0
    protected void Page_Load(object sender, EventArgs e)
    {
        // Get the media library ID
        libraryId = QueryHelper.GetInteger("libraryId", 0);

        // Get library info
        MediaLibraryInfo mli = MediaLibraryInfoProvider.GetMediaLibraryInfo(libraryId);

        if (mli != null)
        {
            InitalizeMenu();

            // Initialize the page title
            string[,] breadcrumbs = new string[2, 3];
            breadcrumbs[0, 0]     = GetString("media.header.itemlistlink");
            breadcrumbs[0, 1]     = "~/CMSModules/MediaLibrary/Tools/Library_List.aspx";
            breadcrumbs[0, 2]     = "_parent";
            breadcrumbs[1, 0]     = mli.LibraryDisplayName;
            breadcrumbs[1, 1]     = "";
            breadcrumbs[1, 2]     = "";

            this.CurrentMaster.Title.TitleText   = GetString("media.header.headercaption");
            this.CurrentMaster.Title.TitleImage  = ResolveUrl(GetImageUrl("Objects/Media_Library/object.png"));
            this.CurrentMaster.Title.Breadcrumbs = breadcrumbs;

            this.CurrentMaster.Title.HelpTopicName = "library_files";
            this.CurrentMaster.Title.HelpName      = "helpTopic";

            this.CurrentMaster.BodyClass += " MediaLibrary LightTabs";
        }
    }
        public JsonResult Upload(string libraryName)
        {
            var dataContext = dataContextRetriever.Retrieve();

            if (!dataContext.EditMode)
            {
                throw new HttpException(403, "It is allowed to upload an image only when the page builder is in the edit mode.");
            }

            var library = MediaLibraryInfo.Provider.Get(libraryName, SiteContext.CurrentSiteID);

            if (library == null)
            {
                throw new InvalidOperationException($"The '{libraryName}' media library doesn't exist.");
            }

            if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(library, "FileCreate", MembershipContext.AuthenticatedUser))
            {
                throw new HttpException(403, "You are not authorized to upload an image to the media library.");
            }

            var imageGuid = Guid.Empty;

            foreach (string requestFileName in Request.Files)
            {
                imageGuid = AddMediaFile(requestFileName, library);
            }

            return(Json(new { guid = imageGuid }));
        }
        string GetDirectImageUrlFromMediaLibrary(Guid imageGuid)
        {
            //get filenale
            string fileName = null;
            var    libs     = MediaLibraryInfoProvider.GetMediaLibraries().ToList();

            foreach (var lib in libs)
            {
                var folder = lib.Children.FirstOrDefault();

                foreach (var image in folder)
                {
                    if (!string.IsNullOrEmpty(image.GetProperty("Guid").ToString()))
                    {
                        if (image.GetProperty("Guid").ToString() == imageGuid.ToString())
                        {
                            fileName = image.GetProperty("FileName").ToString();
                        }
                    }
                }
            }

            var siteName = SiteContext.CurrentSiteName;

            var urlMediaFileInfo = MediaFileInfoProvider.GetMediaFileInfo(imageGuid, siteName);

            string url = MediaLibraryHelper.GetDirectUrl(urlMediaFileInfo);

            return(url);
        }
예제 #8
0
    /// <summary>
    /// Reloads the data in the selector.
    /// </summary>
    public void ReloadData(bool forceReload)
    {
        string where = GetWhereConditionInternal();

        uniSelector.IsLiveSite          = IsLiveSite;
        uniSelector.ReturnColumnName    = (UseLibraryNameForSelection ? "LibraryName" : "LibraryID");
        uniSelector.WhereCondition      = where;
        uniSelector.OnSelectionChanged += uniSelector_OnSelectionChanged;
        uniSelector.DropDownSingleSelect.AutoPostBack = UseAutoPostBack;

        bool noLibrary = DataHelper.DataSourceIsEmpty(MediaLibraryInfoProvider.GetMediaLibraries(where, null, 1, "LibraryID"));

        // Insert '(none)' record if no library exists - only if '(none)' isn't inserted by default
        uniSelector.AllowEmpty = (noLibrary && NoneWhenEmpty);

        if (!uniSelector.AllowEmpty && AddCurrentLibraryRecord)
        {
            uniSelector.SpecialFields.Add(new SpecialField {
                Text = GetString("media.current"), Value = MediaLibraryInfoProvider.CURRENT_LIBRARY
            });
        }
        else
        {
            uniSelector.SpecialFields = null;
        }

        if (forceReload)
        {
            uniSelector.Reload(true);
        }
    }
예제 #9
0
    /// <summary>
    /// Adds role permission to media library. Called when the "Add role permission to library " button is pressed.
    /// Expects the CreateMediaLibrary method to be run first.
    /// </summary>
    private bool AddRolePermissionToLibrary()
    {
        // Get the media library
        MediaLibraryInfo mediaLibrary = MediaLibraryInfoProvider.GetMediaLibraryInfo("MyNewLibrary", SiteContext.CurrentSiteName);

        // Get the role
        RoleInfo libraryRole = RoleInfoProvider.GetRoleInfo("CMSDeskAdmin", SiteContext.CurrentSiteID);

        // Get the permission
        PermissionNameInfo libraryPermission = PermissionNameInfoProvider.GetPermissionNameInfo("FileCreate", "CMS.MediaLibrary", null);

        if ((mediaLibrary != null) && (libraryRole != null) && (libraryPermission != null))
        {
            // Create a new media library role permision info
            MediaLibraryRolePermissionInfo rolePermission = new MediaLibraryRolePermissionInfo();

            // Set the values
            rolePermission.LibraryID    = mediaLibrary.LibraryID;
            rolePermission.RoleID       = libraryRole.RoleID;
            rolePermission.PermissionID = libraryPermission.PermissionId;

            // Add role permission to media library
            MediaLibraryRolePermissionInfoProvider.SetMediaLibraryRolePermissionInfo(rolePermission);

            return(true);
        }

        return(false);
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        RaiseOnCheckPermissions(PERMISSION_READ, this);

        MediaLibraryInfo libInfo = MediaLibraryInfoProvider.GetMediaLibraryInfo(LibraryID);

        EditedObject = libInfo;

        if (libInfo != null)
        {
            // Set the request timeout
            Server.ScriptTimeout = AttachmentHelper.ScriptTimeout;

            // Register script handling repeated media file creation
            ltlPostBackScript.Text = ScriptHelper.GetScript("function LocalSaveAnother() {" + Page.ClientScript.GetPostBackEventReference(this, null) + "}"
                                                            + " function SaveDocument(nodeId, createAnother){ if ( !createAnother ) { LocalSave(createAnother) } else { LocalSaveAnother() } }");
        }
        else
        {
            pnlMenu.Visible = false;
            pnlForm.Visible = false;

            lblError.Visible = true;
            lblError.Text    = GetString("media.newfile.librarynotexists");
        }

        // Register wopener script
        ScriptHelper.RegisterWOpenerScript(Page);
    }
    /// <summary>
    /// Initializes media file info.
    /// </summary>
    /// <param name="objectGuid">Media file GUID</param>
    /// <param name="siteName">Site name</param>
    private void metaDataEditor_InitializeObject(Guid objectGuid, string siteName)
    {
        // Get mediafile
        mediaFileInfo = MediaFileInfoProvider.GetMediaFileInfo(objectGuid, siteName);

        // If media file is not null
        if (mediaFileInfo != null)
        {
            MediaLibraryInfo mli = MediaLibraryInfoProvider.GetMediaLibraryInfo(ValidationHelper.GetInteger(mediaFileInfo.FileLibraryID, 0));

            // Check permission 'FileModify'
            if (metaDataEditor.CheckPermissions && !MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(mli, "filemodify"))
            {
                RedirectToAccessDenied(GetString("metadata.errors.filemodify"));
            }

            // Fire event GetObjectExtension
            if (GetObjectExtension != null)
            {
                GetObjectExtension(mediaFileInfo.FileExtension);
            }
        }
        else
        {
            RedirectToInformation(GetString("editedobject.notexists"));
        }
    }
    /// <summary>
    /// Reload controls data.
    /// </summary>
    /// <param name="forceReload">Indicates if controls </param>
    public override void ReloadData(bool forceReload)
    {
        // Check media file permissions
        MediaLibraryInfo mli = (MediaLibraryInfo)MediaLibraryInfo;

        // Check authorization to filemodify or manage
        if ((mli != null) && ((MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(mli, "filemodify", CMSContext.CurrentUser) ||
                               MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(mli, "manage", CMSContext.CurrentUser)) || !CheckPermission))
        {
            Enabled = true;

            // Check if module 'Community' is loaded
            if (mli.LibraryGroupID > 0)
            {
                // Check 'GroupAdministrator' permission
                Enabled = (GroupInfo != null) && CMSContext.CurrentUser.IsGroupAdministrator(mli.LibraryGroupID);
            }
        }
        else
        {
            Enabled = false;
        }

        base.ReloadData(forceReload);
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        // Get the media library ID
        libraryId = QueryHelper.GetInteger("libraryId", 0);
        groupId   = QueryHelper.GetInteger("groupid", 0);

        // Get library info
        MediaLibraryInfo mli = MediaLibraryInfoProvider.GetMediaLibraryInfo(libraryId);

        if (mli != null)
        {
            InitalizeMenu();

            // Initialize the page title
            string[,] breadcrumbs           = new string[2, 3];
            breadcrumbs[0, 0]               = GetString("media.header.itemlistlink");
            breadcrumbs[0, 1]               = "~/CMSModules/Groups/Tools/MediaLibrary/Library_List.aspx?groupid=" + groupId;
            breadcrumbs[0, 2]               = "_parent";
            breadcrumbs[1, 0]               = mli.LibraryDisplayName;
            breadcrumbs[1, 1]               = "";
            breadcrumbs[1, 2]               = "";
            CurrentMaster.Title.Breadcrumbs = breadcrumbs;

            CurrentMaster.Title.HelpTopicName = "library_files";
            CurrentMaster.Title.HelpName      = "helpTopic";
        }
    }
    /// <summary>
    /// Gets direct path for preview image of currently edited media file.
    /// </summary>
    private string GetPrevDirectPath()
    {
        string prevUrl = "";

        // Direct path
        string previewPath   = null;
        string previewFolder = null;

        if (Path.GetDirectoryName(FileInfo.FilePath).EndsWithCSafe(MediaLibraryHelper.GetMediaFileHiddenFolder(CMSContext.CurrentSiteName)))
        {
            previewFolder = Path.GetDirectoryName(FileInfo.FilePath) + "\\" + MediaLibraryHelper.GetPreviewFileName(FileInfo.FileName, FileInfo.FileExtension, ".*", CMSContext.CurrentSiteName);
            previewPath   = MediaLibraryInfoProvider.GetMediaLibraryFolderPath(FileInfo.FileLibraryID) + "\\" + previewFolder;
        }
        else
        {
            previewFolder = Path.GetDirectoryName(FileInfo.FilePath) + "\\" + MediaLibraryHelper.GetMediaFileHiddenFolder(CMSContext.CurrentSiteName) + "\\" + MediaLibraryHelper.GetPreviewFileName(FileInfo.FileName, FileInfo.FileExtension, ".*", CMSContext.CurrentSiteName);
            previewPath   = MediaLibraryInfoProvider.GetMediaLibraryFolderPath(FileInfo.FileLibraryID) + "\\" + previewFolder;
        }
        if (Directory.Exists(Path.GetDirectoryName(previewPath)))
        {
            string[] files = Directory.GetFiles(Path.GetDirectoryName(previewPath), Path.GetFileName(previewPath));
            if (files.Length > 0)
            {
                previewFolder = Path.GetDirectoryName(previewFolder).Replace('\\', '/').TrimStart('/');
                string prevFileName = Path.GetFileName(files[0]);

                prevUrl = MediaFileInfoProvider.GetMediaFileUrl(CMSContext.CurrentSiteName, LibraryInfo.LibraryFolder, previewFolder + '/' + prevFileName);
                prevUrl = URLHelper.ResolveUrl(prevUrl);
            }
        }

        return(prevUrl);
    }
예제 #15
0
    /// <summary>
    /// Initializes the breadcrumbs controls.
    /// </summary>
    private void InitializeBreadcrumbs()
    {
        ucBreadcrumbs.Items.Clear();

        ucBreadcrumbs.AddBreadcrumb(new BreadcrumbItem
        {
            Text          = GetString("Group_General.MediaLibrary.BackToList"),
            OnClientClick = ControlsHelper.GetPostBackEventReference(lnkBackHidden) + "; return false;"
        });

        string itemText = "";

        if (LibraryID > 0)
        {
            MediaLibraryInfo library = MediaLibraryInfoProvider.GetMediaLibraryInfo(LibraryID);
            if (library != null)
            {
                itemText = HTMLHelper.HTMLEncode(library.LibraryDisplayName);
            }
        }
        else
        {
            itemText = GetString("Group_General.MediaLibrary.NewLibrary");
        }

        ucBreadcrumbs.AddBreadcrumb(new BreadcrumbItem {
            Text = itemText,
        });
    }
예제 #16
0
        string GetImageUrlFromMediaLibrary(Guid imageGuid)
        {
            //get filenale
            string fileName = null;
            var    libs     = MediaLibraryInfoProvider.GetMediaLibraries().ToList();

            foreach (var lib in libs)
            {
                var folder = lib.Children.FirstOrDefault();

                foreach (var image in folder)
                {
                    if (!string.IsNullOrEmpty(image.GetProperty("Guid").ToString()))
                    {
                        if (image.GetProperty("Guid").ToString() == imageGuid.ToString())
                        {
                            fileName = image.GetProperty("FileName").ToString();
                        }
                    }
                }
            }

            //get url
            string url = MediaFileURLProvider.GetMediaFileUrl(imageGuid, fileName);

            return(url);
        }
예제 #17
0
    /// <summary>
    /// Reloads the data in the selector.
    /// </summary>
    public void ReloadData(bool forceReload)
    {
        uniSelector.IsLiveSite          = IsLiveSite;
        uniSelector.ReturnColumnName    = (UseLibraryNameForSelection ? "LibraryName" : "LibraryID");
        uniSelector.WhereCondition      = GetCompleteWhereCondition();
        uniSelector.OnSelectionChanged += uniSelector_OnSelectionChanged;
        uniSelector.DropDownSingleSelect.AutoPostBack = UseAutoPostBack;

        bool noLibrary = MediaLibraryInfoProvider.GetMediaLibraries()
                         .Where(GetGroupsWhereCondition())
                         .Count == 0;

        // Empty value '(none)' is allowed when it is allowed from outside (property 'AllowEmpty') or no libraries was found and flag 'NoneWhenEmpty' is set
        uniSelector.AllowEmpty |= (noLibrary && NoneWhenEmpty);

        if (AddCurrentLibraryRecord)
        {
            uniSelector.SpecialFields.Add(new SpecialField {
                Text = GetString("media.current"), Value = MediaLibraryInfoProvider.CURRENT_LIBRARY
            });
        }

        if (forceReload)
        {
            uniSelector.Reload(true);
        }
    }
예제 #18
0
        public static MediaLibraryInfo GetCachedMediaLibriaryInfo(String name)
        {
            var mediaLibraryInfo = CacheHelper.Cache(cs =>
            {
                try
                {
                    var lib = MediaLibraryInfoProvider.GetMediaLibraryInfo(name, SiteContext.CurrentSiteName);

                    if (cs.Cached)
                    {
                        cs.CacheDependency = CacheHelper.GetCacheDependency("media.library|byguid|" + lib.LibraryGUID);
                    }

                    return(lib);
                }
                catch (Exception ex)
                {
                    EventLogProvider.LogException("GetCachedMediaLibriaryInfo", EventType.INFORMATION, ex, SiteContext.CurrentSiteID, "Unabled to get media library: " + name);
                }

                return(null);
            }, new CacheSettings(DefaultCacheMinutes, "custom|getcachedmedialibrary|" + name));

            return(mediaLibraryInfo);
        }
예제 #19
0
    protected override void CreateChildControls()
    {
        // Hide the control if there is no MediaLibrary
        if (MediaLibrary == null)
        {
            hidden         = true;
            Visible        = false;
            StopProcessing = true;
            return;
        }

        if (StopProcessing)
        {
            folderTree.StopProcessing     = true;
            fileDataSource.StopProcessing = true;
            UniPagerControl.PageControl   = null;
        }
        else
        {
            if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(MediaLibrary, "Read"))
            {
                // Check 'Media gallery access' permission
                if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(MediaLibrary, "libraryaccess"))
                {
                    RaiseOnNotAllowed("libraryaccess");
                    return;
                }
            }

            base.CreateChildControls();
            InitializeInnerControls();
        }
    }
예제 #20
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);
    }
예제 #21
0
    /// <summary>
    /// Validates form entries.
    /// </summary>
    /// <param name="action">Action type</param>
    /// <param name="siteName">Site name</param>
    public string ValidateForm(string action, string siteName)
    {
        string newFolderName = txtFolderName.Text.Trim();

        string errMsg = new Validator().NotEmpty(newFolderName, GetString("media.error.FolderNameIsEmpty")).
                        IsFolderName(newFolderName, GetString("media.error.FolderNameIsNotValid")).Result;

        if (String.IsNullOrEmpty(errMsg))
        {
            // Check special folder names
            if ((newFolderName == ".") || (newFolderName == ".."))
            {
                errMsg = GetString("media.error.FolderNameIsRelative");
            }

            if (String.IsNullOrEmpty(errMsg))
            {
                // Make a note that we are renaming existing folder
                bool mustExist = String.IsNullOrEmpty(Action) || (Action.ToLowerCSafe().Trim() != "new");

                // Check if folder with specified name exists already if required
                if (mustExist)
                {
                    // Existing folder is being renamed
                    if (!Directory.Exists(MediaLibraryInfoProvider.GetMediaLibraryFolderPath(siteName, DirectoryHelper.CombinePath(LibraryFolder, FolderPath))))
                    {
                        errMsg = GetString("media.error.FolderDoesNotExist");
                    }
                }

                if (String.IsNullOrEmpty(errMsg))
                {
                    string hiddenFolderName = MediaLibraryHelper.GetMediaFileHiddenFolder(siteName);
                    // Check if folder name is not reserved
                    if (string.Equals(hiddenFolderName, newFolderName, StringComparison.InvariantCultureIgnoreCase) || ValidationHelper.IsSpecialFolderName(newFolderName))
                    {
                        errMsg = String.Format(GetString("media.error.FolderNameIsReserved"), newFolderName);
                    }

                    if (String.IsNullOrEmpty(errMsg))
                    {
                        // Get new folder path
                        GetNewFolderPath(mustExist);

                        if (Path.EnsureForwardSlashes(FolderPath) != Path.EnsureForwardSlashes(mNewFolderPath))
                        {
                            // Check if new folder doesn't exist yet
                            if (Directory.Exists(MediaLibraryInfoProvider.GetMediaLibraryFolderPath(siteName, DirectoryHelper.CombinePath(LibraryFolder, mNewFolderPath))))
                            {
                                errMsg = GetString("media.error.FolderExists");
                            }
                        }
                    }
                }
            }
        }

        return(errMsg);
    }
예제 #22
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;
        }
    }
예제 #23
0
    /// <summary>
    /// Checks if the folder structure contains specified folder.
    /// </summary>
    /// <param name="path">Path of the folder to check</param>
    public bool FolderExists(string path)
    {
        string libFolderPath = MediaLibraryInfoProvider.GetMediaLibraryFolderPath(MediaLibraryID);

        libFolderPath = DirectoryHelper.CombinePath(libFolderPath, path);

        return(Directory.Exists(libFolderPath));
    }
예제 #24
0
 private bool innermedia_GetModifyPermission(IDataContainer data)
 {
     if (mHasModify == null)
     {
         mHasModify = LibraryInfo != null?MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(LibraryInfo, "filemodify") : false;
     }
     return(mHasModify == true ? true : false);
 }
예제 #25
0
    protected void Page_Load(object sender, EventArgs e)
    {
        RaiseOnCheckPermissions(PERMISSION_READ, this);

        if (!Visible)
        {
            EnableViewState = false;
        }

        if (MediaLibraryID > 0)
        {
            // Get information on current library
            permissionArray.Add("filecreate");
            permissionArray.Add("foldercreate");
            permissionArray.Add("filedelete");
            permissionArray.Add("folderdelete");
            permissionArray.Add("filemodify");
            permissionArray.Add("foldermodify");
            permissionArray.Add("libraryaccess");

            if ((ResLibrary != null) && (LibraryInfo != null))
            {
                // Retrieve permission matrix data
                QueryDataParameters parameters = new QueryDataParameters();
                parameters.Add("@ID", ResLibrary.ResourceID);
                parameters.Add("@LibraryID", MediaLibraryID);
                parameters.Add("@SiteID", LibraryInfo.LibrarySiteID);

                // Exclude generic roles from matrix
                string where = "(RoleName NOT IN ('_authenticated_', '_everyone_', '_notauthenticated_'))";

                if (permissionArray != null)
                {
                    where += " AND PermissionName IN (";
                    foreach (string permission in permissionArray)
                    {
                        where += "'" + permission + "',";
                    }
                    where  = where.TrimEnd(',');
                    where += ") ";
                }

                // Setup matrix control
                gridMatrix.QueryParameters = parameters;
                gridMatrix.WhereCondition  = where;
                gridMatrix.CssClass        = "permission-matrix";
                gridMatrix.OnItemChanged  += gridMatrix_OnItemChanged;

                // Check 'Modify' permission
                if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(LibraryInfo, "manage"))
                {
                    Enable             = false;
                    gridMatrix.Enabled = false;
                    ShowError(String.Format(GetString("general.accessdeniedonpermissionname"), "Manage"));
                }
            }
        }
    }
    public void RaisePostBackEvent(string eventArgument)
    {
        // Check 'Modify' permission
        if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(LibraryInfo, "manage"))
        {
            return;
        }

        string[] args = eventArgument.Split('|');

        if (args.Length == 2)
        {
            // Get info on currently selected item
            int permission = Convert.ToInt32(args[0]);
            int access     = Convert.ToInt32(args[1]);

            if (LibraryInfo != null)
            {
                // Update library permission access information
                switch (permission)
                {
                case 0:
                    LibraryInfo.FileCreate = ((SecurityAccessEnum)access);
                    break;

                case 2:
                    LibraryInfo.FileDelete = (SecurityAccessEnum)access;
                    break;

                case 4:
                    LibraryInfo.FileModify = ((SecurityAccessEnum)access);
                    break;

                case 1:
                    LibraryInfo.FolderCreate = (SecurityAccessEnum)access;
                    break;

                case 3:
                    LibraryInfo.FolderDelete = (SecurityAccessEnum)access;
                    break;

                case 5:
                    LibraryInfo.FolderModify = (SecurityAccessEnum)access;
                    break;

                case 6:
                    LibraryInfo.Access = (SecurityAccessEnum)access;
                    break;

                default:
                    break;
                }

                // Save changes to the library
                MediaLibraryInfoProvider.SetMediaLibraryInfo(LibraryInfo);
            }
        }
    }
예제 #27
0
    /// <summary>
    /// Ensures the physical file.
    /// </summary>
    /// <param name="file">Output file</param>
    public bool EnsurePhysicalFile(CMSOutputMediaFile file)
    {
        if (file == null)
        {
            return(false);
        }

        // Try to link to file system
        if (String.IsNullOrEmpty(file.Watermark) && (file.MediaFile != null) && (file.MediaFile.FileID > 0))
        {
            SiteInfo si = SiteInfoProvider.GetSiteInfo(file.MediaFile.FileSiteID);
            if (si != null)
            {
                bool   generateThumbnails = ValidationHelper.GetBoolean(SettingsKeyInfoProvider.GetStringValue(si.SiteName + ".CMSGenerateThumbnails"), true);
                string filePath           = null;
                string libraryFolder      = Path.EnsureEndBackslash(MediaLibraryInfoProvider.GetMediaLibraryFolderPath(file.MediaFile.FileLibraryID));

                if (file.Resized && generateThumbnails)
                {
                    filePath = libraryFolder + MediaFileInfoProvider.EnsureThumbnailFile(file.MediaFile, file.SiteName, Width, Height, MaxSideSize, file.UsePreview);
                }
                else
                {
                    if (file.UsePreview)
                    {
                        // Get file path
                        string path             = MediaFileInfoProvider.GetMediaFilePath(file.MediaFile.FileLibraryID, file.MediaFile.FilePath);
                        string pathDirectory    = Path.GetDirectoryName(path);
                        string hiddenFolderPath = MediaLibraryHelper.GetMediaFileHiddenFolder(CurrentSiteName);
                        string folderPath       = String.Format("{0}\\{1}", pathDirectory, hiddenFolderPath);

                        // Ensure hidden folder exists
                        DirectoryHelper.EnsureDiskPath(folderPath, pathDirectory);
                        // Get preview file
                        string[] files = Directory.GetFiles(folderPath, MediaLibraryHelper.GetPreviewFileName(file.MediaFile.FileName, file.MediaFile.FileExtension, ".*", CurrentSiteName));
                        if (files.Length > 0)
                        {
                            filePath = files[0];
                        }
                    }
                    else
                    {
                        filePath = libraryFolder + file.MediaFile.FilePath;
                    }
                }

                if (filePath != null)
                {
                    // Link to the physical file
                    file.PhysicalFile = filePath;
                    return(true);
                }
            }
        }

        file.PhysicalFile = "";
        return(false);
    }
    /// <summary>
    /// OnCheckPermissions event handler.
    /// </summary>
    private void elemEdit_OnCheckPermissions(string permissionType, CMSAdminControl sender)
    {
        MediaLibraryInfo mli = (MediaLibraryInfo)EditedObject;

        if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(mli, "Read"))
        {
            RedirectToAccessDenied("cms.medialibrary", "Read");
        }
    }
    /// <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));
            }
        }
    }
예제 #30
0
    private void librarySecurity_OnCheckPermissions(string permissionType, CMSAdminControl sender)
    {
        MediaLibraryInfo mli = MediaLibraryInfoProvider.GetMediaLibraryInfo(libraryId);

        if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(mli, "Read"))
        {
            RedirectToAccessDenied("cms.medialibrary", "Read");
        }
    }