diff options
author | ctrlaltca <ctrlaltca@gmail.com> | 2014-08-26 16:59:21 +0200 |
---|---|---|
committer | ctrlaltca <ctrlaltca@gmail.com> | 2014-08-26 16:59:21 +0200 |
commit | 74b31be9515eddfa63005d6760614badfaba9fea (patch) | |
tree | 47c952901dcb5eccd6dd8b7c6ee7e0b6bf176510 /framework/Web/Javascripts | |
parent | 2b11341614ac4a15be697fa8acad07055154ac54 (diff) | |
parent | 0c5026b55cde5c104f10686afd8b441568175d38 (diff) |
Backports for Prado 3.2.4
Diffstat (limited to 'framework/Web/Javascripts')
5 files changed, 55 insertions, 25 deletions
diff --git a/framework/Web/Javascripts/TJavaScript.php b/framework/Web/Javascripts/TJavaScript.php index 0f6fef1c..d7703bfd 100644 --- a/framework/Web/Javascripts/TJavaScript.php +++ b/framework/Web/Javascripts/TJavaScript.php @@ -4,9 +4,8 @@ * * @author Wei Zhuo<weizhuo[at]gmail[dot]com> * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2013 PradoSoft + * @copyright Copyright © 2005-2014 PradoSoft * @license http://www.pradosoft.com/license/ - * @version $Id: TJavaScript.php 3291 2013-05-09 17:44:58Z ctrlaltca $ * @package System.Web.Javascripts */ @@ -17,7 +16,6 @@ * functions. * * @author Wei Zhuo<weizhuo[at]gmail[dot]com> - * @version $Id: TJavaScript.php 3291 2013-05-09 17:44:58Z ctrlaltca $ * @package System.Web.Javascripts * @since 3.0 */ @@ -206,7 +204,6 @@ class TJavaScript else return ''; } - /** * Encodes a PHP variable into javascript string. * This method invokes json_encode to perform the encoding. @@ -215,16 +212,32 @@ class TJavaScript */ public static function jsonEncode($value, $options = 0) { - if (is_string($value) && - ($g=Prado::getApplication()->getGlobalization(false))!==null && - strtoupper($enc=$g->getCharset())!='UTF-8') - $value=iconv($enc, 'UTF-8', $value); + if (($g=Prado::getApplication()->getGlobalization(false))!==null && + strtoupper($enc=$g->getCharset())!='UTF-8') { + self::convertToUtf8($value, $enc); + } + $s = @json_encode($value,$options); self::checkJsonError(); return $s; } /** + * Encodes an string or the content of an array to UTF8 + * @param string|array|mixed $value + * @param string $sourceEncoding + */ + private static function convertToUtf8(&$value, $sourceEncoding) { + if(is_string($value)) + $value=iconv($sourceEncoding, 'UTF-8', $value); + else if (is_array($value)) + { + foreach($value as &$element) + self::convertToUtf8($element, $sourceEncoding); + } + } + + /** * Decodes a javascript string into PHP variable. * This method invokes json_decode to perform the decoding. * @param string string to be decoded @@ -238,7 +251,7 @@ class TJavaScript self::checkJsonError(); return $s; } - + private static function checkJsonError() { switch ($err = json_last_error()) @@ -271,7 +284,7 @@ class TJavaScript /** * Minimize the size of a javascript script. * This method is based on Douglas Crockford's JSMin. - * @param string code that you want to minimzie + * @param string code that you want to minimzie * @return minimized version of the code */ public static function JSMin($code) diff --git a/framework/Web/Javascripts/source/prado/activecontrols/ajax3.js b/framework/Web/Javascripts/source/prado/activecontrols/ajax3.js index e19f5d49..648f3e76 100644 --- a/framework/Web/Javascripts/source/prado/activecontrols/ajax3.js +++ b/framework/Web/Javascripts/source/prado/activecontrols/ajax3.js @@ -1154,7 +1154,13 @@ if (typeof(Prado.AssetManagerClass)=="undefined") { createStyleSheetCode: function(code) { var asset = document.createElement('style'); asset.setAttribute('type', 'text/css'); - asset.innerText = code; + + if(asset.styleSheet) + asset.styleSheet.cssText = code; // IE7+IE8 + else { + var cssCodeNode = document.createTextNode(code); + asset.appendChild(cssCodeNode); + } var head = document.getElementsByTagName('head')[0]; head.appendChild(asset); diff --git a/framework/Web/Javascripts/source/prado/controls/slider.js b/framework/Web/Javascripts/source/prado/controls/slider.js index 2e26ee51..ba65de3b 100644 --- a/framework/Web/Javascripts/source/prado/controls/slider.js +++ b/framework/Web/Javascripts/source/prado/controls/slider.js @@ -18,17 +18,9 @@ Prado.WebUI.TSlider = Class.extend(Prado.WebUI.PostBackControl, this.maximum = this.options.maximum || this.range.end; this.minimum = this.options.minimum || this.range.start; this.hiddenField=$(this.options.ID+'_1'); + this.trackInitialized=false; - // Will be used to align the handle onto the track, if necessary - this.alignX = parseInt(this.options.alignX || - this.track.offsetLeft); - this.alignY = parseInt(this.options.alignY || - this.track.offsetTop); - - this.trackLength = this.maximumOffset() - this.minimumOffset(); - this.handleLength = this.isVertical() ? - (this.handle.offsetHeight != 0 ? - this.handle.offsetHeight : this.handles.style.height.replace(/px$/,"")) : - (this.handle.offsetWidth != 0 ? this.handle.offsetWidth : - this.handle.style.width.replace(/px$/,"")); + this.initializeTrack(); this.active = false; this.dragging = false; @@ -63,8 +55,26 @@ Prado.WebUI.TSlider = Class.extend(Prado.WebUI.PostBackControl, if(this.options['AutoPostBack']==true) this.observe(this.hiddenField, "change", Prado.PostBack.bindEvent(this,options)); - }, + + initializeTrack : function() + { + if(this.trackInitialized || !$(this.track).is(":visible")) + return; + + // Will be used to align the handle onto the track, if necessary + this.alignX = parseInt(this.options.alignX || - this.track.offsetLeft); + this.alignY = parseInt(this.options.alignY || - this.track.offsetTop); + + this.trackLength = this.maximumOffset() - this.minimumOffset(); + this.handleLength = this.isVertical() ? + (this.handle.offsetHeight != 0 ? + this.handle.offsetHeight : this.handles.style.height.replace(/px$/,"")) : + (this.handle.offsetWidth != 0 ? this.handle.offsetWidth : + this.handle.style.width.replace(/px$/,"")); + this.trackInitialized=true; + }, + setDisabled: function(){ this.disabled = true; @@ -151,6 +161,7 @@ Prado.WebUI.TSlider = Class.extend(Prado.WebUI.PostBackControl, startDrag: function(event) { if(Event.isLeftClick(event)) { + this.initializeTrack(); if(!this.disabled){ this.active = true; var handle = Event.element(event); @@ -223,4 +234,4 @@ Prado.WebUI.TSlider = Class.extend(Prado.WebUI.PostBackControl, } } -});
\ No newline at end of file +}); diff --git a/framework/Web/Javascripts/source/prado/prado.js b/framework/Web/Javascripts/source/prado/prado.js index 05f11dcd..1b3bd7c8 100644 --- a/framework/Web/Javascripts/source/prado/prado.js +++ b/framework/Web/Javascripts/source/prado/prado.js @@ -8,7 +8,7 @@ var Prado = * Version of Prado clientscripts * @var Version */ - Version: '3.2.3', + Version: '3.2.4', /** * Registry for Prado components diff --git a/framework/Web/Javascripts/source/prado/validator/validation3.js b/framework/Web/Javascripts/source/prado/validator/validation3.js index 0361389f..483c7ec2 100644 --- a/framework/Web/Javascripts/source/prado/validator/validation3.js +++ b/framework/Web/Javascripts/source/prado/validator/validation3.js @@ -979,7 +979,7 @@ Prado.WebUI.TBaseValidator = Class.create(Prado.WebUI.Control, if(!this.control) this.control = $(this.options.ControlToValidate); - if(!this.control || this.control.disabled) + if(!this.control || this.control.disabled || !this.control.descendantOf(document)) { this.isValid = true; return this.isValid; |