Compare commits

...

76 Commits

Author SHA1 Message Date
0b7f362c80 install/create.sql fix errors 2025-03-26 11:26:26 +01:00
3410f93767 docker: init basic dev setup 2025-03-26 11:25:27 +01:00
www-data
ab8952feea Merge remote-tracking branch 'calcms/master'
492bc44 (calcms/master) lib/calcms/user_sessions.pm: always write session
80cbaf7 fixup! templates: fix javascript escaping
4689dee notify-events: show results
b7ff85f create-events.cgi: remove comments
0c7cf10 website/agenda/.htaccess: add route for running id
61405a2 install/create.sql: new index for events
6744123 calcms.css: use woff2 fonts only
f71d6e9 mail.pm: convert to ascii
642e739 fixup! lib/calcms: remove comments and shorten expressions
2024-07-28 23:46:59 +02:00
Milan
492bc44cda lib/calcms/user_sessions.pm: always write session 2024-07-26 22:03:06 +02:00
Milan
80cbaf70bc fixup! templates: fix javascript escaping 2024-07-26 21:52:07 +02:00
Milan
4689dee215 notify-events: show results 2024-07-26 21:33:49 +02:00
Milan
b7ff85f3a2 create-events.cgi: remove comments 2024-07-26 21:33:49 +02:00
Milan
0c7cf1071a website/agenda/.htaccess: add route for running id 2024-07-26 21:33:49 +02:00
Milan
61405a2644 install/create.sql: new index for events 2024-07-26 21:33:49 +02:00
Milan
6744123447 calcms.css: use woff2 fonts only 2024-07-26 21:33:49 +02:00
www-data
521772acdf Merge remote-tracking branch 'calcms/master'
* events, all-events: remove setting all_events param
* events: always set utc fields
2024-06-01 15:31:22 +02:00
Raphael
0460f06d02 add redirects for coloradio, remove index page 2024-05-23 12:03:30 +02:00
haffael
35c697a825 Merge branch 'rapilodev:master' into master 2024-05-23 11:46:01 +02:00
Raphael
e881ec16ae cleanup agenda/, frontend now outside this repo 2024-05-23 11:43:52 +02:00
www-data
e896d03f4b Merge remote-tracking branch 'calcms/master'
* events.pm: load recordings for params
2024-04-19 13:06:00 +02:00
www-data
09c8bd7ded Merge remote-tracking branch 'calcms/master' 2024-03-31 09:39:59 +02:00
www-data
454f0374da Merge remote-tracking branch 'calcms/master' 2024-03-27 00:58:59 +01:00
www-data
9e0ea0e09d fixup! apache config 2024-03-20 00:34:50 +01:00
www-data
f5611bacdd Merge remote-tracking branch 'calcms/master'
295faea lib/calcms/startup.pl: get include path from startup.pl directory
bd869a5 install/migrate.sql: remove paths from image entries
b01dd91 fixup! audio-recordings.cgi: set permissions to update event
220f9c9 apache2-sites/calcms.conf: add /images
976355e fixup! create.sql, migrate.sql: limit username length to 100
2024-03-20 00:31:40 +01:00
www-data
45066f704c Merge remote-tracking branch 'calcms/master'
edit-event.html: hide unused user excerpt
edit-event: register page leave handler later
jquery.min.js: upgrade 3.7.1
2024-03-04 08:52:35 +01:00
www-data
9ca6ccdac1 Merge remote-tracking branch 'calcms/master'
* event.cgi -> broadcast.cgi
* upload-audio-recordings.cgi: remove, duplicate to audio-recordings.cgi
* audiorecordings.pm: connect locally to detect permissions
2024-02-23 15:32:06 +01:00
www-data
9f834fd4f0 Merge remote-tracking branch 'calcms/master'
* INSTALL.md: add sox to calculate audio duration
* db.pm: output call stack on error
* audio-recordings.cgi: set permissions to update event
2024-02-17 20:59:57 +01:00
www-data
f4298cf4f9 Merge remote-tracking branch 'calcms/master'
* notify-events.cgi: write result to response
* mail.pm: encode body by quoted printable
2024-02-15 21:11:43 +01:00
www-data
3336b07b64 Merge remote-tracking branch 'calcms/master' 2024-02-02 14:20:39 +01:00
www-data
a45f2ab241 Merge remote-tracking branch 'calcms/master' 2024-02-01 21:53:40 +01:00
Milan
f52f57e0d5 Merge remote-tracking branch 'calcms/master' 2023-09-23 09:31:59 +02:00
Milan
751643a90d index.html: fix base domain
Update page functionality to use dynamic domain and protocol from the
current browser URL, resolving issues related to the fixed base domain.
2023-09-23 02:45:38 +02:00
Milan
6f8f1a3f8b Merge remote-tracking branch 'calcms/master' 2023-09-23 01:05:15 +02:00
www-data
c1877ff18e Merge https://github.com/rapilodev/racalmas 2023-05-23 15:01:55 +00:00
Raphael Steppert
89aa2845d1 startup.pl: add path to calcms lib in testing environment 2023-05-23 15:01:35 +00:00
Milan
bb19780bd6 Revert "agenda/index.html: add #calcms_list to #sendungen"
This reverts commit af56448c6e.
2023-03-29 23:02:16 +02:00
Milan
6109330614 agenda/index.htm: hide #sendungen on search 2023-03-29 23:01:57 +02:00
Milan
f6eb7c8154 Merge remote-tracking branch 'calcms/master' 2023-03-29 22:11:41 +02:00
Milan
e5c5a5a0f8 calcms*.js: remove debugging 2023-03-29 22:05:44 +02:00
Milan
1c35ed7628 js/calcms.js: escape whitespaces 2023-03-29 22:03:45 +02:00
Milan
af56448c6e agenda/index.html: add #calcms_list to #sendungen 2023-03-29 22:03:20 +02:00
Milan
bef663c474 index.html: remove 2023-03-29 22:02:55 +02:00
Milan
5e8eac8b7b /agenda/templates/coloradio: update image urls 2023-03-28 21:27:55 +02:00
Milan
28ee623c35 fix URL for js/mo.min.0.288.1.js 2023-03-28 21:16:42 +02:00
Milan
5295dfd173 apache config
adopt directories to following structure

