<% encode_json($return) %>\ <%init> my $id = $cgi->param('id'); my $starts = $cgi->param('starts'); my $due = $cgi->param('due'); my $username = $cgi->param('username'); my $ticket = FS::TicketSystem->get_ticket_object( \%session, ticket_id=>$id ); #hmm, this should happen in a single transaction and either commit or rollback my $return; if ( $ticket ) { my $curowner = $ticket->OwnerObj->Name; my($orv, $omsg); if (( $curowner eq $FS::CurrentUser::CurrentUser->username ) or ( $curowner eq 'nobody' )) { ($orv, $omsg) = $ticket->SetOwner( $username ); } else { ($orv, $omsg) = $ticket->SetOwner( $username, 'Steal' ); } $orv = 1 if ! $orv && $omsg =~ /already own/i; if ( $orv ) { my $date = RT::Date->new( $session{CurrentUser} ); $date->Set( Format=>'unix', Value=>$starts, ); my($srv, $smsg) = $ticket->SetStarts( $date->ISO ); $srv = 1 if ! $srv && $smsg =~ /already the current value/i; my $ddate; unless ( ! $srv ) { $ddate = RT::Date->new( $session{CurrentUser} ); $ddate->Set( Format=>'unix', Value=>$due, ); my($drv, $dmsg) = $ticket->SetDue( $ddate->ISO ); #XXX lame } if ( $srv ) { my ($sm, $sh) = ( $date->Localtime('user'))[1,2]; my ($em, $eh) = ($ddate->Localtime('user'))[1,2]; #false laziness w/CalendarSlotSchedule and CalendarDaySchedule my %hash = $m->comp('/rt/Ticket/Elements/Customers', Ticket => $ticket); my @cust_main = values( %{$hash{cust_main}} ); my $timelabel = FS::sched_avail::pretty_time($sh*60+$sm). '-'. FS::sched_avail::pretty_time($eh*60+$em); my $titlelabel = encode_entities($cust_main[0]->_FreesideURILabel); $return = { 'error' => '', #'starts' => $starts, #'due' => $due, #'username' => $username, #false laziness w/CalendarSlotSchedule 'sched_label' => $timelabel . ': ' . $titlelabel, 'sched_label_time' => $timelabel, 'sched_label_title' => $titlelabel, }; } else { $return = { 'error' => $smsg }; } } else { $return = { 'error' => $omsg }; } } else { $return = { 'error' => 'Unknown ticket id' }; }