Changes for the Glass.Mapper.Sc project:

4.5.0.202
  • Add support for Sitecore 9.0. Note that currently we are not able to run a full suite of unit tests against Sitecore 9.0, this is due to the fact that we need to use multiple versions of Sitecore FakeDB. We have started work on Sitecore V5 and this will require a large restructuring of the unit tests in the solution, therefore we won't be spending time at this time to resolve this issue in V4.
  • Removed thread locks in the AbstractConfigurationFactor, this was causing deadlock issues for some Glass.Mapper users. We have decided to change this for a finalisation mechanism. After configuring the Dependency Resolver for Glass you must now call the DependencyResolver.Finalise() method, this is normally performed in the GlassMapperScCustom class,for new installations of Glass.Mapper.Sc this will automatically be performed (line 18 of GlassMapperScCustom). For solutions upgrading to this version of Glass.Mapper.Sc this line will need to be added.
  • (Issue 317) Glass now correctly handles Internal Link fields, thanks to vrkmajeti for finding this issue
  • (Issue 324) Updates the SitecoreFieldLinkMapper to map the style attribute of a General Link field, thanks to Craig (nebulae1) for finding this issue
  • (Issue 318) The URLBuilder now correctly handles URLs that contain two question marks '?', thanks to Khai Pham (qkhaipham) for finding this issue.
  • (Issue 329) Added additional parameter to GlassHtml.BeginRenderLink called AlwaysRender that will force BeginRenderLink to render a link even if the field is empty. Thanks to Niels Swimberghe for the suggestion.
4.4.0
  • (Issue 283) Fixed issue of null reference exception being thrown a model was being cached and also used TemplateEnforcement.
  • (Issue 278) Added additional to methods GlassHtml to allow predicates to determine if a field should be editable or not.
  • (Issue 274) Remove redundant line of code.
  • (Issue 275) Trailing semi-colons on model type definitions in CSHTML files caused problems for the RegexViewTypeResolve. This was fixed.
  • (Pull 293) Improvements to the NetMemoryCacheManage to resolve a race condition.
  • (Issue 302) Fixed problem of the SitecoreFieldIdMapper return a Guid.Empty instead of ID.Null
  • Fluent configuration for SitecoreSelf has been added.
  • BeginRenderLink now uses the expression cache when using a compiled lambda expression. This speeds up rendering.
  • Correct spelling mistake in the Extension methods class, ToFloat has been added an ToFlaot has been marked as obsolete.
  • (Issue 311) When calling the render field pipeline we now pass the ID of the field instead of the field name.
4.3.4.197
  • Improved how the NetMemoryCacheManage is disposed
  • (Issue 285) Reduced the log level in the GetModelFromView Pipeline process to reduce log spam.
4.3.4.196
  • (Issue 270) Exception is no longer thrown when trying to save a model that uses the SitecoreFieldItemMapper.
  • Correct logic in EnforceTemplateCheck which mean it didn't always correctly call the next tasks.
  • (Issue 272)  Fix for when attributes used for Images and Link rendering contain curly brackets causing an exception to be thrown.
4.3.2.195
  • Updated the IConfigFactory to include a Remove<T> method to make removing DI registrations easier.
  • Improve error messaging when the DepthCheck throws an error.
  • (Issue 269) Fix to how the RegexViewTypeResolver handles line breaks.
4.3.1.194
  • For more details read the 4.3 blog post.
  • The style of pipelines has been changed from the Sitecore style to a Middeware pipeline setup. This is a breaking change.
  • Changes to how we handle Cachable models means that you no longer need to mark properties as Lazy. Lazy loading will automatically be disabled for cached models.
  • Improvements to the diagnostic information we can provide.
  • GetModelFromView refactored to support different methods of getting the view type. This also allows Glass to work with compiled views.
  • (Pull 264) Additional DataMapper attribute that can be assigned to a property to explicitly state which data mapper should be used. Thanks to Søren Kruse for providing this feature.
  • (Issue 261) Exception being thrown with interfaces that aren't lazy loaded. Thanks to Jawahar Soundappan Ramasamy for reporting this.
  • (Issue 255) Resolved issue where Glass would throw errors in EXM due to missing CSHTML files. Thanks to Steve Bridges for reporting this.
  • (Issue 253) Performance issue on the first load of the experience editor due to Glass loading SPEAK views, SPEAK views will now be ignored. Thanks to Alex for reporting this.
  • (Issue 250) Cache key collision between two languages that don't have versions.
  • (Issue 249) Allow resolving URLs using the item language instead of the Context language, this can be specified using SitecoreInfoUrlOptions.UseItemLanguage. Thanks to Nick Wesselman for suggesting this.
  • (Issue 248) Add the ability to prefix the items created in the Core database when using BeginEditFrame with model fields. This is to resolve an issue in Sitecore 8.2. Thanks to pmandava for reporting this.
  • (Issue 222) Reworking of the fix for Issue 222 so that it doesn't break external links. Thanks to Anthony Cutrone for reporting this.
4.2.1.188
  • ( Pull 241) Sitecore 8.2 assemblies have been moved to support the new version numbering system from Sitecore. They are now contained in the 100 directory. Thanks to Sean Holmesby for helping with the fix.
  • (Pull 240) Fix to ensure thread safety of the InterfacePropertyInterceptor. Thanks to Chris Smith for discovering the issue and fixing it.
4.2.0.184
  • Split the Glass.Mapper.Sc project into two nuget packages. The Glass.Mapper.Sc packages contains config files and Glass.Mapper.Sc.Core contains the assemblies.
  • Update the GetModel and GetModelFromView processors so that individual methods can be overridden for customisation.
  • Contains assemblies to support Sitecore 8.2
  • SitecoreContext and GlassContext are now created internally by factories that can be replaced with custom implementations.
  • GlassHtml is now created by a factory via the SitecoreContext. This allows easier customisation.
  • DateMapperFieldsWithSpace mapper now supports names with numbers.
  • (Pull 233) Improved error message in SitecoreGlassMap. Thanks to Techphoria414.
  • (Pull 237) Sitecore self mapper, allows the item currently being mapped to be mapped onto another model that is a property of the current class. Thanks to Alexander Smagin
  • Change how properties are add to the type configuration. This allows properties that have already been added to a configuration to be replaced.
  • Generation of a TDS Update Package when we build a beta release. This TDS package can be downloaded from the build server and used to get integration tests running.
  • Split TDS projects out from the main solution to allow developers without TDS to more easily contribute.
  • Removed the Glass.Mapper.Sc.Razor project. This project will no longer be developed.
  • Add GlassLazy field mapping support. Allows individual fields to be lazy loaded. 
4.1.0.64
  • Added Diagnostic features to allow analysing of model creation using Glass.Mapper. Read the Diagnostics page for more information.
  • Changes to the Dependency Resolver to make it easier to register customisations and more consistent. Read the Dependency Resolver page for more information.
  • Updated CacheAddTask and CacheCheckTask to make them easier to override.
  • Update GlassHtmlMvc properties so that the underlying IGlassHtml can be replaced with a custom implementation.
  • Added the DataMapperFieldsWithSpace pipeline task. This task can be added to the Data Mapper Resolver pipeline to allow the usage of Pascal case property names with fields that have spaces.
  • (Issue 222) Incorrect encoding of Sitecore links that contained QueryStrings.
4.0.11.63
  • (219) Changed the log level for messages in GetModel and GetModelFromView from info to debug to stop the log file spam. Thanks to Kevin Brechbühl for making the changes.
