1# -*- perl -*-
2
3#
4# Author: Slaven Rezic
5#
6# Copyright (C) 2003,2004,2005,2006,2008,2009,2010,2011,2012 Slaven Rezic. All rights reserved.
7# This program is free software; you can redistribute it and/or
8# modify it under the same terms as Perl itself.
9#
10# Mail: eserte@users.sourceforge.net
11# WWW:  http://bbbike.sourceforge.net
12#
13
14######################################################################
15#
16# Teaser for bbbike.cgi
17#
18sub teaser {
19    my %teasers_optional;
20    my %teasers_mandatory;
21
22    $teasers_optional{"de"}  = [
23				'teaser_link',
24				#'teaser_collecting_tracks',
25			       ];
26    $teasers_mandatory{"de"} = [
27				#teaser_maintenance(), # schaltet sich selbstst�ndig ab
28				#teaser_sternfahrt_adfc(), # schaltet sich selbstst�ndig ab
29				teaser_kreisfahrt_adfc(), # schaltet sich selbstst�ndig ab
30				teaser_android0(),
31				(1 ? teaser_perltk_newrelease() : teaser_perltk()),
32				#teaser_other_cities(),
33				teaser_other_cities_tagcloud(),
34				teaser_beta(),
35				#teaser_mapserver(),
36				#teaser_fahrradstadt(),
37				#_teaser_is_iphone() ? teaser_iphone() : (),
38				teaser_twitter(),
39			       ];
40    $teasers_optional{"en"} = [],
41    $teasers_mandatory{"en"} = [
42				#teaser_maintenance(), # schaltet sich selbstst�ndig ab
43				#teaser_sternfahrt_adfc(), # schaltet sich selbstst�ndig ab
44				teaser_kreisfahrt_adfc(), # schaltet sich selbstst�ndig ab
45				teaser_android0(),
46				(1 ? teaser_perltk_newrelease() : teaser_perltk()),
47				#teaser_other_cities(),
48				teaser_other_cities_tagcloud(),
49				#teaser_beta(), # XXX There's no beta version in English yet!
50				#teaser_mapserver(),
51				#_teaser_is_iphone() ? teaser_iphone() : (),
52				teaser_twitter(),
53			       ];
54
55    my $use_lang = $lang eq 'en' ? "en" : "de";
56    my $teaser_optional = $teasers_optional{$use_lang}->[int(rand(@{$teasers_optional{$use_lang}}))];
57    my $t;
58    if ($teaser_optional) {
59	my $sub = $teaser_optional;
60	$t = eval $sub . '()';
61    }
62    join("",
63	 map {
64	     '<div class="teaserbox">' . $_ . '</div>'
65	 } (@{ $teasers_mandatory{$use_lang} },
66	    defined $t ? $t : (),
67	   )
68	);
69}
70
71sub teaser_sternfahrt_adfc {
72    my $year = (localtime)[5]+1900;
73    my @l = localtime; $l[4]++;$l[5]+=1900;
74    my $today = sprintf "%04d%02d%02d", $l[5], $l[4], $l[3];
75    my $out_of_date = $today gt "20120603";
76    if (!$out_of_date) {
77	my $url = "http://www.adfc-berlin.de/aktionenprojekte/sternfahrt/sternfahrt-2012/1159-sternfahrt-2012.html";
78	<<EOF
79<div class="teaser" style="font-size:larger;"><a href="$url"><b>Sternfahrt ${year}</b></a> am 3.�Juni�$year</div>
80EOF
81    } else {
82	();
83    }
84}
85
86sub teaser_kreisfahrt_adfc {
87    my $year = (localtime)[5]+1900;
88    my @l = localtime; $l[4]++;$l[5]+=1900;
89    my $today = sprintf "%04d%02d%02d", $l[5], $l[4], $l[3];
90    my $out_of_date = $today lt "20120910" || $today gt "20120922";
91    if (!$out_of_date) {
92	my $adfc_url    = "http://www.adfc-berlin.de/aktionenprojekte/kreisfahrt/kreisfahrt-2012.html";
93	my $kreisfahrt_img = "/BBBike/misc/kreisfahrt_anyyear/kreisfahrt_anyyear.png";
94	<<EOF
95<div class="teaser"><a style="text-decoration:none;" href="$adfc_url"><img src="$kreisfahrt_img" alt="ADFC-Kreisfahrt ${year}" border="0"" /></a> am 22.�September�$year</div>
96EOF
97    } else {
98	();
99    }
100}
101
102sub teaser_perltk_newrelease {
103    if ($lang eq 'en') {
104	my $download_link = "$BBBike::BBBIKE_SF_WWW/downloads.en.html";
105    	<<EOF;
106<div class="teaser"><a href="@{[ CGI::escapeHTML($download_link) ]}">Download</a> the offline version of BBBike (Perl/Tk) with interactive map. Runs on Linux, Un*x, Mac�OS�X and Windows.<br /><a href="@{[ CGI::escapeHTML($download_link) ]}" class="new" style="font-weight:bold;">NEW: preview version 3.18 for Windows</a></div>
107EOF
108} else {
109	my $download_link = "$BBBike::BBBIKE_SF_WWW/downloads.de.html";
110	<<EOF;
111<div class="teaser"><a href="@{[ CGI::escapeHTML($download_link) ]}">Download</a> der Offline-Version von BBBike (Perl/Tk) mit interaktiver Karte. L�uft auf Linux, Un*x, Mac�OS�X und Windows.<br /><a class="new" href="@{[ CGI::escapeHTML($download_link) ]}" style="font-weight:bold;">NEU: Vorabversion 3.18 f�r Windows</a></div>
112EOF
113    }
114}
115
116sub teaser_perltk {
117    if ($lang eq 'en') {
118    	<<EOF;
119<div class="teaser"><a href="@{[ CGI::escapeHTML($BBBike::BBBIKE_SF_WWW) ]}/downloads.en.html">Download</a> the offline version of BBBike (Perl/Tk) with interactive map. Runs on Linux, Un*x, Mac�OS�X and Windows.</div>
120EOF
121    } else {
122	<<EOF;
123<div class="teaser"><a href="@{[ CGI::escapeHTML($BBBike::BBBIKE_SF_WWW) ]}/downloads.de.html">Download</a> der Offline-Version von BBBike (Perl/Tk) mit interaktiver Karte. L�uft auf Linux, Un*x, Mac�OS�X und Windows.</div>
124EOF
125    }
126}
127
128sub teaser_none { "" }
129
130sub teaser_collecting_tracks {
131    <<EOF;
132<div class="teaser">Ich sammele GPS-Tracks von Berlin und Brandenburg. Bitte per Mail an <a target="_top" href="mailto:@{[ CGI::escapeHTML($BBBike::EMAIL) ]}?subject=BBBike-GPS">Slaven Rezic</a> schicken.</div>
133EOF
134}
135
136sub teaser_link {
137    <<EOF;
138<div class="teaser"><a href="$bbbike_url?info=1#link">Link auf BBBike setzen</a></div>
139EOF
140}
141
142sub teaser_twitter {
143    my $twitter_url = "http://twitter.com/BBBikeDE/";
144    my $twitter_img = "$bbbike_images/logo_twitter_withbird_60_allblack.png";
145    my $teaser;
146    if (0) { # purely textual
147	if ($lang eq 'en') {
148	    $teaser = <<EOF;
149<div class="teaser"><a href="$twitter_url">BBBikeDE @ Twitter</a></div>
150EOF
151	} else {
152	    $teaser = <<EOF;
153<div class="teaser"><a href="$twitter_url">BBBikeDE bei Twitter</a></div>
154EOF
155	}
156    } else { # graphical
157	if ($lang eq 'en') {
158	    $teaser = <<EOF;
159<div class="teaser"><a href="$twitter_url">BBBikeDE @ <img border="0" src="$twitter_img" alt="Twitter" /></a></div>
160EOF
161	} else {
162	    $teaser = <<EOF;
163<div class="teaser"><a href="$twitter_url">BBBikeDE bei <img border="0" src="$twitter_img" alt="Twitter" /></a></div>
164EOF
165	}
166    }
167    $teaser;
168}
169
170sub teaser_mapserver {
171    my $mapserver_url;
172    if ($can_mapserver) {
173        $mapserver_url = "$bbbike_script?mapserver=1";
174    } elsif (defined $mapserver_init_url) {
175        $mapserver_url = $mapserver_init_url;
176    }
177    return undef if !$mapserver_url;
178    if ($lang eq 'en') {
179	<<EOF;
180<div class="teaser">The BBBike map data visualized with <a href="@{[ CGI::escapeHTML($mapserver_url) ]}">Mapserver</a>.</div>
181EOF
182    } else {
183	<<EOF;
184<div class="teaser">Die BBBike-Kartendaten mit <a href="@{[ CGI::escapeHTML($mapserver_url) ]}">Mapserver</a> visualisiert.</div>
185EOF
186    }
187}
188
189sub teaser_beta {
190    if (!$is_beta) {
191	if ($lang eq 'en') {
192	    return ();
193	    # XXX There's no beta version in English yet!
194	    <<EOF;
195<div class="teaser">What's new in the <a href="$bbbike_url?info=1#beta" style="font-weight:normal;">next version</a> of www.bbbike.de?</div>
196EOF
197	} else {
198	    <<EOF;
199<div class="teaser">Was gibt es in der <a href="$bbbike_url?info=1#beta" style="font-weight:normal;">n�chsten Version</a> von www.bbbike.de?<br></div>
200EOF
201	}
202    } else {
203	();
204    }
205}
206
207sub teaser_fahrradstadt {
208    my @l = localtime; $l[4]++;$l[5]+=1900;
209    my $out_of_date = $l[5]>=2009 || $l[4]>=5;
210    if (!$out_of_date) {
211	<<EOF;
212<div class="teaser">
213BBBike: Auszeichnung "<b>FahrradStadtBerlin 2007</b>" f�r Verdienste um die F�rderung des Radverkehrs<br/>
214<a href="http://www.stadtentwicklung.berlin.de/aktuell/pressebox/archiv_volltext.shtml?arch_0801/nachricht2936.html">Pressemitteilung</a><br/>
215<img src="$bbbike_images/logo-fahrradstadt_75.png"><br/>
216</div>
217EOF
218    } else {
219	();
220    }
221}
222
223sub teaser_other_cities {
224    my $url = "http://www.bbbike.org/";
225    if ($lang eq 'en') {
226	<<EOF;
227<div class="teaser">
228  <a href="$url" style="font-weight:bold;">BBBike \@ World</a><br/>BBBike for other cities
229</div>
230EOF
231    } else {
232	<<EOF;
233<div class="teaser">
234  <a href="$url" style="font-weight:bold;">BBBike \@ World</a><br/>BBBike f�r andere St�dte
235</div>
236EOF
237    }
238}
239
240sub teaser_other_cities_tagcloud {
241    my $url = "http://www.bbbike.org/";
242    my $lang = $lang eq 'en' ? 'en' : 'de';
243    my $teaser = "";
244    if ($lang eq 'en') {
245	$teaser .= <<EOF;
246<span class="teaser">BBBike for <a href="http://www.bbbike.org/">other</a> cities:</span>
247EOF
248    } else {
249	$teaser .= <<EOF;
250<span class="teaser">BBBike f�r <a href="http://www.bbbike.org/">weitere</a> St�dte:</span>
251EOF
252    }
253    $teaser .= <<"EOF";
254<span class="htmltagcloud">
255<span class="tagcloud4"><a href="http://www.bbbike.org/$lang/BrandenburgHavel/">Brandenburg (Havel)</a></span>
256<span class="tagcloud5"><a href="http://www.bbbike.org/$lang/Cottbus/">Cottbus</a></span>
257<span class="tagcloud6"><a href="http://www.bbbike.org/$lang/Dresden/">Dresden</a></span>
258<span class="tagcloud5"><a href="http://www.bbbike.org/$lang/FrankfurtOder/">Frankfurt (Oder), M&auml;rkische Schweiz</a></span>
259<span class="tagcloud6"><a href="http://www.bbbike.org/$lang/Leipzig/">Leipzig</a></span>
260<span class="tagcloud4"><a href="http://www.bbbike.org/$lang/Oranienburg/">Oranienburg Uckermark</a></span>
261<span class="tagcloud5"><a href="http://www.bbbike.org/$lang/Potsdam/">Potsdam-Mittelmark, Fl&auml;ming</a></span>
262<span class="tagcloud4"><a href="http://www.bbbike.org/$lang/Usedom/">Usedom</a></span>
263<span class="tagcloud3"><a href="http://www.bbbike.org/$lang/WarenMueritz/">Waren (M&uuml;ritz)</a></span>
264<span class="tagcloud3"><a href="http://www.bbbike.org/$lang/Ruegen/">R&uuml;gen</a></span>
265<a href="http://www.bbbike.org/">...</a>
266</span>
267EOF
268    $teaser;
269}
270
271sub teaser_iphone {
272    my $url = "$bbbike_html/bbbike_tracks_iphone.html";
273    if ($lang eq 'en') {
274	<<EOF;
275<div class="teaser">
276  Tutorial: <a href="$url">Load BBBike tracks to iPhone</a> (sorry, German only)
277</div>
278EOF
279    } else {
280	<<EOF;
281<div class="teaser">
282  Anleitung: <a href="$url">BBBike-Tracks unterwegs auf das iPhone laden</a>
283</div>
284EOF
285    }
286}
287
288sub _teaser_is_iphone { $ENV{HTTP_USER_AGENT} =~ m{\biPhone\b} }
289
290sub teaser_maintenance {
291    my $maintenance_end = 1297843200; # Wed Feb 16 09:00:00 2011
292    if (time < $maintenance_end
293	&& time > $maintenance_end-10*86400
294	&& $ENV{SERVER_NAME} =~ m{(bbbike\.de|bbbike\.hosteurope)$}
295       ) {
296	<<EOF;
297<div class="teaser">
298<b>Wartungsarbeiten</b><br>
299Von 15.02.2011 23:00 Uhr bis 16.02.2011 09:00 wird $ENV{SERVER_NAME}
300wegen Wartungsarbeiten kurzzeitig nicht verf�gbar sein.
301</div>
302EOF
303    } else {
304	();
305    }
306}
307
308sub teaser_android0 {
309    my $url = "https://play.google.com/store/apps/details?id=org.selfip.leinad.android.bbbike";
310    if ($lang eq 'en') {
311	<<EOF;
312<div class="teaser">
313  <a href="$url"><b>BBBike for Android phones</b></a> @{[ _teaser_beta_html() ]}
314</div>
315EOF
316    } else {
317	<<EOF;
318<div class="teaser">
319  <a href="$url"><b>BBBike auf Android</b></a> @{[ _teaser_beta_html() ]}
320</div>
321EOF
322    }
323}
324
325sub _teaser_beta_html {
326    q{<span style="font:xx-small sans-serif; border:1px solid red; padding:1px 2px 0px 2px; background-color:yellow; color:black;">BETA</span>};
327}
328
3291;
330
331__END__
332