Created
December 15, 2008 22:59
-
-
Save isaiahdw/36146 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class form extends form_core { | |
public static $errors = array(); | |
public static $form_data = array(); | |
public static $lang_key; | |
public static function open($attr = array(), $lang_key = '', $errors = array(), $form_data = array(), $hidden = NULL) | |
{ | |
is_string($attr) AND $attr = array('action' => $attr); | |
self::$errors = $errors; | |
self::$lang_key = $lang_key; | |
self::$form_data = $form_data; | |
$action = $attr['action']; | |
unset($attr['action']); | |
return parent::open($action, $attr, $hidden); | |
} | |
public static function errors($title = 'Oops there was an error!') | |
{ | |
if (empty(self::$errors) OR ! is_array(self::$errors)) | |
return ''; | |
$output = '<div class="form_errors"><h3>'.$title.'</h3><ul>'; | |
foreach(self::$errors AS $key => $error) | |
{ | |
$error = Kohana::lang(self::$lang_key.'.'.$key.'.'.$error); | |
$output .= '<li>'.html::anchor('#'.$key, $error).'</li>'; | |
} | |
return $output.'</ul></div>'; | |
} | |
public static function label($text = '', $data = '', $extra = '') | |
{ | |
// Do we need to call Kohana::lang()? | |
$text = (strpos($text, '.') === 0) ? Kohana::lang(self::$lang_key.$text) : $text; | |
if ( ! is_string($data)) | |
{ | |
isset($data['for']) AND $field_name = $data['for']; | |
// Use the name if we have one | |
isset($data['name']) AND $field_name = $data['name']; | |
} | |
else | |
{ | |
$field_name = $data; | |
} | |
// Display the errors | |
if (isset($field_name) AND ! empty(self::$errors[$field_name])) | |
$text = '<a name="'.$field_name.'">'.$text.'</a> - <span class="error">'.Kohana::lang(self::$lang_key.'.'.$field_name.'.'.self::$errors[$field_name]).'</span>'; | |
return parent::label($data, $text, $extra); | |
} | |
/** | |
* Creates an HTML form input tag. Defaults to a text type. | |
* | |
* @param string|array input name or an array of HTML attributes | |
* @param string input value, when using a name | |
* @param array array of error messages | |
* @return string | |
*/ | |
public static function input($data, $value = NULL) | |
{ | |
if ( ! is_array($data)) | |
{ | |
$data = array('name' => $data); | |
} | |
// Set the automatic value if there is one | |
$data['value'] = (isset(self::$form_data[$data['name']]) AND $value === NULL) ? self::$form_data[$data['name']] : $value; | |
// Default class | |
! isset($data['class']) AND $data['class'] = 'long'; | |
isset(self::$errors[$data['name']]) AND $data['class'] = $data['class'].' error'; | |
return parent::input($data, $value); | |
} | |
public static function password($data, $value = '') | |
{ | |
if ( ! is_array($data)) | |
{ | |
$data = array('name' => $data); | |
} | |
$data['type'] = 'password'; | |
return self::input($data, $value); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?=form::open('admin/members/add/', 'members.add.form', $errors)?> | |
<fieldset class="ujstyle"> | |
<div class="spacer w99"> | |
<div class="block left padding"> | |
<?=form::label('.display_name.label', 'display_name')?> | |
<?=form::input('display_name', $form['display_name'])?> | |
</div> | |
<div class="block left padding"> | |
<?=form::label('.username.label', 'username')?> | |
<?=form::input('username', $form['username'])?> | |
</div> | |
<div class="block left padding"> | |
<?=form::label('.email.label', 'email')?> | |
<?=form::input('email', $form['email'])?> | |
</div> | |
<div class="block left padding"> | |
<?=form::label('.password.label', 'password')?> | |
<?=form::password('password', '')?> | |
</div> | |
<div class="block left padding"> | |
<?=form::label('.password2.label', 'password2')?> | |
<?=form::password('password2', '')?> | |
</div> | |
</div> | |
</fieldset> | |
<p class="right"><?=form::submit('submit', Kohana::lang('members.form.save'))?></p> | |
</form> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment