{
flesh => 2,
flesh_fields => {
- bpbcm => [ 'target_copy' ],
- acp => [ 'call_number', 'location', 'status', 'peer_record_maps' ]
+ bpbcm => [ 'target_copy', 'peer_type' ],
+ acp => [ 'call_number', 'location', 'status' ]
}
}
]
}
if (scalar(@{$multi_home_list})==0) {
- return { 'records' => [], 'items' => [] };
+ return [];
}
- my $mods_list = _records_to_mods( map { $_->target_copy->call_number->record; } @{$multi_home_list} );
- my @copies = map { $_->target_copy } @{$multi_home_list};
+ # create a unique hash of the primary record MVRs for foreign copies
+ # XXX PLEASE let's change to unAPI2 (supports foreign copies) in the TT opac?!?
+ my %rec_hash = map {
+ ($_->target_copy->call_number->record, _records_to_mods( $_->target_copy->call_number->record ))
+ } @$multi_home_list;
- my $obj = {
- 'records' => $mods_list,
- 'items' => \@copies
- };
+ # set the foreign_copy_maps field to an empty array
+ map { $rec_hash{$_}->foreign_copy_maps([]) } keys( %rec_hash );
+
+ # push the maps onto the correct MVRs
+ for (@$multi_home_list) {
+ push(
+ @{$rec_hash{ $_->target_copy->call_number->record }->foreign_copy_maps()),
+ $_
+ );
+ }
- return $obj;
+ return [sort {$a->title cmp $b->title} values(%rec_hash)];
};
__PACKAGE__->register_method(
hideMe($('rdetail_extras_loading'));
var tbody = $('rdetail_foreign_items_tbody');
- var robj = r.getResultObject(); /* { 'records' : [ mvr1, mvr2, ...], 'items' : [ acp1, acp2, ... ] } */
+ var robj = r.getResultObject(); /* mvr list with foreign_copy_maps fleshed */
- for (var i = 0; i < robj.records.length; i++) {
+ for (var i = 0; i < robj.length; i++) {
var args = {};
args.page = RDETAIL;
args[PARAM_OFFSET] = 0;
- args[PARAM_RID] = robj.records[i].doc_id();
+ args[PARAM_RID] = robj[i].doc_id();
var row = elem('tr'); tbody.appendChild(row);
var td1 = elem('td'); row.appendChild(td1);
var title = elem(
'href' : buildOPACLink(args),
'class' : 'classic_link'
},
- robj.records[i].title()
+ robj[i].title()
);
td1.appendChild(title);
- var td2 = elem('td',{},robj.records[i].author()); row.appendChild(td2);
+ var td2 = elem('td',{},robj[i].author()); row.appendChild(td2);
var td3 = elem('td'); row.appendChild(td3);
var details = elem(
'a',
);
details.onclick = function(idx){
return function() {
- cpdBuild( tbody, row, robj.records[idx], null, 1, 0, 1,
- dojo.filter( robj.items, function(item) { return item.call_number().record() == robj.records[idx].doc_id(); } ) );
+ cpdBuild(
+ tbody,
+ row,
+ robj[idx],
+ null,
+ 1,
+ 0,
+ 1,
+ dojo.map(
+ robj[idx].foreign_copy_maps(),
+ function(x){ return x.target_copy(); }
+ )
+ );
};
}(i);
td3.appendChild(details);