From bd80af6b605270e1ed7247e8d100fc89be1f4b4d Mon Sep 17 00:00:00 2001 From: Graham Knop Date: Mon, 19 Apr 2010 16:37:11 -0500 Subject: [PATCH] fix packing in templates and snippets --- lib/WebGUI/Asset/Snippet.pm | 58 ++++++++++++++++++++---------------- lib/WebGUI/Asset/Template.pm | 1 + 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/lib/WebGUI/Asset/Snippet.pm b/lib/WebGUI/Asset/Snippet.pm index 44323415e..8567c0ad8 100644 --- a/lib/WebGUI/Asset/Snippet.pm +++ b/lib/WebGUI/Asset/Snippet.pm @@ -35,38 +35,44 @@ property snippet => ( hoverHelp => ['snippet description','Asset_Snippet'], default => undef, ); -around snippet => sub { - my $orig = shift; +sub _trigger_snippet { my $self = shift; - if (@_ > 1) { - my $packed = $_[0]; - if ( $self->mimeType eq "text/html" ) { - HTML::Packer::minify( \$packed, { - remove_comments => 1, - do_javascript => "shrink", - do_stylesheet => "minify", - } ); - } - elsif ( $self->mimeType eq "text/css" ) { - CSS::Packer::minify( \$packed, { - compress => 'minify', - }); - } - elsif ( $self->mimeType eq 'text/javascript' ) { - JavaScript::Packer::minify( \$packed, { - compress => "shrink", - }); - } - $self->snippetPacked($packed); + my ($new, $old) = @_; + if ($new ne $old) { + $self->_clear_snippetPacked; } - $self->$orig(@_); -}; - +} property snippetPacked => ( fieldType => "hidden", - default => undef, noFormPost => 1, + lazy => 1, + clearer => '_clear_snippetPacked', + builder => '_build_snippetPacked', ); + +sub _build_snippetPacked { + my $self = shift; + my $snippet = $self->snippet; + if ( $self->mimeType eq "text/html" ) { + HTML::Packer::minify( \$snippet, { + remove_comments => 1, + do_javascript => "shrink", + do_stylesheet => "minify", + } ); + } + elsif ( $self->mimeType eq "text/css" ) { + CSS::Packer::minify( \$snippet, { + compress => 'minify', + }); + } + elsif ( $self->mimeType eq 'text/javascript' ) { + JavaScript::Packer::minify( \$snippet, { + compress => "shrink", + }); + } + $snippet; +} + property usePacked => ( tab => 'properties', fieldType => 'yesNo', diff --git a/lib/WebGUI/Asset/Template.pm b/lib/WebGUI/Asset/Template.pm index c888b0e41..e7a9f698c 100644 --- a/lib/WebGUI/Asset/Template.pm +++ b/lib/WebGUI/Asset/Template.pm @@ -85,6 +85,7 @@ sub _build_templatePacked { do_javascript => 'shrink', do_stylesheet => 'minify', } ); + $template; } property usePacked => (