Files
2024-07-08 03:32:47 +09:00

99 lines
2.9 KiB
PHP

<?php
/**
* Class helper_plugin_bureaucracy_fieldyesno
*
* Creates a checkbox
*/
class helper_plugin_bureaucracy_fieldyesno extends helper_plugin_bureaucracy_field {
/**
* Arguments:
* - cmd
* - label
* - =yesvalue
* - !falsevalue
* - ^ (optional)
*
* @param array $args The tokenized definition, only split at spaces
*/
public function initialize($args) {
$this->init($args);
$newargs = array();
foreach ($args as $arg) {
switch ($arg[0]) {
case '=':
if($arg == '==1') {
$this->opt['value'] = '1';
}elseif($arg == '==0') {
$this->opt['value'] = '0';
}else{
$this->opt['true_value'] = substr($arg, 1);
}
break;
case '!':
$this->opt['false_value'] = substr($arg, 1);
break;
default:
$newargs[] = $arg;
}
}
$this->standardArgs($newargs);
$this->opt['optional'] = true;
}
/**
* Get an arbitrary parameter
*
* @param string $key
* @return mixed|null
*/
public function getParam($key) {
if ($key === 'value') {
if ($this->opt['value'] === '1') {
return isset($this->opt['true_value']) ?
$this->opt['true_value'] :
null;
} elseif ($this->opt['value'] === '0') {
return isset($this->opt['false_value']) ?
$this->opt['false_value'] :
null;
}
}
return parent::getParam($key);
}
/**
* Whether the field is true (used for depending fieldsets)
*
* @return bool whether field is set
*/
public function isSet_() {
return $this->opt['value'] === '1';
}
/**
* Render the field as XHTML
*
* @params array $params Additional HTML specific parameters
* @params Doku_Form $form The target Doku_Form object
* @params int $formid unique identifier of the form which contains this field
*/
public function renderfield($params, Doku_Form $form, $formid) {
$id = 'bureaucracy__'.md5(rand());
if(isset($this->opt['id'])) {
$id = $this->opt['id'];
}
$params = array_merge(
array('value' => false),
$this->opt,
$params
);
$check = $params['value'] ? 'checked="checked"' : '';
$this->tpl = '<label class="@@CLASS@@" for="'.$id.'"><span>@@DISPLAY@@</span>'.
'<input type="hidden" name="@@NAME@@" value="0" />' .
'<input type="checkbox" name="@@NAME@@" value="1" id="'.$id.'" ' . $check . ' />' .
'</label>';
parent::renderfield($params, $form, $formid);
}
}