[dw-free] Standardize height + width attributes for user icon display
[commit: http://hg.dwscoalition.org/dw-free/rev/efa4d53fc342]
http://bugs.dwscoalition.org/show_bug.cgi?id=926
Properly specify both width and height attributes for scaled userpics.
Patch by
draigwen.
Files modified:
http://bugs.dwscoalition.org/show_bug.cgi?id=926
Properly specify both width and height attributes for scaled userpics.
Patch by
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Files modified:
- cgi-bin/LJ/Userpic.pm
- cgi-bin/bml/scheme/blueshift.look
- cgi-bin/bml/scheme/celerity.look
- cgi-bin/bml/scheme/gradation-vertical.look
- cgi-bin/weblib.pl
-------------------------------------------------------------------------------- diff -r 19969e7506a3 -r efa4d53fc342 cgi-bin/LJ/Userpic.pm --- a/cgi-bin/LJ/Userpic.pm Tue Aug 11 16:20:04 2009 -0500 +++ b/cgi-bin/LJ/Userpic.pm Wed Aug 12 01:27:16 2009 -0500 @@ -331,6 +331,7 @@ sub imgtag { # parameters, set them. Otherwise, take what ever is set in # the userpic my $width = $opts{width} || $self->width; + my $height = $opts{height} || $self->height; my $keyword = $opts{keyword} || $self->keywords; # if no description is available for alttext, try to fall @@ -351,8 +352,9 @@ sub imgtag { } $title = LJ::ehtml( $title ); - return '<img src="' . $self->url . '" width="' . $width . - '" alt="' . $alttext . '" title="' . $title . '" class="userpic-img" />'; + return '<img src="' . $self->url . '" width="' . $width . + '" height="' . $height . '" alt="' . $alttext . + '" title="' . $title . '" class="userpic-img" />'; } # FIXME: should have alt text, if it should be kept @@ -379,6 +381,33 @@ sub imgtag_percentagesize { return '<img src="' . $self->url . '" width="' . $width . '" height="' . $height . '" class="userpic-img" />'; } + +# pass a fixed height or width that you want to be the size of the userpic +# must include either a height or width, if both are given the smaller of the two is used +# returns the width and height attributes as a string to insert into an img tag +sub img_fixedsize { + my $self = shift; + my %opts = @_; + + my $width = $opts{width} || 0; + my $height = $opts{height} || 0; + + if ( $width > 0 && $width < $self->width && + ( !$height || ( $width <= $height && $self->width >= $self->height ) ) ) { + my $ratio = $width / $self->width; + $height = int( $self->height * $ratio ); + } elsif ( $height > 0 && $height < $self->height ) { + my $ratio = $height / $self->height; + $width = int( $self->width * $ratio ); + } else { + $width = $self->width; + $height = $self->height; + } + + return 'height="' . $height . '" width="' . $width . '"'; +} + + # in scalar context returns comma-seperated list of keywords or "pic#12345" if no keywords defined # in list context returns list of keywords ( (pic#12345) if none defined ) diff -r 19969e7506a3 -r efa4d53fc342 cgi-bin/bml/scheme/blueshift.look --- a/cgi-bin/bml/scheme/blueshift.look Tue Aug 11 16:20:04 2009 -0500 +++ b/cgi-bin/bml/scheme/blueshift.look Wed Aug 12 01:27:16 2009 -0500 @@ -65,20 +65,14 @@ accountlinks<= my $inbox = $remote->notification_inbox; my $unread = $inbox->unread_count; my $identity = $remote->is_identity; - my $wh = ""; - if ( $userpic ) { - if ( $userpic->width > $userpic->height ) { - $wh = 'width="' . ( $userpic->width > 80 ? 80 : $userpic->width ) . '"'; - } else { - $wh = 'height="' . ( $userpic->height > 80 ? 80 : $userpic->height ) . '"'; - } - } $ret .= "<div id='account-links-userpic'><a href='$LJ::SITEROOT/editpics'>"; + if ( $userpic ) { + my $wh = $userpic->img_fixedsize( width => 80, height => 80 ); $ret .= "<img src='" . $userpic->url . "' $wh alt=\"$ML{'sitescheme.accountlinks.userpic.alt'}\" />"; } else { - $ret .= "<img src='$LJ::IMGPREFIX/nouserpic.png' width='80' alt=\"$ML{'sitescheme.accountlinks.userpic.alt'}\" />"; + $ret .= "<img src='$LJ::IMGPREFIX/nouserpic.png' width='80' height='80' alt=\"$ML{'sitescheme.accountlinks.userpic.alt'}\" />"; } $ret .= "</a></div>"; $ret .= "<div id='account-links-text'>"; diff -r 19969e7506a3 -r efa4d53fc342 cgi-bin/bml/scheme/celerity.look --- a/cgi-bin/bml/scheme/celerity.look Tue Aug 11 16:20:04 2009 -0500 +++ b/cgi-bin/bml/scheme/celerity.look Wed Aug 12 01:27:16 2009 -0500 @@ -64,7 +64,6 @@ accountlinks<= my $inbox = $remote->notification_inbox; my $unread = $inbox->unread_count; my $identity = $remote->is_identity; - my $wh = ""; $ret .= "<div id='account-links-text'>"; $ret .= "<form action='$LJ::SITEROOT/logout?ret=1' method='post'>"; @@ -151,14 +150,10 @@ userpic<= if ( $remote ) { my $userpic = $remote->userpic; if ( $userpic && !$LJ::IS_SSL ) { - if ( $userpic->width > $userpic->height ) { - $wh = 'width="' . ( $userpic->width > 80 ? 80 : $userpic->width ) . '"'; - } else { - $wh = 'height="' . ( $userpic->height > 80 ? 80 : $userpic->height ) . '"'; - } + my $wh = $userpic->img_fixedsize( width => 80, height => 80 ); $ret .= "<img src='" . $userpic->url . "' $wh alt=\"$ML{'sitescheme.accountlinks.userpic.alt'}\" />"; } else { - $ret .= "<img src='$imgprefix/nouserpic.png' width='80' alt=\"$ML{'sitescheme.accountlinks.userpic.alt'}\" />"; + $ret .= "<img src='$imgprefix/nouserpic.png' width='80' height='80' alt=\"$ML{'sitescheme.accountlinks.userpic.alt'}\" />"; } } diff -r 19969e7506a3 -r efa4d53fc342 cgi-bin/bml/scheme/gradation-vertical.look --- a/cgi-bin/bml/scheme/gradation-vertical.look Tue Aug 11 16:20:04 2009 -0500 +++ b/cgi-bin/bml/scheme/gradation-vertical.look Wed Aug 12 01:27:16 2009 -0500 @@ -65,20 +65,13 @@ accountlinks<= my $inbox = $remote->notification_inbox; my $unread = $inbox->unread_count; my $identity = $remote->is_identity; - my $wh = ""; - if ( $userpic ) { - if ( $userpic->width > $userpic->height ) { - $wh = 'width="' . ( $userpic->width > 80 ? 80 : $userpic->width ) . '"'; - } else { - $wh = 'height="' . ( $userpic->height > 80 ? 80 : $userpic->height ) . '"'; - } - } $ret .= "<div id='account-links-userpic'><a href='$LJ::SITEROOT/editpics'>"; if ( $userpic ) { + my $wh = $userpic->img_fixedsize( width => 80, height => 80 ); $ret .= "<img src='" . $userpic->url . "' $wh alt=\"$ML{'sitescheme.accountlinks.userpic.alt'}\" />"; } else { - $ret .= "<img src='$LJ::IMGPREFIX/nouserpic.png' width='80' alt=\"$ML{'sitescheme.accountlinks.userpic.alt'}\" />"; + $ret .= "<img src='$LJ::IMGPREFIX/nouserpic.png' width='80' height='80' alt=\"$ML{'sitescheme.accountlinks.userpic.alt'}\" />"; } $ret .= "</a></div>"; $ret .= "<div id='account-links-text'>"; diff -r 19969e7506a3 -r efa4d53fc342 cgi-bin/weblib.pl --- a/cgi-bin/weblib.pl Tue Aug 11 16:20:04 2009 -0500 +++ b/cgi-bin/weblib.pl Wed Aug 12 01:27:16 2009 -0500 @@ -2571,9 +2571,11 @@ sub control_strip my $ret; if ($remote) { my $remote_display = LJ::ljuser($remote); - if ($remote->{'defaultpicid'}) { - my $url = "$LJ::USERPIC_ROOT/$remote->{'defaultpicid'}/$remote->{'userid'}"; - $ret .= "<td id='lj_controlstrip_userpic' style='background-image: none;'><a href='$LJ::SITEROOT/editpics'><img src='$url' alt=\"$BML::ML{'web.controlstrip.userpic.alt'}\" title=\"$BML::ML{'web.controlstrip.userpic.title'}\" height='43' /></a></td>"; + my $userpic = $remote->userpic; + if ( $userpic ) { + my $wh = $userpic->img_fixedsize( width => 43, height => 43 ); + $ret .= "<td id='lj_controlstrip_userpic' style='background-image: none;'><a href='$LJ::SITEROOT/editpics'>"; + $ret .= "<img src='" . $userpic->url . "' alt=\"$BML::ML{'web.controlstrip.userpic.alt'}\" title=\"$BML::ML{'web.controlstrip.userpic.title'}\" $wh /></a></td>"; } else { my $tinted_nouserpic_img = ""; @@ -2591,10 +2593,11 @@ sub control_strip } $ret .= "<td id='lj_controlstrip_userpic' style='background-image: none;'><a href='$LJ::SITEROOT/editpics'>"; if ($tinted_nouserpic_img eq "") { - $ret .= "<img src='$LJ::IMGPREFIX/controlstrip/nouserpic.gif' alt=\"$BML::ML{'web.controlstrip.nouserpic.alt'}\" title=\"$BML::ML{'web.controlstrip.nouserpic.title'}\" height='43' />"; + $ret .= "<img src='$LJ::IMGPREFIX/controlstrip/nouserpic.gif' "; } else { - $ret .= "<img src='$tinted_nouserpic_img' alt=\"$BML::ML{'web.controlstrip.nouserpic.alt'}\" title=\"$BML::ML{'web.controlstrip.nouserpic.title'}\" height='43' />"; + $ret .= "<img src='$tinted_nouserpic_img' "; } + $ret .= "alt=\"$BML::ML{'web.controlstrip.nouserpic.alt'}\" title=\"$BML::ML{'web.controlstrip.nouserpic.title'}\" height='43' width='43' />"; $ret .= "</a></td>"; } $ret .= "<td id='lj_controlstrip_user' nowrap='nowrap'><form id='Greeting' class='nopic' action='$LJ::SITEROOT/logout?ret=1' method='post'><div>"; --------------------------------------------------------------------------------