<p></p>
<p>Regards, Ruslan. From phone.<br>
08.08.2011 14:01 пользователь &quot;? sunnavy&quot; &lt;<a href="mailto:sunnavy@bestpractical.com">sunnavy@bestpractical.com</a>&gt; написал:<br>
&gt;<br>
&gt; The branch, 4.0/dashboard-chart-with-umlauts has been created<br>
&gt;        at  c6fb9f54c37142df0089145c12ab4feab52d7d27 (commit)<br>
&gt;<br>
&gt; - Log -----------------------------------------------------------------<br>
&gt; commit c0ec1787729093b2064a36c9ef5cce5e84b763d5<br>
&gt; Author: sunnavy &lt;<a href="mailto:sunnavy@bestpractical.com">sunnavy@bestpractical.com</a>&gt;<br>
&gt; Date:   Mon Aug 8 17:31:41 2011 +0800<br>
&gt;<br>
&gt;    turn off utf8 as uri string is utf8 encoded, see also #18104<br>
&gt;<br>
&gt; diff --git a/lib/RT/Dashboard/Mailer.pm b/lib/RT/Dashboard/Mailer.pm<br>
&gt; index f6b1685..ae10d21 100644<br>
&gt; --- a/lib/RT/Dashboard/Mailer.pm<br>
&gt; +++ b/lib/RT/Dashboard/Mailer.pm<br>
&gt; @@ -476,7 +476,9 @@ sub BuildEmail {<br>
&gt;  }<br>
&gt;<br>
&gt;  sub GetResource {<br>
&gt; -    my $uri = URI-&gt;new(shift);<br>
&gt; +    my $string = shift;<br>
&gt; +    Encode::_utf8_off($string);<br>
&gt; +    my $uri = URI-&gt;new($string);</p>
<p>Shouldn&#39;t uri be escaped and contain only ASCII? I see this masking real issue.<br><br></p>
<p>&gt;     my ($content, $filename, $mimetype, $encoding);<br>
&gt;<br>
&gt;     $RT::Logger-&gt;debug(&quot;Getting resource $uri&quot;);<br>
&gt;<br>
&gt; commit c6fb9f54c37142df0089145c12ab4feab52d7d27<br>
&gt; Author: sunnavy &lt;<a href="mailto:sunnavy@bestpractical.com">sunnavy@bestpractical.com</a>&gt;<br>
&gt; Date:   Mon Aug 8 17:31:58 2011 +0800<br>
&gt;<br>
&gt;    test for dashboard chart with umlauts<br>
&gt;<br>
&gt; diff --git a/t/mail/dashboard-chart-with-umlauts.t b/t/mail/dashboard-chart-with-umlauts.t<br>
&gt; new file mode 100644<br>
&gt; index 0000000..cfde407<br>
&gt; --- /dev/null<br>
&gt; +++ b/t/mail/dashboard-chart-with-umlauts.t<br>
&gt; @@ -0,0 +1,88 @@<br>
&gt; +use strict;<br>
&gt; +use warnings;<br>
&gt; +<br>
&gt; +use RT::Test tests =&gt; 19;<br>
&gt; +use RT::Dashboard::Mailer;<br>
&gt; +use Encode;<br>
&gt; +<br>
&gt; +my $root = RT::Test-&gt;load_or_create_user( Name =&gt; &#39;root&#39; );<br>
&gt; +<br>
&gt; +my ( $baseurl, $m ) = RT::Test-&gt;started_ok;<br>
&gt; +ok( $m-&gt;login, &#39;logged in&#39; );<br>
&gt; +<br>
&gt; +RT::Test-&gt;create_ticket(<br>
&gt; +    Queue   =&gt; &#39;General&#39;,<br>
&gt; +    Subject =&gt; decode_utf8(&#39;test äöü&#39;),<br>
&gt; +);<br>
&gt; +<br>
&gt; +my $query = &quot;Subject LIKE &#39;test äöü&#39;&quot;;<br>
&gt; +<br>
&gt; +$m-&gt;get_ok(q{/Search/Chart.html?Query=Subject LIKE &#39;test äöü&#39;});<br>
&gt; +$m-&gt;submit_form(<br>
&gt; +    form_name =&gt; &#39;SaveSearch&#39;,<br>
&gt; +    fields    =&gt; {<br>
&gt; +        SavedSearchDescription =&gt; &#39;chart foo&#39;,<br>
&gt; +        SavedSearchOwner       =&gt; &#39;RT::User-&#39; . $root-&gt;id,<br>
&gt; +    },<br>
&gt; +    button =&gt; &#39;SavedSearchSave&#39;,<br>
&gt; +);<br>
&gt; +<br>
&gt; +# first, create and populate a dashboard<br>
&gt; +$m-&gt;get_ok(&#39;/Dashboards/Modify.html?Create=1&#39;);<br>
&gt; +$m-&gt;form_name(&#39;ModifyDashboard&#39;);<br>
&gt; +$m-&gt;field( &#39;Name&#39; =&gt; &#39;dashboard foo&#39; );<br>
&gt; +$m-&gt;click_button( value =&gt; &#39;Create&#39; );<br>
&gt; +<br>
&gt; +$m-&gt;follow_link_ok( { text =&gt; &#39;Content&#39; } );<br>
&gt; +my $form  = $m-&gt;form_name(&#39;Dashboard-Searches-body&#39;);<br>
&gt; +my @input = $form-&gt;find_input(&#39;Searches-body-Available&#39;);<br>
&gt; +my ($dashboards_component) =<br>
&gt; +  map { ( $_-&gt;possible_values )[1] }<br>
&gt; +  grep { ( $_-&gt;value_names )[1] =~ /^Chart/ } @input;<br>
&gt; +$form-&gt;value( &#39;Searches-body-Available&#39; =&gt; $dashboards_component );<br>
&gt; +$m-&gt;click_button( name =&gt; &#39;add&#39; );<br>
&gt; +$m-&gt;content_contains(&#39;Dashboard updated&#39;);<br>
&gt; +<br>
&gt; +$m-&gt;follow_link_ok( { text =&gt; &#39;Subscription&#39; } );<br>
&gt; +$m-&gt;form_name(&#39;SubscribeDashboard&#39;);<br>
&gt; +$m-&gt;field( &#39;Frequency&#39; =&gt; &#39;daily&#39; );<br>
&gt; +$m-&gt;field( &#39;Hour&#39;      =&gt; &#39;06:00&#39; );<br>
&gt; +$m-&gt;click_button( name =&gt; &#39;Save&#39; );<br>
&gt; +$m-&gt;content_contains(&#39;Subscribed to dashboard dashboard foo&#39;);<br>
&gt; +<br>
&gt; +$m-&gt;follow_link_ok( { text =&gt; &#39;Show&#39; } );<br>
&gt; +my ($src) = $m-&gt;content =~ qr{src=&quot;(/Search/Chart\?.*?)&quot;};<br>
&gt; +ok( $src, &#39;have chart image&#39; );<br>
&gt; +my $c     = $m-&gt;get($src);<br>
&gt; +my $image = $c-&gt;content;<br>
&gt; +<br>
&gt; +RT::Dashboard::Mailer-&gt;MailDashboards( All =&gt; 1 );<br>
&gt; +<br>
&gt; +my @mails = RT::Test-&gt;fetch_caught_mails;<br>
&gt; +is @mails, 1, &quot;got a dashboard mail&quot;;<br>
&gt; +<br>
&gt; +# can&#39;t use parse_mail here is because it deletes all attachments<br>
&gt; +# before we can call bodyhandle :/<br>
&gt; +use RT::EmailParser;<br>
&gt; +my $parser = RT::EmailParser-&gt;new;<br>
&gt; +$parser-&gt;ParseMIMEEntityFromScalar( $mails[0] );<br>
&gt; +my $mail = $parser-&gt;ParseMIMEEntityFromScalar( $mails[0] );<br>
&gt; +like(<br>
&gt; +    $mail-&gt;head-&gt;get(&#39;Subject&#39;),<br>
&gt; +    qr/Daily Dashboard: dashboard foo/,<br>
&gt; +    &#39;mail subject&#39;<br>
&gt; +);<br>
&gt; +<br>
&gt; +my ($mail_image) = grep { $_-&gt;mime_type eq &#39;image/png&#39; } $mail-&gt;parts;<br>
&gt; +ok( $mail_image, &#39;mail contains image attachment&#39; );<br>
&gt; +<br>
&gt; +my $handle = $mail_image-&gt;bodyhandle;<br>
&gt; +<br>
&gt; +my $mail_image_data = &#39;&#39;;<br>
&gt; +if ( my $io = $handle-&gt;open(&#39;r&#39;) ) {<br>
&gt; +    while ( defined( $_ = $io-&gt;getline ) ) { $mail_image_data .= $_ }<br>
&gt; +    $io-&gt;close;<br>
&gt; +}<br>
&gt; +<br>
&gt; +is( $mail_image_data, $image, &#39;image in mail is the same one in web&#39; );<br>
&gt; +<br>
&gt;<br>
&gt; -----------------------------------------------------------------------<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Rt-commit mailing list<br>
&gt; <a href="mailto:Rt-commit@lists.bestpractical.com">Rt-commit@lists.bestpractical.com</a><br>
&gt; <a href="http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-commit">http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-commit</a><br>
&gt;<br>
</p>