PDF rausgenommen
This commit is contained in:
179
msd2/tracking/piwik/core/View/UIControl.php
Normal file
179
msd2/tracking/piwik/core/View/UIControl.php
Normal file
@ -0,0 +1,179 @@
|
||||
<?php
|
||||
/**
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
*
|
||||
*/
|
||||
namespace Piwik\View;
|
||||
|
||||
use Exception;
|
||||
use Piwik\View;
|
||||
|
||||
/**
|
||||
* Base type of UI controls.
|
||||
*
|
||||
* The JavaScript companion class can be found in plugins/CoreHome/javascripts/uiControl.js.
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
class UIControl extends \Piwik\View
|
||||
{
|
||||
/**
|
||||
* The Twig template file that generates the control's HTML.
|
||||
*
|
||||
* Derived classes must set this constant.
|
||||
*/
|
||||
const TEMPLATE = '';
|
||||
|
||||
/**
|
||||
* The CSS class that is used to map the root element of this control with the JavaScript class.
|
||||
*
|
||||
* This field must be set prior to rendering.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $cssIdentifier = null;
|
||||
|
||||
/**
|
||||
* The name of the JavaScript class that handles the behavior of this control.
|
||||
*
|
||||
* This field must be set prior to rendering.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $jsClass = null;
|
||||
|
||||
/**
|
||||
* The JavaScript module that contains the JavaScript class.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $jsNamespace = 'piwik/UI';
|
||||
|
||||
/**
|
||||
* Extra CSS class(es) for the root element.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $cssClass = "";
|
||||
|
||||
/**
|
||||
* HTML Attributes for the root element
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $htmlAttributes = array();
|
||||
|
||||
/**
|
||||
* The inner view that renders the actual control content.
|
||||
*
|
||||
* @var View
|
||||
*/
|
||||
private $innerView = null;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->innerView = new View(static::TEMPLATE);
|
||||
|
||||
parent::__construct("@CoreHome\_uiControl");
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a variable. See {@link View::__set()}.
|
||||
*/
|
||||
public function __set($key, $val)
|
||||
{
|
||||
$this->innerView->__set($key, $val);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a view variable. See {@link View::__get()}.
|
||||
*/
|
||||
public function &__get($key)
|
||||
{
|
||||
return $this->innerView->__get($key);
|
||||
}
|
||||
|
||||
public function __isset($key)
|
||||
{
|
||||
return isset($this->innerView->templateVars[$key]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders the control view within a containing <div> that is used by the UIControl JavaScript
|
||||
* class.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function render()
|
||||
{
|
||||
if ($this->cssIdentifier === null) {
|
||||
throw new Exception("All UIControls must set a cssIdentifier property");
|
||||
}
|
||||
|
||||
if ($this->jsClass === null) {
|
||||
throw new Exception("All UIControls must set a jsClass property");
|
||||
}
|
||||
|
||||
return parent::render();
|
||||
}
|
||||
|
||||
/**
|
||||
* See {@link View::getTemplateVars()}.
|
||||
*/
|
||||
public function getTemplateVars($override = array())
|
||||
{
|
||||
$this->templateVars['implView'] = $this->innerView;
|
||||
$this->templateVars['cssIdentifier'] = $this->cssIdentifier;
|
||||
$this->templateVars['cssClass'] = $this->cssClass;
|
||||
$this->templateVars['jsClass'] = $this->jsClass;
|
||||
$this->templateVars['htmlAttributes'] = $this->htmlAttributes;
|
||||
$this->templateVars['jsNamespace'] = $this->jsNamespace;
|
||||
$this->templateVars['implOverride'] = $override;
|
||||
|
||||
$innerTemplateVars = $this->innerView->getTemplateVars($override);
|
||||
|
||||
$this->templateVars['clientSideProperties'] = array();
|
||||
foreach ($this->getClientSideProperties() as $name) {
|
||||
$this->templateVars['clientSideProperties'][$name] = $innerTemplateVars[$name];
|
||||
}
|
||||
|
||||
$this->templateVars['clientSideParameters'] = array();
|
||||
foreach ($this->getClientSideParameters() as $name) {
|
||||
$this->templateVars['clientSideParameters'][$name] = $innerTemplateVars[$name];
|
||||
}
|
||||
|
||||
return parent::getTemplateVars($override);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the array of property names whose values are passed to the UIControl JavaScript class.
|
||||
*
|
||||
* Should be overriden by descendants.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getClientSideProperties()
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of property names whose values are passed to the UIControl JavaScript class.
|
||||
* These values differ from those in {@link $clientSideProperties} in that they are meant to passed as
|
||||
* request parameters when the JavaScript code makes an AJAX request.
|
||||
*
|
||||
* Should be overriden by descendants.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getClientSideParameters()
|
||||
{
|
||||
return array();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user