Compatibility Settings
Ensuring that new versions of iXperion we ship are SXML backwards compatibile with the previous version is very, very important to us. We have invested a lot of energy in defining unit tests for all the macros and vipers we ship. For each macro and viper, we have multiple tests that are performed with different inputs to make sure that every new release we ship won't break your site. We are very carefull with fixing bugs in this area. When bugs do need to be fixed we either introduce a new viper or macro and deprecate the old one (like we did with the datatable viper methods). The old one will keep working, though you will no longer be able to see it in the intellisense, ensuring that new sites will use the new, hassle free viper or macro.
On rare occasions, deprecating an existing method is not feasable. On these occasions we will introduce a Compatibility Mode setting that you can use to enforce the old behaviour. These changes are thoroughly documented in the release notes. Unless properly documented, macros or vipers that, given the same input, return a different value on two different versions os iXperion are generaly considered bugs.
Using an application setting in the smartsite.config file, you can set compatibility with a previous release.
Smartsite SXML | Copy Code |
---|---|
<add key="Compatibility" value="1.2"/> |
Currently, the following settings can be used:
- 1.0
- 1.01
- 1.02
- 1.1
- 1.2
- 1.2 build 2
- 1.3
- 1.3 build 3
- 1.4
- 1.4 build 11
- 7.1
- 7.11
- 7.12 (this is actually 7.11 build 3)
Configuring individual settings
When a release introduces several compatibility settings, a site might need only a subset of the compatibility settings for the new release. As of Release 1.1 it's possible to add individual compatibility settings in the smartsite.config:
XML | Copy Code |
---|---|
<add key="compatStartHierarchyAtLevelZero" value="false"/> |
The Compatibility key will determine the default for each setting:
Setting | 1.4 | 1.4 build 11 | 7.1 | 7.11 | 7.11 build 3 |
---|---|---|---|---|---|
compatAlwaysEncodeQueryParams | true | true | true | true | true |
compatConvertInvariantCulture | true | true | true | true | true |
compatItemDataViperUsesDefaultParameterForEmptyDataTable | true | true | true | true | true |
compatResolveSxmlInXsltFormatting | true | true | true | true | true |
compatSaveBufferScope | field | field | field | field | field |
compatStartHierarchyAtLevelZero | true | true | true | true | true |
compatTypedViperDefaults | true | true | true | true | true |
compatUseCurrentRoleToDetermineContentAccess | false | false | false | false | false |
compatJsonReturnsNulls | true | true | true | true | true |
compatClearSaveBuffersOnInstructionSourceChange | true | true | true | true | true |
compatRegionOverrulesLocalBufferScope | false | false | false | false | false |
compatStaticallyResolveSmartletPropertyDefaults | false | false | false | false | false |
compatDebugWriteCultureInvariant | true | true | true | true | true |
compatInsecureCookieDefaults | true | false | false | false | false |
compatCompareDateTimeInUTC | false | false | true | true | true |
compatSiteMapUsesRawItemFormat | false | false | true | true | true |
compatDefaultHandlingMetaNavigation | false | false | true | true | true |
compatDefaultPreFollowReferenceItem | false | false | false | true | true |
compatStripHtmlInEmailBody | true | true | true | true | false |
compatUseCurrentCultureForFormatting | false | false | false | false | true |