From d860219f366a8fbe63b03d26c69525d4e6bd4f3a Mon Sep 17 00:00:00 2001 From: "Christophe.Boulain" <> Date: Mon, 15 Feb 2010 09:20:35 +0000 Subject: Merge from r2765 (and some others) 3.1 Added TActiveTableRow QST page Corrected an uninitialized array in TScaffoldBase --- .../Data/ActiveRecord/Scaffold/TScaffoldBase.php | 3 +- framework/Exceptions/messages/messages-fr.txt | 6 +++ framework/Exceptions/messages/messages.txt | 1 + framework/TApplication.php | 2 +- .../source/prado/activecontrols/inlineeditor.js | 2 + framework/Web/Services/TPageService.php | 24 ++++++++++ .../Web/UI/ActiveControls/TInPlaceTextBox.php | 2 +- framework/Web/UI/TPage.php | 13 +++++- framework/Web/UI/WebControls/TFileUpload.php | 43 ++++++++++-------- framework/prado-cli.php | 53 ++++++++++++++++++++++ framework/pradolite.php | 4 +- 11 files changed, 126 insertions(+), 27 deletions(-) (limited to 'framework') diff --git a/framework/Data/ActiveRecord/Scaffold/TScaffoldBase.php b/framework/Data/ActiveRecord/Scaffold/TScaffoldBase.php index 9c548308..b41a593e 100644 --- a/framework/Data/ActiveRecord/Scaffold/TScaffoldBase.php +++ b/framework/Data/ActiveRecord/Scaffold/TScaffoldBase.php @@ -4,7 +4,7 @@ * * @author Wei Zhuo * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2008 PradoSoft + * @copyright Copyright © 2005-2008 PradoSoft * @license http://www.pradosoft.com/license/ * @version $Id$ * @package System.Data.ActiveRecord.Scaffold @@ -65,6 +65,7 @@ abstract class TScaffoldBase extends TTemplateControl */ protected function getRecordPkValues($record) { + $data=array(); foreach($this->getTableInfo()->getColumns() as $name=>$column) { if($column->getIsPrimaryKey()) diff --git a/framework/Exceptions/messages/messages-fr.txt b/framework/Exceptions/messages/messages-fr.txt index 5dce3812..d6785fdf 100644 --- a/framework/Exceptions/messages/messages-fr.txt +++ b/framework/Exceptions/messages/messages-fr.txt @@ -409,3 +409,9 @@ feedservice_id_required = TFeedService requires 'id' attribute in its feed e feedservice_feedtype_invalid = The class feed '{0}' must implement IFeedContentProvider interface. feedservice_class_required = TFeedService requires 'class' attribute in its feed elements. feedservice_feed_unknown = Unknown feed '{0}' requested. + +tactivetablecell_control_outoftable = {0} '{1}' must be enclosed within a TTableRow control. +tactivetablecell_control_notincollection = {0} '{1}' no member of the TTableCellCollection of the parent TTableRow control. + +tactivetablerow_control_outoftable = {0} '{1}' must be enclosed within a TTable control. +tactivetablerow_control_notincollection = {0} '{1}' no member of the TTableRowCollection of the parent TTable control. \ No newline at end of file diff --git a/framework/Exceptions/messages/messages.txt b/framework/Exceptions/messages/messages.txt index 402b3252..b20c0f8b 100644 --- a/framework/Exceptions/messages/messages.txt +++ b/framework/Exceptions/messages/messages.txt @@ -201,6 +201,7 @@ page_control_outofform = {0} '{1}' must be enclosed within TForm. page_head_duplicated = A page can contain at most one THead. page_head_required = A THead control is needed in page template in order to render CSS and js in the HTML head section. page_statepersister_invalid = Page state persister must implement IPageStatePersister interface. +page_csmanagerclass_invalid = ClientScriptManager class '{0}' must be an instance of TClientScriptManager. csmanager_pradoscript_invalid = Unknown Prado script library name '{0}'. csmanager_invalid_packages = Unkownn packages '{1}' for javascript packages defined in '{0}'. Valid packages are '{2}'. diff --git a/framework/TApplication.php b/framework/TApplication.php index d9298d90..22c871f7 100644 --- a/framework/TApplication.php +++ b/framework/TApplication.php @@ -1468,7 +1468,7 @@ class TApplicationConfiguration extends TComponent break; } default: - throw new TConfigurationException('appconfig_paths_invalid',$tagName); + throw new TConfigurationException('appconfig_paths_invalid',$element->getTagName()); } } } diff --git a/framework/Web/Javascripts/source/prado/activecontrols/inlineeditor.js b/framework/Web/Javascripts/source/prado/activecontrols/inlineeditor.js index 052a18b0..4d0facc2 100644 --- a/framework/Web/Javascripts/source/prado/activecontrols/inlineeditor.js +++ b/framework/Web/Javascripts/source/prado/activecontrols/inlineeditor.js @@ -110,6 +110,8 @@ Prado.WebUI.TInPlaceTextBox = Base.extend( { if(this.options.MaxLength > 0) options['maxlength'] = this.options.MaxLength; + if(this.options.Columns > 0) + options['size'] = this.options.Columns; this.editField = INPUT(options); } else diff --git a/framework/Web/Services/TPageService.php b/framework/Web/Services/TPageService.php index e4f9804c..f36d10cd 100644 --- a/framework/Web/Services/TPageService.php +++ b/framework/Web/Services/TPageService.php @@ -104,6 +104,11 @@ class TPageService extends TService * @var string base path class in namespace format */ private $_basePageClass='TPage'; + /** + * @var string clientscript manager class in namespace format + * @since 3.1.7 + */ + private $_clientScriptManagerClass='System.Web.UI.TClientScriptManager'; /** * @var string default page */ @@ -426,6 +431,25 @@ class TPageService extends TService return $this->_basePageClass; } + /** + * Sets the clientscript manager class (in namespace format). + * @param string class name + * @since 3.1.7 + */ + public function setClientScriptManagerClass($value) + { + $this->_clientScriptManagerClass=$value; + } + + /** + * @return string clientscript manager class in namespace format. Defaults to 'System.Web.UI.TClientScriptManager'. + * @since 3.1.7 + */ + public function getClientScriptManagerClass() + { + return $this->_clientScriptManagerClass; + } + /** * Runs the service. * This will create the requested page, initializes it with the property values diff --git a/framework/Web/UI/ActiveControls/TInPlaceTextBox.php b/framework/Web/UI/ActiveControls/TInPlaceTextBox.php index b8dd666b..a82ee4ec 100644 --- a/framework/Web/UI/ActiveControls/TInPlaceTextBox.php +++ b/framework/Web/UI/ActiveControls/TInPlaceTextBox.php @@ -218,9 +218,9 @@ class TInPlaceTextBox extends TActiveTextBox $options['ExternalControl'] = $this->getExternalControlID(); $options['AutoHide'] = $this->getAutoHideTextBox() == false ? '' : true; $options['AutoPostBack'] = $this->getAutoPostBack() == false ? '' : true; + $options['Columns'] = $this->getColumns(); if($this->getTextMode()==='MultiLine') { - $options['Columns'] = $this->getColumns(); $options['Rows'] = $this->getRows(); $options['Wrap'] = $this->getWrap()== false ? '' : true; } diff --git a/framework/Web/UI/TPage.php b/framework/Web/UI/TPage.php index 4681f876..4a2ea474 100644 --- a/framework/Web/UI/TPage.php +++ b/framework/Web/UI/TPage.php @@ -586,8 +586,17 @@ class TPage extends TTemplateControl */ public function getClientScript() { - if(!$this->_clientScript) - $this->_clientScript=new TClientScriptManager($this); + if(!$this->_clientScript) { + $className = $classPath = $this->getService()->getClientScriptManagerClass(); + Prado::using($className); + if(($pos=strrpos($className,'.'))!==false) + $className=substr($className,$pos+1); + + if(!class_exists($className,false) || ($className!=='TClientScriptManager' && !is_subclass_of($className,'TClientScriptManager'))) + throw new THttpException(404,'page_csmanagerclass_invalid',$classPath); + + $this->_clientScript=new $className($this); + } return $this->_clientScript; } diff --git a/framework/Web/UI/WebControls/TFileUpload.php b/framework/Web/UI/WebControls/TFileUpload.php index 6658e93d..fbd14703 100644 --- a/framework/Web/UI/WebControls/TFileUpload.php +++ b/framework/Web/UI/WebControls/TFileUpload.php @@ -4,7 +4,7 @@ * * @author Marcus Nyeholt , Qiang Xue * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2008 PradoSoft + * @copyright Copyright © 2005-2008 PradoSoft * @license http://www.pradosoft.com/license/ * @version $Id$ * @package System.Web.UI.WebControls @@ -59,7 +59,7 @@ class TFileUpload extends TWebControl implements IPostBackDataHandler, IValidata */ private $_errorCode=UPLOAD_ERR_NO_FILE; private $_dataChanged=false; - private $_isValid=true; + private $_isValid=true; /** * @return string tag name of the file upload control @@ -80,6 +80,9 @@ class TFileUpload extends TWebControl implements IPostBackDataHandler, IValidata parent::addAttributesToRender($writer); $writer->addAttribute('type','file'); $writer->addAttribute('name',$this->getUniqueID()); + $isEnabled=$this->getEnabled(true); + if(!$isEnabled && $this->getEnabled()) // in this case parent will not render 'disabled' + $writer->addAttribute('disabled','disabled'); } /** @@ -256,23 +259,23 @@ class TFileUpload extends TWebControl implements IPostBackDataHandler, IValidata { return $this->getFileName(); } - - /** - * Returns true if this control validated successfully. - * Defaults to true. - * @return bool wether this control validated successfully. - */ - public function getIsValid() - { - return $this->_isValid; - } - /** - * @param bool wether this control is valid. - */ - public function setIsValid($value) - { - $this->_isValid=TPropertyValue::ensureBoolean($value); - } - + + /** + * Returns true if this control validated successfully. + * Defaults to true. + * @return bool wether this control validated successfully. + */ + public function getIsValid() + { + return $this->_isValid; + } + /** + * @param bool wether this control is valid. + */ + public function setIsValid($value) + { + $this->_isValid=TPropertyValue::ensureBoolean($value); + } + } diff --git a/framework/prado-cli.php b/framework/prado-cli.php index 9b9153c3..f9185e6b 100755 --- a/framework/prado-cli.php +++ b/framework/prado-cli.php @@ -43,6 +43,7 @@ PradoCommandLineInterpreter::getInstance()->addActionClass('PradoCommandLineCrea PradoCommandLineInterpreter::getInstance()->addActionClass('PradoCommandLinePhpShell'); PradoCommandLineInterpreter::getInstance()->addActionClass('PradoCommandLineUnitTest'); PradoCommandLineInterpreter::getInstance()->addActionClass('PradoCommandLineActiveRecordGen'); +PradoCommandLineInterpreter::getInstance()->addActionClass('PradoCommandLineConvertConfig'); //run it; PradoCommandLineInterpreter::getInstance()->run($_SERVER['argv']); @@ -730,6 +731,58 @@ EOD; } } +/** + * Convert prado 3.1 XML configuration to new prado 3.2 PHP array configuration + * + * @author Christophe Boulain + * @version $Id$ + * @since 3.2 + */ +class PradoCommandLineConvertConfig extends PradoCommandLineAction +{ + + protected $action = 'xmltophp'; + protected $parameters = array('xml'); + protected $optional = array('output'); + protected $description = 'Convert a prado xml configuration file () to a php array. '; + + public function performAction($args) + { + $xml=realpath($args[1]); + if (!is_file($xml)) + { + echo "Unable to find {$args[1]} file.\n"; + return true; + } + $output=$args[2]; + if ($output===null) + $output=dirname($xml).DIRECTORY_SEPARATOR.basename($xml, 'xml')."php"; + if (!is_writable(realpath(dirname($output)))) + { + echo "Can't write new config file {$output}\n"; + return true; + } + $config=$this->parseXML($xml); + print_r($config); + + return true; + } + + /** + * Open and parse an xml config file. + * @param string $xml the filepath of xml file + * @return array + */ + protected function parseXML($xml) + { + $dom=new DOMDocument(); + $dom->load($xml); + print_r ($dom->childNodes); + return ; + } + +} + //run PHP shell if(class_exists('PHP_Shell_Commands', false)) { diff --git a/framework/pradolite.php b/framework/pradolite.php index 6d5b13fd..726a5343 100644 --- a/framework/pradolite.php +++ b/framework/pradolite.php @@ -1,7 +1,7 @@