Committer: gprochaev
LJSUP-6515. Custom UserheadsA trunk/cgi-bin/LJ/Widget/Shop/View/UserHeads.pm A trunk/htdocs/shop/userheads.bml
Added: trunk/cgi-bin/LJ/Widget/Shop/View/UserHeads.pm =================================================================== --- trunk/cgi-bin/LJ/Widget/Shop/View/UserHeads.pm (rev 0) +++ trunk/cgi-bin/LJ/Widget/Shop/View/UserHeads.pm 2010-08-20 06:57:48 UTC (rev 9365) @@ -0,0 +1,115 @@ +package LJ::Widget::Shop::View::UserHeads; + +use strict; +use base 'LJ::Widget::Shop::View'; +use LJ::UserHead; +use LJ::Pay::Payment::PayItem::UserHead; + +sub get_subpage { 'userhead' } +sub require_remote { 0 } + +sub premature_checks { + my ($self) = @_; + + $self->SUPER::premature_checks(); + return if LJ::Request->redirected(); + + my $remote = LJ::get_remote(); + if (!$remote) { + $self->{'gift_only'} = 1; + $self->ml_warning('shop.view.userheads.warning.disabled.anon'); + } elsif ($remote->is_identity) { + $self->{'gift_only'} = 1; + $self->ml_warning('shop.view.userheads.warning.disabled.openid'); + } else { + $self->{'gift_only'} = 0; + } +} + +sub gift_only { + my ($self) = @_; + return $self->{'gift_only'}; +} + +sub get_page_params { + my ($self) = @_; + + my $remote = LJ::get_remote(); + my $gift = ((!$remote || LJ::Request->get_param('gift')) && LJ::Request->get_param('giftto')) || 0; + my $recipient = $gift ? LJ::load_user(LJ::Request->get_param('giftto')) : undef; + + # [10,6,2] == foreach period, for 1 packet + my $js_prices = [];#[ map { $options{$_}{amount} } sort { $b <=> $a } keys %options ]; + my $js_prices_rcpt = [];#[ map { $options_rcpt{$_}{amount} } sort { $b <=> $a } keys %options_rcpt ]; + + my ($sec, $min, $hour, $mday, $mon, $year) = localtime(time); + + # autocomplete To field on Add form + my @flist = + LJ::isu($remote) ? + map { $_->user } ($remote->people_friends) : (); + my $js_complete = LJ::JSUtil::autocomplete(list => \@flist); + + my %ret = ( + siteroot => $LJ::SITEROOT, + is_gift => $gift, + is_self_disabled => $self->gift_only, + userheads => LJ::UserHead->get_all_userheads (1), + default_page => $gift && LJ::u_equals($remote, $recipient) ? 'gift' : $gift && $recipient ? 'self' : 'gift', + rcpt_username => $recipient && $recipient->user, + thispage => "$LJ::SITEROOT/shop/userheads.bml", + giveafter_dd => LJ::Request->post_param('giveafter_dd') || $mday, + giveafter_mm => LJ::Request->post_param('giveafter_mm') || ($mon + 1), + giveafter_yyyy => LJ::Request->post_param('giveafter_yyyy') || ($year + 1900), + js_prices => LJ::JSON->to_json($js_prices), + js_prices_rcpt => LJ::JSON->to_json($js_prices_rcpt), + + js_complete => $js_complete, + + ); + + return \%ret; +} + +sub process_post_request { + my ($self) = @_; + + my $giveafter_dd = LJ::Request->post_param('giveafter_dd'); + my $giveafter_mm = LJ::Request->post_param('giveafter_mm'); + my $giveafter_yyyy = LJ::Request->post_param('giveafter_yyyy'); + + my ($uh_id) = LJ::Request->post_param('uh') =~ m#uh-(\d+)#; + my $uh = LJ::UserHead->get_userhead($uh_id); + + my $recipient = + (LJ::Request->get_param('gift') and LJ::Request->get_param('giftto')) + ? LJ::load_user(LJ::Request->get_param('giftto')) + : LJ::get_remote(); + + die "Unknown recipient" unless $recipient; + + my $cart = $self->try_get_cart; + + my $it = LJ::Pay::Payment::PayItem::UserHead->new_memonly( + subitem => LJ::Request->post_param('uh'), + qty => 1, + amt => $uh->get_price (), + anon => LJ::get_remote() ? LJ::Request->post_param('gift_anon') : 1, + rcptid => $recipient->userid, + ); + + if ($giveafter_yyyy) { + my $err_msg = $it->set_giveafter( + $giveafter_yyyy, $giveafter_mm, $giveafter_dd, + $recipient->timezone + ); + } + + $self->cart->add_item_to_cart($it); + + return LJ::Request->redirect($self->cart->cart_link); +} + +sub get_template_file { 'UserHeads' } + +1; Added: trunk/htdocs/shop/userheads.bml =================================================================== --- trunk/htdocs/shop/userheads.bml (rev 0) +++ trunk/htdocs/shop/userheads.bml 2010-08-20 06:57:48 UTC (rev 9365) @@ -0,0 +1,27 @@ +<?page +body<= +<?_code +{ + + use strict; + use vars qw(%GET %POST $title $headextra @errors @warnings); + + LJ::set_active_crumb('shop.userheads'); + + $title = $ML{'shop.view.userheads.title'}; + + use LJ::Pay::Payment::PayItem::Items; + + # Auto redirect to status if disabled + return BML::redirect("http://status.livejournal.org/") + if $LJ::DISABLED{'recbill_shop'}; + + return LJ::Widget::Shop::View::UserHeads->render(); +} +_code?> +<=body +title=><?_code return $title; _code?> +head<= +<?_code return $headextra; _code?> +<=head +page?>