summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--framework/Collections/TAttributeCollection.php13
-rw-r--r--framework/Collections/TMap.php15
-rw-r--r--framework/TComponent.php23
-rw-r--r--framework/Web/UI/TControl.php15
-rw-r--r--framework/Web/UI/WebControls/TDataGridPagerStyle.php29
-rw-r--r--framework/Web/UI/WebControls/TFont.php17
-rw-r--r--framework/Web/UI/WebControls/TLabel.php2
-rw-r--r--framework/Web/UI/WebControls/TListItem.php29
-rw-r--r--framework/Web/UI/WebControls/TLiteral.php2
-rw-r--r--framework/Web/UI/WebControls/TPanelStyle.php21
-rw-r--r--framework/Web/UI/WebControls/TStyle.php61
-rw-r--r--framework/Web/UI/WebControls/TTextBox.php2
12 files changed, 208 insertions, 21 deletions
diff --git a/framework/Collections/TAttributeCollection.php b/framework/Collections/TAttributeCollection.php
index a0f14efd..14a94fbd 100644
--- a/framework/Collections/TAttributeCollection.php
+++ b/framework/Collections/TAttributeCollection.php
@@ -45,6 +45,19 @@ class TAttributeCollection extends TMap
private $_caseSensitive=false;
/**
+ * Returns an array with the names of all variables of this object that should NOT be serialized
+ * because their value is the default one or useless to be cached for the next page loads.
+ * Reimplement in derived classes to add new variables, but remember to also to call the parent
+ * implementation first.
+ */
+ protected function __getZappableSleepProps(&$exprops)
+ {
+ parent::__getZappableSleepProps($exprops);
+ if ($this->_caseSensitive===false)
+ $exprops[] = "\0TAttributeCollection\0_caseSensitive";
+ }
+
+ /**
* Returns a property value or an event handler list by property or event name.
* This method overrides the parent implementation by returning
* a key value if the key exists in the collection.
diff --git a/framework/Collections/TMap.php b/framework/Collections/TMap.php
index d610dce6..a356fe77 100644
--- a/framework/Collections/TMap.php
+++ b/framework/Collections/TMap.php
@@ -42,6 +42,21 @@ class TMap extends TComponent implements IteratorAggregate,ArrayAccess,Countable
private $_r=false;
/**
+ * Returns an array with the names of all variables of this object that should NOT be serialized
+ * because their value is the default one or useless to be cached for the next page loads.
+ * Reimplement in derived classes to add new variables, but remember to also to call the parent
+ * implementation first.
+ */
+ protected function __getZappableSleepProps(&$exprops)
+ {
+ parent::__getZappableSleepProps($exprops);
+ if ($this->_d===array())
+ $exprops[] = "\0TMap\0_d";
+ if ($this->_r===false)
+ $exprops[] = "\0TMap\0_r";
+ }
+
+ /**
* Constructor.
* Initializes the list with an array or an iterable object.
* @param array|Iterator the intial data. Default is null, meaning no initialization.
diff --git a/framework/TComponent.php b/framework/TComponent.php
index 5901f93d..c2f00696 100644
--- a/framework/TComponent.php
+++ b/framework/TComponent.php
@@ -1698,16 +1698,6 @@ class TComponent
}
/**
- * Do not call this method. This is a PHP magic method that will be called automatically
- * after any unserialization; it can perform reinitialization tasks on the object.
- */
- public function __wakeup()
- {
- if ($this->_e===null)
- $this->_e = array();
- }
-
- /**
* Returns an array with the names of all variables of that object that should be serialized.
* Do not call this method. This is a PHP magic method that will be called automatically
* prior to any serialization.
@@ -1717,6 +1707,18 @@ class TComponent
$a = (array)$this;
$a = array_keys($a);
$exprops = array();
+ $this->__getZappableSleepProps($exprops);
+ return array_diff($a, $exprops);
+ }
+
+ /**
+ * Returns an array with the names of all variables of this object that should NOT be serialized
+ * because their value is the default one or useless to be cached for the next page loads.
+ * Reimplement in derived classes to add new variables, but remember to also to call the parent
+ * implementation first.
+ */
+ protected function __getZappableSleepProps(&$exprops)
+ {
if($this->_listeningenabled===false)
$exprops[] = "\0TComponent\0_listeningenabled";
if($this->_behaviorsenabled===true)
@@ -1725,7 +1727,6 @@ class TComponent
$exprops[] = "\0TComponent\0_e";
if ($this->_m===null)
$exprops[] = "\0TComponent\0_m";
- return array_diff($a,$exprops);
}
}
diff --git a/framework/Web/UI/TControl.php b/framework/Web/UI/TControl.php
index 055b5521..afe1daa3 100644
--- a/framework/Web/UI/TControl.php
+++ b/framework/Web/UI/TControl.php
@@ -769,13 +769,19 @@ class TControl extends TApplicationComponent implements IRenderable, IBindable
{
if($this->_trackViewState)
{
- $this->_viewState[$key]=$value;
unset($this->_tempState[$key]);
+ if($value===$defaultValue)
+ unset($this->_viewState[$key]);
+ else
+ $this->_viewState[$key]=$value;
}
else
{
unset($this->_viewState[$key]);
- $this->_tempState[$key]=$value;
+ if($value===$defaultValue)
+ unset($this->_tempState[$key]);
+ else
+ $this->_tempState[$key]=$value;
}
}
@@ -1655,7 +1661,10 @@ class TControl extends TApplicationComponent implements IRenderable, IBindable
foreach($this->_rf[self::RF_CONTROLS] as $control)
{
if($control instanceof TControl)
- $state[$control->_id]=&$control->saveStateRecursive($needViewState);
+ {
+ if(count($tmp = &$control->saveStateRecursive($needViewState)))
+ $state[$control->_id]=$tmp;
+ }
}
}
if($needViewState && !empty($this->_viewState))
diff --git a/framework/Web/UI/WebControls/TDataGridPagerStyle.php b/framework/Web/UI/WebControls/TDataGridPagerStyle.php
index b96d0cd2..36d55ba9 100644
--- a/framework/Web/UI/WebControls/TDataGridPagerStyle.php
+++ b/framework/Web/UI/WebControls/TDataGridPagerStyle.php
@@ -33,6 +33,35 @@ class TDataGridPagerStyle extends TPanelStyle
private $_buttonType=null;
/**
+ * Returns an array with the names of all variables of this object that should NOT be serialized
+ * because their value is the default one or useless to be cached for the next page loads.
+ * Reimplement in derived classes to add new variables, but remember to also to call the parent
+ * implementation first.
+ */
+ protected function __getZappableSleepProps(&$exprops)
+ {
+ parent::__getZappableSleepProps($exprops);
+ if ($this->_mode===null)
+ $exprops[] = "\0TDataGridPagerStyle\0_mode";
+ if ($this->_nextText===null)
+ $exprops[] = "\0TDataGridPagerStyle\0_nextText";
+ if ($this->_prevText===null)
+ $exprops[] = "\0TDataGridPagerStyle\0_prevText";
+ if ($this->_firstText===null)
+ $exprops[] = "\0TDataGridPagerStyle\0_firstText";
+ if ($this->_lastText===null)
+ $exprops[] = "\0TDataGridPagerStyle\0_lastText";
+ if ($this->_buttonCount===null)
+ $exprops[] = "\0TDataGridPagerStyle\0_buttonCount";
+ if ($this->_position===null)
+ $exprops[] = "\0TDataGridPagerStyle\0_position";
+ if ($this->_visible===null)
+ $exprops[] = "\0TDataGridPagerStyle\0_visible";
+ if ($this->_buttonType===null)
+ $exprops[] = "\0TDataGridPagerStyle\0_buttonType";
+ }
+
+ /**
* @return TDataGridPagerMode pager mode. Defaults to TDataGridPagerMode::NextPrev.
*/
public function getMode()
diff --git a/framework/Web/UI/WebControls/TFont.php b/framework/Web/UI/WebControls/TFont.php
index 52a5db71..ab09c58e 100644
--- a/framework/Web/UI/WebControls/TFont.php
+++ b/framework/Web/UI/WebControls/TFont.php
@@ -54,6 +54,23 @@ class TFont extends TComponent
private $_size='';
/**
+ * Returns an array with the names of all variables of this object that should NOT be serialized
+ * because their value is the default one or useless to be cached for the next page loads.
+ * Reimplement in derived classes to add new variables, but remember to also to call the parent
+ * implementation first.
+ */
+ protected function __getZappableSleepProps(&$exprops)
+ {
+ parent::__getZappableSleepProps($exprops);
+ if ($this->_flags===0)
+ $exprops[] = "\0TFont\0_flags";
+ if ($this->_name==='')
+ $exprops[] = "\0TFont\0_name";
+ if ($this->_size==='')
+ $exprops[] = "\0TFont\0_size";
+ }
+
+ /**
* @return boolean whether the font is in bold face. Defaults to false.
*/
public function getBold()
diff --git a/framework/Web/UI/WebControls/TLabel.php b/framework/Web/UI/WebControls/TLabel.php
index bf43b4d2..28b0ffd4 100644
--- a/framework/Web/UI/WebControls/TLabel.php
+++ b/framework/Web/UI/WebControls/TLabel.php
@@ -102,7 +102,7 @@ class TLabel extends TWebControl implements IDataRenderer
*/
public function setText($value)
{
- $this->setViewState('Text',$value,'');
+ $this->setViewState('Text',TPropertyValue::ensureString($value),'');
}
/**
diff --git a/framework/Web/UI/WebControls/TListItem.php b/framework/Web/UI/WebControls/TListItem.php
index aec006db..5a9122d6 100644
--- a/framework/Web/UI/WebControls/TListItem.php
+++ b/framework/Web/UI/WebControls/TListItem.php
@@ -32,19 +32,19 @@ class TListItem extends TComponent
/**
* @var string text of the item
*/
- private $_text;
+ private $_text='';
/**
* @var string value of the item
*/
- private $_value;
+ private $_value='';
/**
* @var boolean whether the item is enabled
*/
- private $_enabled;
+ private $_enabled=true;
/**
* @var boolean whether the item is selected
*/
- private $_selected;
+ private $_selected=false;
/**
* Constructor.
@@ -62,6 +62,27 @@ class TListItem extends TComponent
}
/**
+ * Returns an array with the names of all variables of this object that should NOT be serialized
+ * because their value is the default one or useless to be cached for the next page loads.
+ * Reimplement in derived classes to add new variables, but remember to also to call the parent
+ * implementation first.
+ */
+ protected function __getZappableSleepProps(&$exprops)
+ {
+ parent::__getZappableSleepProps($exprops);
+ if ($this->_attributes===null)
+ $exprops[] = "\0TListItem\0_attributes";
+ if($this->_text==='')
+ $exprops[] = "\0TListItem\0_text";
+ if($this->_value==='')
+ $exprops[] = "\0TListItem\0_value";
+ if ($this->_enabled===true)
+ $exprops[] = "\0TListItem\0_enabled";
+ if ($this->_selected===false)
+ $exprops[] = "\0TListItem\0_selected";
+ }
+
+ /**
* @return boolean whether the item is enabled
*/
public function getEnabled()
diff --git a/framework/Web/UI/WebControls/TLiteral.php b/framework/Web/UI/WebControls/TLiteral.php
index f2306b4b..650ed070 100644
--- a/framework/Web/UI/WebControls/TLiteral.php
+++ b/framework/Web/UI/WebControls/TLiteral.php
@@ -45,7 +45,7 @@ class TLiteral extends TControl implements IDataRenderer
*/
public function setText($value)
{
- $this->setViewState('Text',$value,'');
+ $this->setViewState('Text',TPropertyValue::ensureString($value),'');
}
/**
diff --git a/framework/Web/UI/WebControls/TPanelStyle.php b/framework/Web/UI/WebControls/TPanelStyle.php
index 2e0f1a2a..a3558dc7 100644
--- a/framework/Web/UI/WebControls/TPanelStyle.php
+++ b/framework/Web/UI/WebControls/TPanelStyle.php
@@ -46,6 +46,27 @@ class TPanelStyle extends TStyle
private $_wrap=null;
/**
+ * Returns an array with the names of all variables of this object that should NOT be serialized
+ * because their value is the default one or useless to be cached for the next page loads.
+ * Reimplement in derived classes to add new variables, but remember to also to call the parent
+ * implementation first.
+ */
+ protected function __getZappableSleepProps(&$exprops)
+ {
+ parent::__getZappableSleepProps($exprops);
+ if ($this->_backImageUrl===null)
+ $exprops[] = "\0TPanelStyle\0_backImageUrl";
+ if ($this->_direction===null)
+ $exprops[] = "\0TPanelStyle\0_direction";
+ if ($this->_horizontalAlign===null)
+ $exprops[] = "\0TPanelStyle\0_horizontalAlign";
+ if ($this->_scrollBars===null)
+ $exprops[] = "\0TPanelStyle\0_scrollBars";
+ if ($this->_wrap===null)
+ $exprops[] = "\0TPanelStyle\0_wrap";
+ }
+
+ /**
* Adds attributes related to CSS styles to renderer.
* This method overrides the parent implementation.
* @param THtmlWriter the writer used for the rendering purpose
diff --git a/framework/Web/UI/WebControls/TStyle.php b/framework/Web/UI/WebControls/TStyle.php
index eb47f2f7..552a3786 100644
--- a/framework/Web/UI/WebControls/TStyle.php
+++ b/framework/Web/UI/WebControls/TStyle.php
@@ -47,6 +47,27 @@ class TStyle extends TComponent
private $_displayStyle='Fixed';
/**
+ * Returns an array with the names of all variables of this object that should NOT be serialized
+ * because their value is the default one or useless to be cached for the next page loads.
+ * Reimplement in derived classes to add new variables, but remember to also to call the parent
+ * implementation first.
+ */
+ protected function __getZappableSleepProps(&$exprops)
+ {
+ parent::__getZappableSleepProps($exprops);
+ if ($this->_fields===array())
+ $exprops[] = "\0TStyle\0_fields";
+ if($this->_font===null)
+ $exprops[] = "\0TStyle\0_font";
+ if($this->_class===null)
+ $exprops[] = "\0TStyle\0_class";
+ if ($this->_customStyle===null)
+ $exprops[] = "\0TStyle\0_customStyle";
+ if ($this->_displayStyle==='Fixed')
+ $exprops[] = "\0TStyle\0_displayStyle";
+ }
+
+ /**
* Constructor.
* @param TStyle style to copy from
*/
@@ -463,6 +484,29 @@ class TTableStyle extends TStyle
private $_borderCollapse=null;
/**
+ * Returns an array with the names of all variables of this object that should NOT be serialized
+ * because their value is the default one or useless to be cached for the next page loads.
+ * Reimplement in derived classes to add new variables, but remember to also to call the parent
+ * implementation first.
+ */
+ protected function __getZappableSleepProps(&$exprops)
+ {
+ parent::__getZappableSleepProps($exprops);
+ if ($this->_backImageUrl===null)
+ $exprops[] = "\0TTableStyle\0_backImageUrl";
+ if ($this->_horizontalAlign===null)
+ $exprops[] = "\0TTableStyle\0_horizontalAlign";
+ if ($this->_cellPadding===null)
+ $exprops[] = "\0TTableStyle\0_cellPadding";
+ if ($this->_cellSpacing===null)
+ $exprops[] = "\0TTableStyle\0_cellSpacing";
+ if ($this->_gridLines===null)
+ $exprops[] = "\0TTableStyle\0_gridLines";
+ if ($this->_borderCollapse===null)
+ $exprops[] = "\0TTableStyle\0_borderCollapse";
+ }
+
+ /**
* Sets the style attributes to default values.
* This method overrides the parent implementation by
* resetting additional TTableStyle specific attributes.
@@ -691,6 +735,23 @@ class TTableItemStyle extends TStyle
private $_wrap=null;
/**
+ * Returns an array with the names of all variables of this object that should NOT be serialized
+ * because their value is the default one or useless to be cached for the next page loads.
+ * Reimplement in derived classes to add new variables, but remember to also to call the parent
+ * implementation first.
+ */
+ protected function __getZappableSleepProps(&$exprops)
+ {
+ parent::__getZappableSleepProps($exprops);
+ if ($this->_horizontalAlign===null)
+ $exprops[] = "\0TTableItemStyle\0_horizontalAlign";
+ if ($this->_verticalAlign===null)
+ $exprops[] = "\0TTableItemStyle\0_verticalAlign";
+ if ($this->_wrap===null)
+ $exprops[] = "\0TTableItemStyle\0_wrap";
+ }
+
+ /**
* Sets the style attributes to default values.
* This method overrides the parent implementation by
* resetting additional TTableItemStyle specific attributes.
diff --git a/framework/Web/UI/WebControls/TTextBox.php b/framework/Web/UI/WebControls/TTextBox.php
index f3a0c166..cd7b1c57 100644
--- a/framework/Web/UI/WebControls/TTextBox.php
+++ b/framework/Web/UI/WebControls/TTextBox.php
@@ -478,7 +478,7 @@ class TTextBox extends TWebControl implements IPostBackDataHandler, IValidatable
*/
public function setText($value)
{
- $this->setViewState('Text',$value,'');
+ $this->setViewState('Text',TPropertyValue::ensureString($value),'');
$this->_safeText = null;
}