Convert Text, Url, JsonTable and AssetReportQuery to use headTags.

This commit is contained in:
Colin Kuskie 2010-09-14 11:33:23 -07:00
parent 397d0db245
commit fd7fe89f35
4 changed files with 58 additions and 12 deletions

View file

@ -169,6 +169,20 @@ sub getValue {
#-------------------------------------------------------------------
=head2 headTags
Sets the JS for this form plugin
=cut
sub headTags {
my $self = shift;
my $session = $self->session;
$session->style->setScript($session->url->extras("yui-webgui/build/form/assetReportQuery.js"),{ type=>"text/javascript" });
}
#-------------------------------------------------------------------
=head2 i18n
Returns the i18n object for the form
@ -186,6 +200,7 @@ sub i18n {
return $self->{_i18n};
}
#----------------------------------------------------------------------------
=head2 toHtml
@ -246,7 +261,6 @@ sub toHtml {
$style->setRawHeadTags(qq|<script type="text/javascript">var classValues = $jsonStr; </script>|);
my $jsonData = $self->get("value") || q|{ "isNew" : "true" }|;
$style->setRawHeadTags(qq|<script type="text/javascript">var dataValues = $jsonData; var first_row_error_msg = '$first_row_error_msg';</script>|);
$session->style->setScript($session->url->extras("yui-webgui/build/form/assetReportQuery.js"),{ type=>"text/javascript" });
#Decode JSON data for filling in some of the fields
my $jsonDataHash = JSON->new->decode($jsonData);

View file

@ -129,6 +129,31 @@ sub getValue {
#-------------------------------------------------------------------
=head2 headTags ( )
Send JS required for this plugin.
=cut
sub headTags {
my $self = shift;
my ( $url, $style ) = $self->session->quick(qw( url style ));
$style->setScript(
$url->extras('yui/build/yahoo-dom-event/yahoo-dom-event.js'),
{ type => 'text/javascript' },
);
$style->setScript(
$url->extras('yui/build/json/json-min.js'),
{ type => 'text/javascript' },
);
$style->setScript(
$url->extras('yui-webgui/build/form/jsontable.js'),
{ type => 'text/javascript' },
);
}
#-------------------------------------------------------------------
=head2 toHtml ( )
Renders an input tag of type text.
@ -193,21 +218,12 @@ sub toHtml {
$output .= '<input type="hidden" name="' . $self->get('name') . '" value="' . $value . '" />';
# Existing rows are entirely built in javascript from the JSON in the hidden field
$style->setScript(
$url->extras('yui/build/yahoo-dom-event/yahoo-dom-event.js'),
{ type => 'text/javascript' },
);
$style->setScript(
$url->extras('yui/build/json/json-min.js'),
{ type => 'text/javascript' },
);
$output .= sprintf '<script src="%s" type="text/javascript"></script>',
$url->extras('yui-webgui/build/form/jsontable.js');
$output .= '<script type="text/javascript">'
. q{new WebGUI.Form.JsonTable("} . $self->get('name') . q{","} . $self->get( 'id' ) . q{", }
. JSON->new->encode( $self->get('fields') ) . q{ );}
. '</script>';
$self->headTags;
return $output;
}

View file

@ -125,6 +125,7 @@ Renders an input tag of type text.
sub toHtml {
my $self = shift;
$self->headTags();
my $value = $self->fixMacros($self->fixQuotes($self->fixSpecialCharacters(scalar $self->getOriginalValue)));
return '<input id="'.$self->get('id').'" type="text" name="'.$self->get("name").'" value="'.$value.'" size="'.$self->get("size").'" maxlength="'.$self->get("maxlength").'" '.$self->get("extras").' />';
}

View file

@ -125,6 +125,22 @@ sub getValueAsHtml {
}
#-------------------------------------------------------------------
=head2 headTags ( )
Add JS.
=cut
sub headTags {
my $self = shift;
return if $self->headTagsSent;
$self->session->style->setScript($self->session->url->extras('addHTTP.js'),{ type=>'text/javascript' });
$self->SUPER::headTags();
return;
}
#-------------------------------------------------------------------
=head2 isDynamicCompatible ( )
@ -147,7 +163,6 @@ Renders a URL field.
sub toHtml {
my $self = shift;
$self->session->style->setScript($self->session->url->extras('addHTTP.js'),{ type=>'text/javascript' });
$self->set("extras", $self->get('extras') . ' onblur="addHTTP(this.form.'.$self->get("name").')"');
return $self->SUPER::toHtml;
}