mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
- Fixing a bug related to tag sanitization and cleaning up some dependencies.
--HG-- extra : convert_revision : svn%3A5ff7c347-ad56-4c35-b696-ccb81de16e03/trunk%4043220
This commit is contained in:
@@ -135,10 +135,6 @@
|
|||||||
<Project>{9916839C-39FC-4CEB-A5AF-89CA7E87119F}</Project>
|
<Project>{9916839C-39FC-4CEB-A5AF-89CA7E87119F}</Project>
|
||||||
<Name>Orchard.Core</Name>
|
<Name>Orchard.Core</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\Orchard.Comments\Orchard.Comments.csproj">
|
|
||||||
<Project>{14C049FD-B35B-415A-A824-87F26B26E7FD}</Project>
|
|
||||||
<Name>Orchard.Comments</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\Orchard.Users\Orchard.Users.csproj">
|
<ProjectReference Include="..\Orchard.Users\Orchard.Users.csproj">
|
||||||
<Project>{79AED36E-ABD0-4747-93D3-8722B042454B}</Project>
|
<Project>{79AED36E-ABD0-4747-93D3-8722B042454B}</Project>
|
||||||
<Name>Orchard.Users</Name>
|
<Name>Orchard.Users</Name>
|
||||||
|
@@ -1,12 +1,10 @@
|
|||||||
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Blog>" %>
|
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Blog>" %>
|
||||||
<%@ Import Namespace="Orchard.Comments.Models"%>
|
|
||||||
<%@ Import Namespace="Orchard.Models"%>
|
<%@ Import Namespace="Orchard.Models"%>
|
||||||
<%@ Import Namespace="Orchard.Blogs.Extensions"%>
|
<%@ Import Namespace="Orchard.Blogs.Extensions"%>
|
||||||
<%@ Import Namespace="Orchard.Blogs.Models"%>
|
<%@ Import Namespace="Orchard.Blogs.Models"%>
|
||||||
<h3><a href="<%=Url.BlogForAdmin(Model.Slug) %>"><%=Html.Encode(Model.Name) %></a></h3>
|
<h3><a href="<%=Url.BlogForAdmin(Model.Slug) %>"><%=Html.Encode(Model.Name) %></a></h3>
|
||||||
<div class="meta">
|
<div class="meta">
|
||||||
<% var postCount = Model.PostCount; %><a href="<%=Url.BlogForAdmin(Model.Slug) %>"><%=string.Format("{0} post{1}", postCount, postCount == 1 ? "" : "s") %></a>
|
<% var postCount = Model.PostCount; %><a href="<%=Url.BlogForAdmin(Model.Slug) %>"><%=string.Format("{0} post{1}", postCount, postCount == 1 ? "" : "s") %></a></div>
|
||||||
| <%var commentCount = (new Random()).Next(0, 1000); // Model.As<HasComments>().Comments.Count(); %><a href="#"><%=string.Format("{0} comment{1}", commentCount, commentCount == 1 ? "" : "s") %></a></div>
|
|
||||||
<%--<p>[list of authors] [modify blog access]</p>--%>
|
<%--<p>[list of authors] [modify blog access]</p>--%>
|
||||||
<p><%=Model.Description %></p>
|
<p><%=Model.Description %></p>
|
||||||
<p class="actions">
|
<p class="actions">
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<BlogPost>" %>
|
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<BlogPost>" %>
|
||||||
<%@ Import Namespace="Orchard.Comments.Models"%>
|
|
||||||
<%@ Import Namespace="Orchard.Models"%>
|
<%@ Import Namespace="Orchard.Models"%>
|
||||||
<%@ Import Namespace="Orchard.Blogs.Extensions"%>
|
<%@ Import Namespace="Orchard.Blogs.Extensions"%>
|
||||||
<%@ Import Namespace="Orchard.Core.Common.Models"%>
|
<%@ Import Namespace="Orchard.Core.Common.Models"%>
|
||||||
@@ -7,7 +6,6 @@
|
|||||||
<h3><a href="<%=Url.BlogPostEdit(Model.Blog.Slug, Model.Slug) %>"><%=Html.Encode(Model.Title) %></a></h3>
|
<h3><a href="<%=Url.BlogPostEdit(Model.Blog.Slug, Model.Slug) %>"><%=Html.Encode(Model.Title) %></a></h3>
|
||||||
<div class="meta">
|
<div class="meta">
|
||||||
<%=Html.Published() %>
|
<%=Html.Published() %>
|
||||||
| <%var commentCount = Model.As<HasComments>().Comments.Count(); %><a href="#"><%=string.Format("{0} comment{1}", commentCount, commentCount == 1 ? "" : "s") %></a>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="content"><%=Model.Body ?? "<p><em>there's no content for this blog post</em></p>" %></div>
|
<div class="content"><%=Model.Body ?? "<p><em>there's no content for this blog post</em></p>" %></div>
|
||||||
<p class="actions">
|
<p class="actions">
|
||||||
|
@@ -6,6 +6,7 @@ using Orchard.Localization;
|
|||||||
using Orchard.Logging;
|
using Orchard.Logging;
|
||||||
using Orchard.Models;
|
using Orchard.Models;
|
||||||
using Orchard.Settings;
|
using Orchard.Settings;
|
||||||
|
using Orchard.Tags.Helpers;
|
||||||
using Orchard.Tags.Models;
|
using Orchard.Tags.Models;
|
||||||
using Orchard.Tags.Services;
|
using Orchard.Tags.Services;
|
||||||
using Orchard.Tags.ViewModels;
|
using Orchard.Tags.ViewModels;
|
||||||
@@ -54,7 +55,7 @@ namespace Orchard.Tags.Controllers {
|
|||||||
if (!_authorizer.Authorize(Permissions.CreateTag, T("Couldn't create tag")))
|
if (!_authorizer.Authorize(Permissions.CreateTag, T("Couldn't create tag")))
|
||||||
return new HttpUnauthorizedResult();
|
return new HttpUnauthorizedResult();
|
||||||
if (!String.IsNullOrEmpty(newTagName)) {
|
if (!String.IsNullOrEmpty(newTagName)) {
|
||||||
foreach (var tagName in ParseCommaSeparatedTagNames(newTagName)) {
|
foreach (var tagName in TagHelpers.ParseCommaSeparatedTagNames(newTagName)) {
|
||||||
if (_tagService.GetTagByName(tagName) == null) {
|
if (_tagService.GetTagByName(tagName) == null) {
|
||||||
_tagService.CreateTag(tagName);
|
_tagService.CreateTag(tagName);
|
||||||
}
|
}
|
||||||
@@ -80,7 +81,7 @@ namespace Orchard.Tags.Controllers {
|
|||||||
try {
|
try {
|
||||||
if (!_authorizer.Authorize(Permissions.CreateTag, T("Couldn't create tag")))
|
if (!_authorizer.Authorize(Permissions.CreateTag, T("Couldn't create tag")))
|
||||||
return new HttpUnauthorizedResult();
|
return new HttpUnauthorizedResult();
|
||||||
List<string> tagNames = ParseCommaSeparatedTagNames(tags);
|
List<string> tagNames = TagHelpers.ParseCommaSeparatedTagNames(tags);
|
||||||
_tagService.UpdateTagsForContentItem(taggedContentId, tagNames);
|
_tagService.UpdateTagsForContentItem(taggedContentId, tagNames);
|
||||||
if (!String.IsNullOrEmpty(returnUrl)) {
|
if (!String.IsNullOrEmpty(returnUrl)) {
|
||||||
return Redirect(returnUrl);
|
return Redirect(returnUrl);
|
||||||
@@ -96,17 +97,6 @@ namespace Orchard.Tags.Controllers {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<string> ParseCommaSeparatedTagNames(string tags) {
|
|
||||||
IEnumerable<string> tagNames = tags.Split(',');
|
|
||||||
List<string> sanitizedTagNames = new List<string>();
|
|
||||||
foreach (var tagName in tagNames) {
|
|
||||||
if (!String.IsNullOrEmpty(tagName)) {
|
|
||||||
sanitizedTagNames.Add(tagName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return sanitizedTagNames;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ActionResult Search(string tagName) {
|
public ActionResult Search(string tagName) {
|
||||||
try {
|
try {
|
||||||
Tag tag = _tagService.GetTagByName(tagName);
|
Tag tag = _tagService.GetTagByName(tagName);
|
||||||
|
21
src/Orchard.Web/Packages/Orchard.Tags/Helpers/TagHelpers.cs
Normal file
21
src/Orchard.Web/Packages/Orchard.Tags/Helpers/TagHelpers.cs
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Orchard.Tags.Helpers {
|
||||||
|
public class TagHelpers {
|
||||||
|
public static List<string> ParseCommaSeparatedTagNames(string tags) {
|
||||||
|
if (String.IsNullOrEmpty(tags)) {
|
||||||
|
return new List<string>();
|
||||||
|
}
|
||||||
|
IEnumerable<string> tagNames = tags.Split(',');
|
||||||
|
List<string> sanitizedTagNames = new List<string>();
|
||||||
|
foreach (var tagName in tagNames) {
|
||||||
|
string sanitizedTagName = tagName.Trim();
|
||||||
|
if (!String.IsNullOrEmpty(sanitizedTagName)) {
|
||||||
|
sanitizedTagNames.Add(sanitizedTagName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sanitizedTagNames;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -5,6 +5,7 @@ using Orchard.Data;
|
|||||||
using Orchard.Models;
|
using Orchard.Models;
|
||||||
using Orchard.Models.Driver;
|
using Orchard.Models.Driver;
|
||||||
using Orchard.Models.ViewModels;
|
using Orchard.Models.ViewModels;
|
||||||
|
using Orchard.Tags.Helpers;
|
||||||
using Orchard.Tags.Services;
|
using Orchard.Tags.Services;
|
||||||
|
|
||||||
namespace Orchard.Tags.Models {
|
namespace Orchard.Tags.Models {
|
||||||
@@ -50,7 +51,7 @@ namespace Orchard.Tags.Models {
|
|||||||
|
|
||||||
TagsViewModel viewModel = new TagsViewModel();
|
TagsViewModel viewModel = new TagsViewModel();
|
||||||
context.Updater.TryUpdateModel(viewModel, String.Empty, null, null);
|
context.Updater.TryUpdateModel(viewModel, String.Empty, null, null);
|
||||||
List<string> tagNames = ParseCommaSeparatedTagNames(viewModel.Tags);
|
List<string> tagNames = TagHelpers.ParseCommaSeparatedTagNames(viewModel.Tags);
|
||||||
_tagService.UpdateTagsForContentItem(context.ContentItem.Id, tagNames);
|
_tagService.UpdateTagsForContentItem(context.ContentItem.Id, tagNames);
|
||||||
|
|
||||||
context.AddEditor(new TemplateViewModel(context.ContentItem.Get<HasTags>()));
|
context.AddEditor(new TemplateViewModel(context.ContentItem.Get<HasTags>()));
|
||||||
@@ -70,20 +71,6 @@ namespace Orchard.Tags.Models {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<string> ParseCommaSeparatedTagNames(string tags) {
|
|
||||||
if (String.IsNullOrEmpty(tags)) {
|
|
||||||
return new List<string>();
|
|
||||||
}
|
|
||||||
IEnumerable<string> tagNames = tags.Split(',');
|
|
||||||
List<string> sanitizedTagNames = new List<string>();
|
|
||||||
foreach (var tagName in tagNames) {
|
|
||||||
if (!String.IsNullOrEmpty(tagName)) {
|
|
||||||
sanitizedTagNames.Add(tagName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return sanitizedTagNames;
|
|
||||||
}
|
|
||||||
|
|
||||||
public class TagsViewModel {
|
public class TagsViewModel {
|
||||||
public string Tags { get; set; }
|
public string Tags { get; set; }
|
||||||
}
|
}
|
||||||
|
@@ -64,6 +64,7 @@
|
|||||||
<Compile Include="AdminMenu.cs" />
|
<Compile Include="AdminMenu.cs" />
|
||||||
<Compile Include="Controllers\AdminController.cs" />
|
<Compile Include="Controllers\AdminController.cs" />
|
||||||
<Compile Include="Controllers\HomeController.cs" />
|
<Compile Include="Controllers\HomeController.cs" />
|
||||||
|
<Compile Include="Helpers\TagHelpers.cs" />
|
||||||
<Compile Include="Models\Tag.cs" />
|
<Compile Include="Models\Tag.cs" />
|
||||||
<Compile Include="Models\TagSettings.cs" />
|
<Compile Include="Models\TagSettings.cs" />
|
||||||
<Compile Include="Models\TagsHandler.cs" />
|
<Compile Include="Models\TagsHandler.cs" />
|
||||||
|
Reference in New Issue
Block a user