Remove unused widgets and related files. Also, rename the file 
UserpicDisplay to UserpicSelector, to match the package name.

        Patch by denise. 

diffs (1481 lines):

diff -r add04ef93fbe -r 7bc5736fa6b8 bin/upgrading/en.dat
--- a/bin/upgrading/en.dat      Thu Jun 24 16:08:51 2010 +0800
+++ b/bin/upgrading/en.dat      Thu Jun 24 17:05:10 2010 +0800
@@ -4052,22 +4052,6 @@ widget.betafeature.btn.off=Turn OFF beta
 
 widget.betafeature.btn.on=Turn ON beta testing
 
-widget.browse.directorysearch=Directory Search:
-
-widget.browse.directorysearch.communities=Search for communities
-
-widget.browse.directorysearch.users=Search for users
-
-widget.browse.extras.random=Random Journal
-
-widget.browse.extras.random.desc=Feeling spontaneous?  Find a new journal to 
read every second of the day.
-
-widget.browse.findusers=Find users by:
-
-widget.browse.findusers.location=State or Country
-
-widget.browse.title=Browse [[sitenameabbrev]]
-
 widget.communitymanagement.nopending=No communities require action.
 
 widget.communitymanagement.pending=Pending:
@@ -4623,8 +4607,6 @@ widget.navstripchooser.title=Navigation 
 widget.navstripchooser.title=Navigation Strip
 
 widget.navstripchooser.upgradetos2=<a [[aopts]]><strong>Switch to 
S2</strong></a> and you'll be able to use custom colors for the navigation 
strip.
-
-widget.pagenotice.dismiss=Dismiss
 
 widget.paidaccountstatus.accounttype=Your current account type is:
 
