5 my ($u, $remote, $opts) = @_;
6 my $get = $opts->{'getargs'};
8 my $can_manage = ( $remote && $remote->can_manage( $u ) ) ? 1 : 0;
9 my $p = Page($u, $opts);
10 $p->{'_type'} = "IconsPage";
11 $p->{'view'} = "icons";
13 if ($u->should_block_robots) {
14 $p->{'head_content'} .= LJ::robot_meta_tags();
17 $p->{can_manage} = $can_manage;
19 my @allpics = LJ::Userpic->load_user_userpics($u);
20 my $defaultpicid = $u ? $u->{'defaultpicid'} : undef;
22 my $view_inactive = $can_manage || ( $get->{inactive} && $remote && ( LJ::check_priv( $remote, "supportviewscreened" ) ||
23 LJ::check_priv( $remote, "supporthelp" ) ) );
24 my $default_sortorder = S2::get_property_value($opts->{'ctx'}, 'icons_sort_order') || 'upload';
25 my $sortorder = $get->{sortorder} || $default_sortorder;
27 @allpics = grep { $_->state eq 'N' || ( $view_inactive && $_->state ne 'X' ) } @allpics;
31 if ( $sortorder eq 'keyword' ) {
32 @pics = LJ::Userpic->separate_keywords( \@allpics );
33 } else { # Upload Order
34 $sortorder = 'upload';
37 foreach my $pic ( @allpics ) {
38 my @keyword = $pic->keywords;
39 if ( $pic->is_default ) {
40 $default_pic = { keywords => \@keyword, userpic => $pic };
42 push @newpics, { keywords => \@keyword, userpic => $pic };
45 @pics = $default_pic if $default_pic;
46 @pics = ( @pics, @newpics );
49 my @sort_methods = ( 'upload', 'keyword' );
51 $p->{sortorder} = $sortorder;
52 $p->{sort_keyseq} = \@sort_methods;
54 map { $_ => LJ::create_url(undef,
56 sortorder => ( $_ eq $default_sortorder ) ? undef : $_,
65 my $page_size = S2::get_property_value($opts->{'ctx'}, "num_items_icons")+0;
66 $p->{pages} = ItemRange_fromopts({
68 pagesize => $page_size || scalar @pics,
69 page => $get->{page} || 1,
71 return LJ::create_url(undef,
75 keep_args => [ 'sortorder' ],
84 foreach my $pic_hash (@pics) {
85 my $pic = $pic_hash->{userpic};
86 my $keywords = $pic_hash->{keywords} || [ $pic_hash->{keyword} ];
88 my $eh_comment = $pic->comment;
90 LJ::CleanHTML::clean(\$eh_comment, {
98 my $eh_description = $pic->description;
99 if ( $eh_description ) {
100 LJ::CleanHTML::clean(\$eh_description, {
111 image => Image( $pic->url, $pic->width, $pic->height, LJ::ehtml( $pic->alttext ), title => LJ::ehtml( $pic->keywords ) ),
112 keywords => [ map { LJ::ehtml($_) } sort { lc($a) cmp lc($b) } ( @$keywords ) ],
113 comment => $eh_comment,
114 description => $eh_description,
115 default => ( $pic->is_default ) ? 1 : 0,
116 active => $pic->state eq 'I' ? 0 : 1,
117 link_url => $pic->url,
121 $p->{icons} = \@pics_out;