1<?php
2/**
3 * Class helper_plugin_bureaucracy_fieldselect
4 *
5 * Creates a dropdown list
6 */
7class helper_plugin_bureaucracy_fieldselect extends helper_plugin_bureaucracy_field {
8
9    protected $mandatory_args = 3;
10
11    /**
12     * Arguments:
13     *  - cmd
14     *  - label
15     *  - option1|option2|etc
16     *  - ^ (optional)
17     *
18     * @param array $args The tokenized definition, only split at spaces
19     */
20    public function initialize($args) {
21        $this->init($args);
22        $this->opt['args'] = array_map('trim', explode('|',array_shift($args)));
23        $this->standardArgs($args);
24        if (!isset($this->opt['value']) && isset($this->opt['optional'])) {
25            array_unshift($this->opt['args'],' ');
26        }
27    }
28
29    /**
30     * Render the field as XHTML
31     *
32     * Outputs the represented field using the passed Doku_Form object.
33     * Additional parameters (CSS class & HTML name) are passed in $params.
34     *
35     * @params array     $params Additional HTML specific parameters
36     * @params Doku_Form $form   The target Doku_Form object
37     * @params int       $formid unique identifier of the form which contains this field
38     */
39    public function renderfield($params, Doku_Form $form, $formid) {
40        $this->_handlePreload();
41        if(!$form->_infieldset){
42            $form->startFieldset('');
43        }
44        if ($this->error) {
45            $params['class'] = 'bureaucracy_error';
46        }
47        $params = array_merge($this->opt, $params);
48        $form->addElement(call_user_func_array('form_makeListboxField',
49                                                $this->_parse_tpl(
50                                                    array(
51                                                        '@@NAME@@',
52                                                        $params['args'],
53                                                        '@@VALUE|' . $params['args'][0] . '@@',
54                                                        '@@DISPLAY@@',
55                                                        '@@ID@@',
56                                                        '@@CLASS@@'
57                                                    ),
58                                                    $params
59                                                )));
60    }
61}
62