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ä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ä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üritz)</a></span> 264<span class="tagcloud3"><a href="http://www.bbbike.org/$lang/Ruegen/">Rü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