Fixes: #U4-894 - moves the int Priority out of the IThumbnailProvider class as it is only metadata, moved

this into a new generic WeightedPluginAttribute which can be used for other resolves/objects that require a weight.
This commit is contained in:
Shannon Deminick
2012-09-25 11:06:32 +07:00
parent 449613de3e
commit 1bc3943f33
11 changed files with 302 additions and 294 deletions

View File

@@ -7,7 +7,6 @@ namespace Umbraco.Core
{ {
public interface IThumbnailProvider public interface IThumbnailProvider
{ {
int Priority { get; }
bool CanProvideThumbnail(string fileUrl); bool CanProvideThumbnail(string fileUrl);
string GetThumbnailUrl(string fileUrl); string GetThumbnailUrl(string fileUrl);
} }

View File

@@ -1,10 +1,12 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Threading; using System.Threading;
using System.Web; using System.Web;
namespace Umbraco.Core.ObjectResolution namespace Umbraco.Core.ObjectResolution
{ {
internal abstract class ManyObjectsResolverBase<TResolver, TResolved> : ResolverBase<TResolver> internal abstract class ManyObjectsResolverBase<TResolver, TResolved> : ResolverBase<TResolver>
where TResolved : class where TResolved : class
where TResolver : class where TResolver : class
@@ -94,6 +96,40 @@ namespace Umbraco.Core.ObjectResolution
/// </summary> /// </summary>
protected ObjectLifetimeScope LifetimeScope { get; private set; } protected ObjectLifetimeScope LifetimeScope { get; private set; }
private int _defaultPluginWeight = 10;
/// <summary>
/// Used in conjunction with GetSortedValues and WeightedPluginAttribute, if any of the objects
/// being resolved do not contain the WeightedPluginAttribute then this will be the default weight applied
/// to the object.
/// </summary>
protected virtual int DefaultPluginWeight
{
get { return _defaultPluginWeight; }
set { _defaultPluginWeight = value; }
}
/// <summary>
/// If a resolver requries that objects are resolved with a specific order using the WeightedPluginAttribute
/// then this method should be used instead of the Values property.
/// </summary>
/// <returns></returns>
protected IEnumerable<TResolved> GetSortedValues()
{
var vals = Values.ToList();
//ensure they are sorted
vals.Sort((f1, f2) =>
{
Func<object, int> getWeight = o =>
{
var weightAttribute = f1.GetType().GetCustomAttribute<WeightedPluginAttribute>(true);
return weightAttribute != null ? weightAttribute.Weight : DefaultPluginWeight;
};
return getWeight(f1).CompareTo(getWeight(f2));
});
return vals;
}
/// <summary> /// <summary>
/// Returns the list of new object instances. /// Returns the list of new object instances.
/// </summary> /// </summary>

View File

@@ -0,0 +1,19 @@
using System;
namespace Umbraco.Core.ObjectResolution
{
/// <summary>
/// Some many object resolvers require that the objects that they resolve have weights applied to them so that
/// the objects are returned in a sorted order, this attribute is used in these scenarios.
/// </summary>
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
internal class WeightedPluginAttribute : Attribute
{
public WeightedPluginAttribute(int weight)
{
Weight = weight;
}
public int Weight { get; private set; }
}
}

View File

@@ -90,6 +90,7 @@
<Compile Include="IO\IMediaFileSystem.cs" /> <Compile Include="IO\IMediaFileSystem.cs" />
<Compile Include="Macros\MacroTagParser.cs" /> <Compile Include="Macros\MacroTagParser.cs" />
<Compile Include="NameValueCollectionExtensions.cs" /> <Compile Include="NameValueCollectionExtensions.cs" />
<Compile Include="ObjectResolution\WeightedPluginAttribute.cs" />
<Compile Include="PropertyEditors\DatePickerPropertyEditorValueConverter.cs" /> <Compile Include="PropertyEditors\DatePickerPropertyEditorValueConverter.cs" />
<Compile Include="PropertyEditors\IPropertyEditorValueConverter.cs" /> <Compile Include="PropertyEditors\IPropertyEditorValueConverter.cs" />
<Compile Include="Dynamics\IDynamicDocumentDataSource.cs" /> <Compile Include="Dynamics\IDynamicDocumentDataSource.cs" />

View File

@@ -1,280 +1,249 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<configSections> <configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false" /> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false" />
<section name="urlrewritingnet" restartOnExternalChanges="true" requirePermission="false" type="UrlRewritingNet.Configuration.UrlRewriteSection, UrlRewritingNet.UrlRewriter" />
<section name="urlrewritingnet" restartOnExternalChanges="true" requirePermission="false" type="UrlRewritingNet.Configuration.UrlRewriteSection, UrlRewritingNet.UrlRewriter" /> <section name="microsoft.scripting" type="Microsoft.Scripting.Hosting.Configuration.Section, Microsoft.Scripting, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" />
<section name="microsoft.scripting" type="Microsoft.Scripting.Hosting.Configuration.Section, Microsoft.Scripting, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" /> <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="umbraco.presentation.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> </sectionGroup>
<section name="umbraco.presentation.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> <section name="clientDependency" type="ClientDependency.Core.Config.ClientDependencySection, ClientDependency.Core" requirePermission="false" />
</sectionGroup> <section name="Examine" type="Examine.Config.ExamineSettings, Examine" requirePermission="false" />
<section name="ExamineLuceneIndexSets" type="UmbracoExamine.Config.ExamineLuceneIndexes, UmbracoExamine" requirePermission="false" />
<section name="clientDependency" type="ClientDependency.Core.Config.ClientDependencySection, ClientDependency.Core" requirePermission="false"/> <section name="FileSystemProviders" type="Umbraco.Core.Configuration.FileSystemProvidersSection, Umbraco.Core" requirePermission="false" />
<section name="Examine" type="Examine.Config.ExamineSettings, Examine" requirePermission="false"/> <!-- Added in Umbraco 4.6.2 -->
<section name="ExamineLuceneIndexSets" type="UmbracoExamine.Config.ExamineLuceneIndexes, UmbracoExamine" requirePermission="false"/> <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="FileSystemProviders" type="Umbraco.Core.Configuration.FileSystemProvidersSection, Umbraco.Core" requirePermission="false"/> <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<!-- Added in Umbraco 4.6.2 --> </sectionGroup>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <!-- End of added in Umbraco 4.6.2 -->
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> </configSections>
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> <log4net configSource="config\log4net.config" />
</sectionGroup> <urlrewritingnet configSource="config\UrlRewriting.config" />
<!-- End of added in Umbraco 4.6.2 --> <microsoft.scripting configSource="config\scripting.config" />
</configSections> <clientDependency configSource="config\ClientDependency.config" />
<Examine configSource="config\ExamineSettings.config" />
<log4net configSource="config\log4net.config" /> <ExamineLuceneIndexSets configSource="config\ExamineIndex.config" />
<urlrewritingnet configSource="config\UrlRewriting.config" />
<microsoft.scripting configSource="config\scripting.config" />
<clientDependency configSource="config\ClientDependency.config" />
<Examine configSource="config\ExamineSettings.config" />
<ExamineLuceneIndexSets configSource="config\ExamineIndex.config" />
<FileSystemProviders configSource="config\FileSystemProviders.config" /> <FileSystemProviders configSource="config\FileSystemProviders.config" />
<appSettings>
<appSettings> <add key="umbracoDbDSN" value="server=.\sqlexpress;database=v4;user id=sa;password=test;Application Name=Umbraco41" />
<add key="umbracoDbDSN" value="datalayer=MySql;server=localhost;database=umbraco;user id=root;password=root"/> <add key="umbracoConfigurationStatus" value="4.10.0" />
<add key="umbracoConfigurationStatus" value="4.10.0"/> <add key="umbracoReservedUrls" value="~/config/splashes/booting.aspx,~/install/default.aspx,~/config/splashes/noNodes.aspx,~/VSEnterpriseHelper.axd" />
<add key="umbracoReservedUrls" value="~/config/splashes/booting.aspx,~/install/default.aspx,~/config/splashes/noNodes.aspx,~/VSEnterpriseHelper.axd" /> <add key="umbracoReservedPaths" value="~/umbraco,~/install/" />
<add key="umbracoReservedPaths" value="~/umbraco,~/install/" /> <add key="umbracoContentXML" value="~/App_Data/umbraco.config" />
<add key="umbracoContentXML" value="~/App_Data/umbraco.config" /> <add key="umbracoStorageDirectory" value="~/App_Data" />
<add key="umbracoStorageDirectory" value="~/App_Data" /> <add key="umbracoPath" value="~/umbraco" />
<add key="umbracoPath" value="~/umbraco" /> <add key="umbracoEnableStat" value="false" />
<add key="umbracoEnableStat" value="false" /> <add key="umbracoHideTopLevelNodeFromPath" value="true" />
<add key="umbracoHideTopLevelNodeFromPath" value="true" /> <add key="umbracoEditXhtmlMode" value="true" />
<add key="umbracoEditXhtmlMode" value="true" /> <add key="umbracoUseDirectoryUrls" value="false" />
<add key="umbracoUseDirectoryUrls" value="false" /> <add key="umbracoDebugMode" value="true" />
<add key="umbracoDebugMode" value="true" /> <add key="umbracoTimeOutInMinutes" value="20" />
<add key="umbracoTimeOutInMinutes" value="20" /> <add key="umbracoVersionCheckPeriod" value="7" />
<add key="umbracoVersionCheckPeriod" value="7" /> <add key="umbracoDisableXsltExtensions" value="true" />
<add key="umbracoDisableXsltExtensions" value="true" /> <add key="umbracoDefaultUILanguage" value="en" />
<add key="umbracoDefaultUILanguage" value="en" /> <add key="umbracoProfileUrl" value="profiler" />
<add key="umbracoProfileUrl" value="profiler" /> <add key="umbracoUseSSL" value="false" />
<add key="umbracoUseSSL" value="false" /> <add key="umbracoUseMediumTrust" value="false" />
<add key="umbracoUseMediumTrust" value="false" /> <!--
<!--
Set this to true to enable storing the xml cache locally to the IIS server even if the app files are stored centrally on a SAN/NAS Set this to true to enable storing the xml cache locally to the IIS server even if the app files are stored centrally on a SAN/NAS
Alex Norcliffe 2010 02 for 4.1 Alex Norcliffe 2010 02 for 4.1
--> -->
<add key="umbracoContentXMLUseLocalTemp" value="false"/> <add key="umbracoContentXMLUseLocalTemp" value="false" />
<!-- Added in Umbraco 4.6.2 -->
<!-- Added in Umbraco 4.6.2 --> <add key="webpages:Enabled" value="false" />
<add key="webpages:Enabled" value="false"/> <add key="enableSimpleMembership" value="false" />
<add key="enableSimpleMembership" value="false"/> <add key="autoFormsAuthentication" value="false" />
<add key="autoFormsAuthentication" value="false"/> <!-- End of added in Umbraco 4.6.2 -->
<!-- End of added in Umbraco 4.6.2 --> <add key="log4net.Config" value="config\log4net.config" />
</appSettings>
<add key="log4net.Config" value="config\log4net.config" /> <system.net>
</appSettings> <mailSettings>
<system.net> <smtp>
<mailSettings> <network host="127.0.0.1" userName="username" password="password" />
<smtp> </smtp>
<network host="127.0.0.1" userName="username" password="password" /> </mailSettings>
</smtp> </system.net>
</mailSettings> <connectionStrings>
</system.net> <remove name="LocalSqlServer" />
<!--<add name="LocalSqlServer" connectionString="server=.\sqlexpress;database=aspnetdb;user id=DBUSER;password=DBPASSWORD" providerName="System.Data.SqlClient"/>-->
<connectionStrings> </connectionStrings>
<remove name="LocalSqlServer" /> <system.web>
<!--<add name="LocalSqlServer" connectionString="server=.\sqlexpress;database=aspnetdb;user id=DBUSER;password=DBPASSWORD" providerName="System.Data.SqlClient"/>--> <customErrors mode="RemoteOnly" />
</connectionStrings> <trace enabled="true" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />
<system.web> <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20" />
<customErrors mode="RemoteOnly" /> <globalization requestEncoding="UTF-8" responseEncoding="UTF-8" />
<trace enabled="true" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" /> <xhtmlConformance mode="Strict" />
<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20" /> <httpRuntime requestValidationMode="2.0" />
<globalization requestEncoding="UTF-8" responseEncoding="UTF-8" /> <pages enableEventValidation="false">
<xhtmlConformance mode="Strict" /> <!-- ASPNETAJAX -->
<controls>
<httpRuntime requestValidationMode="2.0" /> <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add tagPrefix="umbraco" namespace="umbraco.presentation.templateControls" assembly="umbraco" />
<pages enableEventValidation="false"> <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<!-- ASPNETAJAX --> </controls>
<controls> </pages>
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <httpModules>
<add tagPrefix="umbraco" namespace="umbraco.presentation.templateControls" assembly="umbraco" /> <!-- URL REWRTIER -->
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />
</controls> <!-- UMBRACO -->
</pages> <!--<add name="umbracoRequestModule" type="umbraco.presentation.requestModule"/>
<httpModules>
<!-- URL REWRTIER -->
<add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />
<!-- UMBRACO -->
<!--<add name="umbracoRequestModule" type="umbraco.presentation.requestModule"/>
<add name="viewstateMoverModule" type="umbraco.presentation.viewstateMoverModule"/> <add name="viewstateMoverModule" type="umbraco.presentation.viewstateMoverModule"/>
<add name="umbracoBaseRequestModule" type="umbraco.presentation.umbracobase.requestModule"/>--> <add name="umbracoBaseRequestModule" type="umbraco.presentation.umbracobase.requestModule"/>-->
<add name=" UmbracoModule" type="Umbraco.Web.UmbracoModule,umbraco" /> <add name=" UmbracoModule" type="Umbraco.Web.UmbracoModule,umbraco" />
<!-- ASPNETAJAX --> <!-- ASPNETAJAX -->
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<!-- CLIENT DEPENDENCY --> <!-- CLIENT DEPENDENCY -->
<add name="ClientDependencyModule" type="ClientDependency.Core.Module.ClientDependencyModule, ClientDependency.Core"/> <add name="ClientDependencyModule" type="ClientDependency.Core.Module.ClientDependencyModule, ClientDependency.Core" />
</httpModules> </httpModules>
<httpHandlers> <httpHandlers>
<remove verb="*" path="*.asmx" /> <remove verb="*" path="*.asmx" />
<!-- ASPNETAJAX --> <!-- ASPNETAJAX -->
<add verb="*" path="*.asmx" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" /> <add verb="*" path="*.asmx" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" />
<add verb="*" path="*_AppService.axd" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" /> <add verb="*" path="*_AppService.axd" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" />
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" /> <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" />
<!-- UMBRACO CHANNELS -->
<!-- UMBRACO CHANNELS --> <add verb="*" path="umbraco/channels.aspx" type="umbraco.presentation.channels.api, umbraco" />
<add verb="*" path="umbraco/channels.aspx" type="umbraco.presentation.channels.api, umbraco" /> <add verb="*" path="umbraco/channels/word.aspx" type="umbraco.presentation.channels.wordApi, umbraco" />
<add verb="*" path="umbraco/channels/word.aspx" type="umbraco.presentation.channels.wordApi, umbraco" /> <!-- CLIENT DEPENDENCY -->
<!-- CLIENT DEPENDENCY --> <add verb="*" path="DependencyHandler.axd" type="ClientDependency.Core.CompositeFiles.CompositeDependencyHandler, ClientDependency.Core " />
<add verb="*" path="DependencyHandler.axd" type="ClientDependency.Core.CompositeFiles.CompositeDependencyHandler, ClientDependency.Core "/> <!-- SPELL CHECKER -->
<!-- SPELL CHECKER --> <add verb="GET,HEAD,POST" path="GoogleSpellChecker.ashx" type="umbraco.presentation.umbraco_client.tinymce3.plugins.spellchecker.GoogleSpellChecker,umbraco" />
<add verb="GET,HEAD,POST" path="GoogleSpellChecker.ashx" type="umbraco.presentation.umbraco_client.tinymce3.plugins.spellchecker.GoogleSpellChecker,umbraco" /> </httpHandlers>
</httpHandlers> <compilation defaultLanguage="c#" debug="true" batch="false" targetFramework="4.0">
<assemblies>
<compilation defaultLanguage="c#" debug="true" batch="false" targetFramework="4.0"> <!-- ASP.NET 4.0 Assemblies -->
<assemblies> <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
<!-- ASP.NET 4.0 Assemblies --> <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> <add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> <add assembly="System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> </assemblies>
<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <!-- Added in Umbraco 4.6.2 -->
</assemblies> <buildProviders>
<add extension=".cshtml" type="umbraco.MacroEngines.RazorBuildProvider, umbraco.MacroEngines" />
<!-- Added in Umbraco 4.6.2 --> <add extension=".vbhtml" type="umbraco.MacroEngines.RazorBuildProvider, umbraco.MacroEngines" />
<buildProviders> <add extension=".razor" type="umbraco.MacroEngines.RazorBuildProvider, umbraco.MacroEngines" />
<add extension=".cshtml" type="umbraco.MacroEngines.RazorBuildProvider, umbraco.MacroEngines"/> </buildProviders>
<add extension=".vbhtml" type="umbraco.MacroEngines.RazorBuildProvider, umbraco.MacroEngines"/> <!-- End of added in Umbraco 4.6.2 -->
<add extension=".razor" type="umbraco.MacroEngines.RazorBuildProvider, umbraco.MacroEngines"/> </compilation>
</buildProviders> <authentication mode="Forms">
<!-- End of added in Umbraco 4.6.2 --> <forms name="yourAuthCookie" loginUrl="login.aspx" protection="All" path="/" />
</compilation> </authentication>
<authorization>
<authentication mode="Forms"> <allow users="?" />
<forms name="yourAuthCookie" loginUrl="login.aspx" protection="All" path="/" /> </authorization>
</authentication> <!-- Membership Provider -->
<authorization> <membership defaultProvider="UmbracoMembershipProvider" userIsOnlineTimeWindow="15">
<allow users="?" /> <providers>
</authorization> <clear />
<!-- Membership Provider --> <add name="UmbracoMembershipProvider" type="umbraco.providers.members.UmbracoMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false" defaultMemberTypeAlias="Another Type" passwordFormat="Hashed" />
<membership defaultProvider="UmbracoMembershipProvider" userIsOnlineTimeWindow="15"> <add name="UsersMembershipProvider" type="umbraco.providers.UsersMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false" passwordFormat="Hashed" />
<providers> </providers>
<clear/> </membership>
<add name="UmbracoMembershipProvider" type="umbraco.providers.members.UmbracoMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false" defaultMemberTypeAlias="Another Type" passwordFormat="Hashed" /> <!-- added by NH to support membership providers in access layer -->
<add name="UsersMembershipProvider" type="umbraco.providers.UsersMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false" passwordFormat="Hashed" /> <roleManager enabled="true" defaultProvider="UmbracoRoleProvider">
</providers> <providers>
</membership> <clear />
<!-- added by NH to support membership providers in access layer --> <add name="UmbracoRoleProvider" type="umbraco.providers.members.UmbracoRoleProvider" />
<roleManager enabled="true" defaultProvider="UmbracoRoleProvider"> </providers>
<providers> </roleManager>
<clear/> <!-- Sitemap provider-->
<add name="UmbracoRoleProvider" type="umbraco.providers.members.UmbracoRoleProvider" /> <siteMap defaultProvider="UmbracoSiteMapProvider" enabled="true">
</providers> <providers>
</roleManager> <clear />
<!-- Sitemap provider--> <add name="UmbracoSiteMapProvider" type="umbraco.presentation.nodeFactory.UmbracoSiteMapProvider" defaultDescriptionAlias="description" securityTrimmingEnabled="true" />
<siteMap defaultProvider="UmbracoSiteMapProvider" enabled="true"> </providers>
<providers> </siteMap>
<clear/> </system.web>
<add name="UmbracoSiteMapProvider" type="umbraco.presentation.nodeFactory.UmbracoSiteMapProvider" defaultDescriptionAlias="description" securityTrimmingEnabled="true" /> <!-- ASPNETAJAX -->
</providers> <system.web.extensions>
</siteMap> <scripting>
</system.web> <scriptResourceHandler enableCompression="true" enableCaching="true" />
</scripting>
<!-- ASPNETAJAX --> </system.web.extensions>
<system.web.extensions> <system.webServer>
<scripting> <validation validateIntegratedModeConfiguration="false" />
<scriptResourceHandler enableCompression="true" enableCaching="true" /> <modules runAllManagedModulesForAllRequests="true">
</scripting> <remove name="ScriptModule" />
</system.web.extensions> <remove name="UrlRewriteModule" />
<!--<remove name="umbracoRequestModule"/>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="ScriptModule" />
<remove name="UrlRewriteModule" />
<!--<remove name="umbracoRequestModule"/>
<remove name="viewstateMoverModule"/> <remove name="viewstateMoverModule"/>
<remove name="umbracoBaseRequestModule"/>--> <remove name="umbracoBaseRequestModule"/>-->
<remove name="UmbracoModule" /> <remove name="UmbracoModule" />
<remove name="ClientDependencyModule" /> <remove name="ClientDependencyModule" />
<!-- Needed for login/membership to work on homepage (as per http://stackoverflow.com/questions/218057/httpcontext-current-session-is-null-when-routing-requests) --> <!-- Needed for login/membership to work on homepage (as per http://stackoverflow.com/questions/218057/httpcontext-current-session-is-null-when-routing-requests) -->
<remove name="FormsAuthentication" /> <remove name="FormsAuthentication" />
<add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />
<add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" /> <!--<add name="umbracoRequestModule" type="umbraco.presentation.requestModule"/>
<!--<add name="umbracoRequestModule" type="umbraco.presentation.requestModule"/>
<add name="viewstateMoverModule" type="umbraco.presentation.viewstateMoverModule"/> <add name="viewstateMoverModule" type="umbraco.presentation.viewstateMoverModule"/>
<add name="umbracoBaseRequestModule" type="umbraco.presentation.umbracobase.requestModule"/>--> <add name="umbracoBaseRequestModule" type="umbraco.presentation.umbracobase.requestModule"/>-->
<add name=" UmbracoModule" type="Umbraco.Web.UmbracoModule,umbraco" /> <add name=" UmbracoModule" type="Umbraco.Web.UmbracoModule,umbraco" />
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add name="ClientDependencyModule" type="ClientDependency.Core.Module.ClientDependencyModule, ClientDependency.Core" />
<add name="ClientDependencyModule" type="ClientDependency.Core.Module.ClientDependencyModule, ClientDependency.Core"/> <!-- Needed for login/membership to work on homepage (as per http://stackoverflow.com/questions/218057/httpcontext-current-session-is-null-when-routing-requests) -->
<!-- Needed for login/membership to work on homepage (as per http://stackoverflow.com/questions/218057/httpcontext-current-session-is-null-when-routing-requests) --> <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" />
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule"/> </modules>
</modules> <handlers accessPolicy="Read, Write, Script, Execute">
<remove name="WebServiceHandlerFactory-Integrated" />
<handlers accessPolicy="Read, Write, Script, Execute"> <remove name="ScriptHandlerFactory" />
<remove name="WebServiceHandlerFactory-Integrated" /> <remove name="ScriptHandlerFactoryAppServices" />
<remove name="ScriptHandlerFactory" /> <remove name="ScriptResource" />
<remove name="ScriptHandlerFactoryAppServices" /> <remove name="Channels" />
<remove name="ScriptResource" /> <remove name="Channels_Word" />
<remove name="Channels" /> <remove name="ClientDependency" />
<remove name="Channels_Word" /> <remove name="SpellChecker" />
<remove name="ClientDependency" /> <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<remove name="SpellChecker" /> <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" preCondition="integratedMode" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add verb="*" name="Channels" preCondition="integratedMode" path="umbraco/channels.aspx" type="umbraco.presentation.channels.api, umbraco" />
<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add verb="*" name="Channels_Word" preCondition="integratedMode" path="umbraco/channels/word.aspx" type="umbraco.presentation.channels.wordApi, umbraco" />
<add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" preCondition="integratedMode" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add verb="*" name="ClientDependency" preCondition="integratedMode" path="DependencyHandler.axd" type="ClientDependency.Core.CompositeFiles.CompositeDependencyHandler, ClientDependency.Core " />
<add verb="*" name="Channels" preCondition="integratedMode" path="umbraco/channels.aspx" type="umbraco.presentation.channels.api, umbraco" /> <add verb="GET,HEAD,POST" preCondition="integratedMode" name="SpellChecker" path="GoogleSpellChecker.ashx" type="umbraco.presentation.umbraco_client.tinymce3.plugins.spellchecker.GoogleSpellChecker,umbraco" />
<add verb="*" name="Channels_Word" preCondition="integratedMode" path="umbraco/channels/word.aspx" type="umbraco.presentation.channels.wordApi, umbraco" /> </handlers>
<add verb="*" name="ClientDependency" preCondition="integratedMode" path="DependencyHandler.axd" type="ClientDependency.Core.CompositeFiles.CompositeDependencyHandler, ClientDependency.Core "/> <!-- Adobe AIR mime type -->
<add verb="GET,HEAD,POST" preCondition="integratedMode" name="SpellChecker" path="GoogleSpellChecker.ashx" type="umbraco.presentation.umbraco_client.tinymce3.plugins.spellchecker.GoogleSpellChecker,umbraco"/> <staticContent>
</handlers> <remove fileExtension=".air" />
<mimeMap fileExtension=".air" mimeType="application/vnd.adobe.air-application-installer-package+zip" />
<!-- Adobe AIR mime type --> </staticContent>
<staticContent> </system.webServer>
<remove fileExtension=".air" /> <system.codedom>
<mimeMap fileExtension=".air" mimeType="application/vnd.adobe.air-application-installer-package+zip" /> <compilers>
</staticContent> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
<providerOption name="CompilerVersion" value="v4.0" />
</system.webServer> <providerOption name="WarnAsError" value="false" />
</compiler>
</compilers>
<system.codedom> </system.codedom>
<compilers> <runtime>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4"> <!-- Old asp.net ajax assembly bindings -->
<providerOption name="CompilerVersion" value="v4.0" /> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<providerOption name="WarnAsError" value="false" /> <dependentAssembly>
</compiler> <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35" />
</compilers> <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="4.0.0.0" />
</system.codedom> </dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35" />
<runtime> <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="4.0.0.0" />
<!-- Old asp.net ajax assembly bindings --> </dependentAssembly>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> </assemblyBinding>
<dependentAssembly> </runtime>
<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35" /> <!-- Added in Umbraco 4.6.2 -->
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="4.0.0.0" /> <system.web.webPages.razor>
</dependentAssembly> <host factoryType="umbraco.MacroEngines.RazorUmbracoFactory, umbraco.MacroEngines" />
<dependentAssembly> <pages pageBaseType="umbraco.MacroEngines.DynamicNodeContext">
<assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35" /> <namespaces>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="4.0.0.0" /> <add namespace="Microsoft.Web.Helpers" />
</dependentAssembly> <add namespace="umbraco" />
</assemblyBinding> <add namespace="Examine" />
</runtime> </namespaces>
</pages>
<!-- Added in Umbraco 4.6.2 --> </system.web.webPages.razor>
<system.web.webPages.razor> <!-- End of added in Umbraco 4.6.2 -->
<host factoryType="umbraco.MacroEngines.RazorUmbracoFactory, umbraco.MacroEngines"/>
<pages pageBaseType="umbraco.MacroEngines.DynamicNodeContext">
<namespaces>
<add namespace="Microsoft.Web.Helpers" />
<add namespace="umbraco" />
<add namespace="Examine" />
</namespaces>
</pages>
</system.web.webPages.razor>
<!-- End of added in Umbraco 4.6.2 -->
</configuration> </configuration>

View File

@@ -19,7 +19,7 @@
<add xdt:Transform="Replace" xdt:Locator="Match(key)" key="umbracoDbDSN" <add xdt:Transform="Replace" xdt:Locator="Match(key)" key="umbracoDbDSN"
value="server=.\sqlexpress;database=v4;user id=sa;password=test;Application Name=Umbraco41"/> value="server=.\sqlexpress;database=v4;user id=sa;password=test;Application Name=Umbraco41"/>
<add xdt:Transform="Replace" xdt:Locator="Match(key)" key="umbracoConfigurationStatus" <add xdt:Transform="Replace" xdt:Locator="Match(key)" key="umbracoConfigurationStatus"
value="4.9.0"/> value="4.10.0"/>
<add xdt:Transform="Replace" xdt:Locator="Match(key)" key="umbracoContentXML" <add xdt:Transform="Replace" xdt:Locator="Match(key)" key="umbracoContentXML"
value="~/App_Data/umbraco.config"/> value="~/App_Data/umbraco.config"/>
<add xdt:Transform="Replace" xdt:Locator="Match(key)" key="umbracoStorageDirectory" <add xdt:Transform="Replace" xdt:Locator="Match(key)" key="umbracoStorageDirectory"

View File

@@ -9,8 +9,6 @@ namespace Umbraco.Web.Media.ThumbnailProviders
{ {
public abstract class AbstractThumbnailProvider : IThumbnailProvider public abstract class AbstractThumbnailProvider : IThumbnailProvider
{ {
public abstract int Priority { get; }
protected abstract IEnumerable<string> SupportedExtensions { get; } protected abstract IEnumerable<string> SupportedExtensions { get; }
public bool CanProvideThumbnail(string fileUrl) public bool CanProvideThumbnail(string fileUrl)

View File

@@ -3,17 +3,14 @@ using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using Umbraco.Core.ObjectResolution;
using umbraco.IO; using umbraco.IO;
namespace Umbraco.Web.Media.ThumbnailProviders namespace Umbraco.Web.Media.ThumbnailProviders
{ {
[WeightedPlugin(2000)]
public class FileExtensionIconThumbnailProvider : AbstractThumbnailProvider public class FileExtensionIconThumbnailProvider : AbstractThumbnailProvider
{ {
public override int Priority
{
get { return 2000; }
}
protected override IEnumerable<string> SupportedExtensions protected override IEnumerable<string> SupportedExtensions
{ {
get { return new List<string> { "*" }; } get { return new List<string> { "*" }; }

View File

@@ -5,17 +5,14 @@ using System.Linq;
using System.Text; using System.Text;
using Umbraco.Core; using Umbraco.Core;
using Umbraco.Core.IO; using Umbraco.Core.IO;
using Umbraco.Core.ObjectResolution;
using umbraco.IO; using umbraco.IO;
namespace Umbraco.Web.Media.ThumbnailProviders namespace Umbraco.Web.Media.ThumbnailProviders
{ {
[WeightedPlugin(1000)]
public class ImageThumbnailProvider : AbstractThumbnailProvider public class ImageThumbnailProvider : AbstractThumbnailProvider
{ {
public override int Priority
{
get { return 1000; }
}
protected override IEnumerable<string> SupportedExtensions protected override IEnumerable<string> SupportedExtensions
{ {
get { return new List<string> { ".jpeg", ".jpg", ".gif", ".bmp", ".png", ".tiff", ".tif" }; } get { return new List<string> { ".jpeg", ".jpg", ".gif", ".bmp", ".png", ".tiff", ".tif" }; }

View File

@@ -3,17 +3,15 @@ using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using Umbraco.Core.ObjectResolution;
using umbraco.IO; using umbraco.IO;
namespace Umbraco.Web.Media.ThumbnailProviders namespace Umbraco.Web.Media.ThumbnailProviders
{ {
[WeightedPlugin(3000)]
public class MediaTypeIconThumbnailProvider : AbstractThumbnailProvider public class MediaTypeIconThumbnailProvider : AbstractThumbnailProvider
{ {
public override int Priority
{
get { return 3000; }
}
protected override IEnumerable<string> SupportedExtensions protected override IEnumerable<string> SupportedExtensions
{ {
get { return new List<string> { "*" }; } get { return new List<string> { "*" }; }

View File

@@ -29,13 +29,7 @@ namespace Umbraco.Web.Media.ThumbnailProviders
/// </summary> /// </summary>
public IEnumerable<IThumbnailProvider> Providers public IEnumerable<IThumbnailProvider> Providers
{ {
get get { return GetSortedValues(); }
{
var vals = Values.ToList();
//ensure they are sorted
vals.Sort((f1, f2) => f1.Priority.CompareTo(f2.Priority));
return vals;
}
} }
public string GetThumbnailUrl(string fileUrl) public string GetThumbnailUrl(string fileUrl)