<%args> $revocation => 0 $__add_search_condition => undef $__submit => undef % if (! $revocation) {

<% i18nGettext('I18N_OPENXPKI_CLIENT_HTML_MASON_API_CERT_SEARCH_TITLE') %>

<% i18nGettext('I18N_OPENXPKI_CLIENT_HTML_MASON_API_CERT_SEARCH_DESCRIPTION') %>

% } <& /service/open_form.mhtml &> <& /lib/html/hidden.mhtml, name => 'revocation', value => $revocation &> % for ($ii = 0; $ii < scalar @search_conditions; $ii++) { % }
<& /lib/html/select.mhtml, 'name' => "search_$ii", values => \@search_fields, default => [ $search_conditions[$ii]->[0] ] &> <& /lib/html/input.mhtml, name => "value_$ii", value => $search_conditions[$ii]->[1] &> <& /lib/html/input.mhtml, 'type' => 'submit', 'name' => '__remove_search_condition_' . $ii, value => i18nGettext('I18N_OPENXPKI_CLIENT_HTML_MASON_REMOVE_SEARCH_CONDITION') &>
<& /lib/html/input.mhtml, 'type' => 'submit', 'name' => '__add_search_condition', value => i18nGettext('I18N_OPENXPKI_CLIENT_HTML_MASON_ADD_SEARCH_CONDITION') &>
<& /service/send_form.mhtml, 'id' => 'submit_form' &> <& /service/close_form.mhtml &> <& /service/create_csr/print_descriptions.mhtml, 'descriptions' => \@descriptions &> <%init> # reconstruct entered certificate information conditions (passed via # as arguments to this component by itself) my %cert_list_args; my @cert_list_extra_search_args; my @search_conditions; my $ii = 0; { while (defined $ARGS{'search_' . $ii}) { # handle remove button if (! defined $ARGS{'__remove_search_condition_' . $ii}) { my $condition = $ARGS{'search_' . $ii}; my $search_string = $ARGS{'value_' . $ii}; # trim search string $search_string =~ s{ \A \s* }{}xms; $search_string =~ s{ \s* \z }{}xms; # record parameters for submission to cert_list component if ($condition =~ m{ \A (?:subject|cert_serial) \z}xms) { $cert_list_args{$condition} = $search_string; } else { push @cert_list_extra_search_args, [ $condition => $search_string ]; } # remember all search parameters for local component usage push @search_conditions, [ $condition => $search_string ]; } $ii++; } if ($__add_search_condition) { push @search_conditions, [ undef => undef ]; } } # initially show one entry field, defaulting to subject if (scalar @search_conditions == 0) { push @search_conditions, [ 'subject' => '' ], } if (defined $__submit) { # submit button is pressed, pass all collected arguments to the # cert_list.html page return $m->comp('cert_list.html', %cert_list_args, extra_search => \@cert_list_extra_search_args ); } my @descriptions = (); foreach my $key ("SUBJECT", "CERT_SERIAL") { my $label = "I18N_OPENXPKI_CERT_SEARCH_".uc($key); push @descriptions, [ i18nGettext($label), i18nGettext($label . '_DESCRIPTION'), ]; } # prepare a list of possible search criteria. my @search_fields; push @search_fields, { VALUE => 'subject', LABEL => 'I18N_OPENXPKI_CERT_SEARCH_SUBJECT', }; push @search_fields, { VALUE => 'cert_serial', LABEL => 'I18N_OPENXPKI_CERT_SERIAL', }; push @search_fields, { VALUE => 'subject_alt_name', LABEL => 'I18N_OPENXPKI_CLIENT_HTML_MASON_CREATE_CSR_GET_SUBJECT_ALT_NAME_TITLE', }; my $additional_info_fields = $context->{client}->send_receive_command_msg( 'get_additional_information_fields', { }, )->{PARAMS}; foreach my $field (keys %{$additional_info_fields->{ALL}}) { push @search_fields, { VALUE => 'custom_' . $field, LABEL => $additional_info_fields->{ALL}->{$field}, }; } <%once> ## fields for i18n scan ## I18N_OPENXPKI_CERT_SEARCH_SUBJECT ## I18N_OPENXPKI_CERT_SEARCH_SUBJECT_DESCRIPTION ## I18N_OPENXPKI_CERT_SEARCH_EMAIL ## I18N_OPENXPKI_CERT_SEARCH_EMAIL_DESCRIPTION ## I18N_OPENXPKI_CERT_SEARCH_ISSUER ## I18N_OPENXPKI_CERT_SEARCH_ISSUER_DESCRIPTION ## I18N_OPENXPKI_CERT_SEARCH_CERT_SERIAL ## I18N_OPENXPKI_CERT_SEARCH_CERT_SERIAL_DESCRIPTION ## I18N_OPENXPKI_CERT_SEARCH_CSR_SERIAL ## I18N_OPENXPKI_CERT_SEARCH_CSR_SERIAL_DESCRIPTION