copying events: save user selection

On copying events from another studio selection will be saved.
The next time one wants to copy saved presets are preselected.
This simplifies to frequently rebroadcast shows from another project.
This commit is contained in:
Milan
2021-02-01 22:58:23 +01:00
parent 2f35676c24
commit ef84ca07a3
7 changed files with 348 additions and 18 deletions

View File

@@ -16,6 +16,7 @@ use uac();
use series();
use localization();
use user_selected_events();
binmode STDOUT, ":utf8";
@@ -70,11 +71,21 @@ sub show_events {
return;
}
my $entry = {
user => $request->{user},
project_id => $params->{p_id},
studio_id => $params->{s_id},
series_id => $params->{series_id},
filter_project_studio => $params->{selectProjectStudio},
filter_series => $params->{selectSeries},
};
my $preset = user_selected_events::get($config, $entry);
# get user projects
my $user_projects = uac::get_projects_by_user( $config, { user => $request->{user} } );
my $projects = {};
my $project_by_id = {};
for my $project (@$user_projects) {
$projects->{ $project->{project_id} } = $project;
$project_by_id->{ $project->{project_id} } = $project;
}
# get user studios
@@ -82,32 +93,64 @@ sub show_events {
for my $studio (@$user_studios) {
my $project_id = $studio->{project_id};
my $studio_id = $studio->{id};
$studio->{project_name} = $projects->{$project_id}->{name};
$studio->{selected} = 1 if ( $project_id eq $params->{p_id} ) && ( $studio_id eq $params->{s_id} );
$studio->{project_name} = $project_by_id->{$project_id}->{name};
if ($preset) {
$studio->{selected} = 1 if $project_id eq $preset->{selected_project} and $studio_id eq $preset->{selected_studio};
} else {
$studio->{selected} = 1 if $project_id eq $params->{p_id} and $studio_id eq $params->{s_id};
}
}
# get series
my $options = {};
$options->{project_id} = $params->{p_id} if defined $params->{p_id};
$options->{studio_id} = $params->{s_id} if defined $params->{s_id};
if ($preset){
$options->{project_id} = $preset->{selected_project};
$options->{studio_id} = $preset->{selected_studio};
}else{
$options->{project_id} = $params->{p_id} if defined $params->{p_id};
$options->{studio_id} = $params->{s_id} if defined $params->{s_id};
}
my $series = series::get( $config, $options );
for my $serie (@$series) {
$serie->{selected} = 1 if ( defined $params->{series_id} ) && ( $serie->{series_id} eq $params->{series_id} );
if ( defined $params->{series_id} ){
if ($preset){
$serie->{selected} = 1 if $serie->{series_id} eq $preset->{selected_series};
} else {
$serie->{selected} = 1 if $serie->{series_id} eq $params->{series_id};
}
}
$serie->{series_name} = 'Einzelsendung' if $serie->{series_name} eq '_single_';
}
# get events
$options->{series_id} = $params->{series_id} if defined $params->{series_id};
if ($preset){
$options->{series_id} = $preset->{selected_series};
}else{
$options->{series_id} = $params->{series_id} if defined $params->{series_id};
}
$options->{from_date} = $params->{from_date} if defined $params->{from_date};
$options->{till_date} = $params->{till_date} if defined $params->{till_date};
$options->{set_no_listen_keys} = 1;
my $events = series::get_events( $config, $options );
my $preset_year = '';
for my $event ( @$events ) {
if ($preset and $preset->{selected_event} eq $event->{id}){
$event->{selected} = 1;
$preset_year = (split /\-/, $event->{start_date})[0];
}
}
# filter by year
my $years = [];
for my $year ( 2005 .. 2025 ) {
my $date = { year => $year };
$date->{selected} = 1 if ( defined $params->{from_date} ) && ( $params->{from_date} eq $year . '-01-01' );
if ( $preset ){
$date->{selected} = 1 if $preset_year eq $year;
}else{
$date->{selected} = 1 if ( defined $params->{from_date} ) && ( $params->{from_date} eq $year . '-01-01' );
}
push @$years, $date;
}