スプーキーズの中の人。

スプーキーズの中の人が徒然なるままに、垂れ流します。

protocalendar.js 用の CakePHP1.2対応のヘルパメソッド(のひな形)を公開しました

CakePHP1.2 対応版を作ったので公開します。

以下の funciton を FormHelper を継承した上で、JavascriptHelper を読み込んだヘルパーに追加します。(今回は SpHelper とします。) [php] <?php class SpHelper extends FormHelper { var $helpers = array('Html', 'Javascript');

function dateInput($fieldName, $options = array(), $calOptions = array()) { if (!isset($options['value'])) { $date = $this-&gt;value($fieldName); if ($date) { $options['value'] = date('Y/m/d', strtotime($date)); } } $result = $this-&gt;text($fieldName, $options);

if (!empty($options['id'])) {
  $styleId = $options['id'];
} else {
  $styleId = Inflector::camelize($this-&amp;gt;model()) . Inflector::camelize($this-&amp;gt;field());
}

$script = &quot;  InputCalendar.createOnLoaded('{$styleId}', {&quot;;
$lang = !empty($calOptions['lang']) ? &quot;lang:{$calOptions['lang']} &quot; : &quot;lang:'ja'&quot;;
$script .= $lang;
if (!empty($calOptions['startYear'])) {
  $script .= &quot;, startYear:{$calOptions['startYear']} &quot;;
}
if (!empty($calOptions['endYear'])) {
  $script .= &quot;, endYear:{$calOptions['endYear']} &quot;;
}
$script .= &quot;});&quot;;

return ($result . $this-&amp;gt;Javascript-&amp;gt;codeBlock($script));

} } ?> [/php] layout ファイルでは prototype.js を読み込み、$scripts_for_layout を使って、ビューから javascript を追加できるようにします。 [php] (省略) <head> (省略) <?php echo $javascript-&gt;link('prototype'); echo $scripts_for_layout; ?> </head> (省略) [/php] view ファイルでは $scripts_for_layout の部分に追加する css, javascript をまず読み込んだ上で、SpHelper の dateInput function を使って protocalendar を表示します。

[php] <?php $html-&gt;css('protocalendar/simple', null, array(), false); ?> <?php $javascript-&gt;link('protocalendar/protocalendar', false); ?> <?php $javascript-&gt;link('protocalendar/lang_ja', false); ?> (省略) <?php echo $sp-&gt;dateInput('date'); ?> (省略) [/php]