{ desc => 'Biblio record entry ID or array of IDs', type => 'number' },
{ desc => 'Context library for holdings, if applicable' => 'number' },
{ desc => 'Sort order, if applicable' => 'string' },
+ { desc => 'Sort direction, if applicable' => 'string' },
{ desc => 'Definition Group Member id' => 'number' },
{ desc => 'Whether to bypass auth due to captcha' => 'bool' },
{ desc => 'Email address, if none for the user' => 'string' },
);
sub format_biblio_record_entry {
- my($self, $conn, $arg1, $arg2, $arg3, $arg4, $arg5, $captcha_pass, $email, $subject) = @_;
+ my($self, $conn, $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $captcha_pass, $email, $subject) = @_;
my $for_print = ($self->api_name =~ /print/);
my $for_email = ($self->api_name =~ /email/);
my $preview = ($self->api_name =~ /preview/);
- my $e; my $auth; my $bib_id; my $context_org; my $holdings_context; my $bib_sort; my $group_member; my $type = 'brief';
+ my $e; my $auth; my $bib_id; my $context_org; my $holdings_context; my $bib_sort; my $group_member; my $type = 'brief'; my $sort_dir;
if ($for_print) {
$bib_id = $arg1;
$context_org = $arg2 || $U->get_org_tree->id;
$holdings_context = $context_org;
$bib_sort = $arg3 || 'author';
- $group_member = $arg4;
+ $sort_dir = $arg4 || 'ascending';
+ $group_member = $arg5;
$e = new_editor(xact => 1);
} elsif ($for_email) {
$auth = $arg1;
$bib_id = $arg2;
$bib_sort = $arg4 || 'author';
- $group_member = $arg5;
+ $sort_dir = $arg5 || 'ascending';
+ $group_member = $arg6;
$e = new_editor(authtoken => $auth, xact => 1);
return $e->die_event unless $captcha_pass || $e->checkauth;
$holdings_context = $arg3 || $U->get_org_tree->id;
subject => $subject,
context_org => $holdings_context->shortname,
sort_by => $bib_sort,
+ sort_dir => $sort_dir,
preview => $preview
};
# input: list of bib bucket items; output: sorted list of unapi_bre objects
sort_bucket_unapi_bre => sub {
- my ($list, $unapi_args, $sortby) = @_;
+ my ($list, $unapi_args, $sortby, $sortdir) = @_;
#$logger->info("sort_bucket_unapi_bre unapi_bre params: " . join(', ', map { "$_: $$unapi_args{$_}" } keys(%$unapi_args)));
my @sorted_list;
for my $i (@$list) {
}
}
+ if ($sortdir =~ /^d/) {
+ return [ sort { $$b{$sortby.'sort'} cmp $$a{$sortby.'sort'} } @sorted_list ];
+ }
return [ sort { $$a{$sortby.'sort'} cmp $$b{$sortby.'sort'} } @sorted_list ];
},
my $text = encode_utf8($self->run_TT($env));
return 0 if (!$text);
- if ($$env{user_data}{preview}) {
+ if ($$env{user_data} && ref($$env{user_data}) =~ /HASH/ && $$env{user_data}{preview}) {
$logger->info("SendEmail Reactor: success in preview mode, not sending email");
return 1;
}
return $self->generic_redirect($url);
} elsif ($action eq 'print') {
- if (my $incoming_sort = $cgi->param('sort') || $cgi->param('anonsort')) {
- $incoming_sort =~ s/sort.*$//;
- $self->ctx->{sort} = $incoming_sort;
+ my ($incoming_sort,$sort_dir) = $self->_get_bookbag_sort_params('sort');
+ $sort_dir = $self->cgi->param('sort_dir') if $self->cgi->param('sort_dir');
+ if (!$incoming_sort) {
+ ($incoming_sort,$sort_dir) = $self->_get_bookbag_sort_params('anonsort');
}
+ if (!$incoming_sort) {
+ $incoming_sort = 'author';
+ }
+
+ $incoming_sort =~ s/sort.*$//;
+
+ $self->ctx->{sort} = $incoming_sort;
+ $self->ctx->{sort_dir} = $sort_dir;
+
my $items = $self->editor->search_container_biblio_record_entry_bucket_item({id=>\@selected_item});
my @bib_ids = map { $_->target_biblio_record_entry } @$items;
my $temp_cache_key = $self->_stash_record_list_in_anon_cache(@bib_ids);
return $self->load_mylist_print($temp_cache_key);
} elsif ($action eq 'email') {
- if (my $incoming_sort = $cgi->param('sort') || $cgi->param('anonsort')) {
- $incoming_sort =~ s/sort.*$//;
- $self->ctx->{sort} = $incoming_sort;
+ my ($incoming_sort,$sort_dir) = $self->_get_bookbag_sort_params('sort');
+ $sort_dir = $self->cgi->param('sort_dir') if $self->cgi->param('sort_dir');
+ if (!$incoming_sort) {
+ ($incoming_sort,$sort_dir) = $self->_get_bookbag_sort_params('anonsort');
}
+ if (!$incoming_sort) {
+ $incoming_sort = 'author';
+ }
+
+ $incoming_sort =~ s/sort.*$//;
+
+ $self->ctx->{sort} = $incoming_sort;
+ $self->ctx->{sort_dir} = $sort_dir;
+
my $items = $self->editor->search_container_biblio_record_entry_bucket_item({id=>\@selected_item});
my @bib_ids = map { $_->target_biblio_record_entry } @$items;
my $temp_cache_key = $self->_stash_record_list_in_anon_cache(@bib_ids);
my $clear_cart = $self->cgi->param('clear_cart');
$url .= '&clear_cart=1' if $clear_cart;
my $sort = $self->cgi->param('sort') || $self->cgi->param('anonsort');
+ my $sort_dir = $self->cgi->param('sort_dir');
$url .= '&sort='.$sort if $sort;
+ $url .= '&sort_dir='.$sort_dir if $sort_dir;
$url .= '&is_list=1';
return $self->generic_redirect($url);
my $clear_cart = $self->cgi->param('clear_cart');
$url .= '&clear_cart=1' if $clear_cart;
my $sort = $self->cgi->param('sort') || $self->cgi->param('anonsort');
+ my $sort_dir = $self->cgi->param('sort_dir');
$url .= '&sort='.$sort if $sort;
+ $url .= '&sort_dir='.$sort_dir if $sort_dir;
$url .= '&is_list=1';
return $self->generic_redirect($url);
$ctx->{context_org} = $context_org->id;
- my $incoming_sort = $self->cgi->param('sort') || $self->cgi->param('anonsort') || 'author';
+ my ($incoming_sort,$sort_dir) = $self->_get_bookbag_sort_params('sort');
+ $sort_dir = $self->cgi->param('sort_dir') if $self->cgi->param('sort_dir');
+ if (!$incoming_sort) {
+ ($incoming_sort,$sort_dir) = $self->_get_bookbag_sort_params('anonsort');
+ }
+ if (!$incoming_sort) {
+ $incoming_sort = 'author';
+ }
+
$incoming_sort =~ s/sort.*$//;
$incoming_sort = 'author'
unless (grep {$_ eq $incoming_sort} qw/title author pubdate/);
+
$ctx->{sort} = $incoming_sort;
+ $ctx->{sort_dir} = $sort_dir;
my $method = "open-ils.search.biblio.record.$type.preview";
my @args = (
$list,
$ctx->{context_org},
$ctx->{sort},
+ $ctx->{sort_dir},
$ctx->{format},
$captcha_pass,
$ctx->{email},
END;
flesh_list = flesh_list _ '}';
- item_list = helpers.sort_bucket_unapi_bre(cbreb.items,{flesh => flesh_list, site => user_data.0.context_org, flesh_limit => flimit}, user_data.0.sort_by);
+ item_list = helpers.sort_bucket_unapi_bre(cbreb.items,{flesh => flesh_list, site => user_data.0.context_org, flesh_limit => flimit}, user_data.0.sort_by, user_data.0.sort_dir);
FOR item IN item_list %]
END;
flesh_list = flesh_list _ '}';
- item_list = helpers.sort_bucket_unapi_bre(cbreb.items,{flesh => flesh_list, site => user_data.0.context_org, flesh_limit => flimit}, user_data.0.sort_by);
+ item_list = helpers.sort_bucket_unapi_bre(cbreb.items,{flesh => flesh_list, site => user_data.0.context_org, flesh_limit => flimit}, user_data.0.sort_by, user_data.0.sort_dir);
FOR item IN item_list %]
<li>
Bib ID# [% item.id %]<br />
END;
flesh_list = flesh_list _ '}';
- item_list = helpers.sort_bucket_unapi_bre(cbreb.items,{flesh => flesh_list, site => user_data.0.context_org, flesh_limit => flimit}, user_data.0.sort_by);
+ item_list = helpers.sort_bucket_unapi_bre(cbreb.items,{flesh => flesh_list, site => user_data.0.context_org, flesh_limit => flimit}, user_data.0.sort_by, user_data.0.sort_dir);
FOR item IN item_list %]
END;
flesh_list = flesh_list _ '}';
- item_list = helpers.sort_bucket_unapi_bre(cbreb.items,{flesh => flesh_list, site => user_data.0.context_org, flesh_limit => flimit}, user_data.0.sort_by);
+ item_list = helpers.sort_bucket_unapi_bre(cbreb.items,{flesh => flesh_list, site => user_data.0.context_org, flesh_limit => flimit}, user_data.0.sort_by, user_data.0.sort_dir);
FOR item IN item_list %]
<li>
Bib ID# [% item.id %]<br />
<br class="clear-both" />
<div id="content-wrapper" class="content-wrapper-record-page">
- <form id="previewForm" method="POST" action="[% mkurl('',{},['locg','format','sort','context_org','bre_id','is_list']) %]">
+ <form id="previewForm" method="POST" action="[% mkurl('',{},['locg','format','sort','sort_dir','context_org','bre_id','is_list']) %]">
<input type="hidden" name="old_event" value="[% ctx.preview_record.id %]"/>
<input type="hidden" name="bre_id" value="[% ctx.bre_id %]"/>
<input type="hidden" name="locg" value="[% ctx.selected_print_email_loc %]"/>
<option [% IF ctx.sort == 'title'; 'selected="selected"'; END %] value="title">[% l('Title') %]</option>
<option [% IF ctx.sort == 'pubdate'; 'selected="selected"'; END %] value="pubdate">[% l('Publication Date') %]</option>
</select>
+ <select id="sort_dir" name="sort_dir">
+ <option [% IF ctx.sort_dir == 'ascending'; 'selected="selected"'; END %] value="ascending">[% l('Ascending') %]</option>
+ <option [% IF ctx.sort_dir == 'descending'; 'selected="selected"'; END %] value="descending">[% l('Descending') %]</option>
+ </select>
</label>
</div>
[% END %]
<br class="clear-both" />
<div id="content-wrapper" class="content-wrapper-record-page">
- <form id="previewForm" action="[% mkurl('',{},['locg','format','sort','context_org','bre_id','is_list']) %]">
+ <form id="previewForm" action="[% mkurl('',{},['locg','format','sort','sort_by','context_org','bre_id','is_list']) %]">
<input type="hidden" name="old_event" value="[% ctx.preview_record.id %]"/>
<input type="hidden" name="bre_id" value="[% ctx.bre_id %]"/>
<input type="hidden" name="locg" value="[% ctx.selected_print_email_loc %]"/>
<option [% IF ctx.sort == 'title'; 'selected="selected"'; END %] value="title">[% l('Title') %]</option>
<option [% IF ctx.sort == 'pubdate'; 'selected="selected"'; END %] value="pubdate">[% l('Publication Date') %]</option>
</select>
+ <select id="sort_dir" name="sort_dir">
+ <option [% IF ctx.sort_dir == 'ascending'; 'selected="selected"'; END %] value="ascending">[% l('Ascending') %]</option>
+ <option [% IF ctx.sort_dir == 'descending'; 'selected="selected"'; END %] value="descending">[% l('Descending') %]</option>
+ </select>
</label>
</div>
[% END %]