getStylesheets()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 4
Ratio 100 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 4
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
require_once(dirname(__FILE__) . '/../select2/Select2.class.php');
3
4
/**
5
 * This widget is designed to generate more user friendly autocomplete widgets.
6
 *
7
 * @package     symfony
8
 * @subpackage  widget
9
 * @link        https://github.com/19Gerhard85/sfSelect2WidgetsPlugin
10
 * @author      Ing. Gerhard Schranz <[email protected]>
11
 * @version     0.1 2013-03-11
12
 */
13 View Code Duplication
class sfWidgetFormI18nSelect2ChoiceLanguage extends sfWidgetFormI18nChoiceLanguage
0 ignored issues
show
Duplication introduced by
This class seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
14
{
15
    /**
16
     * Configures the current widget.
17
     *
18
     * Available options:
19
     *
20
     *  * url:            The URL to call to get the choices to use (required)
21
     *  * config:         A JavaScript array that configures the JQuery autocompleter widget
22
     *  * value_callback: A callback that converts the value before it is displayed
23
     *
24
     * @param array $options     An array of options
25
     * @param array $attributes  An array of default HTML attributes
26
     *
27
     * @see sfWidgetForm
28
     */
29
    protected function configure($options = array(), $attributes = array())
30
    {
31
        $this->addOption('width', sfConfig::get('sf_sfSelect2Widgets_width'));
32
33
        parent::configure($options, $attributes);
34
35
        if (!$this->getOption('culture')) {
36
            $this->setOption('culture', sfContext::getInstance()->getUser()->getCulture());
37
        }
38
    }
39
40
    public function getChoices()
41
    {
42
        $choices = parent::getChoices();
43
44
        if (count($choices) > 0 && isset($choices['']) && $choices[''] == '') {
45
            $choices[''] = '&nbsp;';
46
        }
47
48
        return $choices;
49
    }
50
51
    /**
52
     * @param  string $name        The element name
53
     * @param  string $value       The date displayed in this widget
54
     * @param  array  $attributes  An array of HTML attributes to be merged with the default HTML attributes
55
     * @param  array  $errors      An array of errors for the field
56
     *
57
     * @return string An HTML tag string
58
     *
59
     * @see sfWidgetForm
60
     */
61
    public function render($name, $value = null, $attributes = array(), $errors = array())
62
    {
63
        $id = $this->generateId($name);
64
65
        $return = parent::render($name, $value, $attributes, $errors);
66
67
        $return .= sprintf(<<<EOF
68
<script type="text/javascript">
69
function formatResult(item)
70
{
71
    return item.text;
72
}
73
74
jQuery("#%s").select2(
75
{
76
    width:              '%s',
77
    allowClear:         %s,
78
});
79
</script>
80
EOF
81
            ,
82
            $id,
83
            $this->getOption('width'),
84
            $this->getOption('add_empty') == true ? 'true' : 'false'
85
        );
86
87
        return $return;
88
    }
89
90
    /**
91
     * Gets the stylesheet paths associated with the widget.
92
     *
93
     * @return array An array of stylesheet paths
94
     */
95
    public function getStylesheets()
96
    {
97
        return Select2::addStylesheets();
98
    }
99
100
    /**
101
     * Gets the JavaScript paths associated with the widget.
102
     *
103
     * @return array An array of JavaScript paths
104
     */
105
    public function getJavascripts()
106
    {
107
        return Select2::addJavascripts($this->getOption('culture'));
108
    }
109
}
110