Refactoring Media files

- Moving Media Fields to Media Picker
- Enabling Media Library in default recipe
- Integrating TinyMce module only if features are enabled
- Disabling Media Picker in new installs

--HG--
branch : 1.x
This commit is contained in:
Sebastien Ros
2013-06-10 17:43:53 -07:00
parent eeda28ded8
commit e89012790f
36 changed files with 192 additions and 119 deletions

View File

@@ -1 +1 @@
setup /SiteName:Profiling /AdminUsername:admin /AdminPassword:profiling-secret /DatabaseProvider:SQLServer /DatabaseConnectionString:"Data Source=.;Initial Catalog=Orchard;Integrated Security=True" /EnabledFeatures:Profiling,Orchard.Framework,Common,Containers,Contents,Dashboard,Feeds,Navigation,Reports,Scheduling,Settings,Shapes,Title,PackagingServices,Gallery,Orchard.PublishLater,Orchard.Blogs,Orchard.Comments,Orchard.ContentTypes,Orchard.jQuery,Orchard.Lists,Orchard.Media,Orchard.ContentPicker,Orchard.MediaPicker,Orchard.Modules,Orchard.Packaging,Orchard.Pages,Orchard.Recipes,Orchard.Roles,Orchard.Tags,Orchard.Themes,Orchard.Users,Orchard.Scripting,Orchard.Scripting.Lightweight,Orchard.Widgets,TinyMce,TheThemeMachine,Orchard.Tokens,Orchard.Alias,Orchard.Autoroute
setup /SiteName:Profiling /AdminUsername:admin /AdminPassword:profiling-secret /DatabaseProvider:SQLServer /DatabaseConnectionString:"Data Source=.;Initial Catalog=Orchard;Integrated Security=True" /EnabledFeatures:Profiling,Orchard.Framework,Common,Containers,Contents,Dashboard,Feeds,Navigation,Reports,Scheduling,Settings,Shapes,Title,PackagingServices,Gallery,Orchard.PublishLater,Orchard.Blogs,Orchard.Comments,Orchard.ContentTypes,Orchard.jQuery,Orchard.Lists,Orchard.MediaLibrary,Orchard.ContentPicker,Orchard.MediaPicker,Orchard.Modules,Orchard.Packaging,Orchard.Pages,Orchard.Recipes,Orchard.Roles,Orchard.Tags,Orchard.Themes,Orchard.Users,Orchard.Scripting,Orchard.Scripting.Lightweight,Orchard.Widgets,TinyMce,TheThemeMachine,Orchard.Tokens,Orchard.Alias,Orchard.Autoroute

View File

