Schrift
[thread]3044[/thread]

Frage zu HTML::Template::Compiled: <%IF foo%><%IF bar%>bla<%/IF%><%/IF%> (Seite 7)

Leser: 1


<< |< 1 ... 4 5 6 7 8 9 10 11 >| >> 107 Einträge, 11 Seiten
ptk
 2007-03-20 01:43
#28760 #28760
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=pq,19.03.2007, 18:46][quote=ptk,13.03.2007, 23:27]Wahrscheinlich brauchst du die gleiche Lösung wie bei Perl-Sourcecode oder bei Pods: du musst deklarieren, welches Encoding deine Templates haben[/quote]
ich glaube, hier ging es eher um die template-parameter...
ich glaub übrigens, HTML::Template macht auch nur uri_escape[/quote]
Wahrscheinlich braucht man beides, eine uri_escape und eine uri_escape_utf8-Variante. Bei Zeichen zwischen 160 und 255 verhalten sich nämlich beide unterschiedlich:
Code: (dl )
1
2
3
4
$ perl -MURI::Escape=uri_escape,uri_escape_utf8 -e 'warn uri_escape_utf8("\x{fc}")'
%C3%BC at -e line 1.
$ perl -MURI::Escape=uri_escape,uri_escape_utf8 -e 'warn uri_escape("\x{fc}")'
%FC at -e line 1.
Da man nicht weiß, was die Gegenstelle erwartet, muss man eigentlich auch beide Varianten anbieten.
GwenDragon
 2007-03-20 11:01
#28761 #28761
User since
2005-01-17
14848 Artikel
Admin1
[Homepage]
user image
[quote=ptk,20.03.2007, 00:43]Wahrscheinlich braucht man beides, eine uri_escape und eine uri_escape_utf8-Variante. ... Da man nicht weiß, was die Gegenstelle erwartet, muss man eigentlich auch beide Varianten anbieten.[/quote]
Man braucht sogar merh.
Denn es gibt ja nicht nur ISO-8859-1 und UTF-8, sondern viel mehr Charsets.

Was der Client ans charsetencodings kann, ist mit $ENV{'HTTP_ACCEPT_CHARSET'} abfragbar.

Aber was das Template als Encoding ausgeben muss, sollte eingestellt werden können.

Da muss wohl in HTML::Template::Compiled::Utils bei my $escaped_uri = escape_uri($raw_uri) ein zweiter Parameter -encoding => 'iso-8859-1' oder -encoding => '-auto' eingefügt werden.

Vielleicht baut pq ja sowas ein.
Oder du überschreibst HTML::Template::Compiled::Utils::escape_uri mit einer eigenen.
steffenw
 2007-04-16 17:31
#28762 #28762
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Eigentlich funktioniert das Template. Auch wenn keine rows da sind, verschwndet die Tabelle.
Nur die Zeilen werden wegen __counter__ nicht durchnummeriert und die Einfärbung jeder zweiten Zeile klappt wegen __odd__ nicht. Das Problem ist ja auch, daß ich nicht auf __counter__ der aktuellen loop zugreifen will, sondern auf das der elterlichen loop.
Die Frage ist auch, kann man das eleganter schreiben?
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
use strict;
use warnings;

use HTML::Template::Compiled;

my $htc = HTML::Template::Compiled->new(
tagstyle          => [qw(-classic +asp)],
loop_context_vars => 1,
scalarref         => \<<'EOT');
<%LOOP row%>
   <%IF __first__%>
       <table>
           <tr>
               <td>counter</td>
               <%LOOP .head%>
                   <td><%= _%></td>
               <%/LOOP%>
           </tr>
   <%/IF%>
   <%LOOP _%>
       <tr>
           <td><%= ..__counter__%></td>
           <td<%IF ..__odd__%> style="background-color:#efefef"<%/IF%>>
               <%= _%>
           </td>
       </tr>
   <%/LOOP%>
   <%IF __last__%>
       </table>
   <%/IF%>
