From 946126db51e938dd48670f771bdae3ae2c06ec87 Mon Sep 17 00:00:00 2001 From: Kathryn Tipton Date: Wed, 14 Nov 2018 10:20:30 -0500 Subject: [PATCH] Reference update form improvements - Delete buttons are now checkboxes. - Current value in an editable box. --- lib/Tuba/Reference.pm | 27 +++++++++++++------ .../templates/reference/update_form.html.ep | 14 ++++++---- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/lib/Tuba/Reference.pm b/lib/Tuba/Reference.pm index ef8cfc63..26b96922 100644 --- a/lib/Tuba/Reference.pm +++ b/lib/Tuba/Reference.pm @@ -124,14 +124,15 @@ sub update { $c->stash(publication_update_category => delete $json->{publication_update_category}); } if (my $params = $c->req->params->to_hash ) { - if ( $params->{delete_pub_attr} ) { - $reference->delete_attr( { del_attr => $params->{delete_pub_attr}, audit_user => $c->user, audit_note => "Deleting attributes" }); - $c->redirect_without_error('update_form'); - } - elsif ( exists $params->{new_attr_key} || /^attribute/ ~~ %$params ) { - my $new_attributes = _collect_attributes($params); - $reference->set_attr( { new_attrs => $new_attributes, audit_user => $c->user, audit_note => "Setting attributes" }); - $c->redirect_without_error('update_form'); + if ( exists $params->{new_attr_key} || /^attribute/ ~~ %$params || /^delete_pub_attr/ ~~ %$params ) { + if ( exists $params->{new_attr_key} || /^attribute/ ~~ %$params ) { + my $new_attributes = _collect_attributes($params); + $reference->set_attr( { new_attrs => $new_attributes, audit_user => $c->user, audit_note => "Setting attributes" }); + } + if ( /^delete_pub_attr/ ~~ %$params ) { + _delete_pub_attrs($c, $reference, $params); + } + $c->redirect_without_error('update_form'); } else { $c->SUPER::update(@_); @@ -139,6 +140,16 @@ sub update { } } +sub _delete_pub_attrs { + my ($c, $reference, $params ) = @_; + foreach my $key ( keys %$params ) { + if ( $key =~ /^delete_pub_attr(.*)$/ ) { + my $attr_key = $1; + $reference->delete_attr( { del_attr => $attr_key, audit_user => $c->user, audit_note => "Deleting attribute $attr_key" }); + } + } +} + sub _collect_attributes { my ( $params ) = @_; my $attrs; diff --git a/lib/Tuba/files/templates/reference/update_form.html.ep b/lib/Tuba/files/templates/reference/update_form.html.ep index 7567cafc..aece8c0a 100644 --- a/lib/Tuba/files/templates/reference/update_form.html.ep +++ b/lib/Tuba/files/templates/reference/update_form.html.ep @@ -38,17 +38,21 @@ Delete Key - Current Value - Replace Value + Value % for my $k (sort keys %{ $reference->attrs }) { - + %#= + <%= check_box 'delete_pub_attr'.$k %> <%= $k %> - <%= $reference->attrs->{$k} %> - <%= text_field 'attribute_'.$k, class => "form-control input-small squeezevert" %> + % if ($reference->attrs->{$k} && length($reference->attrs->{$k}) > 40) { + <%= text_area 'attribute_'.$k, value => $reference->attrs->{$k}, class => "form-control input-small squeezevert" %> + % } else { + <%= text_field 'attribute_'.$k, value => $reference->attrs->{$k}, class => "form-control input-small squeezevert" %> + % } % } +

New Attribute