2010-03-03 06:51:08 +08:00
|
|
|
|
using System.Text.RegularExpressions;
|
|
|
|
|
using Orchard.ContentManagement;
|
2010-03-03 06:07:58 +08:00
|
|
|
|
using Orchard.ContentManagement.Drivers;
|
2010-01-06 04:58:50 +08:00
|
|
|
|
using Orchard.Core.Common.Models;
|
|
|
|
|
using Orchard.Core.Common.ViewModels;
|
|
|
|
|
|
|
|
|
|
namespace Orchard.Core.Common.Controllers {
|
2010-03-03 06:07:58 +08:00
|
|
|
|
public class BodyDriver : ContentPartDriver<BodyAspect> {
|
|
|
|
|
public IOrchardServices Services { get; set; }
|
2010-01-06 04:58:50 +08:00
|
|
|
|
private const string TemplateName = "Parts/Common.Body";
|
|
|
|
|
private const string DefaultTextEditorTemplate = "TinyMceTextEditor";
|
2010-03-03 06:07:58 +08:00
|
|
|
|
|
|
|
|
|
public BodyDriver(IOrchardServices services) {
|
|
|
|
|
Services = services;
|
|
|
|
|
}
|
|
|
|
|
|
2010-01-06 04:58:50 +08:00
|
|
|
|
protected override string Prefix {
|
|
|
|
|
get {return "Body";}
|
|
|
|
|
}
|
|
|
|
|
|
2010-03-03 06:07:58 +08:00
|
|
|
|
// \/\/ Haackalicious on many accounts - don't copy what has been done here for the wrapper \/\/
|
2010-01-06 04:58:50 +08:00
|
|
|
|
protected override DriverResult Display(BodyAspect part, string displayType) {
|
2010-03-03 19:32:01 +08:00
|
|
|
|
var model = new BodyDisplayViewModel { BodyAspect = part, Text = BbcodeReplace(part.Text) };
|
|
|
|
|
|
2010-03-03 06:07:58 +08:00
|
|
|
|
return Combined(
|
2010-03-04 05:15:50 +08:00
|
|
|
|
Services.Authorizer.Authorize(Permissions.ChangeOwner) ? ContentPartTemplate(model, "Parts/Common.Body.ManageWrapperPre").Location("primary", "5") : null,
|
|
|
|
|
Services.Authorizer.Authorize(Permissions.ChangeOwner) ? ContentPartTemplate(model, "Parts/Common.Body.Manage").Location("primary", "5") : null,
|
2010-03-03 19:32:01 +08:00
|
|
|
|
ContentPartTemplate(model, TemplateName, Prefix).LongestMatch(displayType, "Summary", "SummaryAdmin").Location("primary", "5"),
|
2010-03-04 05:15:50 +08:00
|
|
|
|
Services.Authorizer.Authorize(Permissions.ChangeOwner) ? ContentPartTemplate(model, "Parts/Common.Body.ManageWrapperPost").Location("primary", "5") : null);
|
2010-01-06 04:58:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override DriverResult Editor(BodyAspect part) {
|
|
|
|
|
var model = new BodyEditorViewModel { BodyAspect = part, TextEditorTemplate = DefaultTextEditorTemplate };
|
2010-01-07 08:12:56 +08:00
|
|
|
|
return ContentPartTemplate(model, TemplateName, Prefix).Location("primary", "5");
|
2010-01-06 04:58:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
2010-03-03 06:07:58 +08:00
|
|
|
|
protected override DriverResult Editor(BodyAspect part, IUpdateModel updater) {
|
2010-01-06 04:58:50 +08:00
|
|
|
|
var model = new BodyEditorViewModel { BodyAspect = part, TextEditorTemplate = DefaultTextEditorTemplate };
|
|
|
|
|
updater.TryUpdateModel(model, Prefix, null, null);
|
2010-01-07 08:12:56 +08:00
|
|
|
|
return ContentPartTemplate(model, TemplateName, Prefix).Location("primary", "5");
|
2010-01-06 04:58:50 +08:00
|
|
|
|
}
|
2010-03-03 06:51:08 +08:00
|
|
|
|
|
|
|
|
|
// Can be moved somewhere else once we have IoC enabled body text filters.
|
|
|
|
|
private static string BbcodeReplace(string bodyText) {
|
|
|
|
|
Regex urlRegex = new Regex(@"\[url\]([^\]]+)\[\/url\]");
|
|
|
|
|
Regex urlRegexWithLink = new Regex(@"\[url=([^\]]+)\]([^\]]+)\[\/url\]");
|
|
|
|
|
Regex imgRegex = new Regex(@"\[img\]([^\]]+)\[\/img\]");
|
|
|
|
|
|
|
|
|
|
bodyText = urlRegex.Replace(bodyText, "<a href=\"$1\">$1</a>");
|
|
|
|
|
bodyText = urlRegexWithLink.Replace(bodyText, "<a href=\"$1\">$2</a>");
|
|
|
|
|
bodyText = imgRegex.Replace(bodyText, "<img src=\"$1\" />");
|
|
|
|
|
|
|
|
|
|
return bodyText;
|
|
|
|
|
}
|
2010-01-06 04:58:50 +08:00
|
|
|
|
}
|
|
|
|
|
}
|