adding strfrotime to FormHelper::month #700, fix to radios which still need to be moved

git-svn-id: https://svn.cakephp.org/repo/branches/1.2.x.x@5178 3807eeeb-6ff5-0310-8944-8be069107fe0
This commit is contained in:
gwoo 2007-05-24 23:14:14 +00:00
parent 624e02374a
commit 9667aa793a
3 changed files with 49 additions and 35 deletions

View file

@ -66,7 +66,7 @@ class FormHelper extends AppHelper {
* *
* @access public * @access public
* @param string $model The model object which the form is being defined for * @param string $model The model object which the form is being defined for
* @param array $options * @param array $options
* @return string An formatted opening FORM tag. * @return string An formatted opening FORM tag.
*/ */
function create($model = null, $options = array()) { function create($model = null, $options = array()) {
@ -113,10 +113,10 @@ class FormHelper extends AppHelper {
$fieldTypes = $fields->extract('{n}.type'); $fieldTypes = $fields->extract('{n}.type');
$fieldLengths = $fields->extract('{n}.length'); $fieldLengths = $fields->extract('{n}.length');
if (!count($fieldNames) || !count($fieldTypes)) { if (!count($fieldNames) || !count($fieldTypes)) {
trigger_error(__('(FormHelper::create) Unable to use model field data. If you are using a model without a database table, try implementing loadInfo()', true), E_USER_WARNING); trigger_error(__('(FormHelper::create) Unable to use model field data. If you are using a model without a database table, try implementing loadInfo()', true), E_USER_WARNING);
} }
if (!count($fieldNames) || !count($fieldLengths) || (count($fieldNames) != count($fieldTypes))) { if (!count($fieldNames) || !count($fieldLengths) || (count($fieldNames) != count($fieldTypes))) {
trigger_error(__('(FormHelper::create) Unable to use model field data. If you are using a model without a database table, try implementing loadInfo()', true), E_USER_WARNING); trigger_error(__('(FormHelper::create) Unable to use model field data. If you are using a model without a database table, try implementing loadInfo()', true), E_USER_WARNING);
} }
$data = array( $data = array(
'fields' => array_combine($fieldNames, $fieldTypes), 'fields' => array_combine($fieldNames, $fieldTypes),
@ -468,7 +468,7 @@ class FormHelper extends AppHelper {
if(isset($type)) { if(isset($type)) {
$map = array( $map = array(
'string' => 'text', 'datetime' => 'datetime', 'string' => 'text', 'datetime' => 'datetime',
'boolean' => 'checkbox', 'timestamp' => 'datetime', 'boolean' => 'checkbox', 'timestamp' => 'datetime',
'text' => 'textarea', 'time' => 'time', 'text' => 'textarea', 'time' => 'time',
'date' => 'date' 'date' => 'date'
); );
@ -557,10 +557,10 @@ class FormHelper extends AppHelper {
unset($options['empty']); unset($options['empty']);
} }
$type = $options['type']; $type = $options['type'];
$before = $options['before']; $before = $options['before'];
$between = $options['between']; $between = $options['between'];
$after = $options['after']; $after = $options['after'];
unset($options['type'], $options['before'], $options['between'], $options['after']); unset($options['type'], $options['before'], $options['between'], $options['after']);
switch ($type) { switch ($type) {
@ -617,20 +617,20 @@ class FormHelper extends AppHelper {
*/ */
function checkbox($fieldName, $options = array()) { function checkbox($fieldName, $options = array()) {
$this->__secure(); $this->__secure();
$value = 1; $value = 1;
if(isset($options['value'])) { if(isset($options['value'])) {
$value = $options['value']; $value = $options['value'];
unset($options['value']); unset($options['value']);
} }
$options = $this->__initInputField($fieldName, am(array('type' => 'checkbox'), $options)); $options = $this->__initInputField($fieldName, am(array('type' => 'checkbox'), $options));
$model = $this->model(); $model = $this->model();
if (ClassRegistry::isKeySet($model)) { if (ClassRegistry::isKeySet($model)) {
$object =& ClassRegistry::getObject($model); $object =& ClassRegistry::getObject($model);
} }
$output = null; $output = null;
if(isset($object) && is_int($options['value'])) { if(isset($object) && is_int($options['value'])) {
$db =& ConnectionManager::getDataSource($object->useDbConfig); $db =& ConnectionManager::getDataSource($object->useDbConfig);
@ -638,16 +638,16 @@ class FormHelper extends AppHelper {
$options['value'] = 1; $options['value'] = 1;
$output = $this->hidden($fieldName, array('value' => '-1', 'id' => $options['id'] . '_'), true); $output = $this->hidden($fieldName, array('value' => '-1', 'id' => $options['id'] . '_'), true);
} }
if(isset($options['value']) && $value == $options['value']) { if(isset($options['value']) && $value == $options['value']) {
$options['checked'] = 'checked'; $options['checked'] = 'checked';
} else if(!empty($value)) { } else if(!empty($value)) {
$options['value'] = $value; $options['value'] = $value;
} }
$output .= sprintf($this->Html->tags['checkbox'], $this->model(), $this->field(), $this->_parseAttributes($options, null, null, ' ')); $output .= sprintf($this->Html->tags['checkbox'], $this->model(), $this->field(), $this->_parseAttributes($options, null, null, ' '));
return $this->output($output); return $this->output($output);
} }
/** /**
* Creates a text input widget. * Creates a text input widget.
* *
@ -730,8 +730,8 @@ class FormHelper extends AppHelper {
* Creates a button tag. * Creates a button tag.
* *
* @param mixed $params Array of params [content, type, options] or the * @param mixed $params Array of params [content, type, options] or the
* content of the button. * content of the button.
* @param string $type Type of the button (button, submit or reset). * @param string $type Type of the button (button, submit or reset).
* @param array $options Array of options. * @param array $options Array of options.
* @return string A HTML button tag. * @return string A HTML button tag.
* @access public * @access public
@ -760,7 +760,7 @@ class FormHelper extends AppHelper {
/** /**
* Creates a submit button element. * Creates a submit button element.
* *
* @param string $caption The label appearing on the button * @param string $caption The label appearing on the button
* @param array $options * @param array $options
* @return string A HTML submit button * @return string A HTML submit button
*/ */
@ -788,7 +788,7 @@ class FormHelper extends AppHelper {
$divOptions = am(array('class' => 'submit'), $div); $divOptions = am(array('class' => 'submit'), $div);
} }
$out = $secured . $this->output(sprintf($this->Html->tags['submit'], $this->_parseAttributes($options, null, '', ' '))); $out = $secured . $this->output(sprintf($this->Html->tags['submit'], $this->_parseAttributes($options, null, '', ' ')));
if (isset($divOptions)) { if (isset($divOptions)) {
$out = $secured . $this->Html->div($divOptions['class'], $out, $divOptions); $out = $secured . $this->Html->div($divOptions['class'], $out, $divOptions);
} }
@ -798,7 +798,7 @@ class FormHelper extends AppHelper {
/** /**
* Creates an image input widget. * Creates an image input widget.
* *
* @param string $path Path to the image file, relative to the webroot/img/ directory. * @param string $path Path to the image file, relative to the webroot/img/ directory.
* @param array $options Array of HTML attributes. * @param array $options Array of HTML attributes.
* @return string HTML submit image element * @return string HTML submit image element
*/ */
@ -816,13 +816,13 @@ class FormHelper extends AppHelper {
* @param string $fieldName Name attribute of the SELECT * @param string $fieldName Name attribute of the SELECT
* @param array $options Array of the OPTION elements (as 'value'=>'Text' pairs) to be used in the SELECT element * @param array $options Array of the OPTION elements (as 'value'=>'Text' pairs) to be used in the SELECT element
* @param mixed $selected The option selected by default. If null, the default value * @param mixed $selected The option selected by default. If null, the default value
* from POST data will be used when available. * from POST data will be used when available.
* @param array $attributes The HTML attributes of the select element. If * @param array $attributes The HTML attributes of the select element. If
* 'showParents' is included in the array and set to true, * 'showParents' is included in the array and set to true,
* an additional option element will be added for the parent * an additional option element will be added for the parent
* of each option group. * of each option group.
* @param mixed $showEmpty If true, the empty select option is shown. If a string, * @param mixed $showEmpty If true, the empty select option is shown. If a string,
* that string is displayed as the empty element. * that string is displayed as the empty element.
* @return string Formatted SELECT element * @return string Formatted SELECT element
*/ */
function select($fieldName, $options = array(), $selected = null, $attributes = array(), $showEmpty = '') { function select($fieldName, $options = array(), $selected = null, $attributes = array(), $showEmpty = '') {
@ -882,7 +882,7 @@ class FormHelper extends AppHelper {
* *
* @param string $fieldName Prefix name for the SELECT element * @param string $fieldName Prefix name for the SELECT element
* @param string $selected Option which is selected. * @param string $selected Option which is selected.
* @param array $attributes HTML attributes for the select element * @param array $attributes HTML attributes for the select element
* @param mixed $showEmpty Show/hide the empty select option * @param mixed $showEmpty Show/hide the empty select option
* @return string * @return string
*/ */
@ -999,11 +999,11 @@ class FormHelper extends AppHelper {
* @return string The HTML formatted OPTION element * @return string The HTML formatted OPTION element
*/ */
function dateTime($tagName, $dateFormat = 'DMY', $timeFormat = '12', $selected = null, $attributes = array(), $showEmpty = true) { function dateTime($tagName, $dateFormat = 'DMY', $timeFormat = '12', $selected = null, $attributes = array(), $showEmpty = true) {
$day = null; $day = null;
$month = null; $month = null;
$year = null; $year = null;
$hour = null; $hour = null;
$min = null; $min = null;
$meridian = null; $meridian = null;
if (empty($selected)) { if (empty($selected)) {
@ -1196,7 +1196,13 @@ class FormHelper extends AppHelper {
} }
break; break;
case 'month': case 'month':
$data = array('01' => 'January', '02' => 'February', '03' => 'March', '04' => 'April', '05' => 'May', '06' => 'June', '07' => 'July', '08' => 'August', '09' => 'September', '10' => 'October', '11' => 'November', '12' => 'December'); $data = array('01'=>strftime("%B", strtotime("1/1/2006")), '02'=>strftime("%B", strtotime("2/1/2006")),
'03'=>strftime("%B", strtotime("3/1/2006")), '04'=>strftime("%B", strtotime("4/1/2006")),
'05'=>strftime("%B", strtotime("5/1/2006")), '06'=>strftime("%B", strtotime("6/1/2006")),
'07'=>strftime("%B", strtotime("7/1/2006")), '08'=>strftime("%B", strtotime("8/1/2006")),
'09'=>strftime("%B", strtotime("9/1/2006")), '10'=>strftime("%B", strtotime("10/1/2006")),
'11'=>strftime("%B", strtotime("11/1/2006")),'12'=>strftime("%B", strtotime("12/1/2006"))
);
break; break;
case 'year': case 'year':
$current = intval(date('Y')); $current = intval(date('Y'));

View file

@ -403,12 +403,12 @@ class HtmlHelper extends AppHelper {
function radio($fieldName, $options, $inbetween = null, $htmlAttributes = array()) { function radio($fieldName, $options, $inbetween = null, $htmlAttributes = array()) {
$this->setFormTag($fieldName); $this->setFormTag($fieldName);
$value = isset($htmlAttributes['value']) ? $htmlAttributes['value'] : $this->tagValue($fieldName); $value = isset($htmlAttributes['value']) ? $htmlAttributes['value'] : $this->__value($fieldName);
$out = array(); $out = array();
foreach($options as $optValue => $optTitle) { foreach($options as $optValue => $optTitle) {
$optionsHere = array('value' => $optValue); $optionsHere = array('value' => $optValue);
if ($value !== false && $optValue == $value) { if (!empty($value) && $optValue == $value) {
$optionsHere['checked'] = 'checked'; $optionsHere['checked'] = 'checked';
} }
$parsedOptions = $this->_parseAttributes(array_merge($htmlAttributes, $optionsHere), null, '', ' '); $parsedOptions = $this->_parseAttributes(array_merge($htmlAttributes, $optionsHere), null, '', ' ');

View file

@ -565,7 +565,15 @@ class FormHelperTest extends CakeTestCase {
'<\/select>'. '<\/select>'.
'/i', $result); '/i', $result);
} }
function testMonth() {
$result = $this->Form->month('Model.field');
$this->assertPattern('/' .
'<option\s+value="01"[^>]*>January<\/option>\s+'.
'<option\s+value="02"[^>]*>February<\/option>\s+'.
'/i', $result);
}
function testDaySelect() { function testDaySelect() {
} }