Add the numbers format console menus, showing the validation options in 2 columns. #682

Closed
wants to merge 5 commits into
from
View
3 lib/Cake/Console/Command/Task/ControllerTask.php
@@ -397,11 +397,12 @@ public function listAll($useDbConfig = null) {
if ($this->interactive == true) {
$this->out(__d('cake_console', 'Possible Controllers based on your current database:'));
+ $this->hr();
$this->_controllerNames = array();
$count = count($this->__tables);
for ($i = 0; $i < $count; $i++) {
$this->_controllerNames[] = $this->_controllerName($this->_modelName($this->__tables[$i]));
- $this->out($i + 1 . ". " . $this->_controllerNames[$i]);
+ $this->out(sprintf("%2d. %s", $i + 1, $this->_controllerNames[$i]));
}
return $this->_controllerNames;
}
View
27 lib/Cake/Console/Command/Task/ModelTask.php
@@ -169,8 +169,9 @@ public function inOptions($options, $prompt = null, $default = null) {
$valid = false;
$max = count($options);
while (!$valid) {
+ $len = strlen((count($options)+1));
foreach ($options as $i => $option) {
- $this->out($i + 1 . '. ' . $option);
+ $this->out(sprintf("%${len}d. %s", $i + 1, $option));
}
if (empty($prompt)) {
$prompt = __d('cake_console', 'Make a selection from the choices above');
@@ -403,20 +404,23 @@ public function fieldValidation($fieldName, $metaData, $primaryKey = 'id') {
while ($anotherValidator == 'y') {
if ($this->interactive) {
$this->out();
- $this->out(__d('cake_console', 'Field: %s', $fieldName));
- $this->out(__d('cake_console', 'Type: %s', $metaData['type']));
+ $this->out(__d('cake_console', 'Field: <info>%s</info>', $fieldName));
+ $this->out(__d('cake_console', 'Type: <info>%s</info>', $metaData['type']));
$this->hr();
$this->out(__d('cake_console', 'Please select one of the following validation options:'));
$this->hr();
- }
- $prompt = '';
- for ($i = 1; $i < $defaultChoice; $i++) {
- $prompt .= $i . ' - ' . $this->_validations[$i] . "\n";
+ for ($i = 1, $m = $defaultChoice / 2; $i < $m; $i++) {
+ $strAux = sprintf("%2d. %s", $i, $this->_validations[$i]);
+ $strAux = $strAux.str_repeat(" ", 31 - strlen($strAux));
+ $strAux .= sprintf("%2d. %s", $m + $i, $this->_validations[$m + $i]);
+ $this->out($strAux);
+ }
+ $this->out(__d('cake_console', "%s - Do not do any validation on this field.", $defaultChoice));
+ $this->hr();
}
- $prompt .= __d('cake_console', "%s - Do not do any validation on this field.\n", $defaultChoice);
- $prompt .= __d('cake_console', "... or enter in a valid regex validation string.\n");
+ $prompt = __d('cake_console', "... or enter in a valid regex validation string.\n");
$methods = array_flip($this->_validations);
$guess = $defaultChoice;
if ($metaData['null'] != 1 && !in_array($fieldName, array($primaryKey, 'created', 'modified', 'updated'))) {
@@ -436,6 +440,8 @@ public function fieldValidation($fieldName, $metaData, $primaryKey = 'id') {
$guess = $methods['date'];
} elseif ($metaData['type'] == 'time') {
$guess = $methods['time'];
+ } elseif ($metaData['type'] == 'datetime') {
+ $guess = $methods['datetime'];
} elseif ($metaData['type'] == 'inet') {
$guess = $methods['ip'];
}
@@ -842,8 +848,9 @@ public function listAll($useDbConfig = null) {
}
if ($this->interactive === true) {
$this->out(__d('cake_console', 'Possible Models based on your current database:'));
+ $len = strlen(($count + 1));
for ($i = 0; $i < $count; $i++) {
- $this->out($i + 1 . ". " . $this->_modelNames[$i]);
+ $this->out(sprintf("%${len}d. %s", $i + 1, $this->_modelNames[$i]));
}
}
return $this->_tables;
View
2 lib/Cake/Console/ConsoleOutput.php
@@ -133,7 +133,7 @@ class ConsoleOutput {
'info' => array('text' => 'cyan'),
'success' => array('text' => 'green'),
'comment' => array('text' => 'blue'),
- 'question' => array('text' => "magenta"),
+ 'question' => array('text' => 'magenta'),
);
/**