private void DoArticleView(MainDataSet.ArticleRow articleRow) { PanelArticle.Visible = true; if (articleRow != null) { if (!IsPopup) { UserContext.Breadcrumbs.AddRange(Utils.GenerateBreadCrumbs(articleRow.ArticleGuid, this.Master.InstanceGuid, false)); } //Master.CustomName = articleRow.Subject; Master.Title = articleRow.Subject; litSubject.Text = articleRow.Subject; HtmlMeta metaKeywords = new HtmlMeta(); metaKeywords.Name = "keywords"; metaKeywords.Content = Master.Title; Page.Header.Controls.Add(metaKeywords); HtmlMeta metaDescription = new HtmlMeta(); metaDescription.Name = "Description"; metaDescription.Content = articleRow.SearchDesc; Page.Header.Controls.Add(metaDescription); if (articleRow.Type == ArticleType.Request.ToString()) { divBody.InnerHtml = (string)this.GetLocalResourceObject("ArticleDoesNotExist"); } else { this.ArticleTableAdapter.IncReview(articleRow.ArticleGuid); string body = this.ArticleTableAdapter.GetBody(articleRow.ArticleGuid); if (!string.IsNullOrEmpty(body)) { divBody.InnerHtml = body; } } //divType.InnerText = articleRow.Type; Guid userId = Guid.Empty; if (!articleRow.IsCreatedByNull()) { userId = articleRow.CreatedBy; } if (!articleRow.IsUpdatedByNull()) { userId = articleRow.UpdatedBy; } //if (userId == Guid.Empty) // PostCommentCtrl.ReceiverName = Utils.GetInstanceUserName(this.Master.InstanceGuid); //else //{ // using (MainDataSetTableAdapters.Mc_UserTableAdapter userAdapter = new MainDataSetTableAdapters.Mc_UserTableAdapter()) // { // MainDataSet.Mc_UserDataTable dtUser = userAdapter.GetDataByUserId(userId); // if (dtUser != null && dtUser.Count > 0) // PostCommentCtrl.ReceiverName = dtUser[0].FirstName + " " + dtUser[0].LastName; // } //} ArticlesListCtrl.ArticleGuid = articleRow.ArticleGuid; PostCommentCtrl.InstanceGuid = this.Master.InstanceGuid; PostCommentCtrl.ArticleGuid = articleRow.ArticleGuid; CommentsListCtrl.ArticleGuid = articleRow.ArticleGuid; CommentsListCtrl.DataBind(); } }
protected void ButtonPostComment_Click(object sender, EventArgs e) { // check the Honeypot if (TextBoxPhone.Text == string.Empty && this.InstanceGuid != Guid.Empty) { int indexUrl = Request.Url.AbsoluteUri.IndexOf(":" + Request.Url.Port.ToString()); if (indexUrl <= 0) { indexUrl = Request.Url.AbsoluteUri.IndexOf(Request.Url.AbsolutePath); } string siteUrl = Request.Url.AbsoluteUri.Substring(0, indexUrl) + Request.ApplicationPath + "/"; using (MainDataSetTableAdapters.CommentTableAdapter taComment = new MainDataSetTableAdapters.CommentTableAdapter()) { Organization currOrganization = null; MainDataSet.Mc_InstanceRow currInstance = null; using (MainDataSetTableAdapters.Mc_InstanceTableAdapter taInstance = new MainDataSetTableAdapters.Mc_InstanceTableAdapter()) { MainDataSet.Mc_InstanceDataTable instances = taInstance.GetDataByInstanceId(this.InstanceGuid); if (instances.Count > 0) { currInstance = instances[0]; currOrganization = Micajah.Common.Bll.Providers.OrganizationProvider.GetOrganization(currInstance.OrganizationId); } } DateTime dtNow = DateTime.Now; if (this.ArticleGuid == Guid.Empty) { // create a reqest Guid newId = Guid.NewGuid(); // create a request if (this.ArticleTableAdapter.Insert(newId, this.InstanceGuid, new Guid?(), ArticleType.Request.ToString(), (this.AlternateId != string.Empty) ? this.AlternateId : HttpUtility.HtmlEncode(Utils.ShortCommentText(TextBoxComment.Text, 50)), (string)this.GetLocalResourceObject("BodyNotArticle"), string.Empty, 0, 0, 0, false, new DateTime?(), new DateTime?(), new DateTime?(), new Guid?(), new Guid?(), new Guid?()) > 0) { MainDataSet.CommentDataTable commentDataTable = taComment.InsertComment(newId, TextBoxName.Text, TextBoxEmail.Text, string.Format("{0} ({1})", Request.UserHostName, Request.UserHostAddress), HttpUtility.HtmlEncode(Utils.ShortCommentText(TextBoxComment.Text, 50)), HttpUtility.HtmlEncode(TextBoxComment.Text), false, true, DateTime.Now, true); if (commentDataTable != null && commentDataTable.Rows.Count > 0) { if (CommentPosted != null) { CommentPosted(this, new ArticleEventArgs(newId, true)); } if (currOrganization != null && currInstance != null) { string subj; Micajah.Common.Dal.OrganizationDataSet.UserDataTable users = Micajah.Common.Bll.Providers.UserProvider.GetUsers( currOrganization.OrganizationId, this.InstanceGuid, new string[] { "InstAdmin" }); ArrayList admins = new ArrayList(); ArrayList SendTo = new ArrayList(); admins.AddRange(this.InputListAdmin); foreach (Micajah.Common.Dal.OrganizationDataSet.UserRow row in users) { admins.Add(row.Email); } SendTo.AddRange(admins); MainDataSetTableAdapters.EmailsTableAdapter emailsTableAdapter = new MainDataSetTableAdapters.EmailsTableAdapter(); foreach (DataRow row in emailsTableAdapter.GetArticleEmails(ArticleGuid).Rows) { if (!SendTo.Contains(row["UserEmail"].ToString())) { SendTo.Add(row["UserEmail"].ToString()); } } foreach (DataRow row in emailsTableAdapter.GetUnsubscribedEmails(ArticleGuid, this.InstanceGuid).Rows) { SendTo.Remove(row["UserEmail"].ToString()); } string SendToList = string.Empty; bool separated = false; for (int i = 0; i < SendTo.Count; i++) { if (!separated && !admins.Contains(SendTo[i].ToString())) { SendToList += "<br><br>Commentors:<br>" + SendTo[i].ToString(); separated = true; } else { SendToList += ", " + SendTo[i].ToString(); } } SendToList = SendToList.Remove(0, 1); if (SendTo.Count > 0) { for (int i = 0; i < SendTo.Count; i++) { subj = (this.AlternateId != string.Empty) ? this.AlternateId : HttpUtility.HtmlEncode(Utils.ShortCommentText(TextBoxComment.Text, 50)); StringBuilder body = new StringBuilder((string)this.GetLocalResourceObject("EmailBody_Request")); body.Replace("{OrgName}", currOrganization.Name); body.Replace("{InstName}", currInstance.Name); body.Replace("{ArticleName}", subj); body.Replace("{ArticleUrl}", siteUrl + string.Format(CultureInfo.CurrentCulture, "?i={0}&t={1}", this.InstanceGuid.ToString("N"), newId.ToString("N"))); body.Replace("{ArticleText}", HttpUtility.HtmlEncode(TextBoxComment.Text)); body.Replace("{AuthorName}", TextBoxName.Text); body.Replace("{AuthorEmail}", string.IsNullOrEmpty(TextBoxEmail.Text) ? string.Empty : string.Format(CultureInfo.CurrentCulture, "<a href=\"mailto:{0}\" target=\"_blank\">{0}</a>", TextBoxEmail.Text)); body.Replace("{ImageUrl}", siteUrl + Micajah.Common.Configuration.FrameworkConfiguration.Current.WebApplication.Copyright.CompanyLogoImageUrl); if (body.Length > 0) { string encrypted = Utils.Encrypt(String.Format("{0}&{1}&{2}&{3}&{4}", SendTo[i].ToString(), 1, commentDataTable[0].CommentId.ToString(CultureInfo.InvariantCulture), InstanceGuid.ToString(), UserContext.SelectedOrganizationId.ToString()), "Dshd*&^*@dsdss", "237w&@2d", "SHA1", 2, "&s2hfyDjuf372*73", 256); string url = siteUrl + String.Format("Unsubscribe.aspx?token={0}", encrypted); body.Replace("{UnsubscribeFromArticleUrl}", url); encrypted = Utils.Encrypt(String.Format("{0}&{1}&{2}&{3}&{4}", SendTo[i].ToString(), 2, commentDataTable[0].CommentId.ToString(CultureInfo.InvariantCulture), InstanceGuid.ToString(), UserContext.SelectedOrganizationId.ToString()), "Dshd*&^*@dsdss", "237w&@2d", "SHA1", 2, "&s2hfyDjuf372*73", 256); url = siteUrl + String.Format("Unsubscribe.aspx?token={0}", encrypted); body.Replace("{UnsubscribeFromAllUrl}", url); if (admins.Contains(SendTo[i])) { body.Replace("{SendToList}", "This message was also sent to:<br>" + SendToList); } else { body.Replace("{SendToList}", string.Empty); } Utils.SendEmail("*****@*****.**", SendTo[i].ToString(), string.Format((string)this.GetLocalResourceObject("EmailSubjectRequest"), subj), body.ToString(), true, Micajah.Common.Configuration.FrameworkConfiguration.Current.WebApplication.Email.SmtpServer, true); } } } } ResetData(); } } } else { // post to article MainDataSet.CommentDataTable commentDataTable = taComment.InsertComment(this.ArticleGuid, TextBoxName.Text, TextBoxEmail.Text, string.Format("{0} ({1})", Request.UserHostName, Request.UserHostAddress), HttpUtility.HtmlEncode(Utils.ShortCommentText(TextBoxComment.Text, 50)), HttpUtility.HtmlEncode(TextBoxComment.Text), false, true, dtNow, true); if (commentDataTable != null && commentDataTable.Rows.Count > 0) { if (CommentPosted != null) { CommentPosted(this, new ArticleEventArgs(this.ArticleGuid, false)); } MainDataSet.ArticleRow articleRow = this.GetCurrentArticle(); if (currOrganization != null && articleRow != null && !articleRow.IsUpdatedByNull() && currInstance != null) { string author = string.Empty, subj; subj = string.Format((string)this.GetLocalResourceObject("EmailSubjectComment"), articleRow.Subject); System.Data.DataRow mcuser = Micajah.Common.Bll.Providers.UserProvider.GetUserRow(articleRow.UpdatedBy, currOrganization.OrganizationId); if (mcuser != null) { author = (string)mcuser["Email"]; } Micajah.Common.Dal.OrganizationDataSet.UserDataTable users = Micajah.Common.Bll.Providers.UserProvider.GetUsers( currOrganization.OrganizationId, this.InstanceGuid, new string[] { "InstAdmin" }); ArrayList admins = new ArrayList(); ArrayList SendTo = new ArrayList(); admins.AddRange(this.InputListAdmin); foreach (Micajah.Common.Dal.OrganizationDataSet.UserRow row in users) { admins.Add(row.Email); } SendTo.AddRange(admins); if (!string.IsNullOrEmpty(author) && !SendTo.Contains(author)) { SendTo.Add(author); } MainDataSetTableAdapters.EmailsTableAdapter emailsTableAdapter = new MainDataSetTableAdapters.EmailsTableAdapter(); foreach (DataRow row in emailsTableAdapter.GetArticleEmails(ArticleGuid).Rows) { if (!SendTo.Contains(row["UserEmail"].ToString())) { SendTo.Add(row["UserEmail"].ToString()); } } foreach (DataRow row in emailsTableAdapter.GetUnsubscribedEmails(ArticleGuid, this.InstanceGuid).Rows) { SendTo.Remove(row["UserEmail"].ToString()); } string SendToList = string.Empty; bool separated = false; for (int i = 0; i < SendTo.Count; i++) { if (!separated && !admins.Contains(SendTo[i].ToString())) { SendToList += "<br><br>Commentors:<br>" + SendTo[i].ToString(); separated = true; } else { SendToList += ", " + SendTo[i].ToString(); } } SendToList = SendToList.Remove(0, 1); if (SendTo.Count > 0) { for (int i = 0; i < SendTo.Count; i++) { StringBuilder body = new StringBuilder((string)this.GetLocalResourceObject("EmailBody_PostToArticle")); body.Replace("{OrgName}", currOrganization.Name); body.Replace("{InstName}", currInstance.Name); body.Replace("{ArticleName}", articleRow.Subject); body.Replace("{ArticleUrl}", siteUrl + string.Format(CultureInfo.CurrentCulture, "?i={0}&t={1}", this.InstanceGuid.ToString("N"), this.ArticleGuid.ToString("N"))); body.Replace("{ArticleText}", HttpUtility.HtmlEncode(TextBoxComment.Text)); body.Replace("{AuthorName}", TextBoxName.Text); body.Replace("{AuthorEmail}", string.IsNullOrEmpty(TextBoxEmail.Text) ? string.Empty : string.Format(CultureInfo.CurrentCulture, "<a href=\"mailto:{0}\" target=\"_blank\">{0}</a>", TextBoxEmail.Text)); body.Replace("{ImageUrl}", siteUrl + Micajah.Common.Configuration.FrameworkConfiguration.Current.WebApplication.Copyright.CompanyLogoImageUrl); if (admins.Contains(SendTo[i])) { body.Replace("{SendToList}", "This message was also sent to:<br>" + SendToList); } else { body.Replace("{SendToList}", string.Empty); } if (body.Length > 0) { string encrypted = Utils.Encrypt(String.Format("{0}&{1}&{2}&{3}&{4}", SendTo[i].ToString(), 1, commentDataTable[0].CommentId.ToString(CultureInfo.InvariantCulture), InstanceGuid.ToString(), UserContext.SelectedOrganizationId.ToString()), "Dshd*&^*@dsdss", "237w&@2d", "SHA1", 2, "&s2hfyDjuf372*73", 256); string url = siteUrl + String.Format("Unsubscribe.aspx?token={0}", encrypted); body.Replace("{UnsubscribeFromArticleUrl}", url); encrypted = Utils.Encrypt(String.Format("{0}&{1}&{2}&{3}&{4}", SendTo[i].ToString(), 2, commentDataTable[0].CommentId.ToString(CultureInfo.InvariantCulture), InstanceGuid.ToString(), UserContext.SelectedOrganizationId.ToString()), "Dshd*&^*@dsdss", "237w&@2d", "SHA1", 2, "&s2hfyDjuf372*73", 256); url = siteUrl + String.Format("Unsubscribe.aspx?token={0}", encrypted); body.Replace("{UnsubscribeFromAllUrl}", url); Utils.SendEmail("*****@*****.**", SendTo[i].ToString(), subj, body.ToString(), true, Micajah.Common.Configuration.FrameworkConfiguration.Current.WebApplication.Email.SmtpServer, true); } } } } ResetData(); } } } } }
private void DoAricleView(MainDataSet.ArticleRow articleRow) { if (articleRow != null) { this.ArticleTableAdapter.IncReview(articleRow.ArticleGuid); ImageListCtrl.ArticleGuid = articleRow.ArticleGuid; FileListCtrl.ArticleGuid = articleRow.ArticleGuid; ShowArticleView(); HyperLinkPreview.Attributes["onclick"] = string.Format(CultureInfo.InvariantCulture, "javascript:window.open('default.aspx?i={0}&t={1}&popup=true', '_blank', 'location=0,menubar=0,resizable=1,scrollbars=1,status=0,titlebar=0,toolbar=0,top=' + Mp_GetPopupPositionY(event) + ',left=' + Mp_GetPopupPositionX({2}) + ',width={2},height={3}');", UserContext.Current.SelectedInstance.InstanceId.ToString("N"), articleRow.ArticleGuid.ToString("N"), Micajah.Common.Configuration.FrameworkConfiguration.Current.WebApplication.MasterPage.HelpLink.WindowWidth, Micajah.Common.Configuration.FrameworkConfiguration.Current.WebApplication.MasterPage.HelpLink.WindowHeight); if (articleRow.Deleted) { ButtonInactive.Text = (string)this.GetLocalResourceObject("ActivateArticle"); ButtonInactive.OnClientClick = (string)this.GetLocalResourceObject("ConfirmActivate"); } else { ButtonInactive.Text = (string)this.GetLocalResourceObject("InactivateArticle"); ButtonInactive.OnClientClick = string.Empty; } Master.CustomName = articleRow.Subject; //Master.Title = string.Format("{0} {1} KB - {2}", this.ArticleTableAdapter.GetOrganizationName(this.Master.InstanceGuid), this.ArticleTableAdapter.GetInstanceName(this.Master.InstanceGuid), articleRow.Subject); Master.Title = articleRow.Subject; //Master.VisiblePageTitle = false; litSubject.Text = articleRow.Subject; string body = this.ArticleTableAdapter.GetBody(articleRow.ArticleGuid); if (!string.IsNullOrEmpty(body)) { body = body.Replace("<h2>", "<h2><span>"); body = body.Replace("<H2>", "<H2><span>"); body = body.Replace("</h2>", "</span></h2>"); body = body.Replace("</H2>", "</span></H2>"); divBody.InnerHtml = body;//HttpUtility.HtmlDecode(body); } HtmlMeta metaDescription = new HtmlMeta(); metaDescription.Name = "Description"; metaDescription.Content = articleRow.SearchDesc; Page.Header.Controls.Add(metaDescription); Guid userId = Guid.Empty; if (!articleRow.IsCreatedByNull()) { userId = articleRow.CreatedBy; } if (!articleRow.IsUpdatedByNull()) { userId = articleRow.UpdatedBy; } //if (userId == Guid.Empty) // PostCommentCtrl.ReceiverName = Utils.GetInstanceUserName(UserContext.Current.SelectedInstance.InstanceId); //else //{ // Micajah.Common.Dal.OrganizationDataSet.UserRow userRow = Micajah.Common.Bll.Providers.UserProvider.GetUserRow(userId); // if (userRow != null) // PostCommentCtrl.ReceiverName = userRow.FirstName + " " + userRow.LastName; //} PostCommentCtrl.InstanceGuid = UserContext.Current.SelectedInstance.InstanceId; PostCommentCtrl.ArticleGuid = articleRow.ArticleGuid; CommentsListCtrl.ArticleGuid = articleRow.ArticleGuid; CommentsListCtrl.DataBind(); } }