The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
%# RT::Extension::ReferenceIDoitObjects
%#
%# Copyright (C) 2011-17 synetics GmbH, <https://i-doit.com/>
%#
%# This program is free software: you can redistribute it and/or modify
%# it under the terms of the GNU Affero General Public License as
%# published by the Free Software Foundation, either version 3 of the
%# License, or (at your option) any later version.
%#
%# This program is distributed in the hope that it will be useful,
%# but WITHOUT ANY WARRANTY; without even the implied warranty of
%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
%# GNU Affero General Public License for more details.
%#
%# You should have received a copy of the GNU Affero General Public License
%# along with this program.  If not, see <http://www.gnu.org/licenses/>.
%#
%# Request Tracker (RT) is Copyright Best Practical Solutions, LLC.

<& /Elements/Header, Title => loc('Modify referenced i-doit objects for ticket #[_1]', $TicketObj->Id) &>
<& /Elements/Tabs &>

% $m->callback(CallbackName => 'BeforeActionList', Actions => \@results, ARGSRef => \%ARGS, Ticket => $TicketObj);

<& /Elements/ListActions, actions => \@results &>

<form name="ModifyReferencedIDoitObjects" method="post" action="ModifyIDoitObjects.html">
    <input type="hidden" class="hidden" name="id" value="<% $TicketObj->Id %>" />
    <input type="hidden" id="Requestors" name="Requestory" value="<% $TicketObj->RequestorAddresses %>" />
    <input type="hidden" id="Subject" name="Subject" value="<% $TicketObj->Subject %>" />

    <div style="display: none;">
    <&| /Widgets/TitleBox, title => loc('These fields are needed to modify referenced i-doit objects.'), class => 'ticket-info-basics' &>
        <& /Elements/EditCustomFields, Object => $TicketObj &>
    </&>
    </div>

    <br />

    <&| /Widgets/TitleBox,title => loc('Modify referenced i-doit objects for ticket #[_1]', $TicketObj->Id), class=> 'ticket-info-basic' &>
        <& Elements/EditIDoitObjects, TicketObj => $TicketObj &>
    </&>
    <& /Elements/Submit, Name => 'SubmitTicket', Label => loc('Save Changes') &>
</form>

<%INIT>
my @results;
my $TicketObj = LoadTicket($id);
$m->callback( TicketObj => $TicketObj, ARGSRef => \%ARGS );
push @results, ProcessObjectCustomFieldUpdates(Object => $TicketObj, ARGSRef => \%ARGS);
$TicketObj->ApplyTransactionBatch;

## Set default tenant if necessary:
my $cfTenant = 'i-doit tenant';
my $IDoitTenant = $TicketObj->FirstCustomFieldValue($cfTenant);
unless ($IDoitTenant) {
    $IDoitTenant = RT->Config->Get('IDoitDefaultTenant');

    unless ($IDoitTenant) {
        my $msg = loc('Default tenant is not configured.');
        RT::Logger->error($msg);
        $$skip_create = 1;
        push @{$results}, $msg;
    }

    my $cf = RT::CustomField->new($RT::SystemUser);
    $cf->LoadByNameAndQueue(Name => $cfTenant, Queue => $TicketObj->Queue);
    unless ($cf->id) {
        $cf->LoadByNameAndQueue(Name => $cfTenant, Queue => 0);
    }

    my ($val, $msg) = $TicketObj->AddCustomFieldValue(Field => $cf, Value => $IDoitTenant);
    unless ($val) {
        $RT::Logger->error('Could not set default tenant: ' . $msg);
        return 0;
    }
}
</%INIT>

<%ARGS>
$id => undef
$skip_create => undef
$results => undef
</%ARGS>