using System; using System.Web.UI.WebControls; using System.Web.UI; using CMS.CMSHelper; using CMS.CMSImportExport; using CMS.GlobalHelper; using CMS.SettingsProvider; using CMS.SiteProvider; using CMS.DocumentEngine; using CMS.UIControls; using CMS.ExtendedControls; using CultureInfo = System.Globalization.CultureInfo; public partial class CMSModules_AbuseReport_Controls_AbuseReportStatusEdit : CMSAdminEditControl { #region "Private variables" private AbuseReportInfo mCurrentReport = null; private int mReportID = 0; #endregion #region "Public properties" /// /// Messages placeholder /// public override MessagesPlaceHolder MessagesPlaceHolder { get { return plcMess; } } /// /// Indicates if control is used on live site. /// public override bool IsLiveSite { get { return base.IsLiveSite; } set { plcMess.IsLiveSite = value; base.IsLiveSite = value; } } /// ///ID of current report. /// public int ReportID { get { return mReportID; } set { mReportID = value; } } /// /// Gets current report. /// private AbuseReportInfo CurrentReport { get { if (mCurrentReport == null) { mCurrentReport = AbuseReportInfoProvider.GetAbuseReportInfo(ReportID); // Set edited object EditedObject = mCurrentReport; if (mCurrentReport == null) { throw new Exception(string.Format("[AbuseReportStatusEdit.CurrentReport]: The abuse report with ID '{0}' doesn't exist.", ReportID)); } } return mCurrentReport; } } #endregion #region "Page events" protected void Page_Load(object sender, EventArgs e) { if (!StopProcessing) { ReloadData(true); } btnOk.Click += btnOK_Click; rfvText.ErrorMessage = GetString("abuse.textreqired"); } #endregion #region "Other events" /// /// Button OK click event handler. /// protected void btnOK_Click(object sender, EventArgs e) { // Check permissions if (!CheckPermissions("CMS.AbuseReport", "Manage")) { return; } // Check that text area is not empty txtCommentValue.Text = txtCommentValue.Text.Trim(); if (txtCommentValue.Text.Length > 1000) { txtCommentValue.Text = txtCommentValue.Text.Substring(0, 1000); } if (txtCommentValue.Text.Length > 0) { // Load new values CurrentReport.ReportComment = txtCommentValue.Text; CurrentReport.ReportStatus = (AbuseReportStatusEnum)ValidationHelper.GetInteger(drpStatus.SelectedValue, 0); // Save AbuseReport AbuseReportInfoProvider.SetAbuseReportInfo(CurrentReport); ShowChangesSaved(); } else { ShowError(GetString("abuse.errors.comment")); } } #endregion #region "Methods" /// /// Reloads all data. /// public override void ReloadData(bool forceLoad) { if (CurrentReport != null) { // Load labels if (!RequestHelper.IsPostBack() || forceLoad) { // Create query parameters string query = "?ObjectID=" + CurrentReport.ReportObjectID; // Set link value string url = CurrentReport.ReportURL; if (CurrentReport.ReportCulture != String.Empty) { url = URLHelper.AddParameterToUrl(url, URLHelper.LanguageParameterName, CurrentReport.ReportCulture); } lnkUrlValue.Text = HTMLHelper.HTMLEncode(url); lnkUrlValue.NavigateUrl = url; lnkUrlValue.ToolTip = HTMLHelper.HTMLEncode(url); lnkUrlValue.Target = "_blank"; // Set culture value CultureInfo ci = CultureHelper.GetCultureInfo(CurrentReport.ReportCulture); lblCultureValue.Text = (ci != null) ? ci.DisplayName : ResHelper.Dash; // Set site value SiteInfo si = SiteInfoProvider.GetSiteInfo(CurrentReport.ReportSiteID); lblSiteValue.Text = (si != null) ? HTMLHelper.HTMLEncode(si.DisplayName) : ResHelper.Dash; // Set title lblTitleValue.Text = HTMLHelper.HTMLEncode(CurrentReport.ReportTitle); // Set labels if (!string.IsNullOrEmpty(CurrentReport.ReportObjectType)) { lblObjectTypeValue.Text = GetString("ObjectType." + ImportExportHelper.GetSafeObjectTypeName(CurrentReport.ReportObjectType)); query += "&ObjectType=" + CurrentReport.ReportObjectType; if ((CurrentReport.ReportObjectID > 0) && (CurrentReport.ReportObjectType.ToLowerCSafe() != DocumentObjectType.DOCUMENT)) { pnlLink.Visible = true; } } else { lblObjectTypeValue.Text = ResHelper.Dash; } // Get object display name lblObjectNameValue.Text = ResHelper.Dash; string objectType = CurrentReport.ReportObjectType; int objectId = CurrentReport.ReportObjectID; if ((objectId > 0) && !string.IsNullOrEmpty(objectType) && !objectType.EqualsCSafe(DocumentObjectType.DOCUMENT, true)) { GeneralizedInfo obj = CMSObjectHelper.GetObjectById(objectType, objectId); if ((obj != null) && !string.IsNullOrEmpty(obj.ObjectDisplayName)) { lblObjectNameValue.Text = HTMLHelper.HTMLEncode(obj.ObjectDisplayName); } } // Set Reported by label lblReportedByValue.Text = ResHelper.Dash; if (CurrentReport.ReportUserID != 0) { UserInfo ui = UserInfoProvider.GetUserInfo(CurrentReport.ReportUserID); lblReportedByValue.Text = (ui != null) ? HTMLHelper.HTMLEncode(ui.FullName) : GetString("general.NA"); } // Set other parameters lblReportedWhenValue.Text = CurrentReport.ReportWhen.ToString(); if ((CurrentReport.ReportObjectID > 0) && (!string.IsNullOrEmpty(CurrentReport.ReportObjectType)) && AbuseReportInfoProvider.IsObjectTypeSupported(CurrentReport.ReportObjectType)) { lnkShowDetails.Visible = true; string detailUrl = "~/CMSModules/AbuseReport/AbuseReport_ObjectDetails.aspx" + query; lnkShowDetails.NavigateUrl = URLHelper.AddParameterToUrl(detailUrl, "hash", QueryHelper.GetHash(detailUrl)); } Control postback = ControlsHelper.GetPostBackControl(Page); CMSPage page = Page as CMSPage; // Not post-back not caused by OK button or Save action in header if((postback != btnOk) && ((page == null) || (postback != page.HeaderActions))) { txtCommentValue.Text = CurrentReport.ReportComment; LoadStatus((int)CurrentReport.ReportStatus); } } } } /// /// Loads status from enumeration to dropdown list. /// private void LoadStatus(int reportStatus) { drpStatus.Items.Clear(); drpStatus.Items.Add(new ListItem(GetString("general.new"), "0")); drpStatus.Items.Add(new ListItem(GetString("general.solved"), "1")); drpStatus.Items.Add(new ListItem(GetString("general.rejected"), "2")); drpStatus.SelectedValue = reportStatus.ToString(); } #endregion }