Skip to content

Commit 45fe86b

Browse files
authored
Merge pull request #32 from juvander/AddEmailNotifySettingForDownloads
Add email notify setting for downloads
2 parents 98117e6 + d7cd9c8 commit 45fe86b

4 files changed

Lines changed: 94 additions & 15 deletions

File tree

App_LocalResources/Settings.ascx.resx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,12 @@
374374
<data name="plEmailOnComment.Text" xml:space="preserve">
375375
<value>Send Email when Comment Posted</value>
376376
</data>
377+
<data name="plEmailOnDownload.Help" xml:space="preserve">
378+
<value>If you want to receive an email when user downloads a file, check this box and enter the email address where you would like the notification sent</value>
379+
</data>
380+
<data name="plEmailOnDownload.Text" xml:space="preserve">
381+
<value>Send Email when user downloads file</value>
382+
</data>
377383
<data name="plEmailOnUpload.Help" xml:space="preserve">
378384
<value>If you want to receive an email when a new item is uploaded, check this box and enter the email address where you would like the notification sent</value>
379385
</data>

Repository.ascx.cs

Lines changed: 49 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,16 @@
4242
using DotNetNuke.UI.WebControls;
4343
using DotNetNuke.Services.Mail;
4444
using DotNetNuke.Security.Permissions;
45+
using DotNetNuke.Services.Exceptions;
4546

