Skip to content

Commit 236abd5

Browse files
authored
Merge pull request #977 from DNNCommunity/dev
Sync dev and master
2 parents 1b168a4 + 9eed248 commit 236abd5

File tree

7 files changed

+66
-39
lines changed

7 files changed

+66
-39
lines changed

Dnn.CommunityForums/Controllers/ForumController.cs

+14-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
using System.Text;
2525
using System.Xml;
2626
using DotNetNuke.Data;
27+
using DotNetNuke.Modules.ActiveForums.API;
2728
using DotNetNuke.Modules.ActiveForums.Data;
2829
using Microsoft.ApplicationBlocks.Data;
2930

@@ -472,7 +473,19 @@ public static int CreateSocialGroupForum(int portalId, int moduleId, int socialG
472473
}
473474
public static int Forum_GetByTopicId(int TopicId)
474475
{
475-
return new DotNetNuke.Data.SqlDataProvider().ExecuteScalar<int>( "activeforums_ForumGetByTopicId", TopicId);
476+
return new DotNetNuke.Data.SqlDataProvider().ExecuteScalar<int>("activeforums_ForumGetByTopicId", TopicId);
477+
}
478+
public static DateTime Forum_GetLastReadTopicByUser(int ForumId, int UserId)
479+
{
480+
try
481+
{
482+
return DataContext.Instance().ExecuteQuery<DateTime>(System.Data.CommandType.Text, "SELECT LastAccessDate FROM {databaseOwner}{objectQualifier}activeforums_Forums_Tracking WHERE ForumId = @0 AND UserId = @1", ForumId, UserId).FirstOrDefault();
483+
}
484+
catch (Exception ex)
485+
{
486+
Exceptions.LogException(ex);
487+
return DateTime.MinValue;
488+
}
476489
}
477490
internal static bool RecalculateTopicPointers(int forumId)
478491
{

Dnn.CommunityForums/Controllers/ReplyController.cs

+6-2
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ public void Reply_Delete(int PortalId, int ForumId, int TopicId, int ReplyId, in
5858
{
5959
var ri = GetById(ReplyId);
6060
DataProvider.Instance().Reply_Delete(ForumId, TopicId, ReplyId, DelBehavior);
61+
DotNetNuke.Modules.ActiveForums.Controllers.ForumController.UpdateForumLastUpdates(ForumId);
62+
6163
DataCache.ContentCacheClear(ri.ModuleId, string.Format(CacheKeys.ForumInfo, ri.ModuleId, ForumId));
6264
DataCache.CacheClearPrefix(ri.ModuleId, string.Format(CacheKeys.ForumViewPrefix, ri.ModuleId));
6365
DataCache.CacheClearPrefix(ri.ModuleId, string.Format(CacheKeys.TopicViewPrefix, ri.ModuleId));
@@ -126,7 +128,9 @@ public int Reply_Save(int PortalId, int ModuleId, DotNetNuke.Modules.ActiveForum
126128
DataCache.CacheClearPrefix(ri.ModuleId, string.Format(CacheKeys.ForumViewPrefix, ri.ModuleId));
127129
DataCache.CacheClearPrefix(ri.ModuleId, string.Format(CacheKeys.TopicViewPrefix, ri.ModuleId));
128130
DataCache.CacheClearPrefix(ri.ModuleId, string.Format(CacheKeys.TopicsViewPrefix, ri.ModuleId));
129-
return Convert.ToInt32(DataProvider.Instance().Reply_Save(PortalId, ri.TopicId, ri.ReplyId, ri.ReplyToId, ri.StatusId, ri.IsApproved, ri.IsDeleted, ri.Content.Subject.Trim(), ri.Content.Body.Trim(), ri.Content.DateCreated, ri.Content.DateUpdated, ri.Content.AuthorId, ri.Content.AuthorName, ri.Content.IPAddress));
131+
int replyId = Convert.ToInt32(DataProvider.Instance().Reply_Save(PortalId, ri.TopicId, ri.ReplyId, ri.ReplyToId, ri.StatusId, ri.IsApproved, ri.IsDeleted, ri.Content.Subject.Trim(), ri.Content.Body.Trim(), ri.Content.DateCreated, ri.Content.DateUpdated, ri.Content.AuthorId, ri.Content.AuthorName, ri.Content.IPAddress));
132+
DotNetNuke.Modules.ActiveForums.Controllers.ForumController.UpdateForumLastUpdates(ri.ForumId);
133+
return replyId;
130134
}
131135
public DotNetNuke.Modules.ActiveForums.Entities.ReplyInfo ApproveReply(int PortalId, int TabId, int ModuleId, int ForumId, int TopicId, int ReplyId)
132136
{
@@ -139,7 +143,7 @@ public DotNetNuke.Modules.ActiveForums.Entities.ReplyInfo ApproveReply(int Porta
139143
}
140144
reply.IsApproved = true;
141145
rc.Reply_Save(PortalId, ModuleId, reply);
142-
DotNetNuke.Modules.ActiveForums.Controllers.TopicController.SaveToForum(ModuleId, ForumId, TopicId, ReplyId);
146+
DotNetNuke.Modules.ActiveForums.Controllers.TopicController.SaveToForum(ModuleId, ForumId, TopicId, ReplyId);
143147

144148
if (forum.ModApproveTemplateId > 0 & reply.Author.AuthorId > 0)
145149
{

Dnn.CommunityForums/Controllers/TopicController.cs

+5-2
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
using System.Runtime.InteropServices;
3434
using System.Text.RegularExpressions;
3535
using System.Web;
36+
using System.Web.Http.Controllers;
3637
using System.Xml.Linq;
3738

3839
namespace DotNetNuke.Modules.ActiveForums.Controllers
@@ -87,6 +88,7 @@ public static int QuickCreate(int PortalId, int ModuleId, int ForumId, string Su
8788
if (topicId > 0)
8889
{
8990
DotNetNuke.Modules.ActiveForums.Controllers.TopicController.SaveToForum(ModuleId, ForumId, topicId, -1);
91+
9092
if (UserId > 0)
9193
{
9294
//TODO: update this to be consistent with reply count
@@ -173,14 +175,15 @@ public static void Move(int TopicId, int NewForumId)
173175
DataCache.CacheClearPrefix(ti.ModuleId, string.Format(CacheKeys.TopicViewPrefix, ti.ModuleId));
174176
DataCache.CacheClearPrefix(ti.ModuleId, string.Format(CacheKeys.TopicsViewPrefix, ti.ModuleId));
175177
}
176-
public static int SaveToForum(int ModuleId, int ForumId, int TopicId, int LastReplyId = -1)
178+
public static void SaveToForum(int ModuleId, int ForumId, int TopicId, int LastReplyId = -1)
177179
{
180+
DataProvider.Instance().Topics_SaveToForum(ForumId, TopicId, LastReplyId);
178181
Utilities.UpdateModuleLastContentModifiedOnDate(ModuleId);
182+
DotNetNuke.Modules.ActiveForums.Controllers.ForumController.UpdateForumLastUpdates(ForumId);
179183
DataCache.ContentCacheClear(ModuleId, string.Format(CacheKeys.ForumInfo, ModuleId, ForumId));
180184
DataCache.CacheClearPrefix(ModuleId, string.Format(CacheKeys.ForumViewPrefix, ModuleId));
181185
DataCache.CacheClearPrefix(ModuleId, string.Format(CacheKeys.TopicViewPrefix, ModuleId));
182186
DataCache.CacheClearPrefix(ModuleId, string.Format(CacheKeys.TopicsViewPrefix, ModuleId));
183-
return Convert.ToInt32(DataProvider.Instance().Topics_SaveToForum(ForumId, TopicId, LastReplyId));
184187
}
185188
public static int Save(DotNetNuke.Modules.ActiveForums.Entities.TopicInfo ti)
186189
{

Dnn.CommunityForums/CustomControls/UserControls/ForumView.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,7 @@ private string ParseForumRow(string Template, DotNetNuke.Modules.ActiveForums.En
390390
bool canView = DotNetNuke.Modules.ActiveForums.Controllers.PermissionController.HasPerm(fi.Security.View, ForumUser.UserRoles);
391391
bool canSubscribe = DotNetNuke.Modules.ActiveForums.Controllers.PermissionController.HasPerm(fi.Security.Subscribe, ForumUser.UserRoles);
392392
bool canRead = DotNetNuke.Modules.ActiveForums.Controllers.PermissionController.HasPerm(fi.Security.Read, ForumUser.UserRoles);
393-
string sIcon = TemplateUtils.ShowIcon(canView, fi.ForumID, CurrentUserId, fi.LastPostDateTime, fi.LastRead, fi.LastPostID);
393+
string sIcon = TemplateUtils.ShowIcon(canView, fi.ForumID, CurrentUserId, fi.LastPostDateTime, DotNetNuke.Modules.ActiveForums.Controllers.ForumController.Forum_GetLastReadTopicByUser(fi.ForumID, CurrentUserId), fi.LastPostID);
394394
string sIconImage = "<img alt=\"" + fi.ForumName + "\" src=\"" + ThemePath + "images/" + sIcon + "\" />";
395395

396396
if (Template.Contains("[FORUMICON]"))

Dnn.CommunityForums/ReleaseNotes.txt

+3-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,9 @@
106106

107107
<h4>Bug Fixes</h4>
108108
<ul>
109-
<li>BUG: Not redirected to new page after submitting edits to an existing reply (<a href="https://github.com/DNNCommunity/Dnn.CommunityForums/issues/963">Issue 963</a>, thanks <a href="https://github.com/johnhenley" target="_blank">@johnhenley</a>!)</li>
109+
<li>BUG: Email notifications being sent for topics that have not cleared moderation (<a href="https://github.com/DNNCommunity/Dnn.CommunityForums/issues/971">Issue 971</a>, thanks <a href="https://github.com/johnhenley" target="_blank">@johnhenley</a>!)</li>
110+
<li>BUG: After Update to 8.1.1 Visited / Read forums icons not reflecting actual status anymore. (<a href="https://github.com/DNNCommunity/Dnn.CommunityForums/issues/973">Issue 973</a>, thanks <a href="https://github.com/johnhenley" target="_blank">@johnhenley</a>!)</li>
111+
<li>BUG: Redirect after editing a post comment (<a href="https://github.com/DNNCommunity/Dnn.CommunityForums/issues/962">Issue 962</a>, thanks <a href="https://github.com/johnhenley" target="_blank">@johnhenley</a>!)</li>
110112
<li>BUG: Clicking Save in forum control panel restores default security when forum is not inheriting security from group (<a href="https://github.com/DNNCommunity/Dnn.CommunityForums/issues/964">Issue 964</a>, thanks <a href="https://github.com/johnhenley" target="_blank">@johnhenley</a>!)</li>
111113
<!--<li>FIXED: (<a href="https://github.com/DNNCommunity/Dnn.CommunityForums/issues/">Issue </a>, thanks <a href="https://github.com/" target="_blank">@</a>!)</li>-->
112114
</ul>

Dnn.CommunityForums/components/Topics/TopicsController.cs

+11-2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
using System.Data;
2323
using System.Data.SqlTypes;
2424
using System.Linq;
25+
using System.Runtime.Remoting.Messaging;
2526
using System.Text.RegularExpressions;
2627
using DotNetNuke.Common.Controls;
2728
using DotNetNuke.Entities.Modules;
@@ -48,9 +49,17 @@ public class TopicsController : DotNetNuke.Entities.Modules.ModuleSearchBase, Do
4849
[Obsolete(message: "Deprecated in Community Forums. Scheduled removal in 10.00.00. Use DotNetNuke.Modules.ActiveForums.Controllers.TopicController.Save(TopicInfo ti)")]
4950
public int TopicSave(int PortalId, int ModuleId, DotNetNuke.Modules.ActiveForums.Entities.TopicInfo ti) => DotNetNuke.Modules.ActiveForums.Controllers.TopicController.Save(ti);
5051
[Obsolete(message: "Deprecated in Community Forums. Scheduled removal in 10.00.00. Use DotNetNuke.Modules.ActiveForums.Controllers.TopicController.SaveToForum(int ModuleId, int ForumId, int TopicId, int LastReplyId)")]
51-
public int Topics_SaveToForum(int ForumId, int TopicId, int PortalId, int ModuleId) => DotNetNuke.Modules.ActiveForums.Controllers.TopicController.SaveToForum(ModuleId, ForumId, TopicId, -1);
52+
public int Topics_SaveToForum(int ForumId, int TopicId, int PortalId, int ModuleId)
53+
{
54+
DotNetNuke.Modules.ActiveForums.Controllers.TopicController.SaveToForum(ModuleId, ForumId, TopicId, -1);
55+
return -1;
56+
}
5257
[Obsolete(message: "Deprecated in Community Forums. Scheduled removal in 10.00.00. Use DotNetNuke.Modules.ActiveForums.Controllers.TopicController.SaveToForum(int ModuleId, int ForumId, int TopicId, int LastReplyId)")]
53-
public int Topics_SaveToForum(int ForumId, int TopicId, int PortalId, int ModuleId, int LastReplyId) => DotNetNuke.Modules.ActiveForums.Controllers.TopicController.SaveToForum(ModuleId, ForumId, TopicId, LastReplyId);
58+
public int Topics_SaveToForum(int ForumId, int TopicId, int PortalId, int ModuleId, int LastReplyId)
59+
{
60+
Controllers.TopicController.SaveToForum(ModuleId, ForumId, TopicId, LastReplyId);
61+
return -1;
62+
}
5463
[Obsolete("Deprecated in Community Forums. Scheduled removal in 10.00.00. Use DotNetNuke.Modules.ActiveForums.Controllers.TopicController.GetById(int TopicId)")]
5564
public DotNetNuke.Modules.ActiveForums.Entities.TopicInfo Topics_Get(int PortalId, int ModuleId, int TopicId) => new DotNetNuke.Modules.ActiveForums.Controllers.TopicController().GetById(TopicId);
5665
[Obsolete("Deprecated in Community Forums. Scheduled removal in 10.00.00. Use DotNetNuke.Modules.ActiveForums.Controllers.TopicController.GetById(int TopicId)")]

Dnn.CommunityForums/controls/af_post.ascx.cs

+26-30
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ protected override void OnInit(EventArgs e)
9999
{
100100
if (!_canEdit && (Request.Params[ParamKeys.action].ToLowerInvariant() == PostActions.TopicEdit || Request.Params[ParamKeys.action].ToLowerInvariant() == PostActions.ReplyEdit))
101101
Response.Redirect(NavigateUrl(TabId));
102-
}
102+
}
103103

104104
if (CanCreate == false && CanReply == false)
105105
Response.Redirect(NavigateUrl(TabId, "", "ctl=login") + "?returnurl=" + Server.UrlEncode(Request.RawUrl));
@@ -819,28 +819,18 @@ private void SaveTopic()
819819
DataCache.CacheClearPrefix(ForumModuleId, string.Format(CacheKeys.TopicsViewPrefix, ForumModuleId));
820820
DataCache.CacheClearPrefix(ForumModuleId, string.Format(CacheKeys.ForumViewPrefix, ForumModuleId));
821821

822-
if (ti.IsApproved == false)
822+
if (!ti.IsApproved)
823823
{
824824
DotNetNuke.Modules.ActiveForums.Controllers.TopicController.QueueUnapprovedTopicAfterAction(PortalId, TabId, ForumModuleId, _fi.ForumGroupId, ForumId, TopicId, 0, ti.Content.AuthorId);
825-
826825
string[] @params = { ParamKeys.ForumId + "=" + ForumId, ParamKeys.ViewType + "=confirmaction", ParamKeys.ConfirmActionId + "=" + ConfirmActions.MessagePending };
827826
Response.Redirect(NavigateUrl(ForumTabId, "", @params), false);
828-
}
829-
if (!_isEdit)
830-
{
831-
DotNetNuke.Modules.ActiveForums.Controllers.TopicController.QueueApprovedTopicAfterAction(PortalId, TabId, ModuleId, ForumInfo.ForumGroupId, ForumId, TopicId, 0, ti.Content.AuthorId);
832-
}
833-
834-
if (ti.IsApproved == false)
835-
{
836-
string[] @params = { ParamKeys.ForumId + "=" + ForumId, ParamKeys.ViewType + "=confirmaction", ParamKeys.ConfirmActionId + "=" + ConfirmActions.MessagePending };
837-
Response.Redirect(NavigateUrl(TabId, "", @params), false);
827+
Context.ApplicationInstance.CompleteRequest();
838828
}
839829
else
840830
{
841-
if (ti != null)
831+
if (!_isEdit)
842832
{
843-
ti.TopicId = TopicId;
833+
DotNetNuke.Modules.ActiveForums.Controllers.TopicController.QueueApprovedTopicAfterAction(PortalId, TabId, ModuleId, ForumInfo.ForumGroupId, ForumId, TopicId, 0, ti.Content.AuthorId);
844834
}
845835
ControlUtils ctlUtils = new ControlUtils();
846836
string sUrl = ctlUtils.BuildUrl(TabId, ForumModuleId, ForumInfo.ForumGroup.PrefixURL, ForumInfo.PrefixURL, ForumInfo.ForumGroupId, ForumInfo.ForumID, TopicId, ti.TopicUrl, -1, -1, string.Empty, 1, -1, SocialGroupId);
@@ -849,6 +839,7 @@ private void SaveTopic()
849839
sUrl = Utilities.NavigateURL(ForumTabId, "", ParamKeys.TopicId + "=" + TopicId);
850840
}
851841
Response.Redirect(sUrl, false);
842+
Context.ApplicationInstance.CompleteRequest();
852843
}
853844
}
854845
catch (Exception ex)
@@ -972,27 +963,32 @@ private void SaveReply()
972963
new SubscriptionController().Subscription_Update(PortalId, ForumModuleId, ForumId, TopicId, 1, authorId, ForumUser.UserRoles);
973964
}
974965
}
975-
if (ri.IsApproved == false)
966+
if (!ri.IsApproved)
976967
{
977968
DotNetNuke.Modules.ActiveForums.Controllers.ReplyController.QueueUnapprovedReplyAfterAction(PortalId, TabId, ForumModuleId, _fi.ForumGroupId, ForumId, TopicId, tmpReplyId, ri.Content.AuthorId);
978969

979970
string[] @params = { ParamKeys.ForumId + "=" + ForumId, ParamKeys.TopicId + "=" + TopicId, ParamKeys.ViewType + "=confirmaction", ParamKeys.ConfirmActionId + "=" + ConfirmActions.MessagePending };
980971
Response.Redirect(Utilities.NavigateURL(TabId, "", @params), false);
972+
Context.ApplicationInstance.CompleteRequest();
981973
}
982-
if (!_isEdit)
983-
{
984-
DotNetNuke.Modules.ActiveForums.Controllers.ReplyController.QueueApprovedReplyAfterAction(PortalId, TabId, ModuleId, _fi.ForumGroupId, ForumId, TopicId, tmpReplyId, ri.Content.AuthorId);
985-
}
986-
var fullURL = new ControlUtils().BuildUrl(TabId, ForumModuleId, ForumInfo.ForumGroup.PrefixURL, ForumInfo.PrefixURL, ForumInfo.ForumGroupId, ForumInfo.ForumID, TopicId, ri.Topic.TopicUrl, -1, -1, string.Empty, 1, tmpReplyId, SocialGroupId);
987-
if (fullURL.Contains("~/"))
988-
{
989-
fullURL = Utilities.NavigateURL(TabId, "", new[] { ParamKeys.TopicId + "=" + TopicId, ParamKeys.ContentJumpId + "=" + tmpReplyId });
990-
}
991-
if (fullURL.EndsWith("/"))
992-
{
993-
fullURL += Utilities.UseFriendlyURLs(ForumModuleId) ? String.Concat("#", tmpReplyId) : String.Concat("?", ParamKeys.ContentJumpId, "=", tmpReplyId);
994-
}
995-
Response.Redirect(fullURL);
974+
else
975+
{
976+
if (!_isEdit)
977+
{
978+
DotNetNuke.Modules.ActiveForums.Controllers.ReplyController.QueueApprovedReplyAfterAction(PortalId, TabId, ModuleId, _fi.ForumGroupId, ForumId, TopicId, tmpReplyId, ri.Content.AuthorId);
979+
}
980+
var fullURL = new ControlUtils().BuildUrl(TabId, ForumModuleId, ForumInfo.ForumGroup.PrefixURL, ForumInfo.PrefixURL, ForumInfo.ForumGroupId, ForumInfo.ForumID, TopicId, ri.Topic.TopicUrl, -1, -1, string.Empty, 1, tmpReplyId, SocialGroupId);
981+
if (fullURL.Contains("~/"))
982+
{
983+
fullURL = Utilities.NavigateURL(TabId, "", new[] { ParamKeys.TopicId + "=" + TopicId, ParamKeys.ContentJumpId + "=" + tmpReplyId });
984+
}
985+
if (fullURL.EndsWith("/"))
986+
{
987+
fullURL += Utilities.UseFriendlyURLs(ForumModuleId) ? String.Concat("#", tmpReplyId) : String.Concat("?", ParamKeys.ContentJumpId, "=", tmpReplyId);
988+
}
989+
Response.Redirect(fullURL, false);
990+
Context.ApplicationInstance.CompleteRequest();
991+
}
996992
}
997993
catch (Exception)
998994
{

0 commit comments

Comments
 (0)