<%/LOOP%>
EOT
$htc->param(
   head => [map {"head $_"} 1 .. 3],
   row  => [
       ['a' .. 'c'],
       ['d' .. 'f'],
   ],
);
print $htc->output();
\n\n

<!--EDIT|steffenw|1176730477-->
$SIG{USER} = sub {love 'Perl' or die};
pq
 2007-04-23 20:48
#28763 #28763
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=steffenw,16.04.2007, 15:31]Das Problem ist ja auch, daß ich nicht auf __counter__ der aktuellen loop zugreifen will, sondern auf das der elterlichen loop.
[/quote]
das geht leider nicht, die loop-context-variablen beziehen sich nur auf
die aktuelle schleife, in etwa wie $_ in perl.
die frage ist, willst du wirklich in der inneren schleife jedesmal die nummer
der aeusseren schleife wiederholen?
wenn nicht:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
    <tr><td rowspan="<%= _# %>"><%= __counter__ %></td></tr>
   <%IF __odd__%>
   <%LOOP _ %>
     <tr><td style="background-color:#efefef"><%= _%></td></tr>
   <%/LOOP%>
   <%ELSE %>
   <%LOOP _ %>
     <tr><td><%= _%></td></tr>
   <%/LOOP%>
   <%/IF %>

ungetestet. das <%= _# %> geht erst ab version 0.85\n\n

<!--EDIT|pq|1177346995-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
steffenw
 2007-05-10 11:47
#28764 #28764
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
ich konnte version 0.85 noch nicht testen. ActiveState baut es nicht, weil im Testscript ein Fehler aufgetreten ist. http://ppm.activestate.com/BuildStatus/5.8-H.html
$SIG{USER} = sub {love 'Perl' or die};
GwenDragon
 2007-05-10 14:23
#28765 #28765
User since
2005-01-17
14848 Artikel
Admin1
[Homepage]
user image
@steffenw
Also mit Perl 5.6.1 Build 638 und 5.8.8 Build 819 besteht auch die 0.85 die Tests ohne fatalen Fehler.
Du musst nur das Package von CPAN holen, entpacken, in das Verzeichnis gehen und folgendes aufrufen:
perl Makefile.PL
nmake
nmake test
nmake install

Ich verstehe nicht, warum ActiveState nicht mit ihrem aktuellen Perl testen. :rock:
renee
 2007-05-10 14:49
#28766 #28766
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Weil sie abwärtskompatibel bleiben wollen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pq
 2007-05-10 15:25
#28767 #28767
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
das problem ist, dass ein test URI::Escape voraussetzt, ohne es vorher abzufragen.
das vergesse ich immer. das sollte dann in der nächsten version gefixt sein.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
steffenw
 2007-05-10 16:30
#28768 #28768
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
:)
$SIG{USER} = sub {love 'Perl' or die};
steffenw
 2007-06-01 13:34
#28769 #28769
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Was ich letztens vermisst habe war, ESCAPE=VBSCRIPT. Das mußte ich so außerhalb machen:
Code: (dl )
s{"}{""}xmsg;
Aber wer schreibt schon VB-Script.

Und ein ESCAPE XHTML-/XML-uft8 fehlt eigentlich auch noch, wenn man reines utf-8 macht, dann muß z.B. ein ä kein auml; werden, sondern dieses 2 byte-Zeichen paßt schon. Nur die wirklich schlimmen Zeichen stören.
Code: (dl )
1
2
3
$encoded = encode_entities($input, '<>&"');
# or
$encoded = encode_entities_numeric($input, '<>&"');
Das erste steht so in der pod von CPAN:HTML::Entities. Das zweite paßt besser zu XML.
$SIG{USER} = sub {love 'Perl' or die};
<< |< 1 ... 4 5 6 7 8 9 10 11 >| >> 107 Einträge, 11 Seiten



View all threads created 2006-12-15 15:33.