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> |