From 86385c8e1de4d2b494eb93dc33c2537eac0ebe93 Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Mon, 3 Jun 2013 16:20:10 -0700 Subject: [PATCH] Creating an Api Key setting for Web Search in Media Library --HG-- branch : 1.x --- .../Styles/orchard-imageeditor-admin.css | 2 +- .../Handlers/WebSearchSettingsPartHandler.cs | 25 +++++++++++++++++++ .../Models/WebSearchSettingsPart.cs | 12 +++++++++ .../Orchard.MediaLibrary.csproj | 5 ++++ .../Styles/orchard-medialibrary-admin.css | 25 +++++++++++++------ .../Styles/orchard-oembed-admin.css | 12 +++++---- .../Styles/orchard-websearch-admin.css | 22 ++++++++++++---- .../Parts/WebSearch.WebSearchSettings.cshtml | 14 +++++++++++ .../Views/WebSearch/Index.cshtml | 17 ++++++++++--- .../Styles/admin-taxonomy-tags.css | 18 +++++++------ 10 files changed, 122 insertions(+), 30 deletions(-) create mode 100644 src/Orchard.Web/Modules/Orchard.MediaLibrary/Handlers/WebSearchSettingsPartHandler.cs create mode 100644 src/Orchard.Web/Modules/Orchard.MediaLibrary/Models/WebSearchSettingsPart.cs create mode 100644 src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/EditorTemplates/Parts/WebSearch.WebSearchSettings.cshtml diff --git a/src/Orchard.Web/Modules/Orchard.ImageEditor/Styles/orchard-imageeditor-admin.css b/src/Orchard.Web/Modules/Orchard.ImageEditor/Styles/orchard-imageeditor-admin.css index 850316896..ea7afc9c4 100644 --- a/src/Orchard.Web/Modules/Orchard.ImageEditor/Styles/orchard-imageeditor-admin.css +++ b/src/Orchard.Web/Modules/Orchard.ImageEditor/Styles/orchard-imageeditor-admin.css @@ -83,7 +83,7 @@ Pixels EMs Percent Points 24px 1.846em 184.6% 18pt */ -html, body { height:100%; box-sizing: border-box; } +html, body { height:100%; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } html { color:#333; diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Handlers/WebSearchSettingsPartHandler.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Handlers/WebSearchSettingsPartHandler.cs new file mode 100644 index 000000000..7a7daba2d --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Handlers/WebSearchSettingsPartHandler.cs @@ -0,0 +1,25 @@ +using JetBrains.Annotations; +using Orchard.ContentManagement; +using Orchard.ContentManagement.Handlers; +using Orchard.Localization; +using Orchard.MediaLibrary.Models; + +namespace Orchard.MediaLibrary.Handlers { + [UsedImplicitly] + public class WebSearchSettingsPartHandler : ContentHandler { + public WebSearchSettingsPartHandler() { + T = NullLocalizer.Instance; + Filters.Add(new ActivatingFilter("Site")); + Filters.Add(new TemplateFilterForPart("WebSearchSettings", "Parts/WebSearch.WebSearchSettings", "media")); + } + + public Localizer T { get; set; } + + protected override void GetItemMetadata(GetContentItemMetadataContext context) { + if (context.ContentItem.ContentType != "Site") + return; + base.GetItemMetadata(context); + context.Metadata.EditorGroupInfo.Add(new GroupInfo(T("Media"))); + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Models/WebSearchSettingsPart.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Models/WebSearchSettingsPart.cs new file mode 100644 index 000000000..d2faebe35 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Models/WebSearchSettingsPart.cs @@ -0,0 +1,12 @@ +using Orchard.ContentManagement; +using Orchard.ContentManagement.FieldStorage.InfosetStorage; + +namespace Orchard.MediaLibrary.Models { + public class WebSearchSettingsPart : ContentPart { + + public string ApiKey { + get { return this.As().Get("ApiKey"); } + set { this.As().Set("ApiKey", 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 120249078..117d7a23a 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj @@ -134,8 +134,10 @@ + + @@ -301,6 +303,9 @@ + + + 10.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) 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 f6756ef36..c730ee874 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 @@ -1,9 +1,10 @@ - .zone-content, #content, #main, #layout-content , #layout-main { +.zone-content, #content, #main, #layout-content, #layout-main { height: 100%; display: block; min-height: 400px; - margin-bottom: 0; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; box-sizing: border-box; } @@ -35,6 +36,8 @@ border: 1px solid #e0e0e0; border-width: 0 1px 1px 1px; background-color: white; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; box-sizing: border-box; } @@ -86,12 +89,12 @@ font-size:14px; } - .media-library-folder-title { - box-sizing: border-box; - -moz-box-sizing: border-box; - border: 2px solid transparent; - width: 100%; - } +.media-library-folder-title { + -moz-box-sizing: border-box; + box-sizing: border-box; + border: 2px solid transparent; + width: 100%; +} .media-library-folder-title.dropping { border-color: #444; @@ -268,6 +271,8 @@ -webkit-background-size: cover; background-size: cover; background-image: none; + -moz-box-sizing: inherit; + -webkit-box-sizing: inherit; box-sizing: inherit; } @@ -284,6 +289,8 @@ background-repeat: no-repeat; background-position: center; border: 1px solid #e0e0e0; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; box-sizing: border-box; } @@ -292,6 +299,8 @@ background-repeat: no-repeat; background-position: center; border: 1px solid #e0e0e0; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; box-sizing: border-box; } 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 index e1cfd23e0..cba34c90d 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Styles/orchard-oembed-admin.css +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Styles/orchard-oembed-admin.css @@ -22,11 +22,13 @@ margin-right: 40px; } -#query input { - width: 100%; - box-sizing: border-box; - height: 28px; -} + #query input { + width: 100%; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + height: 28px; + } #icon { float: right; diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Styles/orchard-websearch-admin.css b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Styles/orchard-websearch-admin.css index 07f993c75..b02d9e432 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Styles/orchard-websearch-admin.css +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Styles/orchard-websearch-admin.css @@ -162,11 +162,13 @@ margin-right: 40px; } -#query input { - width: 100%; - box-sizing: border-box; - height: 28px; -} + #query input { + width: 100%; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + height: 28px; + } #icon { float: right; @@ -188,4 +190,14 @@ .actions { margin-top: 5px; +} + +#message-api { + background: #fdf5bc; /* yellow */ + border: 1px solid #ffea9b; + margin: 5px; + padding: 5px; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/EditorTemplates/Parts/WebSearch.WebSearchSettings.cshtml b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/EditorTemplates/Parts/WebSearch.WebSearchSettings.cshtml new file mode 100644 index 000000000..b2d094119 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/EditorTemplates/Parts/WebSearch.WebSearchSettings.cshtml @@ -0,0 +1,14 @@ +@model Orchard.MediaLibrary.Models.WebSearchSettingsPart + +
+ @T("Web Search") +
+ @Html.TextBoxFor(m => m.ApiKey, new { @class = "textMedium"}) + @T("Your private key.") +
+ + @T("Get a free API Key on {0}", "http://datamarket.azure.com/dataset/bing/search") +
+ + + diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/WebSearch/Index.cshtml b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/WebSearch/Index.cshtml index f26930ab1..9188ab1d3 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/WebSearch/Index.cshtml +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/WebSearch/Index.cshtml @@ -1,4 +1,7 @@ @using System.Text +@using Orchard.ContentManagement +@using Orchard.MediaLibrary.Models +@using Orchard.UI.Notify @@ -16,12 +19,20 @@ @Display.HeadScripts() @Display.HeadLinks() @Display.StyleSheetLinks() + + @{ + var apiKey = WorkContext.CurrentSite.As().ApiKey; + } -
+ @if (String.IsNullOrWhiteSpace(apiKey)) { +
+ @T("You need to define an API Key in the Media settings before being able to use this feature.") +
+ }
@@ -118,11 +129,11 @@ self.doSearch = function () { var query = $('#query > input').val(); var url = 'https://api.datamarket.azure.com/Bing/Search/Image?$format=json&Query=%27' + encodeURIComponent(query) + '%27'; - + $.ajax({ type: "POST", url: url, - headers: { "Authorization": "Basic @Convert.ToBase64String(Encoding.ASCII.GetBytes(":" + "FqMaK2bg6vxvFBOFFNF2uS8hHFWo3t1PM3YNxVswx7o="))" } + headers: { "Authorization": "Basic @Convert.ToBase64String(Encoding.ASCII.GetBytes(":" + @apiKey))" } }).done(function (msg) { var results = msg.d.results; self.clearSelection(); diff --git a/src/Orchard.Web/Modules/Orchard.Taxonomies/Styles/admin-taxonomy-tags.css b/src/Orchard.Web/Modules/Orchard.Taxonomies/Styles/admin-taxonomy-tags.css index 463822cb0..5bb329acd 100644 --- a/src/Orchard.Web/Modules/Orchard.Taxonomies/Styles/admin-taxonomy-tags.css +++ b/src/Orchard.Web/Modules/Orchard.Taxonomies/Styles/admin-taxonomy-tags.css @@ -109,14 +109,16 @@ ul.tagit li.tagit-choice a.tagit-close:hover { color: #535353; } -ul.tagit input[type="text"] { - -moz-box-sizing: border-box; - border: none !important; - margin: 0 !important; - padding: 0 !important; - width: inherit !important; - outline: none; -} + ul.tagit input[type="text"] { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: none !important; + margin: 0 !important; + padding: 0 !important; + width: inherit !important; + outline: none; + } .tagit-hiddenSelect { display:none;