Skip to content

Instantly share code, notes, and snippets.

@thomas-lebeau
Created April 30, 2015 08:54
Show Gist options
  • Save thomas-lebeau/5f686120dd50a41336cb to your computer and use it in GitHub Desktop.
Save thomas-lebeau/5f686120dd50a41336cb to your computer and use it in GitHub Desktop.
Override kirby user field to select current user by default
<?php
class UserField extends SelectField {
public function input() {
$select = new Brick('select');
$select->addClass('selectbox');
$select->attr(array(
'name' => $this->name(),
'id' => $this->id(),
'required' => $this->required(),
'autocomplete' => $this->autocomplete(),
'autofocus' => $this->autofocus(),
'readonly' => $this->readonly(),
'disabled' => $this->disabled(),
));
$select->append($this->option('null', '', $this->value() == 'null'));
if($this->readonly()) {
$select->attr('tabindex', '-1');
}
foreach(site()->users() as $user) {
if ($this->value() == '') {
$selected = $user->isCurrent();
} else {
$selected = $this->value() == $user->username();
}
$displayName = ($user->firstName() || $user->lastName())? $user->firstName().' '.$user->lastName() : $user->username();
$select->append($this->option($user->username(), $displayName, $selected));
}
$inner = new Brick('div');
$inner->addClass('selectbox-wrapper');
$inner->append($select);
$wrapper = new Brick('div');
$wrapper->addClass('input input-with-selectbox');
$wrapper->append($inner);
if($this->readonly()) {
$wrapper->addClass('input-is-readonly');
} else {
$wrapper->attr('data-focus', 'true');
}
return $wrapper;
}
public function validate() {
return site()->users()->find($this->value()) || $this->value() == 'null';
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment