[
https://jira.duraspace.org/browse/DS-749?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18136#action_18136
]
Jim Ottaviani commented on DS-749:
----------------------------------
Hi Peter,
To describe the work a little more, this code allows administrators (not
necessarily the same as depositors) to change the display order via the
administrator's "Edit" UI for items. Its interface is simple: in the
'Bitstreams' section of the JSPUI's 'tools/edit-item' page the table displays a
new column titled "Display Order" in addition to those for bitstream name,
source, description, format, etc. where the appropriate ordinal number can be
set next to a bitstream -- meaning there is now a place in the UI for this
database value.
Skipping to your question "[W]hat happens when you create a new bitstream via
the system?", if I understand it correctly then you're talking about one of two
scenarios:
If you're working through the standard submission UI, bitstreams get added just
as they do now, and display in the public interface as they do now (last in,
first out/top of list). So the numbers applied to display_order reflect current
practice, with no change to the submission UI.
If you're adding a bitstream to a previously submitted item, the bitstream gets
assigned the next highest display_order integer, and thus appears as the last
bitstream to display to the public. If you want that newly added bitstream to
display first (or third, or tenth...) instead, simply return to the
tools/edit-items page and reassign numbers in display_order.
> 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