mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Getting the comment count on the content list view in the admin and blog posts to use more of the generic content templating
- + blog posts get translation functionality --HG-- branch : dev
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
using System.Web.Mvc;
|
||||
using Orchard.Core.Common.ViewModels;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Mvc.Html;
|
||||
|
||||
namespace Orchard.Core.Common.Extensions {
|
||||
public static class HtmlHelperExtensions {
|
||||
public static LocalizedString PublishedStateForModel(this HtmlHelper<CommonMetadataViewModel> htmlHelper, Localizer T) {
|
||||
return htmlHelper.PublishedState(htmlHelper.ViewData.Model, T);
|
||||
}
|
||||
|
||||
public static LocalizedString PublishedState(this HtmlHelper htmlHelper, CommonMetadataViewModel metadata, Localizer T) {
|
||||
return htmlHelper.DateTime(metadata.VersionPublishedUtc, T("Draft"));
|
||||
}
|
||||
|
||||
public static LocalizedString PublishedWhenForModel(this HtmlHelper<CommonMetadataViewModel> htmlHelper, Localizer T) {
|
||||
return htmlHelper.PublishedWhen(htmlHelper.ViewData.Model, T);
|
||||
}
|
||||
|
||||
public static LocalizedString PublishedWhen(this HtmlHelper htmlHelper, CommonMetadataViewModel metadata, Localizer T) {
|
||||
return htmlHelper.DateTimeRelative(metadata.VersionPublishedUtc, T("as a Draft"), T);
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,4 +1,7 @@
|
||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<Orchard.Core.Common.ViewModels.CommonMetadataViewModel>" %>
|
||||
<%@ Import Namespace="Orchard.Core.Common.Extensions" %><%
|
||||
if (Model.Creator != null) { %>
|
||||
<div class="metadata">
|
||||
<div class="posted"><%: T("Published by {0}", Model.Creator != null ? Model.Creator.UserName : T("nobody(?)").ToString())%></div>
|
||||
</div>
|
||||
<div class="posted"><%: T("Published by {0} {1}", Model.Creator.UserName, Html.PublishedWhen(Model, T))%></div>
|
||||
</div><%
|
||||
} %>
|
@@ -27,6 +27,13 @@ namespace Orchard.Core.Contents.Handlers {
|
||||
{"Id", context.ContentItem.Id}
|
||||
};
|
||||
}
|
||||
if (context.Metadata.RemoveRouteValues == null) {
|
||||
context.Metadata.RemoveRouteValues = new RouteValueDictionary {
|
||||
{"Area", "Contents"},
|
||||
{"Controller", "Item"},
|
||||
{"Action", "Remove"}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -12,7 +12,8 @@
|
||||
<%:Html.Hidden("id", Model.Item.Id, new { id = "" })%>
|
||||
<button type="submit"><%:T("Remove") %></button><%
|
||||
} %>
|
||||
<br /><% Html.Zone("meta"); %>
|
||||
</div>
|
||||
<div style="clear:both;"></div>
|
||||
<% Html.Zone("primary"); %>
|
||||
<% Html.ZonesAny(); %>
|
||||
</div>
|
@@ -1,11 +1,6 @@
|
||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<ContentItemViewModel>" %>
|
||||
<%@ Import Namespace="Orchard.Mvc.ViewModels" %>
|
||||
<%@ Import Namespace="Orchard.ContentManagement.Aspects" %>
|
||||
<%@ Import Namespace="Orchard.ContentManagement" %>
|
||||
<%var routable = Model.Item.As<IRoutableAspect>();
|
||||
if (routable != null && !string.IsNullOrEmpty(routable.Title)) {%>
|
||||
<h1>
|
||||
<%:routable.Title%></h1>
|
||||
<%} %>
|
||||
<% Html.Zone("primary", ":manage :metadata");
|
||||
<h1><%:Html.ItemDisplayText(Model.Item)%></h1>
|
||||
<% Html.Zone("metadata");
|
||||
Html.Zone("primary", ":manage :metadata");
|
||||
Html.ZonesAny(); %>
|
||||
|
@@ -65,6 +65,7 @@
|
||||
<Compile Include="Common\Drivers\BodyDriver.cs" />
|
||||
<Compile Include="Common\Drivers\CommonDriver.cs" />
|
||||
<Compile Include="Common\Drivers\TextFieldDriver.cs" />
|
||||
<Compile Include="Common\Extensions\HtmlHelperExtensions.cs" />
|
||||
<Compile Include="Common\Fields\TextField.cs" />
|
||||
<Compile Include="Common\Services\ICommonService.cs" />
|
||||
<Compile Include="Common\Services\CommonService.cs" />
|
||||
|
@@ -111,7 +111,7 @@ namespace Orchard.Blogs.Controllers {
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public ActionResult Delete(string blogSlug) {
|
||||
public ActionResult Remove(string blogSlug) {
|
||||
if (!Services.Authorizer.Authorize(Permissions.ManageBlogs, T("Couldn't delete blog")))
|
||||
return new HttpUnauthorizedResult();
|
||||
|
||||
|
@@ -77,12 +77,6 @@ namespace Orchard.Blogs.Drivers {
|
||||
};
|
||||
}
|
||||
|
||||
protected override DriverResult Display(BlogPost post, string displayType) {
|
||||
return Combined(
|
||||
ContentItemTemplate("Items/Blogs.BlogPost").LongestMatch(displayType, "Summary", "SummaryAdmin"),
|
||||
ContentPartTemplate(post, "Parts/Blogs.BlogPost.Metadata").LongestMatch(displayType, "Summary", "SummaryAdmin").Location("meta", "1"));
|
||||
}
|
||||
|
||||
protected override DriverResult Editor(BlogPost post) {
|
||||
return ContentItemTemplate("Items/Blogs.BlogPost");
|
||||
}
|
||||
|
@@ -1,26 +0,0 @@
|
||||
using System.Web.Mvc;
|
||||
using Orchard.Blogs.Models;
|
||||
using Orchard.ContentManagement;
|
||||
using Orchard.ContentManagement.Aspects;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Mvc.Html;
|
||||
|
||||
namespace Orchard.Blogs.Extensions {
|
||||
public static class HtmlHelperExtensions {
|
||||
public static LocalizedString PublishedState(this HtmlHelper<BlogPost> htmlHelper, Localizer T) {
|
||||
return htmlHelper.PublishedState(htmlHelper.ViewData.Model, T);
|
||||
}
|
||||
|
||||
public static LocalizedString PublishedState(this HtmlHelper htmlHelper, BlogPost blogPost, Localizer T) {
|
||||
return htmlHelper.DateTime(blogPost.As<ICommonAspect>().VersionPublishedUtc, T("Draft"));
|
||||
}
|
||||
|
||||
public static LocalizedString PublishedWhen(this HtmlHelper<BlogPost> htmlHelper, Localizer T) {
|
||||
return htmlHelper.PublishedWhen(htmlHelper.ViewData.Model, T);
|
||||
}
|
||||
|
||||
public static LocalizedString PublishedWhen(this HtmlHelper htmlHelper, BlogPost blogPost, Localizer T) {
|
||||
return htmlHelper.DateTimeRelative(blogPost.As<ICommonAspect>().VersionPublishedUtc, T("as a Draft"), T);
|
||||
}
|
||||
}
|
||||
}
|
@@ -46,7 +46,9 @@ namespace Orchard.Blogs.Handlers {
|
||||
return;
|
||||
}
|
||||
|
||||
var containerId = requestContext.HttpContext.Request.Form["containerId"];
|
||||
//todo: don't get at the container form data directly. right now the container is set in the common driver editor (updater)
|
||||
//todo: which is too late for what's needed (currently) in this handler
|
||||
var containerId = requestContext.HttpContext.Request.Form["CommonAspect.containerId"];
|
||||
if (!string.IsNullOrEmpty(containerId)) {
|
||||
int cId;
|
||||
if (int.TryParse(containerId, out cId)) {
|
||||
|
@@ -74,7 +74,6 @@
|
||||
<Compile Include="Controllers\BlogPostController.cs" />
|
||||
<Compile Include="Drivers\BlogPostDriver.cs" />
|
||||
<Compile Include="Extensions\FeedManagerExtensions.cs" />
|
||||
<Compile Include="Extensions\HtmlHelperExtensions.cs" />
|
||||
<Compile Include="Extensions\UrlHelperExtensions.cs" />
|
||||
<Compile Include="Filters\ArchivesFilter.cs" />
|
||||
<Compile Include="Models\ArchiveData.cs" />
|
||||
@@ -136,16 +135,12 @@
|
||||
<Content Include="Views\DisplayTemplates\Parts\Blogs.Blog.Manage.ascx" />
|
||||
<Content Include="Views\DisplayTemplates\Parts\Blogs.BlogPost.List.ascx" />
|
||||
<Content Include="Views\DisplayTemplates\Items\Blogs.Blog.Summary.ascx" />
|
||||
<Content Include="Views\DisplayTemplates\Parts\Blogs.BlogPost.Metadata.ascx" />
|
||||
<Content Include="Views\DisplayTemplates\Parts\Blogs.Blog.Description.ascx" />
|
||||
<Content Include="Views\DisplayTemplates\Parts\Blogs.Blog.Metadata.ascx" />
|
||||
<Content Include="Views\DisplayTemplates\Parts\Blogs.BlogPost.Metadata.SummaryAdmin.ascx" />
|
||||
<Content Include="Views\DisplayTemplates\Parts\Blogs.BlogPost.Metadata.Summary.ascx" />
|
||||
<Content Include="Views\BlogPost\Item.ascx" />
|
||||
<Content Include="Views\BlogAdmin\Create.ascx" />
|
||||
<Content Include="Views\BlogAdmin\Edit.ascx" />
|
||||
<Content Include="Views\Blog\Item.ascx" />
|
||||
<Content Include="Views\DisplayTemplates\Items\Blogs.BlogPost.SummaryAdmin.ascx" />
|
||||
<Content Include="Views\EditorTemplates\Parts\Blogs.Blog.Fields.ascx" />
|
||||
<Content Include="Views\EditorTemplates\Items\Blogs.Blog.ascx" />
|
||||
<Content Include="Views\EditorTemplates\Items\Blogs.BlogPost.ascx" />
|
||||
|
@@ -51,11 +51,11 @@ namespace Orchard.Blogs {
|
||||
},
|
||||
new RouteDescriptor {
|
||||
Route = new Route(
|
||||
"Admin/Blogs/{blogSlug}/Delete",
|
||||
"Admin/Blogs/{blogSlug}/Remove",
|
||||
new RouteValueDictionary {
|
||||
{"area", "Orchard.Blogs"},
|
||||
{"controller", "BlogAdmin"},
|
||||
{"action", "Delete"}
|
||||
{"action", "Remove"}
|
||||
},
|
||||
new RouteValueDictionary {
|
||||
{"blogSlug", _blogSlugConstraint}
|
||||
|
@@ -2,6 +2,10 @@
|
||||
<%@ Import Namespace="Orchard.Mvc.ViewModels"%>
|
||||
<%@ Import Namespace="Orchard.Blogs.Extensions"%>
|
||||
<%@ Import Namespace="Orchard.Blogs.Models"%>
|
||||
<%@ Import Namespace="Orchard.Core.Common.Extensions" %>
|
||||
<%@ Import Namespace="Orchard.Core.Common.Models" %>
|
||||
<%@ Import Namespace="Orchard.ContentManagement" %>
|
||||
<%@ Import Namespace="Orchard.Core.Common.ViewModels" %>
|
||||
<h2><%: Html.Link(Model.Item.Title, Url.BlogPost(Model.Item)) %></h2>
|
||||
<div class="meta"><%: Html.PublishedState(Model.Item, T) %> | <%Html.Zone("meta");%></div>
|
||||
<div class="meta"><%: Html.PublishedState(new CommonMetadataViewModel(Model.Item.As<CommonAspect>()), T) %> | <%Html.Zone("meta");%></div>
|
||||
<div class="content"><% Html.Zone("primary", ":manage :metadata");%></div>
|
||||
|
@@ -1,58 +0,0 @@
|
||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<ContentItemViewModel<BlogPost>>" %>
|
||||
<%@ Import Namespace="Orchard.ContentManagement.Aspects"%>
|
||||
<%@ Import Namespace="Orchard.ContentManagement"%>
|
||||
<%@ Import Namespace="Orchard.Mvc.ViewModels"%>
|
||||
<%@ Import Namespace="Orchard.Blogs.Extensions"%>
|
||||
<%@ Import Namespace="Orchard.Blogs.Models"%>
|
||||
<div class="summary">
|
||||
<div class="properties">
|
||||
<h3><%: Html.Link(Model.Item.Title, Url.BlogPostEdit(Model.Item))%></h3>
|
||||
<ul>
|
||||
<li><%
|
||||
if (Model.Item.HasPublished) { %>
|
||||
<img class="icon" src="<%=ResolveUrl("~/Modules/Orchard.Blogs/Content/Admin/images/online.gif") %>" alt="<%: T("Online") %>" title="<%: T("The page is currently online") %>" /> <%: T("Published")%><%
|
||||
}
|
||||
else { %>
|
||||
<img class="icon" src="<%=ResolveUrl("~/Modules/Orchard.Blogs/Content/Admin/images/offline.gif") %>" alt="<%: T("Offline") %>" title="<%: T("The page is currently offline") %>" /> <%: T("Not Published")%><%
|
||||
} %> |
|
||||
</li>
|
||||
<li><%
|
||||
if (Model.Item.HasDraft) { %>
|
||||
<img class="icon" src="<%=ResolveUrl("~/Modules/Orchard.Blogs/Content/Admin/images/draft.gif") %>" alt="<%: T("Draft") %>" title="<%: T("The post has a draft") %>" /><%: Html.PublishedState(Model.Item, T) %><%
|
||||
}
|
||||
else { %>
|
||||
<%: T("No draft")%><%
|
||||
} %> |
|
||||
</li>
|
||||
<li><%
|
||||
if (Model.Item.ScheduledPublishUtc.HasValue && Model.Item.ScheduledPublishUtc.Value > DateTime.UtcNow) { %>
|
||||
<img class="icon" src="<%=ResolveUrl("~/Modules/Orchard.Blogs/Content/Admin/images/scheduled.gif") %>" alt="<%: T("Scheduled") %>" title="<%: T("The post is scheduled for publishing") %>" /><%: T("Scheduled")%>
|
||||
<%: Html.DateTime(Model.Item.ScheduledPublishUtc.Value, T("M/d/yyyy h:mm tt"))%><%
|
||||
}
|
||||
else if (Model.Item.IsPublished) { %>
|
||||
<%: T("Published: {0}", Html.DateTimeRelative(Model.Item.As<ICommonAspect>().VersionPublishedUtc.Value, T)) %><%
|
||||
}
|
||||
else { %>
|
||||
<%: T("Last modified: {0}", Html.DateTimeRelative(Model.Item.As<ICommonAspect>().ModifiedUtc.Value, T)) %><%
|
||||
} %> |
|
||||
</li>
|
||||
<li><%: T("By {0}", Model.Item.Creator.UserName)%></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="related"><%
|
||||
if (Model.Item.HasPublished){ %>
|
||||
<a href="<%: Url.BlogPost(Model.Item) %>" title="<%: T("View Post")%>"><%: T("View")%></a><%: T(" | ")%><%
|
||||
if (Model.Item.HasDraft) { %>
|
||||
<a href="<%: Html.AntiForgeryTokenGetUrl(Url.BlogPostPublish(Model.Item)) %>" title="<%: T("Publish Draft")%>"><%: T("Publish Draft")%></a><%: T(" | ")%><%
|
||||
} %>
|
||||
<a href="<%: Html.AntiForgeryTokenGetUrl(Url.BlogPostUnpublish(Model.Item)) %>" title="<%: T("Unpublish Post")%>"><%: T("Unpublish")%></a><%: T(" | ")%><%
|
||||
}
|
||||
else { %>
|
||||
<a href="<%: Html.AntiForgeryTokenGetUrl(Url.BlogPostPublish(Model.Item)) %>" title="<%: T("Publish Post")%>"><%: T("Publish")%></a><%: T(" | ")%><%
|
||||
} %>
|
||||
<a href="<%: Url.BlogPostEdit(Model.Item) %>" title="<%: T("Edit Post")%>"><%: T("Edit")%></a><%: T(" | ")%>
|
||||
<a href="<%: Html.AntiForgeryTokenGetUrl(Url.BlogPostDelete(Model.Item)) %>" title="<%: T("Remove Post")%>"><%: T("Remove")%></a>
|
||||
<br /><%Html.Zone("meta");%>
|
||||
</div>
|
||||
<div style="clear:both;"></div>
|
||||
</div>
|
@@ -1,6 +0,0 @@
|
||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<BlogPost>" %>
|
||||
<%@ Import Namespace="Orchard.Blogs.Extensions"%>
|
||||
<%@ Import Namespace="Orchard.Blogs.Models"%><%
|
||||
if (Model.Creator != null) {
|
||||
%><span class="posted"><%: T("Posted by {0} {1}", Model.Creator.UserName, Html.PublishedWhen(Model, T)) %> | </span><%
|
||||
} %>
|
@@ -1,2 +0,0 @@
|
||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<BlogPost>" %>
|
||||
<%@ Import Namespace="Orchard.Blogs.Models"%>
|
@@ -1,8 +0,0 @@
|
||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<BlogPost>" %>
|
||||
<%@ Import Namespace="Orchard.Blogs.Extensions"%>
|
||||
<%@ Import Namespace="Orchard.Blogs.Models"%>
|
||||
<div class="metadata"><%
|
||||
if (Model.Creator != null) {
|
||||
%><div class="posted"><%: T("Posted by {0} {1}", Model.Creator.UserName, Html.PublishedWhen(Model, T)) %></div><%
|
||||
} %>
|
||||
</div>
|
@@ -24,7 +24,6 @@ using Orchard.Reports.Services;
|
||||
using Orchard.Security;
|
||||
using Orchard.Settings;
|
||||
using Orchard.Themes;
|
||||
using Orchard.UI.Notify;
|
||||
using Orchard.Environment.State;
|
||||
using Orchard.Data.Migration;
|
||||
|
||||
@@ -39,7 +38,6 @@ namespace Orchard.Setup.Services {
|
||||
|
||||
public SetupService(
|
||||
ShellSettings shellSettings,
|
||||
INotifier notifier,
|
||||
IOrchardHost orchardHost,
|
||||
IShellSettingsManager shellSettingsManager,
|
||||
IShellContainerFactory shellContainerFactory,
|
||||
|
@@ -2,6 +2,7 @@
|
||||
<%@ Import Namespace="Orchard.Mvc.ViewModels"%>
|
||||
<%@ Import Namespace="Orchard.Blogs.Extensions"%>
|
||||
<%@ Import Namespace="Orchard.Blogs.Models"%>
|
||||
<%@ Import Namespace="Orchard.Core.Common.Extensions" %>
|
||||
<%Model.Zones.AddRenderPartial("zonetest", "ZoneTest", Model); %>
|
||||
<h2><%: Html.Link(Model.Item.Title, Url.BlogPost(Model.Item)) %></h2>
|
||||
<div class="meta"><%: Html.PublishedState(Model.Item, T) %> | <%Html.Zone("meta");%></div>
|
||||
|
@@ -1,6 +1,7 @@
|
||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<BlogPost>" %>
|
||||
<%@ Import Namespace="Orchard.Blogs.Extensions"%>
|
||||
<%@ Import Namespace="Orchard.Blogs.Models"%><%
|
||||
<%@ Import Namespace="Orchard.Blogs.Models"%>
|
||||
<%@ Import Namespace="Orchard.Core.Common.Extensions" %><%
|
||||
if (Model.Creator != null) {
|
||||
%><%: T("Posted by {0} {1}", Model.Creator.UserName, Html.PublishedWhen(Model, T)) %><%
|
||||
} %>
|
@@ -2,6 +2,7 @@
|
||||
<%@ Import Namespace="Orchard.Mvc.ViewModels"%>
|
||||
<%@ Import Namespace="Orchard.Blogs.Extensions"%>
|
||||
<%@ Import Namespace="Orchard.Blogs.Models"%>
|
||||
<%@ Import Namespace="Orchard.Core.Common.Extensions" %>
|
||||
<%Model.Zones.AddRenderPartial("zonetest", "ZoneTest", Model); %>
|
||||
<h2><%: Html.Link(Model.Item.Title, Url.BlogPost(Model.Item)) %></h2>
|
||||
<div class="meta"><%: Html.PublishedState(Model.Item, T) %> | <%Html.Zone("meta");%></div>
|
||||
|
@@ -1,6 +1,7 @@
|
||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<BlogPost>" %>
|
||||
<%@ Import Namespace="Orchard.Blogs.Extensions"%>
|
||||
<%@ Import Namespace="Orchard.Blogs.Models"%><%
|
||||
<%@ Import Namespace="Orchard.Blogs.Models"%>
|
||||
<%@ Import Namespace="Orchard.Core.Common.Extensions" %><%
|
||||
if (Model.Creator != null) {
|
||||
%><%: T("Posted by {0} {1}", Model.Creator.UserName, Html.PublishedWhen(Model, T)) %><%
|
||||
} %>
|
@@ -2,6 +2,7 @@
|
||||
<%@ Import Namespace="Orchard.Mvc.ViewModels"%>
|
||||
<%@ Import Namespace="Orchard.Blogs.Extensions"%>
|
||||
<%@ Import Namespace="Orchard.Blogs.Models"%>
|
||||
<%@ Import Namespace="Orchard.Core.Common.Extensions" %>
|
||||
<h3><%: Html.Link(Model.Item.Title, Url.BlogPost(Model.Item)) %></h3>
|
||||
<div class="meta"><%: Html.PublishedState(Model.Item, T) %> | <%Html.Zone("meta");%></div>
|
||||
<div class="postsummary">
|
||||
|
@@ -1,6 +1,7 @@
|
||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<BlogPost>" %>
|
||||
<%@ Import Namespace="Orchard.Blogs.Extensions"%>
|
||||
<%@ Import Namespace="Orchard.Blogs.Models"%><%
|
||||
<%@ Import Namespace="Orchard.Blogs.Models"%>
|
||||
<%@ Import Namespace="Orchard.Core.Common.Extensions" %><%
|
||||
if (Model.Creator != null) {
|
||||
%><%: T("Posted by {0} {1}", Model.Creator.UserName, Html.PublishedWhen(Model, T)) %><%
|
||||
} %>
|
@@ -13,6 +13,7 @@ namespace Orchard.ContentManagement {
|
||||
public RouteValueDictionary DisplayRouteValues { get; set; }
|
||||
public RouteValueDictionary EditorRouteValues { get; set; }
|
||||
public RouteValueDictionary CreateRouteValues { get; set; }
|
||||
public RouteValueDictionary RemoveRouteValues { get; set; }
|
||||
|
||||
public IEnumerable<string> DisplayGroups { get; set; }
|
||||
public IEnumerable<string> EditorGroups { get; set; }
|
||||
@@ -43,5 +44,13 @@ namespace Orchard.ContentManagement {
|
||||
{"id", item.ContentItem.ContentType}
|
||||
};
|
||||
}
|
||||
|
||||
private static RouteValueDictionary GetRemoveRouteValues(IContent item) {
|
||||
return new RouteValueDictionary {
|
||||
{"Area", "Contents"},
|
||||
{"Controller", "Admin"},
|
||||
{"Action", "Remove"}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user