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