Showing with 481 additions and 298 deletions.
  1. +31 −0 CHANGELOG.md
  2. +74 −39 plugins/css3pie/PIE-uncompressed.htc
  3. +63 −32 plugins/css3pie/PIE-uncompressed.js
  4. +81 −81 plugins/css3pie/PIE.htc
  5. +80 −80 plugins/css3pie/PIE.js
  6. +5 −0 plugins/stylect/css/stylect-uncompressed.css
  7. +1 −1 plugins/stylect/css/stylect.css
  8. +15 −4 plugins/stylect/js/stylect-uncompressed.js
  9. +1 −1 plugins/stylect/js/stylect.js
  10. +1 −0 robots.txt
  11. +1 −1 system/constants.php
  12. +7 −1 system/drivers/DC_File.php
  13. +14 −2 system/drivers/DC_Folder.php
  14. +35 −28 system/drivers/DC_Table.php
  15. +7 −7 system/libraries/Controller.php
  16. +10 −0 system/modules/backend/Ajax.php
  17. +1 −1 system/modules/backend/StyleSheets.php
  18. +1 −1 system/modules/backend/templates/be_referer.html5
  19. +1 −1 system/modules/frontend/Form.php
  20. +1 −0 system/modules/frontend/FormCaptcha.php
  21. +2 −1 system/modules/frontend/FormFileUpload.php
  22. +1 −1 system/modules/frontend/ModuleSearch.php
  23. +1 −1 system/modules/frontend/PageRedirect.php
  24. +1 −1 system/modules/frontend/templates/moo_analytics.html5
  25. +1 −1 system/modules/frontend/templates/moo_analytics.xhtml
  26. +21 −3 system/modules/listing/ModuleListing.php
  27. +1 −1 system/modules/rep_base/RepositorySettings.php
  28. +7 −3 system/modules/rep_client/RepositoryBackendModule.php
  29. +1 −1 system/modules/rss_reader/ModuleRssReader.php
  30. +1 −1 system/themes/default/login.css
  31. +1 −1 system/themes/default/main.css
  32. +3 −0 system/themes/default/src/login.css
  33. +10 −3 system/themes/default/src/main.css
31 changes: 31 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,37 @@
Contao Open Source CMS Changelog
================================

Version 2.11.4 (2012-06-12)
---------------------------