4647
namespace DotNetNuke.Modules.Repository
4748
{
4849

4950
public abstract class Repository : Entities.Modules.PortalModuleBase, Entities.Modules.Communications.IModuleListener
5051
{
51-
52-
#region "Controls"
53-
protected Label lblDescription;
52+
static Instrumentation.DnnLogger log = Instrumentation.DnnLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.ToString());
53+
#region "Controls"
54+
protected Label lblDescription;
5455
private DataGrid withEventsField_lstObjects;
5556
protected DataGrid lstObjects {
5657
get { return withEventsField_lstObjects; }
@@ -406,8 +407,46 @@ public void lstObjects_PageIndexChanged(object source, DataGridPageChangedEventA
406407
BindObjectList();
407408

408409
}
409-
410-
private void SendCommentNotification(RepositoryInfo objRepository, TextBox txtName, TextBox txtComment)
410+
private void SendDownloadNotification(RepositoryInfo objRepository)
411+
{
412+
try
413+
{
414+
bool emailOnDownload = false;
415+
// check to see if we need to send an email notification
416+
if (bool.TryParse(Settings["EmailOnDownload"].ToString(), out emailOnDownload) == true &&
417+
emailOnDownload == true)
418+
{
419+
string _email = Convert.ToString(Settings["EmailOnDownloadAddress"]);
420+
if (string.IsNullOrEmpty(_email) == false)
421+
{
422+
// send an email
423+
string _subject = string.Format("[{0}] New Download from Your Repository", PortalSettings.PortalName);
424+
System.Text.StringBuilder _body = new System.Text.StringBuilder();
425+
_body.Append(string.Format("A new download at {0}<br />", System.DateTime.Now));
426+
_body.Append(string.Format("by {0} ({1})<br /><br />", UserInfo.DisplayName, UserInfo.Email));
427+
_body.Append(string.Format("File {0}<br /><br />", objRepository.FileName));
428+
_body.Append("------------------------------------------------------------<br />");
429+
_body.Append(string.Format("{0}<br />", this.Request.UserHostAddress));
430+
Mail.SendMail(
431+
PortalSettings.Email,
432+
_email,
433+
"", "",
434+
Services.Mail.MailPriority.Normal,
435+
_subject,
436+
Services.Mail.MailFormat.Html,
437+
System.Text.Encoding.Default,
438+
_body.ToString(),
439+
"", "", "", "", "");
440+
}
441+
}
442+
}
443+
catch (Exception ex)
444+
{
445+
Exceptions.ProcessModuleLoadException(this, ex);
446+
}
447+
}
448+
449+
private void SendCommentNotification(RepositoryInfo objRepository, TextBox txtName, TextBox txtComment)
411450
{
412451
// check to see if we need to send an email notification
413452
if (!string.IsNullOrEmpty(Convert.ToString(Settings["EmailOnComment"]))) {
@@ -504,7 +543,8 @@ public void lstObjects_ItemCommand(object source, DataGridCommandEventArgs e)
504543
string target = oRepositoryBusinessController.GetSkinAttribute(xmlDoc, "DOWNLOAD", "Target", "NEW");
505544
oRepositoryBusinessController.DownloadFile(e.CommandArgument.ToString(), target);
506545

507-
break;
546+
SendDownloadNotification(objRepository);
547+
break;
508548
case "PostComment":
509549
objCommentsPanel = null;
510550
TextBox txtName = null;
@@ -736,7 +776,8 @@ private void DataList1_ItemCommand(object source, System.Web.UI.WebControls.Data
736776
string target = oRepositoryBusinessController.GetSkinAttribute(xmlDoc, "DOWNLOAD", "Target", "NEW");
737777
oRepositoryBusinessController.DownloadFile(e.CommandArgument.ToString(), target);
738778

739-
break;
779+
SendDownloadNotification(objRepository);
780+
break;
740781
case "PostComment":
741782
objCommentsPanel = null;
742783
TextBox txtName = null;
@@ -797,8 +838,7 @@ private void DataList1_ItemCommand(object source, System.Web.UI.WebControls.Data
797838

798839
}
799840

800-
801-
private void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
841+
private void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
802842
{
803843
if (e.Item.ItemType == ListItemType.Item | e.Item.ItemType == ListItemType.AlternatingItem) {
804844
PlaceHolder holder = (PlaceHolder)e.Item.FindControl("PlaceHolder1");

Settings.ascx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,13 @@
151151
<asp:TextBox ID="txtEmailOnComment" runat="server" CssClass="normal" Text="" Width="350" /><br /><br />
152152
</td>
153153
</tr>
154+
<tr>
155+
<td><dnn:label id="plEmailOnDownload" runat="server" controlname="cbxEmailOnDownload" suffix=":"></dnn:label></td>
156+
<td class="repSetting">
157+
<asp:CheckBox ID="cbxEmailOnDownload" runat="server" Checked="false" CssClass="normal" Text="" />
158+
<asp:TextBox ID="txtEmailOnDownload" runat="server" CssClass="normal" Text="" Width="350" /><br /><br />
159+
</td>
160+
</tr>
154161

155162
<tr>
156163
<td><dnn:label id="plSecurityRoles" runat="server" suffix=":"></dnn:label></td>

Settings.ascx.cs

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -302,9 +302,11 @@ protected ImageButton cmdDeleteValue {
302302
protected System.Web.UI.WebControls.CheckBox cbAllFiles;
303303
protected System.Web.UI.WebControls.CheckBox cbxIsPersonal;
304304
protected System.Web.UI.WebControls.CheckBox cbxEmailOnComment;
305-
protected System.Web.UI.WebControls.CheckBox cbxEmailOnUpload;
305+
protected System.Web.UI.WebControls.CheckBox cbxEmailOnDownload;
306+
protected System.Web.UI.WebControls.CheckBox cbxEmailOnUpload;
306307
protected System.Web.UI.WebControls.TextBox txtEmailOnComment;
307-
protected System.Web.UI.WebControls.TextBox txtEmailOnUpload;
308+
protected System.Web.UI.WebControls.TextBox txtEmailOnDownload;
309+
protected System.Web.UI.WebControls.TextBox txtEmailOnUpload;
308310
protected System.Web.UI.WebControls.RadioButtonList rblDataControl;
309311
protected System.Web.UI.WebControls.TextBox txtWatermark;
310312

@@ -379,7 +381,17 @@ private void Page_Load(System.Object sender, System.EventArgs e)
379381
cbxEmailOnComment.Checked = false;
380382
}
381383

382-
if (!string.IsNullOrEmpty(Convert.ToString(settings["AnonEditDelete"]))) {
384+
bool emailOnDownload = false;
385+
if (bool.TryParse(settings["EmailOnDownload"]?.ToString(), out emailOnDownload) == true)
386+
{
387+
cbxEmailOnDownload.Checked = emailOnDownload;
388+
}
389+
else
390+
{
391+
cbxEmailOnDownload.Checked = false;
392+
}
393+
394+
if (!string.IsNullOrEmpty(Convert.ToString(settings["AnonEditDelete"]))) {
383395
cbxAnonEditDelete.Checked = bool.Parse(settings["AnonEditDelete"].ToString());
384396
} else {
385397
cbxAnonEditDelete.Checked = false;
@@ -392,7 +404,17 @@ private void Page_Load(System.Object sender, System.EventArgs e)
392404
// default value
393405
}
394406

395-
if (!string.IsNullOrEmpty(Convert.ToString(settings["EmailOnUpload"]))) {
407+
if (!string.IsNullOrEmpty(Convert.ToString(settings["EmailOnDownloadAddress"])))
408+
{
409+
txtEmailOnDownload.Text = Convert.ToString(settings["EmailOnDownloadAddress"]);
410+
}
411+
else
412+
{
413+
txtEmailOnDownload.Text = "";
414+
// default value
415+
}
416+
417+
if (!string.IsNullOrEmpty(Convert.ToString(settings["EmailOnUpload"]))) {
396418
cbxEmailOnUpload.Checked = bool.Parse(settings["EmailOnUpload"].ToString());
397419
} else {
398420
cbxEmailOnUpload.Checked = false;
@@ -735,7 +757,8 @@ private void Page_Load(System.Object sender, System.EventArgs e)
735757

736758
cbAllFiles.Text = Localization.GetString("AllowAllFiles", LocalResourceFile);
737759
cbxIsPersonal.Text = Localization.GetString("IsPersonal", LocalResourceFile);
738-
cbxEmailOnComment.Text = Localization.GetString("EmailOnComment", LocalResourceFile);
760+
cbxEmailOnComment.Text = Localization.GetString("EmailOnComment", LocalResourceFile);
761+
cbxEmailOnDownload.Text = Localization.GetString("EmailOnDownload", LocalResourceFile);
739762
cbxEmailOnUpload.Text = Localization.GetString("EmailOnUpload", LocalResourceFile);
740763
cbxAnonEditDelete.Text = Localization.GetString("AnonEditDelete", LocalResourceFile);
741764

@@ -811,7 +834,10 @@ public override void UpdateSettings()
811834
objModules.UpdateModuleSetting(ModuleId, "EmailOnComment", cbxEmailOnComment.Checked.ToString());
812835
objModules.UpdateModuleSetting(ModuleId, "EmailOnCommentAddress", txtEmailOnComment.Text);
813836

814-
objModules.UpdateModuleSetting(ModuleId, "EmailOnUpload", cbxEmailOnUpload.Checked.ToString());
837+
objModules.UpdateModuleSetting(ModuleId, "EmailOnDownload", cbxEmailOnDownload.Checked.ToString());
838+
objModules.UpdateModuleSetting(ModuleId, "EmailOnDownloadAddress", txtEmailOnDownload.Text);
839+
840+
objModules.UpdateModuleSetting(ModuleId, "EmailOnUpload", cbxEmailOnUpload.Checked.ToString());
815841
objModules.UpdateModuleSetting(ModuleId, "EmailOnUploadAddress", txtEmailOnUpload.Text);
816842

817843
objModules.UpdateModuleSetting(ModuleId, "AnonEditDelete", cbxAnonEditDelete.Checked.ToString());

0 commit comments

Comments
 (0)