The following works WITHOUT modifying the Password widget, I just hope this isn't a bug
I will repackage this as a module in it's own right outside of the other module I'm developing it for.
Code:
/**
* Pointers
*/
$conf = &$GLOBALS['TL_DCA']['tl_member']['config'];
$fields = &$GLOBALS['TL_DCA']['tl_member']['fields'];
$palettes = &$GLOBALS['TL_DCA']['tl_member']['palettes'];
$subpalettes = &$GLOBALS['TL_DCA']['tl_member']['subpalettes'];
$lang = &$GLOBALS['TL_LANG']['tl_member'];
/**
* Configuration
*/
$conf['onload_callback'][] = array('tl_member_ef','password_toggle_load');
/**
* Fields
*/
$fields['password_random'] = array(
'label' => &$lang['password_random'],
'inputType' => 'checkbox',
'exclude' => true,
'eval' => array('submitOnChange'=>true),
'save_callback' => array(
array('tl_member_ef','password_toggle_save')
)
);
class tl_member_ef extends Backend{
public function password_toggle_load(DataContainer $dc){
$r=$this->Database->prepare('SELECT `password_random` FROM tl_member WHERE id=?')
->execute($dc->id);
$s = &$GLOBALS['TL_DCA']['tl_member']['subpalettes'];
if($r->password_random){
$s['login'] = str_replace('password_random,password','password_random',$s['login']);
}
}
public function password_toggle_save($value,DataContainer $dc){
$s = &$GLOBALS['TL_DCA']['tl_member']['subpalettes'];
if($value){
$GLOBALS['TL_DCA']['tl_member']['fields']['password']['eval']['disabled']=true;
$s['login'] = str_replace('password_random,password','password_random',$s['login']);
}
return $value;
}
}
Bookmarks