Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Added reponse object as property of View class View::$response. Refac…

…tored HtmlHelper::media() a bit.
  • Loading branch information...
commit c0690a3eff0a02f019a725dfdd16d62ce816bacd 1 parent c572756
@ADmad ADmad authored
View
1  lib/Cake/Test/Case/Utility/DebuggerTest.php
@@ -324,6 +324,7 @@ public function testExportVar() {
hasRendered => false
uuids => array()
request => null
+ response => object(CakeResponse) {}
elementCache => 'default'
int => (int) 2
float => (float) 1.333
View
51 lib/Cake/View/Helper/HtmlHelper.php
@@ -31,6 +31,13 @@
class HtmlHelper extends AppHelper {
/**
+ * Reference to the Response object
+ *
+ * @var CakeResponse
+ */
+ public $response;
+
+/**
* html tags used by this helper.
*
* @var array
@@ -174,6 +181,11 @@ class HtmlHelper extends AppHelper {
*/
public function __construct(View $View, $settings = array()) {
parent::__construct($View, $settings);
+ if (is_object($this->_View->response)) {
+ $this->response = $this->_View->response;
+ } else {
+ $this->response = new CakeResponse(array('charset' => Configure::read('App.encoding')));
+ }
if (!empty($settings['configFile'])) {
$this->loadConfig($settings['configFile']);
}
@@ -1029,45 +1041,38 @@ public function media($path, $options = array()) {
}
if (is_array($path)) {
- $response = null;
$sourceTags = '';
- foreach ($path as $source) {
+ foreach ($path as &$source) {
if (is_string($source)) {
$source = array(
'src' => $source,
);
}
if (!isset($source['type'])) {
- if ($response === null) {
- $response = new CakeResponse();
- }
$ext = pathinfo($source['src'], PATHINFO_EXTENSION);
- $source['type'] = $response->getMimeType($ext);
- }
- if ($type === null) {
- if (preg_match('#^video/#', $source['type'])) {
- $type = 'video';
- } else {
- $type = 'audio';
- }
+ $source['type'] = $this->response->getMimeType($ext);
}
$source['src'] = $this->assetUrl($source['src'], $options);
$sourceTags .= $this->useTag('tagselfclosing', 'source', $source);
}
+ unset($source);
$options['text'] = $sourceTags . $options['text'];
unset($options['fullBase']);
} else {
- if ($type === null) {
- $response = new CakeResponse();
- $mimeType = $response->getMimeType(pathinfo($path, PATHINFO_EXTENSION));
- if (preg_match('#^video/#', $mimeType)) {
- $type = 'video';
- } else {
- $type = 'audio';
- }
+ $options['src'] = $this->assetUrl($path, $options);
+ }
+
+ if ($type === null) {
+ if (is_array($path)) {
+ $mimeType = $path[0]['type'];
+ } else {
+ $mimeType = $this->response->getMimeType(pathinfo($path, PATHINFO_EXTENSION));
+ }
+ if (preg_match('#^video/#', $mimeType)) {
+ $type = 'video';
+ } else {
+ $type = 'audio';
}
- $path = $this->assetUrl($path, $options);
- $options['src'] = $path;
}
if (isset($options['poster'])) {
View
12 lib/Cake/View/MediaView.php
@@ -64,24 +64,12 @@ class MediaView extends View {
protected $_compressionEnabled = false;
/**
- * Reference to the Response object responsible for sending the headers
- *
- * @var CakeResponse
- */
- public $response = null;
-
-/**
* Constructor
*
* @param Controller $controller The controller with viewVars
*/
public function __construct($controller = null) {
parent::__construct($controller);
- if (is_object($controller) && isset($controller->response)) {
- $this->response = $controller->response;
- } else {
- $this->response = new CakeResponse;
- }
}
/**
View
13 lib/Cake/View/View.php
@@ -23,6 +23,7 @@
App::uses('ViewBlock', 'View');
App::uses('CakeEvent', 'Event');
App::uses('CakeEventManager', 'Event');
+App::uses('CakeResponse', 'Network');
/**
* View, the V in the MVC triad. View interacts with Helpers and view variables passed
@@ -202,6 +203,13 @@ class View extends Object {
public $request;
/**
+ * Reference to the Response object
+ *
+ * @var CakeResponse
+ */
+ public $response;
+
+/**
* The Cache configuration View will use to store cached elements. Changing this will change
* the default configuration elements are stored under. You can also choose a cache config
* per element.
@@ -306,6 +314,11 @@ public function __construct($controller) {
}
$this->_eventManager = $controller->getEventManager();
}
+ if (is_object($controller) && isset($controller->response)) {
+ $this->response = $controller->response;
+ } else {
+ $this->response = new CakeResponse(array('charset' => Configure::read('App.encoding')));
+ }
$this->Helpers = new HelperCollection($this);
$this->Blocks = new ViewBlock();
parent::__construct();
Please sign in to comment.
Something went wrong with that request. Please try again.