cgi-bin/LJ/S2/IconsPage.pm
author fu
Fri Jan 27 17:59:59 2012 +0800
changeset 4240 5bab31c9f015
parent 3555 d8b263f1f765
child 4262 0d421138560e
permissions -rw-r--r--
http://bugs.dwscoalition.org/show_bug.cgi?id=4245

Call keywords in list context, so that we get a list instead of a comma-separated string. Add a bit of padding because we no longer have a physical comma.

Patch by fu.
fu@3298
     1
use strict;
fu@3298
     2
package LJ::S2;
fu@3298
     3
fu@3298
     4
sub IconsPage {
fu@3298
     5
    my ($u, $remote, $opts) = @_;
fu@3298
     6
    my $get = $opts->{'getargs'};
fu@3298
     7
fu@3298
     8
    my $can_manage = ( $remote && $remote->can_manage( $u ) ) ? 1 : 0;
fu@3298
     9
    my $p = Page($u, $opts);
fu@3298
    10
    $p->{'_type'} = "IconsPage";
fu@3298
    11
    $p->{'view'} = "icons";
fu@3298
    12
fu@3555
    13
    if ($u->should_block_robots) {
fu@3555
    14
        $p->{'head_content'} .= LJ::robot_meta_tags();
fu@3555
    15
    }
fu@3555
    16
fu@3298
    17
    $p->{can_manage} = $can_manage;
fu@3298
    18
fu@3298
    19
    my @allpics = LJ::Userpic->load_user_userpics($u);
fu@3298
    20
    my $defaultpicid = $u ? $u->{'defaultpicid'} : undef;
fu@3298
    21
fu@3298
    22
    my $view_inactive = $can_manage || ( $get->{inactive} && $remote && ( LJ::check_priv( $remote, "supportviewscreened" ) ||
fu@3298
    23
                                           LJ::check_priv( $remote, "supporthelp" ) ) );
fu@3298
    24
    my $default_sortorder = S2::get_property_value($opts->{'ctx'}, 'icons_sort_order') || 'upload';
fu@3298
    25
    my $sortorder = $get->{sortorder} || $default_sortorder;
fu@3298
    26
fu@3298
    27
    @allpics = grep { $_->state eq 'N' || ( $view_inactive && $_->state ne 'X' ) } @allpics;
fu@3298
    28
fu@3298
    29
    my @pics;
fu@3298
    30
fu@3298
    31
    if ( $sortorder eq 'keyword' ) {
fu@3298
    32
        @pics = LJ::Userpic->separate_keywords( \@allpics );
fu@3298
    33
    } else { # Upload Order
fu@3298
    34
        $sortorder = 'upload';
fu@3298
    35
        my @newpics;
fu@3298
    36
        my $default_pic;
fu@3298
    37
        foreach my $pic ( @allpics ) {
fu@4240
    38
            my @keyword = $pic->keywords;
fu@3298
    39
            if ( $pic->is_default ) {
fu@4240
    40
                $default_pic = { keywords => \@keyword, userpic => $pic };
fu@3298
    41
            } else {
fu@4240
    42
                push @newpics, { keywords => \@keyword, userpic => $pic };
fu@3298
    43
            }
fu@3298
    44
        }
fu@3298
    45
        @pics = $default_pic if $default_pic;
fu@3298
    46
        @pics = ( @pics, @newpics );
fu@3298
    47
    }
fu@3298
    48
fu@3298
    49
    my @sort_methods = ( 'upload', 'keyword' );
fu@3298
    50
fu@3298
    51
    $p->{sortorder} = $sortorder;
fu@3298
    52
    $p->{sort_keyseq} = \@sort_methods;
fu@3298
    53
    $p->{sort_urls} = {
fu@3298
    54
        map { $_ => LJ::create_url(undef,
fu@3298
    55
                args => {
fu@3298
    56
                    sortorder => ( $_ eq $default_sortorder ) ? undef : $_,
fu@3298
    57
                },
fu@3298
    58
                viewing_style => 1,
fu@3298
    59
                cur_args => $get,
fu@3298
    60
            ) } @sort_methods
fu@3298
    61
    };
fu@3298
    62
fu@3298
    63
    my $pagingbar;
fu@3298
    64
    my $start_index = 0;
fu@3298
    65
    my $page_size = S2::get_property_value($opts->{'ctx'}, "num_items_icons")+0;
fu@3298
    66
    $p->{pages} = ItemRange_fromopts({
fu@3298
    67
        items => \@pics,
fu@3298
    68
        pagesize => $page_size || scalar @pics,
fu@3298
    69
        page => $get->{page} || 1,
fu@3298
    70
        url_of => sub {
fu@3298
    71
            return LJ::create_url(undef,
fu@3298
    72
                args => {
fu@3298
    73
                    page => $_[0],
fu@3298
    74
                },
fu@3298
    75
                keep_args => [ 'sortorder' ],
fu@3298
    76
                viewing_style => 1,
fu@3298
    77
                cur_args => $get,
fu@3298
    78
            );
fu@3298
    79
        }
fu@3298
    80
    });
fu@3298
    81
fu@3298
    82
    my @pics_out;
fu@3298
    83
fu@3298
    84
    foreach my $pic_hash (@pics) {
fu@3298
    85
        my $pic = $pic_hash->{userpic};
fu@3298
    86
        my $keywords = $pic_hash->{keywords} || [ $pic_hash->{keyword} ];
fu@3298
    87
fu@3298
    88
        my $eh_comment = $pic->comment;
fu@3298
    89
        if ( $eh_comment ) {
fu@3298
    90
            LJ::CleanHTML::clean(\$eh_comment, {
fu@3298
    91
                'wordlength' => 40,
fu@3298
    92
                'addbreaks' => 0,
fu@3298
    93
                'tablecheck' => 1,
fu@3298
    94
                'mode' => 'deny',
fu@3298
    95
            });
fu@3298
    96
        }
fu@3298
    97
fu@3298
    98
        my $eh_description = $pic->description;
fu@3298
    99
        if ( $eh_description ) {
fu@3298
   100
            LJ::CleanHTML::clean(\$eh_description, {
fu@3298
   101
                'wordlength' => 40,
fu@3298
   102
                'addbreaks' => 0,
fu@3298
   103
                'tablecheck' => 1,
fu@3298
   104
                'mode' => 'deny',
fu@3298
   105
            });
fu@3298
   106
        }
fu@3298
   107
fu@3298
   108
        push @pics_out, {
fu@3298
   109
            '_type' => 'Icon',
fu@3298
   110
            id => $pic->picid,
fu@3298
   111
            image => Image( $pic->url, $pic->width, $pic->height, LJ::ehtml( $pic->alttext ), title => LJ::ehtml( $pic->keywords ) ),
fu@3298
   112
            keywords => [ map { LJ::ehtml($_) } sort { lc($a) cmp lc($b) } ( @$keywords ) ],
fu@3298
   113
            comment => $eh_comment,
fu@3298
   114
            description => $eh_description,
fu@3298
   115
            default => ( $pic->is_default ) ? 1 : 0,
fu@3298
   116
            active => $pic->state eq 'I' ? 0 : 1,
fu@3298
   117
            link_url => $pic->url,
fu@3298
   118
        };
fu@3298
   119
    }
fu@3298
   120
fu@3298
   121
    $p->{icons} = \@pics_out;
fu@3298
   122
fu@3298
   123
    return $p;
fu@3298
   124
}
fu@3298
   125
fu@4240
   126
1;