Support align attribute for img with caption

This is achieved by preparing CSS definitions that emulates the behavior
of the align attribute, and passing it to the outermost IMG wrapper
(A or TABLE) instead of passing the align value to IMG directly.
master
Giuseppe Bilotta 2010-01-05 15:23:22 +01:00
parent e22b1d0521
commit 4bda18a50a
2 changed files with 36 additions and 5 deletions

View File

@ -155,16 +155,23 @@ sub preprocess (@) {
'" height="'.$dheight.'"'.
(exists $params{alt} ? ' alt="'.$params{alt}.'"' : '').
(exists $params{title} ? ' title="'.$params{title}.'"' : '').
(exists $params{align} ? ' align="'.$params{align}.'"' : '').
(exists $params{class} ? ' class="'.$params{class}.'"' : '').
(exists $params{id} ? ' id="'.$params{id}.'"' : '').
' />';
if (! defined $params{link} || lc($params{link}) eq 'yes') {
$imgtag='<a href="'.$fileurl.'">'.$imgtag.'</a>';
if (exists $params{caption} || !exists $params{align}) {
$imgtag='<a href="'.$fileurl.'">'.$imgtag.'</a>';
} else {
$imgtag='<a href="'.$fileurl.'" class="align-'.$params{align}.'">'.$imgtag.'</a>';
}
}
elsif ($params{link} =~ /^\w+:\/\//) {
$imgtag='<a href="'.$params{link}.'">'.$imgtag.'</a>';
if (exists $params{caption} || !exists $params{align}) {
$imgtag='<a href="'.$params{link}.'">'.$imgtag.'</a>';
} else {
$imgtag='<a href="'.$params{link}.'" class="align-'.$params{align}.'">'.$imgtag.'</a>';
}
}
else {
my $b = bestlink($params{page}, $params{link});
@ -173,12 +180,16 @@ sub preprocess (@) {
add_depends($params{page}, $b, deptype("presence"));
$imgtag=htmllink($params{page}, $params{destpage},
$params{link}, linktext => $imgtag,
noimageinline => 1);
noimageinline => 1,
(exists $params{caption} || !exists $params{align}) ?
() : (class => 'align-'.$params{align}));
}
}
if (exists $params{caption}) {
return '<table class="img">'.
return '<table class="img'.
(exists $params{align} ? ' align-'.$params{align} : '').
'">'.
'<caption>'.$params{caption}.'</caption>'.
'<tr><td>'.$imgtag.'</td></tr>'.
'</table>';

View File

@ -82,6 +82,26 @@ div.tags {
text-align: center;
}
.align-left {
float:left;
}
.align-right {
float:right;
}
.align-top {
vertical-align:top;
}
.align-bottom {
vertical-align:bottom;
}
.align-middle {
vertical-align:middle;
}
#backlinks {
margin-top: 1em;
}