|
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;
|