2022-01-02 14:57:19 +01:00
package Karte ;
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# Copyright (c) Rainer Gümpelein, TeilRad GmbH
#
use strict ;
use warnings ;
use CGI ':standard' ;
use Lib::Config ;
use Mod::DBtank ;
use Mod::APIfunc ;
sub new {
my $ class = shift ;
my $ self = { } ;
bless ( $ self , $ class ) ;
return $ self ;
}
#Template
sub tpl () {
my $ node_meta = shift ;
my $ users_dms = shift || "" ;
my $ mode = shift || "" ;
my $ varenv = shift ;
my $ users_sharee = shift || { c_id = > 0 } ;
my $ return = shift || "" ;
my $ q = new CGI ;
my $ dbt = new DBtank ;
my $ apif = new APIfunc ;
my $ api_file = "/var/www/copri4/shareeconf/apikeys.cfg" ;
my $ aconf = Config::General - > new ( $ api_file ) ;
my % apikeyconf = $ aconf - > getall ;
my $ api_return = { authcookie = > '' } ;
my $ coo = $ q - > cookie ( - name = > 'domcookie' ) || $ R:: sessionid ;
( $ api_return , $ users_sharee ) = $ apif - > auth_verify ( $ q , $ coo , "" ) ;
2022-01-09 18:31:20 +01:00
my $ initMap = $ dbt - > { website } - > { $ varenv - > { syshost } } - > { initMap } ;
2022-01-21 17:26:57 +01:00
my $ map_zoom = $ dbt - > { website } - > { $ varenv - > { syshost } } - > { map_zoom } || "10" ;
2022-01-28 09:54:34 +01:00
my $ project = "all" ;
2022-05-09 12:45:01 +02:00
my $ uri_request = $ dbt - > { primary } - > { sharee_primary } - > { primaryDMS } ;
2022-01-09 18:31:20 +01:00
if ( $ dbt - > { website } - > { $ varenv - > { syshost } } - > { merchant_id } ) {
$ api_return - > { authcookie } = $ dbt - > { website } - > { $ varenv - > { syshost } } - > { merchant_id } if ( ! $ api_return - > { authcookie } ) ;
2022-01-28 09:54:34 +01:00
$ project = $ dbt - > { website } - > { $ varenv - > { syshost } } - > { project } if ( $ dbt - > { website } - > { $ varenv - > { syshost } } - > { project } ) ;
2022-05-09 12:45:01 +02:00
$ uri_request = $ dbt - > { website } - > { $ varenv - > { syshost } } - > { operatorWeb } ;
2022-01-09 18:31:20 +01:00
} elsif ( $ dbt - > { operator } - > { $ varenv - > { dbname } } - > { merchant_id } ) {
$ api_return - > { authcookie } = $ dbt - > { operator } - > { $ varenv - > { dbname } } - > { merchant_id } if ( ! $ api_return - > { authcookie } ) ;
2022-01-28 09:54:34 +01:00
$ initMap = $ dbt - > { operator } - > { $ varenv - > { dbname } } - > { initMap } if ( $ dbt - > { operator } - > { $ varenv - > { dbname } } - > { initMap } ) ;
2022-01-21 17:26:57 +01:00
$ map_zoom = $ dbt - > { operator } - > { $ varenv - > { dbname } } - > { map_zoom } if ( $ dbt - > { operator } - > { $ varenv - > { dbname } } - > { map_zoom } ) ;
2022-01-28 09:54:34 +01:00
$ project = $ dbt - > { operator } - > { $ varenv - > { dbname } } - > { project } if ( $ dbt - > { operator } - > { $ varenv - > { dbname } } - > { project } ) ;
2022-05-09 12:45:01 +02:00
$ uri_request = $ dbt - > { operator } - > { $ varenv - > { dbname } } - > { operatorDMS } ;
2022-01-09 18:31:20 +01:00
} elsif ( $ dbt - > { primary } - > { $ varenv - > { dbname } } - > { merchant_id } ) {
$ api_return - > { authcookie } = $ dbt - > { primary } - > { $ varenv - > { dbname } } - > { merchant_id } if ( ! $ api_return - > { authcookie } ) ;
2022-01-28 09:54:34 +01:00
$ initMap = $ dbt - > { primary } - > { $ varenv - > { dbname } } - > { initMap } if ( $ dbt - > { primary } - > { $ varenv - > { dbname } } - > { initMap } ) ;
2022-05-09 12:45:01 +02:00
$ uri_request = $ dbt - > { primary } - > { $ varenv - > { dbname } } - > { primaryDMS } ;
2022-01-28 09:54:34 +01:00
}
my $ icon_green = "Open_Green.png" ;
my $ icon_red = "Open_Red.png" ;
my $ icon_blue = "Open_Blue.png" ;
2022-05-05 12:07:05 +02:00
my $ mapheight = "600px;" ;
2022-01-28 09:54:34 +01:00
if ( $ project eq "Bayern" ) {
$ icon_green = "LastenradBay_Standortpfeil_gruen_03a.png" ;
$ icon_red = "LastenradBay_Standortpfeil_rot_03a.png" ;
$ icon_blue = "LastenradBay_Standortpfeil_blau_03a.png" ;
2022-05-05 12:07:05 +02:00
$ mapheight = "800px;" ;
2022-01-09 18:31:20 +01:00
}
$ users_sharee - > { c_id } = "0" if ( ! $ users_sharee - > { c_id } ) ;
$ initMap =~ s/\s//g ;
my ( $ lat , $ lng ) = split ( /,/ , $ initMap ) ;
2022-05-09 12:45:01 +02:00
my $ kmlfile = "" ;
my $ filesize = 0 ;
my $ preserve_view = "false" ;
2022-01-09 18:31:20 +01:00
2022-01-02 14:57:19 +01:00
require "Mod/KMLout.pm" ;
2022-05-09 12:45:01 +02:00
$ kmlfile = Mod::KMLout:: kmlGenerator ( $ api_return , $ varenv , $ users_sharee ) ;
2022-01-11 10:53:21 +01:00
my $ filesize = - s "$varenv->{metahost}/xml/$kmlfile" ;
2022-05-09 12:45:01 +02:00
#
#used by empty station card like without public stations
#setting to true to keeps lat,lng and zoom
$ preserve_view = "true" if ( $ filesize < 200 ) ;
2022-01-11 10:53:21 +01:00
2022-05-11 08:05:35 +02:00
print $ q - > div ( { - class = > "content2_contact" } , "Hier können Lastenfahrräder gemietet werden:" ) , "\n" ;
2022-05-05 12:07:05 +02:00
print "<div style='background-color:#cccccc;width:100%;margin-top:1em;'>\n" ;
2022-01-02 14:57:19 +01:00
2022-05-05 12:07:05 +02:00
print "<div id='map' style='height:$mapheight'></div>\n" ;
2022-01-02 14:57:19 +01:00
print << EOF
<script>
function initMap ( ) {
var map = new google . maps . Map ( document . getElementById ( 'map' ) , {
scrollwheel: false ,
2022-05-11 08:05:35 +02:00
// draggable: ! ( "ontouchend" in document ) ,
2022-01-02 14:57:19 +01:00
center: { lat: $ lat , lng: $ lng } ,
2022-01-21 17:26:57 +01:00
zoom: $ map_zoom
2022-01-02 14:57:19 +01:00
} ) ;
var ctaLayer = new google . maps . KmlLayer ( {
position: map . getCenter ( ) ,
2022-01-11 10:53:21 +01:00
preserveViewport: $ preserve_view ,
2022-05-09 12:45:01 +02:00
// url: '$uri_request/KMLout?authcookie=$api_return->{authcookie}&dynamo=' + ( new Date ( ) ) . getTime ( ) ,
2022-01-02 14:57:19 +01:00
url: '$varenv->{metahost}/xml/$kmlfile' ,
map : map
} ) ;
2022-05-09 12:45:01 +02:00
console . log ( ctaLayer ) ;
2022-01-02 14:57:19 +01:00
} ;
</script>
< script async defer
src = "https://maps.googleapis.com/maps/api/js?key=$apikeyconf{googlemap}->{google_key}&callback=initMap" >
</script>
EOF
;
print "</div>\n" ;
2022-05-04 08:02:59 +02:00
#print $q->div({-class=>"content2_legende", -style=>'font-weight:bold;'}, "• Ist ein Lastenrad an einer Mietradstation verfügbar?"),"\n";
2022-01-28 09:54:34 +01:00
print $ q - > div ( { - class = > "content2_legende" } , $ q - > img ( { - style = > 'height:30px;' , - src = > "$varenv->{metahost}/img/$icon_green" } ) , "Lastenrad verfügbar" ) , "\n" ;
print $ q - > div ( { - class = > "content2_legende" } , $ q - > img ( { - style = > 'height:30px;' , - src = > "$varenv->{metahost}/img/$icon_red" } ) , "Lastenrad nicht verfügbar" ) , "\n" ;
2022-05-09 12:45:01 +02:00
#print $q->div({-class=>"content2_legende"}, " "),"\n";
2022-01-28 09:54:34 +01:00
print "$initMap|$varenv->{dbname}|$api_return->{authcookie}|$users_sharee->{c_id}|$kmlfile" if ( $ users_dms - > { u_id } == $ dbt - > { copri_conf } - > { superu_id } ) ;
2022-01-02 14:57:19 +01:00
}
1 ;