99 lines
2.9 KiB
PHP
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);
|
|
}
|
|
}
|