예제 #1
0
        protected void btnSubmitComment_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                //TODO: we're allowing anonymous comments, we should have a setting for this.
                var objSecurity = new DotNetNuke.Security.PortalSecurity();
                if (UseForumComments)
                {
                    int?categoryForumId = GetCategoryForumId();
                    if (categoryForumId.HasValue)
                    {
                        int threadId = ForumProvider.GetInstance(PortalId).AddComment(categoryForumId.Value, VersionInfoObject.AuthorUserId,
                                                                                      VersionInfoObject.Name, VersionInfoObject.Description, GetItemLinkUrl(VersionInfoObject.ItemId, PortalId),
                                                                                      objSecurity.InputFilter(txtComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting), UserId,
                                                                                      Request.UserHostAddress);

                        var threadIdSetting = new ItemVersionSetting(Setting.CommentForumThreadId)
                        {
                            PropertyValue = threadId.ToString(CultureInfo.InvariantCulture),
                            ItemVersionId = VersionInfoObject.ItemVersionId
                        };
                        threadIdSetting.Save();
                        //VersionInfoObject.VersionSettings.Add(threadIdSetting);
                        //VersionInfoObject.Save(VersionInfoObject.AuthorUserId);
                        Response.Redirect(ForumProvider.GetInstance(PortalId).GetThreadUrl(threadId), true);
                    }
                }
                else
                {
                    if (txtHumanTest.Text.Trim().ToLower() == "human")
                    {
                        string urlText = txtUrlComment.Text;
                        if (urlText.Trim().Length > 0 && !urlText.StartsWith("http://", StringComparison.OrdinalIgnoreCase) && !urlText.StartsWith("https://", StringComparison.OrdinalIgnoreCase))
                        {
                            urlText = "http://" + urlText;
                        }

                        int approvalStatusId = ApprovalStatus.Waiting.GetId();
                        if (IsAdmin)
                        {//automatically approve admin comments
                            approvalStatusId = ApprovalStatus.Approved.GetId();
                        }

                        //TODO: format the comment text
                        UserFeedback.Comment.AddComment(VersionInfoObject.ItemVersionId, (UserId == -1 ? null : (int?)UserId),
                                                        objSecurity.InputFilter(txtComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting), approvalStatusId,
                                                        null, objSecurity.InputFilter(txtFirstNameComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting),
                                                        objSecurity.InputFilter(txtLastNameComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting),
                                                        objSecurity.InputFilter(txtEmailAddressComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting),
                                                        objSecurity.InputFilter(urlText, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting),
                                                        DataProvider.ModuleQualifier);

                        //see if comment notification is turned on. Notify the ItemVersion.Author
                        if (IsCommentAuthorNotificationEnabled)
                        {
                            var uc = new UserController();

                            UserInfo ui = uc.GetUser(PortalId, VersionInfoObject.AuthorUserId);

                            if (ui != null)
                            {
                                string emailBody = Localization.GetString("CommentNotificationEmail.Text", LocalResourceFile);
                                emailBody = String.Format(emailBody
                                                          , VersionInfoObject.Name
                                                          , GetItemLinkUrlExternal(VersionInfoObject.ItemId)
                                                          , objSecurity.InputFilter(txtFirstNameComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting)
                                                          , objSecurity.InputFilter(txtLastNameComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting)
                                                          , objSecurity.InputFilter(txtEmailAddressComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting)
                                                          , objSecurity.InputFilter(txtComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting)

                                                          );

                                string emailSubject = Localization.GetString("CommentNotificationEmailSubject.Text", LocalResourceFile);
                                emailSubject = String.Format(emailSubject, VersionInfoObject.Name);

                                Mail.SendMail(PortalSettings.Email, ui.Email, string.Empty, emailSubject, emailBody, string.Empty, "HTML", string.Empty, string.Empty, string.Empty, string.Empty);
                            }
                        }


                        ConfigureComments();

                        pnlCommentEntry.Visible        = false;
                        pnlCommentConfirmation.Visible = true;
                    }
                }
            }
        }
        protected void btnSubmitComment_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                //TODO: we're allowing anonymous comments, we should have a setting for this.
                var objSecurity = new DotNetNuke.Security.PortalSecurity();
                if (UseForumComments)
                {
                    int? categoryForumId = GetCategoryForumId();
                    if (categoryForumId.HasValue)
                    {
                        int threadId = ForumProvider.GetInstance(PortalId).AddComment(categoryForumId.Value, VersionInfoObject.AuthorUserId,
                            VersionInfoObject.Name, VersionInfoObject.Description, GetItemLinkUrl(VersionInfoObject.ItemId, PortalId),
                            objSecurity.InputFilter(txtComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting), UserId,
                            Request.UserHostAddress);

                        var threadIdSetting = new ItemVersionSetting(Setting.CommentForumThreadId)
                                                  {
                                                      PropertyValue = threadId.ToString(CultureInfo.InvariantCulture),
                                                      ItemVersionId = VersionInfoObject.ItemVersionId
                                                  };
                        threadIdSetting.Save();
                        //VersionInfoObject.VersionSettings.Add(threadIdSetting);
                        //VersionInfoObject.Save(VersionInfoObject.AuthorUserId);
                        Response.Redirect(ForumProvider.GetInstance(PortalId).GetThreadUrl(threadId), true);
                    }
                }
                else
                {
                    if (txtHumanTest.Text.Trim().ToLower() == "human")
                    {
                        string urlText = txtUrlComment.Text;
                        if (urlText.Trim().Length > 0 && !urlText.StartsWith("http://", StringComparison.OrdinalIgnoreCase) && !urlText.StartsWith("https://", StringComparison.OrdinalIgnoreCase))
                        {
                            urlText = "http://" + urlText;
                        }

                        int approvalStatusId = ApprovalStatus.Waiting.GetId();
                        if (IsAdmin)
                        {//automatically approve admin comments
                            approvalStatusId = ApprovalStatus.Approved.GetId();
                        }

                        //TODO: format the comment text
                        UserFeedback.Comment.AddComment(VersionInfoObject.ItemVersionId, (UserId == -1 ? null : (int?)UserId),
                            objSecurity.InputFilter(txtComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting), approvalStatusId,
                            null, objSecurity.InputFilter(txtFirstNameComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting),
                            objSecurity.InputFilter(txtLastNameComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting),
                            objSecurity.InputFilter(txtEmailAddressComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting),
                            objSecurity.InputFilter(urlText, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting),
                            DataProvider.ModuleQualifier);

                        //see if comment notification is turned on. Notify the ItemVersion.Author
                        if (IsCommentAuthorNotificationEnabled)
                        {
                            var uc = new UserController();

                            UserInfo ui = uc.GetUser(PortalId, VersionInfoObject.AuthorUserId);

                            if (ui != null)
                            {
                                string emailBody = Localization.GetString("CommentNotificationEmail.Text", LocalResourceFile);
                                emailBody = String.Format(emailBody
                                    , VersionInfoObject.Name
                                    , GetItemLinkUrlExternal(VersionInfoObject.ItemId)
                                    , objSecurity.InputFilter(txtFirstNameComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting)
                                    , objSecurity.InputFilter(txtLastNameComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting)
                                    , objSecurity.InputFilter(txtEmailAddressComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting)
                                    , objSecurity.InputFilter(txtComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting)

                                    );

                                string emailSubject = Localization.GetString("CommentNotificationEmailSubject.Text", LocalResourceFile);
                                emailSubject = String.Format(emailSubject, VersionInfoObject.Name);

                                Mail.SendMail(PortalSettings.Email, ui.Email, string.Empty, emailSubject, emailBody, string.Empty, "HTML", string.Empty, string.Empty, string.Empty, string.Empty);
                            }
                        }

                        ConfigureComments();

                        pnlCommentEntry.Visible = false;
                        pnlCommentConfirmation.Visible = true;
                    }
                }
            }
        }