Skip to content
Permalink
Browse files
commited code by TMB for addition of Subject sort name field. Need to…
… update database to add the new field to Subject DataObj. Fixed an issue where the subject order value is not respected in browse view menu (e.g browse by division)
  • Loading branch information
Jiadi Yao committed Nov 28, 2014
1 parent 448b834 commit dd4e0d7ee765d702aa2e100917c2fffb0418bb29
Showing with 36 additions and 4 deletions.
  1. +1 −0 lib/lang/en/phrases/system.xml
  2. +35 −4 perl_lib/EPrints/DataObj/Subject.pm
@@ -3008,6 +3008,7 @@ PY = 2006 and OG = (Cambridge)<br />
<epp:phrase id="Plugin/Screen/Subject/Edit:existing">Link Existing Subject</epp:phrase>
<epp:phrase id="Plugin/Screen/Subject/Edit:exists">A subject with that id already exists.</epp:phrase>
<epp:phrase id="subject_fieldname_name_name">Name</epp:phrase>
<epp:phrase id="subject_fieldname_name_sortvalue">Sort name</epp:phrase>
<epp:phrase id="subject_fieldname_name_lang">Language</epp:phrase>
<epp:phrase id="Plugin/Screen/Subject/Edit:action_save">Save changes</epp:phrase>
<epp:phrase id="Plugin/Screen/Subject/Edit:saved">Saved changes</epp:phrase>
@@ -64,6 +64,13 @@ sub get_system_field_info
{
'sub_name' => 'name',
'type' => 'text',
'input_cols' => 30,
},
# EPrints Services/tmb 2010-07-30 optional user-supplied sort value
{
'sub_name' => 'sortvalue',
'type' => 'text',
'input_cols' => 30,
},
]
},
@@ -77,6 +84,16 @@ sub get_system_field_info

{ name=>"depositable", type=>"boolean", required=>1,
input_style=>"radio" },

# EPrints Services/tmb 2010-07-30 derived sort value - not to be confused with name_sortvalue!
{ name=>"sortvalue", type=>"multilang", required=>1, multiple=>1, volatile => 1, export_as_xml => 0,
fields=>[
{
'sub_name' => 'sortvalue',
'type' => 'text',
},
]
},
);
}

@@ -187,6 +204,20 @@ sub commit
my @ancestors = $self->_get_ancestors( {} );
$self->set_value( "ancestors", \@ancestors );

# EPrints Services/tmb 2010-07-30 derive sort values
my @svals;
for( @{ $self->get_value( "name" ) } )
{
next unless EPrints::Utils::is_set( $_->{name} );
my $sv = {
lang => $_->{lang},
sortvalue => $_->{name},
};
$sv->{sortvalue} = $_->{sortvalue} if EPrints::Utils::is_set( $_->{sortvalue} );
push @svals, $sv;
}
$self->set_value( "sortvalue", \@svals );

if( !defined $self->{changed} || scalar( keys %{$self->{changed}} ) == 0 )
{
# don't do anything if there isn't anything to do
@@ -458,8 +489,7 @@ sub get_children
value => $subjectid
}
],
custom_order=>"name_name" );

custom_order=>"sortvalue_sortvalue/name_name" );
return $results->slice;
}

@@ -781,7 +811,7 @@ sub get_all
my $ds = $session->dataset( "subject" );

# Retrieve all of the subjects
my $results = $ds->search( custom_order => "name_name" );
my $results = $ds->search( custom_order => "sortvalue_sortvalue/name_name" ); # EPrints Services/tmb 2010-07-30 order by derived sort value

$results->map($f);

@@ -922,7 +952,8 @@ sub render_description
{
my( $self ) = @_;

return $self->render_value( "name" );
# EPrints Services/sf2 2011-12-13 - render 'name_name' otherwise it will render 'name_name' and 'name_sortvalue'
return $self->render_value( "name_name" );
}


0 comments on commit dd4e0d7

Please sign in to comment.