From 3b145f93da3be4510fbc6bd5e7303a5588db4cc2 Mon Sep 17 00:00:00 2001 From: suhacan Date: Thu, 3 Dec 2009 21:55:14 +0000 Subject: [PATCH] - Blogs: Create needed the tag aspect, also removing forms from individual aspect editors. --HG-- extra : convert_revision : svn%3A5ff7c347-ad56-4c35-b696-ccb81de16e03/trunk%4043112 --- .../Core/Settings/Services/SiteService.cs | 5 +-- .../Controllers/BlogPostController.cs | 10 +++--- .../Packages/Orchard.Blogs/Models/BlogPost.cs | 1 - .../ViewModels/CreateBlogPostViewModel.cs | 3 ++ .../Orchard.Blogs/Views/BlogPost/Create.aspx | 8 +++++ .../Orchard.Blogs/Views/BlogPost/Edit.aspx | 12 +++---- .../Models/EditorTemplates/HasComments.ascx | 2 ++ .../Orchard.Tags/Models/TagsHandler.cs | 32 +++++++++++++++++-- .../Views/Models/EditorTemplates/HasTags.ascx | 12 ++----- 9 files changed, 61 insertions(+), 24 deletions(-) diff --git a/src/Orchard.Web/Core/Settings/Services/SiteService.cs b/src/Orchard.Web/Core/Settings/Services/SiteService.cs index 27024993c..cdcf08e5c 100644 --- a/src/Orchard.Web/Core/Settings/Services/SiteService.cs +++ b/src/Orchard.Web/Core/Settings/Services/SiteService.cs @@ -1,4 +1,5 @@ -using Orchard.Core.Settings.Models; +using System.Linq; +using Orchard.Core.Settings.Models; using Orchard.Core.Settings.Records; using Orchard.Data; using Orchard.Logging; @@ -23,7 +24,7 @@ namespace Orchard.Core.Settings.Services { public ISite GetSiteSettings() { string applicationName = HttpContext.Current.Request.ApplicationPath; - SiteSettingsRecord record = _siteSettingsRepository.Get(x => x.SiteUrl == applicationName); + SiteSettingsRecord record = _siteSettingsRepository.Fetch(x => x.SiteUrl == applicationName).FirstOrDefault(); if (record == null) { ISite site = _contentManager.Create("site", item => { item.Record.SiteUrl = applicationName; diff --git a/src/Orchard.Web/Packages/Orchard.Blogs/Controllers/BlogPostController.cs b/src/Orchard.Web/Packages/Orchard.Blogs/Controllers/BlogPostController.cs index 40ed80856..fb302b3da 100644 --- a/src/Orchard.Web/Packages/Orchard.Blogs/Controllers/BlogPostController.cs +++ b/src/Orchard.Web/Packages/Orchard.Blogs/Controllers/BlogPostController.cs @@ -70,7 +70,7 @@ namespace Orchard.Blogs.Controllers { if (blog == null) return new NotFoundResult(); - return View(new CreateBlogPostViewModel { Blog = blog }); + return View(new CreateBlogPostViewModel { Blog = blog, ItemView = _contentManager.GetEditors(_contentManager.New("blogpost"), null) }); } [HttpPost] @@ -84,10 +84,13 @@ namespace Orchard.Blogs.Controllers { if (blog == null) return new NotFoundResult(); - if (!ModelState.IsValid) + if (ModelState.IsValid == false) { + model.ItemView = _contentManager.UpdateEditors(_contentManager.New("blogpost"), null, this); return View(model); + } BlogPost blogPost = _blogPostService.Create(model.ToCreateBlogPostParams(blog)); + model.ItemView = _contentManager.UpdateEditors(blogPost, null, this); //TEMP: (erikpo) ensure information has committed for this record var session = _sessionLocator.For(typeof(BlogPostRecord)); @@ -136,8 +139,7 @@ namespace Orchard.Blogs.Controllers { model.ItemView = _contentManager.UpdateEditors(model.Post.ContentItem, null, this); IValueProvider values = input.ToValueProvider(); - if (!TryUpdateModel(model, values)) - return View(model); + TryUpdateModel(model, values); _notifier.Information(T("Blog post information updated")); diff --git a/src/Orchard.Web/Packages/Orchard.Blogs/Models/BlogPost.cs b/src/Orchard.Web/Packages/Orchard.Blogs/Models/BlogPost.cs index 4bc88cbbe..e11bd49df 100644 --- a/src/Orchard.Web/Packages/Orchard.Blogs/Models/BlogPost.cs +++ b/src/Orchard.Web/Packages/Orchard.Blogs/Models/BlogPost.cs @@ -1,5 +1,4 @@ using System; -using System.Web.Routing; using Orchard.Core.Common.Models; using Orchard.Models; using Orchard.Security; diff --git a/src/Orchard.Web/Packages/Orchard.Blogs/ViewModels/CreateBlogPostViewModel.cs b/src/Orchard.Web/Packages/Orchard.Blogs/ViewModels/CreateBlogPostViewModel.cs index 63e6d1d3a..6a00c52e0 100644 --- a/src/Orchard.Web/Packages/Orchard.Blogs/ViewModels/CreateBlogPostViewModel.cs +++ b/src/Orchard.Web/Packages/Orchard.Blogs/ViewModels/CreateBlogPostViewModel.cs @@ -1,6 +1,7 @@ using System; using System.ComponentModel.DataAnnotations; using Orchard.Blogs.Models; +using Orchard.Models.ViewModels; using Orchard.Mvc.ViewModels; namespace Orchard.Blogs.ViewModels { @@ -18,5 +19,7 @@ namespace Orchard.Blogs.ViewModels { public string Slug { get; set; } public DateTime? Published { get; set; } + + public ItemEditorViewModel ItemView { get; set; } } } \ No newline at end of file diff --git a/src/Orchard.Web/Packages/Orchard.Blogs/Views/BlogPost/Create.aspx b/src/Orchard.Web/Packages/Orchard.Blogs/Views/BlogPost/Create.aspx index b90aa4fb4..b5415bdd4 100644 --- a/src/Orchard.Web/Packages/Orchard.Blogs/Views/BlogPost/Create.aspx +++ b/src/Orchard.Web/Packages/Orchard.Blogs/Views/BlogPost/Create.aspx @@ -9,5 +9,13 @@ <%using (Html.BeginForm()) { %> <%= Html.ValidationSummary() %> <%= Html.EditorForModel() %> + <%foreach (var editor in Model.ItemView.Editors) { %> + <%-- TODO: why is Body in editors? --%> + <%-- TODO: because any content type using the body editor doesn't need + to re-implement the rich editor, media extensions, format filter chain selection, etc --%> + <% if (!String.Equals(editor.Prefix, "Body")) { %> + <%=Html.EditorFor(m=>editor.Model, editor.TemplateName, editor.Prefix) %> + <% } %> + <%} %> <% } %> <% Html.Include("AdminFoot"); %> \ No newline at end of file diff --git a/src/Orchard.Web/Packages/Orchard.Blogs/Views/BlogPost/Edit.aspx b/src/Orchard.Web/Packages/Orchard.Blogs/Views/BlogPost/Edit.aspx index 1e95f29f6..63c5ddde9 100644 --- a/src/Orchard.Web/Packages/Orchard.Blogs/Views/BlogPost/Edit.aspx +++ b/src/Orchard.Web/Packages/Orchard.Blogs/Views/BlogPost/Edit.aspx @@ -9,13 +9,13 @@ <%=Html.ValidationSummary() %> <%=Html.EditorForModel() %>
- <% } %> - <%foreach (var editor in Model.ItemView.Editors) { %> + <%foreach (var editor in Model.ItemView.Editors) { %> <%-- TODO: why is Body in editors? --%> <%-- TODO: because any content type using the body editor doesn't need to re-implement the rich editor, media extensions, format filter chain selection, etc --%> - <% if (!String.Equals(editor.Prefix, "Body")) { %> - <%=Html.EditorFor(m=>editor.Model, editor.TemplateName, editor.Prefix) %> - <% } %> - <%} %> + <% if (!String.Equals(editor.Prefix, "Body")) { %> + <%=Html.EditorFor(m=>editor.Model, editor.TemplateName, editor.Prefix) %> + <% } %> + <%} %> + <% } %> <% Html.Include("AdminFoot"); %> \ No newline at end of file diff --git a/src/Orchard.Web/Packages/Orchard.Comments/Views/Models/EditorTemplates/HasComments.ascx b/src/Orchard.Web/Packages/Orchard.Comments/Views/Models/EditorTemplates/HasComments.ascx index 63b2e2f99..209abdbfa 100644 --- a/src/Orchard.Web/Packages/Orchard.Comments/Views/Models/EditorTemplates/HasComments.ascx +++ b/src/Orchard.Web/Packages/Orchard.Comments/Views/Models/EditorTemplates/HasComments.ascx @@ -1,5 +1,6 @@ <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> <%@ Import Namespace="Orchard.Comments.Models"%> +<% if (Model.ContentItem.Id != 0) { %>

<%= Model.Comments.Count() %> Comments

    <% foreach (var comment in Model.Comments) {%> @@ -21,3 +22,4 @@ <% } else { %> <%= Html.ActionLink("Close Comments for this content", "Close", new { Area="Orchard.Comments", Controller="Admin", returnUrl = Context.Request.Url, commentedItemId = Model.ContentItem.Id })%> <% } %> | <%=Html.ActionLink("Go to comments management for this post", "Details", new {Area="Orchard.Comments", Controller="Admin", id = Model.ContentItem.Id, returnUrl = Context.Request.Url}) %> +<% } %> \ No newline at end of file diff --git a/src/Orchard.Web/Packages/Orchard.Tags/Models/TagsHandler.cs b/src/Orchard.Web/Packages/Orchard.Tags/Models/TagsHandler.cs index fab7cfd6e..343d1c98e 100644 --- a/src/Orchard.Web/Packages/Orchard.Tags/Models/TagsHandler.cs +++ b/src/Orchard.Web/Packages/Orchard.Tags/Models/TagsHandler.cs @@ -1,9 +1,11 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; using Orchard.Data; using Orchard.Models; using Orchard.Models.Driver; using Orchard.Models.ViewModels; +using Orchard.Tags.Services; namespace Orchard.Tags.Models { public class HasTags : ContentPart { @@ -19,10 +21,12 @@ namespace Orchard.Tags.Models { public class HasTagsProvider : ContentProvider { private readonly IRepository _tagsRepository; private readonly IRepository _tagsContentItemsRepository; + private readonly ITagService _tagService; - public HasTagsProvider(IRepository tagsRepository, IRepository tagsContentItemsRepository) { + public HasTagsProvider(IRepository tagsRepository, IRepository tagsContentItemsRepository, ITagService tagService) { _tagsRepository = tagsRepository; _tagsContentItemsRepository = tagsContentItemsRepository; + _tagService = tagService; Filters.Add(new ActivatingFilter("sandboxpage")); Filters.Add(new ActivatingFilter("blogpost")); @@ -43,6 +47,12 @@ namespace Orchard.Tags.Models { if (context.ContentItem.Has() == false) { return; } + + TagsViewModel viewModel = new TagsViewModel(); + context.Updater.TryUpdateModel(viewModel, String.Empty, null, null); + List tagNames = ParseCommaSeparatedTagNames(viewModel.Tags); + _tagService.UpdateTagsForContentItem(context.ContentItem.Id, tagNames); + context.AddEditor(new TemplateViewModel(context.ContentItem.Get())); } @@ -59,5 +69,23 @@ namespace Orchard.Tags.Models { tags.CurrentTags.Add(tag); } } + + private static List ParseCommaSeparatedTagNames(string tags) { + if (String.IsNullOrEmpty(tags)) { + return new List(); + } + IEnumerable tagNames = tags.Split(','); + List sanitizedTagNames = new List(); + foreach (var tagName in tagNames) { + if (!String.IsNullOrEmpty(tagName)) { + sanitizedTagNames.Add(tagName); + } + } + return sanitizedTagNames; + } + + public class TagsViewModel { + public string Tags { get; set; } + } } } diff --git a/src/Orchard.Web/Packages/Orchard.Tags/Views/Models/EditorTemplates/HasTags.ascx b/src/Orchard.Web/Packages/Orchard.Tags/Views/Models/EditorTemplates/HasTags.ascx index f7cf6f746..839155507 100644 --- a/src/Orchard.Web/Packages/Orchard.Tags/Views/Models/EditorTemplates/HasTags.ascx +++ b/src/Orchard.Web/Packages/Orchard.Tags/Views/Models/EditorTemplates/HasTags.ascx @@ -2,12 +2,8 @@ <%@ Import Namespace="Orchard.Mvc.Html"%> <%@ Import Namespace="Orchard.Tags.Models"%>

    Tags

    -<% Html.BeginForm("Update", "Home", new { area = "Orchard.Tags" }); %> -<%= Html.ValidationSummary() %>
    -

    Edit Tags

    - <%= Html.Hidden("TaggedContentId", Model.ContentItem.Id) %> - <%= Html.Hidden("ReturnUrl", Context.Request.Url) %> +

    Edit Tags

    <% string tags = ""; foreach (var tag in Model.CurrentTags) { @@ -16,9 +12,7 @@ } %>
    1. - - +
    -
    -<% Html.EndForm(); %> \ No newline at end of file + \ No newline at end of file