4.0.10.61
  • Add support for Media URL options. You can control how the URL is rendered by using the SitecoreInfoMediaUrlOptions enum.
  • Updated the Cache Manager to use the .NET MemoryCache by default instead of the HTTPCache.
  • Update GetModel and GetModelFromView MVC pipeline tasks so that they retrieve the Glass Context from the Site configuration instead of using the Default Context only.
  • Updated the Glass cache to use the site name if available as part of the cache key. We have also provided a method of overriding how this key is generated so that it can be customised.
  • Added the config flag DisableVersionCount to completely disable the Glass version count check. Setting this flag to true will disable the Glass version count for the entire solution.
  • Removed from the GlassHtmlMvc extension methods class the method
     public virtual HtmlString RenderImage<T>(T model, Expression<Func<T, object>> field, object parameters = null, bool isEditable = false) 
    We recommend that you now use the method:
    public virtual RenderImage<T>(T model, Expression<Func<T, object>> field, object parameters = null, bool isEditable = false, bool outputHeightWidth = false) 
    NOTE: the older method set the outputHeightWidth to true but the new method is false.
  • When calling RenderImage if the Image.Height and Image.Width properties are zero then the "h" and "w" querystring parameters will not be added to the URL.
4.0.9.60
  • Added additional method to AbstractSitecoreContext that returns the Site root item as a strongly typed model. GetRootItem uses the value Sitecore.Context.Site.RootPath to determine which item to return.
  • Set a default sliding expiry to the Glass HttpCache of 20 minutes.
  • Update the BeginRenderLink to HTML encode the URL of a link. This was the original behaviour but was undone by a fix for Issue 197.
  • Marked the GlassCast item extension methods as obsolete. See the blog post The Curse of GlassCast for an explanation.
  • (Issue 200) Fixed how the sublayout was resolved by the RenderingContextUserControlWrapper when accessing rendering parameters.
  • (Issue 201) Disabled rendering of height and width in the page editor when rendering an image field and using the flag outputHeightWidth = false.
  • (Issue 152) Changed the order of the base class call in SitecoreService constructor. Thanks to Kevin Brechbühl for the fix
  • (Issue 173) Fixes to the number data mappers so that they use an invariant culture when saving. Thanks to Pascal Mathys for the fix.
  • (Issue 128) Fix for a potential race condition in the ModelCacheManager used by razor views. Thanks to smithc for the fix.
4.0.8.58
  • Changed the order of the if statement execution in the CacheAdd and CacheCheck pipeline tasks so that the DisableCache value is checked before the AbstractTypeCreationContext value. Also updated the SitecoreTypeCreationContext so that it checks that a Sitecore.Context.Site has been set before checking the Page mode.
4.0.7.56
  • Updated how the ThreadStack was created in the SettingStack class so that it doesn't cause occasional null exceptions.
4.0.6.55
  • (Issue 198) If the item (data source) in Sitecore is null for a View Rendering Glass returns null. Sitecore by default then creates a RenderingModel, the Glass view will then throw an exception because the view requires a Glass model but is passed the Sitecore RenderingModel model. This fix will remove renderings that have a null item removing the error. To turn on enable the config file z.Glass.Mapper.Sc.ViewRender.config.exclude. Thanks to Hiral Desai for the fix.
  • (Issue 197) Issue where the UrlBuilder would cause a problem with ampersand encoding when hashing media URLs.
  • (Issue 191) Fix for how the Links are rendered in the experience editor when the content parameter has been used.
  • (Issue 190) An empty ALT attribute will be rendered if no alt value has been specified as per accessibility guidelines.
  • (Issue 188) Added support for Original Language and OriginatorId in Sitecore 8.1.
  • (Issue 178) Updated Edit Frame support so that title now appears correctly in the Experience Editor
4.0.5.54
  • Changed the Nuget package and build to specifically support MVC 5.1 and MVC 5.2 rather than using the more generic MVC 5 reference.
