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:
@@ -88,8 +88,33 @@ function updateEventSelection(resultElemId){
|
||||
|
||||
// set selected eventId at external result selector
|
||||
function selectEventAction(resultElemId){
|
||||
var eventId=$('#selectEvent #eventId').val();
|
||||
|
||||
|
||||
var projectId = $('#selectEvent #projectId').val();
|
||||
var studioId = $('#selectEvent #studioId').val();
|
||||
var seriesId = $('#selectEvent #seriesId').val();
|
||||
var eventId = $('#selectEvent #eventId').val();
|
||||
if (eventId<=0) return;
|
||||
|
||||
var filterProjectStudio = $('#selectEvent #selectProjectStudio').length!=0 ? 1:0;
|
||||
var filterSeries = $('#selectEvent #selectSeries').length!=0 ? 1:0;
|
||||
|
||||
var url = "user-selected-event.cgi";
|
||||
url += "?project_id=" + getProjectId();
|
||||
url += "&studio_id=" + getStudioId();
|
||||
url += "&series_id=" + getUrlParameter("series_id");
|
||||
url += "&filter_project_studio=" + filterProjectStudio;
|
||||
url += "&filter_series=" + filterSeries;
|
||||
url += "&selected_project=" + projectId;
|
||||
url += "&selected_studio=" + studioId;
|
||||
url += "&selected_series=" + seriesId;
|
||||
url += "&selected_event=" + eventId;
|
||||
$.get(url).done(function() {
|
||||
console.log("success: "+url)
|
||||
}).fail(function() {
|
||||
console.log("failed: "+url)
|
||||
});
|
||||
|
||||
// set the result value
|
||||
$('#'+resultElemId).val( eventId );
|
||||
// trigger the change event for invisble form elements
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,9 @@
|
||||
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=assign_series';
|
||||
$('#assignments_form input[name="action"]').val("assign_series");
|
||||
//var url="assign-series.cgi?project_id="+project_id+'&studio_id='+studio_id+'&series_id='+series_id+'&action=assign_series';
|
||||
//console.log("url:"+url);
|
||||
$('#assignments_form').submit();
|
||||
return false;
|
||||
}
|
||||
@@ -24,9 +26,12 @@
|
||||
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 input[name="action"]').val("unassign_series");
|
||||
alert("unassign");
|
||||
//var url="assign-series.cgi?project_id="+project_id+'&studio_id='+studio_id+'&series_id='+series_id+'&action=unassign_series';
|
||||
//console.log("url:"+url);
|
||||
$('#assignments_form').submit();
|
||||
return false;
|
||||
}
|
||||
@@ -39,7 +44,7 @@
|
||||
}
|
||||
</style>
|
||||
|
||||
assign series to project <b><TMPL_VAR project_name></b> and studio <b><TMPL_VAR studio_name></b>
|
||||
assign and unassign series to project <b><TMPL_VAR project_name></b> and studio <b><TMPL_VAR studio_name></b>
|
||||
|
||||
<!-- view series -->
|
||||
<div id="view_<TMPL_VAR .series_id>" class="view" style="clear:both">
|
||||
@@ -49,7 +54,7 @@
|
||||
<select style="float:left;max-width:600px;" id="series_id">
|
||||
<option value="">--select--</option>
|
||||
<TMPL_LOOP series>
|
||||
<option value="<TMPL_VAR series_id>"><b><TMPL_VAR series_name> - <TMPL_VAR title></b> [<TMPL_VAR project_name> - <TMPL_VAR studio_name>]
|
||||
<option value="<TMPL_VAR series_id>"><b><TMPL_VAR series_name> - <TMPL_VAR title></b> [<TMPL_VAR project_name> - <TMPL_VAR studio_name> - <TMPL_VAR series_id>]
|
||||
</TMPL_LOOP>
|
||||
</select>
|
||||
|
||||
@@ -57,7 +62,6 @@
|
||||
<input type="hidden" name="project_id" value="<TMPL_VAR .project_id>">
|
||||
<input type="hidden" name="studio_id" value="<TMPL_VAR .studio_id>">
|
||||
<input type="hidden" name="series_id" value="<TMPL_VAR .series_id>">
|
||||
<input type="hidden" name="action" value="assign_series">
|
||||
<button target="_blank"
|
||||
onclick="assign_series('<TMPL_VAR .project_id>', '<TMPL_VAR .studio_id>', $('#series_id').val());return false;"
|
||||
style="float:left"
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
<td>
|
||||
<select id="eventId" onchange=selectEventAction('<TMPL_VAR resultElemId>')>
|
||||
<option value="-1"><TMPL_VAR .loc.label_select></option>
|
||||
<TMPL_LOOP events><option value="<TMPL_VAR id>"><TMPL_VAR start> - <TMPL_VAR full_title></option>
|
||||
<TMPL_LOOP events><option value="<TMPL_VAR id>" <TMPL_IF selected>selected="selected"</TMPL_IF>><TMPL_VAR start> - <TMPL_VAR full_title></option>
|
||||
</TMPL_LOOPS>
|
||||
</select>
|
||||
</td>
|
||||
|
||||
110
website/agenda/planung/user-selected-event.cgi
Normal file
110
website/agenda/planung/user-selected-event.cgi
Normal file
@@ -0,0 +1,110 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
no warnings 'redefine';
|
||||
|
||||
use Data::Dumper;
|
||||
|
||||
use params();
|
||||
use config();
|
||||
use entry();
|
||||
use log();
|
||||
use template();
|
||||
use auth();
|
||||
use uac();
|
||||
|
||||
use series();
|
||||
use localization();
|
||||
use user_selected_events();
|
||||
|
||||
binmode STDOUT, ":utf8";
|
||||
|
||||
my $r = shift;
|
||||
( my $cgi, my $params, my $error ) = params::get($r);
|
||||
|
||||
my $config = config::get('../config/config.cgi');
|
||||
my $debug = $config->{system}->{debug};
|
||||
my ( $user, $expires ) = auth::get_user( $config, $params, $cgi );
|
||||
return if ( ( !defined $user ) || ( $user eq '' ) );
|
||||
|
||||
my $user_presets = uac::get_user_presets(
|
||||
$config,
|
||||
{
|
||||
project_id => $params->{project_id},
|
||||
studio_id => $params->{studio_id},
|
||||
user => $user
|
||||
}
|
||||
);
|
||||
$params->{default_studio_id} = $user_presets->{studio_id};
|
||||
$params = uac::setDefaultStudio( $params, $user_presets );
|
||||
$params = uac::setDefaultProject( $params, $user_presets );
|
||||
|
||||
my $request = {
|
||||
url => $ENV{QUERY_STRING} || '',
|
||||
params => {
|
||||
original => $params,
|
||||
checked => check_params( $config, $params ),
|
||||
},
|
||||
};
|
||||
$request = uac::prepare_request( $request, $user_presets );
|
||||
|
||||
print "Content-type:text/plain; charset=UTF-8;\n\n";
|
||||
return unless uac::check( $config, $params, {} ) == 1;
|
||||
log_event_selection( $config, $request, $user );
|
||||
|
||||
sub get_select_fields {
|
||||
return [
|
||||
'project_id', 'studio_id',
|
||||
'series_id', 'filter_project_studio', 'filter_series'
|
||||
];
|
||||
}
|
||||
|
||||
sub get_value_fields {
|
||||
return [
|
||||
'selected_project', 'selected_studio',
|
||||
'selected_series', 'selected_event'
|
||||
];
|
||||
}
|
||||
|
||||
sub log_event_selection {
|
||||
my $config = shift;
|
||||
my $request = shift;
|
||||
my $user = shift;
|
||||
|
||||
my $params = $request->{params}->{checked};
|
||||
my $permissions = $request->{permissions};
|
||||
unless ( $permissions->{read_event} == 1 ) {
|
||||
uac::permissions_denied('read_event');
|
||||
return;
|
||||
}
|
||||
|
||||
my $select_fields = get_select_fields();
|
||||
my $value_fields = get_value_fields();
|
||||
|
||||
my $entry = { user => $user };
|
||||
$entry->{$_} = $params->{$_} for @$select_fields;
|
||||
my $preset = user_selected_events::get( $config, $entry );
|
||||
$entry->{$_} = $params->{$_} for ( @$select_fields, @$value_fields);
|
||||
for ( @$select_fields, @$value_fields ) {
|
||||
uac::print_error("missing $_") unless defined $entry->{$_};
|
||||
}
|
||||
|
||||
if ($preset) {
|
||||
print "update\n";
|
||||
user_selected_events::update( $config, $entry );
|
||||
} else {
|
||||
print "insert\n";
|
||||
user_selected_events::insert( $config, $entry );
|
||||
}
|
||||
}
|
||||
|
||||
sub check_params {
|
||||
my $config = shift;
|
||||
my $params = shift;
|
||||
|
||||
my @fields = ( @{get_select_fields()}, @{get_value_fields()} );
|
||||
my $checked = {};
|
||||
entry::set_numbers( $checked, $params, \@fields );
|
||||
return $checked;
|
||||
}
|
||||
Reference in New Issue
Block a user