Owen Leonard
0779e98ddf
When importing frameworks the "cancel" button should be hidden once an import is initiated since it is not possible to cancel the import in progress. This patch uses this bug as an excuse to replace the old import/export pop-ups with modal dialogs for all import/export functions. To test: - Try exporting both the default framework and at least one other framework. - Try importing both a default framework and at least one other framework. - When importing, observe that the modal dialog controls are hidden as soon as the import is initiated. Signed-off-by: David Cook <dcook@prosentient.com.au> Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de> Works nicely, passes all tests and QA script. Also the modal works better on smaller screens. Signed-off-by: Galen Charlton <gmc@esilibrary.com>
326 lines
18 KiB
Text
326 lines
18 KiB
Text
[% INCLUDE 'doc-head-open.inc' %]
|
||
<title>Koha › Administration › MARC frameworks
|
||
[% IF ( add_form ) %]
|
||
› [% IF ( frameworkcode ) %]Modify framework text[% ELSE %]Add framework[% END %]
|
||
[% ELSIF ( delete_confirm ) %]
|
||
› Delete framework for [% frameworktext %] ([% frameworkcode %])?
|
||
[% END %]
|
||
</title>
|
||
[% INCLUDE 'doc-head-close.inc' %]
|
||
<script type="text/javascript">
|
||
//<![CDATA[
|
||
|
||
function isNotNull(f,noalert) {
|
||
if (f.value.length ==0) {
|
||
return false;
|
||
}
|
||
return true;
|
||
}
|
||
function toUC(f) {
|
||
f.value = f.value.toUpperCase();
|
||
return true;
|
||
}
|
||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
function Check(f) {
|
||
var ok=1;
|
||
var _alertString="";
|
||
var alertString2;
|
||
if (f.frameworkcode.value.length==0) {
|
||
_alertString += "\n- " + _("Framework code missing");
|
||
}
|
||
if (!(isNotNull(window.document.Aform.frameworktext))) {
|
||
_alertString += "\n- " + _("Description missing");
|
||
}
|
||
if (_alertString.length==0) {
|
||
document.Aform.submit();
|
||
} else {
|
||
alertString2 = _("Form not submitted because of the following problem(s)");
|
||
alertString2 += "\n------------------------------------------------------------------------------------\n";
|
||
alertString2 += _alertString;
|
||
alert(alertString2);
|
||
return false;
|
||
}
|
||
return true;
|
||
}
|
||
|
||
//]]>
|
||
</script>
|
||
<script type="text/javascript">
|
||
/* Import/Export from/to spreadsheet */
|
||
|
||
var importing = false;
|
||
|
||
$(document).ready(function() {
|
||
$("body").css("cursor", "auto");
|
||
$('.import_export_options').hide();
|
||
$('a.import_export_fw').click(function() {
|
||
if (!importing) {
|
||
$('.import_export_options').hide();
|
||
$(this).next().show('slide');
|
||
}
|
||
return false;
|
||
});
|
||
$('.import_export_close').click(function() {
|
||
if (!importing) {
|
||
$('.import_export_options').fadeOut('fast');
|
||
$("body").css("cursor", "auto");
|
||
return false;
|
||
}
|
||
});
|
||
$('.input_import').val("");
|
||
|
||
var matches = new RegExp("\\?error_import_export=(.+)$").exec(window.location.search);
|
||
if (matches && matches.length > 1) {
|
||
alert(_("Error importing the framework ") + decodeURIComponent(matches[1]));
|
||
}
|
||
|
||
$('input.input_import').change( function() {
|
||
var filename = $(this).val();
|
||
if ( ! /(?:\.csv|\.sql|\.ods|\.xml)$/.test(filename)) {
|
||
$(this).css("background-color","yellow");
|
||
alert(_("Please select an ods or xml file"));
|
||
$(this).val("");
|
||
$(this).css("background-color","white");
|
||
}
|
||
});
|
||
$('form.form_export').submit(function() {
|
||
$('.modal').modal("hide");
|
||
return true;
|
||
});
|
||
$('form.form_import').submit(function() {
|
||
var id = $(this).attr('id');
|
||
var obj = $('#' + id + ' input:file');
|
||
if (/(?:\.csv|\.sql|\.ods|\.xml)$/.test(obj.val())) {
|
||
if (confirm(_("Do you really want to import the framework fields and subfields? This will overwrite the current configuration. For safety reasons please use the export option to make a backup"))) {
|
||
var frameworkcode = $('#' + id + ' input:hidden[name=frameworkcode]').val();
|
||
$('#importing_' + frameworkcode).find("span").html(_("Importing to framework:")+"<strong>" + frameworkcode + "</strong>. " +_("Importing from file:")+"<i>" + obj.val().replace(new RegExp("^.+[/\\\\]"),"") + "</i>");
|
||
if (navigator.userAgent.toLowerCase().indexOf('msie') != -1) {
|
||
var timestamp = new Date().getTime();
|
||
$('#importing_' + frameworkcode).find("img").attr('src', '[% interface %]/[% theme %]/img/loading-small.gif' + '?' +timestamp);
|
||
}
|
||
$('#importing_' + frameworkcode).css('display', 'block');
|
||
if (navigator.userAgent.toLowerCase().indexOf('firefox') == -1) $("body").css("cursor", "progress");
|
||
importing = true;
|
||
$(".modal-footer,.closebtn").hide();
|
||
return true;
|
||
} else
|
||
return false;
|
||
}
|
||
obj.css("background-color","yellow");
|
||
alert(_("Please select an spreadsheet (csv, ods, xml) or sql file"));
|
||
obj.val("");
|
||
obj.css("background-color","white");
|
||
return false;
|
||
});
|
||
});
|
||
|
||
</script>
|
||
|
||
</head>
|
||
<body id="admin_biblio_framework" class="admin">
|
||
[% INCLUDE 'header.inc' %]
|
||
[% INCLUDE 'cat-search.inc' %]
|
||
|
||
<div id="breadcrumbs">
|
||
<a href="/cgi-bin/koha/mainpage.pl">Home</a>
|
||
› <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a>
|
||
› <a href="/cgi-bin/koha/admin/biblio_framework.pl">MARC frameworks</a>
|
||
[% IF ( add_form ) %]
|
||
› [% IF ( frameworkcode ) %]Modify framework text[% ELSE %]Add framework[% END %]
|
||
[% ELSIF ( delete_confirm ) %]
|
||
› Delete framework for [% frameworktext %] ([% frameworkcode %])?
|
||
[% END %]
|
||
</div>
|
||
|
||
<div id="doc3" class="yui-t2">
|
||
<div id="bd">
|
||
<div id="yui-main">
|
||
<div class="yui-b">
|
||
|
||
[% IF ( else ) %]
|
||
<div id="toolbar" class="btn-toolbar">
|
||
<a class="btn btn-small" id="newframework" href="/cgi-bin/koha/admin/biblio_framework.pl?op=add_form"><i class="icon-plus"></i> New framework</a>
|
||
</div>
|
||
[% END %]
|
||
|
||
[% IF ( add_form ) %]
|
||
<h1>[% IF ( frameworkcode ) %]Modify framework text[% ELSE %]Add framework[% END %]</h1>
|
||
<form action="[% script_name %]" name="Aform" method="post" onsubmit="return Check(this);">
|
||
<input type="hidden" name="op" value="add_validate" />
|
||
<fieldset class="rows">
|
||
<ol>
|
||
[% IF ( frameworkcode ) %]
|
||
<li><span class="label">Framework code: </span><input type="hidden" id="frameworkcode" name="frameworkcode" value="[% frameworkcode %]" />[% frameworkcode %]
|
||
<input type="hidden" name="modif" value="1" />
|
||
</li>
|
||
[% ELSE %]
|
||
<li><label for="frameworkcode">Framework code: </label><input type="text" id="frameworkcode" name="frameworkcode" size="4" maxlength="4" onblur="toUC(this)" /></li>
|
||
[% END %]
|
||
<li><label for="description">Description: </label>
|
||
<input type="text" name="frameworktext" id="description" size="40" maxlength="80" value="[% frameworktext |html %]" /></li></ol></fieldset>
|
||
<fieldset class="action"> <input type="submit" value="Submit" class="submit" /></fieldset>
|
||
</form>
|
||
[% END %]
|
||
|
||
[% IF ( delete_confirm ) %]
|
||
<div class="dialog alert">
|
||
<h3>Delete framework for [% frameworktext %] ([% frameworkcode %])?</h3>
|
||
[% IF ( total ) %]
|
||
<p><strong>This framework is used [% total %] times</strong>.</p>
|
||
[% END %]
|
||
<form class="inline" action="[% script_name %]" method="post"><input type="hidden" name="op" value="delete_confirmed" /><input type="hidden" name="frameworkcode" value="[% frameworkcode %]" /><input type="submit" class="approve" value="Yes, delete this framework!" />
|
||
</form>
|
||
<form class="inline" action="[% script_name %]" method="get"><input type="submit" class="deny" value="No, do not delete!" /></form>
|
||
</div>
|
||
[% END %]
|
||
|
||
[% IF ( else ) %]
|
||
<h1>MARC frameworks</h1>
|
||
<p>Framework name, then go to MARC biblio to set MARC editor parameters</p>
|
||
<table>
|
||
<tr>
|
||
<th>Code</th>
|
||
<th>Description</th>
|
||
<th> </th>
|
||
<th>Edit</th>
|
||
<th>Delete</th>
|
||
<th title="Export framework structure (fields, subfields) to a spreadsheet file (.csv, .xml, .ods) or SQL file">Export</th>
|
||
<th title="Import framework structure (fields, subfields) from a spreadsheet file (.csv, .xml, .ods) or SQL file">Import</th>
|
||
</tr>
|
||
<tr>
|
||
<td> </td>
|
||
<td>Default framework</td>
|
||
<td><a href="marctagstructure.pl?frameworkcode=[% frameworkcode %]">MARC structure</a></td>
|
||
<td> </td>
|
||
<td> </td>
|
||
<td>
|
||
|
||
<!-- Button to trigger modal -->
|
||
<a href="#" data-toggle="modal" data-target="#exportModal_[% frameworkcode %]">Export</a>
|
||
<!-- Modal -->
|
||
<div class="modal hide" id="exportModal_[% frameworkcode %]" tabindex="-1" role="dialog" aria-labelledby="exportLabelexportModal_[% frameworkcode %]" aria-hidden="true">
|
||
<div class="modal-header">
|
||
<button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
|
||
<h3 id="exportLabelexportModal_[% frameworkcode %]">Export default framework</h3>
|
||
</div>
|
||
<form action="import_export_framework.pl" name="form_[% frameworkcode %]" method="get" target="_blank" class="form_export">
|
||
<div class="modal-body">
|
||
<fieldset>
|
||
<input type="hidden" name="frameworkcode" value="[% frameworkcode %]" />
|
||
<p><label for="csv_type_export_[% frameworkcode %]"><input type="radio" name="type_export_[% frameworkcode %]" value="csv" id="csv_type_export_[% frameworkcode %]" checked="checked" /> Export to CSV spreadsheet</label></p>
|
||
<p><label for="xml_type_export_[% frameworkcode %]"><input type="radio" name="type_export_[% frameworkcode %]" value="excel" id="xml_type_export_[% frameworkcode %]" /> Export to Excel with XML format, compatible with OpenOffice/LibreOffice as well</label></p>
|
||
<p><label for="ods_type_export_[% frameworkcode %]"><input type="radio" name="type_export_[% frameworkcode %]" value="ods" id="ods_type_export_[% frameworkcode %]" /> Export to OpenDocument spreadsheet format</label></p>
|
||
<p><label for="sql_type_export_[% frameworkcode %]"><input type="radio" name="type_export_[% frameworkcode %]" value="sql" id="sql_type_export_[% frameworkcode %]" /> Export to SQL</label></p>
|
||
|
||
</fieldset>
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="submit" class="btn">Export</button>
|
||
<button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
|
||
</td>
|
||
<td>
|
||
|
||
<!-- Button to trigger modal -->
|
||
<a href="#" data-toggle="modal" data-target="#importModal_[% frameworkcode %][% loop.count %]">Import</a>
|
||
<!-- Modal -->
|
||
<div class="modal hide" id="importModal_[% frameworkcode %][% loop.count %]" tabindex="-1" role="dialog" aria-labelledby="importLabelexportModal_[% frameworkcode %][% loop.count %]" aria-hidden="true">
|
||
<div class="modal-header">
|
||
<button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
|
||
<h3 id="importLabelexportModal_[% frameworkcode %][% loop.count %]">Import default framework structure (fields and subfields) from a spreadsheet file (.csv, .xml, .ods) or SQL file</h3>
|
||
</div>
|
||
<form action="/cgi-bin/koha/admin/import_export_framework.pl" name="form_i_[% frameworkcode %]" id="form_i_[% frameworkcode %]" method="post" enctype="multipart/form-data" class="form_import">
|
||
<div class="modal-body">
|
||
<input type="hidden" name="frameworkcode" value="[% frameworkcode %]" />
|
||
<input type="hidden" name="action" value="import" />
|
||
<p><label for="file_import_[% frameworkcode %]">Upload file:</label> <input type="file" name="file_import_[% frameworkcode %]" id="file_import_[% frameworkcode %]" class="input_import" /></p>
|
||
<div id="importing_[% frameworkcode %]" style="display:none" class="importing"><img src="[% interface %]/[% theme %]/img/loading-small.gif" alt="" /><span class="importing_msg"></span></div>
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="submit" class="btn">Import</button>
|
||
<button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Close</button>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
|
||
</td>
|
||
</tr>
|
||
<!-- note highlight assignment appears backwards because we already have a normal row for Default -->
|
||
[% FOREACH loo IN loop %]
|
||
[% IF ( loop.odd ) %]<tr class="highlight">
|
||
[% ELSE %]<tr>
|
||
[% END %]
|
||
<td>[% loo.frameworkcode %]</td>
|
||
<td>[% loo.frameworktext %]</td>
|
||
<td><a href="marctagstructure.pl?frameworkcode=[% loo.frameworkcode %]" >MARC structure</a></td>
|
||
<td><a href="[% loo.script_name %]?op=add_form&frameworkcode=[% loo.frameworkcode |html %]">Edit</a></td>
|
||
<td><a href="[% loo.script_name %]?op=delete_confirm&frameworkcode=[% loo.frameworkcode |html %]">Delete</a></td>
|
||
<td>
|
||
|
||
<!-- Button to trigger modal -->
|
||
<a href="#" data-toggle="modal" data-target="#exportModal_[% loo.frameworkcode %][% loop.count %]">Export</a>
|
||
<!-- Modal -->
|
||
<div class="modal hide" id="exportModal_[% loo.frameworkcode %][% loop.count %]" tabindex="-1" role="dialog" aria-labelledby="exportLabelexportModal_[% loo.frameworkcode %][% loop.count %]" aria-hidden="true">
|
||
<div class="modal-header">
|
||
<button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
|
||
<h3 id="exportLabelexportModal_[% loo.frameworkcode %][% loop.count %]">Export [% loo.frameworktext %] framework</h3>
|
||
</div>
|
||
<form action="import_export_framework.pl" name="form_[% loo.frameworkcode %]" method="get" target="_blank" class="form_export">
|
||
<div class="modal-body">
|
||
<fieldset>
|
||
<input type="hidden" name="frameworkcode" value="[% loo.frameworkcode %]" />
|
||
<p><label for="csv_type_export_[% loo.frameworkcode %][% loop.count %]"><input type="radio" name="type_export_[% loo.frameworkcode %]" value="csv" id="csv_type_export_[% loo.frameworkcode %][% loop.count %]" checked="checked" /> Export to CSV spreadsheet</label></p>
|
||
<p><label for="xml_type_export_[% loo.frameworkcode %][% loop.count %]"><input type="radio" name="type_export_[% loo.frameworkcode %]" value="excel" id="xml_type_export_[% loo.frameworkcode %][% loop.count %]" /> Export to Excel with XML format, compatible with OpenOffice/LibreOffice as well</label></p>
|
||
<p><label for="ods_type_export_[% loo.frameworkcode %][% loop.count %]"><input type="radio" name="type_export_[% loo.frameworkcode %]" value="ods" id="ods_type_export_[% loo.frameworkcode %][% loop.count %]" /> Export to OpenDocument spreadsheet format</label></p>
|
||
<p><label for="sql_type_export_[% loo.frameworkcode %][% loop.count %]"><input type="radio" name="type_export_[% loo.frameworkcode %]" value="sql" id="sql_type_export_[% loo.frameworkcode %][% loop.count %]" /> Export to SQL</label></p>
|
||
|
||
</fieldset>
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="submit" class="btn">Export</button>
|
||
<button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</td>
|
||
<td>
|
||
|
||
<!-- Button to trigger modal -->
|
||
<a href="#" data-toggle="modal" data-target="#importModal_[% loo.frameworkcode %][% loop.count %]">Import</a>
|
||
<!-- Modal -->
|
||
<div class="modal hide" id="importModal_[% loo.frameworkcode %][% loop.count %]" tabindex="-1" role="dialog" aria-labelledby="importLabelexportModal_[% loo.frameworkcode %][% loop.count %]" aria-hidden="true">
|
||
<div class="modal-header">
|
||
<button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
|
||
<h3 id="importLabelexportModal_[% loo.frameworkcode %][% loop.count %]">Import [% loo.frameworkcode %] framework structure (fields and subfields) from a spreadsheet file (.csv, .xml, .ods) or SQL file</h3>
|
||
</div>
|
||
<form action="/cgi-bin/koha/admin/import_export_framework.pl" name="form_i_[% loo.frameworkcode %]" id="form_i_[% loo.frameworkcode %]" method="post" enctype="multipart/form-data" class="form_import">
|
||
<div class="modal-body">
|
||
<input type="hidden" name="frameworkcode" value="[% loo.frameworkcode %]" />
|
||
<input type="hidden" name="action" value="import" />
|
||
<p><label for="file_import_[% loo.frameworkcode %]">Upload file:</label> <input type="file" name="file_import_[% loo.frameworkcode %]" id="file_import_[% loo.frameworkcode %]" class="input_import" /></p>
|
||
<div id="importing_[% loo.frameworkcode %]" style="display:none" class="importing"><img src="[% interface %]/[% theme %]/img/loading-small.gif" alt="" /><span class="importing_msg"></span></div>
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="submit" class="btn">Import</button>
|
||
<button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Close</button>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
[% END %]
|
||
</table>
|
||
[% IF ( previous ) %]<a href="[% previous %]"><< Previous</a>[% END %]
|
||
[% IF ( next ) %]<a href="[% next %]">Next >></a>[% END %]
|
||
|
||
[% END %]
|
||
</div>
|
||
</div>
|
||
<div class="yui-b">
|
||
[% INCLUDE 'admin-menu.inc' %]
|
||
</div>
|
||
</div>
|
||
[% INCLUDE 'intranet-bottom.inc' %]
|