Clean up code; reduce code duplication.
Patch by kareila.
diffs (449 lines):
diff -r 20c47d3045a1 -r d95c01c7c3a2 cgi-bin/LJ/Widget/UserpicSelector.pm
--- a/cgi-bin/LJ/Widget/UserpicSelector.pm Mon Jul 26 19:37:32 2010 -0500
+++ b/cgi-bin/LJ/Widget/UserpicSelector.pm Tue Jul 27 18:37:25 2010 -0700
@@ -24,50 +24,49 @@ sub need_res {
}
sub handle_post {
- my $class = shift;
-
return;
}
sub render_body {
- my ($class, $user, $head, $pic, $picform, $opts) = @_;
+ my ( $class, $u, $head, $pic, $picform, $opts ) = @_;
- my $u = $user;
- return "" unless $u;
+ return "" unless LJ::isu( $u );
return "" unless LJ::is_enabled('userpicselect') ||
$u->can_use_userpic_select;
my $res;
- $res = LJ::Protocol::do_request("login", {
- "ver" => $LJ::PROTOCOL_VER,
- "username" => $u->{'user'},
- "getpickws" => 1,
- "getpickwurls" => 1,
- }, undef, {
- "noauth" => 1,
- "u" => $u,
- });
+ $res = LJ::Protocol::do_request( "login", {
+ ver => $LJ::PROTOCOL_VER,
+ username => $u->user,
+ getpickws => 1,
+ getpickwurls => 1,
+ }, undef, {
+ noauth => 1,
+ u => $u,
+ } ) unless $opts->{no_auth};
- ### Userpic
- my $userpic_preview = "";
+ my $has_icons = $res && ref $res->{pickws} eq 'ARRAY' && scalar @{
$res->{pickws} } > 0;
+ my $defpic = LJ::Lang::ml( 'entryform.opt.defpic' );
+ my $onload = $opts->{onload};
- # User Picture
- if ($res && ref $res->{'pickws'} eq 'ARRAY' && scalar @{$res->{'pickws'}}
> 0) {
- my @pickws = map { ($_, $_) } @{$res->{'pickws'}};
+ if ( ! $opts->{altlogin} && $has_icons ) {
+ # start with default picture info
my $num = 0;
- my $userpics .= " userpics[$num] = \"$res->{'defaultpicurl'}\";\n";
- my $altcode .= " alttext[$num] = \"" .
BML::ml('entryform.opt.defpic') . "\";\n";
- foreach (@{$res->{'pickwurls'}}) {
+ my $userpics .= " userpics[$num] = \"$res->{defaultpicurl}\";\n";
+ my $altcode .= " alttext[$num] = \"$defpic\";\n";
+
+ foreach ( @{ $res->{pickwurls} } ) {
$num++;
$userpics .= " userpics[$num] = \"$_\";\n";
}
- $num = 0;
- foreach ( @{$res->{pickws}} ) {
+
+ $num = 0; # reset
+
+ foreach ( @{ $res->{pickws} } ) {
$num++;
$altcode .= " alttext[$num] = \"" . LJ::ejs($_) . "\";\n";
}
- my $userpic_link_text;
- $userpic_link_text = BML::ml('entryform.userpic.choose') if $u;
+ $$onload .= " userpic_preview();" if $onload;
$$head .= qq {
<script type="text/javascript" language="JavaScript"><!--
@@ -78,7 +77,7 @@ sub render_body {
$altcode
function userpic_preview() {
if (! document.getElementById) return false;
- var userpic_select =
document.getElementById('prop_picture_keyword');
+ var userpic_select =
document.getElementById('prop_picture_keyword');
if (\$('userpic') && \$('userpic').style.display ==
'none') {
\$('userpic').style.display = 'block';
@@ -103,11 +102,21 @@ sub render_body {
}
}
//--></script>
+ };
+
+ my $viewthumbnails_link = '';
+ if ( $opts->{entry_js} ) {
+ my $thumbnail_text = LJ::Lang::ml(
'/update.bml.link.view_thumbnails' );
+ $viewthumbnails_link = qq {
+ var ml = new Object();
+ ml.viewthumbnails_link = "$thumbnail_text";
};
+ }
$$head .= qq {
<script type="text/javascript" language="JavaScript">
// <![CDATA[
+ $viewthumbnails_link
DOM.addEventListener(window, "load", function (evt) {
// attach userpicselect code to userpicbrowse button
var ups_btn = \$("lj_userpicselect");
@@ -177,38 +186,60 @@ sub render_body {
</script>
} if $u->can_use_userpic_select;
- $$pic .= "<div id='userpic' style='display: none;'><p
id='userpic_preview'><a href='javascript:void(0);'
id='lj_userpicselect_img'><img src='' alt='selected userpic'
id='userpic_preview_image' /><span
id='lj_userpicselect_img_txt'>$userpic_link_text</span></a></p></div>";
- $$pic .= "\n";
-
- $$picform .= "<p id='userpic_select_wrapper' class='pkg'>\n";
- $$picform .= "<label for='prop_picture_keyword' class='left'>" .
BML::ml('entryform.userpic') . " </label> \n" ;
- $$picform .= LJ::html_select({
- 'name' => 'prop_picture_keyword',
- 'id' => 'prop_picture_keyword',
- 'class' => 'select',
- 'selected' => $opts->{'prop_picture_keyword'},
- 'onchange' => "userpic_preview()",
- },
- "", BML::ml('entryform.opt.defpic'),
- @pickws) . "\n";
- $$picform .= "<a href='javascript:void(0);' id='lj_userpicselect'>
</a>";
- # userpic browse button
- $$picform .= LJ::help_icon_html("userpics", "", " ") . "\n";
- $$picform .= "</p>\n\n";
- $$picform .= q {
- <script type="text/javascript" language="JavaScript">
- userpic_preview();
- };
- $$picform .= "insertViewThumbs()"
- if $u->can_use_userpic_select;
- $$picform .= "</script>\n";
-
- } elsif (!$u) {
+ $$pic .= "<div id='userpic' style='display: none;'><p
id='userpic_preview'>";
+ $$pic .= "<a href='javascript:void(0);' id='lj_userpicselect_img'>";
+ $$pic .= "<img src='' alt='selected userpic'
id='userpic_preview_image' />";
+ $$pic .= "<span id='lj_userpicselect_img_txt'>";
+ $$pic .= LJ::Lang::ml( 'entryform.userpic.choose' );
+ $$pic .= "</span></a></p></div>\n";
+ } elsif ( !$u || $opts->{altlogin} ) {
$$pic .= "<div id='userpic'><p id='userpic_preview'><img
src='/img/nouserpic.png' alt='selected userpic' id='userpic_preview_image'
class='userpic_loggedout' /></p></div>";
} else {
$$pic .= "<div id='userpic'><p id='userpic_preview'
class='userpic_preview_border'><a href='$LJ::SITEROOT/editicons'>Upload a
userpic</a></p></div>";
}
+ if ( $has_icons ) {
+
+ my @pickws = map { ( $_, $_ ) } @{ $res->{pickws} };
+
+ my $display = '';
+ if ( exists $opts->{altlogin} ) {
+ my $userpic_display = $opts->{altlogin} ? 'none' : 'block';
+ $display = " style='display: $userpic_display;'";
+ }
+ my $tabindex = $opts->{entry_js} ? '~~TABINDEX~~' : undef;
+
+ $$picform .= "<p id='userpic_select_wrapper' class='pkg'$display>\n";
+ $$picform .= "<label for='prop_picture_keyword' class='left'>";
+ $$picform .= LJ::Lang::ml( 'entryform.userpic' ) . " </label>\n" ;
+ $$picform .= LJ::html_select( {
+ name => 'prop_picture_keyword',
+ id => 'prop_picture_keyword',
+ class => 'select',
+ selected => $opts->{prop_picture_keyword},
+ onchange => "userpic_preview()",
+ tabindex => $tabindex,
+ }, "", $defpic, @pickws ) . "\n";
+ $$picform .= "<a href='javascript:void(0);' id='lj_userpicselect'>
</a>";
+ # userpic browse button
+ if ( $onload ) {
+ $$onload .= " insertViewThumbs();" if $u->can_use_userpic_select;
+ # random icon button
+ $$picform .= "<a href='javascript:void(0)' onclick='randomicon();'
id='randomicon'>";
+ $$picform .= LJ::Lang::ml( 'entryform.userpic.random' ) . "</a>";
+ $$onload .= " showRandomIcon();";
+ } else {
+ $$picform .= q {
+ <script type="text/javascript"
language="JavaScript">
+ userpic_preview();
+ };
+ $$picform .= "insertViewThumbs()" if $u->can_use_userpic_select;
+ $$picform .= "</script>\n";
+ }
+ $$picform .= LJ::help_icon_html( "userpics", "", " " );
+ $$picform .= "</p>\n\n";
+ }
+
return;
}
diff -r 20c47d3045a1 -r d95c01c7c3a2 cgi-bin/weblib.pl
--- a/cgi-bin/weblib.pl Mon Jul 26 19:37:32 2010 -0500
+++ b/cgi-bin/weblib.pl Tue Jul 27 18:37:25 2010 -0700
@@ -981,10 +981,9 @@ sub entry_form {
my ($opts, $head, $onload, $errors) = @_;
my $out = "";
- my $remote = $opts->{'remote'};
- my $altlogin = $opts->{'altlogin'};
- my $userpic_display = $altlogin ? 'none' : 'block';
- my ($moodlist, $moodpics, $userpics, $altcode);
+ my $remote = $opts->{remote};
+ my $altlogin = $opts->{altlogin};
+ my ( $moodlist, $moodpics );
# usejournal has no point if you're trying to use the account you're
logged in as,
# so disregard it so we can assume that if it exists, we're trying to post
to an
@@ -1008,172 +1007,35 @@ sub entry_form {
$out .= "\n<input type='hidden' name='chal' id='login_chal' value='$chal'
/>\n";
$out .= "<input type='hidden' name='response' id='login_response' value=''
/>\n\n";
$out .= LJ::error_list($errors->{entry}) if $errors->{entry};
- # do a login action to get pics and usejournals, but only if using remote
- my $res;
- if ($opts->{'auth_as_remote'}) {
- $res = LJ::Protocol::do_request("login", {
- "ver" => $LJ::PROTOCOL_VER,
- "username" => $remote->{'user'},
- "getpickws" => 1,
- "getpickwurls" => 1,
- }, undef, {
- "noauth" => 1,
- "u" => $remote,
- });
- }
- ### Userpic
+ ### Icon Selection
- my $userpic_preview = "";
+ my $pic = ''; # displays chosen/default pic
+ my $picform = ''; # displays form drop-down
- # User Picture
- if (!$altlogin && ($res && ref $res->{'pickws'} eq 'ARRAY' &&
scalar @{$res->{'pickws'}} > 0)) {
- my @pickws = map { ($_, $_) } @{$res->{'pickws'}};
- my $num = 0;
- $userpics .= " userpics[$num] =
\"$res->{defaultpicurl}\";\n";
- $altcode .= " alttext[$num] = \"" .
BML::ml('entryform.opt.defpic') . "\";\n";
- foreach (@{$res->{'pickwurls'}}) {
- $num++;
- $userpics .= " userpics[$num] = \"$_\";\n";
- }
- $num = 0;
- foreach ( @{$res->{pickws}} ) {
- $num++;
- $altcode .= " alttext[$num] = \"" . LJ::ejs($_) .
"\";\n";
- }
- $$onload .= " userpic_preview();";
+ LJ::Widget::UserpicSelector->render( $remote, \$$head, \$pic, \$picform,
+ { prop_picture_keyword => $opts->{prop_picture_keyword},
+ no_auth => ! $opts->{auth_as_remote}, onload => $onload,
+ altlogin => $altlogin, entry_js => 1 } );
- my $userpic_link_text;
- $userpic_link_text = BML::ml('entryform.userpic.choose') if
$remote;
+ # libs for userpicselect
+ LJ::need_res( LJ::Talk::init_iconbrowser_js() )
+ if ! $altlogin && $remote && $remote->can_use_userpic_select;
- $$head .= qq {
- <script type="text/javascript" language="JavaScript"><!--
- if (document.getElementById) {
- var userpics = new Array();
- var alttext = new Array();
- $userpics
- $altcode
- function userpic_preview() {
- if (! document.getElementById) return false;
- var userpic_select =
document.getElementById('prop_picture_keyword');
-
- if (\$('userpic') &&
\$('userpic').style.display == 'none') {
- \$('userpic').style.display = 'block';
- }
- var userpic_msg;
- if (userpics[0] == "") { userpic_msg = 'Choose
default userpic' }
- if (userpics.length == 0) { userpic_msg =
'Upload a userpic' }
-
- if (userpic_select &&
userpics[userpic_select.selectedIndex] != "") {
- \$('userpic_preview').className = '';
- var userpic_preview_image =
\$('userpic_preview_image');
- userpic_preview_image.style.display =
'block';
- if (\$('userpic_msg')) {
- \$('userpic_msg').style.display =
'none';
- }
- userpic_preview_image.src =
userpics[userpic_select.selectedIndex];
- userpic_preview_image.alt =
alttext[userpic_select.selectedIndex];
- } else {
- userpic_preview.className += "
userpic_preview_border";
- userpic_preview.innerHTML = '<a
href="$LJ::SITEROOT/editicons"><img src="" alt="selected userpic"
id="userpic_preview_image" style="display: none;" /><span id="userpic_msg">' +
userpic_msg + '</span></a>';
- }
- }
- }
- //--></script>
- };
-
- my $thumbnail_text = BML::ml(
'/update.bml.link.view_thumbnails' );
- $$head .= qq {
- <script type="text/javascript" language="JavaScript">
- // <![CDATA[
- var ml = new Object();
- ml.viewthumbnails_link = "$thumbnail_text";
-
- DOM.addEventListener(window, "load", function (evt) {
- // attach userpicselect code to userpicbrowse button
- var ups_btn = \$("lj_userpicselect");
- var ups_btn_img = \$("lj_userpicselect_img");
- if (ups_btn) {
- DOM.addEventListener(ups_btn, "click", function
(evt) {
- var ups = new UserpicSelect();
- ups.init();
- ups.setPicSelectedCallback(function (picid,
keywords) {
- var kws_dropdown =
\$("prop_picture_keyword");
-
- if (kws_dropdown) {
- var items = kws_dropdown.options;
-
- // select the keyword in the dropdown
- keywords.forEach(function (kw) {
- for (var i = 0; i < items.length;
i++) {
- var item = items[i];
- if (item.value == kw) {
- kws_dropdown.selectedIndex
= i;
- userpic_preview();
- return;
- }
- }
- });
- }
- });
- ups.show();
- });
- }
- if (ups_btn_img) {
- DOM.addEventListener(ups_btn_img, "click",
function (evt) {
- var ups = new UserpicSelect();
- ups.init();
- ups.setPicSelectedCallback(function (picid,
keywords) {
- var kws_dropdown =
\$("prop_picture_keyword");
-
- if (kws_dropdown) {
- var items = kws_dropdown.options;
-
- // select the keyword in the dropdown
- keywords.forEach(function (kw) {
- for (var i = 0; i < items.length;
i++) {
- var item = items[i];
- if (item.value == kw) {
- kws_dropdown.selectedIndex
= i;
- userpic_preview();
- return;
- }
- }
- });
- }
- });
- ups.show();
- });
- DOM.addEventListener(ups_btn_img, "mouseover",
function (evt) {
- var msg = \$("lj_userpicselect_img_txt");
- msg.style.display = 'block';
- });
- DOM.addEventListener(ups_btn_img, "mouseout",
function (evt) {
- var msg = \$("lj_userpicselect_img_txt");
- msg.style.display = 'none';
- });
- }
- });
- // ]]>
- </script>
- } if $remote->can_use_userpic_select;
-
- # libs for userpicselect
- LJ::need_res( LJ::Talk::init_iconbrowser_js() )
- if $remote->can_use_userpic_select;
-
- $out .= "<div id='userpic' style='display: none;'><p
id='userpic_preview'><a href='javascript:void(0);'
id='lj_userpicselect_img'><img src='' alt='selected userpic'
id='userpic_preview_image' /><span
id='lj_userpicselect_img_txt'>$userpic_link_text</span></a></p></div>";
- $out .= "\n";
-
- } elsif (!$remote || $altlogin) {
- $out .= "<div id='userpic'><p id='userpic_preview'><img
src='/img/nouserpic.png' alt='selected userpic' id='userpic_preview_image'
class='userpic_loggedout' /></p></div>";
- } else {
- $out .= "<div id='userpic'><p id='userpic_preview'
class='userpic_preview_border'><a href='$LJ::SITEROOT/editicons'>Upload a
userpic</a></p></div>";
- }
-
+ $out .= $pic;
### Meta Information Column 1
{
+ # do a login action to get usejournals, but only if using remote
+ my $res;
+ $res = LJ::Protocol::do_request( "login", {
+ ver => $LJ::PROTOCOL_VER,
+ username => $remote->user,
+ }, undef, {
+ noauth => 1,
+ u => $remote,
+ } ) if $opts->{auth_as_remote};
+
$out .= "<div id='metainfo'>\n\n";
# login info
$out .= $opts->{'auth'};
@@ -1237,33 +1099,12 @@ sub entry_form {
$$onload .= " defaultDate();";
}
- # User Picture
- if ($res && ref $res->{'pickws'} eq 'ARRAY' && scalar
@{$res->{'pickws'}} > 0) {
- my @pickws = map { ($_, $_) } @{$res->{'pickws'}};
- my $num = 0;
- $userpics .= " userpics[$num] =
\"$res->{'defaultpicurl'}\";\n";
- foreach (@{$res->{'pickwurls'}}) {
- $num++;
- $userpics .= " userpics[$num] = \"$_\";\n";
- }
- $out .= "<p id='userpic_select_wrapper' class='pkg'
style='display: $userpic_display;'>\n";
- $out .= "<label for='prop_picture_keyword' class='left'>" .
BML::ml('entryform.userpic') . "</label>\n" ;
- $out .= LJ::html_select({'name' => 'prop_picture_keyword',
'id' => 'prop_picture_keyword', 'class' => 'select',
- 'selected' =>
$opts->{'prop_picture_keyword'}, 'onchange' => "userpic_preview()",
- 'tabindex' => $tabindex->() },
- "", BML::ml('entryform.opt.defpic'),
- @pickws) . "\n";
- $out .= "<a href='javascript:void(0);' id='lj_userpicselect'>
</a>";
- # userpic browse button
- $$onload .= " insertViewThumbs();" if
$remote->can_use_userpic_select;
-
- # random icon button
- $out .= "<a href='javascript:void(0)' onclick='randomicon();'
id='randomicon'>" . BML::ml('entryform.userpic.random') . "</a>";
- $out .= LJ::help_icon_html("userpics", "", " ") . "\n";
- $out .= "</p>\n\n";
- $$onload .= " showRandomIcon();";
-
- }
+ # User Picture
+ {
+ my $tab = $tabindex->();
+ $picform =~ s/~~TABINDEX~~/$tab/;
+ $out .= $picform;
+ }
$out .= "</div><!-- end #metainfo -->\n\n";
_______________________________________________
dw-changelog mailing list
[email protected]
http://lists.dwscoalition.org/mailman/listinfo/dw-changelog