From eba29073dd7d1f7498822d7ff05e8009b7a37648 Mon Sep 17 00:00:00 2001 From: Milan Date: Sat, 14 Nov 2020 18:57:07 +0100 Subject: [PATCH] assign-series.cgi: unassign series series cannot only assigned but assigned, too. --- website/agenda/planung/assign-series.cgi | 60 ++++++++++++++++++- .../planung/templates/assign-series.html | 18 +++++- 2 files changed, 73 insertions(+), 5 deletions(-) diff --git a/website/agenda/planung/assign-series.cgi b/website/agenda/planung/assign-series.cgi index e338eaf..32a4e9a 100755 --- a/website/agenda/planung/assign-series.cgi +++ b/website/agenda/planung/assign-series.cgi @@ -79,7 +79,8 @@ unless ( $permissions->{scan_series_events} == 1 ) { } if ( defined $params->{action} ) { - assign_series( $config, $request ) if $params->{action} eq 'assign_series'; + assign_series( $config, $request ) if $params->{action} eq 'assign_series'; + unassign_series( $config, $request ) if $params->{action} eq 'unassign_series'; } show_events( $config, $request ); @@ -200,12 +201,67 @@ sub assign_series { return; } +sub unassign_series { + my $config = shift; + my $request = shift; + + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{assign_series_events} == 1 ) { + uac::permissions_denied('assign_series_events'); + return; + } + + my $entry = {}; + for my $attr ( 'project_id', 'studio_id', 'series_id' ) { + if ( defined $params->{$attr} ) { + $entry->{$attr} = $params->{$attr}; + } else { + uac::print_error( $attr . ' not given!' ); + return; + } + } + + $config->{access}->{write} = 1; + + #check if series is assigned to project/studio + my $series = series::get( + $config, + { + project_id => $entry->{project_id}, + studio_id => $entry->{studio_id}, + series_id => $entry->{series_id}, + } + ); + + if ( @$series > 0 ) { + + # assign series to project/studio + project::unassign_series( + $config, + { + project_id => $entry->{project_id}, + studio_id => $entry->{studio_id}, + series_id => $entry->{series_id}, + } + ); + + } else { + print STDERR +"event $entry->{event_id} is not assigned to project $entry->{project_id}, studio $entry->{studio_id}, series $entry->{series_id}\n"; + } + + $config->{access}->{write} = 0; + uac::print_info("The show was removed from the series."); + return; +} + sub check_params { my $params = shift; my $checked = {}; - $checked->{action} = entry::element_of( $params->{action}, ['assign_series'] ); + $checked->{action} = entry::element_of( $params->{action}, ['assign_series','unassign_series'] ); $checked->{exclude} = 0; entry::set_numbers( $checked, $params, [ diff --git a/website/agenda/planung/templates/assign-series.html b/website/agenda/planung/templates/assign-series.html index ff93f0b..3624349 100644 --- a/website/agenda/planung/templates/assign-series.html +++ b/website/agenda/planung/templates/assign-series.html @@ -15,10 +15,18 @@ if (series_id=='')return false; $('#assignments_form input[name="series_id"]').val(series_id); - //console.log(project_id+" "+studio_id+" "+series_id); - var url="assign-series.cgi?project_id="+project_id+'&studio_id='+studio_id+'&series_id='+series_id+'&action=assign_series'; - //console.log(url); + $('#assignments_form').submit(); + return false; + } + + function unassign_series(project_id, studio_id, series_id){ + if (project_id=='')return false; + if (studio_id=='')return false; + if (series_id=='')return false; + + $('#assignments_form input[name="series_id"]').val(series_id); + var url="assign-series.cgi?project_id="+project_id+'&studio_id='+studio_id+'&series_id='+series_id+'&action=unassign_series'; $('#assignments_form').submit(); return false; } @@ -54,6 +62,10 @@ onclick="assign_series('', '', $('#series_id').val());return false;" style="float:left" >assign +