package CGI::Lazy::Widget::Controller; use strict; use JSON; use JavaScript::Minifier qw(minify); use CGI::Lazy::Globals; use base qw(CGI::Lazy::Widget); #---------------------------------------------------------------------------------------- sub buildCheckbox { my $self = shift; my $fieldname = shift; my $webcontrol = shift; my $value = shift; if ($webcontrol->{value}) { if ($value eq $webcontrol->{value}) { return ($webcontrol->{value}, ' checked '); } else { return ($webcontrol->{value}); } } elsif ($webcontrol->{sql}) { my ($query, @binds) = @{$webcontrol->{sql}}; my $lookupvalue = $self->q->db->get($query, @binds); if ($value eq $lookupvalue) { return ($lookupvalue, ' checked '); } else { return ($lookupvalue); } } } #---------------------------------------------------------------------------------------- sub buildSelect { my $self = shift; my $fieldname = shift; my $webcontrol = shift; my $value = shift; my $list = []; my $vals = {}; tie %$vals, 'Tie::IxHash'; if ($webcontrol->{values} ) { if (ref $webcontrol->{values} eq 'HASH') { $vals->{''} = '' unless $webcontrol->{notNull}; $vals = $webcontrol->{values}; } elsif (ref $webcontrol->{values} eq 'ARRAY') { $vals->{''} = '' unless $webcontrol->{notNull}; $vals->{$_} = $_ for @{$webcontrol->{values}}; } else { return; } } elsif ($webcontrol->{sql}) { my ($query, @binds) = @{$webcontrol->{sql}}; $vals->{''} = '' unless $webcontrol->{notNull}; $vals->{$_->[0]} = $_->[1] for @{$self->q->db->getarray($query, @binds)}; } foreach (keys %$vals) { if ($vals->{$_} eq $value) { push @$list, {'ITEM.LABEL' => $_, 'ITEM.VALUE' => $vals->{$_}, 'ITEM.SELECTED' => ' selected '}; } else { push @$list, {'ITEM.LABEL' => $_, 'ITEM.VALUE' => $vals->{$_}}; } } return $list; } #---------------------------------------------------------------------------------------- sub buildRadio { my $self = shift; my $fieldname = shift; my $webcontrol = shift; my $webname = shift; my $webID = shift; my $value = shift; my $list = []; my $vals = {}; tie %$vals, 'Tie::IxHash'; if ($webcontrol->{values} ) { if (ref $webcontrol->{values} eq 'HASH') { $vals = $webcontrol->{values}; } elsif (ref $webcontrol->{values} eq 'ARRAY') { $vals->{$_} = $_ for @{$webcontrol->{values}}; } else { return; } } elsif ($webcontrol->{sql} ) { my ($query, @binds) = @{$webcontrol->{sql}}; $vals->{$_->[0]} = $_->[1] for @{$self->q->db->getarray($query, @binds)}; } foreach (sort keys %$vals) { if ($vals->{$_} eq $value) { push @$list, { "ID.".$fieldname => $webID."-$_", 'NAME.'.$fieldname => $webname, 'VALUELABEL.'.$fieldname => $_, 'VALUE.'.$fieldname => $vals->{$_}, 'CHECKED.'.$fieldname => ' checked ', }; } else { push @$list, { "ID.".$fieldname => $webID."-$_", 'NAME.'.$fieldname => $webname, 'VALUELABEL.'.$fieldname => $_, 'VALUE.'.$fieldname => $vals->{$_}, }; } } return $list; } #---------------------------------------------------------------------------------------- sub contents { my $self = shift; my %args = @_; my $incoming = $args{incoming}; my $template = $self->vars->{template}; my $widgetID = $self->widgetID; my $containerID = $self->vars->{containerId}; my $divopen = $args{nodiv} ? '' : "