+ my $csv_profile = Koha::CsvProfiles->find($format);
+ if ( not $csv_profile or $csv_profile->staff_only ) {
+ print $query->redirect('/cgi-bin/koha/errors/404.pl');
+ exit;
+ }
+
+ my @biblios;
+ while ( my $content = $contents->next ) {
+ push @biblios, $content->biblionumber;
+ }
+ $output = marc2csv(\@biblios, $format);
+ # Other formats
+ } else {
+ my $record_processor = Koha::RecordProcessor->new({
+ filters => 'ViewPolicy'
+ });
+ while ( my $content = $contents->next ) {
+ my $biblionumber = $content->biblionumber;
+
+ my $record = GetMarcBiblio({
+ biblionumber => $biblionumber,
+ embed_items => 1,
+ opac => 1,
+ borcat => $borcat });
+ my $framework = &GetFrameworkCode( $biblionumber );
+ $record_processor->options({
+ interface => 'opac',
+ frameworkcode => $framework
+ });
+ $record_processor->process($record);
+ next unless $record;
+
+ if ($format eq 'iso2709') {
+ $output .= $record->as_usmarc();
+ }
+ elsif ($format eq 'ris' ) {
+ $output .= marc2ris($record);
+ }
+ elsif ($format eq 'bibtex') {
+ $output .= marc2bibtex($record, $biblionumber);
+ }
+ elsif ( $format eq 'isbd' ) {
+ $output .= GetISBDView({
+ 'record' => $record,
+ 'template' => 'opac',
+ 'framework' => $framework,
+ });
+ $extension = "txt";
+ $type = "text/plain";
+ }
+ }
+ }
+
+ # If it was a CSV export we change the format after the export so the file extension is fine
+ $format = "csv" if ($format =~ m/^\d+$/);
+
+ print $query->header(
+ -type => ($type) ? $type : 'application/octet-stream',
+ -'Content-Transfer-Encoding' => 'binary',
+ -attachment => ($extension) ? "shelf.$format.$extension" : "shelf.$format"
+ );
+ print $output;
+
+ } else {
+
+ # if modal context is passed set a variable so that page markup can be different
+ if($context eq "modal"){
+ $template->param(modal => 1);
+ } else {
+ $template->param(fullpage => 1);
+ }
+ $template->param(
+ csv_profiles => [
+ Koha::CsvProfiles->search(
+ {
+ type => 'marc',
+ used_for => 'export_records',
+ staff_only => 0
+ }
+ )
+ ]
+ );
+ $template->param( shelf => $shelf );
+ output_html_with_http_headers $query, $cookie, $template->output;
+ }