* @author Shohei Nakajima * @link http://www.netcommons.org NetCommons Project * @license http://www.netcommons.org/license.txt NetCommons License * @copyright Copyright 2014, NetCommons Project */ App::uses('AppHelper', 'View/Helper'); App::uses('NetCommonsUrl', 'NetCommons.Utility'); /** * NetCommonsFormHelper * * @package NetCommons\NetCommons\View\Helper */ class NetCommonsHtmlHelper extends AppHelper { /** * Other helpers used by HtmlHelper * * @var array */ public $helpers = array('Html'); /** * HtmlHelperラップ用マジックメソッド。 * * @param string $method メソッド * @param array $params パラメータ * @return mixed */ public function __call($method, $params) { return call_user_func_array(array($this->Html, $method), $params); } /** * Overwrite HtmlHelper::script() * * @param string|array $url String or array of javascript files to include * @param array|bool $options Array of options, and html attributes see above. If boolean sets $options['inline'] = value * @return mixed String of `` 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 */ public function script($url, $options = array()) { $defaultOptions = array( 'plugin' => false, 'once' => true, 'inline' => false ); return $this->Html->script($url, Hash::merge($defaultOptions, $options)); } /** * Overwrite HtmlHelper::css() * * @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 array $options Array of options and HTML arguments. * @return string CSS or 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, $options = array()) { $defaultOptions = array( 'plugin' => false, 'once' => true, 'inline' => false ); return $this->Html->css($path, Hash::merge($defaultOptions, $options)); } /** * Json CakePHP template. * It is better reference Google JSON Style Guid * * @param array $results results data * @param string $name message * @param int $status status code * @return string json format data */ public function json($results = [], $name = 'OK', $status = 200) { //if (! $results) { // $results = $this->_View->viewVars; //} $results = array_merge([ 'name' => $name, 'code' => $status, ], $results); $camelizeData = NetCommonsAppController::camelizeKeyRecursive($results); return json_encode($camelizeData); } /** * Creates a `` tag for add link. The type attribute defaults * * @param string $title The anchor's caption. Not automatically HTML encoded * @param mixed $url Link url * @param array $options Array of options and HTML attributes. * @return string A HTML button tag. * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html#FormHelper::button */ public function editLink($title = '', $url = null, $options = array()) { //URLの設定 if (! isset($url['plugin'])) { $url['plugin'] = $this->_View->request->params['plugin']; } if (! isset($url['controller'])) { if (! isset($this->_View->viewVars['editActionController'])) { $url['controller'] = $this->_View->request->params['controller']; } else { $url['controller'] = $this->_View->viewVars['editActionController']; } } if (! isset($url['action'])) { $url['action'] = 'edit'; } if (! isset($url['block_id']) && Current::read('Block.id')) { $url['block_id'] = Current::read('Block.id'); } if (! isset($url['frame_id']) && Current::read('Frame.id')) { $url['frame_id'] = Current::read('Frame.id'); } $url = NetCommonsUrl::actionUrl($url); return $this->Html->link($title, $url, $options); } /** * Creates a `` tag for add link. The type attribute defaults * * @param mixed $url Link url * @return string A HTML button tag. * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html#FormHelper::button */ private function __getUrl($url = null) { //URLの設定 if (is_array($url)) { if (! isset($url['plugin'])) { $url['plugin'] = $this->_View->request->params['plugin']; } if (! isset($url['controller'])) { $url['controller'] = $this->_View->request->params['controller']; } if (! isset($url['action'])) { $url['action'] = $this->_View->request->params['action']; } if (! isset($url['block_id']) && Current::read('Block.id')) { $url['block_id'] = Current::read('Block.id'); } if (! isset($url['frame_id']) && Current::read('Frame.id')) { $url['frame_id'] = Current::read('Frame.id'); } $url = NetCommonsUrl::actionUrl($url); } return $url; } /** * Creates a `` tag for add link. The type attribute defaults * * @param mixed $url Link url * @param array $options Array of options and HTML attributes. * @return string A HTML button tag. * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html#FormHelper::button */ public function url($url = null, $options = array()) { //URLの設定 $url = $this->__getUrl($url); $output = $this->Html->url($url, $options); return $output; } /** * Creates a `` tag for add link. The type attribute defaults * * @param string $title The anchor's caption. Not automatically HTML encoded * @param mixed $url Link url * @param array $options Array of options and HTML attributes. * @return string A HTML button tag. * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html#FormHelper::button */ public function link($title = '', $url = null, $options = array()) { $url = $this->__getUrl($url); $output = $this->Html->link($title, $url, $options); return $output; } }