Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F2894222
AphrontFormSelectControl.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Advanced/Developer...
View Handle
View Hovercard
Size
2 KB
Referenced Files
None
Subscribers
None
AphrontFormSelectControl.php
View Options
<?php
final
class
AphrontFormSelectControl
extends
AphrontFormControl
{
protected
function
getCustomControlClass
(
)
{
return
'aphront-form-control-select'
;
}
private
$options
;
private
$disabledOptions
=
array
(
)
;
public
function
setOptions
(
array
$options
)
{
$this
->
options
=
$options
;
return
$this
;
}
public
function
getOptions
(
)
{
return
$this
->
options
;
}
public
function
setDisabledOptions
(
array
$disabled
)
{
$this
->
disabledOptions
=
$disabled
;
return
$this
;
}
protected
function
renderInput
(
)
{
return
self
::
renderSelectTag
(
$this
->
getValue
(
)
,
$this
->
getOptions
(
)
,
array
(
'name'
=>
$this
->
getName
(
)
,
'disabled'
=>
$this
->
getDisabled
(
)
?
'disabled'
:
null
,
'id'
=>
$this
->
getID
(
)
,
)
,
$this
->
disabledOptions
)
;
}
public
static
function
renderSelectTag
(
$selected
,
array
$options
,
array
$attrs
=
array
(
)
,
array
$disabled
=
array
(
)
)
{
$option_tags
=
self
::
renderOptions
(
$selected
,
$options
,
$disabled
)
;
return
javelin_tag
(
'select'
,
$attrs
,
$option_tags
)
;
}
private
static
function
renderOptions
(
$selected
,
array
$options
,
array
$disabled
=
array
(
)
)
{
$disabled
=
array_fuse
(
$disabled
)
;
$tags
=
array
(
)
;
$already_selected
=
false
;
foreach
(
$options
as
$value
=>
$thing
)
{
if
(
is_array
(
$thing
)
)
{
$tags
[
]
=
phutil_tag
(
'optgroup'
,
array
(
'label'
=>
$value
,
)
,
self
::
renderOptions
(
$selected
,
$thing
)
)
;
}
else
{
// When there are a list of options including similar values like
// "0" and "" (the empty string), only select the first matching
// value. Ideally this should be more precise about matching, but we
// have 2,000 of these controls at this point so hold that for a
// broader rewrite.
if
(
!
$already_selected
&&
(
$value
==
$selected
)
)
{
$is_selected
=
'selected'
;
$already_selected
=
true
;
}
else
{
$is_selected
=
null
;
}
$tags
[
]
=
phutil_tag
(
'option'
,
array
(
'selected'
=>
$is_selected
,
'value'
=>
$value
,
'disabled'
=>
isset
(
$disabled
[
$value
]
)
?
'disabled'
:
null
,
)
,
$thing
)
;
}
}
return
$tags
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sun, Jan 19, 19:35 (1 d, 9 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1128028
Default Alt Text
AphrontFormSelectControl.php (2 KB)
Attached To
Mode
rP Phorge
Attached
Detach File
Event Timeline
Log In to Comment