Line # | Revision | Author | |
---|---|---|---|
1 | 8 | ahitrov@rambler.ru | <% $body %> |
2 | <%args> | ||
3 | |||
4 | $doc => undef | ||
5 | $field => 'body' | ||
6 | $text => undef | ||
7 | $imagefield => 'pictures' | ||
8 | $imageclass => '' | ||
9 | 55 | ahitrov@rambler.ru | $pclass => undef |
10 | 8 | ahitrov@rambler.ru | $rel => undef |
11 | $target => undef | ||
12 | $onclick => undef | ||
13 | |||
14 | </%args> | ||
15 | <%init> | ||
16 | |||
17 | return unless ref $doc || $text; | ||
18 | use locale; | ||
19 | my $body = $text || $doc->$field; | ||
20 | $body =~ s/\r//sgi; | ||
21 | $body =~ s/[\n\t\ ]*$//sgi; | ||
22 | 55 | ahitrov@rambler.ru | $pclass = $pclass ? ' class="'.$pclass.'"' : ''; |
23 | 8 | ahitrov@rambler.ru | if ($body !~ /(<br|<p)/i) { |
24 | $body =~ s/([^\n])\n([^\n])/$1<br>\n$2/gi; | ||
25 | 55 | ahitrov@rambler.ru | $body =~ s/\n{2,}/<\/p>\n\n<p$pclass>/gi; |
26 | 8 | ahitrov@rambler.ru | } |
27 | $body =~ s/\[br\]/<br>/gi; | ||
28 | if ( ref $doc ) { | ||
29 | my $iclass = $imageclass ? ' class="'.$imageclass.'"' : ''; | ||
30 | while ( $body =~ /\[%\ *(\w+)\ *%\]/gi ){ | ||
31 | my $img_id = $1; | ||
32 | my $images = $doc->get_image($img_id); | ||
33 | if ( !(ref $images && exists $images->{filename} ) && $img_id =~ /^([a-z]+)_(\d+)$/i ) { | ||
34 | my $iid = $2; | ||
35 | $images = $doc->get_image($1); | ||
36 | $images = exists $images->{"image_$iid"} ? $images->{"image_$iid"} : undef; | ||
37 | } | ||
38 | if ( !(ref $images && exists $images->{filename}) && $imagefield && $img_id =~ /^$imagefield\_(\d+)$/ ) { | ||
39 | $images = $doc->get_image($imagefield); | ||
40 | my $iid = $img_id; | ||
41 | $iid =~ s/$imagefield/image/; | ||
42 | $images = exists $images->{$iid} ? $images->{$iid} : undef; | ||
43 | } | ||
44 | my $IMG = ''; | ||
45 | if ( ref $images && exists $images->{filename} ) { | ||
46 | if ( $rel || $target || $onclick ) { | ||
47 | my ($a1,$a2) = defined $rel ? ('<a href="'.$images->{filename}.'" target="_blank" rel="'.$rel.'">','</a>') | ||
48 | : defined $onclick ? ('<a href="'.$images->{filename}.'" target="_blank" onclick="'.$onclick.'(\''.$images->{filename}.'\')">','</a>') | ||
49 | : defined $target ? ('<a href="'.$images->{filename}.'" target="'.$target.'">','</a>') | ||
50 | : ('',''); | ||
51 | $IMG = $a1.'<img src="'.$images->{mini}{filename}.'" width="'.$images->{mini}{width}.'" height="'.$images->{mini}{height}.'" border="0"'.$iclass.'>'.$a2; | ||
52 | } else { | ||
53 | $IMG = '<img src="'.$images->{filename}.'" width="'.$images->{width}.'" height="'.$images->{height}.'" border="0"'.$iclass.'>'; | ||
54 | } | ||
55 | $body =~ s/\[%\ *$img_id\ *%\]/$IMG/si; | ||
56 | } | ||
57 | } | ||
58 | } | ||
59 | |||
60 | </%init> |