summaryrefslogtreecommitdiff
path: root/framework/Web/UI/ActiveControls/TActiveButton.php
diff options
context:
space:
mode:
Diffstat (limited to 'framework/Web/UI/ActiveControls/TActiveButton.php')
-rw-r--r--framework/Web/UI/ActiveControls/TActiveButton.php106
1 files changed, 9 insertions, 97 deletions
diff --git a/framework/Web/UI/ActiveControls/TActiveButton.php b/framework/Web/UI/ActiveControls/TActiveButton.php
index da5ec5ad..3343d7fe 100644
--- a/framework/Web/UI/ActiveControls/TActiveButton.php
+++ b/framework/Web/UI/ActiveControls/TActiveButton.php
@@ -6,11 +6,6 @@
class TActiveButton extends TButton implements ICallbackEventHandler
{
/**
- * @var TCallbackClientSideOptions client-side options.
- */
- private $_clientSide;
-
- /**
* Creates a new callback control, sets the adapter to
* TActiveControlAdapter. If you override this class, be sure to set the
* adapter appropriately by, for example, by calling this constructor.
@@ -22,29 +17,13 @@ class TActiveButton extends TButton implements ICallbackEventHandler
}
/**
- * @param boolean true to allow fine grain callback updates.
+ * @return TBaseActiveCallbackControl base callback options.
*/
- public function setAllowCallbackUpdate($value)
+ public function getActiveControl()
{
- $this->setViewState('CallbackUpdate', TPropertyValue::ensureBoolean($value), true);
+ return $this->getAdapter()->getActiveControl();
}
-
- /**
- * @return true to allow fine grain callback updates.
- */
- public function getAllowCallbackUpdate()
- {
- return $this->getViewState('CallbackUpdate', true);
- }
-
- /**
- * @return true if can update changes on the client-side during callback.
- */
- protected function canUpdateClientSide()
- {
- return $this->getIsInitialized() && $this->getAllowCallbackUpdate();
- }
-
+
/**
* Raises the callback event. This method is required by {@link
* ICallbackEventHandler} interface. If {@link getCausesValidation
@@ -78,89 +57,22 @@ class TActiveButton extends TButton implements ICallbackEventHandler
public function setText($value)
{
parent::setText($value);
- if($this->canUpdateClientSide())
+ if($this->getActiveControl()->canUpdateClientSide())
$this->getPage()->getCallbackClient()->setAttribute($this, 'value', $value);
}
-
- /**
- * Callback client-side options can be set by setting the properties of
- * the ClientSide property. E.g. <com:TCallback ClientSide.OnSuccess="..." />
- * See {@link TCallbackClientSideOptions} for details on the properties of
- * ClientSide.
- * @return TCallbackClientSideOptions client-side callback options.
- */
- public function getClientSide()
- {
- if(is_null($this->_clientSide))
- $this->_clientSide = $this->createClientSideOptions();
- return $this->_clientSide;
- }
-
- /**
- * @return TCallbackClientSideOptions callback client-side options.
- */
- protected function createClientSideOptions()
- {
- if(($id=$this->getCallbackOptions())!=='' && ($control=$this->findControl($id))!==null)
- {
- if($control instanceof TCallbackOptions)
- return clone($control->getClientSide());
- }
- return new TCallbackClientSideOptions;
- }
-
- /**
- * Sets the ID of a TCallbackOptions component to duplicate the client-side
- * options for this control. The {@link getClientSide ClientSide}
- * subproperties has precendent over the CallbackOptions property.
- * @param string ID of a TCallbackOptions control from which ClientSide
- * options are cloned.
- */
- public function setCallbackOptions($value)
- {
- $this->setViewState('CallbackOptions', $value,'');
- }
-
- /**
- * @return string ID of a TCallbackOptions control from which ClientSide
- * options are cloned.
- */
- public function getCallbackOptions()
- {
- return $this->getViewState('CallbackOptions','');
- }
/**
* Renders the callback control javascript statement.
*/
protected function renderClientControlScript($writer)
{
- $writer->addAttribute('id',$this->getClientID());
- $cs = $this->getPage()->getClientScript();
- $cs->registerCallbackControl(get_class($this),$this->getCallbackOptions());
}
- /**
- * @return array list of callback options.
- */
- protected function getCallbackClientSideOptions()
- {
- return array_merge($this->getPostBackOptions(),
- $this->getClientSide()->getOptions()->toArray());
- }
-
- /**
- * Returns the javascript statement to invoke a callback request for this
- * control. Additional options for callback can be set via subproperties of
- * {@link getClientSide ClientSide} property. E.g. ClientSide.OnSuccess="..."
- * @param TControl callback handler control, use current object if null.
- * @return string javascript statement to invoke a callback.
- */
- public function getCallbackReference($control=null)
+ protected function addAttributesToRender($writer)
{
- $client = $this->getPage()->getClientScript();
- $object = is_null($control) ? $this : $control;
- return $client->getCallbackReference($object, $this->getCallbackClientSideOptions());
+ parent::addAttributesToRender($writer);
+ $writer->addAttribute('id',$this->getClientID());
+ $this->getActiveControl()->registerCallbackClientScript($this->getPostBackOptions());
}
}