Skip to content

Commit

Permalink
Updated templating structure to be file based. Implemented templating…
Browse files Browse the repository at this point in the history
… for BeersToDrinkSoon.
  • Loading branch information
irobinson committed Mar 24, 2011
1 parent 18ec544 commit 38ad998
Show file tree
Hide file tree
Showing 11 changed files with 162 additions and 162 deletions.
123 changes: 0 additions & 123 deletions App_LocalResources/BeerCollection.ascx.resx

This file was deleted.

7 changes: 6 additions & 1 deletion BeerCollectionMVP.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,9 @@
<Compile Include="Components\Models\BeerCollectionModel.cs" />
<Compile Include="Components\Presenters\BeersToDrinkSoonPresenter.cs" />
<Compile Include="Components\Presenters\AddBeerPresenter.cs" />
<Compile Include="Components\Templating\DataRenderers\BasicFormatRenderer.cs" />
<Compile Include="Components\Templating\DataRenderers\DateRenderer.cs" />
<Compile Include="Components\Templating\Template.cs" />
<Compile Include="Components\Views\IViewAddBeer.cs" />
<Compile Include="Components\Views\IViewBeersToDrinkSoon.cs" />
<Compile Include="Data\BeerRepository.cs" />
Expand Down Expand Up @@ -118,7 +121,9 @@
<Compile Include="HttpModules\RegisterDependencies.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="App_LocalResources\BeerCollection.ascx.resx" />
<None Include="Templates\Default\BeerCollection.st" />
<None Include="Templates\Default\BeersToDrinkSoon.st" />
<None Include="Templates\Default\link.st" />
</ItemGroup>
<ItemGroup>
<None Include="Data\Uninstall.SqlDataProvider" />
Expand Down
21 changes: 1 addition & 20 deletions BeersToDrinkSoon.ascx
Original file line number Diff line number Diff line change
@@ -1,22 +1,3 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="BeersToDrinkSoon.ascx.cs" Inherits="BeerCollection.ViewBeersToDrinkSoon" %>

<% if (Model.HasBeers) { %>

<asp:Repeater DataSource='<%# Model.BeerCollection %>' runat="server">
<HeaderTemplate>
<p>You should probably drink these soon!</p>
</HeaderTemplate>
<ItemTemplate>
<p class="beers-soon">
Name: <span class="name"><%# DataBinder.Eval(Container.DataItem,"Name") %></span><br />
ABV: <span class="abv"><%# DataBinder.Eval(Container.DataItem, "AlcoholPercentageByVolume")%></span><br />
Drink By: <span class="drinkby"><%# String.Format("{0:MM/dd/yyyy}", DataBinder.Eval(Container.DataItem, "DrinkBy")) %></span>
</p>
</ItemTemplate>
</asp:Repeater>

<% } else { %>

<p>No beers in your collection really need to be consumed. Take this opportunity to sober up.</p>

<% } %>
<%# Model.BeerCollectionHtml %>
32 changes: 15 additions & 17 deletions Components/Presenters/BeerCollectionPresenter.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
using System.IO;
using System.Text;
using Antlr3.ST;
using DotNetNuke.Services.Localization;
using BeerCollection.Components.Templating;
using DotNetNuke.Entities.Users;

namespace BeerCollection.Components.Presenters
{
Expand All @@ -28,25 +26,25 @@ public BeerCollectionPresenter (IViewBeerCollection view, IBeerRepository reposi
}

void ViewLoad(Object sender, EventArgs eventArgs)
{
GetBeers();
GetBeerCollectionHtml();
}

private void GetBeerCollectionHtml()
{
var template = new StringTemplate(Localization.GetString("BeerCollectionTemplate", LocalResourceFile));
template.SetAttribute("beer", View.Model.BeerCollection);
View.Model.BeerCollectionHtml = template.ToString();
}

private void GetBeers()
{
List<Beer> beers = beerRepository.GetBeers().ToList();
View.Model.HasBeers = beers.Count > 0;
View.Model.BeerCollection = beers;

Messages.Publish(beers);
Messages.Subscribe<Beer>(beers.Add);

View.Model.BeerCollectionHtml = this.GetTemplate();
}

private string GetTemplate()
{
var data = new Dictionary<string, object>
{
{"beer", View.Model.BeerCollection},
{"user", new UserController().GetUser(this.PortalId, this.UserId)}
};
return Template.RenderTemplate("BeerCollection", data);
}
}
}
16 changes: 15 additions & 1 deletion Components/Presenters/BeersToDrinkSoonPresenter.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
namespace BeerCollection.Components.Presenters
using BeerCollection.Components.Templating;
using DotNetNuke.Entities.Users;

