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:
@@ -1282,4 +1282,25 @@ UNLOCK TABLES;
|
|||||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||||
|
|
||||||
-- Dump completed on 2020-12-21 13:16:22
|
|
||||||
|
DROP TABLE IF EXISTS `calcms_user_selected_events`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!50503 SET character_set_client = utf8mb4 */;
|
||||||
|
CREATE TABLE `calcms_user_selected_events` (
|
||||||
|
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
|
`user` varchar(45) NOT NULL,
|
||||||
|
`project_id` int(10) unsigned DEFAULT NULL,
|
||||||
|
`studio_id` int(10) unsigned DEFAULT NULL,
|
||||||
|
`series_id` int(10) unsigned DEFAULT NULL,
|
||||||
|
`filter_project_studio` int(1) unsigned DEFAULT NULL,
|
||||||
|
`filter_series` int(1) unsigned DEFAULT NULL,
|
||||||
|
`selected_project` int(10) unsigned DEFAULT NULL,
|
||||||
|
`selected_studio` int(10) unsigned DEFAULT NULL,
|
||||||
|
`selected_series` int(10) unsigned DEFAULT NULL,
|
||||||
|
`selected_event` int(10) unsigned DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `unique` (`user`,`project_id`,`studio_id`,`series_id`,`filter_project_studio`,`filter_series`),
|
||||||
|
KEY `user` (`user`,`project_id`,`studio_id`,`series_id`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
|||||||
127
lib/calcms/user_selected_events.pm
Normal file
127
lib/calcms/user_selected_events.pm
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
package user_selected_events;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
no warnings 'redefine';
|
||||||
|
|
||||||
|
use Data::Dumper;
|
||||||
|
|
||||||
|
# table: calcms_user_selected_events
|
||||||
|
# columns: user, project_id, studio_id, series_id, <- selection
|
||||||
|
# project_studio_filter, series_filter <- optional filter params
|
||||||
|
# selected_project, selected_studio, selected_series, selected_event <-result
|
||||||
|
|
||||||
|
sub debug;
|
||||||
|
|
||||||
|
sub get_columns($) {
|
||||||
|
my $config = shift;
|
||||||
|
|
||||||
|
my $dbh = db::connect($config);
|
||||||
|
return db::get_columns_hash( $dbh, 'calcms_user_selected_events' );
|
||||||
|
}
|
||||||
|
|
||||||
|
sub get ($$) {
|
||||||
|
my $config = shift;
|
||||||
|
my $condition = shift;
|
||||||
|
|
||||||
|
my @conditions = ();
|
||||||
|
my @bind_values = ();
|
||||||
|
|
||||||
|
return unless defined $condition->{user};
|
||||||
|
return unless defined $condition->{project_id};
|
||||||
|
return unless defined $condition->{studio_id};
|
||||||
|
return unless defined $condition->{series_id};
|
||||||
|
|
||||||
|
for my $field ('user', 'project_id', 'studio_id', 'series_id',
|
||||||
|
'filter_project_studio', 'filter_series'
|
||||||
|
){
|
||||||
|
if ( ( defined $condition->{$field} ) && ( $condition->{$field} ne '' ) ) {
|
||||||
|
push @conditions, $field.'=?';
|
||||||
|
push @bind_values, $condition->{$field};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
my $conditions = '';
|
||||||
|
$conditions = " where " . join( " and ", @conditions ) if scalar(@conditions) > 0;
|
||||||
|
|
||||||
|
my $query = qq{
|
||||||
|
select *
|
||||||
|
from calcms_user_selected_events
|
||||||
|
$conditions
|
||||||
|
};
|
||||||
|
|
||||||
|
my $dbh = db::connect($config);
|
||||||
|
my $entries = db::get( $dbh, $query, \@bind_values );
|
||||||
|
return $entries->[0] || undef;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub insert ($$) {
|
||||||
|
my $config = shift;
|
||||||
|
my $entry = shift;
|
||||||
|
|
||||||
|
return unless defined $entry->{user};
|
||||||
|
return unless defined $entry->{project_id};
|
||||||
|
return unless defined $entry->{studio_id};
|
||||||
|
return unless defined $entry->{series_id};
|
||||||
|
return unless defined $entry->{selected_event};
|
||||||
|
|
||||||
|
my $dbh = db::connect($config);
|
||||||
|
print STDERR "insert".Dumper($entry );
|
||||||
|
return db::insert( $dbh, 'calcms_user_selected_events', $entry );
|
||||||
|
}
|
||||||
|
|
||||||
|
sub update($$) {
|
||||||
|
my $config = shift;
|
||||||
|
my $entry = shift;
|
||||||
|
|
||||||
|
my $fields = [
|
||||||
|
'user', 'project_id', 'studio_id', 'series_id',
|
||||||
|
'filter_project_studio', 'filter_series'
|
||||||
|
];
|
||||||
|
for (@$fields){
|
||||||
|
return unless defined $entry->{$_}
|
||||||
|
};
|
||||||
|
|
||||||
|
my @keys = sort keys %$entry;
|
||||||
|
my $values = join( ",", map { $_ . '=?' } @keys );
|
||||||
|
my @bind_values = map { $entry->{$_} } ( @keys, @$fields );
|
||||||
|
my $conditions = join (' and ', map { $_.'=?' } @$fields );
|
||||||
|
|
||||||
|
my $query = qq{
|
||||||
|
update calcms_user_selected_events
|
||||||
|
set $values
|
||||||
|
where $conditions
|
||||||
|
};
|
||||||
|
|
||||||
|
print STDERR "update".Dumper($query ).Dumper(\@bind_values);
|
||||||
|
my $dbh = db::connect($config);
|
||||||
|
return db::put( $dbh, $query, \@bind_values );
|
||||||
|
}
|
||||||
|
|
||||||
|
sub delete ($$) {
|
||||||
|
my $config = shift;
|
||||||
|
my $entry = shift;
|
||||||
|
|
||||||
|
return unless defined $entry->{user};
|
||||||
|
return unless defined $entry->{project_id};
|
||||||
|
return unless defined $entry->{studio_id};
|
||||||
|
return unless defined $entry->{series_id};
|
||||||
|
|
||||||
|
my $query = qq{
|
||||||
|
delete
|
||||||
|
from calcms_user_selected_events
|
||||||
|
where user=? and project_id=? and studio_id=? and series_id=?
|
||||||
|
};
|
||||||
|
my $bind_values = [ $entry->{user}, $entry->{project_id}, $entry->{studio_id}, $entry->{series_id} ];
|
||||||
|
|
||||||
|
my $dbh = db::connect($config);
|
||||||
|
return db::put( $dbh, $query, $bind_values );
|
||||||
|
}
|
||||||
|
|
||||||
|
sub error ($) {
|
||||||
|
my $msg = shift;
|
||||||
|
print "ERROR: $msg<br/>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
#do not delete last line!
|
||||||
|
1;
|
||||||
@@ -88,8 +88,33 @@ function updateEventSelection(resultElemId){
|
|||||||
|
|
||||||
// set selected eventId at external result selector
|
// set selected eventId at external result selector
|
||||||
function selectEventAction(resultElemId){
|
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;
|
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
|
// set the result value
|
||||||
$('#'+resultElemId).val( eventId );
|
$('#'+resultElemId).val( eventId );
|
||||||
// trigger the change event for invisble form elements
|
// trigger the change event for invisble form elements
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ use uac();
|
|||||||
|
|
||||||
use series();
|
use series();
|
||||||
use localization();
|
use localization();
|
||||||
|
use user_selected_events();
|
||||||
|
|
||||||
binmode STDOUT, ":utf8";
|
binmode STDOUT, ":utf8";
|
||||||
|
|
||||||
@@ -70,11 +71,21 @@ sub show_events {
|
|||||||
return;
|
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
|
# get user projects
|
||||||
my $user_projects = uac::get_projects_by_user( $config, { user => $request->{user} } );
|
my $user_projects = uac::get_projects_by_user( $config, { user => $request->{user} } );
|
||||||
my $projects = {};
|
my $project_by_id = {};
|
||||||
for my $project (@$user_projects) {
|
for my $project (@$user_projects) {
|
||||||
$projects->{ $project->{project_id} } = $project;
|
$project_by_id->{ $project->{project_id} } = $project;
|
||||||
}
|
}
|
||||||
|
|
||||||
# get user studios
|
# get user studios
|
||||||
@@ -82,32 +93,64 @@ sub show_events {
|
|||||||
for my $studio (@$user_studios) {
|
for my $studio (@$user_studios) {
|
||||||
my $project_id = $studio->{project_id};
|
my $project_id = $studio->{project_id};
|
||||||
my $studio_id = $studio->{id};
|
my $studio_id = $studio->{id};
|
||||||
$studio->{project_name} = $projects->{$project_id}->{name};
|
$studio->{project_name} = $project_by_id->{$project_id}->{name};
|
||||||
$studio->{selected} = 1 if ( $project_id eq $params->{p_id} ) && ( $studio_id eq $params->{s_id} );
|
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
|
# get series
|
||||||
my $options = {};
|
my $options = {};
|
||||||
$options->{project_id} = $params->{p_id} if defined $params->{p_id};
|
if ($preset){
|
||||||
$options->{studio_id} = $params->{s_id} if defined $params->{s_id};
|
$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 );
|
my $series = series::get( $config, $options );
|
||||||
|
|
||||||
for my $serie (@$series) {
|
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_';
|
$serie->{series_name} = 'Einzelsendung' if $serie->{series_name} eq '_single_';
|
||||||
}
|
}
|
||||||
|
|
||||||
# get events
|
# 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->{from_date} = $params->{from_date} if defined $params->{from_date};
|
||||||
$options->{till_date} = $params->{till_date} if defined $params->{till_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 $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
|
# filter by year
|
||||||
my $years = [];
|
my $years = [];
|
||||||
for my $year ( 2005 .. 2025 ) {
|
for my $year ( 2005 .. 2025 ) {
|
||||||
my $date = { year => $year };
|
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;
|
push @$years, $date;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,9 @@
|
|||||||
if (series_id=='')return false;
|
if (series_id=='')return false;
|
||||||
|
|
||||||
$('#assignments_form input[name="series_id"]').val(series_id);
|
$('#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();
|
$('#assignments_form').submit();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -24,9 +26,12 @@
|
|||||||
if (project_id=='')return false;
|
if (project_id=='')return false;
|
||||||
if (studio_id=='')return false;
|
if (studio_id=='')return false;
|
||||||
if (series_id=='')return false;
|
if (series_id=='')return false;
|
||||||
|
|
||||||
$('#assignments_form input[name="series_id"]').val(series_id);
|
$('#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();
|
$('#assignments_form').submit();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -39,7 +44,7 @@
|
|||||||
}
|
}
|
||||||
</style>
|
</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 -->
|
<!-- view series -->
|
||||||
<div id="view_<TMPL_VAR .series_id>" class="view" style="clear:both">
|
<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">
|
<select style="float:left;max-width:600px;" id="series_id">
|
||||||
<option value="">--select--</option>
|
<option value="">--select--</option>
|
||||||
<TMPL_LOOP series>
|
<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>
|
</TMPL_LOOP>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
@@ -57,7 +62,6 @@
|
|||||||
<input type="hidden" name="project_id" value="<TMPL_VAR .project_id>">
|
<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="studio_id" value="<TMPL_VAR .studio_id>">
|
||||||
<input type="hidden" name="series_id" value="<TMPL_VAR .series_id>">
|
<input type="hidden" name="series_id" value="<TMPL_VAR .series_id>">
|
||||||
<input type="hidden" name="action" value="assign_series">
|
|
||||||
<button target="_blank"
|
<button target="_blank"
|
||||||
onclick="assign_series('<TMPL_VAR .project_id>', '<TMPL_VAR .studio_id>', $('#series_id').val());return false;"
|
onclick="assign_series('<TMPL_VAR .project_id>', '<TMPL_VAR .studio_id>', $('#series_id').val());return false;"
|
||||||
style="float:left"
|
style="float:left"
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
<td>
|
<td>
|
||||||
<select id="eventId" onchange=selectEventAction('<TMPL_VAR resultElemId>')>
|
<select id="eventId" onchange=selectEventAction('<TMPL_VAR resultElemId>')>
|
||||||
<option value="-1"><TMPL_VAR .loc.label_select></option>
|
<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>
|
</TMPL_LOOPS>
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</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