diff -r add04ef93fbe -r 7bc5736fa6b8 cgi-bin/DW/Panel.pm
--- a/cgi-bin/DW/Panel.pm       Thu Jun 24 16:08:51 2010 +0800
+++ b/cgi-bin/DW/Panel.pm       Thu Jun 24 17:05:10 2010 +0800
@@ -55,7 +55,6 @@ sub init {
         "DW::Widget::LatestNews",
         "DW::Widget::QuickUpdate",
         "DW::Widget::LatestInbox",
-        # "LJ::Widget::RecentComments",
     ];
 
     $ret->{secondary} = [
diff -r add04ef93fbe -r 7bc5736fa6b8 cgi-bin/LJ/ExpungedUsers.pm
--- a/cgi-bin/LJ/ExpungedUsers.pm       Thu Jun 24 16:08:51 2010 +0800
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,175 +0,0 @@
-#!/usr/bin/perl
-# This code was forked from the LiveJournal project owned and operated
-# by Live Journal, Inc. The code has been modified and expanded by
-# Dreamwidth Studios, LLC. These files were originally licensed under
-# the terms of the license supplied by Live Journal, Inc, which can
-# currently be found at:
-#
-# 
http://code.livejournal.org/trac/livejournal/browser/trunk/LICENSE-LiveJournal.txt
-#
-# In accordance with the original license, this code and all its
-# modifications are provided under the GNU General Public License.
-# A copy of that license can be found in the LICENSE file included as
-# part of this distribution.
-
-
-package LJ::ExpungedUsers;
-
-use strict;
-use Carp qw(croak);
-
-sub load_recent {
-    my $class = shift;
-    my %opts  = @_;
-
-    my $within = delete $opts{within} || 3600;
-    my $limit  = delete $opts{limit}  || 100;
-
-    croak "invalid arguments: " . join(",", keys %opts) 
-        if %opts;
-
-    my $dbr = LJ::get_db_reader()
-        or die "unable to contact global reader";
-
-    my $sth = $dbr->prepare
-        ("SELECT userid, expunge_time FROM expunged_users " . 
-         "WHERE expunge_time > UNIX_TIMESTAMP() - ? LIMIT $limit");
-    $sth->execute($within);
-
-    my @uids = ();
-    my %exp_times = (); # uid => exp_time
-    while (my ($uid, $exp_time) = $sth->fetchrow_array) {
-        push @uids, $uid;
-        $exp_times{$uid} = $exp_time;
-    }
-
-    my $us = LJ::load_userids(@uids);
-
-    return (grep { $_->[0]->{user} !~ /^ex_/ && !$_->[0]->is_identity }
-            sort { $a->[0]->{user} cmp $b->[0]->{user} } 
-            map { [ $us->{$_}, $exp_times{$_} ] } @uids);
-}
-
-sub load_single_user {
-    my $class = shift;
-    my $user  = shift;
-
-    $user = LJ::canonical_username($user);
-    croak "invalid user: $user"
-        unless $user;
-
-    my $u = LJ::load_user($user);
-
-    # is the user actually expunged?
-    return unless $u && $u->is_expunged;
-
-    # did someone rename to it?
-    return if $u->user =~ /^ex_/;
-
-    # ding.
-    return $u;
-}
-
-sub fuzzy_load_user {
-    my $class = shift;
-    my $user  = shift;
-
-    $user = LJ::canonical_username($user);
-    croak "invalid user: $user"
-        unless $user;
-
-    return $class->_query_result_array
-        ("SELECT userid, expunge_time FROM expunged_users " . 
-         "WHERE user LIKE ? LIMIT 10", $user . "%");
-}
-
-sub _query_result_array {
-    my $class = shift;
-    my ($sql, @vals) = @_;
-
-    my $dbr = LJ::get_db_reader()
-        or die "unable to contact global reader";
-
-    my $sth = $dbr->prepare($sql);
-    $sth->execute(@vals);
-    die $dbr->errstr if $dbr->err;
-
-    my @rows = ();
-    while (my ($uid, $exp_time) = $sth->fetchrow_array) {
-        push @rows, [ $uid => $exp_time ];
-    }
-
-    my $us = LJ::load_userids(map { $_->[0] } @rows);
-    my @ret = ();
-    foreach my $row (@rows) {
-        my $u = $us->{$row->[0]};
-
-        # someone already renamed to this?
-        next if $u->{user} =~ /^ex_/;
-
-        # push all users except for identity users
-        push @ret, [ $u => $row->[1] ] unless $u->is_identity;
-    }
-
-    return @ret;
-}
-
-sub random_by_letter {
-    my $class = shift;
-    my %opts  = @_;
-
-    my $letter   = substr(delete $opts{letter}, 0, 1) || '0';
-    my $prev_max = delete $opts{prev_max} || 0;
-    my $limit    = delete $opts{limit} || 100;
-
-    croak "invalid arguments: " . join(",", keys %opts) 
-        if %opts;
-
-    my $dbr = LJ::get_db_reader()
-        or die "unable to contact global reader";
-
-    my $min = $prev_max + 0;
-
-    my $sth = $dbr->prepare
-        ("SELECT userid, expunge_time FROM expunged_users " . 
-         "WHERE (user LIKE ? OR user LIKE ?) AND expunge_time>? " . 
-         "LIMIT $limit");
-    $sth->execute(uc($letter) . '%', lc($letter) . '%', $min);
-    die $dbr->errstr if $dbr->err;
-
-    my @rows = ();
-    while (my ($uid, $exp_time) = $sth->fetchrow_array) {
-        push @rows, [ $uid => $exp_time ];
-    }
-
-    # if we got less than the limit, then we hit the beginning
-    if (@rows < $limit) {
-        my $new_limit = $limit - @rows;
-        $sth = $dbr->prepare
-            ("SELECT userid, expunge_time FROM expunged_users " . 
-             "WHERE (user LIKE ? OR user LIKE ?) AND expunge_time>? " . 
-             "LIMIT $new_limit");
-        $sth->execute(uc($letter) . '%', lc($letter). '%', 0);
-        die $dbr->errstr if $dbr->err;
-        
-        while (my ($uid, $exp_time) = $sth->fetchrow_array) {
-            push @rows, [ $uid => $exp_time ];
-        }
-    }
-
-    my $us = LJ::load_userids(map { $_->[0] } @rows);
-    my @ret = ();
-    foreach my $row (@rows) {
-        my $u = $us->{$row->[0]};
-
-        # someone already renamed to this?
-        next if $u->{user} =~ /^ex_/;
-
-        # push all users except for identity users
-        push @ret, [ $u => $row->[1] ] unless $u->is_identity;
-    }
-
-    return @ret;
-}
-
-1;
diff -r add04ef93fbe -r 7bc5736fa6b8 cgi-bin/LJ/Widget/Browse.pm
--- a/cgi-bin/LJ/Widget/Browse.pm       Thu Jun 24 16:08:51 2010 +0800
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-# This code was forked from the LiveJournal project owned and operated
-# by Live Journal, Inc. The code has been modified and expanded by
-# Dreamwidth Studios, LLC. These files were originally licensed under
-# the terms of the license supplied by Live Journal, Inc, which can
-# currently be found at:
-#
-# 
http://code.livejournal.org/trac/livejournal/browser/trunk/LICENSE-LiveJournal.txt
-#
-# In accordance with the original license, this code and all its
-# modifications are provided under the GNU General Public License.
-# A copy of that license can be found in the LICENSE file included as
-# part of this distribution.
-
-package LJ::Widget::Browse;
-
-use strict;
-use base qw(LJ::Widget);
-use Carp qw(croak);
-
-sub need_res { qw( stc/widgets/browse.css ) }
-
-sub render_body {
-    my $class = shift;
-    my %opts = @_;
-
-    my $u = LJ::isu($opts{user}) ? $opts{user} : LJ::get_remote();
-    my $ret;
-
-    $ret .= "<h2>" . $class->ml('widget.browse.title', { sitenameabbrev => 
$LJ::SITENAMEABBREV }) . "</h2>";
-    $ret .= "<div class='browse-content'>";
-    $ret .= LJ::Widget::Search->render( stylesheet_override => 
"stc/widgets/search-interestonly.css", single_search => "interest" );
-
-    $ret .= LJ::Widget::PopularInterests->render;
-
-    $ret .= "<div class='browse-findlinks'>";
-
-    $ret .= "<div class='browse-findby'>";
-    $ret .= "<p><strong>" . $class->ml('widget.browse.findusers') . 
"</strong><br />";
-    $ret .= "&raquo; <a href='$LJ::SITEROOT/directory'>" . 
$class->ml('widget.browse.findusers.location') . "</a></p>";
-    $ret .= "</div>";
-
-    $ret .= "<div class='browse-directorysearch'>";
-    $ret .= "<p><strong>" . $class->ml('widget.browse.directorysearch') . 
"</strong><br />";
-    $ret .= "&raquo; <a href='$LJ::SITEROOT/directorysearch'>" . 
$class->ml('widget.browse.directorysearch.users') . "</a><br />";
-    $ret .= "&raquo; <a href='$LJ::SITEROOT/community/search'>" . 
$class->ml('widget.browse.directorysearch.communities') . "</a></p>";
-    $ret .= "</div>";
-
-    $ret .= "</div>";
-
-    $ret .= "<div style='clear: both;'></div>";
-    $ret .= "<div class='browse-extras'>";
-    $ret .= "<div class='browse-randomuser'>";
-    $ret .= "<img src='$LJ::IMGPREFIX/explore/randomuser.jpg' alt='' />";
-    $ret .= "<p><a href='$LJ::SITEROOT/random'><strong>" . 
$class->ml('widget.browse.extras.random') . "</strong></a><br />";
-    $ret .= $class->ml('widget.browse.extras.random.desc') . "</p>";
-    $ret .= "</div>";
-    $ret .= LJ::Hooks::run_hook('browse_widget_extras');
-    $ret .= "</div>";
-
-    $ret .= "</div>";
-    return $ret;
-}
-
-1;
diff -r add04ef93fbe -r 7bc5736fa6b8 cgi-bin/LJ/Widget/ExpungedUsers.pm
--- a/cgi-bin/LJ/Widget/ExpungedUsers.pm        Thu Jun 24 16:08:51 2010 +0800
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,218 +0,0 @@
-# This code was forked from the LiveJournal project owned and operated
-# by Live Journal, Inc. The code has been modified and expanded by
-# Dreamwidth Studios, LLC. These files were originally licensed under
-# the terms of the license supplied by Live Journal, Inc, which can
-# currently be found at:
-#
-# 
http://code.livejournal.org/trac/livejournal/browser/trunk/LICENSE-LiveJournal.txt
-#
-# In accordance with the original license, this code and all its
-# modifications are provided under the GNU General Public License.
-# A copy of that license can be found in the LICENSE file included as
-# part of this distribution.
-
-package LJ::Widget::ExpungedUsers;
-
-use strict;
-use base qw(LJ::Widget);
-use Carp qw(croak);
-
-use LJ::ExpungedUsers;
-
-# increments with each rendering of the sorter bar
-my $sorter_bar_idx = 0;
-
-sub need_res {
-    return qw( stc/widgets/expungedusers.css );
-}
-
-sub render_body {
-    my $class = shift;
-    my %opts = @_;
-
-    my $post = delete $opts{post};
-
-    croak "invalid arguments: " . join(",", keys %opts)
-        if %opts;
-
-    # reset the sorter bar index, which is used for keeping track
-    # of which sorter bar button was clicked, if multiple
-    $sorter_bar_idx = 0;
-
-    my $ret;
-
-    # are they just searching by one user?
-    if ($class->get_effective_search_user($post)) {
-        $ret .= $class->search_by_user($post);
-    } else {
-        $ret .= $class->random_by_letter($post);
-    }
-
-    $ret .= $class->purchase_button;
-
-    return $ret;
-}
-
-sub purchase_button {
-    my $class = shift;
-
-    my $ret = "<form method='GET' action='$LJ::SITEROOT/shop/view.bml' 
class='purchase-rename-form'>";
-    $ret .= LJ::html_hidden('item', 'rename');
-    $ret .= $class->html_submit('Purchase a Rename Token');
-    $ret .= "</form>";
-
-    return $ret;
-}
-
-sub search_by_user {
-    my $class = shift;
-    my $post  = shift;
-
-    my $user = $class->get_effective_search_user($post);
-    $user = LJ::canonical_username($user);
-
-    my ($u, @fuzzy_us);
-    if ($user) {
-        $u = LJ::ExpungedUsers->load_single_user($user);
-    }
-    unless ($u) {
-        @fuzzy_us = LJ::ExpungedUsers->fuzzy_load_user($user);
-    }
-
-    my $ret = $class->start_form;
-    $ret .= $class->sorter_bar( post => $post );
-
-    $ret .= "<div id='appwidget-expungedusers-search-wrapper'>";
-    if ($u) {
-        $ret .= "<ul id='appwidget-expungedusers-search'><li>" . 
$u->display_username . "</li></ul>";
-    } else {
-        $ret .= "<p>Sorry, '$user' is not currently available";
-
-        if (@fuzzy_us) {
-            $ret .= ", but we have found some similar usernames you might be 
interested in:";
-
-            $ret .= "<div id='appwidget-expungedusers-fuzzylist-wrapper'>";
-            $ret .= "<ul>";
-            foreach (@fuzzy_us) {
-                $ret .= "<li>" . $_->[0]->display_username . "</li>";
-            }
-            $ret .= "</ul>";
-            $ret .= "</div>";
-        } else {
-            $ret .= "."; # yay punctuation
-        }
-        $ret .= "</p>";
-    }
-    $ret .= "</div>";
-
-    $ret .= $class->end_form;
-
-    return $ret;
-}
-
-sub get_effective_letter {
-    my $class = shift;
-    my $post  = shift;
-
-    foreach my $key (keys %$post) {
-        next unless $key =~ /^(?:filter|more)_(\d+)/;
-        return $post->{"letter_$1"};
-    }
-    return 'a';
-}
-
-sub get_effective_search_user {
-    my $class = shift;
-    my $post  = shift;
-
-    foreach my $key (keys %$post) {
-        next unless $key =~ /^(?:search_user)_(\d+)/;
-        return $post->{"search_user_$1"};
-        next unless $post->{"search_user_$1"};
-    }
-    return '';
-}
-
-sub random_by_letter {
-    my $class = shift;
-    my $post  = shift;
-
-    # display random usernames
-    my @rows = LJ::ExpungedUsers->random_by_letter
-        ( letter   => $class->get_effective_letter($post),
-          prev_max => $post->{prev_max},
-          limit    => 500,
-          );
-
-    my $prev_max = (map { $_->[1] } @rows)[-1];
-
-    my $ret = $class->start_form;
-
-    $ret .= $class->sorter_bar( prev_max => $prev_max,
-                                post     => $post);
-
-    $ret .= "<div id='appwidget-expungedusers-random-wrapper'>";
-    if (@rows) {
-        $ret .= "<ul id='appwidget-expungedusers-random'>";
-        foreach (@rows) {
-            my ($u, $exp_time) = @$_;
-            $ret .= "<li>" . $u->display_username . "</li>\n";
-        }
-        $ret .= "</ul>";
-    } else {
-        $ret .= "<p>Sorry, there are no matches beginning with '" . 
$class->get_effective_letter($post) . "'</p>";
-    }
-    $ret .= "</div>";
-
-    # hide sorter bar if we didn't get rows above
-    if (@rows) {
-        $ret .= $class->sorter_bar( prev_max => $prev_max,
-                                    post     => $post );
-    }
-
-    $ret .= $class->end_form;
-
-    return $ret;
-}
-
-sub sorter_bar {
-    my $class = shift;
-    my %opts  = @_;
-
-    my $post     = delete $opts{post};
-    my $prev_max = delete $opts{prev_max} || $post->{prev_max};
-
-    my $ret;
-
-    # Show random usernames by letter
-    $ret .= "<div class='appwidget-expungeusers-formbar-wrapper pkg'>";
-    $ret .= "<div class='appwidget-expungeusers-formbar'>";
-    $ret .= "<label>Show random usernames beginning with: </label>";
-
-    my $selected = $class->get_effective_letter($post);
-
-    $ret .= $class->html_select
-        ( name => "letter_$sorter_bar_idx", selected => $selected,
-          list => [ (map { chr($_), chr($_-32) } 97..122), (map { $_ => $_ } 
0..9) ] );
-
-    $ret .= $class->html_hidden(prev_max => $prev_max) if $sorter_bar_idx == 0;
-    $ret .= $class->html_submit("filter_$sorter_bar_idx" => "Filter");
-    $ret .= $class->html_submit("more_$sorter_bar_idx" => "See more random 
results");
-    
-    $ret .= "</div>"; # /formbar
-
-    # Seach by a specific username
-    $ret .= "<div class='appwidget-expungeusers-searchuser'>";
-    $ret .= $class->html_text( name => "search_user_$sorter_bar_idx", size => 
15, maxlength => 25 );
-    $ret .= $class->html_submit( "search_$sorter_bar_idx" => "Search by 
username");
-    $ret .= "</div>";
-
-    $ret .= "</div>"; # /wrapper
-
-    # increment sorter bar idx for the next call info this function
-    $sorter_bar_idx++;
-
-    return $ret;
-}
-
-1;
diff -r add04ef93fbe -r 7bc5736fa6b8 cgi-bin/LJ/Widget/PageNotice.pm
--- a/cgi-bin/LJ/Widget/PageNotice.pm   Thu Jun 24 16:08:51 2010 +0800
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-# This code was forked from the LiveJournal project owned and operated
-# by Live Journal, Inc. The code has been modified and expanded by
-# Dreamwidth Studios, LLC. These files were originally licensed under
-# the terms of the license supplied by Live Journal, Inc, which can
-# currently be found at:
-#
-# 
http://code.livejournal.org/trac/livejournal/browser/trunk/LICENSE-LiveJournal.txt
-#
-# In accordance with the original license, this code and all its
-# modifications are provided under the GNU General Public License.
-# A copy of that license can be found in the LICENSE file included as
-# part of this distribution.
-
-package LJ::Widget::PageNotice;
-
-use strict;
-use base qw(LJ::Widget);
-use Carp qw(croak);
-
-sub need_res { qw( stc/widgets/pagenotice.css js/widgets/pagenotice.js ) }
-
-sub render_body {
-    my $class = shift;
-    my %opts = @_;
-
-    my $ret;
-    my $remote = LJ::get_remote();
-    my $content = LJ::Hooks::run_hook("page_notice_content", notice_key => 
$opts{notice_key});
-
-    if ($content) {
-        $ret .= $class->html_hidden({ name => "notice_key", value => 
$opts{notice_key}, id => "notice_key" });
-        $ret .= "<div class='warningbar' id='page_notice' 
style=\"background-image: url('$LJ::IMGPREFIX/message-warning.gif');\">";
-        $ret .= $content;
-        $ret .= "<img src='$LJ::IMGPREFIX/dismiss-page-notice.gif' 
id='dismiss_notice' alt=\"" . $class->ml('widget.pagenotice.dismiss') . "\" />"
-            if $remote;
-        $ret .= "</div>";
-    }
-
-    return $ret;
-}
-
-sub should_render_for_remote {
-    my $class = shift;
-    my %opts = @_;
-
-    my $remote = LJ::get_remote();
-    my $notice_key = $opts{notice_key};
-
-    return 0 unless $notice_key;
-    return 0 unless LJ::Hooks::run_hook("page_notice_content", notice_key => 
$notice_key);
-    return 1 unless $remote;
-    return $remote->has_dismissed_page_notice($notice_key) ? 0 : 1;
-}
-
-1;
diff -r add04ef93fbe -r 7bc5736fa6b8 cgi-bin/LJ/Widget/RecentComments.pm
--- a/cgi-bin/LJ/Widget/RecentComments.pm       Thu Jun 24 16:08:51 2010 +0800
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-# This code was forked from the LiveJournal project owned and operated
-# by Live Journal, Inc. The code has been modified and expanded by
-# Dreamwidth Studios, LLC. These files were originally licensed under
-# the terms of the license supplied by Live Journal, Inc, which can
-# currently be found at:
-#
-# 
http://code.livejournal.org/trac/livejournal/browser/trunk/LICENSE-LiveJournal.txt
-#
-# In accordance with the original license, this code and all its
-# modifications are provided under the GNU General Public License.
-# A copy of that license can be found in the LICENSE file included as
-# part of this distribution.
-
-package LJ::Widget::RecentComments;
-
-use strict;
-use base qw(LJ::Widget);
-use Carp qw(croak);
-
-sub need_res {
-    return qw( stc/widgets/recentcomments.css );
-}
-
-# args
-#   user: optional $u whose recent received comments we should get (remote is 
default)
-#   limit: number of recent comments to show, or 3
-sub render_body {
-    my $class = shift;
-    my %opts = @_;
-
-    my $u = $opts{user} && LJ::isu($opts{user}) ? $opts{user} : 
LJ::get_remote();
-    return "" unless $u;
-
-    my $limit = defined $opts{limit} ? $opts{limit} : 3;
-
-    my @comments = $u->get_recent_talkitems($limit, memcache => 1);
-
-    my $ret;
-
-    $ret .= "<h2><span>" . $class->ml('widget.recentcomments.title') . 
"</span></h2>";
-    $ret .= "<a href='$LJ::SITEROOT/tools/recent_comments' class='more-link'>" 
. $class->ml('widget.recentcomments.viewall') . "</a>";
-
-    # return if no comments
-    return "<h2><span>" . $class->ml('widget.recentcomments.title') . 
"</span></h2><?warningbar " . $class->ml('widget.recentcomments.nocomments', 
{'aopts' => "href='$LJ::SITEROOT/update'"}) . " warningbar?>"
-        unless @comments && defined $comments[0];
-
-    # there are comments, print them
-    @comments = reverse @comments; # reverse the comments so newest is printed 
first
-    $ret .= "<div class='appwidget-recentcomments-content'>";
-    my $ct = 0;
-    foreach my $row (@comments) {
-        next unless $row->{nodetype} eq 'L';
-
-        # load the comment
-        my $comment = LJ::Comment->new($u, jtalkid => $row->{jtalkid});
-        next if $comment->is_deleted;
-
-        # load the comment poster
-        my $posteru = $comment->poster;
-        next if $posteru && ($posteru->is_suspended || $posteru->is_expunged);
-        my $poster = $posteru ? $posteru->ljuser_display : 
$class->ml('widget.recentcomments.anon');
-
-        # load the entry the comment was posted to
-        my $entry = $comment->entry;
-        my $class_name = ($ct == scalar(@comments) - 1) ? "last" : "";
-
-        # print the comment
-        $ret .= "<p class='pkg $class_name'>";
-        # FIXME: this widget is only used in the portal, I believe.
-        # If this code is ever used in the future, uncomment the
-        # following line to replace the line that follows it, and then test.
-        #$ret .= $entry->imgtag;
-        $ret .= $comment->poster_userpic;
-        $ret .= $class->ml('widget.recentcomments.commentheading', {'poster' 
=> $poster, 'entry' => "<a href='" . $entry->url . "'>"});
-        $ret .= $entry->subject_text ? $entry->subject_text : 
$class->ml('widget.recentcomments.nosubject');
-        $ret .= "</a><br />";
-        $ret .= substr($comment->body_text, 0, 250) . "&nbsp;";
-        $ret .= "<span class='detail'>(<a href='" . $comment->url . "'>" . 
$class->ml('widget.recentcomments.link') . "</a>)</span> ";
-        $ret .= "<span class='detail'>(<a href='" . $comment->reply_url . "'>" 
. $class->ml('widget.recentcomments.reply') . "</a>)</span> ";
-        $ret .= "</p>";
-        $ct++;
-    }
-    $ret .= "</div>";
-
-    return $ret;
-}
-
-1;
diff -r add04ef93fbe -r 7bc5736fa6b8 cgi-bin/LJ/Widget/RecentEntry.pm
--- a/cgi-bin/LJ/Widget/RecentEntry.pm  Thu Jun 24 16:08:51 2010 +0800
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-# This code was forked from the LiveJournal project owned and operated
-# by Live Journal, Inc. The code has been modified and expanded by
-# Dreamwidth Studios, LLC. These files were originally licensed under
-# the terms of the license supplied by Live Journal, Inc, which can
-# currently be found at:
-#
-# 
http://code.livejournal.org/trac/livejournal/browser/trunk/LICENSE-LiveJournal.txt
-#
-# In accordance with the original license, this code and all its
-# modifications are provided under the GNU General Public License.
-# A copy of that license can be found in the LICENSE file included as
-# part of this distribution.
-
-package LJ::Widget::RecentEntry;
-
-use strict;
-use base qw(LJ::Widget);
-use Carp qw(croak);
-
-sub render_body {
-    my $class = shift;
-
-    my %opts          = @_;
-    my $num_to_show   = $opts{num_to_show} || 1;
-    my $show_comments = exists $opts{show_comments} ? $opts{show_comments} : 1;
-    my $journal       = $opts{journal};
-    croak "no journal specified"
-        unless $journal;
-    my $journalu = LJ::load_user($journal);
-    croak "invalid journal: $journal"
-        unless LJ::isu($journalu);
-
-    my $ret = "<h2>" . $journalu->name_html . "</h2>";
-
-    my @items = $journalu->recent_items(
-        clusterid     => $journalu->clusterid,
-        clustersource => 'slave',
-        order         => 'logtime',
-        itemshow      => $num_to_show,
-        dateformat    => 'S2',
-    );
-
-    my $entry;
-    foreach my $item (@items) {
-        # silly, there's no journalid in the hashref
-        # returned here, so we'll shove it in to
-        # construct an LJ::Entry object.  : (
-        $item->{journalid} = $journalu->id;
-
-        $entry = LJ::Entry->new_from_item_hash($item);
-        next unless $entry->event_text;
-
-        # Display date as YYYY-MM-DD
-        my $date = substr($entry->eventtime_mysql, 0, 10);
-
-        $ret .= "<div class='entry'>";
-
-        $ret .= "<div class='date'>$date</div>";
-        $ret .= "<div class='subject'>" . $entry->subject_html . "</div>";
-        $ret .= "<div class='text'>" . $entry->event_html . "</div>";
-
-        my $link = $entry->url;
-
-        $ret .= "<div class='comments'>";
-        if ($show_comments) {
-            if (my $reply_ct = $entry->prop('replycount')) {
-                $ret .= "<a href='$link'><strong>" . ($reply_ct == 1 ? "1 
comment" : "$reply_ct comments") . "</strong></a>";
-            } else {
-                $ret .= "<a href='$link'><strong>Link</strong></a>";
-            }
-            unless ( $entry->comments_disabled ) {
-                $ret .= " | <a href='$link?mode=reply'><strong>Leave a 
comment</strong></a>";
-            }
-        } else {
-            $ret .= "<a href='$link'><strong>Link</strong></a>";
-        }
-        $ret .= "</div>";
-
-        $ret .= "</div>";
-    }
-
-    return $ret;
-}
-
-1;
diff -r add04ef93fbe -r 7bc5736fa6b8 cgi-bin/LJ/Widget/RecentlyExpunged.pm
--- a/cgi-bin/LJ/Widget/RecentlyExpunged.pm     Thu Jun 24 16:08:51 2010 +0800
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-# This code was forked from the LiveJournal project owned and operated
-# by Live Journal, Inc. The code has been modified and expanded by
-# Dreamwidth Studios, LLC. These files were originally licensed under
-# the terms of the license supplied by Live Journal, Inc, which can
-# currently be found at:
-#
-# 
http://code.livejournal.org/trac/livejournal/browser/trunk/LICENSE-LiveJournal.txt
-#
-# In accordance with the original license, this code and all its
-# modifications are provided under the GNU General Public License.
-# A copy of that license can be found in the LICENSE file included as
-# part of this distribution.
-
-package LJ::Widget::RecentlyExpunged;
-
-use strict;
-use base qw(LJ::Widget);
-use Carp qw(croak);
-use LJ::ExpungedUsers;
-
-sub need_res {
-    return qw( stc/widgets/recentlyexpunged.css );
-}
-
-sub render_body {
-    my $class = shift;
-    my %opts = @_;
-
-    my $within = delete $opts{within} || 3600;
-    my $limit  = delete $opts{limit}  || 20;
-
-    # [ u, expunge_time ]
-    my @rows = LJ::ExpungedUsers->load_recent
-        ( within => $within, limit  => $limit );
-
-    # if no rows, just don't render
-    return "" unless @rows;
-
-    my $ret = "<div id='appwidget-recentlyexpunged-list-wrapper'>";
-    $ret .= "<h3>In the last 24 hours...</h3>";
-    if (@rows) {
-        my $ct = 0;
-        $ret .= "<ul id='appwidget-recentlyexpunged-list'>";
-        foreach my $row (sort { $b->[1] <=> $a->[1] } @rows) {
-            my ($u, $exp_time) = @$row;
-        
-            $ret .= "<li>" . $u->display_username . "</li>";
-            $ct++;
-
-            last if $ct >= 30;
-        }
-        $ret .= "</ul>";
-    } else {
-        $ret .= "<b>Sorry, there are no recently expunged users</b>";
-    }
-    $ret .= "</div>\n";
-
-    return $ret;
-}
-
-1;
diff -r add04ef93fbe -r 7bc5736fa6b8 cgi-bin/LJ/Widget/UserpicDisplay.pm
--- a/cgi-bin/LJ/Widget/UserpicDisplay.pm       Thu Jun 24 16:08:51 2010 +0800
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,230 +0,0 @@
-# This code was forked from the LiveJournal project owned and operated
-# by Live Journal, Inc. The code has been modified and expanded by
-# Dreamwidth Studios, LLC. These files were originally licensed under
-# the terms of the license supplied by Live Journal, Inc, which can
-# currently be found at:
-#
-# 
http://code.livejournal.org/trac/livejournal/browser/trunk/LICENSE-LiveJournal.txt
-#
-# In accordance with the original license, this code and all its
-# modifications are provided under the GNU General Public License.
-# A copy of that license can be found in the LICENSE file included as
-# part of this distribution.
-
-package LJ::Widget::UserpicSelector;
-
-use strict;
-use base qw(LJ::Widget);
-use Carp qw(croak);
-
-sub need_res {
-
-   return qw( js/core.js
-              js/dom.js
-              js/json.js
-              js/template.js
-              js/ippu.js
-              js/lj_ippu.js
-              js/userpicselect.js
-              js/httpreq.js
-              js/hourglass.js
-              js/inputcomplete.js
-              stc/ups.css
-              stc/entry.css
-              js/datasource.js
-              js/selectable_table.js
-              );
-
-}
-
-sub handle_post {
-    my $class = shift;
-
-    return;
-}
-
-sub render_body {
-    my ($class, $user, $head, $pic, $picform, $opts) = @_;
-
-    my $u = $user;
-    return "" unless $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,
-    });
-
-    ### Userpic
-    my $userpic_preview = "";
-
-    # User Picture
-    if ($res && ref $res->{'pickws'} eq 'ARRAY' && scalar @{$res->{'pickws'}} 
> 0) {
-        my @pickws = map { ($_, $_) } @{$res->{'pickws'}};
-        my $num = 0;
-        my $userpics .= "    userpics[$num] = \"$res->{'defaultpicurl'}\";\n";
-        my $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";
-        }
-
-        my $userpic_link_text;
-        $userpic_link_text = BML::ml('entryform.userpic.choose') if $u;
-
-        $$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>
-            };
-
-        $$head .= qq {
-            <script type="text/javascript" language="JavaScript">
-            // <![CDATA[
-                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 LJ::is_enabled('userpicselect') && $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 LJ::is_enabled('userpicselect') && $u->can_use_userpic_select;
-        $$picform .= "</script>\n";
-
-    } elsif (!$u)  {
-        $$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>";
-    }
-
-
-    return;
-}
-
-1;
diff -r add04ef93fbe -r 7bc5736fa6b8 cgi-bin/LJ/Widget/UserpicSelector.pm
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/cgi-bin/LJ/Widget/UserpicSelector.pm      Thu Jun 24 17:05:10 2010 +0800
@@ -0,0 +1,230 @@
+# This code was forked from the LiveJournal project owned and operated
+# by Live Journal, Inc. The code has been modified and expanded by
+# Dreamwidth Studios, LLC. These files were originally licensed under
+# the terms of the license supplied by Live Journal, Inc, which can
+# currently be found at:
+#
+# 
http://code.livejournal.org/trac/livejournal/browser/trunk/LICENSE-LiveJournal.txt
+#
+# In accordance with the original license, this code and all its
+# modifications are provided under the GNU General Public License.
+# A copy of that license can be found in the LICENSE file included as
+# part of this distribution.
+
+package LJ::Widget::UserpicSelector;
+
+use strict;
+use base qw(LJ::Widget);
+use Carp qw(croak);
+
+sub need_res {
+
+   return qw( js/core.js
+              js/dom.js
+              js/json.js
+              js/template.js
+              js/ippu.js
+              js/lj_ippu.js
+              js/userpicselect.js
+              js/httpreq.js
+              js/hourglass.js
+              js/inputcomplete.js
+              stc/ups.css
+              stc/entry.css
+              js/datasource.js
+              js/selectable_table.js
+              );
+
+}
+
+sub handle_post {
+    my $class = shift;
+
+    return;
+}
+
+sub render_body {
+    my ($class, $user, $head, $pic, $picform, $opts) = @_;
+
+    my $u = $user;
+    return "" unless $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,
+    });
+
+    ### Userpic
+    my $userpic_preview = "";
+
+    # User Picture
+    if ($res && ref $res->{'pickws'} eq 'ARRAY' && scalar @{$res->{'pickws'}} 
> 0) {
+        my @pickws = map { ($_, $_) } @{$res->{'pickws'}};
+        my $num = 0;
+        my $userpics .= "    userpics[$num] = \"$res->{'defaultpicurl'}\";\n";
+        my $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";
+        }
+
+        my $userpic_link_text;
+        $userpic_link_text = BML::ml('entryform.userpic.choose') if $u;
+
+        $$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>
+            };
+
+        $$head .= qq {
+            <script type="text/javascript" language="JavaScript">
+            // <![CDATA[
+                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 LJ::is_enabled('userpicselect') && $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 LJ::is_enabled('userpicselect') && $u->can_use_userpic_select;
+        $$picform .= "</script>\n";
+
+    } elsif (!$u)  {
+        $$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>";
+    }
+
+
+    return;
+}
+
+1;
diff -r add04ef93fbe -r 7bc5736fa6b8 cgi-bin/ljdefaults.pl
--- a/cgi-bin/ljdefaults.pl     Thu Jun 24 16:08:51 2010 +0800
+++ b/cgi-bin/ljdefaults.pl     Thu Jun 24 17:05:10 2010 +0800
@@ -282,7 +282,6 @@
     }
     $LJ::AJAX_URI_MAP{load_state_codes} = 