namespace BeerCollection.Components.Presenters
{
using System;
using System.Collections.Generic;
Expand Down Expand Up @@ -31,6 +34,17 @@ private void SetModel(List<Beer> beers)
{
View.Model.BeerCollection = beers.OrderBy(b => b.DrinkBy).Take(3).Where(b => !b.IsConsumed).ToList();
View.Model.HasBeers = View.Model.BeerCollection.Count > 0;
View.Model.BeerCollectionHtml = this.GetTemplate();
}

private string GetTemplate()
{
var data = new Dictionary<string, object>
{
{"beers", View.Model.BeerCollection},
{"user", new UserController().GetUser(this.PortalId, this.UserId)}
};
return Template.RenderTemplate("BeersToDrinkSoon", data);
}
}
}
27 changes: 27 additions & 0 deletions Components/Templating/DataRenderers/BasicFormatRenderer.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using Antlr3.ST;

namespace BeerCollection.Components.Templating.DataRenderers
{
public class BasicFormatRenderer : IAttributeRenderer
{
public string ToString(object o)
{
return o.ToString();
}

public string ToString(object o, string formatName)
{
if(formatName == "toUpper")
{
return o.ToString().ToUpperInvariant();
}

if (formatName == "toLower")
{
return o.ToString().ToLowerInvariant();
}

return o.ToString();
}
}
}
19 changes: 19 additions & 0 deletions Components/Templating/DataRenderers/DateRenderer.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using System;
using Antlr3.ST;

namespace BeerCollection.Components.Templating.DataRenderers
{
public class DateRenderer :IAttributeRenderer
{
public string ToString(object o)
{
return ToString(o, "yyyy.MM.dd");
}

public string ToString(object o, string format)
{
var dt = (DateTime)o;
return dt.ToString(format);
}
}
}
34 changes: 34 additions & 0 deletions Components/Templating/Template.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
namespace BeerCollection.Components.Templating
{
using System;
using System.Collections.Generic;
using Antlr3.ST;
using DataRenderers;

public static class Template
{
public static string DefaultGroupName = "Default";
public static string DefaultTemplatePath = @"c:\inetpub\wwwroot\dnnsource.dev\Website\DesktopModules\BeerCollection\Templates\Default";

public static string RenderTemplate(string templateName, IEnumerable<KeyValuePair<string, object>> templateData)
{
return RenderTemplate(DefaultGroupName, DefaultTemplatePath, templateName, templateData);
}

public static string RenderTemplate(string groupName, string groupPath, string templateName, IEnumerable<KeyValuePair<string, object>> templateData)
{
var templateGroup = new StringTemplateGroup(groupName, groupPath);
var template = templateGroup.GetInstanceOf(templateName);

foreach(var d in templateData)
{
template.SetAttribute(d.Key, d.Value);
}

template.RegisterRenderer(typeof(DateTime), new DateRenderer());
template.RegisterRenderer(typeof(String), new BasicFormatRenderer());

return template.ToString();
}
}
}
34 changes: 34 additions & 0 deletions Templates/Default/BeerCollection.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<h2>My Beer Collection</h2>
<table class="beer-collection">
<thead>
<tr>
<th>Beer Name</th>
<th>Style</th>
<th>Brewery</th>
<th>Description</th>
<th>ABV</th>
<th>Drink By</th>
<th>Picture</th>
</tr>
</thead>
<tbody>
$beer:{ b |
<tr>
<td>$b.Name$</td>
<td>$b.Style$</td>
<td>$b.Brewery$</td>
<td>$b.Description$</td>
<td>$b.AlcoholPercentageByVolume$</td>
<td class="date">$b.DrinkBy;format="MMM dd, yyyy"$</td>
<td>
$link(href={#$b.Picture$},title="$b.Name$",text="View")$
</td>
</tr>
}$
</tbody>
<tfoot>
<tr>
<td colspan="7">* footnote!</td>
</tr>
</tfoot>
</table>
10 changes: 10 additions & 0 deletions Templates/Default/BeersToDrinkSoon.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
$if(beers)$
<p>You should probably drink these soon!</p>
<ul class="beers-soon">
$beers:{ b |
<li>$b.Name$, (Drink by: $b.DrinkBy;format="MMM dd, yyyy"$)</li>
}$
</ul>
$else$
<p>No beers in your collection really need to be consumed. Take this opportunity to sober up.</p>
$endif$
1 change: 1 addition & 0 deletions Templates/Default/link.st
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<a href="$href$" title="$title$">$text$</a>

0 comments on commit 38ad998

Please sign in to comment.