4.0.4.53
  • (Issue 185) Null check on the SitecoreContext in the GlassController to make it easier to test.
  • (Issue 187) Update the DateTime mapper to support the new datetime format in in 8.0
  • (Issue 183) Sitecore 8.1 Support
  • (Issue 177) Added configuration setting that controls the Image data mapper to either return null or an empty image class when an image field is empty.
  • (Issue 166) Reworked the DisableCache class so that nested classes don't re-enable the cache by mistake.
  • Fixed problem where BeginEditFrame would throw an exception if the user tried to access the Page Editor without being authenticated.
  • Add SitecoreFieldImageEmptyMapper, if configured an empty Glass.Mapper.Sc.Field.Image object will be returned instead of null for empty Image fields.
  • Solution now compiles against MVC 5.2
4.0.3.50
  • (Issue 164) Fix to EnforceTemplate.TemplateAndBase to iterate through all base template
  • (Issue 172) Potential Null Exception in AbstractFactory
  • (Issue 137) NullException caused after app recycle
  • (Issue 167) Add the IRenderingContext abstract to allow better mocking of Glass Controllers and UserControls.
  • (Issue 157) Add a patch attribute to ensure that the GetModel processor appears in the correct location.
  • (Issue 98) Explicit override to force string property to render via the RenderField pipeline.
4.0.2.10
  • (Issue 153) Public generic methods on controllers are now protected.
  • (Issue 146) ICacheManager was not correctly registered with Castle Windsor
  • (Issue 145) Added a method called First to make registering new components with the default DI container easier.
  • (Issue 142) Fixed bug where empty image fields were still returning an Image object rather than null.
  • (Issue 120) Added a method of customising the attributes/query string parameters that are rendered when rendering an image.
4.0.1.8
  • (Issue 135) Fix issue with custom data mappers not being correctly registered with the new dependency resolver. This has changed the behaviour of the AbstractConfigFactory class by removing the AddTypes method.
  • (Issue 133) Fixed issue where adding the mw (max width) value when rendering an image was having no affect.
  • (Issue 120) When Rendering an image and passing in style as part of the anonymous property type it was being appended to the URL of the image. This behaviour has been removed. Now only valid Sitecore image parameters are appended to the Image URL. All other parameters are assumed to be HTML attributes.
  • (Issue 119) Language specific images were not being rendered because the language of the image wasn't being append to the image URL. This is now appended and works in the Page Editor. An additional property has been added to the Glass.Mapper.Sc.Image class that indicates the language of the image.
  • Fixed issue of Glass.Mapper.Sc not displaying correctly in the Nuget package manager feed.
4.0.1.5
  • (Issue 132) Hotfix release to fixed Inferred types not working in V4
4.0.0.4
  • Nuget package simplification to combine the MVC packages into the main Glass.Mapper.Sc nuget package.
    • Removal of Glass.Mapper.Sc.CastleWindsor
    • Removel of Glass.Mapper.Sc.Mvc-3
    • Removel of Glass.Mapper.Sc.Mvc-4
    • Removel of Glass.Mapper.Sc.Mvc-5
  • Removed the dependency on Castle Windsor as the IOC container used by Glass.Mapper.Sc and replaced with an internal solution. This removes another dependency on a third party framework.
  • Update the build process to build a specific Glass.Mapper.Sc.dll for each version of Sitecore (7+).
  • Retired the Glass.Mapper.Sc.Razor project
  • Improved support for Edit Frames to allow field Edit Frames to be created from Glass.Mapper.Sc models.
  • Add the ability to cache requested models.
  • Remove the need to inherit from Glass.Mapper.Sc.Web.Mvc.GlassView<> when working with CSHTML pages. Helper methods can now be accessed through @Html.Glass().
  • Add the ability to determine the model required for a View Rendering from the CSHTML file itself. This removes the need to define the model in Sitecore.
  • Add additional support for fluent configuration mapping.
  • General performance improvements.
