mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Fix missing HTML encoding on URL's generated by Html->meta().
The input URL was not correctly handled as an asset URL and thus was not correctly HTML or URL escaped. This created invalid HTML when favicon URLs included query string arguments. Refs #2233
This commit is contained in:
parent
bf2f2e772e
commit
8d38861a2e
2 changed files with 40 additions and 15 deletions
|
@ -1711,19 +1711,6 @@ class HtmlHelperTest extends CakeTestCase {
|
|||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$result = $this->Html->meta('icon', 'favicon.ico');
|
||||
$expected = array(
|
||||
'link' => array('href' => 'preg:/.*favicon\.ico/', 'type' => 'image/x-icon', 'rel' => 'icon'),
|
||||
array('link' => array('href' => 'preg:/.*favicon\.ico/', 'type' => 'image/x-icon', 'rel' => 'shortcut icon'))
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
$result = $this->Html->meta('icon');
|
||||
$expected = array(
|
||||
'link' => array('href' => 'preg:/.*favicon\.ico/', 'type' => 'image/x-icon', 'rel' => 'icon'),
|
||||
array('link' => array('href' => 'preg:/.*favicon\.ico/', 'type' => 'image/x-icon', 'rel' => 'shortcut icon'))
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$result = $this->Html->meta('keywords', 'these, are, some, meta, keywords');
|
||||
$this->assertTags($result, array('meta' => array('name' => 'keywords', 'content' => 'these, are, some, meta, keywords')));
|
||||
$this->assertRegExp('/\s+\/>$/', $result);
|
||||
|
@ -1735,6 +1722,45 @@ class HtmlHelperTest extends CakeTestCase {
|
|||
$this->assertTags($result, array('meta' => array('name' => 'ROBOTS', 'content' => 'ALL')));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test generating favicon's with meta()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testMetaIcon() {
|
||||
$result = $this->Html->meta('icon', 'favicon.ico');
|
||||
$expected = array(
|
||||
'link' => array('href' => 'preg:/.*favicon\.ico/', 'type' => 'image/x-icon', 'rel' => 'icon'),
|
||||
array('link' => array('href' => 'preg:/.*favicon\.ico/', 'type' => 'image/x-icon', 'rel' => 'shortcut icon'))
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$result = $this->Html->meta('icon');
|
||||
$expected = array(
|
||||
'link' => array('href' => 'preg:/.*favicon\.ico/', 'type' => 'image/x-icon', 'rel' => 'icon'),
|
||||
array('link' => array('href' => 'preg:/.*favicon\.ico/', 'type' => 'image/x-icon', 'rel' => 'shortcut icon'))
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$result = $this->Html->meta('icon', '/favicon.png?one=two&three=four');
|
||||
$url = '/favicon.png?one=two&three=four';
|
||||
$expected = array(
|
||||
'link' => array(
|
||||
'href' => $url,
|
||||
'type' => 'image/x-icon',
|
||||
'rel' => 'icon'
|
||||
),
|
||||
array(
|
||||
'link' => array(
|
||||
'href' => $url,
|
||||
'type' => 'image/x-icon',
|
||||
'rel' => 'shortcut icon'
|
||||
)
|
||||
)
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the inline and block options for meta()
|
||||
*/
|
||||
|
|
|
@ -276,11 +276,10 @@ class HtmlHelper extends AppHelper {
|
|||
$out = null;
|
||||
|
||||
if (isset($options['link'])) {
|
||||
$options['link'] = $this->assetUrl($options['link']);
|
||||
if (isset($options['rel']) && $options['rel'] === 'icon') {
|
||||
$out = sprintf($this->_tags['metalink'], $options['link'], $this->_parseAttributes($options, array('block', 'link'), ' ', ' '));
|
||||
$options['rel'] = 'shortcut icon';
|
||||
} else {
|
||||
$options['link'] = $this->url($options['link'], true);
|
||||
}
|
||||
$out .= sprintf($this->_tags['metalink'], $options['link'], $this->_parseAttributes($options, array('block', 'link'), ' ', ' '));
|
||||
} else {
|
||||
|
|
Loading…
Reference in a new issue