__PACKAGE__->mk_accessors(
qw/ default first /
);
sub
render{
my
(
$self
,
$options
,
$view
)=
@_
;
if
(
$view
) {
$self
->{view}=
$view
; }
my
$request
=
$self
->request;
my
$result
=
''
;
my
$disabled
=
''
;
my
$class
=
'form_select'
;
$self
->label(
' '
)
if
(!
$self
->label);
$class
=
$self
->{class}
if
exists
(
$self
->{class});
my
$name
=
' name="'
.
$self
->name.
'" '
;
my
$id
=
' id="'
.
$self
->name.
'" '
;
my
$checked
=
''
;
$self
->{submitted} = 1
if
(
$request
->{
$self
->name });
if
(
$self
->{submitted} == 0){
$request
->{
$self
->name } =
$self
->
default
if
(
$self
->
default
);
}
if
(
$options
->{frozen}){
$disabled
=
' disabled '
if
(
$options
->{frozen} == 1);
}
if
(
$self
->dbdata and
$self
->dbid and
$self
->dblabel){
my
@t
= @{
$self
->dbdata };
foreach
(
@t
){
my
$label_method
=
$self
->dblabel;
my
$value_method
=
$self
->dbid;
my
$l
=
$_
->
$label_method
;
my
$v
=
$_
->
$value_method
;
$self
->options->{
$l
}=
$v
;
}
}
$result
.=
'<select class="'
.
$class
.
'" '
.
$self
->get_attr().
$disabled
.
$id
.
$name
.
'>'
;
my
$result2
=
''
;
if
((
$self
->options)or (
$self
->optionsnum)){
my
$optiontags
=
''
;
my
$first
=
''
;
if
(
$self
->optionsnum){
foreach
(@{
$self
->optionsnum}){
while
(
my
(
$key
,
$value
) =
each
%$_
) {
my
$values
=
$request
->{
$self
->name };
$values
= [
$values
]
unless
ref
(
$values
) =~ /ARRAY/;
$checked
=
''
;
if
( @{
$values
} &&
$value
) {
if
(
grep
{
$_
eq
$value
if
(
$_
) } @{
$values
} ){
$checked
=
' selected '
; }
}
if
(
$self
->first) {
if
(
$value
ne
$self
->first){
$optiontags
.=
'<option '
.
$checked
.
' value="'
.
$value
.
'">'
.
$key
.
'</option>'
;
}
else
{
$first
=
'<option '
.
$checked
.
' value="'
.
$value
.
'">'
.
$key
.
'</option>'
;
}
}
else
{
$optiontags
.=
'<option '
.
$checked
.
' value="'
.
$value
.
'">'
.
$key
.
'</option>'
;
}
$result2
.=
'<input type="hidden" '
.
$id
.
$name
.
' value="'
.
$value
.
'">'
if
((
$disabled
ne
''
)&& (
$checked
ne
''
));
}
}
}
if
(
$self
->options){
foreach
my
$key
(
sort
keys
%{
$self
->options}){
my
$value
=
$self
->options->{
$key
};
$value
=
""
if
(!
$value
);
my
$values
=
$request
->{
$self
->name };
$values
= [
$values
]
unless
ref
(
$values
) =~ /ARRAY/;
$checked
=
''
;
if
(@{
$values
} &&
$value
) {
foreach
(@{
$values
}){
if
(
$_
){
$checked
=
' selected '
if
$_
eq
$value
; }
}
}
$self
->first(
''
)
if
(!
$self
->first);
if
(
$value
ne
$self
->first){
$optiontags
.=
'<option '
.
$checked
.
' value="'
.
$value
.
'">'
.
$key
.
'</option>'
;
}
else
{
$first
=
'<option '
.
$checked
.
' value="'
.
$value
.
'">'
.
$key
.
'</option>'
;
}
$result2
.=
'<input type="hidden" '
.
$id
.
$name
.
' value="'
.
$value
.
'">'
if
((
$disabled
ne
''
)&& (
$checked
ne
''
));
}
}
$result
.=
$first
.
$optiontags
;
}
$result
.=
'</select>'
;
return
$self
->vor(
$options
).
$result
.
$result2
.
$self
->nach
if
(
$self
->{pure});
return
$self
->vor(
$options
).
$result
.
$result2
.
$self
->nach;
}
sub
get_value{
my
(
$self
) =
@_
;
my
$result
=
''
;
$result
=
$self
->{request}->{
$self
->name}
if
exists
(
$self
->{request}->{
$self
->name});
$result
=
''
if
(
$result
eq
'-1'
);
return
$result
;
}
1;