Koha/koha-tmpl/intranet-tmpl/prog/en/modules/tools/csv-profiles.tt
Jonathan Druart 1d58ebfee3
Bug 35043: Do not have \n or \t appear in PO files
This is a trick, so that we won't have to deal with \t in PO files.
\n is not a problem, but it seems consistent to use the same method for
both.

Signed-off-by: Owen Leonard <oleonard@myacpl.org>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
2023-10-27 16:45:52 -03:00

375 lines
17 KiB
Text

[% USE raw %]
[% USE Asset %]
[% PROCESS 'i18n.inc' %]
[% SET footerjs = 1 %]
[% INCLUDE 'doc-head-open.inc' %]
<title>[% FILTER collapse %]
[% IF op == 'add_form' %]
[% IF csv_profile %]
[% tx("Modify CSV profile '{csv_profile_name}'", {csv_profile_name = csv_profile.profile }) | html %] &rsaquo;
[% ELSE %]
[% t("New CSV profile") | html %] &rsaquo;
[% END %]
[% ELSIF ( op == 'delete_confirm' ) %]
[% tx("Confirm deletion of CSV profile '{csv_profile_name}'", {csv_profile_name = csv_profile.profile }) | html %] &rsaquo;
[% END %]
[% t("CSV profiles") | html %] &rsaquo;
[% t("Tools") | html %] &rsaquo;
[% t("Koha") | html %]
[% END %]</title>
[% INCLUDE 'doc-head-close.inc' %]
</head>
<body id="tools_csv-profiles" class="tools">
[% WRAPPER 'header.inc' %]
[% INCLUDE 'cat-search.inc' %]
[% END %]
[% WRAPPER 'sub-header.inc' %]
[% WRAPPER breadcrumbs %]
[% WRAPPER breadcrumb_item %]
<a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a>
[% END %]
[% IF op == 'add_form' || op == 'delete_confirm' %]
[% WRAPPER breadcrumb_item %]
<a href="/cgi-bin/koha/tools/csv-profiles.pl">CSV profiles</a>
[% END %]
[% END %]
[% IF op == 'add_form' %]
[% IF csv_profile %]
[% WRAPPER breadcrumb_item bc_active= 1 %]
[% tx("Modify CSV profile '{csv_profile_name}'", {csv_profile_name = csv_profile.profile }) | html %]
[% END %]
[% ELSE %]
[% WRAPPER breadcrumb_item bc_active= 1 %]
<span>New CSV profile</span>
[% END %]
[% END %]
[% ELSIF ( op == 'delete_confirm') %]
[% WRAPPER breadcrumb_item bc_active= 1 %]
[% tx("Confirm deletion of CSV profile '{csv_profile_name}'", {csv_profile_name = csv_profile.profile }) | html %]
[% END %]
[% ELSE %]
[% WRAPPER breadcrumb_item bc_active= 1 %]
<span>CSV profiles</span>
[% END %]
[% END %]
[% END #/ WRAPPER breadcrumbs %]
[% END #/ WRAPPER sub-header.inc %]
<div class="main container-fluid">
<div class="row">
<div class="col-sm-10 col-sm-push-2">
<main>
[% FOR m IN messages %]
<div class="dialog [% m.type | html %]">
[% SWITCH m.code %]
[% CASE 'error_on_update' %]
<span>An error occurred when updating this CSV profile. Perhaps it already exists</span>
[% CASE 'error_on_insert' %]
<span>An error occurred when adding this CSV profile</span>
[% CASE 'error_on_delete' %]
<span>An error occurred when deleting this CSV profile. Check the logs</span>
[% CASE 'success_on_update' %]
<span>CSV profile updated successfully</span>
[% CASE 'success_on_insert' %]
<span>CSV profile added successfully</span>
[% CASE 'success_on_delete' %]
<span>CSV profile deleted successfully</span>
[% CASE 'already_exists' %]
<span>This CSV profile already exists</span>
[% CASE %]
<span>[% m.code | html %]</span>
[% END %]
</div>
[% END %]
[% BLOCK list_separator_options %]
[% IF selected_separator == ',' %]
<option value="," selected="selected">Comma (,)</option>
[% ELSE %]
<option value=",">Comma (,)</option>
[% END %]
[% IF selected_separator == '|' %]
<option value="|" selected="selected">Pipe (|)</option>
[% ELSE %]
<option value="|">Pipe (|)</option>
[% END %]
[% IF selected_separator == ';' %]
<option value=";" selected="selected">Semi-colon (;)</option>
[% ELSE %]
<option value=";">Semi-colon (;)</option>
[% END %]
[% IF selected_separator == '#' %]
<option value="#" selected="selected">Sharp (#)</option>
[% ELSE %]
<option value="#">Sharp (#)</option>
[% END %]
[% IF selected_separator == ' ' %]
<option value=" " selected="selected">Space ( )</option>
[% ELSE %]
<option value=" ">Space ( )</option>
[% END %]
[% tab_char = '\t' %]
[% IF selected_separator == '\t' %]
<option value="\t" selected="selected">Tabulation ([% tab_char | html %])</option>
[% ELSE %]
<option value="\t">Tabulation ([% tab_char | html %])</option>
[% END %]
[% new_line_char = '\n' %]
[% IF selected_separator == '\n' %]
<option value="\n" selected="selected">New line ([% new_line_char | html %])</option>
[% ELSE %]
<option value="\n">New line ([% new_line_char | html %])</option>
[% END %]
[% END %]
[% BLOCK type_description %]
[% IF type_code == 'marc' %] <span>MARC</span>
[% ELSIF type_code == 'sql' %] <span>SQL</span>
[% ELSE %] <span>Unknown type</span>
[% END %]
[% END %]
[% BLOCK used_for_description %]
[% IF used_for_code == 'export_records' %] <span>Export records</span>
[% ELSIF used_for_code == 'late_issues' %] <span>Late serial issues claims</span>
[% ELSIF used_for_code == 'late_orders' %] <span>Export late orders</span>
[% ELSIF used_for_code == 'export_basket' %] <span>Basket export in acquisition</span>
[% ELSIF used_for_code == 'export_lost_items' %] <span>Export lost items in report</span>
[% ELSE %] <span>Unknown usage</span>
[% END %]
[% END %]
[% IF op == 'add_form' %]
[% IF csv_profile %]
<h1>[% tx("Modify CSV profile '{csv_profile_name}'", {csv_profile_name = csv_profile.profile }) | html %]</h1>
[% ELSE %]
<h1>New CSV profile</h1>
[% END %]
<form action="/cgi-bin/koha/tools/csv-profiles.pl" class="validated" method="post">
<input type="hidden" name="op" value="add_validate" />
<input type="hidden" name="export_format_id" value="[% csv_profile.export_format_id | html %]" />
<fieldset class="rows">
<ol>
[% IF csv_profile %]
<li><span class="label">Profile ID: </span>[% csv_profile.export_format_id | html %]</li>
[% END %]
<li>
<label for="profile" class="required">Profile name: </label>
<input type="text" name="profile" id="profile" value="[% csv_profile.profile | html %]" class="required">
<span class="required">Required</span>
</li>
<li>
<label for="type" class="required">Profile type: </label>
<select id="type" name="type">
[% FOREACH type IN [ 'marc' 'sql'] %]
[% IF csv_profile.type == type %]
<option value="[% type | html %]" selected="selected">[% PROCESS type_description type_code = type %]</option>
[% ELSE %]
<option value="[% type | html %]">[% PROCESS type_description type_code = type %]</option>
[% END %]
[% END %]
</select>
<span class="required">Required</span>
</li>
<li class="sql_specific">
<label for="used_for_sql">Usage: </label>
<select id="used_for_sql" name="used_for_sql">
[% FOREACH used_for IN [ 'late_issues' 'late_orders', 'export_basket' 'export_lost_items' ] %]
[% IF csv_profile.used_for == used_for %]
<option value="[% used_for | html %]" selected="selected">[% PROCESS used_for_description used_for_code = used_for %]</option>
[% ELSE %]
<option value="[% used_for | html %]">[% PROCESS used_for_description used_for_code = used_for %]</option>
[% END %]
[% END %]
</select>
</li>
<li class="marc_specific">
<label for="used_for_marc">Usage: </label>
<select id="used_for_marc" name="used_for_marc">
[% FOREACH used_for IN [ 'export_records' ] %]
[% IF csv_profile.used_for == used_for %]
<option value="[% used_for | html %]" selected="selected">[% PROCESS used_for_description used_for_code = used_for %]</option>
[% ELSE %]
<option value="[% used_for | html %]">[% PROCESS used_for_description used_for_code = used_for %]</option>
[% END %]
[% END %]
</select>
</li>
<li>
<label for="description">Profile description: </label>
<textarea cols="50" rows="2" name="description" id="description">[% csv_profile.description | html %]</textarea>
</li>
<li>
<label for="csv_separator">CSV separator: </label>
<select name="csv_separator" id="csv_separator">
[% PROCESS list_separator_options selected_separator=csv_profile.csv_separator || ',' %]
</select>
</li>
<li class="marc_specific">
<label for="field_separator">Field separator: </label>
<select name="field_separator" id="field_separator">
[% PROCESS list_separator_options selected_separator=csv_profile.field_separator || '#' %]
</select>
</li>
<li class="marc_specific"><label for="subfield_separator">Subfield separator: </label>
<select name="subfield_separator" id="subfield_separator">
[% PROCESS list_separator_options selected_separator=csv_profile.subfield_separator || '|'%]
</select>
</li>
<li class="marc_specific"><label for="encoding">Encoding: </label>
<select name="encoding" id="encoding">
[% FOREACH encoding IN encodings %]
[% IF csv_profile.encoding == encoding OR NOT csv_profile AND encoding == 'utf8' %]
<option selected="selected">[% encoding | html %]</option>
[% ELSE %]
<option>[% encoding | html %]</option>
[% END %]
[% END %]
</select>
</li>
<li class="marc_specific">
<label for="staff_only">Only available on the staff interface: </label>
[% IF csv_profile.staff_only %]
<input type="checkbox" name="staff_only" id="staff_only" value="1" checked="checked">
[% ELSE %]
<input type="checkbox" name="staff_only" id="staff_only" value="1">
[% END %]
</li>
<li class="marc_specific">
<label for="marc_content" class="required">Profile MARC fields: </label>
<textarea cols="50" rows="2" name="marc_content" id="marc_content">[% csv_profile.content | html %]</textarea>
<span class="required">Required</span>
<p>You have to define which fields or subfields you want to export, separated by pipes.</p>
<p>You can also use your own headers (instead of the ones from Koha) by prefixing the field number with an header, followed by the equal sign.</p>
<p>Example: Personal name=200|Entry element=210$a|300|009</p>
<p>You can use Template Toolkit tags too. See the help page for more information.</p>
</li>
<li class="sql_specific">
<label for="sql_content" class="required">Profile SQL fields: </label>
<textarea cols="50" rows="2" name="sql_content" id="sql_content">[% csv_profile.content | html %]</textarea>
<p>You have to define which fields you want to export, separated by pipes.</p>
<p>You can also use your own headers (instead of the ones from Koha) by prefixing the field name with an header, followed by the equal sign.</p>
<p>Example: Name=subscription.name|Title=subscription.title|Issue number=serial.serialseq</p>
<p>For late issues claims you can use data from following tables: serial, subscription, biblio, biblioitems and aqbookseller.</p>
<p>For basket exports you can use data from following tables: biblio, biblioitems, aqorders, aqbudgets and aqbasket.</p>
<p>For exporting late orders you must provide a profile in Template Toolkit syntax to generate the CSV file.</p>
</li>
</ol>
</fieldset>
<fieldset class="action">
<input type="submit" class="btn btn-primary" value="Submit" />
<a class="cancel" href="/cgi-bin/koha/tools/csv-profiles.pl">Cancel</a>
</fieldset>
</form>
[% END %]
[% IF op == 'delete_confirm' %]
<div class="dialog alert">
[% IF csv_profile %]
<h1>[% tx("Delete CSV profile '{csv_profile_name}'?", {csv_profile_name = csv_profile.profile }) | html %]</h1>
<form action="/cgi-bin/koha/tools/csv-profiles.pl" method="post">
<input type="hidden" name="op" value="delete_confirmed" />
<input type="hidden" name="export_format_id" value="[% csv_profile.export_format_id | html %]" />
<button type="submit" class="approve"><i class="fa fa-check" aria-hidden="true"></i> Yes, delete</button>
</form>
<form action="/cgi-bin/koha/tools/csv-profiles.pl" method="get">
<button type="submit" class="deny"><i class="fa fa-remove" aria-hidden="true"></i> No, do not delete</button>
</form>
[% ELSE %]
This CSV Profile does not exist.
[% END %]
</div>
[% END %]
[% IF op == 'list' %]
<div id="toolbar" class="btn-toolbar">
<a class="btn btn-default" id="newcsvprofile" href="/cgi-bin/koha/tools/csv-profiles.pl?op=add_form"><i class="fa fa-plus"></i> New CSV profile</a>
</div>
<h1>CSV profiles</h1>
[% IF csv_profiles %]
<div class="page-section">
<table id="table_csv_profiles">
<thead>
<th>CSV profile ID</th>
<th>Name</th>
<th>Description</th>
<th>Content</th>
<th>CSV separator</th>
<th>CSV type</th>
<th>Usage</th>
<th class="noExport">Actions</th>
</thead>
<tbody>
[% FOREACH csv_profile IN csv_profiles %]
<tr>
<td>[% csv_profile.export_format_id | html %]</td>
<td>[% csv_profile.profile | html %]</td>
<td>[% csv_profile.description | html %]</td>
<td>[% csv_profile.content | html | html_line_break %]</td>
<td>[% csv_profile.csv_separator | html %]</td>
<td>[% PROCESS type_description type_code = csv_profile.type %]</td>
<td>[% PROCESS used_for_description used_for_code = csv_profile.used_for %]</td>
<td class="actions">
<a href="/cgi-bin/koha/tools/csv-profiles.pl?op=add_form&amp;export_format_id=[% csv_profile.export_format_id | uri %]" class="btn btn-default btn-xs"><i class="fa-solid fa-pencil" aria-hidden="true"></i> Edit</a>
<a href="/cgi-bin/koha/tools/csv-profiles.pl?op=delete_confirm&amp;export_format_id=[% csv_profile.export_format_id | uri %]" class="btn btn-default btn-xs"><i class="fa fa-trash-can"></i> Delete</a>
</td>
</tr>
[% END %]
</tbody>
</table>
</div>
[% ELSE %]
There is no CSV profile defined. <a href="/cgi-bin/koha/tools/csv-profiles.pl?op=add_form">Create a new CSV profile</a>.
[% END %]
[% END %]
</main>
</div> <!-- /.col-sm-10.col-sm-push-2 -->
<div class="col-sm-2 col-sm-pull-10">
<aside>
[% INCLUDE 'tools-menu.inc' %]
</aside>
</div> <!-- /.col-sm-2.col-sm-pull-10 -->
</div> <!-- /.row -->
[% MACRO jsinclude BLOCK %]
[% Asset.js("js/tools-menu.js") | $raw %]
<script>
function reloadPage(p) {
var id = p.value;
if (id != 0) { document.location = "/cgi-bin/koha/tools/csv-profiles.pl?op=add_form&amp;export_format_id=" + id; }
}
$(document).ready(function() {
$("#type").change(function(){
if ( $(this).find("option:selected").val() == "marc" ) {
$("li.marc_specific").show();
$("#marc_content").attr("required", "required");
$("li.sql_specific").hide();
$("#sql_content").removeAttr("required");
} else {
$("li.marc_specific").hide();
$("#marc_content").removeAttr("required");
$("li.sql_specific").show();
$("#sql_content").attr("required", "required");
}
});
$("#type").change();
});
</script>
[% END %]
[% INCLUDE 'intranet-bottom.inc' %]