### Fixed
Fixed a critical privilege escalation vulnerability which allowed regular users
to make themselves administrators (see #4427).

### Fixed
Support insert tags as external redirect target (see #4373).

### Updated
Updated the CSS3PIE plugin to version 1.0.0 (see #4378).

### Fixed
Re-applied the "autofocus the first field" patch (see #4297).

### Fixed
The pagination menu fix was missing in the listing, search and RSS reader
modules (see #4292).

### Fixed
Added the "required" attribute to the captcha input field (see #4247).

### Fixed
Correctly tell Google Analytics to anonymize the visitor's IP (see #4290). Heads
up: Adjust your `moo_analytics` templates accordingly!

### Fixed
Correctly align stylect menus in Safari and Opera (see #4284).


Version 2.11.3 (2012-05-04)
---------------------------

Expand Down
113 changes: 74 additions & 39 deletions plugins/css3pie/PIE-uncompressed.htc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<!--
PIE: CSS3 rendering for IE
Version 1.0beta5
Version 1.0.0
http://css3pie.com
Dual-licensed for use under the Apache License Version 2.0 or the General Public License (GPL) Version 2.
-->
Expand Down Expand Up @@ -387,15 +387,20 @@ PIE.Observable.prototype = {
* Simple heartbeat timer - this is a brute-force workaround for syncing issues caused by IE not
* always firing the onmove and onresize events when elements are moved or resized. We check a few
* times every second to make sure the elements have the correct position and size. See Element.js
* which adds heartbeat listeners based on the custom -pie-poll flag, which defaults to true in IE8
* which adds heartbeat listeners based on the custom -pie-poll flag, which defaults to true in IE8-9
* and false elsewhere.
*/

PIE.Heartbeat = new PIE.Observable();
PIE.Heartbeat.run = function() {
var me = this;
var me = this,
interval;
if( !me.running ) {
setInterval( function() { me.fire() }, 250 );
interval = doc.documentElement.currentStyle.getAttribute( PIE.CSS_PREFIX + 'poll-interval' ) || 250;
(function beat() {
me.fire();
setTimeout(beat, interval);
})();
me.running = 1;
}
};
Expand Down Expand Up @@ -464,8 +469,10 @@ PIE.OnUnload.attachManagedEvent( window, 'onresize', function() { PIE.OnResize.f
}
}

PIE.OnUnload.attachManagedEvent( window, 'onbeforeprint', beforePrint );
PIE.OnUnload.attachManagedEvent( window, 'onafterprint', afterPrint );
if( PIE.ieDocMode < 9 ) {
PIE.OnUnload.attachManagedEvent( window, 'onbeforeprint', beforePrint );
PIE.OnUnload.attachManagedEvent( window, 'onafterprint', afterPrint );
}

})();/**
* Create a single observable listener for document mouseup events.
Expand All @@ -482,7 +489,7 @@ PIE.OnUnload.attachManagedEvent( doc, 'onmouseup', function() { PIE.OnMouseup.fi
*/
PIE.Length = (function() {
var lengthCalcEl = doc.createElement( 'length-calc' ),
parent = doc.documentElement,
parent = doc.body || doc.documentElement,
s = lengthCalcEl.style,
conversions = {},
units = [ 'mm', 'cm', 'in', 'pt', 'pc' ],
Expand All @@ -494,13 +501,13 @@ PIE.Length = (function() {

parent.appendChild( lengthCalcEl );
while( i-- ) {
lengthCalcEl.style.width = '100' + units[i];
s.width = '100' + units[i];
conversions[ units[i] ] = lengthCalcEl.offsetWidth / 100;
}
parent.removeChild( lengthCalcEl );

// All calcs from here on will use 1em
lengthCalcEl.style.width = '1em';
s.width = '1em';


function Length( val ) {
Expand Down Expand Up @@ -1230,14 +1237,19 @@ PIE.BoundsInfo.prototype = {
getLiveBounds: function() {
var el = this.targetElement,
rect = el.getBoundingClientRect(),
isIE9 = PIE.ieDocMode === 9;
isIE9 = PIE.ieDocMode === 9,
isIE7 = PIE.ieVersion === 7,
width = rect.right - rect.left;
return {
x: rect.left,
y: rect.top,
// In some cases scrolling the page will cause IE9 to report incorrect dimensions
// in the rect returned by getBoundingClientRect, so we must query offsetWidth/Height instead
w: isIE9 ? el.offsetWidth : rect.right - rect.left,
h: isIE9 ? el.offsetHeight : rect.bottom - rect.top
// in the rect returned by getBoundingClientRect, so we must query offsetWidth/Height
// instead. Also IE7 is inconsistent in using logical vs. device pixels in measurements
// so we must calculate the ratio and use it in certain places as a position adjustment.
w: isIE9 || isIE7 ? el.offsetWidth : width,
h: isIE9 || isIE7 ? el.offsetHeight : rect.bottom - rect.top,
logicalZoomRatio: ( isIE7 && width ) ? el.offsetWidth / width : 1
};
},

Expand Down Expand Up @@ -2544,11 +2556,12 @@ PIE.RootRenderer = PIE.RendererBase.newRenderer( {
boxPos,
s = this.getBox().style, cs,
x = 0, y = 0,
elBounds = this.boundsInfo.getBounds();
elBounds = this.boundsInfo.getBounds(),
logicalZoomRatio = elBounds.logicalZoomRatio;

if( tgtPos === 'fixed' && PIE.ieVersion > 6 ) {
x = elBounds.x;
y = elBounds.y;
x = elBounds.x * logicalZoomRatio;
y = elBounds.y * logicalZoomRatio;
boxPos = tgtPos;
} else {
// Get the element's offsets from its nearest positioned ancestor. Uses
Expand All @@ -2559,12 +2572,12 @@ PIE.RootRenderer = PIE.RendererBase.newRenderer( {
if( par ) {
parRect = par.getBoundingClientRect();
cs = par.currentStyle;
x = elBounds.x - parRect.left - ( parseFloat(cs.borderLeftWidth) || 0 );
y = elBounds.y - parRect.top - ( parseFloat(cs.borderTopWidth) || 0 );
x = ( elBounds.x - parRect.left ) * logicalZoomRatio - ( parseFloat(cs.borderLeftWidth) || 0 );
y = ( elBounds.y - parRect.top ) * logicalZoomRatio - ( parseFloat(cs.borderTopWidth) || 0 );
} else {
docEl = doc.documentElement;
x = elBounds.x + docEl.scrollLeft - docEl.clientLeft;
y = elBounds.y + docEl.scrollTop - docEl.clientTop;
x = ( elBounds.x + docEl.scrollLeft - docEl.clientLeft ) * logicalZoomRatio;
y = ( elBounds.y + docEl.scrollTop - docEl.clientTop ) * logicalZoomRatio;
}
boxPos = 'absolute';
}
Expand Down Expand Up @@ -2778,6 +2791,11 @@ PIE.BackgroundRenderer = PIE.RendererBase.newRenderer( {
pxY = Math.round( bgPos.y ) + bwT + 0.5;
fill.position = ( pxX / elW ) + ',' + ( pxY / elH );

// Set the size of the image. We have to actually set it to px values otherwise it will not honor
// the user's browser zoom level and always display at its natural screen size.
fill['size']['x'] = 1; //Can be any value, just has to be set to "prime" it so the next line works. Weird!
fill['size'] = size.w + 'px,' + size.h + 'px';

// Repeating - clip the image shape
if( repeat && repeat !== 'repeat' ) {
if( repeat === 'repeat-x' || repeat === 'no-repeat' ) {
Expand Down Expand Up @@ -2927,8 +2945,7 @@ PIE.BorderRenderer = PIE.RendererBase.newRenderer( {

isActive: function() {
var si = this.styleInfos;
return ( si.borderRadiusInfo.isActive() ||
si.backgroundInfo.isActive() ) &&
return si.borderRadiusInfo.isActive() &&
!si.borderImageInfo.isActive() &&
si.borderInfo.isActive(); //check BorderStyleInfo last because it's the most expensive
},
Expand Down Expand Up @@ -3399,7 +3416,7 @@ PIE.BoxShadowOutsetRenderer = PIE.RendererBase.newRenderer( {
shadowInfo = shadowInfos[ i ];
xOff = shadowInfo.xOffset.pixels( el );
yOff = shadowInfo.yOffset.pixels( el );
spread = shadowInfo.spread.pixels( el ),
spread = shadowInfo.spread.pixels( el );
blur = shadowInfo.blur.pixels( el );
color = shadowInfo.color;
// Shape path
Expand All @@ -3414,8 +3431,8 @@ PIE.BoxShadowOutsetRenderer = PIE.RendererBase.newRenderer( {
if( blur ) {
totalW = ( spread + blur ) * 2 + w;
totalH = ( spread + blur ) * 2 + h;
focusX = blur * 2 / totalW;
focusY = blur * 2 / totalH;
focusX = totalW ? blur * 2 / totalW : 0;
focusY = totalH ? blur * 2 / totalH : 0;
if( blur - spread > w / 2 || blur - spread > h / 2 ) {
// If the blur is larger than half the element's narrowest dimension, we cannot do
// this with a single shape gradient, because its focussize would have to be less than
Expand Down Expand Up @@ -3908,6 +3925,8 @@ PIE.Element = (function() {
var wrappers = {},
lazyInitCssProp = PIE.CSS_PREFIX + 'lazy-init',
pollCssProp = PIE.CSS_PREFIX + 'poll',
trackActiveCssProp = PIE.CSS_PREFIX + 'track-active',
trackHoverCssProp = PIE.CSS_PREFIX + 'track-hover',
hoverClass = PIE.CLASS_PREFIX + 'hover',
activeClass = PIE.CLASS_PREFIX + 'active',
focusClass = PIE.CLASS_PREFIX + 'focus',
Expand All @@ -3931,8 +3950,10 @@ PIE.Element = (function() {
var classes = dummyArray.slice.call( arguments, 1 ),
i = classes.length;
setTimeout( function() {
while( i-- ) {
addClass( el, classes[ i ] );
if( el ) {
while( i-- ) {
addClass( el, classes[ i ] );
}
}
}, 0 );
}
Expand All @@ -3941,8 +3962,10 @@ PIE.Element = (function() {
var classes = dummyArray.slice.call( arguments, 1 ),
i = classes.length;
setTimeout( function() {
while( i-- ) {
removeClass( el, classes[ i ] );
if( el ) {
while( i-- ) {
removeClass( el, classes[ i ] );
}
}
}, 0 );
}
Expand Down Expand Up @@ -3973,6 +3996,8 @@ PIE.Element = (function() {
ieDocMode = PIE.ieDocMode,
cs = el.currentStyle,
lazy = cs.getAttribute( lazyInitCssProp ) === 'true',
trackActive = cs.getAttribute( trackActiveCssProp ) !== 'false',
trackHover = cs.getAttribute( trackHoverCssProp ) !== 'false',
childRenderers;

// Polling for size/position changes: default to on in IE8, off otherwise, overridable by -pie-poll
Expand Down Expand Up @@ -4070,9 +4095,15 @@ PIE.Element = (function() {
}
addListener( el, 'onresize', handleMoveOrResize );
addListener( el, 'onpropertychange', propChanged );
addListener( el, 'onmouseenter', mouseEntered );
addListener( el, 'onmouseleave', mouseLeft );
addListener( el, 'onmousedown', mousePressed );
if( trackHover ) {
addListener( el, 'onmouseenter', mouseEntered );
}
if( trackHover || trackActive ) {
addListener( el, 'onmouseleave', mouseLeft );
}
if( trackActive ) {
addListener( el, 'onmousedown', mousePressed );
}
if( el.tagName in PIE.focusableElements ) {
addListener( el, 'onfocus', focused );
addListener( el, 'onblur', blurred );
Expand Down Expand Up @@ -4449,17 +4480,21 @@ PIE[ 'detach' ] = function( el ) {
var el = element;

function init() {
var PIE = window[ 'PIE' ];
if( PIE && doc.media !== 'print' ) { // IE strangely attaches a second copy of the behavior to elements when printing
PIE['attach']( el );
if ( doc.media !== 'print' ) { // IE strangely attaches a second copy of the behavior to elements when printing
var PIE = window[ 'PIE' ];
if( PIE ) {
PIE['attach']( el );
}
}
}

function cleanup() {
var PIE = window[ 'PIE' ];
if (PIE) {
PIE['detach']( el );
PIE = el = 0;
if ( doc.media !== 'print' ) {
var PIE = window[ 'PIE' ];
if (PIE) {
PIE['detach']( el );
el = 0;
}
}
}

Expand Down
Loading