Bugzilla – Attachment 93079 Details for
Bug 21946
Group circulation by item type
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 21946: Use objects for displaying circulation rules
Bug-21946-Use-objects-for-displaying-circulation-r.patch (text/plain), 31.35 KB, created by
Nick Clemens (kidclamp)
on 2019-09-21 03:16:49 UTC
(
hide
)
Description:
Bug 21946: Use objects for displaying circulation rules
Filename:
MIME Type:
Creator:
Nick Clemens (kidclamp)
Created:
2019-09-21 03:16:49 UTC
Size:
31.35 KB
patch
obsolete
>From f827020fa51b351caaf909c22c3d5c87bd38299d Mon Sep 17 00:00:00 2001 >From: Nick Clemens <nick@bywatersolutions.com> >Date: Tue, 9 Apr 2019 16:39:22 +0000 >Subject: [PATCH] Bug 21946: Use objects for displaying circulation rules > >Signed-off-by: Liz Rea <wizzyrea@gmail.com> >--- > admin/smart-rules.pl | 76 +--- > .../prog/en/modules/admin/smart-rules.tt | 448 +++++++++++---------- > 2 files changed, 237 insertions(+), 287 deletions(-) > >diff --git a/admin/smart-rules.pl b/admin/smart-rules.pl >index 403f425e54..0b6e811388 100755 >--- a/admin/smart-rules.pl >+++ b/admin/smart-rules.pl >@@ -548,92 +548,20 @@ $template->param( > > my $patron_categories = Koha::Patron::Categories->search({}, { order_by => ['description'] }); > >-my @row_loop; > my $itemtypes = Koha::ItemTypes->search_with_localization; > >-my $sth2 = $dbh->prepare(" >- SELECT issuingrules.*, >- itemtypes.description AS humanitemtype, >- categories.description AS humancategorycode, >- COALESCE( localization.translation, itemtypes.description ) AS translated_description >- FROM issuingrules >- LEFT JOIN itemtypes >- ON (itemtypes.itemtype = issuingrules.itemtype) >- LEFT JOIN categories >- ON (categories.categorycode = issuingrules.categorycode) >- LEFT JOIN localization ON issuingrules.itemtype = localization.code >- AND localization.entity = 'itemtypes' >- AND localization.lang = ? >- WHERE issuingrules.branchcode = ? >-"); >-$sth2->execute($language, $branch); >- >-while (my $row = $sth2->fetchrow_hashref) { >- $row->{'current_branch'} ||= $row->{'branchcode'}; >- $row->{humanitemtype} ||= $row->{itemtype}; >- $row->{default_translated_description} = 1 if $row->{humanitemtype} eq '*'; >- $row->{'humancategorycode'} ||= $row->{'categorycode'}; >- $row->{'default_humancategorycode'} = 1 if $row->{'humancategorycode'} eq '*'; >- $row->{'fine'} = sprintf('%.2f', $row->{'fine'}); >- if ($row->{'hardduedate'} && $row->{'hardduedate'} ne '0000-00-00') { >- my $harddue_dt = eval { dt_from_string( $row->{'hardduedate'} ) }; >- $row->{'hardduedate'} = eval { output_pref( { dt => $harddue_dt, dateonly => 1 } ) } if ( $harddue_dt ); >- $row->{'hardduedatebefore'} = 1 if ($row->{'hardduedatecompare'} == -1); >- $row->{'hardduedateexact'} = 1 if ($row->{'hardduedatecompare'} == 0); >- $row->{'hardduedateafter'} = 1 if ($row->{'hardduedatecompare'} == 1); >- } else { >- $row->{'hardduedate'} = 0; >- } >- if ($row->{no_auto_renewal_after_hard_limit}) { >- my $dt = eval { dt_from_string( $row->{no_auto_renewal_after_hard_limit} ) }; >- $row->{no_auto_renewal_after_hard_limit} = eval { output_pref( { dt => $dt, dateonly => 1 } ) } if $dt; >- } >- >- push @row_loop, $row; >-} >- >-my @sorted_row_loop = sort by_category_and_itemtype @row_loop; >+my $issuing_rules = Koha::IssuingRules->search({ branchcode => $branch }); > > $template->param(show_branch_cat_rule_form => 1); > > $template->param( > patron_categories => $patron_categories, > itemtypeloop => $itemtypes, >- rules => \@sorted_row_loop, >+ rules => $issuing_rules, > humanbranch => ($branch ne '*' ? $branch : ''), > current_branch => $branch, >- definedbranch => scalar(@sorted_row_loop)>0 > ); > output_html_with_http_headers $input, $cookie, $template->output; > > exit 0; > >-# sort by patron category, then item type, putting >-# default entries at the bottom >-sub by_category_and_itemtype { >- unless (by_category($a, $b)) { >- return by_itemtype($a, $b); >- } >-} >- >-sub by_category { >- my ($a, $b) = @_; >- if ($a->{'default_humancategorycode'}) { >- return ($b->{'default_humancategorycode'} ? 0 : 1); >- } elsif ($b->{'default_humancategorycode'}) { >- return -1; >- } else { >- return $a->{'humancategorycode'} cmp $b->{'humancategorycode'}; >- } >-} >- >-sub by_itemtype { >- my ($a, $b) = @_; >- if ($a->{default_translated_description}) { >- return ($b->{'default_translated_description'} ? 0 : 1); >- } elsif ($b->{'default_translated_description'}) { >- return -1; >- } else { >- return lc $a->{'translated_description'} cmp lc $b->{'translated_description'}; >- } >-} >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt >index ed8bc3034e..3231b219dc 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt >@@ -3,6 +3,8 @@ > [% USE Koha %] > [% USE Branches %] > [% USE Categories %] >+[% USE KohaDates %] >+[% USE ItemTypes %] > [% USE CirculationRules %] > [% SET footerjs = 1 %] > >@@ -59,7 +61,7 @@ > [% PROCESS options_for_libraries libraries => Branches.all( selected => current_branch, unfiltered => 1 ) %] > </select> > </form> >- [% IF ( definedbranch ) %] >+ [% IF ( rules.count ) %] > <form action="/cgi-bin/koha/admin/clone-rules.pl" method="post"> > <label for="tobranch"><strong>Clone these rules to:</strong></label> > <input type="hidden" name="frombranch" value="[% current_branch | html %]" /> >@@ -76,187 +78,230 @@ > <input type="hidden" name="branch" value="[% current_branch | html %]"/> > <table id="default-circulation-rules"> > <thead> >- <tr> >- <th>Patron category</th> >- <th>Item type</th> >- <th>Actions</th> >- <th>Note</th> >- <th>Current checkouts allowed</th> >- <th>Current on-site checkouts allowed</th> >- <th>Loan period</th> >- <th>Unit</th> >- <th>Hard due date</th> >- <th>Fine amount</th> >- <th>Fine charging interval</th> >- <th>When to charge</th> >- <th>Fine grace period</th> >- <th>Overdue fines cap (amount)</th> >- <th>Cap fine at replacement price</th> >- <th>Suspension in days (day)</th> >- <th>Max. suspension duration (day)</th> >- <th>Suspension charging interval</th> >- <th>Renewals allowed (count)</th> >- <th>Renewal period</th> >- <th>No renewal before</th> >- <th>Automatic renewal</th> >- <th>No automatic renewal after</th> >- <th>No automatic renewal after (hard limit)</th> >- <th>Holds allowed (total)</th> >- <th>Holds allowed (daily)</th> >- <th>Holds per record (count)</th> >- <th>On shelf holds allowed</th> >- <th>Item level holds</th> >- <th>Article requests</th> >- <th>Rental discount (%)</th> >- <th>Actions</th> >- </tr> >+ <tr> >+ <th> </th> >+ <th>Patron category</th> >+ <th> </th> >+ <th>Item type</th> >+ <th>Actions</th> >+ <th>Note</th> >+ <th>Current checkouts allowed</th> >+ <th>Current on-site checkouts allowed</th> >+ <th>Loan period</th> >+ <th>Unit</th> >+ <th>Hard due date</th> >+ <th>Fine amount</th> >+ <th>Fine charging interval</th> >+ <th>When to charge</th> >+ <th>Fine grace period</th> >+ <th>Overdue fines cap (amount)</th> >+ <th>Cap fine at replacement price</th> >+ <th>Suspension in days (day)</th> >+ <th>Max. suspension duration (day)</th> >+ <th>Suspension charging interval</th> >+ <th>Renewals allowed (count)</th> >+ <th>Renewal period</th> >+ <th>No renewal before</th> >+ <th>Automatic renewal</th> >+ <th>No automatic renewal after</th> >+ <th>No automatic renewal after (hard limit)</th> >+ <th>Holds allowed (total)</th> >+ <th>Holds allowed (daily)</th> >+ <th>Holds per record (count)</th> >+ <th>On shelf holds allowed</th> >+ <th>Item level holds</th> >+ <th>Article requests</th> >+ <th>Rental discount (%)</th> >+ <th>Actions</th> >+ </tr> > </thead> >+ <tfoot> >+ <tr> >+ <th> </th> >+ <th>Patron category</th> >+ <th> </th> >+ <th>Item type</th> >+ <th> </th> >+ <th>Note</th> >+ <th>Current checkouts allowed</th> >+ <th>Current on-site checkouts allowed</th> >+ <th>Loan period</th> >+ <th>Unit</th> >+ <th>Hard due date</th> >+ <th>Fine amount</th> >+ <th>Fine charging interval</th> >+ <th>Charge when?</th> >+ <th>Fine grace period</th> >+ <th>Overdue fines cap (amount)</th> >+ <th>Cap fine at replacement price</th> >+ <th>Suspension in days (day)</th> >+ <th>Max. suspension duration (day)</th> >+ <th>Suspension charging interval</th> >+ <th>Renewals allowed (count)</th> >+ <th>Renewal period</th> >+ <th>No renewal before</th> >+ <th>Automatic renewal</th> >+ <th>No automatic renewal after</th> >+ <th>No automatic renewal after (hard limit)</th> >+ <th>Holds allowed (total)</th> >+ <th>Holds allowed (daily)</th> >+ <th>Holds per record (count)</th> >+ <th>On shelf holds allowed</th> >+ <th>Item level holds</th> >+ <th>Article requests</th> >+ <th>Rental discount (%)</th> >+ <th> </th> >+ </tr> >+ </tfoot> > <tbody> > [% FOREACH rule IN rules %] > <tr id="row_[% loop.count | html %]"> >- <td>[% IF ( rule.default_humancategorycode ) %] >- <em>All</em> >- [% ELSE %] >- [% rule.humancategorycode | html %] >- [% END %] >- </td> >- <td>[% IF rule.default_translated_description %] >- <em>All</em> >- [% ELSE %] >- [% rule.translated_description | html %] >- [% END %] >- </td> >- <td class="actions"> >- <a href="#" class="editrule btn btn-default btn-xs"><i class="fa fa-pencil"></i> Edit</a> >- <a class="btn btn-default btn-xs delete" href="/cgi-bin/koha/admin/smart-rules.pl?op=delete&itemtype=[% rule.itemtype | html %]&categorycode=[% rule.categorycode | html %]&branch=[% rule.current_branch | html %]"><i class="fa fa-trash"></i> Delete</a> >- </td> >- >- <td> >- [% IF rule.note %] >- <a name="viewnote" data-toggle="popover" title="Note" data-content="[% rule.note | html %]" data-placement="top" data-trigger="hover">View note</a> >- [% ELSE %] [% END %] >- </td> >- <td> >- [% SET rule_value = CirculationRules.Get( rule.branchcode, rule.categorycode, rule.itemtype, 'maxissueqty' ) %] >- [% IF rule_value || rule_value == "0" %] >- [% rule_value | html %] >- [% ELSE %] >- <span>Unlimited</span> >- [% END %] >- </td> >- <td> >- [% SET rule_value = CirculationRules.Get( rule.branchcode, rule.categorycode, rule.itemtype, 'maxonsiteissueqty' ) %] >- [% IF rule_value || rule_value == "0" %] >- [% rule_value | html %] >- [% ELSE %] >- <span>Unlimited</span> >- [% END %] >- </td> >- <td>[% rule.issuelength | html %]</td> >- <td> >- [% IF ( rule.lengthunit == 'days' ) %] >- Days >- [% ELSIF ( rule.lengthunit == 'hours') %] >- Hours >- [% ELSE %] >- Undefined >- [% END %] >- </td> >- <td> >- [% IF ( rule.hardduedate ) %] >- [% IF ( rule.hardduedatebefore ) %] >- before [% rule.hardduedate | html %] >- <input type="hidden" name="hardduedatecomparebackup" value="-1" /> >- [% ELSIF ( rule.hardduedateexact ) %] >- on [% rule.hardduedate | html %] >- <input type="hidden" name="hardduedatecomparebackup" value="0" /> >- [% ELSIF ( rule.hardduedateafter ) %] >- after [% rule.hardduedate | html %] >- <input type="hidden" name="hardduedatecomparebackup" value="1" /> >- [% END %] >- [% ELSE %] >- <span>None defined</span> >- [% END %] >- </td> >- <td>[% rule.fine | html %]</td> >- <td>[% rule.chargeperiod | html %]</td> >- <td> >- [% IF rule.chargeperiod_charge_at %] >- <span>Start of interval</span> >- [% ELSE %] >- <span>End of interval</span> >- [% END %] >- </td> >- <td>[% rule.firstremind | html %]</td> >- <td>[% rule.overduefinescap FILTER format("%.2f") %]</td> >- <td> >- [% IF rule.cap_fine_to_replacement_price %] >- <input type="checkbox" checked="checked" disabled="disabled" /> >- [% ELSE %] >- <input type="checkbox" disabled="disabled" /> >- [% END %] >- </td> >- <td>[% rule.finedays | html %]</td> >- <td>[% rule.maxsuspensiondays | html %]</td> >- <td>[% rule.suspension_chargeperiod | html %]</td> >- <td>[% rule.renewalsallowed | html %]</td> >- <td>[% rule.renewalperiod | html %]</td> >- <td>[% rule.norenewalbefore | html %]</td> >- <td> >- [% IF ( rule.auto_renew ) %] >- <span>Yes</span> >- [% ELSE %] >- <span>No</span> >- [% END %] >- </td> >- <td>[% rule.no_auto_renewal_after | html %]</td> >- <td>[% rule.no_auto_renewal_after_hard_limit | html %]</td> >- <td>[% rule.reservesallowed | html %]</td> >- <td>[% IF rule.unlimited_holds_per_day %] >- <span>Unlimited</span> >- [% ELSE %] >- [% rule.holds_per_day | html %] >- [% END %] >- </td> >- <td>[% rule.holds_per_record | html %]</td> >- <td> >- [% IF rule.onshelfholds == 1 %] >- <span>Yes</span> >- [% ELSIF rule.onshelfholds == 2 %] >- <span>If all unavailable</span> >- [% ELSE %] >- <span>If any unavailable</span> >- [% END %] >- </td> >- <td> >- [% IF rule.opacitemholds == 'F'%] >- <span>Force</span> >- [% ELSIF rule.opacitemholds == 'Y'%] >- <span>Allow</span> >- [% ELSE %] >- <span>Don't allow</span> >- [% END %] >- </td> >- <td> >- [% IF rule.article_requests == 'no' %] >- <span>No</span> >- [% ELSIF rule.article_requests == 'yes' %] >- <span>Yes</span> >- [% ELSIF rule.article_requests == 'bib_only' %] >- <span>Record only</span> >- [% ELSIF rule.article_requests == 'item_only' %] >- <span>Item only</span> >- [% END %] >- </td> >- <td>[% rule.rentaldiscount | html %]</td> >- <td class="actions"> >- <a href="#" class="editrule btn btn-default btn-xs"><i class="fa fa-pencil"></i> Edit</a> >- <a class="btn btn-default btn-xs delete" href="/cgi-bin/koha/admin/smart-rules.pl?op=delete&itemtype=[% rule.itemtype | html %]&categorycode=[% rule.categorycode | html %]&branch=[% rule.current_branch | html %]"><i class="fa fa-trash"></i> Delete</a> >- </td> >- >- </tr> >- [% END %] >+ <td>[% IF ( rule.categorycode == '*' ) %]1[% ELSE %]0[% END %]</td> >+ <td>[% IF ( rule.categorycode == '*' ) %] >+ <em>All</em> >+ [% ELSE %] >+ [% Categories.GetName(rule.categorycode) | html %] >+ [% END %] >+ </td> >+ <td>[% IF ( rule.itemtype == '*' ) %]1[% ELSE %]0[% END %]</td> >+ <td>[% IF rule.itemtype == '*' %] >+ <em>All</em> >+ [% ELSE %] >+ [% ItemTypes.GetDescription(rule.itemtype) | html %] >+ [% END %] >+ </td> >+ <td class="actions"> >+ <a href="#" class="editrule btn btn-default btn-xs"><i class="fa fa-pencil"></i> Edit</a> >+ <a class="btn btn-default btn-xs delete" href="/cgi-bin/koha/admin/smart-rules.pl?op=delete&itemtype=[% rule.itemtype | html %]&categorycode=[% rule.categorycode | html %]&branch=[% rule.branchcode | html %]"><i class="fa fa-trash"></i> Delete</a> >+ </td> >+ >+ <td> >+ [% IF rule.note %] >+ <a name="viewnote" data-toggle="popover" title="Note" data-content="[% rule.note | html %]" data-placement="top" data-trigger="hover">View note</a> >+ [% ELSE %] [% END %] >+ </td> >+ <td> >+ [% SET rule_value = CirculationRules.Get( rule.branchcode, rule.categorycode, rule.itemtype, 'maxissueqty' ) %] >+ [% IF rule_value || rule_value == "0" %] >+ [% rule_value | html %] >+ [% ELSE %] >+ <span>Unlimited</span> >+ [% END %] >+ </td> >+ <td> >+ [% SET rule_value = CirculationRules.Get( rule.branchcode, rule.categorycode, rule.itemtype, 'maxonsiteissueqty' ) %] >+ [% IF rule_value || rule_value == "0" %] >+ [% rule_value | html %] >+ [% ELSE %] >+ <span>Unlimited</span> >+ [% END %] >+ </td> >+ <td>[% rule.issuelength | html %]</td> >+ <td> >+ [% IF ( rule.lengthunit == 'days' ) %] >+ Days >+ [% ELSIF ( rule.lengthunit == 'hours') %] >+ Hours >+ [% ELSE %] >+ Undefined >+ [% END %] >+ </td> >+ <td> >+ [% IF ( rule.hardduedate ) %] >+ [% IF ( rule.hardduedatecompare < 0 ) %] >+ before [% rule.hardduedate | $KohaDates %] >+ <input type="hidden" name="hardduedatecomparebackup" value="-1" /> >+ [% ELSIF ( rule.hardduedatecompare == 0 ) %] >+ on [% rule.hardduedate | $KohaDates %] >+ <input type="hidden" name="hardduedatecomparebackup" value="0" /> >+ [% ELSIF ( rule.hardduedatecompare > 1 ) %] >+ after [% rule.hardduedate | $KohaDates %] >+ <input type="hidden" name="hardduedatecomparebackup" value="1" /> >+ [% END %] >+ [% ELSE %] >+ <span>None defined</span> >+ [% END %] >+ </td> >+ <td>[% rule.fine FILTER format("%.2f") %]</td> >+ <td>[% rule.chargeperiod | html %]</td> >+ <td> >+ [% IF rule.chargeperiod_charge_at %] >+ <span>Start of interval</span> >+ [% ELSE %] >+ <span>End of interval</span> >+ [% END %] >+ </td> >+ <td>[% rule.firstremind | html %]</td> >+ <td>[% rule.overduefinescap FILTER format("%.2f") %]</td> >+ <td> >+ [% IF rule.cap_fine_to_replacement_price %] >+ <input type="checkbox" checked="checked" disabled="disabled" /> >+ [% ELSE %] >+ <input type="checkbox" disabled="disabled" /> >+ [% END %] >+ </td> >+ <td>[% rule.finedays | html %]</td> >+ <td>[% rule.maxsuspensiondays | html %]</td> >+ <td>[% rule.suspension_chargeperiod | html %]</td> >+ <td>[% rule.renewalsallowed | html %]</td> >+ <td>[% rule.renewalperiod | html %]</td> >+ <td>[% rule.norenewalbefore | html %]</td> >+ <td> >+ [% IF ( rule.auto_renew ) %] >+ <span>Yes</span> >+ [% ELSE %] >+ <span>No</span> >+ [% END %] >+ </td> >+ <td>[% rule.no_auto_renewal_after | html %]</td> >+ <td>[% rule.no_auto_renewal_after_hard_limit | $KohaDates %]</td> >+ <td>[% rule.reservesallowed | html %]</td> >+ <td>[% IF NOT rule.holds_per_day.defined %] >+ <span>Unlimited</span> >+ [% ELSE %] >+ [% rule.holds_per_day | html %] >+ [% END %] >+ </td> >+ <td>[% rule.holds_per_record | html %]</td> >+ <td> >+ [% IF rule.onshelfholds == 1 %] >+ <span>Yes</span> >+ [% ELSIF rule.onshelfholds == 2 %] >+ <span>If all unavailable</span> >+ [% ELSE %] >+ <span>If any unavailable</span> >+ [% END %] >+ </td> >+ <td> >+ [% IF rule.opacitemholds == 'F'%] >+ <span>Force</span> >+ [% ELSIF rule.opacitemholds == 'Y'%] >+ <span>Allow</span> >+ [% ELSE %] >+ <span>Don't allow</span> >+ [% END %] >+ </td> >+ <td> >+ [% IF rule.article_requests == 'no' %] >+ <span>No</span> >+ [% ELSIF rule.article_requests == 'yes' %] >+ <span>Yes</span> >+ [% ELSIF rule.article_requests == 'bib_only' %] >+ <span>Record only</span> >+ [% ELSIF rule.article_requests == 'item_only' %] >+ <span>Item only</span> >+ [% END %] >+ </td> >+ <td>[% rule.rentaldiscount | html %]</td> >+ <td class="actions"> >+ <a href="#" class="editrule btn btn-default btn-xs"><i class="fa fa-pencil"></i> Edit</a> >+ <a class="btn btn-default btn-xs delete" href="/cgi-bin/koha/admin/smart-rules.pl?op=delete&itemtype=[% rule.itemtype | html %]&categorycode=[% rule.categorycode | html %]&branch=[% rule.branchcode | html %]"><i class="fa fa-trash"></i> Delete</a> >+ </td> >+ >+ </tr> >+ [% END %] > <tr id="edit_row"> >+ <td>2</td> > <td> > <select name="categorycode" id="categorycode"> > <option value="*">All</option> >@@ -265,6 +310,7 @@ > [% END %] > </select> > </td> >+ <td>0</td> > <td> > <select name="itemtype" id="matrixitemtype" style="width:13em;"> > <option value="*">All</option> >@@ -357,42 +403,6 @@ > <button name="cancel" class="clear_edit btn btn-default btn-xs"><i class="fa fa-undo"></i> Clear</button> > </td> > </tr> >- <tfoot> >- <tr> >- <th>Patron category</th> >- <th>Item type</th> >- <th> </th> >- <th>Note</th> >- <th>Current checkouts allowed</th> >- <th>Current on-site checkouts allowed</th> >- <th>Loan period</th> >- <th>Unit</th> >- <th>Hard due date</th> >- <th>Fine amount</th> >- <th>Fine charging interval</th> >- <th>Charge when?</th> >- <th>Fine grace period</th> >- <th>Overdue fines cap (amount)</th> >- <th>Cap fine at replacement price</th> >- <th>Suspension in days (day)</th> >- <th>Max. suspension duration (day)</th> >- <th>Suspension charging interval</th> >- <th>Renewals allowed (count)</th> >- <th>Renewal period</th> >- <th>No renewal before</th> >- <th>Automatic renewal</th> >- <th>No automatic renewal after</th> >- <th>No automatic renewal after (hard limit)</th> >- <th>Holds allowed (total)</th> >- <th>Holds allowed (daily)</th> >- <th>Holds per record (count)</th> >- <th>On shelf holds allowed</th> >- <th>Item level holds</th> >- <th>Article requests</th> >- <th>Rental discount (%)</th> >- <th> </th> >- </tr> >- </tfoot> > </tbody> > </table> > </form> >@@ -824,8 +834,20 @@ > > [% MACRO jsinclude BLOCK %] > [% Asset.js("js/admin-menu.js") | $raw %] >+ [% INCLUDE 'datatables.inc' %] > [% INCLUDE 'calendar.inc' %] > <script> >+ $(document).ready(function() { >+ $("#default-circulation-rules").dataTable($.extend(true,{},dataTablesDefaults, { >+ "aoColumnDefs": [ >+ { "bVisible": false, "aTargets": [ 0,2 ] }, >+ { "bSortable": false, "aTargets": ["_all"] } >+ ], >+ "aaSortingFixed": [ [0,'asc'], [1,'asc'], [2,'asc'], [3,'asc'] ], >+ "bPaginate": false, >+ "bAutoWidth": false >+ })); >+ }); > > function clear_edit(){ > var cancel = confirm(_("Are you sure you want to cancel your changes?")); >-- >2.11.0
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 21946
:
87713
|
87714
|
87715
|
87716
|
87717
|
87718
|
87719
|
88392
|
88574
|
88575
|
88576
|
88577
|
88578
|
88579
|
88580
|
88581
|
88926
|
88927
|
88928
|
88929
|
88930
|
88931
|
88932
|
88933
|
88934
|
89167
|
89168
|
89169
|
89170
|
89171
|
89172
|
89173
|
89174
|
89175
|
89176
|
93075
|
93076
|
93077
|
93078
|
93079
|
93080
|
93081
|
93082
|
93083
|
93084
|
93086
|
93087
|
93088
|
93089
|
93090
|
93091
|
93092
|
93093
|
93094
|
93095
|
93096
|
93097
|
93098
|
93099
|
93100
|
93101
|
93102
|
93103
|
93104
|
93105
|
96977
|
96978
|
96979
|
96980
|
96981
|
96982
|
96983
|
96984
|
96985
|
96986
|
96987
|
99419
|
99420
|
99421
|
99422
|
99423
|
99424
|
107035
|
107036
|
107037
|
107038
|
107039
|
107040
|
107041
|
107278
|
107279
|
107280
|
107281
|
107282
|
107283
|
107284
|
107467
|
107489
|
107686
|
107687
|
107688
|
107689
|
107690
|
107691
|
107692
|
107693
|
107694
|
107701
|
107733