Skip to content

Commit 2b95fbf

Browse files
committed
Newsletter and db updates
1 parent 85b67ef commit 2b95fbf

File tree

15 files changed

+875
-12
lines changed

15 files changed

+875
-12
lines changed
Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<form class="form-group">
22
<div id="newsletter-form">
33
<input id="txtSubscriberEmail" type="email" placeholder="someone@example.com">
4-
<button type="button" onclick="newsletter.subscribe()">Subscribe</button>
4+
<button type="button" onclick="return newsletter.subscribe()">Subscribe</button>
55
</div>
66
<div id="newsletter-msg" style="display: none">
77
Thank you!
@@ -11,20 +11,34 @@
1111
<script type="text/javascript">
1212
//<![CDATA[
1313
var newsletter = function () {
14-
1514
function subscribe() {
1615
var email = document.getElementById("txtSubscriberEmail");
17-
18-
var frm = document.getElementById("newsletter-form");
19-
var msg = document.getElementById("newsletter-msg");
20-
21-
frm.style.display = "none";
22-
msg.style.display = "";
16+
$.ajax({
17+
url: '/widgets/api/newsletter/subscribe',
18+
type: 'PUT',
19+
contentType: 'application/json',
20+
data: JSON.stringify(email.value),
21+
success: function (data) {
22+
var frm = document.getElementById("newsletter-form");
23+
var msg = document.getElementById("newsletter-msg");
24+
frm.style.display = "none";
25+
msg.innerHTML = data;
26+
msg.style.display = "";
27+
return false;
28+
}
29+
});
2330
}
24-
2531
return {
2632
subscribe: subscribe
2733
}
2834
}();
35+
document.getElementById('txtSubscriberEmail').onkeypress = function (e) {
36+
if (!e) e = window.event;
37+
var keyCode = e.keyCode || e.which;
38+
if (keyCode == '13') {
39+
newsletter.subscribe();
40+
}
41+
return false;
42+
}
2943
//]]>
3044
</script>

plugins/Common/Widgets/Newsletter.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,18 @@ public NewsletterController(IDataService db)
2929
_db = db;
3030
}
3131

32+
[HttpPut]
33+
[Route("subscribe")]
34+
public IActionResult Subscribe([FromBody]string email)
35+
{
36+
var existing = _db.Newsletters.Single(n => n.Email == email);
37+
38+
if(existing == null)
39+
{
40+
_db.Newsletters.Add(new Core.Data.Newsletter { Email = email });
41+
_db.Complete();
42+
}
43+
return Ok("Thank you!");
44+
}
3245
}
3346
}

src/App/Views/Themes/moments/_Shared/_Header.cshtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<header class="blog-header">
22
<div class="container d-flex">
3-
<a href="~/" class="blog-logo my-auto d-flex"> <img src="~/@Model.Blog.Logo" alt="@Model.Blog.Title" class="my-auto" /></a>
3+
<a href="~/" class="blog-logo my-auto d-flex"> <img src="~/@Model.Blog.Logo" alt="@Model.Blog.Title" class="my-auto" height="30" /></a>
44
<nav class="navbar navbar-expand-lg navbar-dark ml-auto">
55
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
66
<span class="navbar-toggler-icon"></span>

src/App/app.db

4 KB
Binary file not shown.
-3.85 KB
Binary file not shown.
-4.43 KB
Binary file not shown.

src/Core/Data/AppDbContext.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
1212
public DbSet<BlogPost> BlogPosts { get; set; }
1313
public DbSet<Author> Authors { get; set; }
1414
public DbSet<Notification> Notifications { get; set; }
15-
public DbSet<HtmlWidget> HtmlWidtes { get; set; }
1615
public DbSet<CustomField> CustomFields { get; set; }
16+
public DbSet<HtmlWidget> HtmlWidgets { get; set; }
17+
public DbSet<Newsletter> Newsletters { get; set; }
1718

1819
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
1920
{
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,10 @@ public class HtmlWidget
88
public string Author { get; set; }
99
public string Content { get; set; }
1010
}
11+
12+
public class Newsletter
13+
{
14+
public int Id { get; set; }
15+
public string Email { get; set; }
16+
}
1117
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
namespace Core.Data
2+
{
3+
public interface INewsletterRepository : IRepository<Newsletter>
4+
{
5+
}
6+
7+
public class NewsletterRepository : Repository<Newsletter>, INewsletterRepository
8+
{
9+
AppDbContext _db;
10+
11+
public NewsletterRepository(AppDbContext db) : base(db)
12+
{
13+
_db = db;
14+
}
15+
}
16+
}

0 commit comments

Comments
 (0)