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")); } }
/// <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; }
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()); } }
/// <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); }
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; } } }
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); }
/// <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)); } } }
/// <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; } }
/// <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; } }
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")); }