Bug 5918 : Use the default messaging preferences if the user does not select any

Signed-off-by: Jesse Weaver <pianohacker@gmail.com>
Signed-off-by: Ian Walls <ian.walls@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
This commit is contained in:
Chris Cormack 2011-06-01 10:34:02 +12:00
parent bbe37ed54f
commit b8ccb80bb1
3 changed files with 23 additions and 10 deletions

View file

@ -54,7 +54,7 @@ the same thing in staff and OPAC.
=head2 handle_form_action
C4::Form::MessagingPreferences::handle_form_action($input, { categorycode => 'CPL' }, $template);
C4::Form::MessagingPreferences::handle_form_action($input, { categorycode => 'CPL' }, $template, $insert);
Processes CGI parameters and updates the target patron or patron category's
preferences.
@ -64,17 +64,16 @@ C<$input> is the CGI query object.
C<$target_params> is a hashref containing either a C<categorycode> key or a C<borrowernumber> key
identifying the patron or patron category whose messaging preferences are to be updated.
C<$template> is the HTML::Template::Pro object for the response; this routine
C<$template> is the Template::Toolkit object for the response; this routine
adds a settings_updated template variable.
=cut
sub handle_form_action {
my ($query, $target_params, $template) = @_;
my ($query, $target_params, $template, $insert, $categorycode) = @_;
my $messaging_options = C4::Members::Messaging::GetMessagingOptions();
# TODO: If a "NONE" box and another are checked somehow (javascript failed), we should pay attention to the "NONE" box
my $prefs_set = 0;
OPTION: foreach my $option ( @$messaging_options ) {
my $updater = { %{ $target_params },
message_attribute_id => $option->{'message_attribute_id'} };
@ -96,8 +95,16 @@ sub handle_form_action {
}
C4::Members::Messaging::SetMessagingPreference( $updater );
}
if ($query->param( $option->{'message_attribute_id'})){
$prefs_set = 1;
}
}
if (! $prefs_set && $insert){
# this is new borrower, and we have no preferences set, use the defaults
$target_params->{categorycode} = $categorycode;
C4::Members::Messaging::SetMessagingPreferencesFromDefaults( $target_params );
}
# show the success message
$template->param( settings_updated => 1 );
}
@ -112,7 +119,7 @@ and fills the corresponding template variables.
C<$target_params> is a hashref containing either a C<categorycode> key or a C<borrowernumber> key
identifying the patron or patron category.
C<$template> is the HTML::Template::Pro object for the response.
C<$template> is the Template::Toolkit object for the response.
=cut

View file

@ -1072,6 +1072,9 @@
[% END %]
<input type="hidden" name="setting_messaging_prefs" value="1" />
<legend>Patron messaging preferences</legend>
[% IF type_only %]
<i>If no preferences are selected, the default preferences for the category chosen will be applied on save, otherwise your selection here is saved</i>
[% END %]
[% INCLUDE 'messaging-preference-form.inc' %]
[% IF ( SMSSendDriver ) %]
<p><label for="SMSnumber">SMS number:</label>

View file

@ -105,14 +105,17 @@ $template->param( "duplicate" => 1 ) if ( $op eq 'duplicate' );
$template->param( "checked" => 1 ) if ( defined($nodouble) && $nodouble eq 1 );
( $borrower_data = GetMember( 'borrowernumber' => $borrowernumber ) ) if ( $op eq 'modify' or $op eq 'save' or $op eq 'duplicate' );
my $categorycode = $input->param('categorycode') || $borrower_data->{'categorycode'};
my $category_type = $input->param('category_type');
my $category_type = $input->param('category_type') || '';
if ($category_type){
$template->{VARS}->{'type_only'} = 1;
}
my $new_c_type = $category_type; #if we have input param, then we've already chosen the cat_type.
unless ($category_type or !($categorycode)){
my $borrowercategory = GetBorrowercategory($categorycode);
$category_type = $borrowercategory->{'category_type'};
my $category_name = $borrowercategory->{'description'};
$template->param("categoryname"=>$category_name);
}
}
$category_type="A" unless $category_type; # FIXME we should display a error message instead of a 500 error !
# if a add or modify is requested => check validity of data.
@ -334,7 +337,7 @@ if ((!$nok) and $nodouble and ($op eq 'insert' or $op eq 'save')){
C4::Members::Attributes::SetBorrowerAttributes($borrowernumber, $extended_patron_attributes);
}
if (C4::Context->preference('EnhancedMessagingPreferences') and $input->param('setting_messaging_prefs')) {
C4::Form::MessagingPreferences::handle_form_action($input, { borrowernumber => $borrowernumber }, $template);
C4::Form::MessagingPreferences::handle_form_action($input, { borrowernumber => $borrowernumber }, $template, 1, $newdata{'categorycode'});
}
} elsif ($op eq 'save'){
if ($NoUpdateLogin) {