1 <?php
2 /**
3 * @package FrameworkOnFramework
4 * @subpackage form
5 * @copyright Copyright (C) 2010-2016 Nicholas K. Dionysopoulos / Akeeba Ltd. All rights reserved.
6 * @license GNU General Public License version 2 or later; see LICENSE.txt
7 */
8 // Protect from unauthorized access
9 defined('FOF_INCLUDED') or die;
10
11 JFormHelper::loadFieldClass('language');
12
13 /**
14 * Form Field class for FOF
15 * Available site languages
16 *
17 * @package FrameworkOnFramework
18 * @since 2.0
19 */
20 class FOFFormFieldLanguage extends JFormFieldLanguage implements FOFFormField
21 {
22 protected $static;
23
24 protected $repeatable;
25
26 /** @var FOFTable The item being rendered in a repeatable form field */
27 public $item;
28
29 /** @var int A monotonically increasing number, denoting the row number in a repeatable view */
30 public $rowid;
31
32 /**
33 * Method to get certain otherwise inaccessible properties from the form field object.
34 *
35 * @param string $name The property name for which to the the value.
36 *
37 * @return mixed The property value or null.
38 *
39 * @since 2.0
40 */
41 public function __get($name)
42 {
43 switch ($name)
44 {
45 case 'static':
46 if (empty($this->static))
47 {
48 $this->static = $this->getStatic();
49 }
50
51 return $this->static;
52 break;
53
54 case 'repeatable':
55 if (empty($this->repeatable))
56 {
57 $this->repeatable = $this->getRepeatable();
58 }
59
60 return $this->repeatable;
61 break;
62
63 default:
64 return parent::__get($name);
65 }
66 }
67
68 /**
69 * Method to get the field options.
70 *
71 * @since 2.0
72 *
73 * @return array The field option objects.
74 */
75 protected function getOptions()
76 {
77 $options = parent::getOptions();
78
79 $noneoption = $this->element['none'] ? $this->element['none'] : null;
80
81 if ($noneoption)
82 {
83 array_unshift($options, JHtml::_('select.option', '*', JText::_($noneoption)));
84 }
85
86 return $options;
87 }
88
89 /**
90 * Get the rendering of this field type for static display, e.g. in a single
91 * item view (typically a "read" task).
92 *
93 * @since 2.0
94 *
95 * @return string The field HTML
96 */
97 public function getStatic()
98 {
99 $class = $this->element['class'] ? ' class="' . (string) $this->element['class'] . '"' : '';
100
101 return '<span id="' . $this->id . '" ' . $class . '>' .
102 htmlspecialchars(FOFFormFieldList::getOptionName($this->getOptions(), $this->value), ENT_COMPAT, 'UTF-8') .
103 '</span>';
104 }
105
106 /**
107 * Get the rendering of this field type for a repeatable (grid) display,
108 * e.g. in a view listing many item (typically a "browse" task)
109 *
110 * @since 2.0
111 *
112 * @return string The field HTML
113 */
114 public function getRepeatable()
115 {
116 $class = $this->element['class'] ? (string) $this->element['class'] : '';
117
118 return '<span class="' . $this->id . ' ' . $class . '">' .
119 htmlspecialchars(FOFFormFieldList::getOptionName($this->getOptions(), $this->value), ENT_COMPAT, 'UTF-8') .
120 '</span>';
121 }
122 }
123