allow for bitstream display order to be changed
-----------------------------------------------
Key: DS-749
URL: https://jira.duraspace.org/browse/DS-749
Project: DSpace
Issue Type: New Feature
Components: JSPUI
Reporter: Jose Blanco
This patch allows user with access priviledges to edit an item to change the
order in which a bitstream is displayed
in the item display. This patch is for the JSPUI.
The first thing that needs to be done is that a new field needs to be added to
the bitstream table with the following SQL:
alter table bitstream add display_order integer;
Then that field needs to be populated with the values in the sequence_id table.
I have provided a perl script
that I used to do this: fix-display-order.
Once this is done, make the following code changes.
File =>tools/edit-item-form.jsp
+ <th id="t11" class="oddRowOddCol"><strong><fmt:message
key="jsp.tools.edit-item-form.elem10"/></strong></th>
<th id="t11" class="oddRowEvenCol"><strong><fmt:message
key="jsp.tools.edit-item-form.elem5"/></strong></th>
AND
+ <td headers="t11" class="<%= row %>RowOddCol">
+ <input type="text" name="bitstream_order_<%= key %>"
value="<%= (Integer.toString(bitstreams[j].getDisplayOrder()) == null ? "" :
Integer.toString(bitstreams[j].getDisplayOrder())) %>" size="4"/>
+ </td>
<% if (bundles[i].getName().equals("ORIGINAL"))
{ %>
File => Messages.properties
jsp.tools.edit-item-form.elem9 = Description
+jsp.tools.edit-item-form.elem10 =
Display<BR>Order
file Biststream.java
+ public int getDisplayOrder()
+ {
+ return bRow.getIntColumn("display_order");
+ }
+
+ public void setDisplayOrder(int order)
+ {
+ bRow.setColumn("display_order", order);
+ modifiedMetadata = true;
+ addDetails("DisplayOrder");
+ }
File => Item.java
if (streams[k].getSequenceID() < 0)
{
streams[k].setSequenceID(sequence);
+ streams[k].setDisplayOrder(sequence);
sequence++;
streams[k].update();
}
File => Bundle.java
- + "bundle2bitstream.bundle_id= ? ",
+ + "bundle2bitstream.bundle_id= ? "
+ + "ORDER BY bitstream.display_order",
File => EditItemServlet.java
int formatID = UIUtil.getIntParameter(request,
"bitstream_format_id_" + key);
+ int display_order = UIUtil.getIntParameter(request,
+ "bitstream_order_" + key);
AND
bitstream.setName(name);
bitstream.setSource(source);
bitstream.setDescription(desc);
+ bitstream.setDisplayOrder(display_order);
==============================================
This is the fix-display-order perl script used to iniailize display_order:
#!/usr/bin/perl
RE.
BEGIN
{
require "strict.pm";
strict::import();
}
# ----------------------------------------------------------------------
# start of MAIN
# ----------------------------------------------------------------------
use Encode;
use utf8;
use DBI;
use File::Path;
my $dbhP = DBI->connect("dbi:Pg:dbname=dspace-name", "dspace-user", "password");
&UpdateDisplayOrder ();
$dbhP->disconnect;
exit;
sub UpdateDisplayOrder
{
my $statement = qq{select bitstream_id, sequence_id from bitstream};
my $sth = $dbhP->prepare($statement)
or die "Couldn't prepare statement: " . $dbhP->errstr;
# Read the matching records and print them out
$sth->execute() # Execute the query
or die "Couldn't execute statement: " . $sth->errstr;
my $count = 0;
my ( $url, $msg );
my ( $bitstream_id, $sequence_id, @data );
while (@data = $sth->fetchrow_array()) {
$bitstream_id = $data[0];
$sequence_id = $data[1];
if ( $sequence_id )
{
my $sql = qq{update bitstream set display_order = $sequence_id where
bitstream_id= $bitstream_id};
&ProcessSQL ( $sql );
}
}
$sth->finish;
}
sub ProcessSQL
{
my ( $statement ) = @_;
my $sth = $dbhP->prepare($statement)
or die "Couldn't prepare statement: " . $dbhP->errstr;
# Read the matching records and print them out
$sth->execute() # Execute the query
or die "Couldn't execute statement: " . $sth->errstr;
$sth->finish;
}
__END__;
==============================================
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.duraspace.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
------------------------------------------------------------------------------
Centralized Desktop Delivery: Dell and VMware Reference Architecture
Simplifying enterprise desktop deployment and management using
Dell EqualLogic storage and VMware View: A highly scalable, end-to-end
client virtualization framework. Read more!
http://p.sf.net/sfu/dell-eql-dev2dev
_______________________________________________
Dspace-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/dspace-devel