diff --git a/src/Orchard.Web.Tests/Routes/RouteTests.cs b/src/Orchard.Web.Tests/Routes/RouteTests.cs
index d5e4447d6..f14bc4a87 100644
--- a/src/Orchard.Web.Tests/Routes/RouteTests.cs
+++ b/src/Orchard.Web.Tests/Routes/RouteTests.cs
@@ -20,57 +20,6 @@ namespace Orchard.Web.Tests.Routes {
Assert.That(routeData.RouteHandler, Is.TypeOf());
}
- [Test]
- public void RouteWithControllerNoActionNoId() {
- // Arrange
- var context = new StubContext("~/controller1");
- var routes = new RouteCollection();
- MvcApplication.RegisterRoutes(routes);
-
- // Act
- var routeData = routes.GetRouteData(context);
-
- // Assert
- Assert.That(routeData, Is.Not.Null);
- Assert.That(routeData.Values["controller"], Is.EqualTo("controller1"));
- Assert.That(routeData.Values["action"], Is.EqualTo("Index"));
- Assert.That(routeData.Values["id"], Is.EqualTo(""));
- }
-
- [Test]
- public void RouteWithControllerWithActionNoId() {
- // Arrange
- var context = new StubContext("~/controller1/action2");
- var routes = new RouteCollection();
- MvcApplication.RegisterRoutes(routes);
-
- // Act
- var routeData = routes.GetRouteData(context);
-
- // Assert
- Assert.That(routeData, Is.Not.Null);
- Assert.That(routeData.Values["controller"], Is.EqualTo("controller1"));
- Assert.That(routeData.Values["action"], Is.EqualTo("action2"));
- Assert.That(routeData.Values["id"], Is.EqualTo(""));
- }
-
- [Test]
- public void RouteWithControllerWithActionWithId() {
- // Arrange
- var context = new StubContext("~/controller1/action2/id3");
- var routes = new RouteCollection();
- MvcApplication.RegisterRoutes(routes);
-
- // Act
- var routeData = routes.GetRouteData(context);
-
- // Assert
- Assert.That(routeData, Is.Not.Null);
- Assert.That(routeData.Values["controller"], Is.EqualTo("controller1"));
- Assert.That(routeData.Values["action"], Is.EqualTo("action2"));
- Assert.That(routeData.Values["id"], Is.EqualTo("id3"));
- }
-
[Test]
public void RouteWithTooManySegments() {
// Arrange
diff --git a/src/Orchard.Web/Core/Dashboard/AdminMenu.cs b/src/Orchard.Web/Core/Dashboard/AdminMenu.cs
new file mode 100644
index 000000000..7dd49f326
--- /dev/null
+++ b/src/Orchard.Web/Core/Dashboard/AdminMenu.cs
@@ -0,0 +1,13 @@
+using Orchard.Security;
+using Orchard.UI.Navigation;
+
+namespace Orchard.Core.Dashboard {
+ public class AdminMenu : INavigationProvider {
+ public string MenuName { get { return "admin"; } }
+
+ public void GetNavigation(NavigationBuilder builder) {
+ builder.Add("Dashboard", "0",
+ menu => menu.Add("Manage Orchard", "0", item => item.Action("Index", "Admin", new { area = "Dashboard" }).Permission(StandardPermissions.AccessAdminPanel)));
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Orchard.Web/Core/Dashboard/Controllers/AdminController.cs b/src/Orchard.Web/Core/Dashboard/Controllers/AdminController.cs
new file mode 100644
index 000000000..336cd77da
--- /dev/null
+++ b/src/Orchard.Web/Core/Dashboard/Controllers/AdminController.cs
@@ -0,0 +1,10 @@
+using System.Web.Mvc;
+using Orchard.Mvc.ViewModels;
+
+namespace Orchard.Core.Dashboard.Controllers {
+ public class AdminController : Controller {
+ public ActionResult Index() {
+ return View(new AdminViewModel());
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Orchard.Web/Core/Dashboard/Module.txt b/src/Orchard.Web/Core/Dashboard/Module.txt
new file mode 100644
index 000000000..59da47d50
--- /dev/null
+++ b/src/Orchard.Web/Core/Dashboard/Module.txt
@@ -0,0 +1 @@
+name: Dashboard
\ No newline at end of file
diff --git a/src/Orchard.Web/Core/Dashboard/Routes.cs b/src/Orchard.Web/Core/Dashboard/Routes.cs
new file mode 100644
index 000000000..7662158f1
--- /dev/null
+++ b/src/Orchard.Web/Core/Dashboard/Routes.cs
@@ -0,0 +1,33 @@
+using System.Collections.Generic;
+using System.Web.Mvc;
+using System.Web.Routing;
+using Orchard.Mvc.Routes;
+
+namespace Orchard.Core.Dashboard {
+ public class Routes : IRouteProvider {
+ public void GetRoutes(ICollection routes) {
+ foreach (var routeDescriptor in GetRoutes())
+ routes.Add(routeDescriptor);
+ }
+
+ public IEnumerable GetRoutes() {
+ return new[] {
+ new RouteDescriptor {
+ Priority = -5,
+ Route = new Route(
+ "Admin",
+ new RouteValueDictionary {
+ {"area", "Dashboard"},
+ {"controller", "admin"},
+ {"action", "index"}
+ },
+ new RouteValueDictionary(),
+ new RouteValueDictionary {
+ {"area", "Dashboard"}
+ },
+ new MvcRouteHandler())
+ }
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Orchard.Web/Core/Dashboard/Views/Admin/Index.ascx b/src/Orchard.Web/Core/Dashboard/Views/Admin/Index.ascx
new file mode 100644
index 000000000..4500ada19
--- /dev/null
+++ b/src/Orchard.Web/Core/Dashboard/Views/Admin/Index.ascx
@@ -0,0 +1,4 @@
+<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl" %>
+<%@ Import Namespace="Orchard.Mvc.ViewModels"%>
+<%=Html.TitleForPage(T("Orchard Admin").ToString())%>
+<%=T("Insert admin text here -> ·") %>
\ No newline at end of file
diff --git a/src/Orchard.Web/Core/Dashboard/Views/Web.config b/src/Orchard.Web/Core/Dashboard/Views/Web.config
new file mode 100644
index 000000000..7022197d4
--- /dev/null
+++ b/src/Orchard.Web/Core/Dashboard/Views/Web.config
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Orchard.Web/Core/Navigation/Controllers/AdminController.cs b/src/Orchard.Web/Core/Navigation/Controllers/AdminController.cs
index ea9a76b21..3c41ffe1a 100644
--- a/src/Orchard.Web/Core/Navigation/Controllers/AdminController.cs
+++ b/src/Orchard.Web/Core/Navigation/Controllers/AdminController.cs
@@ -108,8 +108,12 @@ namespace Orchard.Core.Navigation.Controllers {
MenuPart menuPart = _menuService.Get(id);
- if (menuPart != null)
- _menuService.Delete(menuPart);
+ if (menuPart != null) {
+ if (menuPart.Is())
+ _menuService.Delete(menuPart);
+ else
+ menuPart.OnMainMenu = false;
+ }
return RedirectToAction("Index");
}
diff --git a/src/Orchard.Web/Core/Navigation/Drivers/MenuPartDriver.cs b/src/Orchard.Web/Core/Navigation/Drivers/MenuPartDriver.cs
index 74c057ec0..21c7cfa71 100644
--- a/src/Orchard.Web/Core/Navigation/Drivers/MenuPartDriver.cs
+++ b/src/Orchard.Web/Core/Navigation/Drivers/MenuPartDriver.cs
@@ -1,7 +1,9 @@
-using JetBrains.Annotations;
+using System;
+using JetBrains.Annotations;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Drivers;
using Orchard.Core.Navigation.Models;
+using Orchard.Localization;
using Orchard.Security;
using Orchard.UI.Navigation;
using Orchard.Utility;
@@ -15,9 +17,11 @@ namespace Orchard.Core.Navigation.Drivers {
public MenuPartDriver(IAuthorizationService authorizationService, INavigationManager navigationManager) {
_authorizationService = authorizationService;
_navigationManager = navigationManager;
+ T = NullLocalizer.Instance;
}
public virtual IUser CurrentUser { get; set; }
+ private Localizer T { get; set; }
protected override DriverResult Editor(MenuPart part) {
if (!_authorizationService.TryCheckAccess(Permissions.ManageMainMenu, CurrentUser, part))
@@ -34,6 +38,9 @@ namespace Orchard.Core.Navigation.Drivers {
part.MenuPosition = Position.GetNext(_navigationManager.BuildMenu("main"));
updater.TryUpdateModel(part, Prefix, null, null);
+ if (part.OnMainMenu && String.IsNullOrEmpty(part.MenuText)) {
+ updater.AddModelError("MenuText", T("The MenuText field is required"));
+ }
return ContentPartTemplate(part, "Parts/Navigation.EditMenuPart").Location("primary", "9");
}
}
diff --git a/src/Orchard.Web/Core/Navigation/Models/MenuPart.cs b/src/Orchard.Web/Core/Navigation/Models/MenuPart.cs
index 120eb2f42..952f7c160 100644
--- a/src/Orchard.Web/Core/Navigation/Models/MenuPart.cs
+++ b/src/Orchard.Web/Core/Navigation/Models/MenuPart.cs
@@ -13,7 +13,6 @@ namespace Orchard.Core.Navigation.Models {
set { Record.OnMainMenu = value; }
}
- [Required]
public string MenuText {
get { return Record.MenuText; }
set { Record.MenuText = value; }
diff --git a/src/Orchard.Web/Core/Navigation/Views/Admin/Index.ascx b/src/Orchard.Web/Core/Navigation/Views/Admin/Index.ascx
index 32ccebc10..096602bb8 100644
--- a/src/Orchard.Web/Core/Navigation/Views/Admin/Index.ascx
+++ b/src/Orchard.Web/Core/Navigation/Views/Admin/Index.ascx
@@ -26,8 +26,8 @@ using (Html.BeginFormAntiForgeryPost()) { %>
- <% if (!menuPartEntry.IsMenuItem) { %> <% } else { %> <% } %>
- " class="remove button">delete
+ <% if (!menuPartEntry.IsMenuItem) { %> <% } else { %> <% } %>
+ " class="remove"><%=_Encoded(menuPartEntry.IsMenuItem ? "Delete" : "Remove") %>
<%
++menuPartEntryIndex;
} %>
diff --git a/src/Orchard.Web/Core/Orchard.Core.csproj b/src/Orchard.Web/Core/Orchard.Core.csproj
index 3179fa878..31316193e 100644
--- a/src/Orchard.Web/Core/Orchard.Core.csproj
+++ b/src/Orchard.Web/Core/Orchard.Core.csproj
@@ -84,6 +84,9 @@
+
+
+
@@ -212,6 +215,8 @@
+
+
@@ -221,6 +226,9 @@
+
+
+
diff --git a/src/Orchard.Web/Core/Themes/Models/Theme.cs b/src/Orchard.Web/Core/Themes/Models/Theme.cs
index 3724c25eb..444625c9a 100644
--- a/src/Orchard.Web/Core/Themes/Models/Theme.cs
+++ b/src/Orchard.Web/Core/Themes/Models/Theme.cs
@@ -14,6 +14,7 @@ namespace Orchard.Core.Themes.Models {
public string Version { get; set; }
public string Author { get; set; }
public string HomePage { get; set; }
+ public string Tags { get; set; }
#endregion
}
diff --git a/src/Orchard.Web/Core/Themes/Records/ThemeRecord.cs b/src/Orchard.Web/Core/Themes/Records/ThemeRecord.cs
index e94479489..6a1f7e02e 100644
--- a/src/Orchard.Web/Core/Themes/Records/ThemeRecord.cs
+++ b/src/Orchard.Web/Core/Themes/Records/ThemeRecord.cs
@@ -8,5 +8,6 @@ namespace Orchard.Core.Themes.Records {
public virtual string Version { get; set; }
public virtual string Author { get; set; }
public virtual string HomePage { get; set; }
+ public virtual string Tags { get; set; }
}
}
\ No newline at end of file
diff --git a/src/Orchard.Web/Core/Themes/Services/ThemeService.cs b/src/Orchard.Web/Core/Themes/Services/ThemeService.cs
index 737b88030..0dbc1d4a8 100644
--- a/src/Orchard.Web/Core/Themes/Services/ThemeService.cs
+++ b/src/Orchard.Web/Core/Themes/Services/ThemeService.cs
@@ -74,6 +74,7 @@ namespace Orchard.Core.Themes.Services {
HomePage = descriptor.HomePage ?? String.Empty,
ThemeName = descriptor.Name,
Version = descriptor.Version ?? String.Empty,
+ Tags = descriptor.Tags ?? String.Empty
};
}
}
@@ -83,9 +84,7 @@ namespace Orchard.Core.Themes.Services {
public IEnumerable GetInstalledThemes() {
List themes = new List();
foreach (var descriptor in _extensionManager.AvailableExtensions()) {
- //todo: (heskew) filter out Admin themes in a different manner - eventually we'll need a way to select the admin theme so there should be a clear separation
- if (String.Equals(descriptor.ExtensionType, "Theme", StringComparison.OrdinalIgnoreCase)
- && !(descriptor.Name.EndsWith("Admin", StringComparison.OrdinalIgnoreCase))) {
+ if (String.Equals(descriptor.ExtensionType, "Theme", StringComparison.OrdinalIgnoreCase)) {
Theme theme = new Theme {
Author = descriptor.Author ?? String.Empty,
Description = descriptor.Description ?? String.Empty,
@@ -93,14 +92,16 @@ namespace Orchard.Core.Themes.Services {
HomePage = descriptor.HomePage ?? String.Empty,
ThemeName = descriptor.Name,
Version = descriptor.Version ?? String.Empty,
+ Tags = descriptor.Tags ?? String.Empty
};
- themes.Add(theme);
+ if (!theme.Tags.Contains("hidden")) {
+ themes.Add(theme);
+ }
}
}
return themes;
}
-
public void InstallTheme(HttpPostedFileBase file) {
_extensionManager.InstallExtension("Theme", file);
}
diff --git a/src/Orchard.Web/Core/Themes/Views/Admin/Index.aspx b/src/Orchard.Web/Core/Themes/Views/Admin/Index.aspx
index 36802991e..dbdf3db42 100644
--- a/src/Orchard.Web/Core/Themes/Views/Admin/Index.aspx
+++ b/src/Orchard.Web/Core/Themes/Views/Admin/Index.aspx
@@ -9,15 +9,16 @@
} else {
%><%=_Encoded("Current Theme")%> - <%=Html.Encode(Model.CurrentTheme.DisplayName) %>
- <%=Html.Image(Html.ThemePath(Model.CurrentTheme, "/Theme.png"), Html.Encode(Model.CurrentTheme.DisplayName), null)%>
+ <%=Html.Image(Html.ThemePath(Model.CurrentTheme, "/Theme.png"), Html.Encode(Model.CurrentTheme.DisplayName), new { @class = "themePreviewImage" })%>
<%=_Encoded("By") %> <%=Html.Encode(Model.CurrentTheme.Author) %>
<%=_Encoded("Version:") %> <%=Html.Encode(Model.CurrentTheme.Version) %>
<%=Html.Encode(Model.CurrentTheme.Description) %>
- <%=Html.Encode(Model.CurrentTheme.HomePage) %>
- <%=Html.ActionLink(T("Install a new Theme").ToString(), "Install") %>
-
+ <%=Html.Encode(Model.CurrentTheme.HomePage) %>
+
+ <%=Html.ActionLink(T("Install a new Theme").ToString(), "Install", null, new { @class = "button primaryAction" })%>
+
<% } %>
<%=_Encoded("Available Themes")%>
diff --git a/src/Orchard.Web/Core/Themes/Views/User.ascx b/src/Orchard.Web/Core/Themes/Views/User.ascx
index e35f6fe07..2baa90434 100644
--- a/src/Orchard.Web/Core/Themes/Views/User.ascx
+++ b/src/Orchard.Web/Core/Themes/Views/User.ascx
@@ -3,8 +3,8 @@
<% if (Request.IsAuthenticated) { %>
<%=T("Welcome,
{0} !", Html.Encode(Page.User.Identity.Name)) %>
- <%=Html.Link(T("Admin").ToString(), "/admin/blogs") %> /
- <%=Html.ActionLink(T("Log Off").ToString(), "LogOff", new { Controller = "Account", Area = "Orchard.Users" }) %>
+ <%=Html.ActionLink(T("Log Off").ToString(), "LogOff", new { Controller = "Account", Area = "Orchard.Users" })%>
+ | <%= Html.ActionLink("Admin", "Index", new {Area = "Dashboard", Controller = "Admin"})%>
<% } else { %>
<%=Html.ActionLink(T("Log On").ToString(), "LogOn", new { Controller = "Account", Area = "Orchard.Users", ReturnUrl = Context.Request.RawUrl }) %>
<% } %>
diff --git a/src/Orchard.Web/Global.asax.cs b/src/Orchard.Web/Global.asax.cs
index 9886c450b..1ac2cccbf 100644
--- a/src/Orchard.Web/Global.asax.cs
+++ b/src/Orchard.Web/Global.asax.cs
@@ -16,12 +16,6 @@ namespace Orchard.Web {
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
-
- routes.MapRoute(
- "Default", // Route name
- "{controller}/{action}/{id}", // URL with parameters
- new { controller = "Home", action = "Index", id = "" } // Parameter defaults
- );
}
protected void Application_Start() {
diff --git a/src/Orchard.Web/Media/OrchardLogo.png b/src/Orchard.Web/Media/OrchardLogo.png
new file mode 100644
index 000000000..f6caf5ca5
Binary files /dev/null and b/src/Orchard.Web/Media/OrchardLogo.png differ
diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogAdmin/List.ascx b/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogAdmin/List.ascx
index 00abd5c91..c2a0873bc 100644
--- a/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogAdmin/List.ascx
+++ b/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogAdmin/List.ascx
@@ -4,7 +4,7 @@
<%=Html.TitleForPage(T("Manage Blogs").ToString()) %>
<%-- todo: Add helper text here when ready.
<%=_Encoded("Possible text about setting up and managing a blog goes here.") %>
--%><%
if (Model.Entries.Count() > 0) { %>
-
+
<%=Html.UnorderedList(Model.Entries, (entry, i) => {
// Add blog post count rendering into "meta" zone
entry.ContentItemViewModel.Zones.AddAction("meta", html => {
@@ -20,7 +20,7 @@ if (Model.Entries.Count() > 0) { %>
// Display the summary for the blog post
return Html.DisplayForItem(entry.ContentItemViewModel).ToHtmlString();
}, "blogs contentItems")%>
-
<%
+
<%
} else { %>
<%=T("There are no blogs for you to see. Want to
add one ?", Url.BlogCreate()).ToString()%>
<%
} %>
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Views/DisplayTemplates/Items/Blogs.Blog.SummaryAdmin.ascx b/src/Orchard.Web/Modules/Orchard.Blogs/Views/DisplayTemplates/Items/Blogs.Blog.SummaryAdmin.ascx
index 7934feca6..1bf961365 100644
--- a/src/Orchard.Web/Modules/Orchard.Blogs/Views/DisplayTemplates/Items/Blogs.Blog.SummaryAdmin.ascx
+++ b/src/Orchard.Web/Modules/Orchard.Blogs/Views/DisplayTemplates/Items/Blogs.Blog.SummaryAdmin.ascx
@@ -2,23 +2,30 @@
<%@ Import Namespace="Orchard.Mvc.ViewModels"%>
<%@ Import Namespace="Orchard.Blogs.Extensions"%>
<%@ Import Namespace="Orchard.Blogs.Models"%>
-
<%=Html.Link(Html.Encode(Model.Item.Name), Url.BlogForAdmin(Model.Item.Slug)) %>
-
<%Html.Zone("meta");%>
+
+
+
+
<%=Html.Link(Html.Encode(Model.Item.Name), Url.BlogForAdmin(Model.Item.Slug)) %>
+
<%Html.Zone("meta");%>
<%--
[list of authors] [modify blog access]
--%>
-
<%=Html.Encode(Model.Item.Description) %>
-
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Views/DisplayTemplates/Items/Blogs.BlogPost.SummaryAdmin.ascx b/src/Orchard.Web/Modules/Orchard.Blogs/Views/DisplayTemplates/Items/Blogs.BlogPost.SummaryAdmin.ascx
index 173c79d2c..d0b721cdf 100644
--- a/src/Orchard.Web/Modules/Orchard.Blogs/Views/DisplayTemplates/Items/Blogs.BlogPost.SummaryAdmin.ascx
+++ b/src/Orchard.Web/Modules/Orchard.Blogs/Views/DisplayTemplates/Items/Blogs.BlogPost.SummaryAdmin.ascx
@@ -7,7 +7,7 @@
<%@ Import Namespace="Orchard.Blogs.Extensions"%>
<%@ Import Namespace="Orchard.Blogs.Models"%>
-
+
<%=Html.Link(Html.Encode(Model.Item.Title), Url.BlogPostEdit(Model.Item.Blog.Slug, Model.Item.Id))%>
diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Controllers/CommentController.cs b/src/Orchard.Web/Modules/Orchard.Comments/Controllers/CommentController.cs
index 24ca875e8..2987f2d11 100644
--- a/src/Orchard.Web/Modules/Orchard.Comments/Controllers/CommentController.cs
+++ b/src/Orchard.Web/Modules/Orchard.Comments/Controllers/CommentController.cs
@@ -49,10 +49,10 @@ namespace Orchard.Comments.Controllers {
CommentText = viewModel.CommentText,
Email = viewModel.Email,
SiteName = viewModel.SiteName,
- CommentedOn = viewModel.CommentedOn,
+ CommentedOn = viewModel.CommentedOn
};
- Comment comment = _commentService.CreateComment(context);
+ Comment comment = _commentService.CreateComment(context, CurrentSite.As().Record.ModerateComments);
if (!String.IsNullOrEmpty(returnUrl)) {
if (comment.Record.Status == CommentStatus.Pending)
diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Models/CommentDriver.cs b/src/Orchard.Web/Modules/Orchard.Comments/Controllers/CommentDriver.cs
similarity index 57%
rename from src/Orchard.Web/Modules/Orchard.Comments/Models/CommentDriver.cs
rename to src/Orchard.Web/Modules/Orchard.Comments/Controllers/CommentDriver.cs
index b17b03bad..4f67910c4 100644
--- a/src/Orchard.Web/Modules/Orchard.Comments/Models/CommentDriver.cs
+++ b/src/Orchard.Web/Modules/Orchard.Comments/Controllers/CommentDriver.cs
@@ -1,14 +1,15 @@
using JetBrains.Annotations;
+using Orchard.Comments.Models;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Drivers;
-namespace Orchard.Comments.Models {
+namespace Orchard.Comments.Controllers {
[UsedImplicitly]
public class CommentDriver : ContentItemDriver {
public readonly static ContentType ContentType = new ContentType {
- Name = "comment",
- DisplayName = "Comment"
- };
+ Name = "comment",
+ DisplayName = "Comment"
+ };
protected override ContentType GetContentType() {
return ContentType;
diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Models/HasCommentsContainerDriver.cs b/src/Orchard.Web/Modules/Orchard.Comments/Controllers/HasCommentsContainerDriver.cs
similarity index 93%
rename from src/Orchard.Web/Modules/Orchard.Comments/Models/HasCommentsContainerDriver.cs
rename to src/Orchard.Web/Modules/Orchard.Comments/Controllers/HasCommentsContainerDriver.cs
index f10143124..7c04ff41c 100644
--- a/src/Orchard.Web/Modules/Orchard.Comments/Models/HasCommentsContainerDriver.cs
+++ b/src/Orchard.Web/Modules/Orchard.Comments/Controllers/HasCommentsContainerDriver.cs
@@ -1,11 +1,12 @@
using System.Linq;
using JetBrains.Annotations;
+using Orchard.Comments.Models;
using Orchard.Comments.ViewModels;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Drivers;
using Orchard.Core.Common.Records;
-namespace Orchard.Comments.Models {
+namespace Orchard.Comments.Controllers {
[UsedImplicitly]
public class HasCommentsContainerDriver : ContentPartDriver {
protected override DriverResult Display(HasCommentsContainer part, string displayType) {
diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Models/HasCommentsDriver.cs b/src/Orchard.Web/Modules/Orchard.Comments/Controllers/HasCommentsDriver.cs
similarity index 94%
rename from src/Orchard.Web/Modules/Orchard.Comments/Models/HasCommentsDriver.cs
rename to src/Orchard.Web/Modules/Orchard.Comments/Controllers/HasCommentsDriver.cs
index 626bfbf6b..36554b1ab 100644
--- a/src/Orchard.Web/Modules/Orchard.Comments/Models/HasCommentsDriver.cs
+++ b/src/Orchard.Web/Modules/Orchard.Comments/Controllers/HasCommentsDriver.cs
@@ -1,9 +1,10 @@
using JetBrains.Annotations;
+using Orchard.Comments.Models;
using Orchard.Comments.ViewModels;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Drivers;
-namespace Orchard.Comments.Models {
+namespace Orchard.Comments.Controllers {
[UsedImplicitly]
public class HasCommentsDriver : ContentPartDriver {
protected override DriverResult Display(HasComments part, string displayType) {
diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Models/CommentHandler.cs b/src/Orchard.Web/Modules/Orchard.Comments/Models/CommentHandler.cs
index f05601ad4..1efdaf1d0 100644
--- a/src/Orchard.Web/Modules/Orchard.Comments/Models/CommentHandler.cs
+++ b/src/Orchard.Web/Modules/Orchard.Comments/Models/CommentHandler.cs
@@ -1,4 +1,5 @@
using JetBrains.Annotations;
+using Orchard.Comments.Controllers;
using Orchard.ContentManagement.Handlers;
using Orchard.Core.Common.Models;
using Orchard.Data;
diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Models/CommentSettingsRecord.cs b/src/Orchard.Web/Modules/Orchard.Comments/Models/CommentSettingsRecord.cs
index 998949fda..618a6179e 100644
--- a/src/Orchard.Web/Modules/Orchard.Comments/Models/CommentSettingsRecord.cs
+++ b/src/Orchard.Web/Modules/Orchard.Comments/Models/CommentSettingsRecord.cs
@@ -3,6 +3,7 @@ using Orchard.ContentManagement.Records;
namespace Orchard.Comments.Models {
public class CommentSettingsRecord : ContentPartRecord {
public virtual bool RequireLoginToAddComment { get; set; }
+ public virtual bool ModerateComments { get; set; }
public virtual bool EnableSpamProtection { get; set; }
public virtual string AkismetKey { get; set; }
public virtual string AkismetUrl { get; set; }
diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj b/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj
index e875b7eb7..4bbd98c5b 100644
--- a/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj
+++ b/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj
@@ -68,16 +68,16 @@
+
+
+
-
-
-
diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Services/CommentService.cs b/src/Orchard.Web/Modules/Orchard.Comments/Services/CommentService.cs
index bb53f5ef0..71e4975c7 100644
--- a/src/Orchard.Web/Modules/Orchard.Comments/Services/CommentService.cs
+++ b/src/Orchard.Web/Modules/Orchard.Comments/Services/CommentService.cs
@@ -2,6 +2,7 @@
using System.Linq;
using JetBrains.Annotations;
using Orchard.Comments.Models;
+using Orchard.Comments.Controllers;
using Orchard.ContentManagement.Aspects;
using Orchard.Data;
using Orchard.Logging;
@@ -18,7 +19,7 @@ namespace Orchard.Comments.Services {
IEnumerable GetCommentsForCommentedContent(int id, CommentStatus status);
Comment GetComment(int id);
ContentItemMetadata GetDisplayForCommentedContent(int id);
- Comment CreateComment(CreateCommentContext commentRecord);
+ Comment CreateComment(CreateCommentContext commentRecord, bool moderateComments);
void UpdateComment(int id, string name, string email, string siteName, string commentText, CommentStatus status);
void ApproveComment(int commentId);
void PendComment(int commentId);
@@ -100,7 +101,7 @@ namespace Orchard.Comments.Services {
return _contentManager.GetItemMetadata(content);
}
- public Comment CreateComment(CreateCommentContext context) {
+ public Comment CreateComment(CreateCommentContext context, bool moderateComments) {
var comment = _contentManager.Create(CommentDriver.ContentType.Name);
comment.Record.Author = context.Author;
@@ -111,7 +112,7 @@ namespace Orchard.Comments.Services {
comment.Record.UserName = (CurrentUser == null ? context.Author : CurrentUser.UserName);
comment.Record.CommentedOn = context.CommentedOn;
- comment.Record.Status = _commentValidator.ValidateComment(comment) ? CommentStatus.Pending : CommentStatus.Spam;
+ comment.Record.Status = _commentValidator.ValidateComment(comment) ? moderateComments ? CommentStatus.Pending : CommentStatus.Approved : CommentStatus.Spam;
// store id of the next layer for large-grained operations, e.g. rss on blog
//TODO:(rpaquay) Get rid of this (comment aspect takes care of container)
diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Views/EditorTemplates/Parts/Comments.SiteSettings.ascx b/src/Orchard.Web/Modules/Orchard.Comments/Views/EditorTemplates/Parts/Comments.SiteSettings.ascx
index fa687e61f..09e78b7c7 100644
--- a/src/Orchard.Web/Modules/Orchard.Comments/Views/EditorTemplates/Parts/Comments.SiteSettings.ascx
+++ b/src/Orchard.Web/Modules/Orchard.Comments/Views/EditorTemplates/Parts/Comments.SiteSettings.ascx
@@ -7,6 +7,11 @@
<%=_Encoded("Require login to comment")%>
<%=Html.ValidationMessage("RequireLoginToAddComment", "*")%>
+
+ <%=Html.EditorFor(m => m.ModerateComments) %>
+ <%=_Encoded("Comments must be approved before they appear")%>
+ <%=Html.ValidationMessage("ModerateComments", "*")%>
+
<%=Html.EditorFor(m => m.EnableSpamProtection) %>
<%=_Encoded("Enable spam protection") %>
diff --git a/src/Orchard.Web/Modules/Orchard.Media/Views/Admin/Edit.aspx b/src/Orchard.Web/Modules/Orchard.Media/Views/Admin/Edit.aspx
index 32f41367d..588a44e26 100644
--- a/src/Orchard.Web/Modules/Orchard.Media/Views/Admin/Edit.aspx
+++ b/src/Orchard.Web/Modules/Orchard.Media/Views/Admin/Edit.aspx
@@ -48,7 +48,7 @@
"/>
- " name="<%=_Encoded("mediaFile.Name") %>" />
+
<%=Html.ActionLink(mediaFile.Name, "EditMedia", new { name = mediaFile.Name,
diff --git a/src/Orchard.Web/Modules/Orchard.Pages/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.Pages/Controllers/AdminController.cs
index f7d4bf322..b693610d9 100644
--- a/src/Orchard.Web/Modules/Orchard.Pages/Controllers/AdminController.cs
+++ b/src/Orchard.Web/Modules/Orchard.Pages/Controllers/AdminController.cs
@@ -132,6 +132,7 @@ namespace Orchard.Pages.Controllers {
}
Services.ContentManager.Create(model.Page.Item.ContentItem, VersionOptions.Draft);
+ Services.ContentManager.UpdateEditorModel(page, this);
// Execute publish command
switch (Request.Form["Command"]) {
diff --git a/src/Orchard.Web/Modules/Orchard.Setup/Views/Setup/Index.ascx b/src/Orchard.Web/Modules/Orchard.Setup/Views/Setup/Index.ascx
index 144fb71eb..450a52095 100644
--- a/src/Orchard.Web/Modules/Orchard.Setup/Views/Setup/Index.ascx
+++ b/src/Orchard.Web/Modules/Orchard.Setup/Views/Setup/Index.ascx
@@ -33,6 +33,7 @@ using (Html.BeginFormAntiForgeryPost()) { %>
<%=_Encoded("Connection string") %>
<%=Html.EditorFor(svm => svm.DatabaseConnectionString)%>
+ <%=_Encoded("Example: Data Source=sqlServerName;Initial Catalog=dbName;Persist Security Info=True;User ID=userName;Password=password") %>
diff --git a/src/Orchard.Web/Modules/Orchard.Tags/Models/TagSettings.cs b/src/Orchard.Web/Modules/Orchard.Tags/Models/TagSettings.cs
deleted file mode 100644
index 3e1225773..000000000
--- a/src/Orchard.Web/Modules/Orchard.Tags/Models/TagSettings.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using Orchard.Data;
-using Orchard.ContentManagement;
-using Orchard.ContentManagement.Handlers;
-using Orchard.ContentManagement.Records;
-
-namespace Orchard.Tags.Models {
- public class TagSettings : ContentPart {
- }
-
- public class TagSettingsRecord : ContentPartRecord {
- public virtual bool EnableTagsOnPages { get; set; }
- }
-
- public class TagSettingsHandler : ContentHandler {
- public TagSettingsHandler(IRepository repository) {
- Filters.Add(new ActivatingFilter("site"));
- Filters.Add(StorageFilter.For(repository));
- Filters.Add(new TemplateFilterForRecord("TagSettings", "Parts/Tags.SiteSettings"));
- OnActivated(DefaultSettings);
- }
-
- private static void DefaultSettings(ActivatedContentContext context, TagSettings settings) {
- settings.Record.EnableTagsOnPages = true;
- }
- }
-}
diff --git a/src/Orchard.Web/Modules/Orchard.Tags/Orchard.Tags.csproj b/src/Orchard.Web/Modules/Orchard.Tags/Orchard.Tags.csproj
index 3b30a2d5f..faf69aac0 100644
--- a/src/Orchard.Web/Modules/Orchard.Tags/Orchard.Tags.csproj
+++ b/src/Orchard.Web/Modules/Orchard.Tags/Orchard.Tags.csproj
@@ -70,7 +70,6 @@
-
@@ -93,7 +92,6 @@
-
diff --git a/src/Orchard.Web/Modules/Orchard.Tags/Views/EditorTemplates/Parts/Tags.SiteSettings.ascx b/src/Orchard.Web/Modules/Orchard.Tags/Views/EditorTemplates/Parts/Tags.SiteSettings.ascx
deleted file mode 100644
index 48818479a..000000000
--- a/src/Orchard.Web/Modules/Orchard.Tags/Views/EditorTemplates/Parts/Tags.SiteSettings.ascx
+++ /dev/null
@@ -1,11 +0,0 @@
-<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl" %>
-<%@ Import Namespace="Orchard.Tags.Models"%>
-
- <%=_Encoded("Tags")%>
-
- <%= Html.EditorFor(x=>x.EnableTagsOnPages) %>
- Pages can be tagged
- <%= Html.ValidationMessage("EnableTagsOnPages", "*")%>
- <%=_Encoded("In the admin, if the user has permission to.") %>
-
-
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Users/Views/Account/ChangePassword.ascx b/src/Orchard.Web/Modules/Orchard.Users/Views/Account/ChangePassword.ascx
index ea281b409..f03b46cf6 100644
--- a/src/Orchard.Web/Modules/Orchard.Users/Views/Account/ChangePassword.ascx
+++ b/src/Orchard.Web/Modules/Orchard.Users/Views/Account/ChangePassword.ascx
@@ -6,23 +6,23 @@
<% using (Html.BeginFormAntiForgeryPost()) { %>
<%=_Encoded("Account Information")%>
-
+
<%=_Encoded("Current password:")%>
<%=Html.Password("currentPassword") %>
<%=Html.ValidationMessage("currentPassword") %>
-
-
+
+
<%=_Encoded("New password:")%>
<%= Html.Password("newPassword") %>
<%= Html.ValidationMessage("newPassword") %>
-
-
+
+
<%=_Encoded("Confirm new password:")%>
<%= Html.Password("confirmPassword") %>
<%= Html.ValidationMessage("confirmPassword") %>
-
-
+
+
" />
-
+
<% } %>
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Users/Views/Account/Register.ascx b/src/Orchard.Web/Modules/Orchard.Users/Views/Account/Register.ascx
index 0f11dea9b..ca9f03f87 100644
--- a/src/Orchard.Web/Modules/Orchard.Users/Views/Account/Register.ascx
+++ b/src/Orchard.Web/Modules/Orchard.Users/Views/Account/Register.ascx
@@ -6,28 +6,28 @@
<% using (Html.BeginFormAntiForgeryPost()) { %>
<%=_Encoded("Account Information")%>
-
+
<%=_Encoded("Username:")%>
<%= Html.TextBox("username") %>
<%= Html.ValidationMessage("username") %>
-
-
+
+
<%=_Encoded("Email:")%>
<%= Html.TextBox("email") %>
<%= Html.ValidationMessage("email") %>
-
-
+
+
<%=_Encoded("Password:")%>
<%= Html.Password("password") %>
<%= Html.ValidationMessage("password") %>
-
-
+
+
<%=_Encoded("Confirm password:")%>
<%= Html.Password("confirmPassword") %>
<%= Html.ValidationMessage("confirmPassword") %>
-
-
+
+
" />
-
+
<% } %>
\ No newline at end of file
diff --git a/src/Orchard.Web/Orchard.Web.csproj b/src/Orchard.Web/Orchard.Web.csproj
index 35c0935e4..184187747 100644
--- a/src/Orchard.Web/Orchard.Web.csproj
+++ b/src/Orchard.Web/Orchard.Web.csproj
@@ -172,6 +172,7 @@
+
@@ -197,7 +198,6 @@
-
diff --git a/src/Orchard.Web/Themes/Classic/Styles/blog.css b/src/Orchard.Web/Themes/Classic/Styles/blog.css
index d0cdbed15..63bd05e21 100644
--- a/src/Orchard.Web/Themes/Classic/Styles/blog.css
+++ b/src/Orchard.Web/Themes/Classic/Styles/blog.css
@@ -1,31 +1,21 @@
/*Blog specific styles
----------------------------------------------------------*/
-.posted {
- margin: 8px 0;
- font-size:105%;
- font-weight:600;
+h3.blogs, h3.blog {
+ display:block;
+ border-bottom:1px solid #f1f1f1;
}
-.meta, .manage {
- font-size:105%;
- float:right;
- margin:-23px 0 0 0;
-}
-
-.blogdescription, .postsummary {
+ul.blogs p {
clear:both;
- }
-
-div.comment {
- margin: 16px 0 8px 0;
}
-
-span.who {
- font-weight:600;
- font-size:105%;
- }
-
- .text {
- border-bottom:1px dotted #e5e5e5;
- }
+
+.post {
+ margin: -8px 0 12px 0px;
+}
+
+.meta {
+ font-style:italic;
+ color:#666666;
+}
+
diff --git a/src/Orchard.Web/Themes/Classic/Styles/site.css b/src/Orchard.Web/Themes/Classic/Styles/site.css
index 0d2bcfff3..ffe49c053 100644
--- a/src/Orchard.Web/Themes/Classic/Styles/site.css
+++ b/src/Orchard.Web/Themes/Classic/Styles/site.css
@@ -20,29 +20,31 @@ html {height: 100%;}
body {
font: normal 90% "Georgia", Times New Roman, Times, serif;
- background:url(../Content/Images/bodyBackgroundgrey.gif) top left repeat-x #e5e5e5;
height: 100%;
text-align:left;
- color:#333;
+ color:#373737;
+ background:#fdfdfd;
+ /*background:#E5E5E5 url(../Content/Images/bodyBackgroundgrey.gif) repeat-x scroll left top;*/
}
/* ---------- Headings and defaults ---------- */
-h1,h2,h3,h4,h5,h6, legend {font-weight:normal; font-style: normal; color:#670404; border-bottom:1px dotted #e5e5e5;}
+h1,h2,h3,h4,h5,h6,legend {font-weight:normal; font-style: normal; margin:12px 0 4px 0;}
-h1 {font-size: 190%;}
+h1 {font-size: 180%;}
h2 {font-size: 160%;}
-h3 {font-size: 150%;}
+h3 {font-size: 145%;}
h4 {font-size: 130%;}
h5 {font-size: 120%;}
h6 {font-size: 105%;}
+h1.sitename {border-bottom:none;}
+
p {line-height:24px; margin:12px 0 32px 0;}
-p.small {line-height:22px; font-size:85%;}
+p.small {line-height:24px; font-size:85%;}
a {
color:#004386;
- color:#05325f;
text-decoration:none;
}
@@ -53,17 +55,17 @@ ol.decimal {list-style:decimal; list-style-position:inside; line-height:24px; ma
/* Forms
----------------------------------------------------------*/
-input[type="text"], #CommentText, #password {
- border:1px solid #DDDEDF;
+input[type="text"], #CommentText, #password, #confirmPassword {
+ border:1px solid #cacec6;
display: block;
-}
-
-fieldset {margin: 20px 0;}
+ padding:2px;
+ width:90%;
+ }
fieldset div {margin:16px 0 0 0}
legend {
- font-size: 105%;
+ font-size: 110%;
border:none;
}
@@ -72,18 +74,12 @@ label {
margin:0 0 2px 0;
}
-input[type="text"], #CommentText, #password {
- border-color:#cacec6;
- padding:2px;
- width:90%;
- }
-
input[type="checkbox"] {
margin:2px 0 20px 10px;
}
input[type="submit"], input[type="button"], .button {
- font:90% Verdana, Geneva, Tahoma, sans-serif;
+ font: normal 90% "Georgia", Times New Roman, Times, serif;
color:#333;
padding:2px 14px;
display: block;
@@ -97,112 +93,182 @@ input[type="submit"], input[type="button"], .button {
}
+/* Tables
+----------------------------------------------------------*/
+table {
+ background:#fff;
+ border:1px solid #f1f1f1;
+ border-collapse:collapse;
+ width:100%;
+}
+
+table thead, table th {
+ overflow:hidden;
+ text-align:left;
+}
+
+table th {
+ font:70% Verdana, Geneva, Tahoma, sans-serif;
+ background-color:#69625e;
+ color:#f1f1f1;
+ }
+
+table caption {
+ padding:8px 0;
+ text-indent:0;
+}
+
+table col {
+ display:table-column;
+}
+
+table colgroup {
+ display:table-column-group;
+ }
+
+table tbody {
+ vertical-align:middle;
+ }
+
+
+th, td {
+ font:70% Verdana, Geneva, Tahoma, sans-serif;
+ padding:6px
+ }
+
+td.even {
+ background-color:#f1f1f1;
+}
+
/* ---------- Layout ---------- */
+#headercontainer {
+ border:2px solid #69625e;
+ border-left:0;
+ border-right:0;
+ margin:0 auto;
+ width:930px;
+}
+
#header {
- margin:0 38px 0 40px;
- height:75px;
- border-bottom:1px #d6d6d6 solid;
-}
+ border:1px solid #69625e;
+ border-left:0;
+ border-right:0;
+ margin:3px 0 3px 0;
+ }
-
-#header h1{
+#header h1 {
+ font-size:240%;
+ color:#333;
+ border:0;
+ margin:12px 18px;
float:left;
- font-size:220%;
- color:#000;
- padding:42px 0 0 0;
- border-bottom:none;
}
+
#logindisplay {
- float:right;
- margin:58px 8px 0 0;
+ font:80%;
+ margin:12px auto;
+ text-align:right;
+ width: 930px;
}
#wrapper {
width:985px;
- height:100%;
display:block;
margin:0em auto;
- background:url(../Content/Images/mainBackgroundgrey.png) no-repeat center top;
+ background:#fff;
+ border:1px solid #f1f1f1;
}
#main {
- clear:both;
- margin:32px 0 0 27px;
+ margin:0 0 0 27px;
width:930px;
- border:1px #f5f5f5 solid;
- border-top:none;
background:url(../Content/Images/sidebarBackground.gif) no-repeat right top #fff;
}
#content {
float:left;
- margin:0 0 0 27px;
+ margin:26px 0 0 27px;
width:520px;
min-height:555px;
}
#sidebar {
float:right;
- margin:4px 12px 0 0;
+ margin:28px 0 0 0;
width:325px;
}
#sidebar h3 {
- border-bottom:1px dotted #e5e5e5;
+ border-bottom:1px solid #f1f1f1;
+ font-size: 130%;
}
-
-#content ul,#sideBar1 ul {
- list-style:none;
- line-height:normal;
+#footercontainer {
+ clear:both;
+ border:2px solid #69625e;
+ width:930px;
+ background:#69625e;
+ margin:18px 0;
}
#footer {
- color:#918e8e;
- clear:both;
- border-top:1px solid #d6d6d6;
- margin:0 12px;
- padding:18px 0 18px 8px;
+ border:1px solid #fff;
+ margin:3px;
}
#footer a{
- color:#918e8e;
- margin:0 8px;
+ text-transform:uppercase;
+ color:#fff;
}
+
/* ---------- Navigation ---------- */
-#menucontainer {
- width:960px;
+.menucontainer {
display:block;
- height:35px;
- margin:0em auto;
-}
-
-#menucontainer ul, #footer ul {
- list-style:none;
float:right;
+ margin:18px 0;
}
-#menucontainer ul li {
+.menucontainer ul, #footer ul {
+ list-style:none
+}
+
+.menucontainer ul li {
margin:8px 0 0 0;
float:left;
- background:url(../Content/Images/navDivider.gif) no-repeat top right;
-}
-
-#menucontainer ul li.last {
- background:none;
-}
-
-#menucontainer ul li a {
- margin:0 18px 0 18px;
- font-size:110%;
- display:block;
- text-decoration:none;
- float:left;
- color:#fff;
}
+.menucontainer ul li a {
+ margin:0 18px 0 18px;
+ display:block;
+ text-decoration:none;
+ text-transform:uppercase;
+ float:left;
+}
+
+#footer .menucontainer {
+ font-size:80%;
+ float:left;
+ margin:0px;
+}
+
+#footer .menucontainer ul li {
+ margin:12px 0;
+}
+
+/* ---------- Tags and Comments ---------- */
+.tags, .comment {
+ font-style:italic;
+ color:#666666;
+}
+
+
+/* ---------- Generic ---------- */
+
+.clearBoth {
+ clear:both;
+}
\ No newline at end of file
diff --git a/src/Orchard.Web/Themes/Classic/Theme.png b/src/Orchard.Web/Themes/Classic/Theme.png
index 92eb94b4f..2832f9504 100644
Binary files a/src/Orchard.Web/Themes/Classic/Theme.png and b/src/Orchard.Web/Themes/Classic/Theme.png differ
diff --git a/src/Orchard.Web/Themes/Classic/Views/DisplayTemplates/Items/Blogs.Blog.ascx b/src/Orchard.Web/Themes/Classic/Views/DisplayTemplates/Items/Blogs.Blog.ascx
index 7c2dada8e..4bbd140d3 100644
--- a/src/Orchard.Web/Themes/Classic/Views/DisplayTemplates/Items/Blogs.Blog.ascx
+++ b/src/Orchard.Web/Themes/Classic/Views/DisplayTemplates/Items/Blogs.Blog.ascx
@@ -2,7 +2,7 @@
<%@ Import Namespace="Orchard.Mvc.ViewModels"%>
<%@ Import Namespace="Orchard.Blogs.Extensions"%>
<%@ Import Namespace="Orchard.Blogs.Models"%>
-<%=Html.TitleForPage(Model.Item.Name) %>
+<%=Html.TitleForPage(Model.Item.Name) %>
<%=Html.Encode(Model.Item.Description) %>
<% Html.Zone("primary");
diff --git a/src/Orchard.Web/Themes/Classic/Views/DisplayTemplates/Items/Blogs.BlogPost.Summary.ascx b/src/Orchard.Web/Themes/Classic/Views/DisplayTemplates/Items/Blogs.BlogPost.Summary.ascx
index feabce0b5..751a90cbd 100644
--- a/src/Orchard.Web/Themes/Classic/Views/DisplayTemplates/Items/Blogs.BlogPost.Summary.ascx
+++ b/src/Orchard.Web/Themes/Classic/Views/DisplayTemplates/Items/Blogs.BlogPost.Summary.ascx
@@ -4,6 +4,6 @@
<%@ Import Namespace="Orchard.Mvc.ViewModels"%>
<%@ Import Namespace="Orchard.Blogs.Extensions"%>
<%@ Import Namespace="Orchard.Blogs.Models"%>
-<%=Html.Link(Html.Encode(Model.Item.Title), Url.BlogPost(Model.Item.Blog.Slug, Model.Item.Slug)) %>
+<%=Html.Link(Html.Encode(Model.Item.Title), Url.BlogPost(Model.Item.Blog.Slug, Model.Item.Slug)) %>
<%=Html.PublishedState(Model.Item) %> | <%Html.Zone("meta");%>
<%=Model.Item.As
().Text ?? string.Format("{0}
", _Encoded("there's no content for this blog post"))%>
\ No newline at end of file
diff --git a/src/Orchard.Web/Themes/Classic/Views/DisplayTemplates/Items/Blogs.BlogPost.ascx b/src/Orchard.Web/Themes/Classic/Views/DisplayTemplates/Items/Blogs.BlogPost.ascx
new file mode 100644
index 000000000..fca8fa506
--- /dev/null
+++ b/src/Orchard.Web/Themes/Classic/Views/DisplayTemplates/Items/Blogs.BlogPost.ascx
@@ -0,0 +1,12 @@
+<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl>" %>
+<%@ Import Namespace="Orchard.Mvc.ViewModels"%>
+<%@ Import Namespace="Orchard.Blogs.Extensions"%>
+<%@ Import Namespace="Orchard.Blogs.Models"%>
+<%=Html.TitleForPage(Model.Item.Title)%>
+
+<% Html.Zone("primary");
+ Html.ZonesAny(); %>
\ No newline at end of file
diff --git a/src/Orchard.Web/Themes/Classic/Views/Footer.ascx b/src/Orchard.Web/Themes/Classic/Views/Footer.ascx
index 51512109c..74d5935ba 100644
--- a/src/Orchard.Web/Themes/Classic/Views/Footer.ascx
+++ b/src/Orchard.Web/Themes/Classic/Views/Footer.ascx
@@ -1,5 +1,10 @@
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
+
+
diff --git a/src/Orchard.Web/Themes/Classic/Views/Layout.ascx b/src/Orchard.Web/Themes/Classic/Views/Layout.ascx
index 1baba67a0..d458dc7a6 100644
--- a/src/Orchard.Web/Themes/Classic/Views/Layout.ascx
+++ b/src/Orchard.Web/Themes/Classic/Views/Layout.ascx
@@ -5,21 +5,28 @@
Html.RegisterStyle("site.css");
Html.RegisterStyle("blog.css");
%>
-<%--Top Navigation--%>
+
<%-- todo:(nheskew) this will need to be a generated menu --%>
-<% Html.Include("menu"); %>
+
+<%--HTML.Include will render a div with an id="logindisplay" --%>
+ <% Html.Include("User"); %>
+
+<%--Top Navigation and branding--%>
+