@@ -23,7 +23,7 @@ namespace Orchard.Specs.Bindings {
webApp.GivenIHaveACleanSiteWith(
virtualDirectory,
TableData(
new { extension = "Module", names = "Orchard.Setup, Orchard.Pages, Orchard.ContentPicker, Orchard.Blogs, Orchard.Messaging, Orchard.Media, Orchard.MediaPicker, Orchard.ContentPicker, Orchard.Modules, Orchard.Packaging, Orchard.PublishLater, Orchard.Themes, Orchard.Scripting, Orchard.Widgets, Orchard.Users, Orchard.ContentTypes, Orchard.Roles, Orchard.Comments, Orchard.jQuery, Orchard.Tags, TinyMce, Orchard.Packaging, Orchard.Recipes, Orchard.Warmup, Orchard.Alias, Orchard.Forms, Orchard.Tokens, Orchard.Autoroute, Orchard.Projections, Orchard.Fields" },
new { extension = "Module", names = "Orchard.Setup, Orchard.Pages, Orchard.ContentPicker, Orchard.Blogs, Orchard.Messaging, Orchard.MediaLibrary, Orchard.ContentPicker, Orchard.Modules, Orchard.Packaging, Orchard.PublishLater, Orchard.Themes, Orchard.Scripting, Orchard.Widgets, Orchard.Users, Orchard.ContentTypes, Orchard.Roles, Orchard.Comments, Orchard.jQuery, Orchard.Tags, TinyMce, Orchard.Packaging, Orchard.Recipes, Orchard.Warmup, Orchard.Alias, Orchard.Forms, Orchard.Tokens, Orchard.Autoroute, Orchard.Projections, Orchard.Fields" },
new { extension = "Core", names = "Common, Containers, Dashboard, Feeds, Navigation, Contents, Scheduling, Settings, Shapes, XmlRpc, Title, Reports" },
new { extension = "Theme", names = "SafeMode, TheAdmin, TheThemeMachine" }));

View File

@@ -39,7 +39,7 @@ Scenario: Some of the initial form values are required
Scenario: Calling setup on a brand new install
Given I have a clean site with
| extension | names |
| Module | Orchard.Setup, Orchard.Pages, Orchard.ContentPicker, Orchard.Blogs, Orchard.Messaging, Orchard.Media, Orchard.MediaPicker, Orchard.ContentPicker, Orchard.Modules, Orchard.Packaging, Orchard.PublishLater, Orchard.Themes, Orchard.Scripting, Orchard.Widgets, Orchard.Users, Orchard.ContentTypes, Orchard.Roles, Orchard.Comments, Orchard.jQuery, Orchard.Tags, TinyMce, Orchard.Packaging, Orchard.Recipes, Orchard.Warmup, Orchard.Alias, Orchard.Forms, Orchard.Tokens, Orchard.Autoroute, Orchard.Projections, Orchard.Fields |
| Module | Orchard.Setup, Orchard.Pages, Orchard.ContentPicker, Orchard.Blogs, Orchard.Messaging, Orchard.MediaLibrary, Orchard.ContentPicker, Orchard.Modules, Orchard.Packaging, Orchard.PublishLater, Orchard.Themes, Orchard.Scripting, Orchard.Widgets, Orchard.Users, Orchard.ContentTypes, Orchard.Roles, Orchard.Comments, Orchard.jQuery, Orchard.Tags, TinyMce, Orchard.Packaging, Orchard.Recipes, Orchard.Warmup, Orchard.Alias, Orchard.Forms, Orchard.Tokens, Orchard.Autoroute, Orchard.Projections, Orchard.Fields |
| Core | Common, Containers, Dashboard, Feeds, Navigation, Contents, Scheduling, Settings, Shapes, XmlRpc, Title |
| Theme | SafeMode, TheAdmin, TheThemeMachine |
And I am on "/Setup"

View File

@@ -3,7 +3,7 @@
// This code was generated by SpecFlow (http://www.specflow.org/).
// SpecFlow Version:1.9.0.77
// SpecFlow Generator Version:1.9.0.0
// Runtime Version:4.0.30319.18010
// Runtime Version:4.0.30319.18046
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -191,7 +191,7 @@ this.ScenarioSetup(scenarioInfo);
"names"});
table4.AddRow(new string[] {
"Module",
@"Orchard.Setup, Orchard.Pages, Orchard.ContentPicker, Orchard.Blogs, Orchard.Messaging, Orchard.Media, Orchard.MediaPicker, Orchard.ContentPicker, Orchard.Modules, Orchard.Packaging, Orchard.PublishLater, Orchard.Themes, Orchard.Scripting, Orchard.Widgets, Orchard.Users, Orchard.ContentTypes, Orchard.Roles, Orchard.Comments, Orchard.jQuery, Orchard.Tags, TinyMce, Orchard.Packaging, Orchard.Recipes, Orchard.Warmup, Orchard.Alias, Orchard.Forms, Orchard.Tokens, Orchard.Autoroute, Orchard.Projections, Orchard.Fields"});
@"Orchard.Setup, Orchard.Pages, Orchard.ContentPicker, Orchard.Blogs, Orchard.Messaging, Orchard.MediaLibrary, Orchard.ContentPicker, Orchard.Modules, Orchard.Packaging, Orchard.PublishLater, Orchard.Themes, Orchard.Scripting, Orchard.Widgets, Orchard.Users, Orchard.ContentTypes, Orchard.Roles, Orchard.Comments, Orchard.jQuery, Orchard.Tags, TinyMce, Orchard.Packaging, Orchard.Recipes, Orchard.Warmup, Orchard.Alias, Orchard.Forms, Orchard.Tokens, Orchard.Autoroute, Orchard.Projections, Orchard.Fields"});
table4.AddRow(new string[] {
"Core",
"Common, Containers, Dashboard, Feeds, Navigation, Contents, Scheduling, Settings," +

View File

@@ -7,6 +7,6 @@ OrchardVersion: 1.4
Description: Some content fields
Features:
Orchard.Fields:
Description: Contains the following fields: Input, Boolean, DateTime, Numeric, Link, Enumeration, Media Picker
Description: Contains the following fields: Input, Boolean, DateTime, Numeric, Link, Enumeration
Category: Fields
Dependencies: Orchard.jQuery, Orchard.Media, Orchard.MediaPicker
Dependencies: Orchard.jQuery

View File

@@ -73,10 +73,6 @@
<Content Include="Views\Web.config" />
<Content Include="Scripts\Web.config" />
<Content Include="Styles\Web.config" />
<Compile Include="Drivers\MediaGalleryFieldDriver.cs" />
<Compile Include="Drivers\MediaPickerFieldDriver.cs" />
<Compile Include="Fields\MediaGalleryField.cs" />
<Compile Include="Handlers\MediaGalleryFieldHandler.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Content Include="Module.txt" />
</ItemGroup>
@@ -125,19 +121,14 @@
<Compile Include="Drivers\LinkFieldDriver.cs" />
<Compile Include="Fields\BooleanField.cs" />
<Compile Include="Fields\InputField.cs" />
<Compile Include="Fields\MediaPickerField.cs" />
<Compile Include="Fields\NumericField.cs" />
<Compile Include="Fields\DateTimeField.cs" />
<Compile Include="Fields\EnumerationField.cs" />
<Compile Include="Fields\LinkField.cs" />
<Compile Include="Settings\BooleanFieldEditorEvents.cs" />
<Compile Include="Settings\BooleanFieldSettings.cs" />
<Compile Include="Settings\MediaGalleryFieldEditorEvents.cs" />
<Compile Include="Settings\MediaGalleryFieldSettings.cs" />
<Compile Include="Settings\InputFieldEditorEvents.cs" />
<Compile Include="Settings\InputFieldSettings.cs" />
<Compile Include="Settings\MediaPickerFieldEditorEvents.cs" />
<Compile Include="Settings\MediaPickerFieldSettings.cs" />
<Compile Include="Settings\NumericFieldEditorEvents.cs" />
<Compile Include="Settings\NumericFieldSettings.cs" />
<Compile Include="Settings\LinkFieldEditorEvents.cs" />
@@ -147,7 +138,6 @@
<Compile Include="Settings\EnumerationFieldEditorEvents.cs" />
<Compile Include="Settings\EnumerationFieldSettings.cs" />
<Compile Include="Tokens\FieldTokens.cs" />
<Compile Include="ViewModels\MediaGalleryFieldViewModel.cs" />
<Compile Include="ViewModels\NumericFieldViewModel.cs" />
<Compile Include="ViewModels\DateTimeFieldViewModel.cs" />
</ItemGroup>
@@ -155,30 +145,9 @@
<Folder Include="Controllers\" />
<Folder Include="Models\" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\DefinitionTemplates\MediaPickerFieldSettings.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\EditorTemplates\Fields\MediaPicker.Edit.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\Fields\MediaPicker.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\Fields\Input.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\DefinitionTemplates\MediaGalleryFieldSettings.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\EditorTemplates\Fields\MediaGallery.Edit.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\Fields\MediaGallery.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\Fields\MediaGallery.SummaryAdmin.cshtml" />
</ItemGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>

View File

@@ -23,24 +23,8 @@
<Place Fields_DateTime_Edit="Content:2.5"/>
<Place Fields_DateTime="Content:after"/>
<!-- MediaPicker -->
<Place Fields_MediaPicker_Edit="Content:2.3"/>
<Place Fields_MediaPicker="Content:after"/>
<!-- MediaGallery -->
<Place Fields_MediaGallery_Edit="Content:2.3"/>
<Place Fields_MediaGallery="Content:after"/>
<Match DisplayType="SummaryAdmin">
<Place Fields_DateTime="Content"/>
<Place Fields_MediaPicker="-"/>
<Place Fields_MediaGallery="-"/>
<Place Fields_MediaGallery_SummaryAdmin="Content:after"/>
</Match>
<Match DisplayType="Summary">
<Place Fields_MediaPicker="-"/>
<Place Fields_MediaGallery="-"/>
</Match>
</Placement>

View File

@@ -44,16 +44,6 @@ namespace Orchard.Fields.Tokens {
.Token("Time", T("Time"), T("The time only."))
.Token("DateTime", T("Date Time"), T("The date and time."))
;
context.For("MediaPickerField", T("Media Picker Field"), T("Tokens for Media Picker Fields"))
.Token("Url", T("Url"), T("The url of the media."))
.Token("AlternateText", T("Alternate Text"), T("The alternate text of the media."))
.Token("Class", T("Class"), T("The class of the media."))
.Token("Style", T("Style"), T("The style of the media."))
.Token("Alignment", T("Alignment"), T("The alignment of the media."))
.Token("Width", T("Width"), T("The width of the media."))
.Token("Height", T("Height"), T("The height of the media."))
;
}
public void Evaluate(dynamic context) {
@@ -71,17 +61,6 @@ namespace Orchard.Fields.Tokens {
.Token("DateTime", (Func<DateTimeField, object>)(d => d.DateTime.ToString(_dateTimeLocalization.ShortDateFormat.Text + " " + _dateTimeLocalization.ShortTimeFormat.Text, _cultureInfo.Value)))
.Chain("DateTime", "Date", (Func<DateTimeField, object>)(field => field.DateTime))
;
context.For<MediaPickerField>("MediaPickerField")
.Token("Url", (Func<MediaPickerField, object>)(field => field.Url))
.Chain("Url", "Url", (Func<MediaPickerField, object>)(field => field.Url))
.Token("AlternateText", (Func<MediaPickerField, object>)(field => field.AlternateText))
.Token("Class", (Func<MediaPickerField, object>)(field => field.Class))
.Token("Style", (Func<MediaPickerField, object>)(field => field.Style))
.Token("Alignment", (Func<MediaPickerField, object>)(field => field.Alignment))
.Token("Width", (Func<MediaPickerField, object>)(field => field.Width))
.Token("Height", (Func<MediaPickerField, object>)(field => field.Height))
;
}
}
}

View File

@@ -1,15 +1,15 @@
using System;
using Orchard.Fields.Settings;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Drivers;
using Orchard.ContentManagement.Handlers;
using Orchard.Fields.Fields;
using Orchard.Fields.ViewModels;
using Orchard.Localization;
using Orchard.MediaPicker.Fields;
using Orchard.MediaPicker.Settings;
using Orchard.MediaPicker.ViewModels;
using Orchard.Services;
using Orchard.Utility.Extensions;
namespace Orchard.Fields.Drivers {
namespace Orchard.MediaPicker.Drivers {
public class MediaGalleryFieldDriver : ContentFieldDriver<MediaGalleryField> {
private readonly IJsonConverter _jsonConverter;

View File

@@ -1,15 +1,16 @@
using System;
using System.Linq;
using Orchard.Fields.Settings;
using Orchard.FileSystems.WebSite;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Drivers;
using Orchard.ContentManagement.Handlers;
using Orchard.Localization;
using Orchard.MediaPicker.Fields;
using Orchard.MediaPicker.Settings;
using Orchard.Utility.Extensions;
namespace Orchard.Fields.Drivers {
public class MediaPickerFieldDriver : ContentFieldDriver<Fields.MediaPickerField> {
namespace Orchard.MediaPicker.Drivers {
public class MediaPickerFieldDriver : ContentFieldDriver<MediaPickerField> {
private readonly IWebSiteFolder _webSiteFolder;
public MediaPickerFieldDriver(IWebSiteFolder webSiteFolder) {
@@ -19,25 +20,25 @@ namespace Orchard.Fields.Drivers {
public Localizer T { get; set; }
private static string GetPrefix(Fields.MediaPickerField field, ContentPart part) {
private static string GetPrefix(MediaPickerField field, ContentPart part) {
return part.PartDefinition.Name + "." + field.Name;
}
private static string GetDifferentiator(Fields.MediaPickerField field, ContentPart part) {
private static string GetDifferentiator(MediaPickerField field, ContentPart part) {
return field.Name;
}
protected override DriverResult Display(ContentPart part, Fields.MediaPickerField field, string displayType, dynamic shapeHelper) {
protected override DriverResult Display(ContentPart part, MediaPickerField field, string displayType, dynamic shapeHelper) {
return ContentShape("Fields_MediaPicker", GetDifferentiator(field, part),
() => shapeHelper.Fields_MediaPicker());
}
protected override DriverResult Editor(ContentPart part, Fields.MediaPickerField field, dynamic shapeHelper) {
protected override DriverResult Editor(ContentPart part, MediaPickerField field, dynamic shapeHelper) {
return ContentShape("Fields_MediaPicker_Edit", GetDifferentiator(field, part),
() => shapeHelper.EditorTemplate(TemplateName: "Fields/MediaPicker.Edit", Model: field, Prefix: GetPrefix(field, part)));
}
protected override DriverResult Editor(ContentPart part, Fields.MediaPickerField field, IUpdateModel updater, dynamic shapeHelper) {
protected override DriverResult Editor(ContentPart part, MediaPickerField field, IUpdateModel updater, dynamic shapeHelper) {
// if the model could not be bound, don't try to validate its properties
if (updater.TryUpdateModel(field, GetPrefix(field, part), null, null)) {
var settings = field.PartFieldDefinition.Settings.GetModel<MediaPickerFieldSettings>();
@@ -58,7 +59,7 @@ namespace Orchard.Fields.Drivers {
return Editor(part, field, shapeHelper);
}
protected override void Importing(ContentPart part, Fields.MediaPickerField field, ImportContentContext context) {
protected override void Importing(ContentPart part, MediaPickerField field, ImportContentContext context) {
context.ImportAttribute(field.FieldDefinition.Name + "." + field.Name, "Url", value => field.Url = value);
context.ImportAttribute(field.FieldDefinition.Name + "." + field.Name, "AlternateText", value => field.AlternateText = value);
context.ImportAttribute(field.FieldDefinition.Name + "." + field.Name, "Class", value => field.Class = value);
@@ -68,7 +69,7 @@ namespace Orchard.Fields.Drivers {
context.ImportAttribute(field.FieldDefinition.Name + "." + field.Name, "Height", value => field.Height = Int32.Parse(value));
}
protected override void Exporting(ContentPart part, Fields.MediaPickerField field, ExportContentContext context) {
protected override void Exporting(ContentPart part, MediaPickerField field, ExportContentContext context) {
context.Element(field.FieldDefinition.Name + "." + field.Name).SetAttributeValue("Url", field.Url);
context.Element(field.FieldDefinition.Name + "." + field.Name).SetAttributeValue("AlternateText", field.AlternateText);
context.Element(field.FieldDefinition.Name + "." + field.Name).SetAttributeValue("Class", field.Class);

View File

@@ -3,7 +3,7 @@ using Orchard.ContentManagement;
using Orchard.ContentManagement.Utilities;
using Orchard.ContentManagement.FieldStorage;
namespace Orchard.Fields.Fields {
namespace Orchard.MediaPicker.Fields {
public class MediaGalleryField : ContentField {
internal LazyField<ICollection<MediaGalleryItem>> _mediaGalleryItems = new LazyField<ICollection<MediaGalleryItem>>();

View File

@@ -1,7 +1,7 @@
using Orchard.ContentManagement;
using Orchard.ContentManagement.FieldStorage;
namespace Orchard.Fields.Fields {
namespace Orchard.MediaPicker.Fields {
public class MediaPickerField : ContentField {
public string Url {
get { return Storage.Get<string>(); }

View File

@@ -1,10 +1,10 @@
using System.Linq;
using Orchard.ContentManagement.Handlers;
using Orchard.ContentManagement.MetaData;
using Orchard.Fields.Fields;
using Orchard.MediaPicker.Fields;
using Orchard.Services;
namespace Orchard.Fields.Handlers {
namespace Orchard.MediaPicker.Handlers {
public class MediaGalleryFieldHandler : ContentHandler {
private readonly IJsonConverter _jsonConverter;
private readonly IContentDefinitionManager _contentDefinitionManager;

View File

@@ -21,6 +21,10 @@
</UpgradeBackupLocation>
<TargetFrameworkProfile />
<UseIISExpress>false</UseIISExpress>
<IISExpressSSLPort />
<IISExpressAnonymousAuthentication />
<IISExpressWindowsAuthentication />
<IISExpressUseClassicPipelineMode />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@@ -61,14 +65,27 @@
<Reference Include="System.Xml.Linq" />
</ItemGroup>
<ItemGroup>
<Compile Include="Settings\MediaGalleryFieldEditorEvents.cs" />
<Compile Include="Settings\MediaGalleryFieldSettings.cs" />
<Compile Include="Settings\MediaPickerFieldEditorEvents.cs" />
<Compile Include="Settings\MediaPickerFieldSettings.cs" />
<Compile Include="Tokens\FieldTokens.cs" />
<Compile Include="ViewModels\MediaGalleryFieldViewModel.cs" />
<Content Include="Scripts\MediaBrowser.js" />
<Content Include="Scripts\MediaPicker.js" />
<Content Include="Styles\images\imagepreview.png" />
<Content Include="Styles\images\move.gif" />
<Content Include="Styles\images\synchronizing.gif" />
<Content Include="Styles\media-gallery-admin.css" />
<Content Include="Styles\mediapicker.css" />
<Content Include="Views\Web.config" />
<Content Include="Scripts\Web.config" />
<Content Include="Styles\Web.config" />
<Compile Include="Drivers\MediaGalleryFieldDriver.cs" />
<Compile Include="Drivers\MediaPickerFieldDriver.cs" />
<Compile Include="Fields\MediaGalleryField.cs" />
<Compile Include="Fields\MediaPickerField.cs" />
<Compile Include="Handlers\MediaGalleryFieldHandler.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Content Include="Module.txt" />
</ItemGroup>
@@ -108,6 +125,32 @@
<ItemGroup>
<Content Include="web.config" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\DefinitionTemplates\MediaGalleryFieldSettings.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\DefinitionTemplates\MediaPickerFieldSettings.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\EditorTemplates\Fields\MediaGallery.Edit.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\EditorTemplates\Fields\MediaPicker.Edit.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\Fields\MediaGallery.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\Fields\MediaGallery.SummaryAdmin.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\Fields\MediaPicker.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Placement.info">
<SubType>Designer</SubType>
</Content>
</ItemGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>

View File

@@ -0,0 +1,21 @@
<Placement>
<!-- MediaPicker -->
<Place Fields_MediaPicker_Edit="Content:2.3"/>
<Place Fields_MediaPicker="Content:after"/>
<!-- MediaGallery -->
<Place Fields_MediaGallery_Edit="Content:2.3"/>
<Place Fields_MediaGallery="Content:after"/>
<Match DisplayType="SummaryAdmin">
<Place Fields_MediaPicker="-"/>
<Place Fields_MediaGallery="-"/>
<Place Fields_MediaGallery_SummaryAdmin="Content:after"/>
</Match>
<Match DisplayType="Summary">
<Place Fields_MediaPicker="-"/>
<Place Fields_MediaGallery="-"/>
</Match>
</Placement>

View File

@@ -1,5 +1,5 @@
jQuery(function ($) {
$("form").bind("orchard-admin-pickimage-open", function (ev, data) {
$("form").on("orchard-admin-pickimage-open", function (ev, data) {
data = data || {};
// the popup will be doing full page reloads, so will not be able to retain
// a pointer to the callback. We will generate a temporary callback

View File

@@ -6,7 +6,7 @@ using Orchard.ContentManagement.MetaData.Builders;
using Orchard.ContentManagement.MetaData.Models;
using Orchard.ContentManagement.ViewModels;
namespace Orchard.Fields.Settings {
namespace Orchard.MediaPicker.Settings {
public class MediaGalleryFieldEditorEvents : ContentDefinitionEditorEventsBase {
public override IEnumerable<TemplateViewModel> PartFieldEditor(ContentPartFieldDefinition definition) {

View File

@@ -1,4 +1,4 @@
namespace Orchard.Fields.Settings {
namespace Orchard.MediaPicker.Settings {
public class MediaGalleryFieldSettings {
public string Hint { get; set; }
public string AllowedExtensions { get; set; }

View File

@@ -5,7 +5,7 @@ using Orchard.ContentManagement.MetaData.Builders;
using Orchard.ContentManagement.MetaData.Models;
using Orchard.ContentManagement.ViewModels;
namespace Orchard.Fields.Settings {
namespace Orchard.MediaPicker.Settings {
public class MediaPickerFieldEditorEvents : ContentDefinitionEditorEventsBase {
public override IEnumerable<TemplateViewModel> PartFieldEditor(ContentPartFieldDefinition definition) {

View File

@@ -1,4 +1,4 @@
namespace Orchard.Fields.Settings {
namespace Orchard.MediaPicker.Settings {
public class MediaPickerFieldSettings {
public string Hint { get; set; }
public string AllowedExtensions { get; set; }

View File

@@ -10,10 +10,6 @@
</httpHandlers>
</system.web>
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
</staticContent>
<handlers accessPolicy="Script,Read">
<!--
iis7 - for any request to a file exists on disk, return it via native http module.

Binary file not shown.

After

Width:  |  Height:  |  Size: 897 B

View File

@@ -0,0 +1,12 @@
table.media-gallery tr td:nth-child(1) {
background: url(images/move.gif) no-repeat 12px 14px;
cursor: move;
}
.media-gallery-message {
display: none;
}
.ui-sortable-helper .media-gallery-remove {
display: none;
}

View File

@@ -0,0 +1,46 @@
using System;
using Orchard.Events;
using Orchard.Localization;
using Orchard.MediaPicker.Fields;
namespace Orchard.MediaPicker.Tokens {
public interface ITokenProvider : IEventHandler {
void Describe(dynamic context);
void Evaluate(dynamic context);
}
public class FieldTokens : ITokenProvider {
public FieldTokens() {
T = NullLocalizer.Instance;
}
public Localizer T { get; set; }
public void Describe(dynamic context) {
context.For("MediaPickerField", T("Media Picker Field"), T("Tokens for Media Picker Fields"))
.Token("Url", T("Url"), T("The url of the media."))
.Token("AlternateText", T("Alternate Text"), T("The alternate text of the media."))
.Token("Class", T("Class"), T("The class of the media."))
.Token("Style", T("Style"), T("The style of the media."))
.Token("Alignment", T("Alignment"), T("The alignment of the media."))
.Token("Width", T("Width"), T("The width of the media."))
.Token("Height", T("Height"), T("The height of the media."))
;
}
public void Evaluate(dynamic context) {
context.For<MediaPickerField>("MediaPickerField")
.Token("Url", (Func<MediaPickerField, object>)(field => field.Url))
.Chain("Url", "Url", (Func<MediaPickerField, object>)(field => field.Url))
.Token("AlternateText", (Func<MediaPickerField, object>)(field => field.AlternateText))
.Token("Class", (Func<MediaPickerField, object>)(field => field.Class))
.Token("Style", (Func<MediaPickerField, object>)(field => field.Style))
.Token("Alignment", (Func<MediaPickerField, object>)(field => field.Alignment))
.Token("Width", (Func<MediaPickerField, object>)(field => field.Width))
.Token("Height", (Func<MediaPickerField, object>)(field => field.Height))
;
}
}
}

View File

@@ -1,7 +1,7 @@
using System.Collections.Generic;
using Orchard.Fields.Fields;
using Orchard.MediaPicker.Fields;
namespace Orchard.Fields.ViewModels {
namespace Orchard.MediaPicker.ViewModels {
public class MediaGalleryFieldViewModel {

View File

@@ -1,4 +1,4 @@
@model Orchard.Fields.Settings.MediaGalleryFieldSettings
@model Orchard.MediaPicker.Settings.MediaGalleryFieldSettings
<fieldset>
<div>

View File

@@ -1,4 +1,4 @@
@model Orchard.Fields.Settings.MediaPickerFieldSettings
@model Orchard.MediaPicker.Settings.MediaPickerFieldSettings
<fieldset>
<div>

View File

@@ -1,6 +1,6 @@
@model MediaGalleryFieldViewModel
@model Orchard.MediaPicker.ViewModels.MediaGalleryFieldViewModel
@using Orchard.Environment.Configuration
@using Orchard.Fields.Settings;
@using Orchard.MediaPicker.Settings;
@{
Style.Include("media-gallery-admin");

View File

@@ -1,6 +1,5 @@
@model Orchard.Fields.Fields.MediaPickerField
@using Orchard.Utility.Extensions;
@using Orchard.Fields.Settings;
@model Orchard.MediaPicker.Fields.MediaPickerField
@using Orchard.MediaPicker.Settings
@{
Script.Require("jQuery").AtFoot();

View File

@@ -1,4 +1,5 @@
@using Orchard.Utility.Extensions;
@using Orchard.MediaPicker.Fields
@using Orchard.Utility.Extensions;
@{
var field = (MediaGalleryField) Model.ContentField;

View File

@@ -1,4 +1,5 @@
@using Orchard.Utility.Extensions;
@using Orchard.MediaPicker.Fields
@using Orchard.Utility.Extensions;
@{
var field = (MediaGalleryField) Model.ContentField;

View File

@@ -11,7 +11,7 @@
<Feature enable="Orchard.Blogs,Orchard.Comments,Orchard.Tags,Orchard.Alias,Orchard.Autoroute,
XmlRpc,Orchard.Blogs.RemotePublishing,Orchard.ContentPicker,
TinyMce,Orchard.Media,Orchard.MediaPicker,Orchard.PublishLater,
TinyMce,Orchard.MediaLibrary,Orchard.PublishLater,
Orchard.jQuery,Orchard.Widgets,Orchard.Widgets.PageLayerHinting,
Orchard.Scripting,Orchard.Scripting.Lightweight,
PackagingServices,Orchard.Packaging,Orchard.Warmup,

View File

@@ -10,7 +10,7 @@
</Recipe>
<Feature enable="Orchard.Blogs,Orchard.Comments,Orchard.Tags,Orchard.Alias,Orchard.Autoroute,
TinyMce,Orchard.Media,Orchard.MediaPicker,Orchard.ContentPicker,Orchard.PublishLater,
TinyMce,Orchard.MediaLibrary,Orchard.ContentPicker,Orchard.PublishLater,
Orchard.jQuery,Orchard.Widgets,Orchard.Widgets.PageLayerHinting,Orchard.ContentTypes,
Orchard.Scripting,Orchard.Scripting.Lightweight,
PackagingServices,Orchard.Packaging,Orchard.Warmup,Orchard.Projections,Orchard.Fields,

View File

@@ -1,12 +1,22 @@
tinyMCE.init({
var mediaPlugins = ",|";
if (mediaPickerEnabled) {
mediaPlugins += ",mediapicker";
}
if (mediaLibraryEnabled) {
mediaPlugins += ",medialibrary";
}
tinyMCE.init({
theme: "advanced",
schema: "html5",
mode: "specific_textareas",
editor_selector: "tinymce",
plugins: "fullscreen,autoresize,searchreplace,mediapicker,inlinepopups,medialibrary",
plugins: "fullscreen,autoresize,searchreplace,inlinepopups" + mediaPlugins.substr(2),
theme_advanced_toolbar_location: "top",
theme_advanced_toolbar_align: "left",
theme_advanced_buttons1: "search,replace,|,cut,copy,paste,|,undo,redo,|,mediapicker,medialibrary,|,link,unlink,charmap,emoticon,codeblock,|,bold,italic,|,numlist,bullist,formatselect,|,code,fullscreen,",
theme_advanced_buttons1: "search,replace,|,cut,copy,paste,|,undo,redo" + mediaPlugins + ",|,link,unlink,charmap,emoticon,codeblock,|,bold,italic,|,numlist,bullist,formatselect,|,code,fullscreen,",
theme_advanced_buttons2: "",
theme_advanced_buttons3: "",
convert_urls: false,

View File

@@ -1,4 +1,15 @@
@{
@using Orchard.Environment.Descriptor.Models
@{
var shellDescriptor = WorkContext.Resolve<ShellDescriptor>();
}
<script type="text/javascript">
var mediaPickerEnabled = @(shellDescriptor.Features.Any(x => x.Name == "Orchard.MediaPicker") ? "true" : "false");
var mediaLibraryEnabled = @(shellDescriptor.Features.Any(x => x.Name == "Orchard.MediaLibrary") ? "true" : "false");
</script>
@{
Script.Require("OrchardTinyMce");
Script.Require("jQueryColorBox");
Style.Require("jQueryColorBox");