- <?php
- /**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
-
- namespace Zend\ProgressBar\Adapter;
-
- use Zend\Json\Json;
-
- /**
- * Zend\ProgressBar\Adapter\JsPush offers a simple method for updating a
- * progressbar in a browser.
- */
- class JsPush extends AbstractAdapter
- {
- /**
- * Name of the JavaScript method to call on update
- *
- * @var string
- */
- protected $updateMethodName = 'Zend\ProgressBar\ProgressBar\Update';
-
- /**
- * Name of the JavaScript method to call on finish
- *
- * @var string
- */
- protected $finishMethodName;
-
- /**
- * Set the update method name
- *
- * @param string $methodName
- * @return \Zend\ProgressBar\Adapter\JsPush
- */
- public function setUpdateMethodName($methodName)
- {
- $this->updateMethodName = $methodName;
-
- return $this;
- }
-
- /**
- * Set the finish method name
- *
- * @param string $methodName
- * @return \Zend\ProgressBar\Adapter\JsPush
- */
- public function setFinishMethodName($methodName)
- {
- $this->finishMethodName = $methodName;
-
- return $this;
- }
-
- /**
- * Defined by Zend\ProgressBar\Adapter\AbstractAdapter
- *
- * @param float $current Current progress value
- * @param float $max Max progress value
- * @param float $percent Current percent value
- * @param int $timeTaken Taken time in seconds
- * @param int $timeRemaining Remaining time in seconds
- * @param string $text Status text
- * @return void
- */
- public function notify($current, $max, $percent, $timeTaken, $timeRemaining, $text)
- {
- $arguments = array(
- 'current' => $current,
- 'max' => $max,
- 'percent' => ($percent * 100),
- 'timeTaken' => $timeTaken,
- 'timeRemaining' => $timeRemaining,
- 'text' => $text
- );
-
- $data = '<script type="text/javascript">'
- . 'parent.' . $this->updateMethodName . '(' . Json::encode($arguments) . ');'
- . '</script>';
-
- // Output the data
- $this->_outputData($data);
- }
-
- /**
- * Defined by Zend\ProgressBar\Adapter\AbstractAdapter
- *
- * @return void
- */
- public function finish()
- {
- if ($this->finishMethodName === null) {
- return;
- }
-
- $data = '<script type="text/javascript">'
- . 'parent.' . $this->finishMethodName . '();'
- . '</script>';
-
- $this->_outputData($data);
- }
-
- /**
- * Outputs given data the user agent.
- *
- * This split-off is required for unit-testing.
- *
- * @param string $data
- * @return void
- */
- protected function _outputData($data)
- {
- // 1024 padding is required for Safari, while 256 padding is required
- // for Internet Explorer. The <br /> is required so Safari actually
- // executes the <script />
- echo str_pad($data . '<br />', 1024, ' ', STR_PAD_RIGHT) . "\n";
-
- flush();
- ob_flush();
- }
- }
# |
Change |
User |
Description |
Committed |
|
#1
|
18334 |
Liz Lam |
initial add of jambox |
9 years ago
|
|