fu: Close-up of Fu, bringing a scoop of water to her mouth (Default)
fu ([personal profile] fu) wrote in [site community profile] changelog2011-04-19 12:59 pm

[dw-free] Show Selected Icon on Comment Preview Pages

[commit: http://hg.dwscoalition.org/dw-free/rev/fd8687a5e5c9]

http://bugs.dwscoalition.org/show_bug.cgi?id=3259

Show icon and icon selector on comment preview pages.

Patch by [personal profile] fu.

Files modified:
  • cgi-bin/LJ/Talk.pm
  • htdocs/talkpost_do.bml
--------------------------------------------------------------------------------
diff -r 4831ca8b1502 -r fd8687a5e5c9 cgi-bin/LJ/Talk.pm
--- a/cgi-bin/LJ/Talk.pm	Tue Apr 19 20:00:10 2011 +0800
+++ b/cgi-bin/LJ/Talk.pm	Tue Apr 19 20:58:45 2011 +0800
@@ -1849,38 +1849,7 @@ sub talkform {
     $ret .= "<div id='ljnohtmlsubj' class='ljdeem'><span style='font-size: 8pt; font-style: italic;'>$BML::ML{'.nosubjecthtml'}</span></div>\n";
 
     $ret .= "<div id='userpics'>";
-    my %res;
-    if ($remote) {
-        LJ::do_request({ "mode" => "login",
-                         "ver" => ($LJ::UNICODE ? "1" : "0"),
-                         "user" => $remote->{'user'},
-                         "getpickws" => 1,
-                       }, \%res, { "noauth" => 1, "userid" => $remote->{'userid'} });
-    }
-    if ($res{'pickw_count'}) {
-        $ret .= BML::ml('.label.picturetouse2',
-                        {
-                            'aopts'=>"href='" . $remote->allpics_base. "'"}) . " ";
-        my @pics;
-        for (my $i=1; $i<=$res{'pickw_count'}; $i++) {
-            push @pics, $res{"pickw_$i"};
-        }
-        @pics = sort { lc($a) cmp lc($b) } @pics;
-        $ret .= LJ::html_select({'name' => 'prop_picture_keyword',
-                                 'selected' => $form->{'prop_picture_keyword'}, 'id' => 'prop_picture_keyword'},
-                                ("", $BML::ML{'.opt.defpic'}, map { ($_, $_) } @pics));
-
-        # userpic browse button
-        if ( $remote && $remote->can_use_userpic_select ) {
-            $ret .= '<input type="button" id="lj_userpicselect" value="Browse" />';
-            $ret .= LJ::Talk::js_iconbrowser_button();
-        }
-
-        # random icon button - hidden for non-JS
-        $ret .= "<a href='javascript:void(0)' onclick='randomicon();' class='ljhidden' id='randomicon'>" . BML::ml('.userpic.random') ."</a>";
-
-        $ret .= LJ::help_icon_html("userpics", " ");
-    }
+    $ret .= icon_dropdown( $remote, $form->{prop_picture_keyword} );
 
     $ret .= "<br />";
     $ret .= "<label for='prop_opt_preformatted'>$BML::ML{'.opt.noautoformat'}</label>";
@@ -1992,6 +1961,54 @@ LOGIN
     $ret .= "var usermismatchtext = \"" . LJ::ejs($BML::ML{'.usermismatch'}) . "\";\n";
     $ret .= "</script><script type='text/javascript' language='JavaScript' src='$LJ::JSPREFIX/talkpost.js'></script>";
     $ret .= "</form>\n";
+
+    return $ret;
+}
+
+sub icon_dropdown {
+    my ( $remote, $selected ) = @_;
+    $selected ||= "";
+
+    my %res;
+    if ( $remote ) {
+        LJ::do_request({ mode => "login",
+                         ver  => ($LJ::UNICODE ? "1" : "0"),
+                         user => $remote->{'user'},
+                         getpickws => 1,
+                       }, \%res, { "noauth" => 1, "userid" => $remote->{'userid'} });
+    }
+
+    my $ret = "";
+    if ($res{pickw_count}) {
+        $ret .= BML::ml( '/talkpost.bml.label.picturetouse2', {
+            aopts => "href='" . $remote->allpics_base. "'"
+        } ) . " ";
+
+        my @pics;
+        foreach my $i ( 1 ... $res{pickw_count} ) {
+            push @pics, $res{"pickw_$i"};
+        }
+        @pics = sort { lc( $a ) cmp lc( $b ) } @pics;
+        $ret .= LJ::html_select( {
+                name => 'prop_picture_keyword',
+                selected => $selected,
+                id => 'prop_picture_keyword'
+            }, (
+                "", $BML::ML{'/talkpost.bml.opt.defpic'},
+                map { ( $_, $_ ) } @pics
+            ) );
+
+        # userpic browse button
+        if ( $remote && $remote->can_use_userpic_select ) {
+            $ret .= '<input type="button" id="lj_userpicselect" value="Browse" />';
+            $ret .= LJ::Talk::js_iconbrowser_button();
+        }
+
+        # random icon button - hidden for non-JS
+        $ret .= "<a href='javascript:void(0)' onclick='randomicon();' class='ljhidden' id='randomicon'>" . BML::ml('/talkpost.bml.userpic.random') ."</a>";
+
+        $ret .= LJ::help_icon_html("userpics", " ");
+    }
 
     return $ret;
 }
@@ -3812,6 +3829,14 @@ sub make_preview {
     }
 
     $ret .= "$BML::ML{'/talkpost_do.bml.preview.subject'} " . LJ::ehtml($cleansubject) . "<hr />\n";
+
+    my $icon_kw = "";
+    if ( $cookie_auth ) {
+        $icon_kw = delete $form->{prop_picture_keyword};
+        my $icon = LJ::Userpic->new_from_keyword( $remote, $icon_kw );
+        $ret .= "<div class='userpic'>" . $icon->imgtag( keyword => $icon_kw ) . "</div>" if $icon;
+    }
+
     if ($spellcheck_html) {
         $ret .= $spellcheck_html;
         $ret .= "<p>";
@@ -3827,6 +3852,8 @@ sub make_preview {
     $ret .= "<div style='width: 90%'><form method='post'><p>\n";
     $ret .= "<label for='subject'>$BML::ML{'/talkpost_do.bml.preview.edit.subject'}</label>";
     $ret .= "<input name='subject' size='50' maxlength='100' value='" . LJ::ehtml($form->{'subject'}) . "' /><br />";
+    $ret .= "<div class='userpics'>" . LJ::Talk::icon_dropdown( $remote, $icon_kw ) . "</div>"
+        if $cookie_auth;    # we're commenting as currently logged-in user
     $ret .= "<label for='body'>$BML::ML{'/talkpost_do.bml.preview.edit.body'}</label>";
     $ret .= "<textarea class='textbox' rows='10' cols='50' wrap='soft' name='body' style='width: 100%'>";
     $ret .= LJ::ehtml($form->{'body'});
diff -r 4831ca8b1502 -r fd8687a5e5c9 htdocs/talkpost_do.bml
--- a/htdocs/talkpost_do.bml	Tue Apr 19 20:00:10 2011 +0800
+++ b/htdocs/talkpost_do.bml	Tue Apr 19 20:58:45 2011 +0800
@@ -282,6 +282,17 @@ _code?>
 <=body
 title=><?_code return $title _code?>
 head<=
-<?_code return (! $LJ::REQ_HEAD_HAS{'chalresp_js'}++) ? $LJ::COMMON_CODE{'chalresp_js'} : ""; _code?>
+<?_code
+    my $ret = "";
+    $ret .= qq{
+        <style type="text/css">
+            .userpic { float: left; margin: 0 15px 5px 0; }
+            .userpics { float: right; }
+        </style>
+    };
+
+    $ret .= (! $LJ::REQ_HEAD_HAS{'chalresp_js'}++) ? $LJ::COMMON_CODE{'chalresp_js'} : "";
+    return $ret;
+_code?>
 <=head
 page?>
--------------------------------------------------------------------------------