Compatibility Notes for 1.3

One of the most important fixes in 1.3 has to do with buffer scoping in region macros.

As you know, region macros declare their own buffer scope. This means that buffers in the region are local to that region.

Until 1.3, regions overruled buffer scoping over multipe SXML sources. This meant that once a region was defined, buffers declared within that region would never lose scope, not even when different code blocks (defined in other items/fields) were executed. The only thing that mattered was the enclosing region.

In 1.3, this behavior has been removed.

To revert to the pre-1.3 behavior, add a value to the appSettings section in the Smartsite.config:

XML CopyCode image Copy Code
<add key="compatRegionOverrulesLocalBufferScope" value="true"/>

In the example below, until 1.3, savebuffers declared in the content() translation would be visible in the navigationbottom() translation:

Smartsite SXML CopyCode image Copy Code
<se:region>
   {buffer.set(color, 'red')}
   <div id="main-content">
      <div id="main-content-body">
         {content()}
      </div>
      <div id="main-content-body">
         {navigationbottom()}
      </div>
   </div>
</se:region>

Clearly, this is not desirable. We encourage you to update your SXML. To make data available across multiple fields/items, use arguments:

Smartsite SXML CopyCode image Copy Code
<se:region>
   {buffer.set(color, 'red')}
   <div id="main-content">
      <div id="main-content-body">
         {content($color)}
      </div>
      <div id="main-content-body">
         {navigationbottom($color)}
      </div>
   </div>
</se:region>

In cases where you can't use translation arguments, use page-global buffers, but keep in mind that global variables are undesirable, as they can cause unpredictable behavior.

Other Compatibility check points

Url.SetItemNumber() did not preserve non-default hostheaders.

This has been fixed, so generated urls can differ from previous releases.

Buffer state over multiple calls to the same translation

Until 1.3, over multiple calls to the same translations, savebuffers declared in the translation would be preserved. This can lead in unpredictable behavior and has been fixed. However, the fix is potentially breaking, so a new compatibility setting, 'compatClearSaveBuffersOnInstructionSourceChange', has been added to revert to the behavior before 1.3.

To revert to the pre-1.3 behavior, add a value to the appSettings section in the Smartsite.config:

XML CopyCode image Copy Code
<add key="compatClearSaveBuffersOnInstructionSourceChange" value="false"/>

Json.GetValue viper now returns null value when appropriate

This means the viper call will remain unresolved, unless a default is specified.
Depends on compatibility setting "compatJsonReturnsNulls".

To revert to the pre-1.3 behavior, add a value to the appSettings section in the Smartsite.config:

XML CopyCode image Copy Code
<add key="compatJsonReturnsNulls" value="false"/>

jQuery 1.4.2, jQuery UI 1.8.2 included

iXperion 1.3 now comes with jQuery 1.4.2 and jQuery UI 1.8.2 included.

See the jQuery and the jQuery UI release notes on this release to check whether this causes incompatibilities with your sites.