mirror of
https://github.com/brmlab/brmsklad.git
synced 2025-08-03 22:53:58 +02:00
Upgrade CakePHP from 2.2.5 to 2.9.5
This commit is contained in:
parent
5a580df460
commit
235a541597
793 changed files with 60746 additions and 23753 deletions
|
@ -5,16 +5,17 @@
|
|||
* Simplifies the construction of HTML elements.
|
||||
*
|
||||
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
|
||||
* Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* For full copyright and license information, please see the LICENSE.txt
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @copyright Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
* @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
* @link http://cakephp.org CakePHP(tm) Project
|
||||
* @package Cake.View.Helper
|
||||
* @since CakePHP(tm) v 0.9.1
|
||||
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
|
||||
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||
*/
|
||||
|
||||
App::uses('AppHelper', 'View/Helper');
|
||||
|
@ -46,13 +47,14 @@ class HtmlHelper extends AppHelper {
|
|||
'meta' => '<meta%s/>',
|
||||
'metalink' => '<link href="%s"%s/>',
|
||||
'link' => '<a href="%s"%s>%s</a>',
|
||||
'mailto' => '<a href="mailto:%s" %s>%s</a>',
|
||||
'mailto' => '<a href="mailto:%s"%s>%s</a>',
|
||||
'form' => '<form action="%s"%s>',
|
||||
'formwithoutaction' => '<form%s>',
|
||||
'formend' => '</form>',
|
||||
'input' => '<input name="%s"%s/>',
|
||||
'textarea' => '<textarea name="%s"%s>%s</textarea>',
|
||||
'hidden' => '<input type="hidden" name="%s"%s/>',
|
||||
'checkbox' => '<input type="checkbox" name="%s" %s/>',
|
||||
'checkbox' => '<input type="checkbox" name="%s"%s/>',
|
||||
'checkboxmultiple' => '<input type="checkbox" name="%s[]"%s />',
|
||||
'radio' => '<input type="radio" name="%s" id="%s"%s />%s',
|
||||
'selectstart' => '<select name="%s"%s>',
|
||||
|
@ -64,13 +66,13 @@ class HtmlHelper extends AppHelper {
|
|||
'optiongroupend' => '</optgroup>',
|
||||
'checkboxmultiplestart' => '',
|
||||
'checkboxmultipleend' => '',
|
||||
'password' => '<input type="password" name="%s" %s/>',
|
||||
'file' => '<input type="file" name="%s" %s/>',
|
||||
'file_no_model' => '<input type="file" name="%s" %s/>',
|
||||
'submit' => '<input %s/>',
|
||||
'submitimage' => '<input type="image" src="%s" %s/>',
|
||||
'password' => '<input type="password" name="%s"%s/>',
|
||||
'file' => '<input type="file" name="%s"%s/>',
|
||||
'file_no_model' => '<input type="file" name="%s"%s/>',
|
||||
'submit' => '<input%s/>',
|
||||
'submitimage' => '<input type="image" src="%s"%s/>',
|
||||
'button' => '<button%s>%s</button>',
|
||||
'image' => '<img src="%s" %s/>',
|
||||
'image' => '<img src="%s"%s/>',
|
||||
'tableheader' => '<th%s>%s</th>',
|
||||
'tableheaderrow' => '<tr%s>%s</tr>',
|
||||
'tablecell' => '<td%s>%s</td>',
|
||||
|
@ -78,6 +80,7 @@ class HtmlHelper extends AppHelper {
|
|||
'block' => '<div%s>%s</div>',
|
||||
'blockstart' => '<div%s>',
|
||||
'blockend' => '</div>',
|
||||
'hiddenblock' => '<div style="display:none;">%s</div>',
|
||||
'tag' => '<%s%s>%s</%s>',
|
||||
'tagstart' => '<%s%s>',
|
||||
'tagend' => '</%s>',
|
||||
|
@ -89,15 +92,15 @@ class HtmlHelper extends AppHelper {
|
|||
'fieldsetstart' => '<fieldset><legend>%s</legend>',
|
||||
'fieldsetend' => '</fieldset>',
|
||||
'legend' => '<legend>%s</legend>',
|
||||
'css' => '<link rel="%s" type="text/css" href="%s" %s/>',
|
||||
'css' => '<link rel="%s" type="text/css" href="%s"%s/>',
|
||||
'style' => '<style type="text/css"%s>%s</style>',
|
||||
'charset' => '<meta http-equiv="Content-Type" content="text/html; charset=%s" />',
|
||||
'ul' => '<ul%s>%s</ul>',
|
||||
'ol' => '<ol%s>%s</ol>',
|
||||
'li' => '<li%s>%s</li>',
|
||||
'error' => '<div%s>%s</div>',
|
||||
'javascriptblock' => '<script type="text/javascript"%s>%s</script>',
|
||||
'javascriptstart' => '<script type="text/javascript">',
|
||||
'javascriptblock' => '<script%s>%s</script>',
|
||||
'javascriptstart' => '<script>',
|
||||
'javascriptlink' => '<script type="text/javascript" src="%s"%s></script>',
|
||||
'javascriptend' => '</script>'
|
||||
);
|
||||
|
@ -110,11 +113,11 @@ class HtmlHelper extends AppHelper {
|
|||
protected $_crumbs = array();
|
||||
|
||||
/**
|
||||
* Names of script files that have been included once
|
||||
* Names of script & css files that have been included once
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_includedScripts = array();
|
||||
protected $_includedAssets = array();
|
||||
|
||||
/**
|
||||
* Options for the currently opened script block buffer if any.
|
||||
|
@ -159,7 +162,7 @@ class HtmlHelper extends AppHelper {
|
|||
if (is_object($this->_View->response)) {
|
||||
$this->response = $this->_View->response;
|
||||
} else {
|
||||
$this->response = new CakeResponse(array('charset' => Configure::read('App.encoding')));
|
||||
$this->response = new CakeResponse();
|
||||
}
|
||||
if (!empty($settings['configFile'])) {
|
||||
$this->loadConfig($settings['configFile']);
|
||||
|
@ -172,12 +175,13 @@ class HtmlHelper extends AppHelper {
|
|||
* @param string $name Text for link
|
||||
* @param string $link URL for link (if empty it won't be a link)
|
||||
* @param string|array $options Link attributes e.g. array('id' => 'selected')
|
||||
* @return void
|
||||
* @return self
|
||||
* @see HtmlHelper::link() for details on $options that can be used.
|
||||
* @link http://book.cakephp.org/2.0/en/core-libraries/helpers/html.html#creating-breadcrumb-trails-with-htmlhelper
|
||||
*/
|
||||
public function addCrumb($name, $link = null, $options = null) {
|
||||
$this->_crumbs[] = array($name, $link, $options);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -195,7 +199,7 @@ class HtmlHelper extends AppHelper {
|
|||
* - xhtml11: XHTML1.1.
|
||||
*
|
||||
* @param string $type Doctype to use.
|
||||
* @return string Doctype string
|
||||
* @return string|null Doctype string
|
||||
* @link http://book.cakephp.org/2.0/en/core-libraries/helpers/html.html#HtmlHelper::docType
|
||||
*/
|
||||
public function docType($type = 'html5') {
|
||||
|
@ -224,7 +228,7 @@ class HtmlHelper extends AppHelper {
|
|||
*
|
||||
* - `inline` Whether or not the link element should be output inline. Set to false to
|
||||
* have the meta tag included in `$scripts_for_layout`, and appended to the 'meta' view block.
|
||||
* - `block` Choose a custom block to append the meta tag to. Using this option
|
||||
* - `block` Choose a custom block to append the meta tag to. Using this option
|
||||
* will override the inline option.
|
||||
*
|
||||
* @param string $type The title of the external resource
|
||||
|
@ -251,7 +255,7 @@ class HtmlHelper extends AppHelper {
|
|||
);
|
||||
|
||||
if ($type === 'icon' && $url === null) {
|
||||
$types['icon']['link'] = $this->webroot('favicon.ico');
|
||||
$types['icon']['link'] = 'favicon.ico';
|
||||
}
|
||||
|
||||
if (isset($types[$type])) {
|
||||
|
@ -268,29 +272,26 @@ class HtmlHelper extends AppHelper {
|
|||
} else {
|
||||
$type = array();
|
||||
}
|
||||
} elseif ($url !== null) {
|
||||
$inline = $url;
|
||||
}
|
||||
$options = array_merge($type, $options);
|
||||
|
||||
$options += $type;
|
||||
$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'), ' ', ' '));
|
||||
$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'), ' ', ' '));
|
||||
$out .= sprintf($this->_tags['metalink'], $options['link'], $this->_parseAttributes($options, array('block', 'link')));
|
||||
} else {
|
||||
$out = sprintf($this->_tags['meta'], $this->_parseAttributes($options, array('block', 'type'), ' ', ' '));
|
||||
$out = sprintf($this->_tags['meta'], $this->_parseAttributes($options, array('block', 'type')));
|
||||
}
|
||||
|
||||
if (empty($options['block'])) {
|
||||
return $out;
|
||||
} else {
|
||||
$this->_View->append($options['block'], $out);
|
||||
}
|
||||
$this->_View->append($options['block'], $out);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -320,12 +321,14 @@ class HtmlHelper extends AppHelper {
|
|||
* ### Options
|
||||
*
|
||||
* - `escape` Set to false to disable escaping of title and attributes.
|
||||
* - `escapeTitle` Set to false to disable escaping of title. (Takes precedence over value of `escape`)
|
||||
* - `confirm` JavaScript confirmation message.
|
||||
*
|
||||
* @param string $title The content to be wrapped by <a> tags.
|
||||
* @param string $title The content to be wrapped by `<a>` tags.
|
||||
* @param string|array $url Cake-relative URL or array of URL parameters, or external URL (starts with http://)
|
||||
* @param array $options Array of HTML attributes.
|
||||
* @param string $confirmMessage JavaScript confirmation message.
|
||||
* @param array $options Array of options and HTML attributes.
|
||||
* @param string $confirmMessage JavaScript confirmation message. This
|
||||
* argument is deprecated as of 2.6. Use `confirm` key in $options instead.
|
||||
* @return string An `<a />` element.
|
||||
* @link http://book.cakephp.org/2.0/en/core-libraries/helpers/html.html#HtmlHelper::link
|
||||
*/
|
||||
|
@ -340,7 +343,10 @@ class HtmlHelper extends AppHelper {
|
|||
$escapeTitle = false;
|
||||
}
|
||||
|
||||
if (isset($options['escape'])) {
|
||||
if (isset($options['escapeTitle'])) {
|
||||
$escapeTitle = $options['escapeTitle'];
|
||||
unset($options['escapeTitle']);
|
||||
} elseif (isset($options['escape'])) {
|
||||
$escapeTitle = $options['escape'];
|
||||
}
|
||||
|
||||
|
@ -355,15 +361,14 @@ class HtmlHelper extends AppHelper {
|
|||
unset($options['confirm']);
|
||||
}
|
||||
if ($confirmMessage) {
|
||||
$confirmMessage = str_replace("'", "\'", $confirmMessage);
|
||||
$confirmMessage = str_replace('"', '\"', $confirmMessage);
|
||||
$options['onclick'] = "return confirm('{$confirmMessage}');";
|
||||
} elseif (isset($options['default']) && $options['default'] == false) {
|
||||
$options['onclick'] = $this->_confirm($confirmMessage, 'return true;', 'return false;', $options);
|
||||
} elseif (isset($options['default']) && !$options['default']) {
|
||||
if (isset($options['onclick'])) {
|
||||
$options['onclick'] .= ' event.returnValue = false; return false;';
|
||||
$options['onclick'] .= ' ';
|
||||
} else {
|
||||
$options['onclick'] = 'event.returnValue = false; return false;';
|
||||
$options['onclick'] = '';
|
||||
}
|
||||
$options['onclick'] .= 'event.returnValue = false; return false;';
|
||||
unset($options['default']);
|
||||
}
|
||||
return sprintf($this->_tags['link'], $url, $this->_parseAttributes($options), $title);
|
||||
|
@ -384,30 +389,51 @@ class HtmlHelper extends AppHelper {
|
|||
*
|
||||
* Add the stylesheet to the `$scripts_for_layout` layout var:
|
||||
*
|
||||
* `$this->Html->css('styles.css', null, array('inline' => false));`
|
||||
* `$this->Html->css('styles.css', array('inline' => false));`
|
||||
*
|
||||
* Add the stylesheet to a custom block:
|
||||
*
|
||||
* `$this->Html->css('styles.css', null, array('block' => 'layoutCss'));`
|
||||
* `$this->Html->css('styles.css', array('block' => 'layoutCss'));`
|
||||
*
|
||||
* ### Options
|
||||
*
|
||||
* - `inline` If set to false, the generated tag will be appended to the 'css' block,
|
||||
* and included in the `$scripts_for_layout` layout variable. Defaults to true.
|
||||
* - `block` Set the name of the block link/style tag will be appended to. This overrides the `inline`
|
||||
* option.
|
||||
* - `once` Whether or not the css file should be checked for uniqueness. If true css
|
||||
* files will only be included once, use false to allow the same
|
||||
* css to be included more than once per request.
|
||||
* - `block` Set the name of the block link/style tag will be appended to.
|
||||
* This overrides the `inline` option.
|
||||
* - `plugin` False value will prevent parsing path as a plugin
|
||||
* - `rel` Defaults to 'stylesheet'. If equal to 'import' the stylesheet will be imported.
|
||||
* - `fullBase` If true the URL will get a full address for the css file.
|
||||
*
|
||||
* @param string|array $path The name of a CSS style sheet or an array containing names of
|
||||
* CSS stylesheets. If `$path` is prefixed with '/', the path will be relative to the webroot
|
||||
* of your application. Otherwise, the path will be relative to your CSS path, usually webroot/css.
|
||||
* @param string $rel Rel attribute. Defaults to "stylesheet". If equal to 'import' the stylesheet will be imported.
|
||||
* @param array $options Array of HTML attributes.
|
||||
* @return string CSS <link /> or <style /> tag, depending on the type of link.
|
||||
* @param array $options Array of options and HTML arguments.
|
||||
* @return string CSS `<link />` or `<style />` tag, depending on the type of link.
|
||||
* @link http://book.cakephp.org/2.0/en/core-libraries/helpers/html.html#HtmlHelper::css
|
||||
*/
|
||||
public function css($path, $rel = null, $options = array()) {
|
||||
$options += array('block' => null, 'inline' => true);
|
||||
public function css($path, $options = array()) {
|
||||
if (!is_array($options)) {
|
||||
$rel = $options;
|
||||
$options = array();
|
||||
if ($rel) {
|
||||
$options['rel'] = $rel;
|
||||
}
|
||||
if (func_num_args() > 2) {
|
||||
$options = func_get_arg(2) + $options;
|
||||
}
|
||||
unset($rel);
|
||||
}
|
||||
|
||||
$options += array(
|
||||
'block' => null,
|
||||
'inline' => true,
|
||||
'once' => false,
|
||||
'rel' => 'stylesheet'
|
||||
);
|
||||
if (!$options['inline'] && empty($options['block'])) {
|
||||
$options['block'] = __FUNCTION__;
|
||||
}
|
||||
|
@ -416,49 +442,60 @@ class HtmlHelper extends AppHelper {
|
|||
if (is_array($path)) {
|
||||
$out = '';
|
||||
foreach ($path as $i) {
|
||||
$out .= "\n\t" . $this->css($i, $rel, $options);
|
||||
$out .= "\n\t" . $this->css($i, $options);
|
||||
}
|
||||
if (empty($options['block'])) {
|
||||
return $out . "\n";
|
||||
}
|
||||
return;
|
||||
return '';
|
||||
}
|
||||
|
||||
if ($options['once'] && isset($this->_includedAssets[__METHOD__][$path])) {
|
||||
return '';
|
||||
}
|
||||
unset($options['once']);
|
||||
$this->_includedAssets[__METHOD__][$path] = true;
|
||||
|
||||
if (strpos($path, '//') !== false) {
|
||||
$url = $path;
|
||||
} else {
|
||||
$url = $this->assetUrl($path, $options + array('pathPrefix' => CSS_URL, 'ext' => '.css'));
|
||||
$url = $this->assetUrl($path, $options + array('pathPrefix' => Configure::read('App.cssBaseUrl'), 'ext' => '.css'));
|
||||
$options = array_diff_key($options, array('fullBase' => null, 'pathPrefix' => null));
|
||||
|
||||
if (Configure::read('Asset.filter.css')) {
|
||||
$pos = strpos($url, CSS_URL);
|
||||
$pos = strpos($url, Configure::read('App.cssBaseUrl'));
|
||||
if ($pos !== false) {
|
||||
$url = substr($url, 0, $pos) . 'ccss/' . substr($url, $pos + strlen(CSS_URL));
|
||||
$url = substr($url, 0, $pos) . 'ccss/' . substr($url, $pos + strlen(Configure::read('App.cssBaseUrl')));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($rel == 'import') {
|
||||
$out = sprintf($this->_tags['style'], $this->_parseAttributes($options, array('inline', 'block'), '', ' '), '@import url(' . $url . ');');
|
||||
if ($options['rel'] === 'import') {
|
||||
$out = sprintf(
|
||||
$this->_tags['style'],
|
||||
$this->_parseAttributes($options, array('rel', 'block')),
|
||||
'@import url(' . $url . ');'
|
||||
);
|
||||
} else {
|
||||
if ($rel == null) {
|
||||
$rel = 'stylesheet';
|
||||
}
|
||||
$out = sprintf($this->_tags['css'], $rel, $url, $this->_parseAttributes($options, array('inline', 'block'), '', ' '));
|
||||
$out = sprintf(
|
||||
$this->_tags['css'],
|
||||
$options['rel'],
|
||||
$url,
|
||||
$this->_parseAttributes($options, array('rel', 'block'))
|
||||
);
|
||||
}
|
||||
|
||||
if (empty($options['block'])) {
|
||||
return $out;
|
||||
} else {
|
||||
$this->_View->append($options['block'], $out);
|
||||
}
|
||||
$this->_View->append($options['block'], $out);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns one or many `<script>` tags depending on the number of scripts given.
|
||||
*
|
||||
* If the filename is prefixed with "/", the path will be relative to the base path of your
|
||||
* application. Otherwise, the path will be relative to your JavaScript path, usually webroot/js.
|
||||
*
|
||||
* application. Otherwise, the path will be relative to your JavaScript path, usually webroot/js.
|
||||
*
|
||||
* ### Usage
|
||||
*
|
||||
|
@ -476,20 +513,21 @@ class HtmlHelper extends AppHelper {
|
|||
*
|
||||
* Add the script file to a custom block:
|
||||
*
|
||||
* `$this->Html->script('styles.js', null, array('block' => 'bodyScript'));`
|
||||
* `$this->Html->script('styles.js', array('block' => 'bodyScript'));`
|
||||
*
|
||||
* ### Options
|
||||
*
|
||||
* - `inline` Whether script should be output inline or into `$scripts_for_layout`. When set to false,
|
||||
* the script tag will be appended to the 'script' view block as well as `$scripts_for_layout`.
|
||||
* - `block` The name of the block you want the script appended to. Leave undefined to output inline.
|
||||
* - `block` The name of the block you want the script appended to. Leave undefined to output inline.
|
||||
* Using this option will override the inline option.
|
||||
* - `once` Whether or not the script should be checked for uniqueness. If true scripts will only be
|
||||
* included once, use false to allow the same script to be included more than once per request.
|
||||
* - `plugin` False value will prevent parsing path as a plugin
|
||||
* - `fullBase` If true the url will get a full address for the script file.
|
||||
*
|
||||
* @param string|array $url String or array of javascript files to include
|
||||
* @param array|boolean $options Array of options, and html attributes see above. If boolean sets $options['inline'] = value
|
||||
* @param array|bool $options Array of options, and html attributes see above. If boolean sets $options['inline'] = value
|
||||
* @return mixed String of `<script />` tags or null if $inline is false or if $once is true and the file has been
|
||||
* included before.
|
||||
* @link http://book.cakephp.org/2.0/en/core-libraries/helpers/html.html#HtmlHelper::script
|
||||
|
@ -499,7 +537,7 @@ class HtmlHelper extends AppHelper {
|
|||
list($inline, $options) = array($options, array());
|
||||
$options['inline'] = $inline;
|
||||
}
|
||||
$options = array_merge(array('block' => null, 'inline' => true, 'once' => true), $options);
|
||||
$options += array('block' => null, 'inline' => true, 'once' => true);
|
||||
if (!$options['inline'] && empty($options['block'])) {
|
||||
$options['block'] = __FUNCTION__;
|
||||
}
|
||||
|
@ -515,26 +553,26 @@ class HtmlHelper extends AppHelper {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
if ($options['once'] && isset($this->_includedScripts[$url])) {
|
||||
if ($options['once'] && isset($this->_includedAssets[__METHOD__][$url])) {
|
||||
return null;
|
||||
}
|
||||
$this->_includedScripts[$url] = true;
|
||||
$this->_includedAssets[__METHOD__][$url] = true;
|
||||
|
||||
if (strpos($url, '//') === false) {
|
||||
$url = $this->assetUrl($url, $options + array('pathPrefix' => JS_URL, 'ext' => '.js'));
|
||||
$url = $this->assetUrl($url, $options + array('pathPrefix' => Configure::read('App.jsBaseUrl'), 'ext' => '.js'));
|
||||
$options = array_diff_key($options, array('fullBase' => null, 'pathPrefix' => null));
|
||||
|
||||
if (Configure::read('Asset.filter.js')) {
|
||||
$url = str_replace(JS_URL, 'cjs/', $url);
|
||||
$url = str_replace(Configure::read('App.jsBaseUrl'), 'cjs/', $url);
|
||||
}
|
||||
}
|
||||
$attributes = $this->_parseAttributes($options, array('block', 'once'), ' ');
|
||||
$attributes = $this->_parseAttributes($options, array('block', 'once'));
|
||||
$out = sprintf($this->_tags['javascriptlink'], $url, $attributes);
|
||||
|
||||
if (empty($options['block'])) {
|
||||
return $out;
|
||||
} else {
|
||||
$this->_View->append($options['block'], $out);
|
||||
}
|
||||
$this->_View->append($options['block'], $out);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -542,7 +580,7 @@ class HtmlHelper extends AppHelper {
|
|||
*
|
||||
* ### Options
|
||||
*
|
||||
* - `safe` (boolean) Whether or not the $script should be wrapped in <![CDATA[ ]]>
|
||||
* - `safe` (boolean) Whether or not the $script should be wrapped in `<![CDATA[ ]]>`
|
||||
* - `inline` (boolean) Whether or not the $script should be added to
|
||||
* `$scripts_for_layout` / `script` block, or output inline. (Deprecated, use `block` instead)
|
||||
* - `block` Which block you want this script block appended to.
|
||||
|
@ -555,23 +593,22 @@ class HtmlHelper extends AppHelper {
|
|||
* @link http://book.cakephp.org/2.0/en/core-libraries/helpers/html.html#HtmlHelper::scriptBlock
|
||||
*/
|
||||
public function scriptBlock($script, $options = array()) {
|
||||
$options += array('safe' => true, 'inline' => true);
|
||||
$options += array('type' => 'text/javascript', 'safe' => true, 'inline' => true);
|
||||
if ($options['safe']) {
|
||||
$script = "\n" . '//<![CDATA[' . "\n" . $script . "\n" . '//]]>' . "\n";
|
||||
$script = "\n" . '//<![CDATA[' . "\n" . $script . "\n" . '//]]>' . "\n";
|
||||
}
|
||||
if (!$options['inline'] && empty($options['block'])) {
|
||||
$options['block'] = 'script';
|
||||
}
|
||||
unset($options['inline'], $options['safe']);
|
||||
|
||||
$attributes = $this->_parseAttributes($options, array('block'), ' ');
|
||||
$attributes = $this->_parseAttributes($options, array('block'));
|
||||
$out = sprintf($this->_tags['javascriptblock'], $attributes, $script);
|
||||
|
||||
if (empty($options['block'])) {
|
||||
return $out;
|
||||
} else {
|
||||
$this->_View->append($options['block'], $out);
|
||||
}
|
||||
$this->_View->append($options['block'], $out);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -592,11 +629,10 @@ class HtmlHelper extends AppHelper {
|
|||
$options += array('safe' => true, 'inline' => true);
|
||||
$this->_scriptBlockOptions = $options;
|
||||
ob_start();
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* End a Buffered section of Javascript capturing.
|
||||
* End a Buffered section of JavaScript capturing.
|
||||
* Generates a script tag inline or in `$scripts_for_layout` depending on the settings
|
||||
* used when the scriptBlock was started
|
||||
*
|
||||
|
@ -615,15 +651,15 @@ class HtmlHelper extends AppHelper {
|
|||
*
|
||||
* ### Usage:
|
||||
*
|
||||
* {{{
|
||||
* echo $html->style(array('margin' => '10px', 'padding' => '10px'), true);
|
||||
* ```
|
||||
* echo $this->Html->style(array('margin' => '10px', 'padding' => '10px'), true);
|
||||
*
|
||||
* // creates
|
||||
* 'margin:10px;padding:10px;'
|
||||
* }}}
|
||||
* ```
|
||||
*
|
||||
* @param array $data Style data array, keys will be used as property names, values as property values.
|
||||
* @param boolean $oneline Whether or not the style block should be displayed on one line.
|
||||
* @param bool $oneline Whether or not the style block should be displayed on one line.
|
||||
* @return string CSS styling data
|
||||
* @link http://book.cakephp.org/2.0/en/core-libraries/helpers/html.html#HtmlHelper::style
|
||||
*/
|
||||
|
@ -636,7 +672,7 @@ class HtmlHelper extends AppHelper {
|
|||
$out[] = $key . ':' . $value . ';';
|
||||
}
|
||||
if ($oneline) {
|
||||
return join(' ', $out);
|
||||
return implode(' ', $out);
|
||||
}
|
||||
return implode("\n", $out);
|
||||
}
|
||||
|
@ -652,9 +688,9 @@ class HtmlHelper extends AppHelper {
|
|||
* All other keys will be passed to HtmlHelper::link() as the `$options` parameter.
|
||||
*
|
||||
* @param string $separator Text to separate crumbs.
|
||||
* @param string|array|boolean $startText This will be the first crumb, if false it defaults to first crumb in array. Can
|
||||
* @param string|array|bool $startText This will be the first crumb, if false it defaults to first crumb in array. Can
|
||||
* also be an array, see above for details.
|
||||
* @return string Composed bread crumbs
|
||||
* @return string|null Composed bread crumbs
|
||||
* @link http://book.cakephp.org/2.0/en/core-libraries/helpers/html.html#creating-breadcrumb-trails-with-htmlhelper
|
||||
*/
|
||||
public function getCrumbs($separator = '»', $startText = false) {
|
||||
|
@ -668,10 +704,9 @@ class HtmlHelper extends AppHelper {
|
|||
$out[] = $crumb[0];
|
||||
}
|
||||
}
|
||||
return join($separator, $out);
|
||||
} else {
|
||||
return null;
|
||||
return implode($separator, $out);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -681,45 +716,62 @@ class HtmlHelper extends AppHelper {
|
|||
* similar to HtmlHelper::getCrumbs(), so it uses options which every
|
||||
* crumb was added with.
|
||||
*
|
||||
* ### Options
|
||||
* - `separator` Separator content to insert in between breadcrumbs, defaults to ''
|
||||
* - `firstClass` Class for wrapper tag on the first breadcrumb, defaults to 'first'
|
||||
* - `lastClass` Class for wrapper tag on current active page, defaults to 'last'
|
||||
*
|
||||
* @param array $options Array of html attributes to apply to the generated list elements.
|
||||
* @param string|array|boolean $startText This will be the first crumb, if false it defaults to first crumb in array. Can
|
||||
* @param string|array|bool $startText This will be the first crumb, if false it defaults to first crumb in array. Can
|
||||
* also be an array, see `HtmlHelper::getCrumbs` for details.
|
||||
* @return string breadcrumbs html list
|
||||
* @return string|null breadcrumbs html list
|
||||
* @link http://book.cakephp.org/2.0/en/core-libraries/helpers/html.html#creating-breadcrumb-trails-with-htmlhelper
|
||||
*/
|
||||
public function getCrumbList($options = array(), $startText = false) {
|
||||
$crumbs = $this->_prepareCrumbs($startText);
|
||||
if (!empty($crumbs)) {
|
||||
$result = '';
|
||||
$crumbCount = count($crumbs);
|
||||
$ulOptions = $options;
|
||||
foreach ($crumbs as $which => $crumb) {
|
||||
$options = array();
|
||||
if (empty($crumb[1])) {
|
||||
$elementContent = $crumb[0];
|
||||
} else {
|
||||
$elementContent = $this->link($crumb[0], $crumb[1], $crumb[2]);
|
||||
}
|
||||
if ($which == 0) {
|
||||
$options['class'] = 'first';
|
||||
} elseif ($which == $crumbCount - 1) {
|
||||
$options['class'] = 'last';
|
||||
}
|
||||
$result .= $this->tag('li', $elementContent, $options);
|
||||
}
|
||||
return $this->tag('ul', $result, $ulOptions);
|
||||
} else {
|
||||
$defaults = array('firstClass' => 'first', 'lastClass' => 'last', 'separator' => '', 'escape' => true);
|
||||
$options = (array)$options + $defaults;
|
||||
$firstClass = $options['firstClass'];
|
||||
$lastClass = $options['lastClass'];
|
||||
$separator = $options['separator'];
|
||||
$escape = $options['escape'];
|
||||
unset($options['firstClass'], $options['lastClass'], $options['separator'], $options['escape']);
|
||||
|
||||
$crumbs = $this->_prepareCrumbs($startText, $escape);
|
||||
if (empty($crumbs)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$result = '';
|
||||
$crumbCount = count($crumbs);
|
||||
$ulOptions = $options;
|
||||
foreach ($crumbs as $which => $crumb) {
|
||||
$options = array();
|
||||
if (empty($crumb[1])) {
|
||||
$elementContent = $crumb[0];
|
||||
} else {
|
||||
$elementContent = $this->link($crumb[0], $crumb[1], $crumb[2]);
|
||||
}
|
||||
if (!$which && $firstClass !== false) {
|
||||
$options['class'] = $firstClass;
|
||||
} elseif ($which == $crumbCount - 1 && $lastClass !== false) {
|
||||
$options['class'] = $lastClass;
|
||||
}
|
||||
if (!empty($separator) && ($crumbCount - $which >= 2)) {
|
||||
$elementContent .= $separator;
|
||||
}
|
||||
$result .= $this->tag('li', $elementContent, $options);
|
||||
}
|
||||
return $this->tag('ul', $result, $ulOptions);
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepends startText to crumbs array if set
|
||||
*
|
||||
* @param $startText
|
||||
* @param string $startText Text to prepend
|
||||
* @param bool $escape If the output should be escaped or not
|
||||
* @return array Crumb list including startText (if provided)
|
||||
*/
|
||||
protected function _prepareCrumbs($startText) {
|
||||
protected function _prepareCrumbs($startText, $escape = true) {
|
||||
$crumbs = $this->_crumbs;
|
||||
if ($startText) {
|
||||
if (!is_array($startText)) {
|
||||
|
@ -731,7 +783,7 @@ class HtmlHelper extends AppHelper {
|
|||
$startText += array('url' => '/', 'text' => __d('cake', 'Home'));
|
||||
list($url, $text) = array($startText['url'], $startText['text']);
|
||||
unset($startText['url'], $startText['text']);
|
||||
array_unshift($crumbs, array($text, $url, $startText));
|
||||
array_unshift($crumbs, array($text, $url, $startText + array('escape' => $escape)));
|
||||
}
|
||||
return $crumbs;
|
||||
}
|
||||
|
@ -745,11 +797,11 @@ class HtmlHelper extends AppHelper {
|
|||
*
|
||||
* Create a regular image:
|
||||
*
|
||||
* `echo $html->image('cake_icon.png', array('alt' => 'CakePHP'));`
|
||||
* `echo $this->Html->image('cake_icon.png', array('alt' => 'CakePHP'));`
|
||||
*
|
||||
* Create an image link:
|
||||
*
|
||||
* `echo $html->image('cake_icon.png', array('alt' => 'CakePHP', 'url' => 'http://cakephp.org'));`
|
||||
* `echo $this->Html->image('cake_icon.png', array('alt' => 'CakePHP', 'url' => 'http://cakephp.org'));`
|
||||
*
|
||||
* ### Options:
|
||||
*
|
||||
|
@ -759,13 +811,13 @@ class HtmlHelper extends AppHelper {
|
|||
* - `plugin` False value will prevent parsing path as a plugin
|
||||
*
|
||||
* @param string $path Path to the image file, relative to the app/webroot/img/ directory.
|
||||
* @param array $options Array of HTML attributes. See above for special options.
|
||||
* @param array $options Array of HTML attributes. See above for special options.
|
||||
* @return string completed img tag
|
||||
* @link http://book.cakephp.org/2.0/en/core-libraries/helpers/html.html#HtmlHelper::image
|
||||
*/
|
||||
public function image($path, $options = array()) {
|
||||
$path = $this->assetUrl($path, $options + array('pathPrefix' => IMAGES_URL));
|
||||
$options = array_diff_key($options, array('fullBase' => '', 'pathPrefix' => ''));
|
||||
$path = $this->assetUrl($path, $options + array('pathPrefix' => Configure::read('App.imageBaseUrl')));
|
||||
$options = array_diff_key($options, array('fullBase' => null, 'pathPrefix' => null));
|
||||
|
||||
if (!isset($options['alt'])) {
|
||||
$options['alt'] = '';
|
||||
|
@ -777,7 +829,7 @@ class HtmlHelper extends AppHelper {
|
|||
unset($options['url']);
|
||||
}
|
||||
|
||||
$image = sprintf($this->_tags['image'], $path, $this->_parseAttributes($options, null, '', ' '));
|
||||
$image = sprintf($this->_tags['image'], $path, $this->_parseAttributes($options));
|
||||
|
||||
if ($url) {
|
||||
return sprintf($this->_tags['link'], $this->url($url), null, $image);
|
||||
|
@ -804,7 +856,7 @@ class HtmlHelper extends AppHelper {
|
|||
$out[] = sprintf($this->_tags['tableheader'], $this->_parseAttributes(current($arg)), key($arg));
|
||||
}
|
||||
}
|
||||
return sprintf($this->_tags['tablerow'], $this->_parseAttributes($trOptions), join(' ', $out));
|
||||
return sprintf($this->_tags['tablerow'], $this->_parseAttributes($trOptions), implode(' ', $out));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -813,8 +865,8 @@ class HtmlHelper extends AppHelper {
|
|||
* @param array $data Array of table data
|
||||
* @param array $oddTrOptions HTML options for odd TR elements if true useCount is used
|
||||
* @param array $evenTrOptions HTML options for even TR elements
|
||||
* @param boolean $useCount adds class "column-$i"
|
||||
* @param boolean $continueOddEven If false, will use a non-static $count variable,
|
||||
* @param bool $useCount adds class "column-$i"
|
||||
* @param bool $continueOddEven If false, will use a non-static $count variable,
|
||||
* so that the odd/even count is reset to zero just for that call.
|
||||
* @return string Formatted HTML
|
||||
* @link http://book.cakephp.org/2.0/en/core-libraries/helpers/html.html#HtmlHelper::tableCells
|
||||
|
@ -850,9 +902,16 @@ class HtmlHelper extends AppHelper {
|
|||
if (is_array($cell)) {
|
||||
$cellOptions = $cell[1];
|
||||
$cell = $cell[0];
|
||||
} elseif ($useCount) {
|
||||
$cellOptions['class'] = 'column-' . ++$i;
|
||||
}
|
||||
|
||||
if ($useCount) {
|
||||
if (isset($cellOptions['class'])) {
|
||||
$cellOptions['class'] .= ' column-' . ++$i;
|
||||
} else {
|
||||
$cellOptions['class'] = 'column-' . ++$i;
|
||||
}
|
||||
}
|
||||
|
||||
$cellsOut[] = sprintf($this->_tags['tablecell'], $this->_parseAttributes($cellOptions), $cell);
|
||||
}
|
||||
$options = $this->_parseAttributes($count % 2 ? $oddTrOptions : $evenTrOptions);
|
||||
|
@ -876,19 +935,19 @@ class HtmlHelper extends AppHelper {
|
|||
* @link http://book.cakephp.org/2.0/en/core-libraries/helpers/html.html#HtmlHelper::tag
|
||||
*/
|
||||
public function tag($name, $text = null, $options = array()) {
|
||||
if (is_array($options) && isset($options['escape']) && $options['escape']) {
|
||||
if (empty($name)) {
|
||||
return $text;
|
||||
}
|
||||
if (isset($options['escape']) && $options['escape']) {
|
||||
$text = h($text);
|
||||
unset($options['escape']);
|
||||
}
|
||||
if (!is_array($options)) {
|
||||
$options = array('class' => $options);
|
||||
}
|
||||
if ($text === null) {
|
||||
$tag = 'tagstart';
|
||||
} else {
|
||||
$tag = 'tag';
|
||||
}
|
||||
return sprintf($this->_tags[$tag], $name, $this->_parseAttributes($options, null, ' ', ''), $text, $name);
|
||||
return sprintf($this->_tags[$tag], $name, $this->_parseAttributes($options), $text, $name);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -906,7 +965,7 @@ class HtmlHelper extends AppHelper {
|
|||
array_shift($args);
|
||||
foreach ($args as &$arg) {
|
||||
if (is_array($arg)) {
|
||||
$arg = $this->_parseAttributes($arg, null, ' ', '');
|
||||
$arg = $this->_parseAttributes($arg);
|
||||
}
|
||||
}
|
||||
return vsprintf($this->_tags[$tag], $args);
|
||||
|
@ -950,15 +1009,14 @@ class HtmlHelper extends AppHelper {
|
|||
if (isset($options['escape'])) {
|
||||
$text = h($text);
|
||||
}
|
||||
if ($class != null && !empty($class)) {
|
||||
if ($class && !empty($class)) {
|
||||
$options['class'] = $class;
|
||||
}
|
||||
$tag = 'para';
|
||||
if ($text === null) {
|
||||
$tag = 'parastart';
|
||||
} else {
|
||||
$tag = 'para';
|
||||
}
|
||||
return sprintf($this->_tags[$tag], $this->_parseAttributes($options, null, ' ', ''), $text);
|
||||
return sprintf($this->_tags[$tag], $this->_parseAttributes($options), $text);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -984,28 +1042,28 @@ class HtmlHelper extends AppHelper {
|
|||
*
|
||||
* Using multiple video files:
|
||||
*
|
||||
* {{{
|
||||
* ```
|
||||
* echo $this->Html->media(
|
||||
* array('video.mp4', array('src' => 'video.ogv', 'type' => "video/ogg; codecs='theora, vorbis'")),
|
||||
* array('tag' => 'video', 'autoplay')
|
||||
* );
|
||||
* }}}
|
||||
* ```
|
||||
*
|
||||
* Outputs:
|
||||
*
|
||||
* {{{
|
||||
* ```
|
||||
* <video autoplay="autoplay">
|
||||
* <source src="/files/video.mp4" type="video/mp4"/>
|
||||
* <source src="/files/video.ogv" type="video/ogv; codecs='theora, vorbis'"/>
|
||||
* </video>
|
||||
* }}}
|
||||
* ```
|
||||
*
|
||||
* ### Options
|
||||
*
|
||||
* - `tag` Type of media element to generate, either "audio" or "video".
|
||||
* If tag is not provided it's guessed based on file's mime type.
|
||||
* - `text` Text to include inside the audio/video tag
|
||||
* - `pathPrefix` Path prefix to use for relative urls, defaults to 'files/'
|
||||
* - `pathPrefix` Path prefix to use for relative URLs, defaults to 'files/'
|
||||
* - `fullBase` If provided the src attribute will get a full address including domain name
|
||||
*
|
||||
* @param string|array $path Path to the video file, relative to the webroot/{$options['pathPrefix']} directory.
|
||||
|
@ -1065,15 +1123,15 @@ class HtmlHelper extends AppHelper {
|
|||
}
|
||||
|
||||
if (isset($options['poster'])) {
|
||||
$options['poster'] = $this->assetUrl($options['poster'], array('pathPrefix' => IMAGES_URL) + $options);
|
||||
$options['poster'] = $this->assetUrl($options['poster'], array('pathPrefix' => Configure::read('App.imageBaseUrl')) + $options);
|
||||
}
|
||||
$text = $options['text'];
|
||||
|
||||
$options = array_diff_key($options, array(
|
||||
'tag' => '',
|
||||
'fullBase' => '',
|
||||
'pathPrefix' => '',
|
||||
'text' => ''
|
||||
'tag' => null,
|
||||
'fullBase' => null,
|
||||
'pathPrefix' => null,
|
||||
'text' => null
|
||||
));
|
||||
return $this->tag($tag, $text, $options);
|
||||
}
|
||||
|
@ -1094,7 +1152,7 @@ class HtmlHelper extends AppHelper {
|
|||
$options = array();
|
||||
}
|
||||
$items = $this->_nestedListItem($list, $options, $itemOptions, $tag);
|
||||
return sprintf($this->_tags[$tag], $this->_parseAttributes($options, null, ' ', ''), $items);
|
||||
return sprintf($this->_tags[$tag], $this->_parseAttributes($options), $items);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1115,12 +1173,12 @@ class HtmlHelper extends AppHelper {
|
|||
if (is_array($item)) {
|
||||
$item = $key . $this->nestedList($item, $options, $itemOptions, $tag);
|
||||
}
|
||||
if (isset($itemOptions['even']) && $index % 2 == 0) {
|
||||
if (isset($itemOptions['even']) && $index % 2 === 0) {
|
||||
$itemOptions['class'] = $itemOptions['even'];
|
||||
} elseif (isset($itemOptions['odd']) && $index % 2 != 0) {
|
||||
} elseif (isset($itemOptions['odd']) && $index % 2 !== 0) {
|
||||
$itemOptions['class'] = $itemOptions['odd'];
|
||||
}
|
||||
$out .= sprintf($this->_tags['li'], $this->_parseAttributes($itemOptions, array('even', 'odd'), ' ', ''), $item);
|
||||
$out .= sprintf($this->_tags['li'], $this->_parseAttributes($itemOptions, array('even', 'odd')), $item);
|
||||
$index++;
|
||||
}
|
||||
return $out;
|
||||
|
@ -1129,18 +1187,18 @@ class HtmlHelper extends AppHelper {
|
|||
/**
|
||||
* Load Html tag configuration.
|
||||
*
|
||||
* Loads a file from APP/Config that contains tag data. By default the file is expected
|
||||
* Loads a file from APP/Config that contains tag data. By default the file is expected
|
||||
* to be compatible with PhpReader:
|
||||
*
|
||||
* `$this->Html->loadConfig('tags.php');`
|
||||
*
|
||||
* tags.php could look like:
|
||||
*
|
||||
* {{{
|
||||
* ```
|
||||
* $tags = array(
|
||||
* 'meta' => '<meta %s>'
|
||||
* 'meta' => '<meta%s>'
|
||||
* );
|
||||
* }}}
|
||||
* ```
|
||||
*
|
||||
* If you wish to store tag definitions in another format you can give an array
|
||||
* containing the file name, and reader class name:
|
||||
|
@ -1194,13 +1252,13 @@ class HtmlHelper extends AppHelper {
|
|||
$readerObj = new $readerClass($path);
|
||||
$configs = $readerObj->read($file);
|
||||
if (isset($configs['tags']) && is_array($configs['tags'])) {
|
||||
$this->_tags = array_merge($this->_tags, $configs['tags']);
|
||||
$this->_tags = $configs['tags'] + $this->_tags;
|
||||
}
|
||||
if (isset($configs['minimizedAttributes']) && is_array($configs['minimizedAttributes'])) {
|
||||
$this->_minimizedAttributes = array_merge($this->_minimizedAttributes, $configs['minimizedAttributes']);
|
||||
$this->_minimizedAttributes = $configs['minimizedAttributes'] + $this->_minimizedAttributes;
|
||||
}
|
||||
if (isset($configs['docTypes']) && is_array($configs['docTypes'])) {
|
||||
$this->_docTypes = array_merge($this->_docTypes, $configs['docTypes']);
|
||||
$this->_docTypes = $configs['docTypes'] + $this->_docTypes;
|
||||
}
|
||||
if (isset($configs['attributeFormat'])) {
|
||||
$this->_attributeFormat = $configs['attributeFormat'];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue