Setting up proper buttons on blog post list and extra dates (not yet complete)

--HG--
branch : dev
This commit is contained in:
Erik Porter
2010-03-01 17:15:02 -08:00
parent c05643bf67
commit 794e99a83d
5 changed files with 70 additions and 80 deletions

View File

@@ -1,74 +1,63 @@
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<ContentItemViewModel<BlogPost>>" %> <%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<ContentItemViewModel<BlogPost>>" %>
<%@ Import Namespace="Orchard.Themes"%>
<%@ Import Namespace="Orchard.Extensions"%>
<%@ Import Namespace="Orchard.ContentManagement"%>
<%@ Import Namespace="Orchard.Core.Common.Models"%>
<%@ Import Namespace="Orchard.Mvc.ViewModels"%> <%@ Import Namespace="Orchard.Mvc.ViewModels"%>
<%@ Import Namespace="Orchard.Blogs.Extensions"%> <%@ Import Namespace="Orchard.Blogs.Extensions"%>
<%@ Import Namespace="Orchard.Blogs.Models"%> <%@ Import Namespace="Orchard.Blogs.Models"%>
<div class="summary"> <div class="summary">
<div class="properties"> <div class="properties">
<h3><%=Html.Link(Html.Encode(Model.Item.Title), Url.BlogPostEdit(Model.Item.Blog.Slug, Model.Item.Id))%></h3> <h3><%=Html.Link(Html.Encode(Model.Item.Title), Url.BlogPostEdit(Model.Item.Blog.Slug, Model.Item.Id))%></h3>
<ul> <ul>
<li> <li><%
<%if (Model.IsPublished) if (Model.Item.HasPublished) { %>
{ %> <img class="icon" src="<%=ResolveUrl("~/Modules/Orchard.Blogs/Content/Admin/images/online.gif") %>" alt="<%=_Encoded("Online") %>" title="<%=_Encoded("The page is currently online") %>" /><%=_Encoded(" Published")%><%
<img class="icon" src="<%=ResolveUrl("~/Modules/Orchard.Blogs/Content/Admin/images/online.gif") %>" alt="<%=_Encoded("Online") %>" title="<%=_Encoded("The page is currently online") %>" /><%=_Encoded(" Published")%> }
<% } else { %>
else <img class="icon" src="<%=ResolveUrl("~/Modules/Orchard.Blogs/Content/Admin/images/offline.gif") %>" alt="<%=_Encoded("Offline") %>" title="<%=_Encoded("The page is currently offline") %>" /><%=_Encoded(" Not Published")%><%
{ %> } %>&nbsp;&#124;&nbsp;
<img class="icon" src="<%=ResolveUrl("~/Modules/Orchard.Blogs/Content/Admin/images/offline.gif") %>" alt="<%=_Encoded("Offline") %>" title="<%=_Encoded("The page is currently offline") %>" /><%=_Encoded(" Not Published")%>
<% } %>
&nbsp;&#124;&nbsp;
</li> </li>
<li><%
<li> if (Model.Item.HasDraft) { %>
<% if (Model.IsDraft) { %> <img class="icon" src="<%=ResolveUrl("~/Modules/Orchard.Blogs/Content/Admin/images/draft.gif") %>" alt="<%=_Encoded("Draft") %>" title="<%=_Encoded("The post has a draft") %>" /><%=Html.PublishedState(Model.Item)%><%
<img class="icon" src="<%=ResolveUrl("~/Modules/Orchard.Blogs/Content/Admin/images/draft.gif") %>" alt="<%=_Encoded("Draft") %>" title="<%=_Encoded("The post has a draft") %>" /><%=Html.PublishedState(Model.Item)%> }
<% } else { %>
else <%=_Encoded("No draft")%><%
{ %> } %>&nbsp;&#124;&nbsp;
<%=_Encoded("No draft")%>
<% } %>
&nbsp;&#124;&nbsp;
</li> </li>
<li><%
<%--This should show publised date, last modified, or scheduled. if (Model.Item.ScheduledPublishUtc.HasValue && Model.Item.ScheduledPublishUtc.Value > DateTime.UtcNow) { %>
<li> <img class="icon" src="<%=ResolveUrl("~/Modules/Orchard.Blogs/Content/Admin/images/scheduled.gif") %>" alt="<%=_Encoded("Scheduled") %>" title="<%=_Encoded("The post is scheduled for publishing") %>" /><%=_Encoded("Scheduled")%>
<img class="icon" src="<%=ResolveUrl("~/Modules/Orchard.Blogs/Content/Admin/images/scheduled.gif") %>" alt="<%=_Encoded("Scheduled") %>" title="<%=_Encoded("The post is scheduled for publishing") %>" /><%=_Encoded("Scheduled")%> <%=Html.DateTime(Model.Item.ScheduledPublishUtc.Value, "M/d/yyyy h:mm tt")%><%
&nbsp;&#124;&nbsp; }
</li>--%> else if (Model.Item.IsPublished) { %>
<%=_Encoded("Published: ") + Html.PublishedWhen(Model.Item) %><%
<li> }
<%=_Encoded("By {0}", Model.Item.Creator.UserName)%> else { %>
</li> <%=_Encoded("Last modified: {todo}") %><%
} %>&nbsp;&#124;&nbsp;
</li>
<li><%=_Encoded("By {0}", Model.Item.Creator.UserName)%></li>
</ul> </ul>
</div> </div>
<div class="related"><%
<div class="related"> if (Model.Item.HasPublished){ %>
<a href="<%=Url.BlogPost(Model.Item.Blog.Slug, Model.Item.Slug) %>" title="<%=_Encoded("View Post")%>"><%=_Encoded("View")%></a><%=_Encoded(" | ")%><%
<%if (Model.IsPublished){ %> if (Model.Item.HasDraft) { %>
<a href="<%=Url.BlogPost(Model.Item.Blog.Slug, Model.Item.Slug) %>" title="<%=_Encoded("View Post")%>"><%=_Encoded("View")%></a><%=_Encoded(" | ")%> <a href="#" title="<%=_Encoded("Publish Draft")%>"><%=_Encoded("Publish Draft")%></a><%=_Encoded(" | ")%><%
<% } %> } %>
<a href="#" title="<%=_Encoded("Unpublish Post")%>"><%=_Encoded("Unpublish")%></a><%=_Encoded(" | ")%><%
<a href="<%=Url.BlogPostEdit(Model.Item.Blog.Slug, Model.Item.Id) %>" title="<%=_Encoded("Edit Post")%>"><%=_Encoded("Edit")%></a><%=_Encoded(" | ")%> }
else { %>
<%if (Model.Item.ContentItem.VersionRecord.Published == false) { // todo: (heskew) be smart about this and maybe have other contextual actions - including view/preview for view up there ^^ <a href="#" title="<%=_Encoded("Publish Post")%>"><%=_Encoded("Publish")%></a><%=_Encoded(" | ")%><%
using (Html.BeginFormAntiForgeryPost(Url.BlogPostPublish(Model.Item.Blog.Slug, Model.Item.Id), FormMethod.Post, new { @class = "inline" })) { %> } %>
<a href="<%=Url.BlogPostEdit(Model.Item.Blog.Slug, Model.Item.Id) %>" title="<%=_Encoded("Edit Post")%>"><%=_Encoded("Edit")%></a><%=_Encoded(" | ")%><%--
if (Model.Item.ContentItem.VersionRecord.Published == false) { // todo: (heskew) be smart about this and maybe have other contextual actions - including view/preview for view up there ^^
using (Html.BeginFormAntiForgeryPost(Url.BlogPostPublish(Model.Item.Blog.Slug, Model.Item.Id), FormMethod.Post, new { @class = "inline" })) { %>
<button type="submit" class="linkButton" title="<%=_Encoded("Publish") %>"><%=_Encoded("Publish")%></button><%=_Encoded(" | ")%><% <button type="submit" class="linkButton" title="<%=_Encoded("Publish") %>"><%=_Encoded("Publish")%></button><%=_Encoded(" | ")%><%
} }
} %> }--%><%
using (Html.BeginFormAntiForgeryPost(Url.BlogPostDelete(Model.Item.Blog.Slug, Model.Item.Id), FormMethod.Post, new { @class = "inline" })) { %>
<% using (Html.BeginFormAntiForgeryPost(Url.BlogPostDelete(Model.Item.Blog.Slug, Model.Item.Id), FormMethod.Post, new { @class = "inline" })) { %> <button type="submit" class="linkButton" title="<%=_Encoded("Delete") %>"><%=_Encoded("Delete") %></button><%
<button type="submit" class="linkButton" title="<%=_Encoded("Delete") %>"><%=_Encoded("Delete") %></button> } %>
<%
} %>
<br /><%Html.Zone("meta");%> <br /><%Html.Zone("meta");%>
</div> </div>
<div style="clear:both;"></div> <div style="clear:both;"></div>
</div> </div>

View File

@@ -10,10 +10,11 @@
<div class="secondary"> <div class="secondary">
<% Html.Zone("secondary");%> <% Html.Zone("secondary");%>
<fieldset> <fieldset>
<input class="button primaryAction" type="submit" name="submit.Save" value="<%=_Encoded("Save") %>"/> <input class="button primaryAction" type="submit" name="submit.Save" value="<%=_Encoded("Save") %>"/><%
<% if (Model.IsDraft) { %> //TODO: (erikpo) In the future, remove the HasPublished check so the user can delete the content item from here if the choose to
<%=Html.ActionLink(T("Discard Draft").ToString(), "DiscardDraft", new { Area = "Orchard.Blogs", Controller = "BlogPostAdmin", id=Model.Item.Id }, new { @class = "button" })%> if (Model.Item.HasDraft && Model.Item.HasPublished) { %>
<% } %> <%=Html.ActionLink(T("Discard Draft").ToString(), "DiscardDraft", new { Area = "Orchard.Blogs", Controller = "BlogPostAdmin", id=Model.Item.Id }, new { @class = "button" })%><%
} %>
</fieldset> </fieldset>
</div> </div>
</div> </div>

View File

@@ -10,10 +10,11 @@
<div class="secondary"> <div class="secondary">
<% Html.Zone("secondary");%> <% Html.Zone("secondary");%>
<fieldset> <fieldset>
<input class="button primaryAction" type="submit" name="submit.Save" value="<%=_Encoded("Save") %>"/> <input class="button primaryAction" type="submit" name="submit.Save" value="<%=_Encoded("Save") %>"/><%
<% if (Model.IsDraft) { %> //TODO: (erikpo) In the future, remove the HasPublished check so the user can delete the content item from here if the choose to
<%=Html.ActionLink(T("Discard Draft").ToString(), "DiscardDraft", new { Area = "Orchard.Pages", Controller = "Admin", Model.Item.Id }, new { @class = "button" })%> if (Model.Item.HasDraft && Model.Item.HasPublished) { %>
<% } %> <%=Html.ActionLink(T("Discard Draft").ToString(), "DiscardDraft", new { Area = "Orchard.Pages", Controller = "Admin", Model.Item.Id }, new { @class = "button" })%><%
} %>
</fieldset> </fieldset>
</div> </div>
</div> </div>

View File

@@ -116,9 +116,18 @@ namespace Orchard.Mvc.Html {
return value.HasValue ? htmlHelper.DateTime(value.Value) : defaultIfNull; return value.HasValue ? htmlHelper.DateTime(value.Value) : defaultIfNull;
} }
//TODO: (erikpo) This format should come from a site setting public static string DateTime(this HtmlHelper htmlHelper, DateTime? value, string defaultIfNull, string customFormat) {
return value.HasValue ? htmlHelper.DateTime(value.Value, customFormat) : defaultIfNull;
}
public static string DateTime(this HtmlHelper htmlHelper, DateTime value) { public static string DateTime(this HtmlHelper htmlHelper, DateTime value) {
return value.ToString("MMM d yyyy h:mm tt"); //TODO: (erikpo) This default format should come from a site setting
return htmlHelper.DateTime(value, "MMM d yyyy h:mm tt");
}
public static string DateTime(this HtmlHelper htmlHelper, DateTime value, string customFormat) {
//TODO: (erikpo) In the future, convert this to "local" time before calling ToString
return value.ToString(customFormat);
} }
#endregion #endregion

View File

@@ -36,16 +36,6 @@ namespace Orchard.Mvc.ViewModels {
public string TemplateName { get; set; } public string TemplateName { get; set; }
public string Prefix { get; set; } public string Prefix { get; set; }
public ZoneCollection Zones { get; private set; } public ZoneCollection Zones { get; private set; }
public bool IsPublished {
get { return Item != null && Item.VersionRecord != null && Item.VersionRecord.Published; }
}
public bool IsLatest {
get { return Item != null && Item.VersionRecord != null && Item.VersionRecord.Latest; }
}
public bool IsDraft {
get { return IsLatest && !IsPublished; }
}
} }
public class ContentItemViewModel<TPart> : ContentItemViewModel where TPart : IContent { public class ContentItemViewModel<TPart> : ContentItemViewModel where TPart : IContent {