public override void ReloadData() { // Try to copy forum viewer properties from parent CopyValuesFromParent(this); // Retrieve from DB only if post has some attachments if ((this.PostAttachmentCount > 0) && ((this.PostID > 0))) { ltlHeader.Text = GetString("forums.postattachments"); DataSet ds = ForumAttachmentInfoProvider.GetForumAttachments(this.PostID, false); if (!DataHelper.DataSourceIsEmpty(ds)) { rptAttachments.DataSource = ds; rptAttachments.DataBind(); plcPostAttachments.Visible = true; } } // Hide if there is no attachment else { plcPostAttachments.Visible = false; } base.ReloadData(); }
/// <summary> /// Upload click handler. /// </summary> protected void btnUpload_Click(object sender, EventArgs e) { if (!CheckPermissions("cms.forums", PERMISSION_MODIFY)) { return; } if ((upload.HasFile) && (PostInfo != null)) { // Check attachment extension if (!ForumAttachmentInfoProvider.IsExtensionAllowed(upload.FileName, SiteContext.CurrentSiteName)) { ShowError(GetString("ForumAttachment.AttachmentIsNotAllowed")); return; } ForumInfo fi = ForumInfoProvider.GetForumInfo(PostInfo.PostForumID); if (fi != null) { ForumGroupInfo fgi = ForumGroupInfoProvider.GetForumGroupInfo(fi.ForumGroupID); if (fgi != null) { ForumAttachmentInfo fai = new ForumAttachmentInfo(upload.PostedFile, 0, 0, fi.ForumImageMaxSideSize); fai.AttachmentPostID = PostInfo.PostId; fai.AttachmentSiteID = fgi.GroupSiteID; ForumAttachmentInfoProvider.SetForumAttachmentInfo(fai); ReloadAttachmentData(PostInfo.PostId); UniGrid.ReloadData(); } } } }
/// <summary> /// Handles delete button action - deletes user favorite. /// </summary> protected void btnDelete_OnCommand(object sender, CommandEventArgs e) { // Check permissions if (!IsAvailable(ForumContext.CurrentForum, ForumActionType.Attachment)) { ShowError(GetString("ForumNewPost.PermissionDenied")); return; } if (e.CommandName == "delete") { int attachmentId = ValidationHelper.GetInteger(e.CommandArgument, 0); // Get forum attachment info ForumAttachmentInfo fai = ForumAttachmentInfoProvider.GetForumAttachmentInfo(attachmentId); if (fai != null) { // Delete attachment ForumAttachmentInfoProvider.DeleteForumAttachmentInfo(fai); } //Reload page URLHelper.Redirect(RequestContext.CurrentURL); } }
/// <summary> /// Upload click hadler. /// </summary> protected void btnUpload_Click(object sender, EventArgs e) { if (!CheckPermissions("cms.forums", CMSAdminControl.PERMISSION_MODIFY)) { return; } if ((upload.HasFile) && (this.PostInfo != null)) { // Check attachment extension if (!ForumAttachmentInfoProvider.IsExtensionAllowed(upload.FileName, CMSContext.CurrentSiteName)) { lblError.Visible = true; lblError.Text = GetString("ForumAttachment.AttachmentIsNotAllowed"); return; } ForumInfo fi = ForumInfoProvider.GetForumInfo(this.PostInfo.PostForumID); if (fi != null) { ForumGroupInfo fgi = ForumGroupInfoProvider.GetForumGroupInfo(fi.ForumGroupID); if (fgi != null) { ForumAttachmentInfo fai = new ForumAttachmentInfo(upload.PostedFile, 0, 0, 0); fai.AttachmentPostID = this.PostInfo.PostId; fai.AttachmentSiteID = fgi.GroupSiteID; ForumAttachmentInfoProvider.SetForumAttachmentInfo(fai); ReloadAttachmentData(this.PostInfo.PostId); UniGrid.ReloadData(); } } } }
/// <summary> /// Unigrid Action event handler. /// </summary> private void UniGrid_OnAction(string actionName, object actionArgument) { if (actionName == "delete") { if (!CheckPermissions("cms.forums", PERMISSION_MODIFY)) { return; } ForumAttachmentInfoProvider.DeleteForumAttachmentInfo(ValidationHelper.GetInteger(actionArgument, 0)); } }
/// <summary> /// Handles file upload. /// </summary> protected void btnUpload_OnClick(object sender, EventArgs e) { if (ForumContext.CurrentForum == null) { return; } // Check permissions if (!this.IsAvailable(ForumContext.CurrentForum, ForumActionType.Attachment)) { lblError.Visible = true; lblError.Text = GetString("ForumNewPost.PermissionDenied"); return; } if (fileUpload.HasFile) { // Check max attachment size if ((ForumContext.CurrentForum.ForumAttachmentMaxFileSize > 0) && ((fileUpload.PostedFile.InputStream.Length / 1024) >= ForumContext.CurrentForum.ForumAttachmentMaxFileSize)) { lblError.Visible = true; lblError.Text = GetString("ForumAttachment.AttachmentIsTooLarge"); return; } // Check attachment extension if (!ForumAttachmentInfoProvider.IsExtensionAllowed(fileUpload.FileName, this.SiteName)) { lblError.Visible = true; lblError.Text = GetString("ForumAttachment.AttachmentIsNotAllowed"); return; } ForumAttachmentInfo attachmentInfo = new ForumAttachmentInfo(fileUpload.PostedFile, 0, 0, ForumContext.CurrentForum.ForumImageMaxSideSize); attachmentInfo.AttachmentPostID = ForumContext.CurrentPost.PostId; ForumGroupInfo fgi = ForumGroupInfoProvider.GetForumGroupInfo(ForumContext.CurrentForum.ForumGroupID); if (fgi != null) { attachmentInfo.AttachmentSiteID = fgi.GroupSiteID; //Save to DB ForumAttachmentInfoProvider.SetForumAttachmentInfo(attachmentInfo); DataSet ds = ForumAttachmentInfoProvider.GetForumAttachments(ForumContext.CurrentPost.PostId, false); if (!DataHelper.DataSourceIsEmpty(ds)) { listAttachment.DataSource = ds; listAttachment.DataBind(); plcListHeader.Visible = true; } } } }
/// <summary> /// Processes the specified file. /// </summary> /// <param name="fileGuid">File guid</param> protected void ProcessFile(Guid fileGuid) { // Get the file ForumAttachmentInfo fileInfo = ForumAttachmentInfoProvider.GetForumAttachmentInfoWithoutBinary(fileGuid, CMSContext.CurrentSiteName); if (fileInfo != null) { #region "Security" // Indicates whether current user is granted to see this attachment bool attachmentAllowed = false; // Get forum ForumInfo fi = ForumInfoProvider.GetForumInfo(fileInfo.AttachmentForumID); if (fi != null) { // Check acess if (ForumViewer.CheckPermission("AccessToForum", SecurityHelper.GetSecurityAccessEnum(fi.ForumAccess, 6), fi.ForumGroupID, fi.ForumID)) { attachmentAllowed = true; } } // If attachment is not allowed for current user, redirect to the access denied page if (!attachmentAllowed) { URLHelper.Redirect(URLRewriter.AccessDeniedPageURL(CurrentSiteName)); } #endregion bool resizeImage = (ImageHelper.IsMimeImage(fileInfo.AttachmentMimeType) && ForumAttachmentInfoProvider.CanResizeImage(fileInfo, Width, Height, MaxSideSize)); // Get the data if ((outputFile == null) || (outputFile.ForumAttachment == null)) { outputFile = new CMSOutputForumAttachment(fileInfo, fileInfo.AttachmentBinary); outputFile.Width = Width; outputFile.Height = Height; outputFile.MaxSideSize = MaxSideSize; outputFile.Resized = resizeImage; } } }
/// <summary> /// Ensures the physical file. /// </summary> /// <param name="file">Output file</param> public bool EnsurePhysicalFile(CMSOutputForumAttachment file) { if (file == null) { return(false); } // Try to link to file system if ((file.ForumAttachment != null) && (file.ForumAttachment.AttachmentID > 0) && ForumAttachmentInfoProvider.StoreFilesInFileSystem(CurrentSiteName)) { string filePath = ForumAttachmentInfoProvider.EnsureAttachmentPhysicalFile(file.ForumAttachment, CurrentSiteName); if (filePath != null) { if (file.Resized) { // If resized, ensure the thumbnail file if (ForumAttachmentInfoProvider.GenerateThumbnails(CurrentSiteName)) { filePath = ForumAttachmentInfoProvider.EnsureThumbnailFile(file.ForumAttachment, this.Width, this.Height, this.MaxSideSize); if (filePath != null) { // Link to the physical file file.PhysicalFile = filePath; return(true); } } } else { // Link to the physical file file.PhysicalFile = filePath; return(false); } } } file.PhysicalFile = ""; return(false); }
/// <summary> /// Page load. /// </summary> protected void Page_Load(object sender, EventArgs e) { ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "DeleteConfirmation", ScriptHelper.GetScript( "function DeleteConfirm() { return confirm(" + ScriptHelper.GetString(GetString("forums.attachment.deleteconfirmation")) + "); } ")); if ((ForumContext.CurrentPost != null) && (ForumContext.CurrentPost.PostId > 0)) { btnUpload.Text = GetString("general.upload"); btnBack.Text = GetString("general.back"); if (ForumContext.CurrentForum != null) { if (ForumContext.CurrentForum.ForumAttachmentMaxFileSize > 0) { lblInfo.Text = GetString("ForumAttachment.MaxFileSizeInfo").Replace("##SIZE##", ForumContext.CurrentForum.ForumAttachmentMaxFileSize.ToString()); lblInfo.Visible = true; } } if (ControlsHelper.IsInUpdatePanel(this)) { ScriptManager.GetCurrent(this.Page).RegisterPostBackControl(this.btnUpload); } if (!RequestHelper.IsPostBack()) { // Get post attachments DataSet attachments = ForumAttachmentInfoProvider.GetForumAttachments(ForumContext.CurrentPost.PostId, false); if (!DataHelper.DataSourceIsEmpty(attachments)) { listAttachment.DataSource = attachments; listAttachment.DataBind(); } else { plcListHeader.Visible = false; } } } }
/// <summary> /// Processes the file. /// </summary> protected void ProcessFile() { if (fileGuid == Guid.Empty) { return; } // Get the file ForumAttachmentInfo fileInfo = ForumAttachmentInfoProvider.GetForumAttachmentInfoWithoutBinary(fileGuid, SiteContext.CurrentSiteName); if (fileInfo == null) { return; } // Check forum access var forum = ForumInfoProvider.GetForumInfo(fileInfo.AttachmentForumID); if ((forum == null) || !ForumViewer.CheckPermission("AccessToForum", SecurityHelper.GetSecurityAccessEnum(forum.ForumAccess, 6), forum.ForumGroupID, forum.ForumID, CurrentUser)) { // If attachment is not allowed for current user, redirect to the access denied page URLHelper.Redirect(PageSecurityHelper.AccessDeniedPageURL(CurrentSiteName)); } bool resizeImage = (ImageHelper.IsMimeImage(fileInfo.AttachmentMimeType) && ForumAttachmentInfoProvider.CanResizeImage(fileInfo, Width, Height, MaxSideSize)); // Get the data if ((outputFile == null) || (outputFile.ForumAttachment == null)) { outputFile = new CMSOutputForumAttachment(fileInfo, fileInfo.AttachmentBinary); outputFile.Width = Width; outputFile.Height = Height; outputFile.MaxSideSize = MaxSideSize; outputFile.Resized = resizeImage; } }
/// <summary> /// Provides operations necessary to create and store new cms file. /// </summary> /// <param name="args">Upload arguments.</param> /// <param name="context">HttpContext instance.</param> private void HandleForumUpload(UploaderHelper args, HttpContext context) { ForumInfo fi = null; try { args.IsExtensionAllowed(); if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.forums", CMSAdminControl.PERMISSION_MODIFY)) { throw new Exception("Current user is not granted with modify permission per 'cms.forums' resource."); } fi = ForumInfoProvider.GetForumInfo(args.ForumArgs.PostForumID); if (fi != null) { ForumGroupInfo fgi = ForumGroupInfoProvider.GetForumGroupInfo(fi.ForumGroupID); if (fgi != null) { ForumAttachmentInfo fai = new ForumAttachmentInfo(args.FilePath, 0, 0, 0) { AttachmentPostID = args.ForumArgs.PostID, AttachmentSiteID = fgi.GroupSiteID }; ForumAttachmentInfoProvider.SetForumAttachmentInfo(fai); } } } catch (Exception ex) { args.Message = ex.Message; // Log the error EventLogProvider.LogException("MultiFileUploader", "UPLOADFORUM", ex); } finally { if (!string.IsNullOrEmpty(args.AfterSaveJavascript)) { args.AfterScript = String.Format(@" if (window.{0} != null) {{ window.{0}() }} else if ((window.parent != null) && (window.parent.{0} != null)) {{ window.parent.{0}() }}", args.AfterSaveJavascript); } else { args.AfterScript = String.Format(@" if (window.InitRefresh_{0}) {{ window.InitRefresh_{0}('{1}', false, false); }} else {{ if ('{1}' != '') {{ alert('{1}'); }} }}", args.ParentElementID, ScriptHelper.GetString(args.Message.Trim(), false)); } args.AddEventTargetPostbackReference(); context.Response.Write(args.AfterScript); context.Response.Flush(); } }
protected void Page_Load(object sender, EventArgs e) { fileGuid = QueryHelper.GetGuid("fileguid", Guid.Empty); DebugHelper.SetContext("GetForumAttachment"); int cacheMinutes = this.CacheMinutes; // Try to get data from cache using (CachedSection <CMSOutputForumAttachment> cs = new CachedSection <CMSOutputForumAttachment>(ref outputFile, cacheMinutes, true, null, "getforumattachment", CurrentSiteName, CacheHelper.GetBaseCacheKey(true, false), Request.QueryString)) { if (cs.LoadData) { // Disable caching before check permissions cs.CacheMinutes = 0; // Process the file ProcessFile(); // Keep original cache minutes if permissions are ok cs.CacheMinutes = cacheMinutes; // Ensure the cache settings if (cs.Cached) { // Prepare the cache dependency CacheDependency cd = null; if (outputFile != null) { if (outputFile.ForumAttachment != null) { cd = CacheHelper.GetCacheDependency(outputFile.ForumAttachment.GetDependencyCacheKeys()); // Do not cache if too big file which would be stored in memory if (!CacheHelper.CacheImageAllowed(CurrentSiteName, outputFile.ForumAttachment.AttachmentFileSize) && !ForumAttachmentInfoProvider.StoreFilesInFileSystem(CurrentSiteName)) { cacheMinutes = largeFilesCacheMinutes; } } } if ((cd == null) && (CurrentSite != null) && (outputFile != null)) { // Get the current forum id int forumId = 0; if (outputFile.ForumAttachment != null) { forumId = outputFile.ForumAttachment.AttachmentForumID; } // Set default dependency based on GUID cd = CacheHelper.GetCacheDependency(new string[] { "forumattachment|" + fileGuid.ToString().ToLower() + "|" + CurrentSite.SiteID, "forumattachment|" + forumId }); } // Cache the data cs.CacheMinutes = cacheMinutes; cs.CacheDependency = cd; cs.Data = outputFile; } } } // Send the data SendFile(outputFile); DebugHelper.ReleaseContext(); }