From cb439da365abdcdfecd4fbe9d1f9e2ded9cec660 Mon Sep 17 00:00:00 2001 From: Henri-Damien LAURENT Date: Fri, 5 Aug 2011 14:33:11 -0400 Subject: [PATCH] Fix for Bug 5436 - Extended patron attributes display improvements Show patron attributes in the sidebar on circ and patron pages [Edit from Owen Leonard: This patch takes changes originally in Bug 5436 and isolates just the parts relating to display of patron attributes. Because function for pulling patron attributes was merged with the function for displaying address information in SetMemberInfosInTemplate() (also found in Bug 5749), I moved the call to GetBorrowerAttributes into the individual scripts. That keeps the functionality relating specifically to patron attributes separate from the proposed changes to displaying addresses. Because I think it's important to keep the display consistent, I added display of patron attributes to all pages which include the patron information sidebar.] Rebased for compatability with bug 3489 and database documentation by Ian Walls, 9-21-11 Signed-off-by: Paul Poulain Signed-off-by: Ian Walls --- C4/Members/AttributeTypes.pm | 31 +++++++++++++++++-- C4/Members/Attributes.pm | 3 +- admin/patron-attr-types.pl | 9 +++++- circ/circulation.pl | 3 ++ .../0009-patron-attr-display-checkout.pl | 7 ++++ installer/data/mysql/kohastructure.sql | 1 + .../intranet-tmpl/prog/en/includes/circ-menu.inc | 7 ++++ .../intranet-tmpl/prog/en/includes/circ-menu.tt | 7 ++++ .../prog/en/modules/admin/patron-attr-types.tt | 7 ++++- members/boraccount.pl | 6 +++- members/mancredit.pl | 3 ++ members/maninvoice.pl | 3 ++ members/member-flags.pl | 5 ++- members/member-password.pl | 7 +++- members/messaging.pl | 3 ++ members/moremember.pl | 3 ++ members/notices.pl | 5 ++- members/pay.pl | 2 + members/readingrec.pl | 6 +++- 19 files changed, 105 insertions(+), 13 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/0009-patron-attr-display-checkout.pl diff --git a/C4/Members/AttributeTypes.pm b/C4/Members/AttributeTypes.pm index 3a05268..e36557b 100644 --- a/C4/Members/AttributeTypes.pm +++ b/C4/Members/AttributeTypes.pm @@ -118,6 +118,7 @@ sub new { $self->{'opac_display'} = 0; $self->{'password_allowed'} = 0; $self->{'staff_searchable'} = 0; + $self->{'display_checkout'} = 0; $self->{'authorised_value_category'} = ''; bless $self, $class; @@ -152,6 +153,7 @@ sub fetch { $self->{'opac_display'} = $row->{'opac_display'}; $self->{'password_allowed'} = $row->{'password_allowed'}; $self->{'staff_searchable'} = $row->{'staff_searchable'}; + $self->{'display_checkout'} = $row->{'display_checkout'}; $self->{'authorised_value_category'} = $row->{'authorised_value_category'}; bless $self, $class; @@ -182,14 +184,15 @@ sub store { opac_display = ?, password_allowed = ?, staff_searchable = ?, - authorised_value_category = ? + authorised_value_category = ?, + display_checkout = ? WHERE code = ?"); } else { $sth = $dbh->prepare_cached("INSERT INTO borrower_attribute_types (description, repeatable, unique_id, opac_display, password_allowed, - staff_searchable, authorised_value_category, code) + staff_searchable, authorised_value_category, display_checkout, code) VALUES (?, ?, ?, ?, ?, - ?, ?, ?)"); + ?, ?, ?, ?)"); } $sth->bind_param(1, $self->{'description'}); $sth->bind_param(2, $self->{'repeatable'}); @@ -198,7 +201,8 @@ sub store { $sth->bind_param(5, $self->{'password_allowed'}); $sth->bind_param(6, $self->{'staff_searchable'}); $sth->bind_param(7, $self->{'authorised_value_category'}); - $sth->bind_param(8, $self->{'code'}); + $sth->bind_param(8, $self->{'display_checkout'}); + $sth->bind_param(9, $self->{'code'}); $sth->execute; } @@ -304,6 +308,25 @@ sub staff_searchable { @_ ? $self->{'staff_searchable'} = ((shift) ? 1 : 0) : $self->{'staff_searchable'}; } +=head2 display_checkout + +=over 4 + +my $display_checkout = $attr_type->display_checkout(); +$attr_type->display_checkout($display_checkout); + +=back + +Accessor. The C<$display_checkout> argument +is interpreted as a Perl boolean. + +=cut + +sub display_checkout { + my $self = shift; + @_ ? $self->{'display_checkout'} = ((shift) ? 1 : 0) : $self->{'display_checkout'}; +} + =head2 authorised_value_category my $authorised_value_category = $attr_type->authorised_value_category(); diff --git a/C4/Members/Attributes.pm b/C4/Members/Attributes.pm index 35d6702..29a31e6 100644 --- a/C4/Members/Attributes.pm +++ b/C4/Members/Attributes.pm @@ -72,7 +72,7 @@ sub GetBorrowerAttributes { my $opac_only = @_ ? shift : 0; my $dbh = C4::Context->dbh(); - my $query = "SELECT code, description, attribute, lib, password + my $query = "SELECT code, description, attribute, lib, password, display_checkout FROM borrower_attributes JOIN borrower_attribute_types USING (code) LEFT JOIN authorised_values ON (category = authorised_value_category AND attribute = authorised_value) @@ -89,6 +89,7 @@ sub GetBorrowerAttributes { value => $row->{'attribute'}, value_description => $row->{'lib'}, password => $row->{'password'}, + display_checkout => $row->{'display_checkout'}, } } return \@results; diff --git a/admin/patron-attr-types.pl b/admin/patron-attr-types.pl index 227213c..29a0d90 100755 --- a/admin/patron-attr-types.pl +++ b/admin/patron-attr-types.pl @@ -106,6 +106,9 @@ sub error_add_attribute_type_form { if ($input->param('staff_searchable')) { $template->param(staff_searchable_checked => 1); } + if ($input->param('display_checkout')) { + $template->param(display_checkout_checked => 'checked="checked"'); + } $template->param( attribute_type_form => 1, @@ -147,6 +150,8 @@ sub add_update_attribute_type { $attr_type->authorised_value_category($authorised_value_category); my $password_allowed = $input->param('password_allowed'); $attr_type->password_allowed($password_allowed); + my $display_checkout = $input->param('display_checkout'); + $attr_type->display_checkout($display_checkout); if ($op eq 'edit') { $template->param(edited_attribute_type => $attr_type->code()); @@ -222,7 +227,9 @@ sub edit_attribute_type_form { if ($attr_type->staff_searchable()) { $template->param(staff_searchable_checked => 1); } - + if ($attr_type->display_checkout()) { + $template->param(display_checkout_checked => 'checked="checked"'); + } authorised_value_category_list($template, $attr_type->authorised_value_category()); $template->param( diff --git a/circ/circulation.pl b/circ/circulation.pl index fff32a2..ffb76bf 100755 --- a/circ/circulation.pl +++ b/circ/circulation.pl @@ -35,6 +35,7 @@ use C4::Biblio; use C4::Reserves; use C4::Context; use CGI::Session; +use C4::Members::Attributes qw(GetBorrowerAttributes); use Date::Calc qw( Today @@ -635,6 +636,7 @@ my $fast_cataloging = 0; if (defined getframeworkinfo('FA')) { $fast_cataloging = 1 } +my $attributes = GetBorrowerAttributes($borrowernumber); $template->param( lib_messages_loop => $lib_messages_loop, @@ -684,6 +686,7 @@ $template->param( circview => 1, soundon => C4::Context->preference("SoundOn"), fast_cataloging => $fast_cataloging, + extendedattributes => $attributes, ); # save stickyduedate to session diff --git a/installer/data/mysql/atomicupdate/0009-patron-attr-display-checkout.pl b/installer/data/mysql/atomicupdate/0009-patron-attr-display-checkout.pl new file mode 100644 index 0000000..44cfcfa --- /dev/null +++ b/installer/data/mysql/atomicupdate/0009-patron-attr-display-checkout.pl @@ -0,0 +1,7 @@ +#! /usr/bin/perl +use strict; +use warnings; +use C4::Context; +my $dbh=C4::Context->dbh; +$dbh->do("ALTER TABLE borrower_attribute_types ADD COLUMN `display_checkout` TINYINT(1) NOT NULL DEFAULT '0';"); +print "Upgrade done (Added a display_checkout field in borrower_attribute_types table)\n"; diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index aef59ce..3a51df5 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -284,6 +284,7 @@ CREATE TABLE `borrower_attribute_types` ( -- definitions for custom patron field `password_allowed` tinyint(1) NOT NULL default 0, -- defines if it is possible to associate a password with this custom field (1 for yes, 0 for no) `staff_searchable` tinyint(1) NOT NULL default 0, -- defines if this field is searchable via the patron search in the staff client (1 for yes, 0 for no) `authorised_value_category` varchar(10) default NULL, -- foreign key from authorised_values that links this custom field to an authorized value category + `display_checkout` tinyint(1) NOT NULL default 0,-- defines if this field displays in checkout screens PRIMARY KEY (`code`), KEY `auth_val_cat_idx` (`authorised_value_category`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc index 129bd66..65cfebf 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc @@ -48,6 +48,13 @@
  • No email stored.
  • [% END %] [% END %] + [% FOREACH extendedattribute IN extendedattributes %] + [% IF ( extendedattribute.display_checkout ) %] + [% IF ( extendedattribute.value ) %] +
  • [% extendedattribute.description %] : [% IF ( extendedattribute.value_description ) %][% extendedattribute.value_description %][% ELSE %][% extendedattribute.value %][% END %]
  • + [% END %] + [% END %] + [% END %]
  • Category: [% categoryname %] ([% categorycode %])
  • Home Library: [% IF ( branchname ) %][% branchname %][% ELSE %][% branch %][% END %]
  • diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.tt b/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.tt index 39be1be..49712ef 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.tt @@ -50,6 +50,13 @@ in the global namespace %]
  • No email stored.
  • [% END %] [% END %] + [% FOREACH extendedattribute IN borrower.extendedattributes %] + [% IF ( extendedattribute.display_checkout ) %] + [% IF ( extendedattribute.value ) %] +
  • [% extendedattribute.description %] : [% IF ( extendedattribute.value_description ) %][% extendedattribute.value_description %][% ELSE %][% extendedattribute.value %][% END %]
  • + [% END %] + [% END %] + [% END %]
  • Category: [% borrower.description %] ([% borrower.categorycode %])
  • Home Library: [% IF ( borrower.branchname ) %][% borrower.branchname %][% ELSE %][% borrower.branch %][% END %]
  • diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/patron-attr-types.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/patron-attr-types.tt index c42d7b3..692b0a3 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/patron-attr-types.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/patron-attr-types.tt @@ -68,7 +68,7 @@ function CheckAttributeTypeForm(f) {
    [% IF ( WARNING_extended_attributes_off ) %] -
    Because the 'ExtendedPatronAttributes` system preference is currently not enabled, extended patron attributes cannot be given to patron records. Go here if you wish to enable this feature.
    +
    Because the 'ExtendedPatronAttributes` system preference is currently not enabled, extended patron attributes cannot be given to patron records. Go here if you wish to enable this feature.
    [% END %] [% IF ( attribute_type_form ) %] @@ -158,6 +158,11 @@ function CheckAttributeTypeForm(f) { [% END %] Check to make this attribute staff_searchable in the staff patron search. +
  • + + Check to show this attribute in patron check-out. +
  • +