The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<table class="cpac_table">
    <tr>
    [% FOR col IN cpac.tc.cols %]
        [% NEXT IF cpac.tc.hidden_cols.exists(col)
            OR (cpac.tm.f.$col.extra('is_reverse') AND cpac.tm.f.$col.extra('rel_type').match('_many')) %]
        <th class="cpac_table_header">
        [% USE url('', cpac.g.filter_params) %]
        [% SET qp = "&sort=" _ col %]
        [% SET qp = qp _ "&page=" _ cpac_skinny_pager.current_page IF cpac_skinny_pager %]
        [% SET qp = qp _ "&dir=DESC" IF col == cpac_skinny_sortby AND cpac_skinny_dir != "DESC" %]
        [% SET qp = qp _ "&limit=" _ cpac_skinny_limit IF cpac_skinny_limit %]

        <a class="cpac_link" href="?[% url %][% qp %]">
            [% cpac.tc.headings.$col %]
        </a>

        [% IF cpac_skinny_sortby %]
          [% IF cpac_skinny_sortby == col %]
            [% IF cpac_skinny_dir != "DESC" %]
              &darr;
            [% ELSE %]
              &uarr;
            [% END %]
          [% END %]
        [% ELSIF col == cpac.g.default_sort %]
              &darr;
        [% END %]

        </th>
    [% END %]
    </tr>

    [% SET stripe = 0 %]
    [% FOR item IN json_data.rows %]
        [% PROCESS skinny/row.tt %]
    [% END %]
</table>