Skip to content

Commit c6ff7c7

Browse files
committed
Added setting to enable/disable e-mail notify when user downloads file
1 parent 254be02 commit c6ff7c7

4 files changed

Lines changed: 96 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: 51 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,48 @@ 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+
log.ErrorFormat("Download: {0} {1}", Settings["EmailOnDownload"], Settings["EmailOnDownloadAddress"]);
415+
// check to see if we need to send an email notification
416+
if (string.IsNullOrEmpty(Convert.ToString(Settings["EmailOnDownload"])) == false)
417+
{
418+
if (bool.Parse(Settings["EmailOnDownload"].ToString()) == true)
419+
{
420+
string _email = Convert.ToString(Settings["EmailOnDownloadAddress"]);
421+
if (string.IsNullOrEmpty(_email) == false)
422+
{
423+
// send an email
424+
string _subject = string.Format("[{0}] New Download from Your Repository", PortalSettings.PortalName);
425+
System.Text.StringBuilder _body = new System.Text.StringBuilder();
426+
_body.Append(string.Format("A new download at {0}<br />", System.DateTime.Now));
427+
_body.Append(string.Format("by {0} ({1})<br /><br />", UserInfo.DisplayName, UserInfo.Email));
428+
_body.Append(string.Format("File {0}<br /><br />", objRepository.FileName));
429+
_body.Append("------------------------------------------------------------<br />");
430+
_body.Append(string.Format("{0}<br />", this.Request.UserHostAddress));
431+
Mail.SendMail(
432+
PortalSettings.Email,
433+
_email,
434+
"", "",
435+
Services.Mail.MailPriority.Normal,
436+
_subject,
437+
Services.Mail.MailFormat.Html,
438+
System.Text.Encoding.Default,
439+
_body.ToString(),
440+
"", "", "", "", "");
441+
}
442+
}
443+
}
444+
}
445+
catch (Exception ex)
446+
{
447+
Exceptions.ProcessModuleLoadException(this, ex);
448+
}
449+
}
450+
451+
private void SendCommentNotification(RepositoryInfo objRepository, TextBox txtName, TextBox txtComment)
411452
{
412453
// check to see if we need to send an email notification
413454
if (!string.IsNullOrEmpty(Convert.ToString(Settings["EmailOnComment"]))) {
@@ -504,7 +545,8 @@ public void lstObjects_ItemCommand(object source, DataGridCommandEventArgs e)
504545
string target = oRepositoryBusinessController.GetSkinAttribute(xmlDoc, "DOWNLOAD", "Target", "NEW");
505546
oRepositoryBusinessController.DownloadFile(e.CommandArgument.ToString(), target);
506547

507-
break;
548+
SendDownloadNotification(objRepository);
549+
break;
508550
case "PostComment":
509551
objCommentsPanel = null;
510552
TextBox txtName = null;
@@ -736,7 +778,8 @@ private void DataList1_ItemCommand(object source, System.Web.UI.WebControls.Data
736778
string target = oRepositoryBusinessController.GetSkinAttribute(xmlDoc, "DOWNLOAD", "Target", "NEW");
737779
oRepositoryBusinessController.DownloadFile(e.CommandArgument.ToString(), target);
738780

739-
break;
781+
SendDownloadNotification(objRepository);
782+
break;
740783
case "PostComment":
741784
objCommentsPanel = null;
742785
TextBox txtName = null;
@@ -797,8 +840,7 @@ private void DataList1_ItemCommand(object source, System.Web.UI.WebControls.Data
797840

798841
}
799842

800-
801-
private void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
843+
private void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
802844
{
803845
if (e.Item.ItemType == ListItemType.Item | e.Item.ItemType == ListItemType.AlternatingItem) {
804846
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+
385+
if (!string.IsNullOrEmpty(Convert.ToString(settings["EmailOnDownload"])))
386+
{
387+
cbxEmailOnDownload.Checked = bool.Parse(settings["EmailOnDownload"].ToString());
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;
@@ -742,7 +764,8 @@ private void Page_Load(System.Object sender, System.EventArgs e)
742764

743765
cbAllFiles.Text = Localization.GetString("AllowAllFiles", LocalResourceFile);
744766
cbxIsPersonal.Text = Localization.GetString("IsPersonal", LocalResourceFile);
745-
cbxEmailOnComment.Text = Localization.GetString("EmailOnComment", LocalResourceFile);
767+
cbxEmailOnComment.Text = Localization.GetString("EmailOnComment", LocalResourceFile);
768+
cbxEmailOnDownload.Text = Localization.GetString("EmailOnDownload", LocalResourceFile);
746769
cbxEmailOnUpload.Text = Localization.GetString("EmailOnUpload", LocalResourceFile);
747770
cbxAnonEditDelete.Text = Localization.GetString("AnonEditDelete", LocalResourceFile);
748771

@@ -818,7 +841,10 @@ public override void UpdateSettings()
818841
objModules.UpdateModuleSetting(ModuleId, "EmailOnComment", cbxEmailOnComment.Checked.ToString());
819842
objModules.UpdateModuleSetting(ModuleId, "EmailOnCommentAddress", txtEmailOnComment.Text);
820843

821-
objModules.UpdateModuleSetting(ModuleId, "EmailOnUpload", cbxEmailOnUpload.Checked.ToString());
844+
objModules.UpdateModuleSetting(ModuleId, "EmailOnDownload", cbxEmailOnDownload.Checked.ToString());
845+
objModules.UpdateModuleSetting(ModuleId, "EmailOnDownloadAddress", txtEmailOnDownload.Text);
846+
847+
objModules.UpdateModuleSetting(ModuleId, "EmailOnUpload", cbxEmailOnUpload.Checked.ToString());
822848
objModules.UpdateModuleSetting(ModuleId, "EmailOnUploadAddress", txtEmailOnUpload.Text);
823849

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

0 commit comments

Comments
 (0)