LP#1312699 - Add feature to allow user to edit their checkout history.
authorDan Pearl <dpearl@cwmars.org>
Tue, 20 Oct 2015 21:05:07 +0000 (17:05 -0400)
committerBen Shum <ben@evergreener.net>
Wed, 2 Mar 2016 06:01:41 +0000 (01:01 -0500)
In the checkout history page, a new column and action selector is provided to allow
the paton to indicate items they would just as soon not want to see again in the
history list for whatever reason.  NOTE: This is not a PURGE function; it simply
suppresses display of items in the history list (and exported history files).
Internally, the circulations are kept by Evergreen for several reasons which are
not affected by this functionality.

Signed-off-by: Dan Pearl <dpearl@cwmars.org>
Signed-off-by: Josh Stompro <stomproj@larl.org>
Signed-off-by: Jake Litrell <jake@masslnc.org>
Signed-off-by: Kathy Lussier <klussier@masslnc.org>

Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm
Open-ILS/src/templates/opac/myopac/circ_history.tt2
docs/RELEASE_NOTES_NEXT/OPAC/edit_circ_history [new file with mode: 0644]

index ec0bada..5ae325c 100644 (file)
@@ -1585,6 +1585,10 @@ sub load_myopac_circ_history {
     my $ctx = $self->ctx;
     my $limit = $self->cgi->param('limit') || 15;
     my $offset = $self->cgi->param('offset') || 0;
+    my $action = $self->cgi->param('action') || '';
+
+    my $circ_handle_result;
+    $circ_handle_result = $self->handle_circ_update($action) if $action;
 
     $ctx->{circ_history_limit} = $limit;
     $ctx->{circ_history_offset} = $offset;
@@ -1647,6 +1651,34 @@ sub fetch_user_circ_history {
     return \@circs;
 }
 
+sub handle_circ_update {
+    my $self = shift;
+    my $action = shift;
+    my $circ_ids = shift;
+    my $e = $self->editor;
+    my $url;
+
+    my @circ_ids = ($circ_ids) ? @$circ_ids : $self->cgi->param('circ_id'); # for non-_all actions
+
+    my $cstore_ses = OpenSRF::AppSession->create('open-ils.cstore');
+    $cstore_ses->connect();
+    $cstore_ses->request('open-ils.cstore.transaction.begin')->gather(1);
+
+    if($action =~ /delete/) {
+        for my $circ_id (@circ_ids) {
+            my $circ = $cstore_ses->request(
+                'open-ils.cstore.direct.action.circulation.retrieve', $circ_id)->gather(1);
+            $circ->hide_from_usr_history(1);
+            my $resp = $cstore_ses->request(
+                'open-ils.cstore.direct.action.circulation.update', $circ)->gather(1);
+        }
+    }
+
+    $cstore_ses->request('open-ils.cstore.transaction.commit')->gather(1);
+    $cstore_ses->disconnect();
+    return undef;
+}
+
 # TODO: action.usr_visible_holds does not return cancelled holds.  Should it?
 sub load_myopac_hold_history {
     my $self = shift;
index 5339b25..e686b80 100644 (file)
     <div class="warning_box">[% l('There are no items in your circulation history.') %]</div>
     [% ELSE %]
 
+        <form method="post" id="circ-form"
+            onsubmit="return confirm('[% l("Are you sure you wish to delete the selected item(s)?") %]');">
+        <table cellpadding='0' cellspacing='0' class="item_list_padding">
+            <tr>
+                <td>
+                    <select name="action">
+                        <option value="delete">[% l('Delete Selected Titles') %]</option>
+                    </select>
+                </td>
+                <td style="padding-left:9px;">
+                    <input type="submit"
+                        value="[% l('Go') %]"
+                        alt="[% l('Go') %]" title="[% l('Go') %]"
+                        class="opac-button" />
+                </td>
+                <!--
+                <td style="padding-left:5px;">
+                    <a href="#"><img alt="[% l('Deleting Help') %]"
+                        src="[% ctx.media_prefix %]/images/question-mark.png" /></a>
+                </td>
+                -->
+            </tr>
+        </table>
     <div id='checked_main'>
         <table id="acct_checked_main_header"
             title="[% l('History of Items Checked Out') %]">
             <thead>
                 <tr>
+                    <th align="center">
+                        <input type="checkbox" onclick="var inputs=document.getElementsByTagName('input'); for (i = 0; i < inputs.length; i++) { if (inputs[i].name == 'circ_id' && !inputs[i].disabled) inputs[i].checked = this.checked;}"/>
+                    </th>
                     <th>[% sort_head("sort_title", l("Title")) %]</th>
                     <th>[% sort_head("author", l("Author")) %]</th>
                     <th>[% sort_head("checkout", l("Checkout Date")) %]</th>
 
                 FOR circ IN circ_items; %]
                     <tr>
+                       <td align="center" style="text-align:center;">
+                               <input type="checkbox" name="circ_id" value="[% circ.circ.id %]" />
+                       </td>
                         <td>
                             <a href="[% mkurl(ctx.opac_root _ '/record/' _ 
                                 circ.circ.target_copy.call_number.record.id, {}, 1) %]"
                         </td>
                         <td>[% circ.circ.target_copy.barcode | html %]</td>
                         <td>[% circ.circ.target_copy.call_number.label | html %]</td>
+        </form>
                     </tr>
                 [% END %]
             </tbody>
diff --git a/docs/RELEASE_NOTES_NEXT/OPAC/edit_circ_history b/docs/RELEASE_NOTES_NEXT/OPAC/edit_circ_history
new file mode 100644 (file)
index 0000000..ea4c60c
--- /dev/null
@@ -0,0 +1,10 @@
+Editable Borrowing History
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+You can delete titles that you do not wish to appear in your Check Out History. 
+
+ * In "My Account", click on the "Items Checked Out" tab, then the "Check Out History" sub-tab.
+ * Check off the items you wish to conceal.
+ * Click the Go button next to the "Delete Selected Titles" drop-down box.
+ * Click OK in the pop-up to confirm your deletion.  Choose carefully, as there is no "undo".
+
+Deleted titles will also not appear in the downloaded CSV file.