added circulation history backend and template; use |-style regex containers to reduc...
authorberick <berick@esilibrary.com>
Mon, 28 Mar 2011 21:26:36 +0000 (17:26 -0400)
committerBill Erickson <berick@esilibrary.com>
Wed, 20 Jul 2011 18:34:22 +0000 (14:34 -0400)
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm
Open-ILS/web/templates/default/opac/myopac/circ_history.tt2 [new file with mode: 0644]
Open-ILS/web/templates/default/opac/myopac/circs.tt2

index 04d3e79..fac8a2d 100644 (file)
@@ -87,25 +87,25 @@ sub load {
     (undef, $self->ctx->{mylist}) = $self->fetch_mylist unless
         $path =~ /opac\/my(opac\/lists|list)/;
 
-    return $self->load_simple("home") if $path =~ /opac\/home/;
-    return $self->load_simple("advanced") if $path =~ /opac\/advanced/;
-    return $self->load_rresults if $path =~ /opac\/results/;
-    return $self->load_record if $path =~ /opac\/record/;
+    return $self->load_simple("home") if $path =~ m|opac/home|;
+    return $self->load_simple("advanced") if $path =~ m|opac/advanced|;
+    return $self->load_rresults if $path =~ m|opac/results|;
+    return $self->load_record if $path =~ m|opac/record|;
 
-    return $self->load_mylist_add if $path =~ /opac\/mylist\/add/;
-    return $self->load_mylist_move if $path =~ /opac\/mylist\/move/;
-    return $self->load_mylist if $path =~ /opac\/mylist/;
-    return $self->load_cache_clear if $path =~ /opac\/cache\/clear/;
+    return $self->load_mylist_add if $path =~ m|opac/mylist/add|;
+    return $self->load_mylist_move if $path =~ m|opac/mylist/move|;
+    return $self->load_mylist if $path =~ m|opac/mylist|;
+    return $self->load_cache_clear if $path =~ m|opac/cache/clear|;
 
     # ----------------------------------------------------------------
     # Logout and login require SSL
     # ----------------------------------------------------------------
-    if($path =~ /opac\/login/) {
+    if($path =~ m|opac/login|) {
         return $self->redirect_ssl unless $self->cgi->https;
         return $self->load_login;
     }
 
-    if($path =~ /opac\/logout/) {
+    if($path =~ m|opac/logout|) {
         #return Apache2::Const::FORBIDDEN unless $self->cgi->https; 
         $self->apache->log->warn("catloader: logout called in non-secure context from " . 
             ($self->ctx->{referer} || '<no referer>')) unless $self->cgi->https;
@@ -118,14 +118,16 @@ sub load {
     return $self->redirect_auth
         unless $self->cgi->https and $self->editor->requestor;
 
-    return $self->load_place_hold if $path =~ /opac\/place_hold/;
-    return $self->load_myopac_holds if $path =~ /opac\/myopac\/holds/;
-    return $self->load_myopac_circs if $path =~ /opac\/myopac\/circs/;
-    return $self->load_myopac_fines if $path =~ /opac\/myopac\/main/;
-    return $self->load_myopac_update_email if $path =~ /opac\/myopac\/update_email/;
-    return $self->load_myopac_bookbags if $path =~ /opac\/myopac\/lists/;
-    return $self->load_myopac_bookbag_update if $path =~ /opac\/myopac\/list\/update/;
-    return $self->load_myopac if $path =~ /opac\/myopac/;
+    return $self->load_place_hold if $path =~ m|opac/place_hold|;
+    return $self->load_myopac_holds if $path =~ m|opac/myopac/holds|;
+    return $self->load_myopac_circs if $path =~ m|opac/myopac/circs|;
+    return $self->load_myopac_fines if $path =~ m|opac/myopac/main|;
+    return $self->load_myopac_update_email if $path =~ m|opac/myopac/update_email|;
+    return $self->load_myopac_bookbags if $path =~ m|opac/myopac/lists|;
+    return $self->load_myopac_bookbag_update if $path =~ m|opac/myopac/list/update|;
+    return $self->load_myopac_circ_history if $path =~ m|opac/myopac/circ_history|;
+    return $self->load_myopac_hold_history if $path =~ m|opac/myopac/hold_history|;
+    return $self->load_myopac if $path =~ m|opac/myopac|;
 
     return Apache2::Const::OK;
 }
index 1a7c9c3..60219eb 100644 (file)
@@ -389,6 +389,42 @@ sub load_myopac_circs {
     return Apache2::Const::OK;
 }
 
+sub load_myopac_circ_history {
+    my $self = shift;
+    my $e = $self->editor;
+    my $ctx = $self->ctx;
+    my $limit = $self->cgi->param('limit');
+    my $offset = $self->cgi->param('offset');
+
+    my $circs = $e->json_query({
+        from => ['action.usr_visible_circs', $e->requestor->id],
+        limit => $limit || 25,
+        offset => $offset || 0
+    });
+
+    $ctx->{circs} = $self->fetch_user_circs(1, [map { $_->{id} } @$circs], $limit, $offset);
+
+    return Apache2::Const::OK;
+}
+
+sub load_myopac_hold_history {
+    my $self = shift;
+    my $e = $self->editor;
+    my $ctx = $self->ctx;
+    my $limit = $self->cgi->param('limit');
+    my $offset = $self->cgi->param('offset');
+
+    my $holds = $e->json_query({
+        from => ['action.usr_visible_holds', $e->requestor->id],
+        limit => $limit || 25,
+        offset => $offset || 0
+    });
+
+    $ctx->{holds} = $self->fetch_user_holds([map { $_->{id} } @$holds], 0, 1, 0, $limit, $offset);
+
+    return Apache2::Const::OK;
+}
+
 sub load_myopac_fines {
     my $self = shift;
     my $e = $self->editor;
diff --git a/Open-ILS/web/templates/default/opac/myopac/circ_history.tt2 b/Open-ILS/web/templates/default/opac/myopac/circ_history.tt2
new file mode 100644 (file)
index 0000000..e21e67f
--- /dev/null
@@ -0,0 +1,114 @@
+[%  PROCESS "default/opac/parts/header.tt2";
+    PROCESS "default/opac/parts/marc_misc.tt2";
+    WRAPPER "default/opac/parts/base.tt2" +
+        "default/opac/parts/myopac/base.tt2";
+    myopac_page = "circs";
+    limit = CGI.param('limit') || 25;
+    offset = CGI.param('offset') || 0;
+%]
+
+<div style="padding:0px;">
+    
+    <div id="acct_checked_tabs" style="padding-bottom: 12px;color:#666;">
+        <div class="align selected">
+            <a href='circs'><img src="[% ctx.media_prefix %]/images/sub_checked_out_off.jpg"/></a>
+        </div>
+        <div class="align">
+            <img src="[% ctx.media_prefix %]/images/sub_checked_hist_on.jpg"/>
+        </div>
+        <div class="clear-both"></div>
+    </div>
+
+    <div class="header_middle">
+        <span class="float-left">[% l('Current Items Checked Out') %]</span>
+        <span class='float-left' style='padding-left: 10px;'>
+            [% IF offset > 0 %]
+            <a href='circ_history?limit=[% limit %]&offset=[% offset - 1 %]'>[% l('Previous') %]</a>
+            [% END %]
+            [% IF ctx.circs.size == limit %]
+            [%# TODO: get total to prevent paging off then end of the list.. %]
+            <a href='circ_history?limit=[% limit %]&offset=[% offset + 1 %]'>[% l('Next') %]</a>
+            [% END %]
+        </span>
+        <span class="float-right">
+            <a class="hide_me" href="#">[% l('Export List') %]</a>
+        </span>
+    </div>
+    <div class="clear-both"></div>
+
+    [% IF ctx.circs.size < 1 %]
+    <div class="opac-auto-079">
+        <big><strong>[% l('You have no items checked out.') %]</strong></big>
+    </div>
+    [% ELSE %]
+
+    [% IF ctx.success_renewals %]
+    <div class="renew-summary">
+        [% l("Successfully renewed [_1] item(s)", ctx.success_renewals) %]
+    </div>
+    [% END %]
+
+    [% IF ctx.failed_renewals %]
+    <div class="renew-summary red">
+        [% l("Failed to renew [_1] item(s)", ctx.failed_renewals) %]
+    </div>
+    [% END %]
+
+    <div id='checked_main'>
+        <table style='border-collapse:collapse;'>
+            <thead id="acct_checked_main_header">
+                <tr>
+                    <td width="32%" style="padding-left:5px;">
+                        <span title="Click to sort" class='pointer'>[% l('Title') %]</span> /
+                        <span title="Click to sort" class='pointer'>[% l('Author') %]</span>
+                    </td>
+                    <td width="10%" style="padding-left:5px;">
+                        <span title="Click to sort" class='pointer'>[% l('Checkout Date') %]</span>
+                    </td>
+                    <td width="10%" style="padding-left:5px;">
+                        <span title="Click to sort" class='pointer'>[% l('Due Date') %]</span>
+                    </td>
+                    <td width="10%" style="padding-left:5px;">
+                        <span title="Click to sort" class='pointer'>[% l('Date Returned') %]</span>
+                    </td>
+                    <td width="16%">
+                        <span title="Click to sort" class='pointer'>[% l('Barcode') %]</span>
+                    </td>
+                    <td width="22%">
+                        <span title="Click to sort" class='pointer'>[% l('Call Number') %]</span>
+                    </td>
+                </tr>
+            </thead>
+            <tbody>
+                [% FOR circ IN ctx.circs;
+                    attrs = {marc_xml => circ.marc_xml};
+                    PROCESS get_marc_attrs args=attrs; %]
+                    <tr>
+                        <td style="padding-left:5px;padding-bottom:10px;">
+                            <a href="[% ctx.opac_root %]/record/[% circ.circ.target_copy.call_number.record.id %]" 
+                                name="[% l('Catalog record') %]">[% attrs.title %]</a>
+                            [% IF attrs.author %] /
+                            <a href="[% ctx.opac_root %]/results?qtype=author&query=[% attrs.author | replace('[,\.:;]', '') | url %]">[% attrs.author %]</a>
+                            [% END %]
+                        </td>
+                        <td style="padding-left:5px;">
+                            [% date.format(ctx.parse_datetime(circ.circ.xact_start),DATE_FORMAT); %]
+                        </td>
+                        <td style="padding-left:5px;">
+                            [% date.format(ctx.parse_datetime(circ.circ.due_date),DATE_FORMAT); %]
+                        </td>
+                        <td style="padding-left:5px;">
+                            [% IF circ.circ.checkin_time; 
+                                date.format(ctx.parse_datetime(circ.circ.checkin_time),DATE_FORMAT); 
+                            END; %]
+                        </td>
+                        <td>[% circ.circ.target_copy.barcode %]</td>
+                        <td>[% circ.circ.target_copy.call_number.label %]</td>
+                    </tr>
+                [% END %]
+            </tbody>
+        </table>
+    </div>
+    [% END %]
+</div>
+[% END %]
index 9ef034d..2e68ca1 100644 (file)
@@ -4,25 +4,18 @@
         "default/opac/parts/myopac/base.tt2";
     myopac_page = "circs"  %]
 <div id='myopac_checked_div' style="padding:0px;">
-    <div id="acct_checked_tabs" style="padding-bottom: 12px;color:#666;" class="hide_me">
-        <div class="align selected" id="checked_label">
+
+    <div id="acct_checked_tabs" style="padding-bottom: 12px;color:#666;">
+        <div class="align selected">
             <img src="[% ctx.media_prefix %]/images/sub_checked_out_on.jpg" />
         </div>
-        <div class="align" id="checked_hist_link">
-            <a class="" href="#"><img
+        <div class="align">
+            <a href="circ_history"><img
                 src="[% ctx.media_prefix %]/images/sub_checked_hist_off.jpg" /></a>
         </div>
-        <div class="align hide_me" id="checked_link">
-            <a href="#">
-                <img src="[% ctx.media_prefix %]/images/sub_checked_out_off.jpg" />
-            </a>
-        </div>
-        <div class="align selected hide_me" id="checked_hist_label">
-            <img src="[% ctx.media_prefix %]/images/sub_checked_hist_on.jpg" />
-        </div>    
         <div class="clear-both"></div>
     </div>
-    
+
     <div class="header_middle">
         <span class="float-left">[% l('Current Items Checked Out') %]</span>
         <span class="float-right">
         </form>
     </div>
     [% END %]
-    <div id='checked_hist' class="hide_me" style="padding-top:8px;">
-        <table id="acct_checked_hist_header" cellpadding='0' cellspacing='0'
-            border='0' width='100%'>
-            <tr>
-                <td width="45%" style="padding-left:15px;">
-                    <span title="Click to sort" class='pointer'>Title</span> /
-                    <span title="Click to sort" class='pointer'>Author</span>
-                </td>
-                <td width="22%"
-                    style="white-space:nowrap;padding-left:5px;">
-                    <span title="Click to sort" class='pointer'>Call Number</span>
-                </td>
-                <td width="11%">
-                    <span title="Click to sort" class='pointer'>Checkout</span>
-                </td>
-                <td width="11%">
-                    <span title="Click to sort" class='pointer'>Due Date</span>
-                </td>
-                <td width="11%">
-                    <span title="Click to sort" class='pointer'>Returned</span>
-                </td>
-            </tr>
-        </table>
-        <table cellpadding='0' cellspacing='0' border='0'
-            style="margin-top:5px;" width="100%">
-            <tbody id="acct_checked_hist_parent">
-                <tr id="acct_checked_hist_temp">
-                    <td width="45%"
-                        style="padding-left:15px;padding-bottom:10px;">
-                        <a href="#" name="title"></a> /
-                        <span name="author"></span>
-                    </td>
-                    <td width="22%" style="padding-left:5px;"
-                        name="call_number"></td>
-                    <td width="11%" name="checkout"></td>
-                    <td width="11%" name="due_date"></td>
-                    <td width="11%" name="returned"
-                        nowrap="nowrap" style="white-space:nowrap;"></td>
-                </tr>
-            </tbody>
-        </table>
-    </div>
     <div id='non_cat_circs_div' class='hide_me'>
         <br/>
         <div style='text-align: center'><b>[% l("Other Circulations") %]</b></div>
                 </tr>
             </tbody>
         </table>
-    <span class='hide_me' id='myopac_renew_fail'>[% l("The system is unable to renew the selected item at this time.  This usually means the item is needed to fulfill a hold.  Please see a librarian for further help.") %]</span>
-   <span class='hide_me' id='myopac_renew_fail2'>[% l("Library policy prevents the renewal of this item at this time.  Please see a librarian for further details.") %]</span>
+    </div>
 </div>
 [% END %]