168 lines
4.9 KiB
Perl
168 lines
4.9 KiB
Perl
use strict;
|
|
|
|
package LJ::S2;
|
|
|
|
sub IconsPage {
|
|
my ( $u, $remote, $opts ) = @_;
|
|
my $get = $opts->{'getargs'};
|
|
|
|
my $can_manage = ( $remote && $remote->can_manage($u) ) ? 1 : 0;
|
|
my $p = Page( $u, $opts );
|
|
$p->{'_type'} = "IconsPage";
|
|
$p->{'view'} = "icons";
|
|
|
|
if ( $u->should_block_robots ) {
|
|
$p->{'head_content'} .= LJ::robot_meta_tags();
|
|
}
|
|
|
|
$p->{can_manage} = $can_manage;
|
|
|
|
my @allpics = LJ::Userpic->load_user_userpics($u);
|
|
my $defaultpicid = $u ? $u->{'defaultpicid'} : undef;
|
|
|
|
my $view_inactive = $can_manage
|
|
|| (
|
|
$get->{inactive}
|
|
&& $remote
|
|
&& ( LJ::check_priv( $remote, "supportviewscreened" )
|
|
|| LJ::check_priv( $remote, "supporthelp" ) )
|
|
);
|
|
my $default_sortorder =
|
|
S2::get_property_value( $opts->{'ctx'}, 'icons_sort_order' ) || 'upload';
|
|
my $sortorder = $get->{sortorder} || $default_sortorder;
|
|
|
|
@allpics = grep { $_->state eq 'N' || ( $view_inactive && $_->state ne 'X' ) } @allpics;
|
|
|
|
my @pics;
|
|
|
|
if ( $sortorder eq 'keyword' ) {
|
|
@pics = LJ::Userpic->separate_keywords( \@allpics );
|
|
}
|
|
else { # Upload Order
|
|
$sortorder = 'upload';
|
|
my @newpics;
|
|
my $default_pic;
|
|
foreach my $pic (@allpics) {
|
|
my @keyword = $pic->keywords;
|
|
if ( $pic->is_default ) {
|
|
$default_pic = { keywords => \@keyword, userpic => $pic };
|
|
}
|
|
else {
|
|
push @newpics, { keywords => \@keyword, userpic => $pic };
|
|
}
|
|
}
|
|
@pics = $default_pic if $default_pic;
|
|
@pics = ( @pics, @newpics );
|
|
}
|
|
|
|
my @sort_methods = ( 'upload', 'keyword' );
|
|
|
|
$p->{sortorder} = $sortorder;
|
|
$p->{sort_keyseq} = \@sort_methods;
|
|
$p->{sort_urls} = {
|
|
map {
|
|
$_ => LJ::create_url(
|
|
undef,
|
|
args => {
|
|
sortorder => ( $_ eq $default_sortorder ) ? undef : $_,
|
|
},
|
|
viewing_style => 1,
|
|
cur_args => $get,
|
|
keep_args => [ 'sortorder', 'view', 'inactive' ],
|
|
)
|
|
} @sort_methods
|
|
};
|
|
|
|
my $pagingbar;
|
|
my $start_index = 0;
|
|
my $page_size =
|
|
S2::get_property_value( $opts->{'ctx'}, "num_items_icons" ) + 0
|
|
|| $LJ::MAX_ICONS_PER_PAGE
|
|
|| 0;
|
|
|
|
$page_size = $LJ::MAX_ICONS_PER_PAGE
|
|
if ( $LJ::MAX_ICONS_PER_PAGE && $page_size > $LJ::MAX_ICONS_PER_PAGE );
|
|
$page_size = 0 if $get->{view} && $get->{view} eq 'all';
|
|
|
|
$p->{pages} = ItemRange_fromopts(
|
|
{
|
|
items => \@pics,
|
|
pagesize => $page_size || scalar @pics,
|
|
page => $get->{page} || 1,
|
|
url_of => sub {
|
|
return LJ::create_url(
|
|
undef,
|
|
args => {
|
|
page => $_[0],
|
|
},
|
|
keep_args => [ 'sortorder', 'view', 'inactive' ],
|
|
viewing_style => 1,
|
|
cur_args => $get,
|
|
);
|
|
},
|
|
url_all => LJ::create_url(
|
|
undef,
|
|
args => { view => "all" },
|
|
keep_args => [ "sortorder", "inactive" ],
|
|
viewing_style => 1,
|
|
cur_args => $get,
|
|
),
|
|
}
|
|
);
|
|
|
|
my @pics_out;
|
|
|
|
foreach my $pic_hash (@pics) {
|
|
my $pic = $pic_hash->{userpic};
|
|
my $keywords = $pic_hash->{keywords} || [ $pic_hash->{keyword} ];
|
|
|
|
my $eh_comment = $pic->comment;
|
|
if ($eh_comment) {
|
|
LJ::CleanHTML::clean(
|
|
\$eh_comment,
|
|
{
|
|
'addbreaks' => 0,
|
|
'tablecheck' => 1,
|
|
'mode' => 'deny',
|
|
}
|
|
);
|
|
}
|
|
|
|
my $eh_description = $pic->description;
|
|
if ($eh_description) {
|
|
LJ::CleanHTML::clean(
|
|
\$eh_description,
|
|
{
|
|
'addbreaks' => 0,
|
|
'tablecheck' => 1,
|
|
'mode' => 'deny',
|
|
}
|
|
);
|
|
}
|
|
|
|
my $kwstr = join( ', ', @{$keywords} );
|
|
|
|
push @pics_out,
|
|
{
|
|
'_type' => 'Icon',
|
|
id => $pic->picid,
|
|
image => Image(
|
|
$pic->url, $pic->width, $pic->height,
|
|
$pic->alttext( $kwstr, $pic->is_default ),
|
|
title => $pic->titletext( $kwstr, $pic->is_default )
|
|
),
|
|
keywords => [ map { LJ::ehtml($_) } sort { lc($a) cmp lc($b) } (@$keywords) ],
|
|
comment => $eh_comment,
|
|
description => $eh_description,
|
|
default => ( $pic->is_default ) ? 1 : 0,
|
|
active => $pic->state eq 'I' ? 0 : 1,
|
|
link_url => $pic->url,
|
|
};
|
|
}
|
|
|
|
$p->{icons} = \@pics_out;
|
|
|
|
return $p;
|
|
}
|
|
|
|
1;
|