# Returns all informations about csv profiles
sub GetCsvProfiles {
+ my ( $type ) = @_;
my $dbh = C4::Context->dbh;
my $query = "SELECT * FROM export_format";
+ if ( $type ) {
+ $query .= " WHERE type = ?";
+ }
$sth = $dbh->prepare($query);
- $sth->execute;
+ $sth->execute( $type ? $type : () );
$sth->fetchall_arrayref({});
my ($id) = @_;
my $dbh = C4::Context->dbh;
- my $query = "SELECT marcfields FROM export_format WHERE export_format_id=?";
+ my $query = "SELECT content FROM export_format WHERE export_format_id=?";
$sth = $dbh->prepare($query);
$sth->execute($id);
- return ($sth->fetchrow_hashref)->{marcfields};
+ return ($sth->fetchrow_hashref)->{content};
}
$csv->sep_char($csvseparator);
# Getting the marcfields
- my $marcfieldslist = $profile->{marcfields};
+ my $marcfieldslist = $profile->{content};
# Getting the marcfields as an array
my @marcfieldsarray = split('\|', $marcfieldslist);
`export_format_id` int(11) NOT NULL auto_increment,
`profile` varchar(255) NOT NULL,
`description` mediumtext NOT NULL,
- `marcfields` mediumtext NOT NULL,
+ `content` mediumtext NOT NULL,
`csv_separator` varchar(2) NOT NULL,
`field_separator` varchar(2) NOT NULL,
`subfield_separator` varchar(2) NOT NULL,
`encoding` varchar(255) NOT NULL,
+ `type` varchar(255) DEFAULT 'marc',
PRIMARY KEY (`export_format_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Used for CSV export';
SetVersion ($DBversion);
}
+
+
+
+
+
+
+$DBversion = "3.13.00.XXX";
+if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
+ $dbh->do(q{
+ ALTER TABLE export_format ADD type VARCHAR(255) DEFAULT 'marc' AFTER encoding
+ });
+ $dbh->do(q{
+ ALTER TABLE export_format CHANGE marcfields content mediumtext NOT NULL
+ });
+ print "Upgrade to $DBversion done (Bug 10853: Add new field export_format.type and rename export_format.marcfields with export_format.content)\n";
+ SetVersion($DBversion);
+}
+
=head1 FUNCTIONS
=head2 TableExists($table)
}
$(document).ready(function() {
$('#csvexporttabs').tabs();
+
+ $("#profile_type").find("option:first").attr("selected", "selected");
+ $("#csvnew").find("li.marc_specific").show();
+ $("#csvnew").find("li.sql_specific").hide();
+
+ $("#profile_type").change(function(){
+ if ( $(this).find("option:selected").val() == "marc" ) {
+ $("#csvnew li.marc_specific").show();
+ $("#csvnew li.sql_specific").hide();
+ } else {
+ $("#csvnew li.marc_specific").hide();
+ $("#csvnew li.sql_specific").show();
+ }
+ });
+ $("#modify_profile_type").change(function(){
+ if ( $(this).find("option:selected").val() == "marc" ) {
+ $("#csvedit li.marc_specific").show();
+ $("#csvedit li.sql_specific").hide();
+ } else {
+ $("#csvedit li.marc_specific").hide();
+ $("#csvedit li.sql_specific").show();
+ }
+ });
+ $("#modify_profile_type").change();
});
//]]>
</script>
<form action="/cgi-bin/koha/tools/csv-profiles.pl" method="post">
<fieldset class="rows">
- <ol><li><label for="profile_name" class="required">Profile name: </label>
+ <ol>
+ <li><label for="profile_name" class="required">Profile name: </label>
<input type="text" id="profile_name" name="profile_name" /></li>
+ <li>
+ <label for="profile_type" class="required">Profile type: </label>
+ <select id="profile_type" name="profile_type">
+ <option value="marc" selected="selected">MARC</option>
+ <option value="sql">SQL</option>
+ </select>
+ </li>
+
<li><label for="profile_description">Profile description: </label>
<textarea cols="50" rows="2" name="profile_description" id="profile_description"></textarea></li>
</select>
</li>
- <li><label for="new_field_separator">Field separator: </label>
+ <li class="marc_specific"><label for="new_field_separator">Field separator: </label>
<select name="field_separator" id="new_field_separator">
<option value=":">Colon (:)</option>
<option value=",">Comma (,)</option>
</select>
</li>
- <li><label for="new_subfield_separator">Subfield separator: </label>
+ <li class="marc_specific"><label for="new_subfield_separator">Subfield separator: </label>
<select name="subfield_separator" id="new_subfield_separator">
<option value=":">Colon (:)</option>
<option value=",">Comma (,)</option>
</select>
</li>
- <li><label for="new_encoding">Encoding: </label>
+ <li class="marc_specific"><label for="new_encoding">Encoding: </label>
<select name="encoding" id="new_encoding">
[% FOREACH encoding IN encodings %]
[% IF ( encoding.encoding == 'utf8' ) %]
</select></li>
- <li><label for="new_profile_content">Profile MARC fields: </label>
- <textarea cols="50" rows="2" name="profile_content" id="new_profile_content"></textarea>
+ <li class="marc_specific"><label for="new_profile_marc_content">Profile MARC fields: </label>
+ <textarea cols="50" rows="2" name="profile_marc_content" id="new_profile_marc_content"></textarea>
<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>
</li>
+ <li class="sql_specific">
+ <label for="new_profile_sql_content">Profile SQL fields: </label>
+ <textarea cols="50" rows="2" name="profile_sql_content" id="new_profile_sql_content"></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>
+ </li>
</ol>
</fieldset>
<fieldset class="action"><input type="hidden" name="action" value="create" />
<form action="/cgi-bin/koha/tools/csv-profiles.pl" method="post">
<fieldset class="rows">
- <ol><li><label for="modify_profile_name">Profile name: </label>
+ <ol>
+ <li><label for="modify_profile_name">Profile name: </label>
<select id="modify_profile_name" name="profile_name" onchange="javascript:reloadPage(this)">
<option value="0">-- Choose One --</option>
[% FOREACH existing_profile IN existing_profiles %]
[% END %]
</select></li>
+ <li>
+ <label for="modify_profile_type">Profile type: </label>
+ <select id="modify_profile_type" name="profile_type">
+ <option value="marc">MARC</option>
+ [% IF selected_profile_type == "sql" %]
+ <option value="sql" selected="selected">SQL</option>
+ [% ELSE %]
+ <option value="sql">SQL</option>
+ [% END %]
+ </select>
+ </li>
+
+
<li><label for="modify_profile_description">Profile description: </label>
<textarea cols="50" rows="2" name="profile_description" id="modify_profile_description">[% selected_profile_description %]</textarea></li>
[% END %]
</select></li>
- <li><label for="field_separator">Field separator: </label>
+ <li class="marc_specific"><label for="field_separator">Field separator: </label>
<select name="field_separator" id="field_separator">
<option value=":">Colon (:)</option>
</select></li>
- <li><label for="subfield_separator">Subfield separator: </label>
+ <li class="marc_specific"><label for="subfield_separator">Subfield separator: </label>
<select name="subfield_separator" id="subfield_separator">
<option value=":">Colon (:)</option>
</select></li>
- <li><label for="encoding">Encoding: </label>
+ <li class="marc_specific"><label for="encoding">Encoding: </label>
<select name="encoding" id="encoding">
[% FOREACH encoding IN encodings %]
[% IF ( selected_encoding == encoding.encoding ) %]
[% END %]
</select></li>
- <li><label for="modify_profile_content">Profile MARC fields: </label>
- <textarea cols="50" rows="2" name="profile_content" id="modify_profile_content">[% selected_profile_marcfields %]</textarea></li>
+ <li class="marc_specific"><label for="modify_profile_marc_content">Profile MARC fields: </label>
+ <textarea cols="50" rows="2" name="profile_marc_content" id="modify_profile_marc_content">[% selected_profile_content %]</textarea></li>
+
+ <li class="sql_specific">
+ <label for="modify_profile_sql_content">Profile SQL fields: </label>
+ <textarea cols="50" rows="2" name="profile_sql_content" id="modify_profile_sql_content">[% selected_profile_content %]</textarea>
+ </li>
<li class="radio"> <label for="delete">Delete selected profile ?</label>
<input type="checkbox" name="delete" id="delete" /></li>
my $profile_name = $input->param("profile_name");
my $profile_description = $input->param("profile_description");
-my $profile_content = $input->param("profile_content");
my $csv_separator = $input->param("csv_separator");
my $field_separator = $input->param("field_separator");
my $subfield_separator = $input->param("subfield_separator");
my $encoding = $input->param("encoding");
+my $type = $input->param("profile_type");
my $action = $input->param("action");
my $delete = $input->param("delete");
my $id = $input->param("id");
if ($delete) { $action = "delete"; }
+my $profile_content = $type eq "marc"
+ ? $input->param("profile_marc_content")
+ : $input->param("profile_sql_content");
+
if ($profile_name && $profile_content && $action) {
my $rows;
if ($action eq "create") {
- my $query = "INSERT INTO export_format(export_format_id, profile, description, marcfields, csv_separator, field_separator, subfield_separator, encoding) VALUES (NULL, ?, ?, ?, ?, ?, ?, ?)";
+ my $query = "INSERT INTO export_format(export_format_id, profile, description, content, csv_separator, field_separator, subfield_separator, encoding, type) VALUES (NULL, ?, ?, ?, ?, ?, ?, ?, ?)";
my $sth = $dbh->prepare($query);
- $rows = $sth->execute($profile_name, $profile_description, $profile_content, $csv_separator, $field_separator, $subfield_separator, $encoding);
+ $rows = $sth->execute($profile_name, $profile_description, $profile_content, $csv_separator, $field_separator, $subfield_separator, $encoding, $type);
}
if ($action eq "edit") {
- my $query = "UPDATE export_format SET description=?, marcfields=?, csv_separator=?, field_separator=?, subfield_separator=?, encoding=? WHERE export_format_id=? LIMIT 1";
+ my $query = "UPDATE export_format SET description=?, content=?, csv_separator=?, field_separator=?, subfield_separator=?, encoding=?, type=? WHERE export_format_id=? LIMIT 1";
my $sth = $dbh->prepare($query);
- $rows = $sth->execute($profile_description, $profile_content, $csv_separator, $field_separator, $subfield_separator, $encoding, $profile_name);
+ $rows = $sth->execute($profile_description, $profile_content, $csv_separator, $field_separator, $subfield_separator, $encoding, $type, $profile_name);
}
if ($action eq "delete") {
# If a profile has been selected for modification
if ($id) {
- my $query = "SELECT export_format_id, profile, description, marcfields, csv_separator, field_separator, subfield_separator, encoding FROM export_format WHERE export_format_id = ?";
+ my $query = "SELECT export_format_id, profile, description, content, csv_separator, field_separator, subfield_separator, encoding, type FROM export_format WHERE export_format_id = ?";
my $sth;
$sth = $dbh->prepare($query);
selected_profile_id => $selected_profile->[0],
selected_profile_name => $selected_profile->[1],
selected_profile_description => $selected_profile->[2],
- selected_profile_marcfields => $selected_profile->[3],
+ selected_profile_content => $selected_profile->[3],
selected_csv_separator => $selected_profile->[4],
selected_field_separator => $selected_profile->[5],
selected_subfield_separator => $selected_profile->[6],
- selected_encoding => $selected_profile->[7]
+ selected_encoding => $selected_profile->[7],
+ selected_profile_type => $selected_profile->[8]
);
}