From 9a57b7f0106174b180f610fbece6055a09caa6b9 Mon Sep 17 00:00:00 2001 From: Jesse Weaver Date: Wed, 2 Sep 2015 17:54:04 -0600 Subject: [PATCH] Bug 13757: Make patron attributes editable in the OPAC (1/2) This patch adds an opac_editable property of borrower attribute types that can be set in the interface. Test plan: 1. Repeat the following with a new and existing borrower attribute type: 2. Verify that "Editable in OPAC" can only be checked if "Display in OPAC" is checked. 3. Verify that this new property is correctly saved. Signed-off-by: Aleisha --- C4/Members/AttributeTypes.pm | 35 +++++++++++++++++----- admin/patron-attr-types.pl | 8 +++++ ...d_opac_editable_to_borrower_attribute_types.sql | 1 + installer/data/mysql/kohastructure.sql | 1 + .../intranet-tmpl/prog/en/css/staff-global.css | 4 +++ .../prog/en/modules/admin/patron-attr-types.tt | 16 ++++++++++ 6 files changed, 57 insertions(+), 8 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug_13757-add_opac_editable_to_borrower_attribute_types.sql diff --git a/C4/Members/AttributeTypes.pm b/C4/Members/AttributeTypes.pm index 234e1e0..5ec876e 100644 --- a/C4/Members/AttributeTypes.pm +++ b/C4/Members/AttributeTypes.pm @@ -42,6 +42,7 @@ C4::Members::AttributeTypes - mananage extended patron attribute types $attr_type->repeatable($repeatable); $attr_type->unique_id($unique_id); $attr_type->opac_display($opac_display); + $attr_type->opac_editable($opac_editable); $attr_type->password_allowed($password_allowed); $attr_type->staff_searchable($staff_searchable); $attr_type->authorised_value_category($authorised_value_category); @@ -128,6 +129,7 @@ sub new { $self->{'repeatable'} = 0; $self->{'unique_id'} = 0; $self->{'opac_display'} = 0; + $self->{'opac_editable'} = 0; $self->{'password_allowed'} = 0; $self->{'staff_searchable'} = 0; $self->{'display_checkout'} = 0; @@ -170,6 +172,7 @@ sub fetch { $self->{'repeatable'} = $row->{'repeatable'}; $self->{'unique_id'} = $row->{'unique_id'}; $self->{'opac_display'} = $row->{'opac_display'}; + $self->{'opac_editable'} = $row->{'opac_editable'}; $self->{'password_allowed'} = $row->{'password_allowed'}; $self->{'staff_searchable'} = $row->{'staff_searchable'}; $self->{'display_checkout'} = $row->{'display_checkout'}; @@ -211,6 +214,7 @@ sub store { repeatable = ?, unique_id = ?, opac_display = ?, + opac_editable = ?, password_allowed = ?, staff_searchable = ?, authorised_value_category = ?, @@ -220,7 +224,7 @@ sub store { WHERE code = ?"); } else { $sth = $dbh->prepare_cached("INSERT INTO borrower_attribute_types - (description, repeatable, unique_id, opac_display, password_allowed, + (description, repeatable, unique_id, opac_display, opac_editable, password_allowed, staff_searchable, authorised_value_category, display_checkout, category_code, class, code) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); @@ -229,13 +233,14 @@ sub store { $sth->bind_param(2, $self->{'repeatable'}); $sth->bind_param(3, $self->{'unique_id'}); $sth->bind_param(4, $self->{'opac_display'}); - $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->{'display_checkout'}); - $sth->bind_param(9, $self->{'category_code'} || undef); - $sth->bind_param(10, $self->{'class'}); - $sth->bind_param(11, $self->{'code'}); + $sth->bind_param(5, $self->{'opac_editable'}); + $sth->bind_param(6, $self->{'password_allowed'}); + $sth->bind_param(7, $self->{'staff_searchable'}); + $sth->bind_param(8, $self->{'authorised_value_category'}); + $sth->bind_param(9, $self->{'display_checkout'}); + $sth->bind_param(10, $self->{'category_code'} || undef); + $sth->bind_param(11, $self->{'class'}); + $sth->bind_param(12, $self->{'code'}); $sth->execute; if ( defined $$self{branches} ) { @@ -342,6 +347,20 @@ sub opac_display { my $self = shift; @_ ? $self->{'opac_display'} = ((shift) ? 1 : 0) : $self->{'opac_display'}; } +=head2 opac_editable + + my $opac_editable = $attr_type->opac_editable(); + $attr_type->opac_editable($opac_editable); + +Accessor. The C<$opac_editable> argument +is interpreted as a Perl boolean. + +=cut + +sub opac_editable { + my $self = shift; + @_ ? $self->{'opac_editable'} = ((shift) ? 1 : 0) : $self->{'opac_editable'}; +} =head2 password_allowed my $password_allowed = $attr_type->password_allowed(); diff --git a/admin/patron-attr-types.pl b/admin/patron-attr-types.pl index 8ccf927..ac5ed17 100755 --- a/admin/patron-attr-types.pl +++ b/admin/patron-attr-types.pl @@ -119,6 +119,9 @@ sub error_add_attribute_type_form { if ($input->param('opac_display')) { $template->param(opac_display_checked => 1); } + if ($input->param('opac_editable')) { + $template->param(opac_editable_checked => 1); + } if ($input->param('staff_searchable')) { $template->param(staff_searchable_checked => 1); } @@ -163,6 +166,8 @@ sub add_update_attribute_type { my $opac_display = $input->param('opac_display'); $attr_type->opac_display($opac_display); + my $opac_editable = $input->param('opac_editable'); + $attr_type->opac_editable($opac_editable); my $staff_searchable = $input->param('staff_searchable'); $attr_type->staff_searchable($staff_searchable); my $authorised_value_category = $input->param('authorised_value_category'); @@ -248,6 +253,9 @@ sub edit_attribute_type_form { if ($attr_type->opac_display()) { $template->param(opac_display_checked => 1); } + if ($attr_type->opac_editable()) { + $template->param(opac_editable_checked => 1); + } if ($attr_type->staff_searchable()) { $template->param(staff_searchable_checked => 1); } diff --git a/installer/data/mysql/atomicupdate/bug_13757-add_opac_editable_to_borrower_attribute_types.sql b/installer/data/mysql/atomicupdate/bug_13757-add_opac_editable_to_borrower_attribute_types.sql new file mode 100644 index 0000000..76a989f --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_13757-add_opac_editable_to_borrower_attribute_types.sql @@ -0,0 +1 @@ +ALTER TABLE borrower_attribute_types ADD COLUMN `opac_editable` tinyint(1) NOT NULL default 0 AFTER `opac_display`; diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index 866e1ea..88f08c1 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -292,6 +292,7 @@ CREATE TABLE `borrower_attribute_types` ( -- definitions for custom patron field `repeatable` tinyint(1) NOT NULL default 0, -- defines whether one patron/borrower can have multiple values for this custom field (1 for yes, 0 for no) `unique_id` tinyint(1) NOT NULL default 0, -- defines if this value needs to be unique (1 for yes, 0 for no) `opac_display` tinyint(1) NOT NULL default 0, -- defines if this field is visible to patrons on their account in the OPAC (1 for yes, 0 for no) + `opac_editable` tinyint(1) NOT NULL default 0, -- defines if this field is editable by patrons on their account in the OPAC (1 for yes, 0 for no) `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(32) default NULL, -- foreign key from authorised_values that links this custom field to an authorized value category diff --git a/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css b/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css index d5f9b30..4b52560 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css +++ b/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css @@ -712,6 +712,10 @@ fieldset.action, div.action { width: auto; } +fieldset.rows li[aria-disabled="true"] { + color: #999; +} + div.rows+div.rows { margin-top : .6em; } 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 9401984..fbd8d12 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 @@ -19,6 +19,14 @@ $(document).ready(function() { if ( $("#branches option:selected").length < 1 ) { $("#branches option:first").attr("selected", "selected"); } + + $("#opac_display").change( function() { + if ( this.checked ) { + $("#opac_editable").removeAttr('disabled').parent().removeAttr('aria-disabled'); + } else { + $("#opac_editable").attr('disabled', true).parent().attr('aria-disabled', 'true'); + } + } ).change(); } ); function DoCancel(f) { @@ -155,6 +163,14 @@ function CheckAttributeTypeForm(f) { [% END %] Check to display this attribute on a patron's details page in the OPAC. +
  • + [% IF ( opac_editable_checked ) %] + + [% ELSE %] + + [% END %] + Check to allow patrons to edit this attribute from their details page in the OPAC. (Requires above.) +
  • [% IF ( staff_searchable_checked ) %] -- 2.7.0