'tools/endpoints/load_state_codes.bml';
     $LJ::AJAX_URI_MAP{profileexpandcollapse} = 
'tools/endpoints/profileexpandcollapse.bml';
-    $LJ::AJAX_URI_MAP{dismisspagenotice} = 
'tools/endpoints/dismisspagenotice.bml';
 
     # List all countries that have states listed in 'codes' table in DB
     # These countries will be displayed with drop-down menu on Profile edit 
page
diff -r add04ef93fbe -r 7bc5736fa6b8 htdocs/js/widgets/pagenotice.js
--- a/htdocs/js/widgets/pagenotice.js   Thu Jun 24 16:08:51 2010 +0800
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-var PageNotice = new Object();
-
-PageNotice.init = function () {
-    if (!$('dismiss_notice')) return;
-
-    DOM.addEventListener($('dismiss_notice'), "click", 
PageNotice.dismissNotice);
-}
-
-PageNotice.dismissNotice = function () {
-    if (!$('notice_key')) return;
-
-    HTTPReq.getJSON({
-        url: LiveJournal.getAjaxUrl("dismisspagenotice"),
-        method: "GET",
-        data: HTTPReq.formEncoded({ notice_key: $('notice_key').value }),
-        onData: function (data) {
-            if (data.success && data.success == 1) {
-                if ($('page_notice') && $('page_notice').parentNode) {
-                    $('page_notice').parentNode.style.display = "none";
-                }
-            }
-        },
-        onError: function (msg) { }
-    });
-}
-
-LiveJournal.register_hook("page_load", PageNotice.init);
diff -r add04ef93fbe -r 7bc5736fa6b8 htdocs/stc/widgets/browse.css
--- a/htdocs/stc/widgets/browse.css     Thu Jun 24 16:08:51 2010 +0800
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-.appwidget-browse {
-    background-color: #fefdf4;
-}
-
-.appwidget-browse a {
-    color: #f4717a !important;
-}
-
-.appwidget-browse h2 {
-    font-size: 14px;
-    clear: left;
-    font-family: Arial;
-    font-weight: bold;
-    background: #fcf6db url(/img/corner.gif) no-repeat 0 0;
-    margin: 0 0 8px 0;
-    padding: 5px 8px;
-    color: #222;
-}
-
-.appwidget-browse .browse-content {
-     padding: 0 10px;
-}
-
-.appwidget-browse .browse-findlinks,
-.appwidget-browse .browse-extras {
-    border-top: 1px solid #bbb;
-}
-
-.appwidget-browse .browse-extras {
-    padding-top: 10px;
-}
-
-.appwidget-browse .browse-findlinks p {
-    font-size: 12px;
-}
-
-.appwidget-browse .browse-extras p {
-    font-size: 11px;
-}
-
-.appwidget-browse .browse-extras p strong {
-    font-size: 12px;
-}
-
-.appwidget-browse .browse-findby {
-    background-color: #fefbed;
-    float: left;
-    position: relative;
-}
-
-.appwidget-browse .browse-directorysearch {
-    background-color: #fefbed;
-    float: right;
-    position: relative;
-}
-
-.appwidget-browse .browse-extras img {
-    float: left;
-    clear: left;
-    width: 35px;
-    margin-right: 5px;
-    position: relative;
-}
-
-.appwidget-browse .browse-extras p {
-    margin: 0;
-}
-
-.appwidget-browse .browse-randomuser {
-    margin-bottom: 10px;
-}
diff -r add04ef93fbe -r 7bc5736fa6b8 htdocs/stc/widgets/expungedusers.css
--- a/htdocs/stc/widgets/expungedusers.css      Thu Jun 24 16:08:51 2010 +0800
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-.appwidget-expungedusers {
-    clear: left;
-}
-.appwidget-expungeusers-formbar-wrapper {
-    background-color: #eee;
-    clear: both;
-    padding: 5px 10px;
-    margin: 10px 0;
-}
-.appwidget-expungedusers .purchase-rename-form {
-    clear: left;
-    margin-top: 10px;
-}
-.appwidget-expungedusers ul {
-    list-style: none;
-    margin: 10px 0;
-    padding: 0;
-}
-.appwidget-expungedusers ul li {
-    float: left;
-    width: 12em;
-    margin: 0 6px 3px 0;
-}
-.appwidget-expungeusers-formbar {
-    float: left;
-    margin-bottom: 4px;
-}
-.appwidget-expungeusers-searchuser {
-    float: right;
-    margin-bottom: 4px;
-}
diff -r add04ef93fbe -r 7bc5736fa6b8 htdocs/stc/widgets/pagenotice.css
--- a/htdocs/stc/widgets/pagenotice.css Thu Jun 24 16:08:51 2010 +0800
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-#dismiss_notice {
-    position: absolute;
-    top: 3px;
-    right: 3px;
-    cursor: pointer;
-}
-
-* html #dismiss_notice {
-    right: 13px;
-}
diff -r add04ef93fbe -r 7bc5736fa6b8 htdocs/stc/widgets/recentlyexpunged.css
--- a/htdocs/stc/widgets/recentlyexpunged.css   Thu Jun 24 16:08:51 2010 +0800
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-.appwidget-recentlyexpunged #appwidget-recentlyexpunged-list-wrapper {
-    border: 1px solid #ff3;
-    background-color: #ffd;
-    float: right;
-    padding: 10px;
-    width: 440px;
-    margin: 0 0 15px 10px;
-}
-.appwidget-recentlyexpunged h3 {
-    margin: 0 0 5px 0;
-    font-style: normal;
-    font-size: 14px;
-}
-.appwidget-recentlyexpunged ul {
-    list-style: none;
-    margin: 0;
-    padding: 0;
-}
-.appwidget-recentlyexpunged ul li {
-    float: left;
-    width: 138px;
-    margin-right: 6px;
-}
_______________________________________________
dw-changelog mailing list
[email protected]
http://lists.dwscoalition.org/mailman/listinfo/dw-changelog

Reply via email to