diff --git a/lib/calcms/events.pm b/lib/calcms/events.pm
index c27de41..d110c5d 100644
--- a/lib/calcms/events.pm
+++ b/lib/calcms/events.pm
@@ -7,6 +7,7 @@ no warnings 'redefine';
use Data::Dumper;
use MIME::Base64();
use Encode();
+use Storable 'dclone';
use DBI();
use template();
@@ -52,6 +53,50 @@ sub get_cached_or_render($$$) {
return $response;
}
+sub get_prev{
+ my ($config, $event) = @_;
+ my $params = {
+ till_date => time::check_date($event->{start}),
+ till_time => time::check_time($event->{start}),
+ archive => 'all',
+ order => 'desc',
+ limit => 1,
+ };
+ my $request = {
+ url => $ENV{QUERY_STRING},
+ params => {
+ original => $params,
+ checked => events::check_params( $config, $params ),
+ }
+ };
+ $request->{params}->{checked}->{stop_nav} = 1;
+ my $results = events::get( $config, $request );
+ return $results->[0];
+}
+
+sub get_next{
+ my ($config, $event) = @_;
+
+ my $params = {
+ from_date => time::check_date($event->{end}),
+ from_time => time::check_time($event->{end}),
+ archive => 'all',
+ order => 'asc',
+ limit => 1,
+ };
+ my $request = {
+ url => $ENV{QUERY_STRING},
+ params => {
+ original => $params,
+ checked => events::check_params( $config, $params ),
+ },
+ };
+ $request->{params}->{checked}->{stop_nav} = 1;
+ my $results = events::get( $config, $request );
+ return $results->[0];
+}
+
+sub get($$);
sub get($$) {
my ($config, $request) = @_;
@@ -64,6 +109,16 @@ sub get($$) {
#$results = events::add_recordings($dbh, $config, $request, $results);
$results = events::modify_results( $dbh, $config, $request, $results );
+ # get prev and next event
+ if ( @$results==1
+ and !$request->{params}->{checked}->{stop_nav} #< prevent recursion!
+ and my $event_id = $request->{params}->{original}->{event_id}
+ ){
+ my $event = $results->[0];
+ $event->{prev_event_id} = get_prev($config, $event)->{event_id};
+ $event->{next_event_id} = get_next($config, $event)->{event_id};
+ }
+
return $results;
}
diff --git a/website/agenda/css/calcms.css b/website/agenda/css/calcms.css
index 741df65..2e9618b 100644
--- a/website/agenda/css/calcms.css
+++ b/website/agenda/css/calcms.css
@@ -129,11 +129,12 @@ a {
transition: all .2s ease-in-out;
}
-.load-prev, .load-next{
+a.load-prev, a.load-next{
text-align:center;
cursor:pointer;
display:block ruby;
background:#eee;
+ padding:0.5rem;
}
#calcms_menu .event:hover {
diff --git a/website/agenda/events.cgi b/website/agenda/events.cgi
index aaffe7c..aff2526 100755
--- a/website/agenda/events.cgi
+++ b/website/agenda/events.cgi
@@ -30,7 +30,6 @@ if ( $0 =~ /events.*?\.cgi$/ ) {
checked => events::check_params( $config, $params ),
},
};
-
events::get_cached_or_render( 'print', $config, $request );
}
diff --git a/website/agenda/js/calcms.cust.js b/website/agenda/js/calcms.cust.js
index a98be64..da58839 100644
--- a/website/agenda/js/calcms.cust.js
+++ b/website/agenda/js/calcms.cust.js
@@ -191,15 +191,21 @@ var calcms_settings = new Array();
if (offset==null) offset=0;
if (duration==null) duration=500;
$([document.documentElement, document.body]).scrollTop( elem.offset().top+offset )
- //animate({
- // scrollTop: elem.offset().top+offset
- //}, duration);
+ }
+
+ function addPrevEvent(id){
+ $('a.load-prev').remove();
+ $('div.event-base').first().prepend('davor');
+ $('a.load-prev').on( "click", function(){
+ var url = "/programm/sendung/"+id+'.html';
+ window.location.href=url;
+ })
}
function addPrevSection(till){
$('a.load-prev').remove();
$('div.events-base').first().prepend('');
- $('a.load-prev').on( "mouseover", function(){
+ $('a.load-prev').on( "click", function(){
till.setDate(till.getDate())
var from = new Date(till.getTime());
from.setDate(from.getDate()-7);
@@ -213,13 +219,22 @@ var calcms_settings = new Array();
scrollTo( $('a.load-prev'), -offset, 0 );
addPrevSection(from);
})
- });
+ });
+ }
+
+ function addNextEvent(id){
+ $('a.load-next').remove();
+ $('div.event-base').last().append('danach');
+ $('a.load-next').on( "click", function(){
+ var url = "/programm/sendung/"+id+'.html';
+ window.location.href=url;
+ });
}
function addNextSection(from){
$('a.load-next').remove();
$('div.events-base').last().append('
');
- $('a.load-next').on( "mouseover", function(){
+ $('a.load-next').on( "click", function(){
from.setDate(from.getDate()+1)
var till = new Date(from.getTime());
till.setDate(till.getDate()+7);
@@ -231,38 +246,38 @@ var calcms_settings = new Array();
$('div.events-base').last().css("display","none").fadeIn("1s");
addNextSection(till);
})
- });
+ });
}
function initEventScroll(){
var values = window.location.href.match(/programm/);
- console.log("test")
if (!values) return;
-
+
var first_date = $('div.events-base').data('first-date');
if (first_date) addPrevSection(new Date( first_date.split("-") ) );
-
+
var last_date = $('div.events-base').data('last-date');
if (last_date) addNextSection(new Date( last_date.split("-") ) );
-
- /*
+ var prev = $('div.event-base').data('prev-event');
+ if (prev) addPrevEvent(prev);
+
+ var next = $('div.event-base').data('next-event');
+ if (next) addNextEvent(next);
+
$(window).scroll( function() {
+ /*
clearTimeout( $.data( this, "scrollCheck" ) );
$("div.event div.excerpt").css("opacity","0");
$.data( this, "scrollCheck", setTimeout(function() {
$("div.event div.excerpt").css("opacity","0.7");
}, 100) );
-
+ */
if($(window).scrollTop() + $(window).height() == $(document).height()) {
$('a.load-next').click();
}
- if($(window).scrollTop() == 0) {
- $('a.load-prev').click();
- }
+ //if($(window).scrollTop() == 0) $('a.load-prev').click();
});
- */
-
}
$(document).ready(function() {
diff --git a/website/agenda/templates/event_details.html b/website/agenda/templates/event_details.html
index 835c806..b9c9dc8 100644
--- a/website/agenda/templates/event_details.html
+++ b/website/agenda/templates/event_details.html
@@ -13,8 +13,8 @@
-