mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-12-21 19:27:11 +08:00
Adding VectorGraphic media type.
This commit is contained in:
@@ -0,0 +1,16 @@
|
|||||||
|
using Orchard.ContentManagement.Drivers;
|
||||||
|
using Orchard.MediaLibrary.Models;
|
||||||
|
|
||||||
|
namespace Orchard.MediaLibrary.Drivers {
|
||||||
|
public class VectorGraphicPartDriver : ContentPartDriver<VectorGraphicPart> {
|
||||||
|
|
||||||
|
protected override DriverResult Display(VectorGraphicPart part, string displayType, dynamic shapeHelper) {
|
||||||
|
return Combined(
|
||||||
|
ContentShape("Parts_VectorGraphic_Metadata", () => shapeHelper.Parts_VectorGraphic_Metadata()),
|
||||||
|
ContentShape("Parts_VectorGraphic_Summary", () => shapeHelper.Parts_VectorGraphic_Summary()),
|
||||||
|
ContentShape("Parts_VectorGraphic", () => shapeHelper.Parts_VectorGraphic()),
|
||||||
|
ContentShape("Parts_VectorGraphic_SummaryAdmin", () => shapeHelper.Parts_VectorGraphic_SummaryAdmin())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using Orchard.ContentManagement;
|
||||||
|
using Orchard.ContentManagement.MetaData;
|
||||||
|
using Orchard.MediaLibrary.Models;
|
||||||
|
|
||||||
|
namespace Orchard.MediaLibrary.Factories {
|
||||||
|
|
||||||
|
public class VectorGraphicFactorySelector : IMediaFactorySelector {
|
||||||
|
private readonly IContentManager _contentManager;
|
||||||
|
private readonly IContentDefinitionManager _contentDefinitionManager;
|
||||||
|
|
||||||
|
public VectorGraphicFactorySelector(IContentManager contentManager, IContentDefinitionManager contentDefinitionManager) {
|
||||||
|
_contentManager = contentManager;
|
||||||
|
_contentDefinitionManager = contentDefinitionManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public MediaFactorySelectorResult GetMediaFactory(Stream stream, string mimeType, string contentType) {
|
||||||
|
if (!mimeType.StartsWith("image/svg")) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!String.IsNullOrEmpty(contentType)) {
|
||||||
|
var contentDefinition = _contentDefinitionManager.GetTypeDefinition(contentType);
|
||||||
|
if (contentDefinition == null || contentDefinition.Parts.All(x => x.PartDefinition.Name != typeof(VectorGraphicPart).Name)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new MediaFactorySelectorResult {
|
||||||
|
Priority = -5,
|
||||||
|
MediaFactory = new VectorGraphicFactory(_contentManager)
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class VectorGraphicFactory : IMediaFactory {
|
||||||
|
private readonly IContentManager _contentManager;
|
||||||
|
|
||||||
|
public VectorGraphicFactory(IContentManager contentManager) {
|
||||||
|
_contentManager = contentManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MediaPart CreateMedia(Stream stream, string path, string mimeType, string contentType) {
|
||||||
|
if (String.IsNullOrEmpty(contentType)) {
|
||||||
|
contentType = "VectorGraphic";
|
||||||
|
}
|
||||||
|
|
||||||
|
var part = _contentManager.New<MediaPart>(contentType);
|
||||||
|
|
||||||
|
part.LogicalType = "VectorGraphic";
|
||||||
|
part.MimeType = mimeType;
|
||||||
|
part.Title = Path.GetFileNameWithoutExtension(path);
|
||||||
|
|
||||||
|
var imagePart = part.As<VectorGraphicPart>();
|
||||||
|
if (imagePart == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return part;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -30,6 +30,11 @@ namespace Orchard.MediaLibrary {
|
|||||||
.WithDescription("Provides common metadata for an Image Media.")
|
.WithDescription("Provides common metadata for an Image Media.")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
ContentDefinitionManager.AlterPartDefinition("VectorGraphicPart", part => part
|
||||||
|
.Attachable()
|
||||||
|
.WithDescription("Provides common metadata for a Vector Graphic Media.")
|
||||||
|
);
|
||||||
|
|
||||||
ContentDefinitionManager.AlterPartDefinition("VideoPart", part => part
|
ContentDefinitionManager.AlterPartDefinition("VideoPart", part => part
|
||||||
.Attachable()
|
.Attachable()
|
||||||
.WithDescription("Provides common metadata for a Video Media.")
|
.WithDescription("Provides common metadata for a Video Media.")
|
||||||
@@ -61,6 +66,17 @@ namespace Orchard.MediaLibrary {
|
|||||||
.WithPart("TitlePart")
|
.WithPart("TitlePart")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
ContentDefinitionManager.AlterTypeDefinition("VectorGraphic", td => td
|
||||||
|
.DisplayedAs("Vector Graphic")
|
||||||
|
.WithSetting("Stereotype", "Media")
|
||||||
|
.WithSetting("MediaFileNameEditorSettings.ShowFileNameEditor", "True")
|
||||||
|
.WithPart("IdentityPart")
|
||||||
|
.WithPart("CommonPart")
|
||||||
|
.WithPart("MediaPart")
|
||||||
|
.WithPart("VectorGraphicPart")
|
||||||
|
.WithPart("TitlePart")
|
||||||
|
);
|
||||||
|
|
||||||
ContentDefinitionManager.AlterTypeDefinition("Video", td => td
|
ContentDefinitionManager.AlterTypeDefinition("Video", td => td
|
||||||
.DisplayedAs("Video")
|
.DisplayedAs("Video")
|
||||||
.WithSetting("Stereotype", "Media")
|
.WithSetting("Stereotype", "Media")
|
||||||
@@ -104,7 +120,7 @@ namespace Orchard.MediaLibrary {
|
|||||||
.WithPart("TitlePart")
|
.WithPart("TitlePart")
|
||||||
);
|
);
|
||||||
|
|
||||||
return 6;
|
return 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int UpdateFrom2() {
|
public int UpdateFrom2() {
|
||||||
@@ -193,5 +209,25 @@ namespace Orchard.MediaLibrary {
|
|||||||
|
|
||||||
return 6;
|
return 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int UpdateFrom6() {
|
||||||
|
ContentDefinitionManager.AlterPartDefinition("VectorGraphicPart", part => part
|
||||||
|
.Attachable()
|
||||||
|
.WithDescription("Provides common metadata for a Vector Graphic Media.")
|
||||||
|
);
|
||||||
|
|
||||||
|
ContentDefinitionManager.AlterTypeDefinition("VectorGraphic", td => td
|
||||||
|
.DisplayedAs("Vector Graphic")
|
||||||
|
.WithSetting("Stereotype", "Media")
|
||||||
|
.WithSetting("MediaFileNameEditorSettings.ShowFileNameEditor", "True")
|
||||||
|
.WithPart("IdentityPart")
|
||||||
|
.WithPart("CommonPart")
|
||||||
|
.WithPart("MediaPart")
|
||||||
|
.WithPart("VectorGraphicPart")
|
||||||
|
.WithPart("TitlePart")
|
||||||
|
);
|
||||||
|
|
||||||
|
return 7;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
using Orchard.ContentManagement;
|
||||||
|
|
||||||
|
namespace Orchard.MediaLibrary.Models {
|
||||||
|
public class VectorGraphicPart : ContentPart {
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -104,6 +104,9 @@
|
|||||||
</Content>
|
</Content>
|
||||||
<Content Include="Scripts\Web.config" />
|
<Content Include="Scripts\Web.config" />
|
||||||
<Content Include="Styles\Web.config" />
|
<Content Include="Styles\Web.config" />
|
||||||
|
<Compile Include="Drivers\VectorGraphicPartDriver.cs" />
|
||||||
|
<Compile Include="Factories\VectorGraphicFactory.cs" />
|
||||||
|
<Compile Include="Models\VectorGraphicPart.cs" />
|
||||||
<Compile Include="Models\IMediaFolder.cs" />
|
<Compile Include="Models\IMediaFolder.cs" />
|
||||||
<Compile Include="MediaFileName\MediaFileNameDriver.cs" />
|
<Compile Include="MediaFileName\MediaFileNameDriver.cs" />
|
||||||
<Compile Include="MediaFileName\MediaFileNameEditorSettings.cs" />
|
<Compile Include="MediaFileName\MediaFileNameEditorSettings.cs" />
|
||||||
@@ -360,6 +363,21 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Parts\Media.Edit.FileName.cshtml" />
|
<Content Include="Views\Parts\Media.Edit.FileName.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="Views\Parts\VectorGraphic.cshtml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="Views\Parts\VectorGraphic.Metadata.cshtml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="Views\Parts\VectorGraphic.Summary.cshtml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="Views\Parts\VectorGraphic.SummaryAdmin.cshtml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="Views\Media-VectorGraphic.Thumbnail.cshtml" />
|
||||||
|
</ItemGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
||||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
@using Orchard.ContentManagement
|
||||||
|
@using Orchard.MediaLibrary.Models
|
||||||
|
@using Orchard.Utility.Extensions
|
||||||
|
@model dynamic
|
||||||
|
|
||||||
|
@{
|
||||||
|
ContentItem contentItem = Model.ContentItem;
|
||||||
|
var media = contentItem.As<MediaPart>();
|
||||||
|
var vectorGraphic = contentItem.As<VectorGraphicPart>();
|
||||||
|
}
|
||||||
|
|
||||||
|
<div class="media-thumbnail media-thumbnail-@contentItem.ContentType.HtmlClassify() mime-type-@media.MimeType.HtmlClassify()">
|
||||||
|
<img width="200" height="200" src="@Url.Content(media.MediaUrl)" alt="@media.AlternateText" />
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
@using Orchard.MediaLibrary.Models
|
||||||
|
@{
|
||||||
|
VectorGraphicPart vectorGraphicPart = Model.ContentPart;
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
@using Orchard.ContentManagement
|
||||||
|
@using Orchard.MediaLibrary.Models
|
||||||
|
@{
|
||||||
|
VectorGraphicPart vectorGraphicPart = Model.ContentPart;
|
||||||
|
var mediaPart = ((ContentItem)Model.ContentItem).As<MediaPart>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@* Use a 200x200 profile in order to reuse the general thumbnail *@
|
||||||
|
<a href="@Url.Content(mediaPart.MediaUrl)">
|
||||||
|
<img width="200" height="200" alt="@mediaPart.AlternateText" src="@mediaPart.MediaUrl" />
|
||||||
|
</a>
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
@using Orchard.ContentManagement
|
||||||
|
@using Orchard.MediaLibrary.Models
|
||||||
|
@{
|
||||||
|
VectorGraphicPart vectorGraphicPart = Model.ContentPart;
|
||||||
|
var mediaPart = ((ContentItem) Model.ContentItem).As<MediaPart>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@* Use a 200x200 profile in order to reuse the general thumbnail *@
|
||||||
|
<img width="120" height="120" alt="@mediaPart.AlternateText" src="@mediaPart.MediaUrl" />
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
@using Orchard.ContentManagement
|
||||||
|
@using Orchard.MediaLibrary.Models
|
||||||
|
@{
|
||||||
|
VectorGraphicPart vectorGraphicPart = Model.ContentPart;
|
||||||
|
var mediaPart = ((ContentItem)Model.ContentItem).As<MediaPart>();
|
||||||
|
}
|
||||||
|
<img alt="@mediaPart.AlternateText" src="@Url.Content(mediaPart.MediaUrl)" />
|
||||||
Reference in New Issue
Block a user