diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Controllers/ClientStorageController.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Controllers/ClientStorageController.cs index 24e59f0b9..f764c6741 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Controllers/ClientStorageController.cs +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Controllers/ClientStorageController.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.IO; using System.Web.Mvc; -using Orchard.MediaLibrary.Providers.ClientStorage; using Orchard.MediaLibrary.Services; using Orchard.Themes; using Orchard.UI.Admin; diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Controllers/OEmbedController.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Controllers/OEmbedController.cs new file mode 100644 index 000000000..b380171df --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Controllers/OEmbedController.cs @@ -0,0 +1,110 @@ +using System; +using System.Net; +using System.Text.RegularExpressions; +using System.Web.Mvc; +using System.Xml.Linq; +using Orchard.MediaLibrary.Models; +using Orchard.MediaLibrary.Services; +using Orchard.MediaLibrary.ViewModels; +using Orchard.Taxonomies.Services; +using Orchard.Themes; +using Orchard.UI.Admin; +using Orchard.ContentManagement; + +namespace Orchard.MediaLibrary.Controllers { + [Admin, Themed(false)] + public class OEmbedController : Controller { + private readonly ITaxonomyService _taxonomyService; + private readonly IMediaLibraryService _mediaLibraryService; + + public OEmbedController( + ITaxonomyService taxonomyService, + IMediaLibraryService mediaManagerService, + IOrchardServices services) { + _taxonomyService = taxonomyService; + _mediaLibraryService = mediaManagerService; + Services = services; + } + + public IOrchardServices Services { get; set; } + + public ActionResult Index(int id) { + var viewModel = new OEmbedViewModel(); + return View(viewModel); + } + + [HttpPost] + public ActionResult Index(int id, string url) { + var viewModel = new OEmbedViewModel { + Url = url, + Id = id + }; + + try { + // + + var source = new WebClient().DownloadString(url); + + // seek type="text/xml+oembed" + var oembedSignature = source.IndexOf("type=\"text/xml+oembed\"", StringComparison.OrdinalIgnoreCase); + if (oembedSignature != -1) { + var tagStart = source.Substring(0, oembedSignature).LastIndexOf('<'); + var tagEnd = source.IndexOf('>', oembedSignature); + var tag = source.Substring(tagStart, tagEnd - tagStart); + var matches = new Regex("href=\"([^\"]+)\"").Matches(tag); + if (matches.Count > 0) { + var href = matches[0].Groups[1].Value; + try { + var content = new WebClient().DownloadString(href); + viewModel.Content = XDocument.Parse(content); + } + catch { + // bubble exception + } + } + } + } + catch (Exception e) { + return View(viewModel); + } + + return View(viewModel); + } + + [HttpPost, ValidateInput(false)] + public ActionResult MediaPost(int id, string url, string document) { + var termPart = _taxonomyService.GetTerm(id); + + if (termPart == null) { + return HttpNotFound(); + } + + var content = XDocument.Parse(document); + var oembed = content.Root; + + var part = Services.ContentManager.New("OEmbed"); + part.TermPart = _taxonomyService.GetTerm(id); + + part.Resource = url; + part.MimeType = "text/html"; + part.Title = oembed.Element("title").Value; + if (oembed.Element("description") != null) { + part.Caption = oembed.Element("description").Value; + } + var oembedPart = part.As(); + + foreach (var element in oembed.Elements()) { + oembedPart[element.Name.LocalName] = element.Value; + } + + + Services.ContentManager.Create(oembedPart); + + var viewModel = new OEmbedViewModel { + Id = id + }; + + return View("Index", viewModel); + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Drivers/ImagePartDriver.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Drivers/ImagePartDriver.cs index 3256a2f72..9d43363bc 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Drivers/ImagePartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Drivers/ImagePartDriver.cs @@ -10,7 +10,7 @@ namespace Orchard.MediaLibrary.Drivers { ContentShape("Parts_Image_Summary", () => shapeHelper.Parts_Image_Summary()), ContentShape("Parts_Image", () => shapeHelper.Parts_Image()), ContentShape("Parts_Image_SummaryAdmin", () => shapeHelper.Parts_Image_SummaryAdmin()) - ); + ); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Drivers/OEmbedPartDriver.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Drivers/OEmbedPartDriver.cs new file mode 100644 index 000000000..01a45e6e6 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Drivers/OEmbedPartDriver.cs @@ -0,0 +1,15 @@ +using Orchard.ContentManagement.Drivers; +using Orchard.MediaLibrary.Models; + +namespace Orchard.MediaLibrary.Drivers { + public class OEmbedPartDriver : ContentPartDriver { + protected override DriverResult Display(OEmbedPart part, string displayType, dynamic shapeHelper) { + return Combined( + ContentShape("Parts_OEmbed_Metadata", () => shapeHelper.Parts_OEmbed_Metadata()), + ContentShape("Parts_OEmbed_Summary", () => shapeHelper.Parts_OEmbed_Summary()), + ContentShape("Parts_OEmbed_SummaryAdmin", () => shapeHelper.Parts_OEmbed_SummaryAdmin()), + ContentShape("Parts_OEmbed", () => shapeHelper.Parts_OEmbed()) + ); + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Migrations.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Migrations.cs index ca7631b2a..851eda343 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Migrations.cs +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Migrations.cs @@ -67,5 +67,19 @@ namespace Orchard.MediaLibrary { return 1; } + + public int UpdateFrom1() { + + ContentDefinitionManager.AlterTypeDefinition("OEmbed", td => td + .DisplayedAs("External Media") + .WithSetting("Stereotype", "Media") + .WithPart("CommonPart") + .WithPart("MediaPart") + .WithPart("OEmbedPart") + .WithPart("TitlePart") + ); + + return 2; + } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Models/OEmbedPart.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Models/OEmbedPart.cs new file mode 100644 index 000000000..17ac26e75 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Models/OEmbedPart.cs @@ -0,0 +1,13 @@ +using Orchard.ContentManagement; +using Orchard.ContentManagement.FieldStorage.InfosetStorage; + +namespace Orchard.MediaLibrary.Models { + public class OEmbedPart : ContentPart { + + public string this[string index] { + get { return this.As().Get("OEmbedPart", index, null); } + set { this.As().Set("OEmbedPart", index, null, value); } + } + + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj index 8264c5dae..120249078 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj @@ -71,6 +71,8 @@ + + @@ -112,9 +114,11 @@ + + @@ -132,14 +136,16 @@ + - + - + + @@ -153,6 +159,7 @@ + @@ -276,6 +283,24 @@ + + + + + + + + + + + + + + + + + + 10.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Placement.info b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Placement.info index 2cd9ad91b..876687095 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Placement.info +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Placement.info @@ -80,6 +80,20 @@ - + + + + + + + + + + + + + diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Providers/ClientStorage/ClientStorageMenu.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Providers/ClientStorageMenu.cs similarity index 76% rename from src/Orchard.Web/Modules/Orchard.MediaLibrary/Providers/ClientStorage/ClientStorageMenu.cs rename to src/Orchard.Web/Modules/Orchard.MediaLibrary/Providers/ClientStorageMenu.cs index 1c3f83148..7f8b8a973 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Providers/ClientStorage/ClientStorageMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Providers/ClientStorageMenu.cs @@ -1,11 +1,11 @@ using Orchard.Localization; using Orchard.UI.Navigation; -namespace Orchard.MediaLibrary.Providers.ClientStorage { - public class NavigationProvider : INavigationProvider { +namespace Orchard.MediaLibrary.Providers { + public class ClientStorageMenu : INavigationProvider { public Localizer T { get; set; } - public NavigationProvider() { + public ClientStorageMenu() { T = NullLocalizer.Instance; } diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Providers/OEmbedMenu.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Providers/OEmbedMenu.cs new file mode 100644 index 000000000..82875e1fb --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Providers/OEmbedMenu.cs @@ -0,0 +1,21 @@ +using Orchard.Localization; +using Orchard.UI.Navigation; + +namespace Orchard.MediaLibrary.Providers { + public class OEmbedMenu : INavigationProvider { + public Localizer T { get; set; } + + public OEmbedMenu() { + T = NullLocalizer.Instance; + } + + public string MenuName { get { return "mediaproviders"; } } + + public void GetNavigation(NavigationBuilder builder) { + builder.AddImageSet("oembed") + .Add(T("Media Url"), "10", + menu => menu.Action("Index", "OEmbed", new { area = "Orchard.MediaLibrary" }) + .Permission(Permissions.ManageMediaContent)); + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Providers/WebSearchMenu.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Providers/WebSearchMenu.cs index e698dfae6..896205d0f 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Providers/WebSearchMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Providers/WebSearchMenu.cs @@ -13,7 +13,7 @@ namespace Orchard.MediaLibrary.Providers { public void GetNavigation(NavigationBuilder builder) { builder.AddImageSet("websearch") - .Add(T("Web Search"), "5", + .Add(T("Web Search"), "7", menu => menu.Action("Index", "WebSearch", new { area = "Orchard.MediaLibrary" }) .Permission(Permissions.ManageMediaContent)); } diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Styles/menu.oembed-mediaproviders.css b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Styles/menu.oembed-mediaproviders.css new file mode 100644 index 000000000..d7bbd5d63 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Styles/menu.oembed-mediaproviders.css @@ -0,0 +1,3 @@ +.navicon-media-url { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAPCAYAAAACsSQRAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAQpJREFUOE+dk7EKgzAQQDXSvfRHOvgDbgU3v8NPcHVxdfUH6uziLri6OAl+QycnkWvuyIUkxLZUeJjTu5e7iAEA+AgdIie28q3gX7wPDcxdfZ3QmgMfou97iOMY2raFfd+DLMsgSRLYto1FHyVh0zQkqOua7mVZgiHReXg3C4njOERRFJS8riukaQrLspAAZV8lsuU7Jud5DtM0UREzDAOwXEqeSnDBOi2Y55mSq6oCPgsXPBsecxxHWQbCkmChmXQGdtl1HeXKyzvOlWc/Q41zUwK7E4Q/Ixeo3R6yy5cj4RrdCS0QKREeCY16IiGsQEqiHyV6Y8SSSPAlgj8cg3PT7ApLgFjBf0DwBrFhrWGsTyEzAAAAAElFTkSuQmCC'); +} diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Styles/orchard-medialibrary-admin.css b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Styles/orchard-medialibrary-admin.css index 1c4f7d13a..c64c20b15 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Styles/orchard-medialibrary-admin.css +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Styles/orchard-medialibrary-admin.css @@ -113,7 +113,8 @@ #media-library-main-list { width: auto; height: 100%; - padding-left: 10px; + padding-left: 3px; + padding-top: 3px; overflow-y: auto; overflow-x: hidden; } @@ -149,6 +150,7 @@ background: #fafafa; color: grey; border-left: 1px solid #e0e0e0; + overflow-y: auto; } #media-library-main-editor em { @@ -163,6 +165,9 @@ #media-library-main-editor footer, #media-library-main-editor .properties { margin-top: 10px; + overflow: hidden; + -ms-word-break: break-all; + word-break: break-all; } #media-library-main-selection { @@ -170,6 +175,10 @@ overflow: hidden; } + #media-library-main-editor .properties span { + overflow: hidden; + } + #media-library-main-selection li { float: left; margin: 0 3px 3px 0; @@ -230,6 +239,17 @@ width: 60px; height: 60px; } + +.media-thumbnail-o-embed { + background-repeat: no-repeat; + -moz-background-size: cover; + -o-background-size: cover; + -webkit-background-size: cover; + background-size: cover; + background-image: none; + box-sizing: inherit; +} + .media-thumbnail-image { background-repeat: no-repeat; -moz-background-size: cover; diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Styles/orchard-oembed-admin.css b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Styles/orchard-oembed-admin.css new file mode 100644 index 000000000..acd8f2a7b --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Styles/orchard-oembed-admin.css @@ -0,0 +1,28 @@ +body { + margin: 0; + padding: 0; + border: 0; + overflow: hidden; + height: 100%; + max-height: 100%; +} + +#oembed-main { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + padding: 5px; + overflow: auto; +} + +#query { + background-position: right center; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAARCAIAAABbzbuTAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAKdJREFUOE+lkcEJAyEQRe0pRy+evFuHJViBNdiPFXj2agULooiZzbjGuIYgeSALf+aps5K6yR9CKUUp9biQUqaUWm2gCc651viJtRYbOqcQQuCcQ1lrjSlgjIGEUuq9b9GLU8Da2I0sc4JXv+8E4MnTMCTnLIRgjB3H0bKLZWn/BFh7M8Da/kvAt3cA5hnad/XSMUZMRuctLOm79NF/CAA6G8LEplDrE2p/mfIGi8fEAAAAAElFTkSuQmCC'); + background-repeat: no-repeat; + padding-right: 20px; + box-sizing: border-box; + margin-bottom: 10px; + +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/ViewModels/OEmbedViewModel.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/ViewModels/OEmbedViewModel.cs new file mode 100644 index 000000000..7a97f466a --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/ViewModels/OEmbedViewModel.cs @@ -0,0 +1,10 @@ +using System.Xml.Linq; + +namespace Orchard.MediaLibrary.ViewModels { + public class OEmbedViewModel { + public int Id { get; set; } + public string Url { get; set; } + public XDocument Content { get; set; } + public bool Success { get; set; } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Admin/Index.cshtml b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Admin/Index.cshtml index 99ca0d6cf..c81c0f544 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Admin/Index.cshtml +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Admin/Index.cshtml @@ -394,9 +394,10 @@ }, cursor: 'move', - distance: 10, + distance: 10, create: function() { - $(this).draggable("option", "cursorAt", { left: $(this).width() / 2, top: $(this).height() / 2 }); + // position the handler a little left to the center to let the number of selected items to appear + $(this).draggable("option", "cursorAt", { left: $(this).width() / 2 - 20, top: $(this).height() / 2 }); } }); } diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Media-Document.Thumbnail.cshtml b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Media-Document.Thumbnail.cshtml index 265963d5b..b8ad03b98 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Media-Document.Thumbnail.cshtml +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Media-Document.Thumbnail.cshtml @@ -9,4 +9,4 @@ var document = contentItem.As(); } -
+
diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Media-OEmbed.Thumbnail.cshtml b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Media-OEmbed.Thumbnail.cshtml new file mode 100644 index 000000000..c79cb0f90 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Media-OEmbed.Thumbnail.cshtml @@ -0,0 +1,16 @@ +@using Orchard.ContentManagement +@using Orchard.MediaLibrary.Models +@using Orchard.Utility.Extensions +@model dynamic + +@{ + ContentItem contentItem = Model.ContentItem; + var media = contentItem.As(); + var oembed = contentItem.As(); +} + +@if (!String.IsNullOrEmpty(oembed["thumbnail_url"])) { +
+ +
+} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Media.Thumbnail.cshtml b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Media.Thumbnail.cshtml index b9a4228aa..d393db3bc 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Media.Thumbnail.cshtml +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Media.Thumbnail.cshtml @@ -1,5 +1,6 @@ @using Orchard.ContentManagement @using Orchard.MediaLibrary.Models +@using Orchard.Utility.Extensions @model dynamic @{ @@ -7,4 +8,4 @@ var media = contentItem.As(); } - \ No newline at end of file +
\ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/OEmbed/Index.cshtml b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/OEmbed/Index.cshtml new file mode 100644 index 000000000..e1a372f85 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/OEmbed/Index.cshtml @@ -0,0 +1,76 @@ +@model Orchard.MediaLibrary.ViewModels.OEmbedViewModel + +@using System.Text +@using System.Xml; + + + + + @{ + Script.Require("jQuery"); + Script.Require("jQueryUI"); + + Style.Include("orchard-medialibrary-admin.css"); + Style.Include("orchard-mediaproviders-admin.css"); + Style.Include("orchard-oembed-admin.css"); + + } + + @Display.Metas() + @Display.HeadScripts() + @Display.HeadLinks() + @Display.StyleSheetLinks() + + + +
+
+ @using (Html.BeginFormAntiForgeryPost()) { + + } +
+ + @if (Model.Content != null) { + var oembed = Model.Content.Root; + var type = oembed.Element("type").Value; + + switch (oembed.Element("type").Value) { + case "photo": + + break; + case "video": + @Html.Raw(oembed.Element("html").Value) + break; + case "link": + oembed.Element("title").Value + break; + case "rich": + @Html.Raw(oembed.Element("html").Value) + break; + } + +using (Html.BeginFormAntiForgeryPost(Url.Action("MediaPost"))) { + @Html.Hidden("url", Model.Url) + @Html.Hidden("id", Model.Id) + @Html.Hidden("document", Model.Content.ToString()) + + +} + } + +
+ + + @using (Script.Foot()) { + + } + + @Display.FootScripts() + + \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Parts/OEmbed.Metadata.cshtml b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Parts/OEmbed.Metadata.cshtml new file mode 100644 index 000000000..fa0c685c5 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Parts/OEmbed.Metadata.cshtml @@ -0,0 +1,11 @@ +@using Orchard.ContentManagement +@using Orchard.MediaLibrary.Models +@using Orchard.Utility.Extensions +@{ + OEmbedPart oembedPart = Model.ContentPart; +} + +
+ @T("Source:") + @oembedPart["provider_name"] +
\ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Parts/OEmbed.Summary.cshtml b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Parts/OEmbed.Summary.cshtml new file mode 100644 index 000000000..a418a7174 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Parts/OEmbed.Summary.cshtml @@ -0,0 +1,10 @@ +@using Orchard.ContentManagement +@using Orchard.MediaLibrary.Models +@{ + OEmbedPart oembedPart = Model.ContentPart; + var mediaPart = ((ContentItem)Model.ContentItem).As(); +} + + + @T("Preview") + \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Parts/OEmbed.SummaryAdmin.cshtml b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Parts/OEmbed.SummaryAdmin.cshtml new file mode 100644 index 000000000..314ac096c --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Parts/OEmbed.SummaryAdmin.cshtml @@ -0,0 +1,10 @@ +@using Orchard.ContentManagement +@using Orchard.MediaLibrary.Models +@{ + OEmbedPart oEmbedPart = Model.ContentPart; + var mediaPart = ((ContentItem)Model.ContentItem).As(); +} + + + @T("Preview") + diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Parts/OEmbed.cshtml b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Parts/OEmbed.cshtml new file mode 100644 index 000000000..3337b7af2 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Parts/OEmbed.cshtml @@ -0,0 +1,21 @@ +@using Orchard.ContentManagement +@using Orchard.MediaLibrary.Models +@{ + OEmbedPart oembedPart = Model.ContentPart; + var mediaPart = ((ContentItem)Model.ContentItem).As(); +} + +@switch (oembedPart["type"]) { + case "photo" : + + break; + case "video": + @Html.Raw(oembedPart["html"]) + break; + case "link": + @Html.ItemDisplayText(mediaPart) + break; + case "rich": + @Html.Raw(oembedPart["html"]) + break; +} diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Web.config b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Web.config index 88b84a792..c7da7b40e 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Web.config +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Web.config @@ -33,7 +33,8 @@ - + + diff --git a/src/Orchard.Web/Modules/Orchard.MediaProcessing/Descriptors/Filter/FilterContext.cs b/src/Orchard.Web/Modules/Orchard.MediaProcessing/Descriptors/Filter/FilterContext.cs index 65ea4b792..836170eac 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaProcessing/Descriptors/Filter/FilterContext.cs +++ b/src/Orchard.Web/Modules/Orchard.MediaProcessing/Descriptors/Filter/FilterContext.cs @@ -4,7 +4,6 @@ namespace Orchard.MediaProcessing.Descriptors.Filter { public class FilterContext { public dynamic State { get; set; } public Stream Media { get; set; } - public string Format { get; set; } public string FilePath { get; set; } /// diff --git a/src/Orchard.Web/Modules/Orchard.MediaProcessing/Shapes/MediaShapes.cs b/src/Orchard.Web/Modules/Orchard.MediaProcessing/Shapes/MediaShapes.cs index 25d0f7bb2..f0f4967cc 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaProcessing/Shapes/MediaShapes.cs +++ b/src/Orchard.Web/Modules/Orchard.MediaProcessing/Shapes/MediaShapes.cs @@ -131,7 +131,7 @@ namespace Orchard.MediaProcessing.Shapes { using (var image = GetImage(Path)) { - var filterContext = new FilterContext { Media = image, Format = new FileInfo(Path).Extension, FilePath = storageProvider.Value.Combine(Profile, CreateDefaultFileName(Path)) }; + var filterContext = new FilterContext { Media = image, FilePath = storageProvider.Value.Combine(Profile, CreateDefaultFileName(Path)) }; var tokens = new Dictionary(); // if a content item is provided, use it while tokenizing