%# BEGIN BPS TAGGED BLOCK {{{
%#
%# COPYRIGHT:
%#
%# This software is Copyright (c) 1996-2026 Best Practical Solutions, LLC
%#                                          <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
%#
%#
%# LICENSE:
%#
%# This work is made available to you under the terms of Version 2 of
%# the GNU General Public License. A copy of that license should have
%# been provided with this software, but in any event can be snarfed
%# from www.gnu.org.
%#
%# This work 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
%# General Public License for more details.
%#
%# You should have received a copy of the GNU General Public License
%# along with this program; if not, write to the Free Software
%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
%# 02110-1301 or visit their web page on the internet at
%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
%#
%#
%# CONTRIBUTION SUBMISSION POLICY:
%#
%# (The following paragraph is not intended to limit the rights granted
%# to you to modify and distribute this software under the terms of
%# the GNU General Public License and is only of importance to you if
%# you choose to contribute your changes and enhancements to the
%# community by submitting them to Best Practical Solutions, LLC.)
%#
%# By intentionally submitting any modifications, corrections or
%# derivatives to this work, or any other work intended for use with
%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
%# you are the copyright holder for those contributions and you grant
%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
%# royalty-free, perpetual, license to use, copy, create derivative
%# works based on those contributions, and sublicense and distribute
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
% for my $page ( @pages ) {

% my ($system_default) = grep { $_->{Type} eq 'Default' } @{ $mapping->{$class}{$page} || [] };
% my ($entry) = ( grep { $_->{Type} eq $type } @{ $mapping->{$class}{$page} || [] } );

% if ( @labels ) {
  <&| /Widgets/TitleBox,
        title         => loc('Layouts for [_1]', $page),
        class         => 'cf-info-page-layouts',
        content_class => 'mx-auto width-sm',
  &>
% for my $label ( @labels ) {
% my $default = $entry->{Layout}{$label};
    <&| /Elements/LabeledValue, Label => $label &>
      <select name="Layout-<% $page %>-<% $label %>" class="form-select selectpicker">
%     if ( $system_default ) {
        <option value="" <% $default ? '' : 'selected' %>><% loc('Use default ([_1])', $system_default->{Layout}) %></option>
%     }
%     for my $layout ( sort keys %{ $page_layouts->{$page} } ) {
        <option value="<% $layout %>" <% ($default // '') eq $layout ? 'selected' : '' %>><% $layout %></option>
%     }
      </select>
    </&>
% }
  </&>
% } else {
  <&| /Elements/LabeledValue, Label => loc($page) &>
%   my $default = $entry->{Layout}{$name};
    <select name="Layout-<% $page %>" class="form-select selectpicker">
%   if ( $system_default ) {
      <option value="" <% $default ? '' : 'selected' %>><% loc('Use default ([_1])', $system_default->{Layout}) %></option>
%   }
%   for my $layout ( sort keys %{ $page_layouts->{$page} } ) {
      <option value="<% $layout %>" <% ($default // '') eq $layout ? 'selected' : '' %>><% $layout %></option>
%   }
    </select>
  </&>
% }

% }

<%INIT>
my $name = $Object->Name // '';
my $class;
my $type;
my @labels;

if ( $Object->isa('RT::Queue') ) {
    $class = 'RT::Ticket';
    $type = 'Queue';
}
elsif ( $Object->isa('RT::Catalog') ) {
    $class = 'RT::Asset';
    $type = 'Catalog';
}
elsif ( $Object->isa('RT::CustomField') ) {
    ($class) = $Object->LookupType =~ /(RT::(?:Ticket|Asset))$/;
    $type = 'CustomField.{' . $Object->Name .'}';
    @labels = map { $_->Name } @{ $Object->Values->ItemsArrayRef || [] };
}

my $page_layouts = RT->Config->Get('PageLayouts')->{$class};
my $mapping      = RT->Config->Get('PageLayoutMapping');
my @pages        = sort keys %{ $mapping->{$class} };

</%INIT>

<%ARGS>
$Object => undef
</%ARGS>