/aganda
/programm
/media
/media/thumbs
/media/icons
/media/images
/media/internal
/media/internal/thumbs
/media/internal/images
/meida/internal/icons
/thumbs -> /media/thumbs
/icons  -> /media/icons
2023-03-28 21:12:59 +02:00
Milan
b4df3860c0 Merge remote-tracking branch 'calcms/master'
* create-events: localization
* create-events.cgi: optionally select series
2023-03-26 20:53:18 +02:00
Milan
5c141e5b02 Merge remote-tracking branch 'calcms/master'
* redirect to calendar
2023-03-26 11:19:24 +02:00
Milan
9f8aa2c8c0 Merge remote-tracking branch 'calcms/master'
* config: add audio-upload-hooks
2023-03-24 23:03:03 +01:00
Milan
f65fe825e6 Merge remote-tracking branch 'calcms/master'
* default.js: add parseUrl
* fixup! remove deprecated role model
2023-03-23 22:20:07 +01:00
Milan
0580a0c3fa Merge remote-tracking branch 'calcms/master'
studios: remove google_calendar field
uac.pm: add admin permission
remove deprecated role model
Remove past recordings
fixup! category: remove
Configure event notification sender email address
2023-03-22 00:14:31 +01:00
Milan
b984858770 Merge remote-tracking branch 'calcms/master'
* help-texts: add
* db.pm: support more names
2023-03-20 23:18:21 +01:00
Milan
8c80c55011 help-texts: add
users with permission edit_help_texts are allowed to select edit help
texts from menu and enter texts for all event fields. Other users will
see help texts as tooltips. This allows to provide help to users
depending on your workflow. help texts are saved by project and studio.
2023-03-20 23:09:11 +01:00
Milan
bc0fe2fcc7 Merge remote-tracking branch 'calcms/master'
* drop unused column user_series.active
2023-03-20 05:44:02 +01:00
Milan
35d7784059 Merge remote-tracking branch 'calcms/master'
* series*.pm: set default for zero values
* fix image paths
2023-03-19 22:46:56 +01:00
Milan
72eada03c4 templates: overwrite default templates from upstream 2023-03-19 21:55:03 +01:00
Milan
d6ee7aa0c7 Merge remote-tracking branch 'calcms/master'
* create-events.html: add one day period
* add create events to main menu
2023-03-19 21:51:18 +01:00
Milan
34d620e89c templates/coloradio/event_pure1.html: fix ical link
* full_title concats series_name and title with hyphen.
* escape=hyphen prevents breaking filenames by whitespace.
2023-03-19 21:12:24 +01:00
Milan
147a1dfd32 Merge remote-tracking branch 'calcms/master'
* HTML/Template/Compiled/Plugin/Hyphen: add
2023-03-19 21:07:04 +01:00
Milan
4bbdb94359 Merge remote-tracking branch 'calcms/master' 2023-03-18 22:27:31 +01:00
Milan
de2dcd37f7 Merge remote-tracking branch 'calcms/master' 2023-03-18 22:19:41 +01:00
Milan
cf1acaaa82 index.html: Basis-URL configurable 2023-02-25 23:22:03 +01:00
Milan
5aa42ebf34 fixup! Merge remote-tracking branch 'calcms/master' 2023-02-25 23:21:31 +01:00
Milan
1da6032c9a fixup! Merge remote-tracking branch 'calcms/master' 2023-02-25 23:17:25 +01:00
Milan
7dc128752f templates/coloradio: back to original filenames for template coloradio 2023-02-25 23:05:53 +01:00
Milan
d10b249b6b templates/coloradio: remove client cache 2023-02-25 22:55:19 +01:00
Milan
7aa432fd1e Merge remote-tracking branch 'calcms/master' 2023-02-25 22:49:39 +01:00
Milan
58726b06c6 move modifications to theme coloradio 2023-02-25 22:36:51 +01:00
Milan
e1ed70cb6b fix htaccess 2023-02-23 21:10:01 +01:00
Milan
5b105fb4e4 .htaccess: open end 2023-02-23 21:09:16 +01:00
Milan
1339171c33 agenda/index.html: fix css import 2023-02-23 21:08:58 +01:00
Milan
27684c4f54 calendar_colo.html 2023-02-23 21:07:50 +01:00
Milan
84c59e179a cache removed 2023-02-23 21:07:30 +01:00
Milan
7de61cd887 add_commit.cgi: use coloradio url 2023-02-23 21:06:25 +01:00
Milan
f626c510ad remove time_of_day 2023-02-23 21:05:47 +01:00
root
1d4f5051df fixed fix of streaming links aftrer 3 months of not working page :-( 2020-09-20 12:29:48 +02:00
root
72ff702fe2 fixed streaming.fueralle.org URL to https 2020-07-22 18:28:27 +02:00
root
509535fbf8 Anpassungen fuer coloradio 2020-07-22 18:25:28 +02:00
root
bdf572956f changed calcms root 2018-05-07 15:22:37 +02:00
root
ebb1ecce5e coloradio website interface 2018-05-07 15:21:53 +02:00
root
e74b8e53cb fixes search special characters url encoding issue 2018-05-07 15:20:13 +02:00
root
194fa799ea Template Tests und Änderungen fuer coloradio 2018-05-07 15:15:36 +02:00
70 changed files with 2436 additions and 733 deletions

19
.gitignore vendored
View File

@@ -2,8 +2,17 @@
sync.data
old
config.cgi
website/agenda_files/media/icons/*.jpg
website/agenda_files/media/image/*.jpg
website/agenda_files/media/thumbs/*.jpg
website/agenda_files/media/upload/*.jpg
recordings/*.mp3
website/media/**/*.jpg
website/media/**/*.jpeg
website/media/**/*.png
website/recordings/*
*.php
logs/*
# static frontend for programm.coloradio.org
website/programm/*
!website/programm/.htaccess
# remove this after a while
website/bak_to-delete
website/agenda/timestamp.cgi

22
docker/Dockerfile Normal file
View File

@@ -0,0 +1,22 @@
# Use the official Debian image as a base
FROM debian:latest
# Set environment variables
# ENV DEBIAN_FRONTEND=noninteractive
# Update the package list and install Apache2 and MariaDB
RUN apt-get update && \
apt-get install -y apache2 && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# Copy your website files to the Apache document root (optional)
COPY ./install/apache2-sites/coloradio.conf /etc/conf/apache2/sites-enabled/
# Expose ports for Apache and MariaDB
EXPOSE 80
# Start both Apache and MariaDB
CMD service apache2 start && \
tail -f /var/log/apache2/access.log

23
docker/docker-compose.yml Normal file
View File

@@ -0,0 +1,23 @@
services:
#web:
# build:
# context: ..
# dockerfile: ./docker/Dockerfile
# ports:
# - "80:80"
# #volumes:
# #- ./your-website-files:/var/www/html/
# #- ./httpd.conf:/etc/apache2/sites-available/000-default.conf
db:
image: mariadb:10
environment:
MYSQL_ROOT_PASSWORD: yourpassword
#MYSQL_DATABASE: yourdatabase
MYSQL_USER: test
MYSQL_PASSWORD: test
ports:
- "3306:3306"
volumes:
- ../install/init.sql:/docker-entrypoint-initdb.d/01-init.sql
- ../install/create.sql:/docker-entrypoint-initdb.d/02-create.sql

View File

@@ -23,19 +23,19 @@ Alias /programm ${web_dir}/programm
Alias /agenda ${web_dir}/agenda
# image base
Alias /media ${base_dir}/media
Alias /media ${web_dir}/media
# icons
Alias /images ${base_dir}/media/images
# thumbs
Alias /thumbs ${base_dir}/media/thumbs
Alias /thumbs ${web_dir}/media/thumbs
# icons
Alias /icons ${base_dir}/media/icons
Alias /icons ${web_dir}/media/icons
# audio upload
Alias /recordings ${base_dir}/recordings
Alias /recordings ${web_dir}/recordings
# audio download
Alias /listen ${archive_dir}/${domain}

View File

@@ -0,0 +1,77 @@
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
LogLevel info
# limit redirection on injecting into your website
LimitInternalRecursion 4
Define domain localhost
Define base_dir /home/milan/radio/coloradio/racalmas.orig/
Define perl_lib /home/milan/radio/coloradio/racalmas.orig/lib/calcms
Define web_dir /home/milan/radio/coloradio/racalmas.orig/website/
Define archive_dir /home/radio/archive/
# calcms endpoints for your website
# frontend
Alias /programm ${web_dir}/programm
# backend
Alias /agenda ${web_dir}/agenda
# image base
Alias /media ${web_dir}/media
# thumbs
Alias /thumbs ${web_dir}/media/thumbs
# icons
Alias /icons ${web_dir}/media/icons
# images
Alias /images ${web_dir}/media/images
# audio upload
Alias /recordings ${base_dir}/recordings
# audio download
Alias /listen ${archive_dir}/${domain}
# upload playout status
ScriptAlias /agenda/planung/upload ${archive_dir}/${domain}/agenda/planung/upload
<Directory ${web_dir}/agenda>
AllowOverride All
Options -Indexes +FollowSymLinks +MultiViews +ExecCGI
Require all granted
</Directory>
<Directory ${web_dir}/programm>
AllowOverride All
Options -Indexes +FollowSymLinks -MultiViews -ExecCGI
Require all granted
</Directory>
<Directory ${web_dir}/media>
AllowOverride All
Options -Indexes -FollowSymLinks -MultiViews -ExecCGI
Require all granted
</Directory>
<IfModule mod_perl.c>
PerlSetEnv LC_ALL en_US.UTF-8
PerlSetEnv LANGUAGE en_US.UTF-8
PerlWarn On
PerlModule ModPerl::RegistryPrefork
PerlModule Apache2::Reload
PerlInitHandler Apache2::Reload
# set local tmp dir
SetEnv TMPDIR ${base_dir}/tmp/
# set library directory
PerlSetEnv PERL5LIB ${base_dir}/lib/calcms/
# preload libraries
PerlPostConfigRequire ${base_dir}/lib/calcms/startup.pl
</IfModule>

View File

@@ -19,6 +19,7 @@
-- Table structure for table `calcms_audio_recordings`
--
USE calcms;
DROP TABLE IF EXISTS `calcms_audio_recordings`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
@@ -1532,7 +1533,7 @@ CREATE TABLE `calcms_user_series` (
KEY `project_id` (`project_id`),
KEY `studio_id` (`studio_id`),
KEY `series_id` (`series_id`),
KEY `user_id` (`user_id`),
KEY `user_id` (`user_id`)
) ENGINE=MyISAM AUTO_INCREMENT=1019 DEFAULT CHARSET=utf8mb3;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -1542,7 +1543,7 @@ CREATE TABLE `calcms_user_series` (
LOCK TABLES `calcms_user_series` WRITE;
/*!40000 ALTER TABLE `calcms_user_series` DISABLE KEYS */;
INSERT INTO `calcms_user_series` (`id`, `project_id`, `studio_id`, `series_id`, `user_id`, `active`, `modified_by`, `modified_at`) VALUES (800,1,1,1,4,'','ccAdmin','2023-02-19 20:15:03');
INSERT INTO `calcms_user_series` (`id`, `project_id`, `studio_id`, `series_id`, `user_id`, `modified_by`, `modified_at`) VALUES (800,1,1,1,4,'ccAdmin','2023-02-19 20:15:03');
/*!40000 ALTER TABLE `calcms_user_series` ENABLE KEYS */;
UNLOCK TABLES;
@@ -1816,3 +1817,5 @@ CHANGE COLUMN `email` `email` VARCHAR(100) NULL DEFAULT NULL ;
ALTER TABLE `calcms`.`calcms_user_selected_events`
CHANGE COLUMN `user` `user` VARCHAR(100) NOT NULL ;
CREATE INDEX idx_covering ON calcms_events (start, end, id);

View File

@@ -361,4 +361,6 @@ ADD COLUMN `week_of_month` INT UNSIGNED NULL AFTER `weekday`,
ADD COLUMN `month` INT UNSIGNED NULL AFTER `week_of_month`,
CHANGE COLUMN `frequency` `frequency` INT UNSIGNED NULL ;
update `calcms_studio_timeslot_schedule` set period_type = 'days' where period_type = '';
update `calcms_studio_timeslot_schedule` set period_type = 'days' where period_type = '';
CREATE INDEX idx_covering ON calcms_events (start, end, id);

View File

@@ -86,9 +86,11 @@ sub insert ($$) {
$entry->{pid} = $$;
$entry->{expires_at} = time::time_to_datetime( time() + $entry->{timeout} );
$config->{access}->{write} = 1;
my $dbh = db::connect($config);
return db::insert( $dbh, 'calcms_user_sessions', $entry );
my $result = db::insert( $dbh, 'calcms_user_sessions', $entry );
$config->{access}->{write} = 0;
return $result;
}
# start session and return generated session id
@@ -176,6 +178,7 @@ sub update ($$) {
return undef unless defined $entry->{session_id};
$config->{access}->{write} = 1;
my $dbh = db::connect($config);
my @keys = sort keys %$entry;
my $values = join( ",", map { $_ . '=?' } @keys );
@@ -187,7 +190,9 @@ sub update ($$) {
set $values
where session_id=?
};
return db::put( $dbh, $query, \@bind_values );
my $result = db::put( $dbh, $query, \@bind_values );
$config->{access}->{write} = 0;
return $result;
}
#map schedule id to id

3
website/.htaccess Normal file
View File

@@ -0,0 +1,3 @@
RedirectMatch ^/$ /programm/
RedirectMatch ^/agenda/?$ /programm/#programm
RedirectMatch ^/datenschutzerklaerung/$ https://coloradio.org/?page_id=576

View File

@@ -1,14 +1,16 @@
<IfModule mod_rewrite.c>
RewriteBase /agenda
RewriteEngine on
RewriteBase /agenda
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule (.*) $1 [L]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule (.*) $1 [L]
RewriteRule ^kommentare/(\d+)/(\d{4}-\d{2}-\d{2}[T\+]\d{2}\:\d{2})(\:\d{2})?/(.*)$ comments.cgi?template=comments.html&event_id=$1&event_start=$2&sort_order=asc&$4 [L]
RewriteRule ^neueste_kommentare/(.*)$ comments.cgi?template=comments_newest.html&limit=20&show_max=3&type=list&$1 [L]
RewriteRule ^neueste_kommentare/(.*)$ comments.cgi?template=comments_newest.html&limit=400&show_max=40&type=list&$1 [L]
RewriteRule ^feed_kommentare/(.*)$ comments.cgi?template=comments.xml&limit=20&$1 [L]
RewriteRule ^kommentar_neu/(.*)$ add_comment.cgi?$1 [L]
@@ -18,7 +20,7 @@ RewriteRule ^sendung/(.*)$ events.cgi?$1 [L]
RewriteRule ^sendungen/(\d{4}-\d{2}-\d{2})/(\d{4}-\d{2}-\d{2})/(\d)/(.*)$ events.cgi?template=event_list.html&from_date=$1&till_date=$2&weekday=$3&$4 [L]
RewriteRule ^sendungen/(\d{4}-\d{2}-\d{2})/(\d{4}-\d{2}-\d{2})/(.*)$ events.cgi?template=event_list.html&from_date=$1&till_date=$2&$3 [L]
RewriteRule ^sendungen/(\d{4}-\d{2}-\d{2})/(.*)$ events.cgi?template=event_list.html&date=$1&$2 [L]
RewriteRule ^sendungen/heute/(.*)$ events.cgi?template=event_list.html&date=today&$1 [L]
RewriteRule ^sendungen/heute/(.*)$ events.cgi?template=event_list_2.html&date=today&$1 [L]
RewriteRule ^sendungen/(.*)$ events.cgi?$1 [L]
RewriteRule ^menu/(\d{4}-\d{2}-\d{2})/(\d{4}-\d{2}-\d{2})/(\d)/(.*)$ events.cgi?template=event_menu.html&from_date=$1&till_date=$2&weekday=$3&$4 [L]
@@ -27,9 +29,9 @@ RewriteRule ^menu/(\d{4}-\d{2}-\d{2})/(.*)$ events.cgi?template=even
RewriteRule ^menu/heute/(.*)$ events.cgi?template=event_menu.html&date=today&$1 [L]
RewriteRule ^menu/(.*)$ events.cgi?$1 [L]
RewriteRule ^kalender/(\d{4}-\d{2}-\d{2})/$ cal.cgi?date=$1 [L]
RewriteRule ^kalender/(\d{4}-\d{2}-\d{2})/(\d{4}-\d{2}-\d{2})/$ cal.cgi?from_date=$1&till_date=$2 [L]
RewriteRule ^kalender/(.*)$ cal.cgi?$1 [L]
RewriteRule ^kalender/(\d{4}-\d{2}-\d{2})/$ cal.cgi?date=$1&template=calendar.html&open_end=1 [L]
RewriteRule ^kalender/(\d{4}-\d{2}-\d{2})/(\d{4}-\d{2}-\d{2})/$ cal.cgi?from_date=$1&till_date=$2&template=calendar.html&open_end=1 [L]
RewriteRule ^kalender/(.*)$ cal.cgi?$1&template=calendar.html&open_end=1 [L]
RewriteRule ^sendereihen/(.*)$ series_names.cgi?$1 [L]
@@ -38,6 +40,7 @@ RewriteRule ^playlistLong/(.*)$ events.cgi?template=event_playlist_long.html&t
RewriteRule ^playlistUtc/(.*)$ events.cgi?template=event_utc_time.json&limit=1
RewriteRule ^running_event/(.*)$ events.cgi?template=event_running.html&time=now&limit=1&$1 [L]
RewriteRule ^running_event_id/(.*)$ events.cgi?template=event_running_id.html&time=now&limit=1&$1 [L]
RewriteRule ^feed/(.*)$ events.cgi?template=event.atom.xml&time=future&limit=100&$1 [L]
RewriteRule ^feed.xml[\?]?(.*)$ events.cgi?template=event.atom.xml&time=future&limit=100&$1 [L]
RewriteRule ^atom/(.*)$ events.cgi?template=event.atom.xml&time=future&limit=100&$1 [L]
@@ -79,12 +82,6 @@ RewriteRule ^freefm.xml$ events.cgi?template=event_freefm.xml&loc
RewriteRule ^frrapo-programm.html$ events.cgi?location=potsdam&template=event_frrapo
RewriteRule ^upload_playout_piradio$ upload_playout.cgi?project_id=1&studio_id=1
RewriteRule ^redaktionen-piradio$ series.cgi?project_id=1&location=piradio
RewriteRule ^redaktionen-studio-ansage$ series.cgi?project_id=1&location=ansage
RewriteRule ^redaktionen-frrapo$ series.cgi?project_id=1&location=potsdam
RewriteRule ^redaktionen-colabo-radio$ series.cgi?project_id=1&location=colabo
RewriteRule ^redaktionen-frb$ series.cgi?project_id=1&location=frb
</IfModule>
# MOD_PERL
@@ -106,15 +103,3 @@ Options -Indexes +FollowSymLinks +MultiViews +ExecCGI
</IfModule>
Require all granted
## compress
#<IfModule mod_headers.c>
# SetOutputFilter DEFLATE
# SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|zip|mp3)$ no-gzip dont-vary
# Header append Vary User-Agent env=!dont-vary
#
# <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
# Header set Cache-Control "max-age=600, public"
# </FilesMatch>
#</IfModule>

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -1,88 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>calcms</title>
<meta name="viewport" content="width=device-width; initial-scale=1; maximum-scale=1">
<meta charset="utf-8">
<meta http-equiv="Cache-Control" content="no-cache">
<link rel="stylesheet" href="/css/style.css"> <!--calcms start-->
<link rel="alternate" type="application/atom+xml" title="Sendeplan Atom" href="/agenda/atom/" />
<link rel="alternate" type="application/rss+xml" title="Sendeplan RSS" href="/agenda/rss/" />
<link rel="alternate" type="application/atom+xml" title="Sendekommentare" href="/agenda/feed_kommentare/" />
<link rel="stylesheet" type="text/css" media="screen" href="/agenda/css/calcms.css" />
<script type="text/javascript" src="/agenda/js/jquery.min.js"></script>
<script type="text/javascript" src="/agenda/js/calcms.js"></script>
<script type="text/javascript" src="/agenda/js/calcms.cust.js"></script>
<!--calcms end-->
</head>
<body>
<div id="container">
<header id="header">
<nav id="nav-main">
<ul>
<li><a href="/">home</a></li>
<li><a href="/agenda/programm.html">schedule</a> </li>
<li><a href="/agenda/planung/">editor</a></li>
</ul>
</header>
<div id="content">
<article >
<!-- include daily schedule with excerpt -->
<div id="calcms_list" class="content">bitte warten</div>
</article>
<aside class="left">
<center>
<h2>Programm</h2>
<div class="content">
<!-- include short list of schedules -->
<div id="calcms_menu">bitte warten...</div>
</div>
<h2>Kommende Sendung</h2>
<div class="content">
<!-- show coming shows -->
<div id="calcms_playlist">bitte warten…</div>
</div>
</center>
</aside>
<aside class="right">
<center>
<h2>Kalender</h2>
<div class="content">
<!-- show calendar -->
<div id="calcms_calendar">bitte warten...</div>
</div>
<h2>Suche</h2>
<div class="content">
<!-- calcms search start -->
<div id="calcms_search">
<input id="calcms_search_field" name="search" value="" />
<input value="suchen" onclick="calcms.selectSearchEventListener();return false;" type="button" />
<a id="calcms_search_show_details" href="#" onclick="calcms.showAdvancedSearch('calcms_enhanced_search');return false;">erweitert</a><br />
<div id="calcms_enhanced_search" style="display: none;">
Archiv
<input type="checkbox" name="calcms_archive" id="calcms_archive" /><span id="calcms_categories"></span><span id="calcms_series_names"></span><span id="calcms_programs"></span>
</div>
</div> <!-- calcms search end -->
</div> <!-- calcms content end -->
</center>
</aside>
<footer>calcms 2010 - 2023 by <a href="http://radiopiloten.de">http://radiopiloten.de</a></footer>
</div>
</body>
</html>

View File

@@ -264,14 +264,14 @@ var calcms_settings = new Array();
}
$(document).ready(function() {
if (window.location.href.match(/\/programm\//)) scrollTo( $("h1"), -16,0 );
//if (window.location.href.match(/\/programm\//)) scrollTo( $("h1"), -16,0 );
initCalcms();
initWordpress();
calcms.showPlaylist();
//initWordpress();
//calcms.showPlaylist();
calcms.showNewestComments();
calcms.insertEditors();
//calcms.insertEditors();
initSearch();
initEventScroll();
//initEventScroll();
console.log("calcms inited")
});

View File

@@ -29,7 +29,6 @@ my $config = config::get('../config/config.cgi');
my ( $user, $expires ) = auth::get_user( $config, $params, $cgi );
return if ( ( !defined $user ) || ( $user eq '' ) );
#print STDERR $params->{project_id}."\n";
my $user_presets = uac::get_user_presets(
$config,
{
@@ -42,7 +41,6 @@ $params->{default_studio_id} = $user_presets->{studio_id};
$params = uac::setDefaultStudio( $params, $user_presets );
$params = uac::setDefaultProject( $params, $user_presets );
#print STDERR $params->{project_id}."\n";
my $request = {
url => $ENV{QUERY_STRING} || '',
params => {
@@ -80,7 +78,6 @@ sub show_events {
uac::permissions_denied('read_events');
return;
}
my $events = getDates( $config, $request );
$params->{events} = $events;
$params->{total} = scalar(@$events);
@@ -107,8 +104,6 @@ sub create_events {
print STDERR "<pre>found " . ( scalar @$dates ) . " dates\n";
my $events = [];
for my $date (@$dates) {
#print STDERR $date->{start}."\n";
push @$events, createEvent( $config, $request, $date );
}
$params->{events} = $events;

View File

@@ -2,8 +2,19 @@ table#events{
transition:all 2s;
}
table#events.done{
background:#cfc;
table#events div.error{
background: #f33;
color:white;
padding:1rem;
width: 30rem;
}
table#events div.done{
background: #3f3;
color:white;
padding:1rem;
width: 30rem;
}
table#events td:nth-of-type(1){

View File

@@ -1,13 +1,20 @@
function register_buttons() {
$("#forms form").on('click', 'button', function( event ) {
event.preventDefault();
var form = $(this).closest('form');
let form = $(this).closest('form');
let formId = form.attr('id');
let table = $('#' + formId+" table");
let status = table.find("td.result div");
status.text('').removeClass("error").removeClass("done");
$.post("notify-events.cgi", form.serialize())
.done( function(data) {
var content = $(data).find("#content");
$('#result').html(content);
var formId = form.attr('id');
$('#' + formId+" table").addClass("done");
.always( function(data) {
if (data.includes("done")){
status.text("ok").removeClass("error").addClass("done");
} else {
status.text(data).removeClass("ok").addClass("error");
}
table.find("tr.result").show();
});
});
}

View File

@@ -6,6 +6,7 @@ no warnings 'redefine';
use utf8;
use Data::Dumper;
use Try::Tiny;
use params();
use config();
@@ -53,11 +54,10 @@ my $request = {
#set user at params->presets->user
$request = uac::prepare_request( $request, $user_presets );
$params = $request->{params}->{checked};
#show header
unless ( params::isJson() || ( $params->{template} =~ /\.txt/ ) ) {
unless ( params::isJson() || ( $params->{template} =~ /\.txt/ ) || $params->{action}eq'send' ) {
my $headerParams = uac::set_template_permissions( $request->{permissions}, $params );
$headerParams->{loc} = localization::get( $config, { user => $user, file => 'menu' } );
template::process( $config, 'print', template::check( $config, 'default.html' ), $headerParams );
@@ -162,8 +162,13 @@ sub sendMail {
$mail->{Cc} = $params->{cc} if defined $params->{cc};
$mail->{Subject} = $params->{subject} if defined $params->{subject};
$mail->{Data} = $params->{content} if defined $params->{content};
my $result = mail::send($mail);
print "Content-type:text/plain\n\nresult:".Dumper($result);
try {
my $result = mail::send($mail);
print "Content-type:text/plain\n\ndone:$result\n";
} catch {
printf "Content-type:text/plain\n\nresult:%s\n", $_->{message} // $_;
}
}
sub getMail {
@@ -214,8 +219,6 @@ sub eventToText {
$s .= $event->{user_excerpt} . "\n";
$s .= $event->{topic} . "\n";
$s .= $event->{content} . "\n";
#print STDERR "DUMP\n$s";
return $s;
}

View File

@@ -28,3 +28,5 @@ msgstr "Inhalt"
msgid "show_details"
msgstr "Zeige Details"
msgid "result"
msgstr "Ergebnis"

View File

@@ -28,3 +28,5 @@ msgstr "Content"
msgid "show_details"
msgstr "Show Details"
msgid "result"
msgstr "Result"

View File

@@ -43,15 +43,15 @@
<TMPL_IF playout><img src="image/play.svg" title="playout"></TMPL_IF>
</td>
<TMPL_IF noRecipient>
<TMPL_IF noRecipient>
<td></td>
</tr>
</tr>
<tr>
<td>Warning</td>
<td><div class="error">no recipient configured at series!</div></td>
</tr>
<TMPL_ELSE>
<tr>
<td>Warning</td>
<td><div class="error">no recipient configured at series!</div></td>
</tr>
<TMPL_ELSE>
<td class="action"><button type="submit"><TMPL_VAR .loc.button_send></button></td>
</tr>
@@ -63,12 +63,18 @@
</tr>
</TMPL_IF>
<tr class="result" style="display:none">
<td><TMPL_VAR .loc.result></td>
<td class="result"><div></div></td>
</tr>
<TMPL_IF mail.Subject>
<tr class="subject details">
<td><TMPL_VAR .loc.subject></td>
<td class="mailSubject"><input name="subject" value="<TMPL_VAR mail.Subject>"></td>
</tr>
</TMPL_IF>
<TMPL_IF mail.From>
<tr class="details">
<td><TMPL_VAR .loc.from></td>
@@ -97,7 +103,7 @@
</tr>
</TMPL_IF>
</TMPL_IF>
</TMPL_IF>
</table>
</form>
</TMPL_LOOP>

View File

@@ -66,7 +66,7 @@
<td>
<button
class="selectImage"
onclick="selectImage('<TMPL_VAR name escape=javascript>', '<TMPL_VAR image escape=javascript>', 'studio', '<TMPL_VAR .project_id escape=js>','<TMPL_VAR .studio_id escape=js>'); return false;"
onclick="selectImage('<TMPL_VAR name escape=javascript>', '<TMPL_VAR image escape=javascript>', 'studios', '<TMPL_VAR .project_id escape=js>','<TMPL_VAR .studio_id escape=js>'); return false;"
>
<img id="imagePreview" src="show-image.cgi?project_id=<TMPL_VAR .project_id escape=js>&studio_id=<TMPL_VAR .studio_id escape=js>&filename=<TMPL_VAR image escape=js>&type=icon">
</button>

View File

@@ -0,0 +1,67 @@
Content-type:text/html; charset=UTF-8;
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Script-Type" content="javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>Calendar <TMPL_VAR project_title></title>
</head>
<body>
<TMPL_UNLESS no_result>
<TMPL_UNLESS no_search_result>
<div>
<TMPL_IF debug>
<div id="calendar_debug"></div>
</TMPL_IF>
<table>
<thead>
<tr>
<th class="first">
<a href="<TMPL_VAR .widget_render_url>/<TMPL_VAR .controllers.calendar>/<TMPL_VAR previous_month>.html" onclick="calcms.selectMonthEventListener('<TMPL_VAR previous_month>');return false;"
>&laquo;</a>
</th>
<th colspan="5" align="center">
<a class="calmonthclick" href="<TMPL_VAR .widget_render_url>/<TMPL_VAR .controllers.calendar>/<TMPL_VAR start_date>_<TMPL_VAR end_date>.html"
><TMPL_VAR start_month_name> <TMPL_VAR start_year></a>
<!-- onclick="calcms.selectMonthEventListener('<TMPL_VAR start_date>');return false;" -->
</th>
<th class="last">
<a href="<TMPL_VAR .widget_render_url>/<TMPL_VAR .controllers.calendar>/<TMPL_VAR next_month>.html" onclick="calcms.selectMonthEventListener('<TMPL_VAR next_month>');return false;"
>&raquo;</a>
</th>
</tr>
<tr>
<!--<th>Wo</th>
-->
<TMPL_LOOP weekdays><th><!--<a href="<TMPL_VAR .local_base_url>/<TMPL_VAR .controllers.events>/<TMPL_VAR start_date>/<TMPL_VAR end_date>/<TMPL_VAR weekday>/" onclick="calcms.selectDateRangeEventListener('<TMPL_VAR from_date>','<TMPL_VAR till_date>');return false;">--><TMPL_VAR "weekday_short_name"><!--</a>--></th></TMPL_LOOP>
</tr>
</thead>
<tbody>
<TMPL_LOOP week_and_days>
<tr>
<!--
<TMPL_LOOP week><th class="<TMPL_VAR class>"><a href="<TMPL_VAR .local_base_url>/<TMPL_VAR .controllers.events>/<TMPL_VAR from_date>/<TMPL_VAR till_date>/" title="Woche anzeigen" onclick="calcms.selectDateRangeEventListener('<TMPL_VAR from_date>','<TMPL_VAR till_date>');return false;" ><TMPL_VAR week_of_year></a></th></TMPL_LOOP>
-->
<TMPL_LOOP days><td class="<TMPL_VAR class>"><a class="caldayclick" href="<TMPL_VAR .widget_render_url>/<TMPL_VAR .controllers.events>/<TMPL_VAR date>.html" title="<TMPL_VAR day>.<TMPL_VAR month>. zeigen"
><TMPL_VAR day></a></td>
</TMPL_LOOP>
<!-- onclick="calcms.selectDateEventListener('<TMPL_VAR date>');return false;" -->
</tr>
</TMPL_LOOP>
</tbody>
</table>
</div>
</TMPL_UNLESS>
</TMPL_UNLESS>
</body>
</html>

View File

@@ -0,0 +1,83 @@
Content-type:text/html; charset=UTF-8;
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Script-Type" content="javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>Calendar <TMPL_VAR project_title></title>
</head>
<body>
<div >
<TMPL_IF debug>
<div id="calendar_debug"></div>
</TMPL_IF>
<table cellpadding="0" cellspacing="0" border="0" width="190">
<tr>
<th class="first">
<a href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.calendar>/<TMPL_VAR previous_month>.html"
>&lt;</a>
<!--onclick="calcms.selectMonthEventListener('<TMPL_VAR previous_month>');return false;"-->
</th>
<th colspan="6" width="180" align="center">
<a href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.calendar>/<TMPL_VAR start_date>_<TMPL_VAR end_date>.html"
>
<TMPL_VAR start_month_name> <TMPL_VAR start_year>
</a>
<!--onclick="calcms.selectMonthEventListener('<TMPL_VAR start_date>');return false;"-->
</th>
<th class="last">
<a href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.calendar>/<TMPL_VAR next_month>.html"
>&gt;</a>
</th>
<!--onclick="calcms.selectMonthEventListener('<TMPL_VAR next_month>');return false;"-->
</tr>
<tr>
<th>Wo</th>
<TMPL_LOOP NAME=weekdays>
<th>
<a href="<TMPL_VAR base_url>/<TMPL_VAR .controllers.events>/<TMPL_VAR start_date>/<TMPL_VAR end_date>/<TMPL_VAR weekday>/"
onclick="calcms.selectWeekdayEventListener('<TMPL_VAR start_date>','<TMPL_VAR end_date>','<TMPL_VAR weekday>');return false;"
>
<TMPL_VAR "weekday_short_name">
</a>
</th>
</TMPL_LOOP>
</tr>
<TMPL_LOOP NAME=week_and_days>
<tr>
<TMPL_LOOP NAME=week>
<th class="<TMPL_VAR class>">
<a href="<TMPL_VAR base_url>/<TMPL_VAR .controllers.events>/<TMPL_VAR from_date>/<TMPL_VAR till_date>/"
title="<TMPL_VAR description>"
onclick="calcms.selectDateRangeEventListener('<TMPL_VAR from_date>','<TMPL_VAR till_date>');return false;"
>
<TMPL_VAR week_of_year>
</a>
</th>
</TMPL_LOOP>
<TMPL_LOOP NAME=days>
<td class="<TMPL_VAR class>">
<TMPL_IF is_day>
<a href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.events>/<TMPL_VAR date>.html"
title="<TMPL_VAR description>"
>
<TMPL_VAR day>
</a>
<!--onclick="calcms.selectDateEventListener('<TMPL_VAR date>');return false;"-->
</TMPL_IF>
</td>
</TMPL_LOOP>
</tr>
</TMPL_LOOP>
</table>
</div>
</body>
</html>

View File

@@ -0,0 +1,71 @@
Content-type:text/html; charset=UTF-8;
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Script-Type" content="javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>Calendar <TMPL_VAR project_title></title>
</head>
<body>
<div >
<TMPL_IF debug>
<div id="calendar_debug"></div>
</TMPL_IF>
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<th class="first">
<a href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.calendar>/<TMPL_VAR previous_month>.html"
>&laquo;</a>
</th>
<th colspan="6" align="center">
<a href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.calendar>/<TMPL_VAR start_date>_<TMPL_VAR end_date>.html"
><TMPL_VAR start_month_name> <TMPL_VAR start_year></a>
</th>
<th class="last">
<a href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.calendar>/<TMPL_VAR next_month>.html"
>&raquo;</a>
</th>
</tr>
<tr>
<th>Wo</th>
<TMPL_LOOP NAME=weekdays>
<th>
<a href="<TMPL_VAR base_url>/<TMPL_VAR .controllers.events>/<TMPL_VAR start_date>/<TMPL_VAR end_date>/<TMPL_VAR weekday>/"
onclick="calcms.selectWeekdayEventListener('<TMPL_VAR start_date>','<TMPL_VAR end_date>','<TMPL_VAR weekday>');return false;"
><TMPL_VAR "weekday_short_name"></a>
</th>
</TMPL_LOOP>
</tr>
<TMPL_LOOP NAME=week_and_days>
<tr>
<TMPL_LOOP NAME=week>
<th class="<TMPL_VAR class>">
<a href="<TMPL_VAR base_url>/<TMPL_VAR .controllers.events>/<TMPL_VAR from_date>/<TMPL_VAR till_date>/"
title="<TMPL_VAR description>"
onclick="calcms.selectDateRangeEventListener('<TMPL_VAR from_date>','<TMPL_VAR till_date>');return false;"
><TMPL_VAR week_of_year></a>
</th>
</TMPL_LOOP>
<TMPL_LOOP NAME=days>
<td class="<TMPL_VAR class>">
<TMPL_IF is_day>
<a href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.events>/<TMPL_VAR date>.html"
title="<TMPL_VAR description>"
><TMPL_VAR day></a>
</TMPL_IF>
</td>
</TMPL_LOOP>
</tr>
</TMPL_LOOP>
</table>
</div>
</body>
</html>

View File

@@ -0,0 +1,34 @@
Content-type:text/html; charset=UTF-8;
<!DOCTYPE html>
<html>
<body>
<form id="calcms_projects" name="calcms_project">
<select id="calcms_project" name="project"
onchange="calcms.selectProject()"
>
<TMPL_LOOP projects><option value="<TMPL_VAR name escape=none>"><TMPL_VAR title></option>
</TMPL_LOOP>
</select>
</form>
<TMPL_IF projects>
<form id="calcmsCategoryForm" name="calcms_category">
<TMPL_LOOP projects>
<TMPL_UNLESS isEmpty>
<select id="calcms_category_<TMPL_VAR js_name escape=none>" name="category_<TMPL_VAR js_name escape=none>"
title="Kategorien durchsuchen"
onchange="calcms.selectCategory('<TMPL_VAR name escape=js>', jQuery(this).val())"
style="display:none;"
>
<option value="">- Kategorie -</option>
<TMPL_LOOP categories><option value="<TMPL_VAR name escape=none>"<TMPL_VAR selected>><TMPL_VAR name> (<TMPL_VAR sum>)</option>
</TMPL_LOOP>
</select>
</TMPL_UNLESS>
</TMPL_LOOP>
</form>
</TMPL_IF>
</body>
</html>

View File

@@ -0,0 +1,75 @@
Content-type:text/html; charset=UTF-8;
<!DOCTYPE html>
<html>
<head>
<title>Kommentare zu Sendungen - <TMPL_VAR project_title></title>
<meta http-equiv="Content-Script-Type" content="javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
</head>
<body>
<a name="comments" />
<TMPL_IF comments>
<br>
<h4>
<div class="eventlist_kommentarzahl submitted<TMPL_IF comment_count> comments</TMPL_IF>">&#128172; <TMPL_VAR comment_count> <!--Kommentar<TMPL_UNLESS one_comment>e</TMPL_UNLESS>--></div>
<!--
<a href="/agenda/feed_kommentare/" title="Kommentare als Feed abonnieren">
<img src="<TMPL_VAR static_files_url>image/feed.png" style="float:none">
</a>
-->
</h4>
</TMPL_IF>
<TMPL_LOOP comments>
<div class="comment level<TMPL_VAR level>" style="float:clear;" >
<a name="comment_<TMPL_VAR id>" />
<div class="w1"><div class="w2"><div class="w3"><div class="w4">
<div class="content"><TMPL_VAR content escape=0></div>
<div class="comment_meta">
<span class="author"><TMPL_VAR author escape=0></span>,
<span class="date"><TMPL_VAR start_date_name> - <TMPL_VAR start_time_name></span>
<TMPL_IF allow.new_comments>
<div class="kommentare_antwort_link_container">
<a class="kommentare_antwort_link" href="#calcms_add_comment_<TMPL_VAR id>_anchor"
onclick="calcms.showCommentForm('calcms_add_comment_<TMPL_VAR id>','<TMPL_VAR id>','<TMPL_VAR event_id>','<TMPL_VAR event_start>');return false;">antworten</a>
</div>
<div class="antwort_kommentar_input" id="calcms_add_comment_<TMPL_VAR id>">&nbsp;</div>
</TMPL_IF>
</div>
</div></div></div></div>
</div>
<div style="clear:both;"></div>
</TMPL_LOOP>
<TMPL_IF allow.new_comments>
<a href="#comments" class="add_new_comment_link"
onclick="calcms.showCommentForm('calcms_add_comment','','<TMPL_VAR event_id>','<TMPL_VAR event_start>');return false;"
>Neuen Kommentar schreiben</a>
<div>
<div id="calcms_add_comment" style="display:none;visibility:hidden;" >&nbsp;</div>
</div>
</TMPL_IF>
<TMPL_IF allow.new_comments>
<div style="clear:both"></div>
<!-- Button: Reload Page -->
<a class="reload_page" title="Neu laden" id="reload_<TMPL_VAR event_id>" href="#"></a>
<div style="clear:both"></div>
</TMPL_IF>
</body>

View File

@@ -0,0 +1,37 @@
Content-type:application/atom+xml; charset=UTF-8
Access-Control-Allow-Origin: *
<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns='http://www.w3.org/2005/Atom' xmlns:gCal='http://schemas.google.com/gCal/2005'>
<id><TMPL_VAR widget_render_url>comments</id>
<title type='text'><TMPL_VAR project_title> - Kommentare</title>
<updated><TMPL_VAR created_at></updated>
<category term='Radioprogramm'/>
<subtitle type='text'>Das Schaerfste kommentiert noch</subtitle>
<author>
<name><TMPL_VAR project_title></name>
<email>info@radiopiloten.de</email>
</author>
<link rel='alternate' type='text/html' href='<TMPL_VAR widget_render_url>feed_kommentare/'/>
<generator version='0.1' uri='http://radiopiloten.org'>calcms</generator>
<gCal:timezone value='Europe/Berlin'/>
<gCal:timesCleaned value='0'/>
<TMPL_LOOP comments>
<entry>
<id><TMPL_VAR static_files_url><TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#<TMPL_VAR event_uri escape=url><TMPL_VAR id></id>
<published><TMPL_VAR created_at></published>
<updated><TMPL_VAR created_at></updated>
<category term='Kommentar'/>
<TMPL_IF short_content><title type='text'><TMPL_VAR short_content></title></TMPL_IF>
<TMPL_IF content><summary type='text'><TMPL_VAR content></summary></TMPL_IF>
<TMPL_IF content><content type='html'><![CDATA[<TMPL_VAR content>]]></content></TMPL_IF>
<link rel='alternate' type='text/html' href='<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event escape=url>/<TMPL_VAR event_id escape=url>.html#comment_<TMPL_VAR id escape=url>' title='alternate'/>
<link rel='self' type='application/atom+xml' href='<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event escape=url>/<TMPL_VAR event_id escape=url>.html#comment_<TMPL_VAR id escape=url>'/>
<author><name><TMPL_VAR author></name></author>
</entry>
</TMPL_LOOP>
</feed>

View File

@@ -0,0 +1,22 @@
Content-type:text/html; charset=UTF-8;
Access-Control-Allow-Origin: *
<!DOCTYPE html>
<html>
<head>
<title>Neueste Kommentare zu Sendungen - <TMPL_VAR project_title></title>
<meta http-equiv="Content-Script-Type" content="javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
</head>
<body>
<div id="sendungen">
</div>
<TMPL_LOOP comments>
<a id="event_list_id_<TMPL_VAR event_id>" class="click_for_detail" href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#comments">
<div class="comments level<TMPL_VAR level>">
<span class="author"><TMPL_VAR author escape=none></span>:
<span class="content"><TMPL_VAR short_content escape=none></span>
</a>
</div>
</TMPL_LOOP>
</body>

View File

@@ -0,0 +1,2 @@
<TMPL_INCLUDE header.html>

View File

@@ -0,0 +1,46 @@
Content-type:application/atom+xml; charset=UTF-8
Access-Control-Allow-Origin: *
<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns='http://www.w3.org/2005/Atom' xmlns:gCal='http://schemas.google.com/gCal/2005'>
<id><TMPL_VAR widget_render_url></id>
<title type='text'><TMPL_VAR project_title></title>
<updated><TMPL_VAR modified_at></updated>
<category term='<TMPL_VAR location_mapped>'/>
<subtitle type='text'><TMPL_VAR project_subtitle></subtitle>
<author>
<name><TMPL_VAR project_title></name>
<email><TMPL_VAR project_email></email>
</author>
<link rel='alternate' type='text/html' href='<TMPL_VAR source_base_url>'/>
<link rel='self' type='application/atom+xml' href='<TMPL_VAR widget_render_url>/feed/'/>
<generator version='0.1' uri='http://radiopiloten.de'>calcms</generator>
<gCal:timezone value='<TMPL_VAR time_zone>'/>
<gCal:timesCleaned value='0'/>
<TMPL_LOOP events>
<entry>
<id><TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html</id>
<published><TMPL_VAR created_at></published>
<updated><TMPL_VAR modified_at></updated>
<category term='Sendung'/>
<title type='text'><TMPL_VAR weekday_short_name>, <TMPL_VAR start_date_name> - <TMPL_VAR start_time_name> - <TMPL_VAR end_time_name> | <TMPL_VAR full_title></title>
<summary type='text'><TMPL_VAR excerpt></summary>
<content type='html'><![CDATA[<TMPL_VAR weekday_short_name>, <TMPL_VAR start_date_name> - <TMPL_VAR start_time_name> - <TMPL_VAR end_time_name> | <TMPL_VAR full_title><p><TMPL_VAR content_html>]]></content>
<link rel='alternate' type='text/html' href='<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#<TMPL_VAR event_uri escape=url>' title='alternate'/>
<link rel='self' type='application/atom+xml' href='<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#<TMPL_VAR event_uri escape=url>'/>
<TMPL_IF media_url><link rel="enclosure" type="audio/mpeg" href="<TMPL_VAR media_url>"/>
</TMPL_IF>
<TMPL_IF project_title><author>
<name><TMPL_VAR project_title></name>
<email><TMPL_VAR project_email></email>
</author>
</TMPL_IF>
</entry>
</TMPL_LOOP>
</feed>

View File

@@ -0,0 +1,48 @@
Content-Type:text/calendar; charset="UTF-8"
Content-Disposition: attachment; filename="<TMPL_VAR project_title>-programm.ics"
Access-Control-Allow-Origin: *
BEGIN:VCALENDAR
PRODID:-//calcms//DE
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:<TMPL_VAR project_title> Programm (ical)
X-WR-TIMEZONE:<TMPL_VAR time_zone>
X-WR-CALDESC:
BEGIN:VTIMEZONE
TZID:<TMPL_VAR time_zone>
X-LIC-LOCATION:<TMPL_VAR time_zone>
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
END:VTIMEZONE
<TMPL_LOOP NAME=events><TMPL_IF NAME=dtstart>BEGIN:VEVENT
DTSTART;TZID=<TMPL_VAR time_zone>:<TMPL_VAR NAME=dtstart>
<TMPL_IF NAME=dtend>DTEND;TZID=<TMPL_VAR time_zone>:<TMPL_VAR NAME=dtend>
</TMPL_IF>DTSTAMP;TZID=<TMPL_VAR time_zone>:<TMPL_VAR modified_at>
UID:<TMPL_VAR NAME=event_id>
CLASS:PUBLIC
CREATED;TZID=<TMPL_VAR time_zone>:<TMPL_VAR created_at>
DESCRIPTION:<TMPL_VAR NAME=content_ical>
LAST-MODIFIED;TZID=<TMPL_VAR time_zone>:<TMPL_VAR modified_at>
LOCATION:<TMPL_VAR location_mapped>
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:<TMPL_VAR full_title> - coloRadio
URL:<TMPL_VAR base_url><TMPL_VAR .controllers.domain><TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#<TMPL_VAR event_uri>
TRANSP:OPAQUE
CATEGORIES:<TMPL_VAR project_title>
END:VEVENT
</TMPL_IF></TMPL_LOOP>END:VCALENDAR

View File

@@ -0,0 +1,65 @@
Content-type:application/json; charset=UTF-8
Access-Control-Allow-Origin: *
if(typeof(Feed) == 'undefined') Feed = {};
Feed = {
"version" : "1.0",
"encoding" : "UTF-8",
"feed" : {
"xmlns" : "http://www.w3.org/2005/Atom",
"xmlns$openSearch" : "http://a9.com/-/spec/opensearchrss/1.0/",
"id" : { "$t" : "<TMPL_VAR source_base_url>" },
"updated" : { "$t" : "<TMPL_VAR modified_at>" },
"title" : {
"type" : "text",
"$t" : "<TMPL_VAR project_title> Sendeplan>"
},
"subtitle" : {
"type" : "text",
"$t" : "<TMPL_VAR project_subtitle>"
},
"author" : [ {
"name": { "$t" : "<TMPL_VAR project>" },
"email" : { "$t" : "<TMPL_VAR project_email>" }
} ],
"link" : [ {
"rel" : "alternate",
"type" : "text/html",
"href" : "<TMPL_VAR <TMPL_VAR source_base_url>"
} ],
"generator" : {
"version" : "0.1",
"uri" : "<TMPL_VAR <TMPL_VAR source_base_url>>",
"$t" : "calcms"
},
"openSearch$totalResults" : { "$t" : "<TMPL_VAR event_count>" },
<TMPL_LOOP events>
"entry" : [ {
"id" : { "$t" : "<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html/" },
"published" : { "$t": "<TMPL_VAR created_at>" },
"updated" : { "$t": "<TMPL_VAR modified_at>" },
"category" : [ {
"scheme" : "http://www.blogger.com/atom/ns#",
"term" : "Sendung"
} ],
"title" : {
"type" : "text",
"$t" : "<TMPL_VAR weekday_short_name>, <TMPL_VAR start_date_name> - <TMPL_VAR start_time_name> - <TMPL_VAR end_time_name> | <TMPL_VAR full_title>"
},
"link" : [ {
"rel" : "alternate",
"type" : "text/html",
"href" : "<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#<TMPL_VAR event_uri>"
},{
"rel" : "self",
"type" : "application/atom+xml",
"href" : "<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#<TMPL_VAR event_uri>"
} ],
"author" : [ {
"name" : { "$t" : "<TMPL_VAR project_email>" },
"email" : { "$t" : "<TMPL_VAR project_email>" }
} ]
} ]
<TMPL_UNLESS NAME="__last__">,</TMPL_UNLESS>
</TMPL_LOOP>
}}

View File

@@ -0,0 +1,37 @@
Content-type:application/rss+xml; charset=UTF-8
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
<channel>
<atom:link href="http:<TMPL_VAR base_domain><TMPL_VAR widget_render_url>/rss" rel="self" type="application/rss+xml" />
<link>http:<TMPL_VAR base_domain><TMPL_VAR widget_render_url>/event.rss.xml</link>
<title><TMPL_VAR project_title></title>
<description><TMPL_VAR project_subtitle></description>
<language>de-de</language>
<copyright><TMPL_VAR project_title>, <TMPL_VAR project_email></copyright>
<pubDate><TMPL_VAR modified_at></pubDate>
<ttl>3600</ttl>
<image>
<url>http:<TMPL_VAR base_domain>sites/default/files/images/piradio-logo-kreis.preview.gif</url>
<link>http:<TMPL_VAR base_domain><TMPL_VAR widget_render_url>/event.rss.xml</link>
<title><TMPL_VAR project_title></title>
</image>
<TMPL_LOOP events>
<item>
<title><TMPL_VAR weekday_short_name>, <TMPL_VAR start_date_name> - <TMPL_VAR start_time_name> - <TMPL_VAR end_time_name> | <TMPL_VAR full_title></title>
<description><TMPL_VAR excerpt></description>
<link>http:<TMPL_VAR base_domain><TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#<TMPL_VAR event_uri escape=url></link>
<guid>http:<TMPL_VAR base_domain><TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html</guid>
<pubDate><TMPL_VAR modified_at></pubDate>
<comments>http:<TMPL_VAR base_domain><TMPL_VAR cache_base_domain>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#comments</comments>
<media:content url="http:<TMPL_VAR base_domain><TMPL_VAR image_url>" medium="image">
<media:title type="html"><TMPL_VAR full_title></media:title>
</media:content>
</item>
</TMPL_LOOP>
</channel>
</rss>

View File

@@ -0,0 +1,164 @@
Content-type:text/html; charset=utf-8;
<!DOCTYPE html>
<html>
<body>
<TMPL_UNLESS no_result>
<TMPL_UNLESS no_search_result>
<div>
<TMPL_LOOP NAME=events>
<TMPL_IF event_id>
<span class="summary title" title="Mehr Infos zur Sendung" >
<!-- Sendestart -->
<!--<TMPL_VAR start_time_name>-->
<!-- Titel der Sendung -->
<!--<a href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#<TMPL_VAR event_uri escape=url>" >-->
<h1><TMPL_VAR full_title></h1>
<!--</a>-->
<!-- Location -->
<!--<span style="float:right;font-weight:100"><TMPL_IF location_mapped><TMPL_VAR location_mapped></TMPL_IF></span>-->
</span>
<div class="excerpt">
<!--
<TMPL_VAR excerpt> <TMPL_VAR user_excerpt>
<TMPL_IF excerpt>
<hr>
<TMPL_ELSE>
<TMPL_IF user_excerpt>
<hr>
</TMPL_IF>
</TMPL_IF>
-->
<!--
<TMPL_IF no_image_in_text>
<p>
<a href="<TMPL_VAR image_url>">
<img alt="<TMPL_VAR series_name>" src="<TMPL_VAR thumb_url>">
</a>
</p>
</TMPL_IF>
-->
<!-- Sendezeit: Start & Ende -->
<TMPL_IF name="is_first_of_day">
<div class="date">
<TMPL_VAR weekday_short_name>, <TMPL_VAR start_date_name>
<!--<TMPL_IF project_title> - <TMPL_VAR project_title></TMPL_IF>-->
<!-- ICAL EVENT -->
<div class="ical_event">
<a href="<TMPL_VAR .controllers.domain><TMPL_VAR .controllers.ical>/<TMPL_VAR event_id>/<TMPL_IF series_name><TMPL_VAR series_name escape=url>-</TMPL_IF><TMPL_VAR title escape=url>.ics" title="Termin merken"><!--<img width="16" height="16" alt="ICalendar" src="<TMPL_VAR static_files_url>images/ical.png" />-->im Kalender speichern</a>
</div>
</div>
</TMPL_IF>
<div style="clear:both"></div>
<div class="event_time">
<TMPL_VAR start_time_name> <TMPL_IF name="__last__"> - <TMPL_VAR end_time_name></TMPL_IF>
</div>
<TMPL_IF is_running> (l&auml;uft gerade)</TMPL_IF>
<!-- ICAL ALLE SENDUNGEN DES MONATS -->
<div id="icon_bar" style="display:none;">
<a href="<TMPL_VAR .controllers.domain><TMPL_VAR .controllers.ical>/<TMPL_VAR month>/" title="alle Sendungen des Monats merken"><img width="16" height="16" alt="Icalendar" src="<TMPL_VAR static_files_url>images/icals.png" /></a>
</div>
<TMPL_IF recurrence_date><a href="<TMPL_VAR recurrence>.html">Wiederholung vom <TMPL_VAR recurrence_date></a></TMPL_IF>
<div style="clear:both"></div>
<!-- Sendungsbild -->
<TMPL_IF thumb_url>
<img alt="<TMPL_VAR series_name>" src="<TMPL_VAR thumb_url>">
</TMPL_IF>
<!-- Detailierte Beschreibung -->
<div class="detailbeschreibung">
<TMPL_VAR topic ESCAPE=0><TMPL_VAR content ESCAPE=0>
<div>
<!-- is the event live or preproduced : tinyint(1) unsigned -->
<div class="live_or_preproduced" id="is_live_<TMPL_VAR live>">
<TMPL_IF live>
Eine LIVE-Sendung. Das Studiotelefon hat die Nummer 0351 / 32 05 47 11.
<TMPL_ELSE>
Vorproduzierte Sendung, findet nicht live im Studio statt
</TMPL_IF>
</div>
<!-- AUDIO URLS -->
<TMPL_IF media_url>
<a class="playfile" href="<TMPL_VAR media_url>"><img style="width:19px;height:19px;margin-bottom:-3px;margin-left:1px;" src="/agenda/img/player/play-button-64px-D13030.png" alt="playbutton">broadcast audio URL</a><br>
</TMPL_IF>
<!-- Podcast URL : hat die Sendung einen eigenen Podcast? Wenn ja, kann mit dieser URL abonniert werden. -->
<TMPL_IF podcast_url>
<a href="<TMPL_VAR podcast_url>"><img style="width:19px;height:19px;margin-bottom:-3px;margin-left:1px;" src="/agenda/img/player/play-button-64px-D13030.png" alt="playbutton">Podcast der Sendung abonnieren</a><br>
</TMPL_IF>
<!-- Link zum Archiv der Sendung -->
<TMPL_IF archive_url>
<a class="archive_url" href="http:<TMPL_VAR archive_url>" target="_blank"><TMPL_VAR archive_url></a><br>
</TMPL_IF>
<div style="clear:both"></div>
<!-- Permalink -->
<a class="permalink" href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#<TMPL_VAR event_uri escape=url>">Permalink</a>
<div style="clear:both"></div>
</div>
<div id="calcms_comments">
<script>
jQuery(document).ready(
function() {
calcms.showCommentsByEventIdOrEventStart('<TMPL_VAR event_id>','<TMPL_VAR start_datetime>');
}
);
</script>
</div>
</TMPL_IF>
</TMPL_LOOP>
</div>
</TMPL_UNLESS>
</TMPL_UNLESS>
</body>
</html>

View File

@@ -0,0 +1,80 @@
Content-type:text/html; charset=utf-8;
<!DOCTYPE html>
<TMPL_IF extern_access><TMPL_INCLUDE ../index.html>gesucht und gefunden...<TMPL_ELSE>
<html>
<body>
<TMPL_IF no_result>
<div id="is_empty">
<TMPL_IF search>
<TMLP_VAR count> Treffer:
</TMPL_IF>
</div>
</TMPL_IF>
<TMPL_LOOP events>
<div class="vevent">
<span class="dtstart"><TMPL_VAR start></span>
<TMPL_IF NAME=end><span class="dtend"><TMPL_VAR end></span></TMPL_IF>
<span class="location"><TMPL_VAR location_mapped></span>
<div class="date<TMPL_IF is_running> running</TMPL_IF>">
<TMPL_IF is_running> ... Diese Sendung l&auml;uft gerade ...<p></TMPL_IF>
<h1 class="summary title">
<TMPL_IF series_name>
<a href="#" onclick="calcms.showPrevSeriesEvent(<TMPL_VAR event_id>)" title="vorherige Sendung">&laquo;</a><TMPL_VAR series_name><a href="#" onclick="calcms.showNextSeriesEvent(<TMPL_VAR event_id>)" title="n&auml;chste Sendung">&raquo;</a>
</TMPL_IF>
<TMPL_VAR full_title_no_series>
<div style="font-size:1rem">
<TMPL_VAR weekday_name>, <TMPL_VAR start_date_name>,
<span style="font-size:1.5rem"><TMPL_VAR start_time_name></span> bis <TMPL_VAR end_time_name> Uhr
</div>
</h1>
<TMPL_IF program> (<TMPL_VAR program>)</TMPL_IF>
</div>
<div class="content" >
<TMPL_VAR excerpt > <TMPL_VAR user_excerpt >
<TMPL_IF excerpt><hr><TMPL_ELSE><TMPL_IF user_excerpt><hr></TMPL_IF></TMPL_IF>
<TMPL_IF no_image_in_text>
<p>
<a href="<TMPL_VAR image_url>">
<img alt="<TMPL_VAR series_name>" src="<TMPL_VAR thumb_url>">
</a>
</p>
</TMPL_IF>
<TMPL_VAR topic ESCAPE=0><TMPL_VAR content ESCAPE=0>
<TMPL_IF recurrence_date><a href="<TMPL_VAR recurrence>.html">Wiederholung vom <TMPL_VAR recurrence_date></a></TMPL_IF>
<a class="playfile" href="<TMPL_VAR media_url>"><img style="width:19px;height:19px;margin-bottom:-3px;margin-left:1px;" src="/agenda/img/player/play-button-64px-D13030.png" alt="playbutton">broadcast audio URL</a><br>
<a class="playfile" href="<TMPL_VAR podcast_url>"><img style="width:19px;height:19px;margin-bottom:-3px;margin-left:1px;" src="/agenda/img/player/play-button-64px-D13030.png" alt="playbutton">podcast URL</a><br>
<a class="playfile" href="<TMPL_VAR archive_url>"><img style="width:19px;height:19px;margin-bottom:-3px;margin-left:1px;" src="/agenda/img/player/play-button-64px-D13030.png" alt="playbutton">audio archive URL</a><br>
</div>
</div>
<div id="icon_bar" style="display:none;">
<a href="<TMPL_VAR .controllers.domain><TMPL_VAR .controllers.atom>/radio.atom.xml" title="Sendeplan abonnieren - Atom"><img width="16" height="16" alt="Atom Feed" src="<TMPL_VAR static_files_url>image/feed.png" /></a>
<a href="<TMPL_VAR .controllers.domain><TMPL_VAR .controllers.rss>/radio.rss.xml" title="Sendeplan abonnieren - RSS"><img width="16" height="16" alt="RSS Feed" src="<TMPL_VAR static_files_url>image/feed.png" /></a>
<a href="<TMPL_VAR .controllers.domain><TMPL_VAR .controllers.ical>/<TMPL_VAR event_id>/<TMPL_IF series_name><TMPL_VAR series_name escape=url>-</TMPL_IF><TMPL_VAR title escape=url>.ics" title="Termin merken"><img width="16" height="16" alt="ICalendar" src="<TMPL_VAR static_files_url>images/ical.png" /></a>
</div>
<div id="calcms_comments">
<script>
jQuery(document).ready(
function() {
calcms.showCommentsByEventIdOrEventStart('<TMPL_VAR event_id>','<TMPL_VAR start_datetime>');
}
);
</script>
</div>
</TMPL_LOOP>
</TMPL_IF>
</body>
</html>

View File

@@ -0,0 +1,77 @@
Content-type:text/plain; charset=utf-8;
$events=[
<TMPL_LOOP NAME=events>
{
'__last__' => q|<TMPL_VAR __last__>|,
'base_url' => q|<TMPL_VAR base_url>|,
'widget_render_url' => q|<TMPL_VAR widget_render_url>|,
'comment_count' => q|<TMPL_VAR comment_count>|,
'.controllers.event' => q|<TMPL_VAR .controllers.event>|,
'.controllers.events' => q|<TMPL_VAR .controllers.events>|,
'.controllers.calendar' => q|<TMPL_VAR .controllers.calendar>|,
'.controllers.comments' => q|<TMPL_VAR .controllers.comments>|,
'.controllers.domain' => q|<TMPL_VAR .controllers.domain>|,
'.controllers.feed' => q|<TMPL_VAR .controllers.feed>|,
'.controllers.ical' => q|<TMPL_VAR .controllers.ical>|,
'counter_1' => q|<TMPL_VAR counter_1>|,
'created_at' => q|<TMPL_VAR created_at>|,
'day' => q|<TMPL_VAR day>|,
'day_of_year' => q|<TMPL_VAR day_of_year>|,
'dtend' => q|<TMPL_VAR dtend>|,
'dtstart' => q|<TMPL_VAR dtstart>|,
'end_date_name' => q|<TMPL_VAR end_date_name>|,
'end_date' => q|<TMPL_VAR end_date>|,
'end_datetime' => q|<TMPL_VAR end_datetime>|,
'end_time_name' => q|<TMPL_VAR end_time_name>|,
'end_time' => q|<TMPL_VAR end_time>|,
'end' => q|<TMPL_VAR end>|,
'event_id' => q|<TMPL_VAR event_id>|,
'event_uri' => q|<TMPL_VAR event_uri>|,
'excerpt' => q|<TMPL_VAR excerpt>|,
'image' => q|<TMPL_VAR image_url>|,
'is_first_of_day' => q|<TMPL_VAR is_first_of_day>|,
'location_css' => q|<TMPL_VAR location_css>|,
'location' => q|<TMPL_VAR location>|,
'location_mapped' => q|<TMPL_VAR location_mapped>|,
'media_url' => q|<TMPL_VAR media_url>|,
'modified_at' => q|<TMPL_VAR modified_at>|,
'podcast_url' => q|<TMPL_VAR podcast_url>|,
'program' => q|<TMPL_VAR program>|,
'project_label' => q|<TMPL_VAR project_label>|,
'project_title' => q|<TMPL_VAR project_title>|,
'project' => q|<TMPL_VAR project>|,
'rds_title' => q|<TMPL_VAR rds_title>|,
'reference' => q|<TMPL_VAR reference>|,
'recurrence' => q|<TMPL_VAR recurrence>|,
'recurrence_date' => q|<TMPL_VAR recurrence_date>|,
'full_title' => q|<TMPL_VAR full_title>|,
'series_name' => q|<TMPL_VAR series_name>|,
'start_date_name' => q|<TMPL_VAR start_date_name>|,
'start_date' => q|<TMPL_VAR start_date>|,
'start_datetime' => q|<TMPL_VAR start_datetime>|,
'start_time_name' => q|<TMPL_VAR start_time_name>|,
'start_time' => q|<TMPL_VAR start_time>|,
'start_year' => q|<TMPL_VAR start_year>|,
'start_month' => q|<TMPL_VAR start_month>|,
'start_day' => q|<TMPL_VAR start_day>|,
'start_hour' => q|<TMPL_VAR start_hour>|,
'start_minute' => q|<TMPL_VAR start_minute>|,
'start' => q|<TMPL_VAR start>|,
'static_files_url' => q|<TMPL_VAR static_files_url>|,
'title' => q|<TMPL_VAR title>|,
'week_of_year' => q|<TMPL_VAR week_of_year>|,
'weekday_name' => q|<TMPL_VAR weekday_name>|,
'weekday_short_name' => q|<TMPL_VAR weekday_short_name>|,
'weekday' => q|<TMPL_VAR weekday>|,
'time_zone' => q|<TMPL_VAR time_zone>|,
'utc_offset' => q|<TMPL_VAR utc_offset>|,
'start_utc_epoch' => q|<TMPL_VAR start_utc_epoch>|,
'end_utc_epoch' => q|<TMPL_VAR end_utc_epoch>|
}<TMPL_UNLESS __last__>,</TMPL_UNLESS>
</TMPL_LOOP>
];

View File

@@ -0,0 +1,81 @@
Content-type:text/xml; charset=UTF-8
<?xml version="1.0" encoding="UTF-8"?>
<station lastupdate="<TMPL_VAR modified_at_datetime_utc>" xmlns:gml="http://www.opengis.net/gml">
<info>
<displayname>Pi-Radio</displayname>
<fullname>Pi-Radio</fullname>
<logo src="https://piradio.de/agenda/images/logo.jpg" />
<basecolor>#FF6600</basecolor>
<city>Berlin</city>
<studio>
<street>Lottumstrasse</street>
<number>9</number>
<city>Berlin</city>
<zip>10119</zip>
<studio-location>
<gml:Point>
<gml:pos>52.53119 13.4066</gml:pos>
</gml:Point>
</studio-location>
<phone type="studio">+49 030 609 37 277</phone>
</studio>
</info>
<media-channels>
<transmitter type="ukw">
<frequency>88.4</frequency>
<frequencyunit>MHz</frequencyunit>
<city>Berlin</city>
<operator>MediaBroadcast</operator>
<transmit-power>500</transmit-power>
<transmit-power-unit>W</transmit-power-unit>
<transmit-rds-id>88vier</transmit-rds-id>
<transmit-times>
<transmit-time recurrence="true" />
<weekly day="MI" priority="0" time-from="19:00:00" time-to="06:00:00" />
<weekly day="DO" priority="0" time-from="19:00:00" time-to="06:00:00" />
</transmit-times>
<transmitter-location>
<gml:Point>
<gml:pos>52.456534 13.625693</gml:pos>
</gml:Point>
</transmitter-location>
</transmitter>
<webstream>
<transmit-times>
<transmit-time time-from="00:00:00" time-to="23:59:59"/>
</transmit-times>
<url>http://ice.rosebud-media.de:8000/88vier</url>
<format>audio/mpeg</format>
<quality>160kbps</quality>
</webstream>
<website>
<url>https://piradio.de</url>
</website>
</media-channels>
<programme>
<TMPL_LOOP events>
<broadcast id="<TMPL_VAR event_id>">
<title><TMPL_VAR full_title></title>
<description>
<TMPL_VAR excerpt> <TMPL_VAR user_excerpt>
</description>
<categories>
<category name="Wort" id="1" />
<category name="Musik" id="2" />
</categories>
<feed>
<title>Sendebeschreibung</title>
<url>https://piradio.de<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#<TMPL_VAR event_uri escape=url></url>
</feed>
<transmit-times>
<transmit-time date-from="<TMPL_VAR start_datetime_utc>" date-to="<TMPL_VAR end_datetime_utc>" recurrence="false" rerun="<TMPL_IF rerun>true<TMPL_ELSE>false</TMPL_IF>" />
</transmit-times>
</broadcast>
</TMPL_LOOP>
</programme>
</station>

View File

@@ -0,0 +1,30 @@
Content-type:text/html; charset=utf-8;
<TMPL_INCLUDE no_search_result.html>
<div>
<TMPL_LOOP NAME=events>
<TMPL_IF event_id>
<TMPL_IF name="is_first_of_day">
<div class="date">
<TMPL_VAR weekday_short_name>, <TMPL_VAR start_date_name>
</div>
</TMPL_IF>
<div id="event_<TMPL_VAR event_id>" class="event<TMPL_IF location_css> <TMPL_VAR location_css></TMPL_IF><TMPL_IF is_running> running</TMPL_IF>"
>
<span class="summary title" title="Mehr Infos zur Sendung">
<TMPL_VAR start_time_name><TMPL_IF name="__last__"> - <TMPL_VAR end_time_name></TMPL_IF> |
<a id="event_list_id_<TMPL_VAR event_id>" class="click_for_detail" href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#<TMPL_VAR event_uri escape=url>"
><TMPL_VAR full_title></a> <br>
<span class="excerpt">
<TMPL_VAR excerpt> <TMPL_VAR user_excerpt>
</span>
<br>
<TMPL_UNLESS no_comment>
<span class="eventlist_kommentarzahl submitted<TMPL_IF comment_count> comments</TMPL_IF>">&#128172; <TMPL_VAR comment_count> </span>
</TMPL_UNLESS>
<TMPL_IF is_running> (l&auml;uft gerade)</TMPL_IF>
</div>
</TMPL_IF>
</TMPL_LOOP>
</div>

View File

@@ -0,0 +1,40 @@
Content-type:text/html; charset=utf-8;
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Script-Type" content="javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>Agenda <TMPL_VAR project_title></title>
<link type="text/css" rel="stylesheet" media="all" href="/agenda/css/future.css" />
</head>
<body>
<TMPL_LOOP NAME=events>
<TMPL_IF name="is_first_of_day">
<div class="date">
<TMPL_VAR weekday_short_name>, <TMPL_VAR start_date_name><TMPL_IF project_title> - <TMPL_VAR project_title></TMPL_IF>
</div>
</TMPL_IF>
<a href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#<TMPL_VAR event_uri escape=url>" >
<div class="event">
<TMPL_IF event_id>
<div class="header"><TMPL_VAR series_name><br><TMPL_VAR full_title_no_series></div>
<div class="content" style="background-image: url(<TMPL_VAR image_url>)"></div>
<div class="label">
<TMPL_VAR start_time><br/>
<a class="comment" href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#comments"
<span class="submitted"><TMPL_VAR comment_count> Kommentar<TMPL_UNLESS one_comment>e</TMPL_UNLESS></span>
</a>
</div>
</TMPL_IF>
</div>
</a>
</TMPL_LOOP>
</body>
</html>

View File

@@ -0,0 +1,81 @@
Content-type:text/html; charset=UTF-8;
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Cache-control" content="public">
</head>
<body>
<TMPL_IF no_results>
<div id="empty_or_not">
nichts gefunden...
</div>
</TMPL_IF>
<TMPL_LOOP NAME=events>
<TMPL_IF event_id>
<TMPL_IF name="__first__">
<div class="date">
<TMPL_VAR weekday_short_name>, <TMPL_VAR start_date_name>
<!--
<a href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.events>/<TMPL_VAR start_date>.html">
<TMPL_VAR weekday_short_name>, <TMPL_VAR start_date_name>
</a>
-->
</div>
</TMPL_IF>
<div class="scripted">
<a class="zeige_sendungsdetails" id="link_zu_event_<TMPL_VAR event_id>" href="#"
>
<div id="event_menu_<TMPL_VAR event_id>" class="vevent event<TMPL_IF is_running> running</TMPL_IF>"
title="<TMPL_IF program><TMPL_VAR program> - </TMPL_IF><TMPL_IF series_name><TMPL_VAR series_name> - </TMPL_IF><TMPL_VAR title>"
>
<div class="icon">
<TMPL_IF icon><img src="<TMPL_VAR icon_url>" alt="<TMPL_VAR series_name>" />
<TMPL_ELSE><img src="<TMPL_VAR static_files_url>image/event.icon.png" />
</TMPL_IF>
</div>
<div class="title">
<TMPL_VAR start_time_name> <TMPL_VAR series_name><TMPL_UNLESS series_name>kaputt: <TMPL_VAR title></TMPL_UNLESS>&nbsp;
</div>
<span class="dtstart"><TMPL_VAR start></span>
<TMPL_IF NAME=end><span class="dtend"><TMPL_VAR end></span></TMPL_IF>
<span class="location"><TMPL_VAR location_mapped></span>
</div>
</a>
</div>
<noscript>
<a
href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#<TMPL_VAR event_uri escape=url>"
>
<div id="event_menu_<TMPL_VAR event_id>" class="vevent event<TMPL_IF is_running> running</TMPL_IF>"
title="<TMPL_IF program><TMPL_VAR program> - </TMPL_IF><TMPL_IF series_name><TMPL_VAR series_name> - </TMPL_IF><TMPL_VAR title>"
>
<div class="icon">
<TMPL_IF icon><img src="<TMPL_VAR icon_url>" alt="<TMPL_VAR series_name>" />
<TMPL_ELSE><img src="<TMPL_VAR static_files_url>image/event.icon.png" />
</TMPL_IF>
</div>
<div class="title">
<TMPL_VAR start_time_name> <TMPL_VAR series_name><TMPL_UNLESS series_name>kaputt: <TMPL_VAR title></TMPL_UNLESS>&nbsp;
</div>
<span class="dtstart"><TMPL_VAR start></span>
<TMPL_IF NAME=end><span class="dtend"><TMPL_VAR end></span></TMPL_IF>
<span class="location"><TMPL_VAR location_mapped></span>
</div>
</a>
</noscript>
</TMPL_IF>
</TMPL_LOOP>
</body>
</html>

View File

@@ -0,0 +1,32 @@
Content-type:text/plain; charset=utf-8;
$events=[
<TMPL_LOOP NAME=events>
{
'event_id' => q|<TMPL_VAR event_id>|,
'start_date' => q|<TMPL_VAR start_date>|,
'start_datetime' => q|<TMPL_VAR start_datetime>|,
'end_datetime' => q|<TMPL_VAR end_datetime>|,
'weekday_short_name' => q|<TMPL_VAR weekday_short_name>|,
'location' => q|<TMPL_VAR location_mapped>|,
'location_mapped' => q|<TMPL_VAR location_mapped>|,
'image' => q|<TMPL_VAR image_url>|,
'project_title' => q|<TMPL_VAR project_title>|,
'program' => q|<TMPL_VAR program>|,
'series_name' => q|<TMPL_VAR series_name>|,
'title' => q|<TMPL_VAR title>|,
'user_title' => q|<TMPL_VAR user_title>|,
'excerpt' => q|<TMPL_VAR excerpt>|,
'user_excerpt' => q|<TMPL_VAR user_excerpt>|,
'episode' => q|<TMPL_VAR episode>|,
'full_title' => q|<TMPL_VAR full_title>|,
'content' => q|<TMPL_VAR content>|
}<TMPL_UNLESS __last__>,</TMPL_UNLESS>
</TMPL_LOOP>
];
<TMPL_IF asd>
'content' => q$<TMPL_VAR content>$
</TMPL_IF>

View File

@@ -0,0 +1,41 @@
Content-type:text/html; charset=UTF-8;
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Cache-control" content="public">
</head>
<body>
<style>
div.event div.title{
display:grid;
grid-template-columns: 3ch 5ch 1ch 1fr;
}
div.event div.title div{
display:inline;
}
</style>
<TMPL_LOOP NAME=events>
<a href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#<TMPL_VAR event_uri escape=url>"
>
<div id="event_playlist_<TMPL_VAR event_id>" class="event" title="<TMPL_VAR full_title><TMPL_IF excerpt>. <TMPL_VAR excerpt escape=url></TMPL_IF>">
<TMPL_COMMENT>
<div class="icon">
<img src="<TMPL_VAR icon_url>"></img>
</div>
</TMPL_COMMENT>
<div class="title">
<div><TMPL_VAR weekday_short_name></div>
<div><TMPL_VAR start_time_name></div>
<div>-</div>
<div><TMPL_IF series_name><TMPL_VAR series_name><TMPL_ELSE><TMPL_VAR title></TMPL_IF></div>
</div>
</div>
</a>
</TMPL_LOOP>
</body>
</html>

View File

@@ -0,0 +1,5 @@
Content-type:text/plain; charset=UTF-8;
Access-Control-Allow-Origin: *
<TMPL_IF no_result>Andere Veranstalter</TMPL_IF><TMPL_LOOP NAME=events><a href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#<TMPL_VAR event_uri>" ><TMPL_VAR full_title></a></TMPL_LOOP>

View File

@@ -0,0 +1,155 @@
Content-type:text/html; charset=UTF-8;
Access-Control-Allow-Origin: *
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Cache-control" content="public">
<meta http-equiv="Content-Script-Type" content="javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>Playlist <TMPL_VAR project_title></title>
<script>
/**
* @fileoverview dragscroll - scroll area by dragging
* @version 0.0.8
*
* @license MIT, see http://github.com/asvd/dragscroll
* @copyright 2015 asvd <heliosframework@gmail.com>
*/
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define(['exports'], factory);
} else if (typeof exports !== 'undefined') {
factory(exports);
} else {
factory((root.dragscroll = {}));
}
}(this, function (exports) {
var _window = window;
var _document = document;
var mousemove = 'mousemove';
var mouseup = 'mouseup';
var mousedown = 'mousedown';
var EventListener = 'EventListener';
var addEventListener = 'add'+EventListener;
var removeEventListener = 'remove'+EventListener;
var newScrollX, newScrollY;
var dragged = [];
var reset = function(i, el) {
for (i = 0; i < dragged.length;) {
el = dragged[i++];
el = el.container || el;
el[removeEventListener](mousedown, el.md, 0);
_window[removeEventListener](mouseup, el.mu, 0);
_window[removeEventListener](mousemove, el.mm, 0);
}
// cloning into array since HTMLCollection is updated dynamically
dragged = [].slice.call(_document.getElementsByClassName('dragscroll'));
for (i = 0; i < dragged.length;) {
(function(el, lastClientX, lastClientY, pushed, scroller, cont){
(cont = el.container || el)[addEventListener](
mousedown,
cont.md = function(e) {
if (!el.hasAttribute('nochilddrag') ||
_document.elementFromPoint(
e.pageX, e.pageY
) == cont
) {
pushed = 1;
lastClientX = e.clientX;
lastClientY = e.clientY;
e.preventDefault();
}
}, 0
);
_window[addEventListener](
mouseup, cont.mu = function() {pushed = 0;}, 0
);
_window[addEventListener](
mousemove,
cont.mm = function(e) {
if (pushed) {
(scroller = el.scroller||el).scrollLeft -=
newScrollX = (- lastClientX + (lastClientX=e.clientX));
scroller.scrollTop -=
newScrollY = (- lastClientY + (lastClientY=e.clientY));
if (el == _document.body) {
(scroller = _document.documentElement).scrollLeft -= newScrollX;
scroller.scrollTop -= newScrollY;
}
}
}, 0
);
})(dragged[i++]);
}
}
if (_document.readyState == 'complete') {
reset();
} else {
_window[addEventListener]('load', reset, 0);
}
exports.reset = reset;
}));
</script>
</head>
<body>
<div id="playlist_container" class="_dragscroll">
Playlist Long <br><br>
<TMPL_LOOP NAME=events>
<a class="playlist_long_event_detail" href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#<TMPL_VAR event_uri escape=url>" >
<div id="event_playlist_<TMPL_VAR event_id>" class="eventContainer event">
<div class="top" title="<TMPL_VAR full_title><TMPL_IF excerpt>. <TMPL_VAR excerpt></TMPL_IF>">
<TMPL_VAR weekday_short_name> <TMPL_VAR start_time_name>
</div>
<div class="bottom">
<TMPL_IF series_name><TMPL_VAR series_name><TMPL_ELSE><TMPL_VAR title></TMPL_IF>
</div>
</div>
</a>
<div class="scripted" style="display:none;">
<a class="zeige_sendungsdetails_playlist_long playlist_long_event_detail" id="link_zu_event_<TMPL_VAR event_id>" href="#">
<div id="event_playlist_<TMPL_VAR event_id>" class="eventContainer event">
<div class="top" title="<TMPL_VAR full_title><TMPL_IF excerpt>. <TMPL_VAR excerpt></TMPL_IF>">
<TMPL_VAR weekday_short_name> <TMPL_VAR start_time_name>
</div>
<div class="bottom">
<TMPL_IF series_name><TMPL_VAR series_name><TMPL_ELSE><TMPL_VAR title></TMPL_IF>
</div>
</div>
</a>
</div>
<noscript>
<a class="playlist_long_event_detail" href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#<TMPL_VAR event_uri escape=url>" >
<div id="event_playlist_<TMPL_VAR event_id>" class="eventContainer event">
<div class="top" title="<TMPL_VAR full_title><TMPL_IF excerpt>. <TMPL_VAR excerpt></TMPL_IF>">
<TMPL_VAR weekday_short_name> <TMPL_VAR start_time_name>
</div>
<div class="bottom">
<TMPL_IF series_name><TMPL_VAR series_name><TMPL_ELSE><TMPL_VAR title></TMPL_IF>
</div>
</div>
</a>
</noscript>
</TMPL_LOOP>
</div>
</body>
</html>

View File

@@ -0,0 +1,35 @@
Content-type:text/html; charset=UTF-8;
Access-Control-Allow-Origin: *
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Cache-control" content="public">
<meta http-equiv="Content-Script-Type" content="javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>Playlist <TMPL_VAR project_title></title>
<style type="text/css">
.vevent a {font-size:0.8em;line-height:120%;text-decoration:none;color:#444;Verdana,sans-serif};
.vevent .event {font-size:0.8em;line-height:120%;text-decoration:none;color:#444;Verdana,sans-serif};
.vevent a:hover {text-decoration:underline;}
</style>
</head>
<body>
<TMPL_LOOP NAME=events>
<div id="event_<TMPL_VAR event_id>" class="event">
<div class="event" >
<TMPL_VAR weekday_short_name> <TMPL_VAR start_time_name>
<span class="title" title="<TMPL_VAR full_title escape=url>, <TMPL_VAR excerpt escape=url>">
<a target="top"
href="<TMPL_VAR base_url><TMPL_VAR .controllers.event>/<TMPL_VAR event_id>/<TMPL_VAR event_uri escape=url>"
>
<TMPL_IF series_name><TMPL_VAR series_name><TMPL_ELSE><TMPL_VAR title></TMPL_IF>
</a>
</span>
</div>
</div>
</TMPL_LOOP>
</body>
</html>

View File

@@ -0,0 +1 @@
<TMPL_LOOP NAME=events><TMPL_IF __first__><TMPL_VAR full_title> : <TMPL_IF podcast_url><TMPL_VAR podcast_url><ELSE><TMPL_IF media_url><TMPL_VAR media_url><ELSE><TMPL_IF excerpt><TMPL_VAR excerpt></TMPL_IF></TMPL_IF></TMPL_IF></TMPL_IF></TMPL_LOOP>

View File

@@ -0,0 +1,164 @@
Content-type:text/html; charset=utf-8;
<!DOCTYPE html>
<html>
<body>
<TMPL_UNLESS no_result>
<TMPL_UNLESS no_search_result>
<div>
<TMPL_LOOP NAME=events>
<TMPL_IF event_id>
<span class="summary title" title="Mehr Infos zur Sendung" >
<!-- Sendestart -->
<!--<TMPL_VAR start_time_name>-->
<!-- Titel der Sendung -->
<!--<a href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#<TMPL_VAR event_uri escape=url>" >-->
<h1><TMPL_VAR full_title></h1>
<!--</a>-->
<!-- Location -->
<!--<span style="float:right;font-weight:100"><TMPL_IF location_mapped><TMPL_VAR location_mapped></TMPL_IF></span>-->
</span>
<div class="excerpt">
<!--
<TMPL_VAR excerpt> <TMPL_VAR user_excerpt>
<TMPL_IF excerpt>
<hr>
<TMPL_ELSE>
<TMPL_IF user_excerpt>
<hr>
</TMPL_IF>
</TMPL_IF>
-->
<!--
<TMPL_IF no_image_in_text>
<p>
<a href="<TMPL_VAR image_url>">
<img alt="<TMPL_VAR series_name>" src="<TMPL_VAR thumb_url>">
</a>
</p>
</TMPL_IF>
-->
<!-- Sendezeit: Start & Ende -->
<TMPL_IF name="is_first_of_day">
<div class="date">
<TMPL_VAR weekday_short_name>, <TMPL_VAR start_date_name>
<!--<TMPL_IF project_title> - <TMPL_VAR project_title></TMPL_IF>-->
<!-- ICAL EVENT -->
<div class="ical_event">
<a href="<TMPL_VAR .controllers.domain><TMPL_VAR .controllers.ical>/<TMPL_VAR event_id>/<TMPL_VAR full_title escape=hyphen>.ics" title="Termin merken"><!--<img width="16" height="16" alt="ICalendar" src="<TMPL_VAR static_files_url>images/ical.png" />-->im Kalender speichern</a>
</div>
</div>
</TMPL_IF>
<div style="clear:both"></div>
<div class="event_time">
<TMPL_VAR start_time_name> <TMPL_IF name="__last__"> - <TMPL_VAR end_time_name></TMPL_IF>
</div>
<TMPL_IF is_running> <!-- (l&auml;uft gerade) --> </TMPL_IF>
<!-- ICAL ALLE SENDUNGEN DES MONATS -->
<div id="icon_bar" style="display:none;">
<a href="<TMPL_VAR .controllers.domain><TMPL_VAR .controllers.ical>/<TMPL_VAR month>/" title="alle Sendungen des Monats merken"><img width="16" height="16" alt="Icalendar" src="<TMPL_VAR static_files_url>images/icals.png" /></a>
</div>
<TMPL_IF recurrence_date><a href="<TMPL_VAR recurrence>.html">Wiederholung vom <TMPL_VAR recurrence_date></a></TMPL_IF>
<div style="clear:both"></div>
<!-- Sendungsbild -->
<TMPL_IF thumb_url>
<img alt="<TMPL_VAR series_name>" src="<TMPL_VAR thumb_url>">
</TMPL_IF>
<!-- Detailierte Beschreibung -->
<div class="detailbeschreibung">
<TMPL_VAR topic ESCAPE=0><TMPL_VAR content ESCAPE=0>
<div>
<!-- is the event live or preproduced : tinyint(1) unsigned -->
<div class="live_or_preproduced" id="is_live_<TMPL_VAR live>">
<TMPL_IF live>
Eine LIVE-Sendung. Das Studiotelefon hat die Nummer 0351 / 32 05 47 11.
<TMPL_ELSE>
<!-- (vorproduzierte Sendung) Sendung findet nicht live im Studio statt -->
</TMPL_IF>
</div>
<!-- AUDIO URLS -->
<TMPL_IF media_url>
<a class="playfile" href="<TMPL_VAR media_url>"><img style="width:19px;height:19px;margin-bottom:-3px;margin-left:1px;" src="/agenda/img/player/play-button-64px-D13030.png" alt="playbutton">broadcast audio URL</a><br>
</TMPL_IF>
<!-- Podcast URL : hat die Sendung einen eigenen Podcast? Wenn ja, kann mit dieser URL abonniert werden. -->
<TMPL_IF podcast_url>
<a href="<TMPL_VAR podcast_url>"><img style="width:19px;height:19px;margin-bottom:-3px;margin-left:1px;" src="/agenda/img/player/play-button-64px-D13030.png" alt="playbutton">Podcast der Sendung abonnieren</a><br>
</TMPL_IF>
<!-- Link zum Archiv der Sendung --- wird evtl. Mitschnitt-URL -->
<TMPL_IF archive_url>
<a class="archive_url" href="http:<TMPL_VAR archive_url>" target="_blank"><TMPL_VAR archive_url></a><br>
</TMPL_IF>
<div style="clear:both"></div>
<!-- Permalink -->
<!--<a class="permalink" href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#<TMPL_VAR event_uri escape=url>">Permalink</a>-->
<!--<div style="clear:both"></div>-->
</div>
<div id="calcms_comments">
<script>
jQuery(document).ready(
function() {
calcms.showCommentsByEventIdOrEventStart('<TMPL_VAR event_id>','<TMPL_VAR start_datetime>');
}
);
</script>
</div>
</TMPL_IF>
</TMPL_LOOP>
</div>
</TMPL_UNLESS>
</TMPL_UNLESS>
</body>
</html>

View File

@@ -0,0 +1,3 @@
Content-type:text/plain; charset=UTF-8;
<TMPL_LOOP NAME=events><TMPL_IF __first__><TMPL_VAR rds_title></TMPL_IF></TMPL_LOOP>

View File

@@ -0,0 +1,89 @@
Content-type:text/html; charset=UTF-8;
Access-Control-Allow-Origin: *
<!DOCTYPE html>
<html>
<body>
<TMPL_IF no_result>
<!--
<script>
jQuery( document ).ready(function() {
//load next shows into current playlist
if(jQuery('#coming_shows').length!=0){
jQuery('#coming_shows').load('/agenda/playlistLong/');
}
//hide next shows
if(jQuery('#calcms_playlist').length!=0) jQuery('#calcms_playlist').parent().parent().hide();
});
</script>
<style>
#coming_shows{
width:100%;
height:110px;
overflow:hidden;
}
</style>
-->
<!--
<div class="content" style="clear:both">
<h1 class="summary title">
<TMPL_VAR events_title>
</h1>
<br>
<TMPL_VAR events_description>
<div id="coming_shows"></div>
<a href="/agenda/programm.html">
Programmplan
</a>
<TMPL_IF search>
<TMLP_VAR count> Treffer:
</TMPL_IF>
</div>
-->
</TMPL_IF>
<TMPL_LOOP events>
<p>
<div class="event">
<TMPL_IF event_id>
<div class="date<TMPL_IF is_running> running</TMPL_IF>">
<p>
<h1 class="summary title">
Aktuelle Sendung: <a href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#<TMPL_VAR event_uri escape=url>">
<TMPL_VAR full_title>
</a>
</h1>
<span class="submitted"><TMPL_VAR weekday_name>, <TMPL_VAR start_date_name> -
<TMPL_VAR start_time_name> bis <TMPL_VAR end_time_name> Uhr <TMPL_IF program>(<TMPL_VAR program>)</TMPL_IF></span><br />
</div>
<div class="content" >
<TMPL_COMMENT>
<div class="image-attach-teaser" style="width: 150px;">
<a href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#<TMPL_VAR event_uri escape=url>">
<img class="image image-thumbnail" src="<TMPL_VAR image_url>" width="150" height="150" />
</a>
</div>
</TMPL_COMMENT>
<TMPL_VAR excerpt >
</div>
<a href="<TMPL_VAR widget_render_url>/<TMPL_VAR .controllers.event>/<TMPL_VAR event_id>.html#comments">
<span><TMPL_VAR comment_count> Kommentar<TMPL_UNLESS one_comment>e</TMPL_UNLESS></span>
</a>
</div>
</p>
<TMPL_UNLESS __last__><hr /></TMPL_UNLESS>
</TMPL_IF>
</TMPL_LOOP>
<!--end of content -->
</body>
</html>

View File

@@ -0,0 +1 @@
Content-type:text/html; charset=UTF-8;<TMPL_LOOP events><TMPL_IF event_id>1<TMPL_VAR event_id></TMPL_IF></TMPL_LOOP>

View File

@@ -0,0 +1,13 @@
Content-type:application/json; charset=utf-8;
Access-Control-Allow-Origin: *
{
"events" : [
<TMPL_LOOP NAME=events>{
"start" : "<TMPL_VAR start_utc_epoch>"
,"end" : "<TMPL_VAR end_utc_epoch>"
<TMPL_IF series_name> ,"series_name" : "<TMPL_VAR series_name>"</TMPL_IF>
<TMPL_IF title> ,"title" : "<TMPL_VAR title>"</TMPL_IF>
}<TMPL_UNLESS __last__>,</TMPL_UNLESS></TMPL_LOOP>
]
}

View File

@@ -0,0 +1,4 @@
Content-type:text/plain; charset=utf-8;
<TMPL_LOOP NAME=events><TMPL_VAR start_utc_epoch> <TMPL_VAR end_utc_epoch> <TMPL_VAR full_title>
</TMPL_LOOP>

View File

@@ -0,0 +1,4 @@
Content-type:application/json; charset=UTF-8
Access-Control-Allow-Origin: *
("events" : [<TMPL_LOOP events>"event":{"id" : "<TMPL_VAR event_id>"}<TMPL_UNLESS NAME="__last__">,</TMPL_UNLESS></TMPL_LOOP>])

View File

@@ -0,0 +1,19 @@
Content-type:application/json; charset=UTF-8
Access-Control-Allow-Origin: *
"events" : {
<TMPL_LOOP events>
"event" : [ {
"id" : "<TMPL_VAR event_id>",
"program" : "<TMPL_VAR program>",
"series" : "<TMPL_VAR series_name>",
"title" : "<TMPL_VAR title>",
"start" : "<TMPL_VAR start_date> <TMPL_VAR start_time>:00",
"end" : "<TMPL_VAR end_date> <TMPL_VAR end_time>:00",
"location" : "<TMPL_VAR location>",
"published" : "<TMPL_VAR created_at>",
"updated" : "<TMPL_VAR modified_at>",
} ]
<TMPL_UNLESS NAME="__last__">,</TMPL_UNLESS>
</TMPL_LOOP>
}

View File

@@ -0,0 +1,51 @@
Content-type:text/html; charset=UTF-8;
<!DOCTYPE html>
<html>
<head>
<title><TMPL_VAR project_title>: Admin - <TMPL_VAR user></title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Script-Type" content="javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<TMPL_IF meta><TMPL_LOOP meta><TMPL_VAR data/></TMPL_LOOP></TMPL_IF>
<link rel="stylesheet" href="<TMPL_VAR static_files_url>/css/calcms.css" type="text/css" />
<style>
form{
border:0;
padding:0;
margin:0;
};
table{
margin:1;
};
div,td,tr,table{
vertical-align:middle;
};
</style>
</head>
<body>
<div>
<a href="/"><img src="<TMPL_VAR static_files_url>/image/logo.png" alt="programm" /></a>
</div>
<TMPL_IF action_result>
<div class="ok head">
<TMPL_VAR action_result>
</div>
</TMPL_IF>
<div id="javascript_enabled">
<TMPL_IF error>
<div class="error head">
<TMPL_VAR error>
</div>
<TMPL_ELSE>
<div>
<TMPL_VAR subheader>
</div>
</TMPL_IF>

View File

@@ -0,0 +1,26 @@
<TMPL_IF no_result>
<div id="empty_or_not">
<script>
jQuery( document ).ready(function() {
//load next shows into current playlist
if(jQuery('#sendungen').length!=0) jQuery('#sendungen').load('/agenda/playlistLong/');
//hide next shows
// if(jQuery('#calcms_playlist').length!=0) jQuery('#calcms_playlist').parent().parent().hide();
//hide programm menu
// if(jQuery('#calcms_menu').length!=0) jQuery('#calcms_menu').parent().parent().hide();
});
</script>
<div class="content" style="clear:both"><TMPL_VAR no_result_message escape="none"></div>
<h3 class="summary title">Kommende Sendungen</h3>
<div id="coming_shows"></div>
</div>
</TMPL_IF>

View File

@@ -0,0 +1,9 @@
<TMPL_IF no_search_result>
<div class="content">
Keine Sendung gefunden.
</div>
</TMPL_IF>
<!--<TMPL_IF event_count><TMPL_VAR event_count> Treffer</TMPL_IF>-->

View File

@@ -0,0 +1 @@
<TMPL_LOOP NAME=events><TMPL_IF __first__><TMPL_VAR full_title> : <TMPL_IF podcast_url><TMPL_VAR podcast_url><ELSE><TMPL_IF media_url><TMPL_VAR media_url><ELSE><TMPL_IF excerpt><TMPL_VAR excerpt></TMPL_IF></TMPL_IF></TMPL_IF></TMPL_IF></TMPL_LOOP>

View File

@@ -0,0 +1,33 @@
Content-type:text/html; charset=UTF-8;
Access-Control-Allow-Origin: *
<!DOCTYPE html>
<html>
<body>
<TMPL_IF projects>
<form id="calcmsSeriesNamesForm" name="calcms_series_name">
<TMPL_LOOP projects>
<TMPL_UNLESS isEmpty>
<select
id="calcms_series_name_<TMPL_VAR js_name escape=none>"
name="series_name_<TMPL_VAR js_name escape=none>"
title="Sendereihen durchsuchen"
onchange="calcms.selectSeries('<TMPL_VAR name escape=js>', jQuery(this).val())"
style="display:none;"
>
<option value="">- Sendereihe ausw&auml;hlen -</option>
<TMPL_LOOP series_names><option value="<TMPL_VAR series_name escape=none>"<TMPL_VAR selected escape=none>><TMPL_VAR series_name> (<TMPL_VAR sum>)</option>
</TMPL_LOOP>
</select>
</TMPL_UNLESS>
</TMPL_LOOP>
</form>
</TMPL_IF>
</body>
</html>

View File

@@ -0,0 +1,7 @@
Content-type:application/json; charset=UTF-8;
Access-Control-Allow-Origin: *
[
<TMPL_LOOP name=projects><TMPL_LOOP name=series_names>{"id":"<TMPL_VAR series_name>", "label":"<TMPL_VAR series_name>", "value":"<TMPL_VAR series_name>"} <TMPL_UNLESS last>,</TMPL_UNLESS>
</TMPL_LOOP></TMPL_LOOP>
]

View File

@@ -1,7 +1,2 @@
Options -Indexes +FollowSymLinks +MultiViews -ExecCGI
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 5 minutes"
</IfModule>
Require all granted

View File

@@ -1,2 +0,0 @@
# racalmas
radio calendar management system

View File

@@ -1,7 +1,2 @@
Options -Indexes +FollowSymLinks +MultiViews -ExecCGI
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 5 minutes"
</IfModule>
Require all granted

View File

@@ -1,2 +0,0 @@
# racalmas
radio calendar management system

View File

@@ -1,7 +1,2 @@
Options -Indexes +FollowSymLinks +MultiViews -ExecCGI
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 5 minutes"
</IfModule>
Require all granted

View File

@@ -1,2 +0,0 @@
# racalmas
radio calendar management system

View File

@@ -1,2 +0,0 @@
# racalmas
radio calendar management system

View File

@@ -1,6 +1,8 @@
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /programm
RewriteRule ^sendung/(\d+)\.html[\?]?(.*)$ /programm/#$1 [L,R=301,NE]
RewriteRule ^kalender/(\d{4}-\d{2}-\d{2})_(\d{4}-\d{2}-\d{2})\.html[\?]?(.*)$ /agenda/aggregate.cgi?from_date=$1&till_date=$2&$3 [L]
RewriteRule ^kalender/(\d{4}-\d{2}-\d{2})\.html[\?]?(.*)$ /agenda/aggregate.cgi?date=$1&$2 [L]
RewriteRule ^sendungen/(\d{4}-\d{2}-\d{2})\.html[\?]?(.*)$ /agenda/aggregate.cgi?date=$1&$2 [L]

View File

@@ -1,3 +1,2 @@
Options -Indexes +FollowSymLinks +MultiViews -ExecCGI
Require all granted