Added standard fields, login/reset display improvements
This commit is contained in:
@@ -13,6 +13,8 @@
|
||||
abstract class lnApp_Controller_Login extends Controller_TemplateDefault {
|
||||
protected $auth_required = FALSE;
|
||||
|
||||
protected $login_attribute = 'email';
|
||||
|
||||
/**
|
||||
* Activate an account so that it can login and use the site
|
||||
*/
|
||||
@@ -208,12 +210,12 @@ abstract class lnApp_Controller_Login extends Controller_TemplateDefault {
|
||||
*/
|
||||
public function action_reset() {
|
||||
// Minutes to keep our token
|
||||
$token_expire = 15*60;
|
||||
$token_expire = 15;
|
||||
|
||||
// If the user posted their details to reset their password
|
||||
if ($this->request->post()) {
|
||||
// If the username is correct, create a method token
|
||||
if ($ao=ORM::factory('Account',array('email'=>$this->request->post('username'))) AND $ao->loaded()) {
|
||||
if ($this->request->post('username') AND ($ao=ORM::factory('Account',array($this->login_attribute=>$this->request->post('username')))) AND $ao->loaded()) {
|
||||
$token = $ao->token($token_expire,'account','user:resetpassword',2);
|
||||
|
||||
if ($token) {
|
||||
|
@@ -226,6 +226,9 @@ abstract class lnApp_Email extends Kohana_Email {
|
||||
* Get email details
|
||||
*/
|
||||
private function email($key) {
|
||||
if (! isset($this->_email[$key]))
|
||||
return array();
|
||||
|
||||
if (is_array($this->_email[$key]) AND isset($this->_email[$key]['email']))
|
||||
return $this->_email[$key]['email'];
|
||||
else
|
||||
|
@@ -10,183 +10,17 @@
|
||||
* @license http://dev.leenooks.net/license.html
|
||||
*/
|
||||
abstract class lnApp_Form extends Kohana_Form {
|
||||
/**
|
||||
* Render our control group form attributes
|
||||
*
|
||||
* @return array((string) control group wrapper,(array) attributes to exclude
|
||||
*/
|
||||
private static function _controlgroup($name,array &$attributes=NULL) {
|
||||
// Bypass this rendering if nocg is set.
|
||||
if (isset($attributes['nocg'])) {
|
||||
unset($attributes['nocg']);
|
||||
return '%s';
|
||||
}
|
||||
|
||||
if (! isset($attributes['class']))
|
||||
$attributes['class'] = 'form-control';
|
||||
|
||||
$output = '';
|
||||
|
||||
$output .= '<div class="input-group">';
|
||||
|
||||
// Only need col-md for horizonal forms?
|
||||
if (isset($attributes['label'])) {
|
||||
$output .= Form::label($name,$attributes['label'],array('class'=>'control-label'));
|
||||
unset($attributes['label']);
|
||||
}
|
||||
|
||||
if (isset($attributes['help-block'])) {
|
||||
$help = $attributes['help-block'];
|
||||
unset($attributes['help-block']);
|
||||
}
|
||||
|
||||
if (isset($attributes['add-on'])) {
|
||||
$addon = $attributes['add-on'];
|
||||
unset($attributes['add-on']);
|
||||
}
|
||||
|
||||
$classdiv = FALSE;
|
||||
if (isset($attributes['divclass'])) {
|
||||
$output .= sprintf('<div class="%s">',$attributes['divclass']);
|
||||
unset($attributes['divclass']);
|
||||
$classdiv = TRUE;
|
||||
}
|
||||
|
||||
$output .= '%s';
|
||||
|
||||
if (in_array('required',$attributes))
|
||||
$output .= '<div class="help-block with-errors"></div>';
|
||||
|
||||
if ($classdiv)
|
||||
$output .= '</div>';
|
||||
|
||||
if (isset($help))
|
||||
$output .= sprintf('<span class="help-block">%s</span>',$help);
|
||||
|
||||
if (isset($addon))
|
||||
$output .= sprintf('<span class="input-group-addon">%s</span>',$addon);
|
||||
|
||||
$output .= '</div>';
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
public static function button($name,$body,array $attributes=NULL) {
|
||||
return sprintf(self::_controlgroup($name,$attributes),parent::button($name,$body,$attributes));
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrap our Form() functions with boostrap HTML
|
||||
*
|
||||
* @usedby Form::hidden
|
||||
* @usedby Form::password
|
||||
* @usedby Form::file
|
||||
* @usedby Form::checkbox
|
||||
* @usedby Form::radio
|
||||
* @usedby Form::submit
|
||||
* @usedby Form::image
|
||||
*/
|
||||
public static function input($name,$value=NULL,array $attributes=NULL) {
|
||||
return (isset($attributes['type']) AND $attributes['type'] == 'hidden') ? parent::input($name,$value,$attributes) : sprintf(self::_controlgroup($name,$attributes),parent::input($name,$value,$attributes));
|
||||
}
|
||||
|
||||
public static function select($name,array $options=NULL,$selected=NULL,array $attributes=NULL) {
|
||||
// If only 1 record, dont show select, but a hidden attribute and a displayed value.
|
||||
if (isset($attributes['oneonly']) AND $attributes['oneonly']) {
|
||||
$attributes['disabled'] = 'disabled';
|
||||
unset($attributes['oneonly']);
|
||||
}
|
||||
|
||||
if (isset($attributes['sort']) AND $attributes['sort']) {
|
||||
asort($options);
|
||||
unset($attributes['sort']);
|
||||
}
|
||||
|
||||
return sprintf(self::_controlgroup($name,$attributes),parent::select($name,$options,$selected,$attributes));
|
||||
}
|
||||
|
||||
public static function textarea($name,$body='',array $attributes=NULL,$double_encode=TRUE) {
|
||||
if (! isset($attributes['id']))
|
||||
$attributes['id'] = preg_replace('/[\[\]]/','_',$name);
|
||||
|
||||
if (isset($attributes['editor'])) {
|
||||
switch ($attributes['editor']) {
|
||||
case 'tinymce':
|
||||
Script::factory()
|
||||
->type('file')
|
||||
->data('media/vendor/tinymce/js/tinymce/jquery.tinymce.min.js');
|
||||
|
||||
Script::factory()
|
||||
->type('stdin')
|
||||
->data('$("#'.$attributes['id'].'").tinymce({
|
||||
script_url : "'.URL::site('media/vendor/tinymce/js/tinymce/tinymce.min.js').'",
|
||||
theme : "modern",
|
||||
plugins: [ "code","link","image","preview","table" ],
|
||||
menubar: "",
|
||||
toolbar: "undo redo | styleselect | bold italic | link image | table | preview | code",
|
||||
});');
|
||||
|
||||
break;
|
||||
|
||||
case 'wysihtml5':
|
||||
Style::factory()
|
||||
->type('file')
|
||||
->data('media/theme/bootstrap/vendor/bootstrap-wysihtml5-0.0.2/bootstrap-wysihtml5-0.0.2.css');
|
||||
|
||||
Script::factory()
|
||||
->type('file')
|
||||
->data('media/theme/bootstrap/vendor/bootstrap-wysihtml5-0.0.2/libs/js/wysihtml5-0.3.0_rc2.min.js');
|
||||
|
||||
Script::factory()
|
||||
->type('file')
|
||||
->data('media/theme/bootstrap/vendor/bootstrap-wysihtml5-0.0.2/bootstrap-wysihtml5-0.0.2.min.js');
|
||||
|
||||
Script::factory()
|
||||
->type('stdin')
|
||||
->data('$("#'.$attributes['id'].'").wysihtml5({
|
||||
html: true,
|
||||
parserRules: {
|
||||
tags: {
|
||||
p: {},
|
||||
strong: {},
|
||||
table: {},
|
||||
tbody: {},
|
||||
thead: {},
|
||||
tr: {},
|
||||
td: {
|
||||
check_attributes: {
|
||||
colspan: "numbers",
|
||||
rowspan: "numbers",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});');
|
||||
|
||||
break;
|
||||
default:
|
||||
throw new Kohana_Exception('Unknown editor :editor for textarea',array(':editor'=>$attributes['editor']));
|
||||
}
|
||||
|
||||
unset($attributes['edit']);
|
||||
}
|
||||
|
||||
return sprintf(self::_controlgroup($name,$attributes),parent::textarea($name,$body,$attributes,$double_encode));
|
||||
}
|
||||
|
||||
public static function textarea_rows($textarea,$min=10,$char="\n") {
|
||||
return ($x=count(explode($char,$textarea))) < $min ? $min : $x;
|
||||
}
|
||||
|
||||
public static function textarea_width($textarea,$min=76,$char="\n") {
|
||||
public static function textarea_cols($textarea,$min=60,$char="\n") {
|
||||
$x = $min;
|
||||
foreach (explode($char,$textarea) as $string)
|
||||
{
|
||||
if (strlen($string) > $x)
|
||||
$x = strlen($string);
|
||||
}
|
||||
|
||||
return $x;
|
||||
return $x+2;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
Reference in New Issue
Block a user