3.3.1.53
  • Issue 117 Added to the Glass.Mapper.Sc.Config class the property UseGlassHtmlLambdaCache which controls if the lambda cache used by Editable methods is used. See GlassHtmlfor more information.
3.3.0.51
  • Issue 105 Remove reference to Sitecore.Data.Fields.Mediapath
  • Issue 85 Resolve issue of generic types that inherit a base type marked with a SitecoreType attribute throwing an exception on load. Generic types are now ignored.
  • Issue 112 Better handling of Link URLs, we are now using a custom URLBuilder class rather than the Sitecore version.
  • Issue 101 Add the ability to configure GlassHtml to use either double quotes or single quotes when outputting HTML for Links and Images.
  • Issue 99 Render links now handles URLs that have multiple query string parameters with the same name.
  • Issue 97 The SiteResolving UrlOptions flag would also cause AlwaysIncludeServerUrl to be set as well. This has been fixed.
  • Issue 92 Image sizes being sent on image fields were being ignored. This has been fixed, see the blog post Image Parameters in Glass.Mapper.Sc for more information.
  • Issue 91 The method GetRenderingParameters on Glass.Mapper.Sc.Web.Mvc.Controller is now marked as protected to avoid problems with assembly scanners.
  • Added additional helper methods for getting the DataSource item, Context Item and Layout Item to the AbstractGlassUserControl.  
3.2.3.50
  • HotFix release to fix exception being thrown when using IEnumerable<Glass.Mapper.Sc.Fields.Image>.
3.2.3.49
  • HotFix release for Issue 100 - Index was outside the bounds of the array exception in SitecoreFieldMapper.
3.2.3
  • Refactoring of how parameters are passed to Editable, RenderImage, RenderLink. ImageParameters, LinkParameters and DateParameters have been removed.
  • Fixed or how missing fields and nulls are handled by the interface proxy handler. This will reduce the number of errors thrown.
  • When defining an anonymous type you can now use an underscore to output a hyphen. E.g. 
    @RenderImage(image, x => x.Image, new { data_id= 100}, isEditable: true) 
    Will be converted to:
    <img src="..." data-id="100" /> 
  • Method for enforcing a template check before an item is created using the new SitecoreType.EnforceTemplate property. If an item isn't based on the specified template (using SitecoreType.TemplateId) then null is returned instead of an object.
  • Fixed issue of SitecoreType.Import throwing an exception if a property is mapped twice. If a field has been mapped twice the second mapping will be ignored.
  • Issue 81 - VersionCountDisabler not working in Utilities.GetLanguageItem now fixed
  • Issue 80 - Collections that were marked as not lazy loading were not being loaded when the parent object was being created. This was cause problems when the parent object entered and left security scopes.
3.2.0 
  • Restructure of Glass.Mapper.Sc to support the Glass.Mapper.Sc.Mvc assembly, see this blog post
  • Fix to LazyItemEnumerable to support null values returned by Sitecore query.
  • Fix to BeginRenderLinks to support AbstractParameters
3.1.10
  • Fix to the GlassController to stop NullPointerExceptions being thrown when the data source points at a null item.
  • Update to GetModel class (used by MVC View Renderings) to stop exception being throw in the data source point to a null item.
  • Updated GlassHtml to pass attributes in RenderLink to the field render in page edit mode.
  • Issue 52 - Fixed race condition in interface property interceptor by Smithc.
  • Stopped Rich Text fields being editable if they are not marked for editting.
3.1.9
  • Code first fix for Sitecore 7.1
  • Allow anonymous type support for BeginRenderLink.
  • Support for basic image collection population.
  • Changed how the display name of an item is pulled to avoid a blank display name still returning a value.
3.1.8
  • Fixed bug where the Page Editor functionality when dealing with multi-lingual sites was different to Sitecore
  • Added features to allow properties to be marked for usage in the Page Editor only without any mapping to them. This is intended to be used with the SC7 search to allow search results to be Page Editable.
3.1.7
  • Fixes to saving Glass.Mapper.Sc.Fields.Images which was throwing a null object exception on save.
3.1.6
  • UrlOptions added to SitecoreField attribute
3.1.5
  • Now compiles .Net 4 and .Net 4.5 assemblies.
  • Loading Sitecore Items through the Glass.Mapper services.
  • Marked the field types under Glass.Mapper.Sc.Fields as serializable.
3.1.4
  • Fix for ReadOnly SitecoreField issue where the ReadOnly flag was being ignored. Thanks to Nick Wesselman for spotting this.
3.1.3
  • Changes to how Context.GetTypeConfiguration is called. Fixes issue of type not being present when trying to create a new item from a class that hasn't been loaded by Glass.Mapper.
3.1.2
  • Added support for SitecoreItem attribute, this allows the item being mapped to itself mapped to a property.
  • Added support for the ChildrenCast property type. This allows child items to be cast to different target types.
  • Fix for getting the ID of an item from a class.
3.1.1
  • Pull 35 GlassWebControl contributed by Kyle Heon
  • Separated out URL creation for Glass.Mapper.Sc.Fields.Link so that URLs can be created outside of the RenderLink method.
  • Added more information to property mapping exceptions.
  • Refactored attribute configuration. Glass.Mapper.Sc.Configuration.Attributes.SitecoreAttributeConfigurationLoader is now obsolete. Property attributes are now supported without the need for the class attribute.
  • Added caching layer for inferred to type to speed up type resolution.
3.1.0
  • Issue 25Inferred types throwing exception when base type does not have a template ID.
  • Issue 27 Additional method for creating items just supplying the type and name. Useful for working with interfaces.
  • Issue 19 Added support to retrieve base template Ids using the SitecoreInfo attribute.
  • Issue 32 Fixed error caused by using classes with two indexers, e.g. SearchResultItem. Also added the Map property to allow supporting mapping of SC7 search results to items.
3.0.5.15 - Hotfix
  • Issue 31 Fix to Page Editor mode where the ID of a field set on a property was being ignored.
3.0.5.14 - HotFix
  • Issue 21 Fixes to the output generated by RenderImage and RenderLink.
3.0.5
  • Improved page editor support in WebForms, MVC and Glass.Mapper.Sc.Razor. Ensure that all features were available in all rendering frameworks.
  • Support for mapping RenderingParameters.
  • Issue 12 Race condition in OnDemand mapping resolved.
  • Minor improvements to exception handling and messaging.
  • SitecoreService query with language support.
3.0.4
  • Fix to MakeEditable when rendering parameters are null
  • Fix to MVC GetModel to support a DataSource on a rendering
  • Fix to MVC GetModel to not throw exceptions when it fails to resolve a type. This allows the pipeline to continue.
  • Change to how lambda's in page editor editable methods are used to support F#
3.0.3
  • Pull 3 - improvements to property read and writes
  • Update the SitecoreFieldStringMapper to work with the SitecoreFieldIEnumerableMapper.
  • Support to ignore properties when auto-mapping
  • MVC support for links to models beneath /sitecore/layout/models
  • Fix to allow models items to be created in a different version to their parent.
  • Null check on fields when saving items
  • Fix for issue caused when an interface inherits from another with a similar name. The type is incorrectly resolved.
  • Updated how SitecoreFieldTypeMapper resolves the type
  • Updated the Editable methods to not force the content to render through the field render when not in page edit mode.
  • GlassHtml.RenderImage method to support ImageParameters and page edit mode.
3.0.2
  • Changes to support the Edit Frame in Glass.Mapper.Sc.Razor
  • Changes to allow a data source to be set for the Edit Frame
  • Added the miss support for MVC Editable and EditFrame
  • GlassHtml interface.
  • Inferred type based on template ID
  • Improvements to the GlassHtml.RenderImage method to append attributes to the URL to support image resizing
3.0.1
First Release