Uploaded image for project: 'DSpace'
  1. DSpace
  2. DS-749

allow for bitstream display order to be changed

    XMLWordPrintable

    Details

    • Type: New Feature
    • Status: Closed (View Workflow)
    • Priority: Minor
    • Resolution: Fixed
    • Fix Version/s: 1.8.0
    • Component/s: JSPUI, XMLUI
    • Labels:
      None
    • Attachments:
      12
    • Comments:
      22
    • Documentation Status:
      Needed

      Description

      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(); }
      1. ----------------------------------------------------------------------
      2. start of MAIN
      3. ----------------------------------------------------------------------

      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;

      1. 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_;

      ==============================================

        Attachments

        1. Bitstream_ordering_backend_V0_2.patch
          7 kB
        2. Bitstream_ordering_backend.patch
          5 kB
        3. Bitstream_ordering_IE_Bugfixes.patch
          5 kB
        4. Bitstream order UI patch v0.1.zip
          58 kB
        5. Bitstream order UI patch v0.2.zip
          57 kB
        6. Bitstream order UI patch v0.3.zip
          57 kB
        7. GenerateBitDisplayOrder.java
          2 kB
        8. JSPUI.jpg
          JSPUI.jpg
          90 kB
        9. Mirage Screen.jpg
          Mirage Screen.jpg
          48 kB
        10. Mirage Screen (Patch V0.3).jpg
          Mirage Screen (Patch V0.3).jpg
          48 kB
        11. Reference Screen (Patch V0.3).jpg
          Reference Screen (Patch V0.3).jpg
          58 kB
        12. Reference theme.jpg
          Reference theme.jpg
          56 kB

          Issue Links

            Activity

              People

              • Assignee:
                kevin van de velde Kevin Van de Velde (Atmire)
                Reporter:
                blancojose Jose Blanco
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: