diff --git a/copri4/main/css/local_style_2.css b/copri4/main/css/local_style_2.css index a1b2aa9..b853104 100755 --- a/copri4/main/css/local_style_2.css +++ b/copri4/main/css/local_style_2.css @@ -91,7 +91,6 @@ div#Container_cms { .left_italic_cms { min-width:140px; padding:4px 0; - vertical-align: middle; text-align: right; border: 0px solid black; } @@ -350,13 +349,11 @@ div#Oline { .etxt { font-size:100%; border: 1px solid silver; - background-color: #ededed; padding:1px; margin:1px; } .etxt2 { font-size:100%; - border: 0px solid #ededed; margin:1px; } .stxt { @@ -386,7 +383,6 @@ div#Oline { min-height: 2em; min-width: 20em; border: 0px solid silver; - background-color: #ededed; } .etxtarea2 { min-height: 10em; @@ -639,15 +635,15 @@ div#botlogic { div#retm { position:fixed; - right:0%; + width:auto; top:0%; - border:1px solid #007700; - padding:5px; - width:150px; + left:20%; + right:20%; + padding:4px; color:black; - background-color:yellow; + background-color:#F3F34C; cursor:pointer; - z-index:11; + z-index:1100; } div#savestate { @@ -729,6 +725,17 @@ div#Container_txt1 { .sortnav:visited { color:black;} .sortnav:hover { color:#dcd77f;} +.editboo { + font-size: 1.5em; + color: black; + padding:0 2px; + vertical-align:middle; + text-decoration: none; +} +.editboo:link {color:black;} +.editboo:visited { color:black;} +.editboo:hover { color:#dcd77f;} + .editnav { color: black; padding:0 2px; diff --git a/copri4/main/src/Mod/APIjsonserver.pm b/copri4/main/src/Mod/APIjsonserver.pm index bf1906a..9effe5b 100755 --- a/copri4/main/src/Mod/APIjsonserver.pm +++ b/copri4/main/src/Mod/APIjsonserver.pm @@ -53,9 +53,15 @@ sub handler { my $debug=1; my $user_agent = $q->user_agent(); -$bw->log("APIjsonserver request:\n--> user-agent '$user_agent'",$q,""); + #my %headers = map { $_ => $q->http($_) } $q->http(); + #$bw->log("headers:",\%headers,""); + $bw->log("APIjsonserver request:\n--> user-agent '$user_agent' ",$q,""); print $q->header(-type => "application/json", -charset => "utf-8", -'Access-Control-Allow-Origin' => "*"); +#for my $header ( keys %headers ) { +# print "$header: $headers{$header}\n"; +#} + my $respreq = $q->param('request') || ""; my $apiserver = $q->url(-base=>1) || ""; @@ -249,6 +255,7 @@ elsif($q->param('request') eq "booking_request"){ my $ct_tariff = {}; ($ct_bike,$ct_tariff) = $apif->fetch_bike_tariff(\%varenv,$authraw,$bike,$aowner); + #sig booking_request my $sig_book = { bikeId => "$ct_bike->{txt22}", rentalId => "", @@ -258,7 +265,7 @@ elsif($q->param('request') eq "booking_request"){ if($ct_bike->{barcode} && $ct_tariff->{barcode}){ #sig reservation. not mandatory if($ct_bike->{int11} == 3){ - $sig_book = $si->sig_booking(\%varenv,$authraw,$ct_bike,"","reserve"); + $sig_book = $si->sig_booking(\%varenv,"reserve",$authraw,$ct_bike,""); $sig_book->{bikeId} = "$ct_bike->{txt22}"; } $response_book = $apif->booking_request($q,\%varenv,$authraw,$bike,$ct_bike,$ct_tariff,$aowner,$gps,$sig_book); @@ -286,8 +293,8 @@ elsif($q->param('request') eq "booking_request"){ #sig booking if($ctpos->{int11} == 3){ #usecase with reservationId (in ctpos) is in sig not defined, thats because using ct_bike.txt22 - #$sig_book = $si->sig_booking(\%varenv,$authraw,$ct_bike,$ctpos,"rental"); - system("$varenv{basedir}/src/scripts/sig_client.pl $varenv{syshost} 'rental' $authraw->{c_id} $ctpos->{c_id} &"); + #$sig_book = $si->sig_booking(\%varenv,"rental",$authraw,$ct_bike,$ctpos); + system("$varenv{basedir}/src/scripts/sig_client.pl $varenv{syshost} 'rental' $authraw->{c_id} '' $ctpos->{c_id} &"); ($rows, $booking_values) = $apif->booking_update($q,\%varenv,$authraw,$aowner,$sig_book); $response = {%$response, %$booking_values}; }else{ @@ -358,7 +365,7 @@ elsif($q->param('request') eq "booking_cancel" || $q->param('request') eq "booki #this sig request is still not defined #$response->{response_state} = "Failure: sig bike reservation can not be canceled on sig"; #$response->{response_text} = "Abbruch, die Reservierung kann nicht storniert werden"; - $sig_book = $si->sig_booking(\%varenv,$authraw,"",$ctpos,"reserve_end"); + $sig_book = $si->sig_booking(\%varenv,"reserve_end",$authraw,"",$ctpos); ($rows, $booking_values) = $apif->booking_update($q,\%varenv,$authraw,$aowner,$sig_book); }else{ ($rows, $booking_values) = $apif->booking_update($q,\%varenv,$authraw,$aowner,""); @@ -370,12 +377,12 @@ elsif($q->param('request') eq "booking_cancel" || $q->param('request') eq "booki if($ctpos->{int11} == 3){ if($q->param('state') eq "occupied"){ - #$sig_book = $si->sig_booking(\%varenv,$authraw,"",$ctpos,"rental"); - system("$varenv{basedir}/src/scripts/sig_client.pl $varenv{syshost} 'rental' $authraw->{c_id} $ctpos->{c_id} &"); + #$sig_book = $si->sig_booking(\%varenv,"rental",$authraw,"",$ctpos); + system("$varenv{basedir}/src/scripts/sig_client.pl $varenv{syshost} 'rental' $authraw->{c_id} '' $ctpos->{c_id} &"); } if($q->param('state') eq "available"){ - #$sig_book = $si->sig_booking(\%varenv,$authraw,"",$ctpos,"rental_end"); - system("$varenv{basedir}/src/scripts/sig_client.pl $varenv{syshost} 'rental_end' $authraw->{c_id} $ctpos->{c_id} &"); + #$sig_book = $si->sig_booking(\%varenv,"rental_end",$authraw,"",$ctpos); + system("$varenv{basedir}/src/scripts/sig_client.pl $varenv{syshost} 'rental_end' $authraw->{c_id} '' $ctpos->{c_id} &"); } ($rows, $booking_values) = $apif->booking_update($q,\%varenv,$authraw,$aowner,$sig_book); diff --git a/copri4/main/src/Mod/APIsigclient.pm b/copri4/main/src/Mod/APIsigclient.pm index aba8352..5b14c66 100755 --- a/copri4/main/src/Mod/APIsigclient.pm +++ b/copri4/main/src/Mod/APIsigclient.pm @@ -278,10 +278,10 @@ sub sig_available { sub sig_booking { my $self = shift; my $varenv = shift || {}; + my $todo = shift || ""; my $ctadr = shift || {}; my $ct_bike = shift || {}; my $ctpos = shift || {}; - my $todo = shift || ""; my $dbh = ""; my $owner = 169; @@ -314,7 +314,8 @@ sub sig_booking { #int10 state will be set on main booking_update elsif($todo eq "rental"){ $endpoint .= "rental"; - my $sig_bikeId = $ctpos->{txt22} || $ct_bike->{txt22}; + #my $sig_bikeId = $ctpos->{txt22} || $ct_bike->{txt22}; + my $sig_bikeId = "380116b5-0522-43da-ab66-477744a731a3"; %json = ( bikeId => "$sig_bikeId", email => "$ctadr->{txt08}" @@ -329,6 +330,15 @@ sub sig_booking { ); #keep in mind, it will return no json, just text: "Rental Ended" } + #rentals running + #TODO, execute it before user_bikes_occupied + elsif($todo eq "rentals_running"){ + $endpoint .= "rentals/running"; + %json = ( + email => "$ctadr->{txt08}" + ); + } + else{ print "Failure, request $todo not defined\n"; @@ -352,6 +362,9 @@ sub sig_booking { #warn $@; print FILE "warn:" . $@ . "\n"; } + + #save always API return state for documentation + $sig_book->{return_state} = "$now_dt $todo: $ret_status"; } if(ref($sig_book) ne "HASH"){ @@ -387,7 +400,8 @@ sub sig_booking { #} $update_pos->{txt10} = "$sig_book->{reservationId}" if($sig_book->{reservationId}); - $update_pos->{txt11} = "$sig_book->{rentalId}" if($sig_book->{rentalid}); + $update_pos->{txt11} = "$sig_book->{rentalId}" if($sig_book->{rentalId}); + $update_pos->{txt25} = "$ctpos->{txt25}\n$sig_book->{return_state}";# if($sig_book->{return_state}); $rows = $dbt->update_record($dbh,$update_pos,$ctpos); print FILE "<--- rows: $rows, update_pos: $ctpos->{c_id}, with:" . Dumper($update_pos) . "\n"; diff --git a/copri4/main/src/Mod/Basework.pm b/copri4/main/src/Mod/Basework.pm index ea2684c..6e950a7 100755 --- a/copri4/main/src/Mod/Basework.pm +++ b/copri4/main/src/Mod/Basework.pm @@ -58,5 +58,38 @@ sub log { } +#return headline message +sub return_feedback(){ + my $self = shift; + my $node_meta = shift; + my $users_dms = shift || {}; + my $feedb = shift || {}; + + my $return = ""; + if(ref($feedb) eq "HASH" && $feedb->{message}){ +print< + \$(document).ready(function(){ + \$( "#retm" ).fadeOut(8000); + }) + +EOF +; + my $debug = ""; + $debug = $feedb->{debug} if($users_dms->{u_id} eq "1842"); + + if($feedb->{message} =~ /(failure::.*)/){ + $return = $1; + }elsif($feedb->{message}){ + print $q->div({-id=>'retm'},"$feedb->{message} $debug"),"\n"; + }elsif($feedb->{u_rows}){ + print $q->div({-id=>'retm'},"$feedb->{u_rows} $node_meta->{node_name} aktualisiert $debug"),"\n"; + } + } + + return $return; +} + + 1; diff --git a/copri4/main/src/Mod/Buttons.pm b/copri4/main/src/Mod/Buttons.pm index e1145fa..8dd9b68 100755 --- a/copri4/main/src/Mod/Buttons.pm +++ b/copri4/main/src/Mod/Buttons.pm @@ -312,7 +312,7 @@ sub selector_class(){ push @selopt, "\n"; } } - my $selret = "\n"; + my $selret = "\n"; return $selret; } diff --git a/copri4/main/src/Mod/DBtank.pm b/copri4/main/src/Mod/DBtank.pm index 3c1c5ba..3604a02 100755 --- a/copri4/main/src/Mod/DBtank.pm +++ b/copri4/main/src/Mod/DBtank.pm @@ -277,6 +277,7 @@ sub channel_map(){ my $self = shift; my $channel = { 169 => "sig connector", + 172 => "cron timeout", 173 => "merchant fallback",#mig 175 => "example App",#mig 176 => "Mein konrad App",#mig @@ -532,13 +533,12 @@ sub select_worktime { sub collect_contentpos(){ my $self = shift; my $dbh = shift || $dbh_intern; - my ($table,$c_id) = @_; - my $tb = "contenttrans"; - my $tbpos = "contenttranspos"; - my $where = "where ctt.c_id=pos.ct_id and ctt.c_id='$c_id'"; + my $table = shift; + my $ct_id = shift || ""; + my $where = "where ctt.c_id=pos.ct_id and ctt.c_id='$ct_id'"; - if($c_id){ - my $sth = $dbh->prepare("SELECT pos.* FROM $tbpos pos, $tb ctt $where"); + if($ct_id){ + my $sth = $dbh->prepare("SELECT pos.* FROM contenttranspos pos, contenttrans ctt $where"); my $rc = $sth->execute(); my $cpos = $sth->fetchall_hashref("c_id"); my $rows = $sth->rows; @@ -633,21 +633,20 @@ sub collect_post(){ } } - my $sth; - my $sql; + my $sth = ""; + my $sql = ""; my $limit = ""; $limit = "LIMIT $count" if(looks_like_number($count)); if($fetch->{catch} && $fetch->{catch} eq "content_contentpos"){ $sql = "SELECT cp.* from $fetch->{table_pos} cp, $fetch->{table} ct where $ctcp_where and $cp_where and $ct_where order by cp.mtime DESC $limit"; $sth = $dbh->prepare($sql); - #+3 }else{ - #adapated from search_content3 to get Category-Menue - $sql = "SELECT cp.* FROM $fetch->{table_pos} cp WHERE $cp_where and $poscid IN (SELECT ct.c_id FROM relation rel, $fetch->{table} ct WHERE rel.content_id=ct.c_id and $ct_where) order by cp.mtime ASC";#mtime aufsteigend get last (newest) entry + #rental pos with capture booking ct.state + $sql = "SELECT cp.*, ct.state FROM $fetch->{table_pos} cp, $fetch->{table} ct WHERE $cp_where and $poscid IN (SELECT ct.c_id FROM relation rel, $fetch->{table} ct WHERE rel.content_id=ct.c_id and $ct_where) order by cp.mtime ASC";#mtime aufsteigend get last (newest) entry $sth = $dbh->prepare($sql); } - my $rc = $sth->execute(); $bw->log("DBtank collect_post $source",$sql,"") if($debug); + my $rc = $sth->execute(); my $record = { c_id => 0 }; if($fetch->{fetch} eq "all" && $fetch->{keyfield}){ diff --git a/copri4/main/src/Mod/Indexsharee.pm b/copri4/main/src/Mod/Indexsharee.pm index 1f48309..81fd6b7 100755 --- a/copri4/main/src/Mod/Indexsharee.pm +++ b/copri4/main/src/Mod/Indexsharee.pm @@ -380,6 +380,10 @@ sub handler { $return = "failure::Abbruch. Schreibender Zugriff \"Faktura\" verweigert."; } } + if($node_meta->{ct_table} eq "contenttranspos" && $R::base_edit eq "save_pos"){ + $return = $pl->save_contenttranspos($R::c_id,$users_dms->{u_id}); + } + $users_dms = $dbt->select_users($dbh,$users_dms->{u_id},"");#just to get update after save #none DMS hosts ---------------------------------------------------- @@ -656,7 +660,6 @@ sub handler { ### } - my $nodev = $db->get_node("$view_post","$lang"); #Printpreview if($view =~ /Printpreview/){ require "Mod/Printpreview.pm"; @@ -669,13 +672,6 @@ sub handler { exit 0; } - #else global REDIRECT. Availability check for redirect - #elsif(!$nodev->{main_id} || ($nodev->{main_id} == 100 && $R::rel_edit eq "save_content")){ - #print redirect("$varenv{wwwhost}$session"); - #exit 0; - #} - - #CSVout if($R::rel_edit && $R::rel_edit =~ /XLSout/){ $users_dms = $dbt->select_users($dbh,$users_dms->{u_id}); @@ -737,6 +733,7 @@ sub handler { \$( '#datepicker1' ).datepicker({ dateFormat: 'dd.mm.yy', dayNamesMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], monthNames: ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember']}); \$( '#datepicker2' ).datepicker({ dateFormat: 'dd.mm.yy', dayNamesMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], monthNames: ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember']}); \$( '#datepicker3' ).datepicker({ dateFormat: 'dd.mm.yy', dayNamesMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], monthNames: ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember']}); + \$( '#datepicker4' ).datepicker({ dateFormat: 'dd.mm.yy', dayNamesMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], monthNames: ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember']}); });"; } diff --git a/copri4/main/src/Mod/Modalbox3.pm b/copri4/main/src/Mod/Modalbox3.pm index 7b7286c..3b9f5ef 100755 --- a/copri4/main/src/Mod/Modalbox3.pm +++ b/copri4/main/src/Mod/Modalbox3.pm @@ -44,6 +44,7 @@ sub mobox3(){ $title = "Kunden Editor" if($node_meta->{ct_table} eq "contentadr"); $title = "DMS-Account Zugriffsberechtigung" if($node_meta->{ct_table} eq "users"); $title = "Service Editor" if($node_meta->{ct_table} eq "contentpos"); + $title = "Rental Editor" if($node_meta->{ct_table} eq "contenttranspos"); my $height = $node_meta->{tpl_height} || "990"; my $width = $node_meta->{tpl_width} || "990"; diff --git a/copri4/main/src/Mod/Prelib.pm b/copri4/main/src/Mod/Prelib.pm index cd534bf..69aa64c 100755 --- a/copri4/main/src/Mod/Prelib.pm +++ b/copri4/main/src/Mod/Prelib.pm @@ -13,6 +13,8 @@ use File::Path qw(make_path remove_tree); use CGI ':standard'; use CGI::Carp qw(fatalsToBrowser); use Scalar::Util qw(looks_like_number); +use DateTime; +use DateTime::Format::Pg; use Lib::Config; use Mod::Libenzdb; @@ -20,6 +22,7 @@ use Mod::Libenz; use Mod::DBtank; use Mod::Basework; use Mod::APIfunc; +use Mod::Pricing; use Data::Dumper; my $cf = new Config; @@ -28,6 +31,7 @@ my $lb = new Libenz; my $dbt = new DBtank; my $bw = new Basework; my $apif = new APIfunc; +my $pri = new Pricing; my $q = new CGI; sub new { @@ -46,6 +50,151 @@ my %varenv = $cf->envonline(); my $now_dt = strftime "%Y-%m-%d %H:%M:%S", localtime; my $debug=1; +sub save_contenttranspos { + my $self = shift; + my $c_id = shift; + my $owner = shift; + + my $dbh = ""; + my $feedb = { message => "" }; + if($c_id && $R::start_date =~ /\d{1,2}\.\d{1,2}\.\d{4}/ && $R::end_date =~ /\d{1,2}\.\d{1,2}\.\d{4}/){ + my $s_hh = $q->escapeHTML("$R::s_hh") || "0"; + my $s_mi = $q->escapeHTML("$R::s_mi") || "0"; + my $e_hh = $q->escapeHTML("$R::e_hh") || "0"; + my $e_mi = $q->escapeHTML("$R::e_mi") || "0"; + $s_hh = "24" if($s_hh > "24"); + $e_hh = "24" if($e_hh > "24"); + $s_mi = "59" if($s_mi > "59"); + $e_mi = "59" if($e_mi > "59"); + $s_hh = sprintf('%.2d',$s_hh); + $e_hh = sprintf('%.2d',$e_hh); + $s_mi = sprintf('%.2d',$s_mi); + $e_mi = sprintf('%.2d',$e_mi); + my $start_time=""; + my $end_time=""; + + my $dtnow = DateTime->now( time_zone => "Europe/Berlin" ); + my $dt0 = DateTime->now( time_zone => "Europe/Berlin" ); + my $dt1 = DateTime->now( time_zone => "Europe/Berlin" ); + + if($R::start_date =~ /(\d{1,2})\.(\d{1,2})\.(\d{4})/){ + $dt0 = DateTime->new( + year => $3, + month => $2, + day => $1, + hour => $s_hh, + minute => $s_mi, + time_zone => 'Europe/Berlin', + ); + $start_time = $dt0->strftime("%Y-%m-%d %H:%M:%S"); + #print $start_time; + } + + if($R::end_date =~ /(\d{1,2})\.(\d{1,2})\.(\d{4})/){ + $dt1 = DateTime->new( + year => $3, + month => $2, + day => $1, + hour => $e_hh, + minute => $e_mi, + time_zone => 'Europe/Berlin', + ); + $end_time = $dt1->strftime("%Y-%m-%d %H:%M:%S"); + } + + if($c_id && $start_time && $end_time && $dt0 < $dtnow && $dt1 < $dtnow){ + + my $pref = { + table => "contenttrans", + table_pos => "contenttranspos", + fetch => "one", + template_id => "218",#Mietjournal tpl_id + c_id => $c_id, + "ct.close_time" => "is::null", + }; + + my $record_pos = {}; + $record_pos = $dbt->collect_post($dbh,$pref); + + my $pricing = {}; + my $counting = {}; + my $update_pos = { + table => "contenttranspos", + start_time => "$start_time", + end_time => "$end_time", + owner_end => $owner, + mtime => "now()", + }; + $u_rows += $dbt->update_record($dbh,$update_pos,$record_pos); + + #again to get setted date-times + $record_pos = $dbt->collect_post($dbh,$pref); + + ($pricing,$counting) = $pri->counting_rental(\%varenv,$record_pos,"calc_price"); + $update_pos->{int38} = "$counting->{int38}" if(looks_like_number($counting->{int38})); + $update_pos->{int39} = "$counting->{int39}" if(looks_like_number($counting->{int39})); + $update_pos->{int40} = "$counting->{int40}" if(looks_like_number($counting->{int40})); + $update_pos->{int41} = "$counting->{int41}" if(looks_like_number($counting->{int41})); + + $update_pos->{int10} = $R::int10 if(looks_like_number($R::int10)); + $update_pos->{int20} = $R::int20 if(looks_like_number($R::int20)); + $update_pos->{int04} = $R::int04 if(looks_like_number($R::int04)); + + #before update bike content check if realy last rental + my $pref2ck = { + table => "contenttrans", + table_pos => "contenttranspos", + fetch => "one", + template_id => "218",#Mietjournal tpl_id + start_time => ">::$end_time", + "ct.close_time" => "is::null", + }; + + my $record_pos2ck = { c_id => 0 }; + $record_pos2ck = $dbt->collect_post($dbh,$pref2ck); + + #update bike content only if there is no later rental start + if($record_pos->{cc_id} && !$record_pos2ck->{c_id}){ + my $ctpref = { + table => "content", + fetch => "one", + c_id => $record_pos->{cc_id}, + }; + my $ctbike = $dbt->fetch_tablerecord($dbh,$ctpref); + + $ctpref->{int10} = $R::int10 if(looks_like_number($R::int10)); + $ctpref->{int20} = $R::int20 if(looks_like_number($R::int20)); + $ctpref->{int04} = $R::int04 if(looks_like_number($R::int04)); + + $ctpref->{owner} = $owner; + $ctpref->{mtime} = "now()"; + $u_rows += $dbt->update_record($dbh,$ctpref,$ctbike); + $feedb->{message} = "Mietdaten gespeichert und Mietrad Stati in Warenstamm übernommen"; + }else{ + $feedb->{message} = "Mietdaten gespeichert. Achtung, Mietrad Stati in Warenstamm NICHT übernommen, da es sich nicht um die letzte Miete handelt"; + } + + $u_rows += $dbt->update_record($dbh,$update_pos,$record_pos); + + # + if($record_pos->{ct_id}){ + my $ctpref = { + table => "contenttrans", + c_id => $record_pos->{ct_id}, + start_time => "$start_time", + end_time => "$end_time", + owner => $owner, + mtime => "now()", + }; + $u_rows += $dbt->update_record($dbh,$ctpref,$ctpref); + } + } + }else{ + $feedb->{message} = "failure::Fehler, falsche Zeitangaben oder Datensatz nicht gefunden!"; + } + $feedb->{u_rows} = $u_rows; + return $feedb; +}#end save_contenttranspos #set Faktura workflow like Rechnung to Storno sub set_workflow { @@ -440,6 +589,7 @@ sub set_usertarif { if(@new_txt30){ print FILE "-3-> txt30: @new_txt30\n" if($debug); $u_rows = $dbt->update_one($dbh_operator,$adr_bonus,"txt30='@new_txt30'"); + $u_rows = $dbt->update_one($dbh_operator,$adr_bonus,"txt15='$adr_bonus->{txt15}'"); } $ret = "failure::txt30#top2" if(!$adr_bonus->{txt30_array} || $adr_bonus->{txt30_array} !~ /\d/); } diff --git a/copri4/main/src/Mod/Prelogic.pm b/copri4/main/src/Mod/Prelogic.pm index 1ddf43b..1cf1908 100755 --- a/copri4/main/src/Mod/Prelogic.pm +++ b/copri4/main/src/Mod/Prelogic.pm @@ -363,7 +363,7 @@ sub preinit(){ ($pricing,$counting) = $pri->counting_rental(\%varenv,$record_pos,"calc_price"); #int03 only used for tarif counting backwards compatibility - $update_pos->{int03} = "$pricing->{computed_hours}" if(looks_like_number($pricing->{computed_hours})); + #$update_pos->{int03} = "$pricing->{computed_hours}" if(looks_like_number($pricing->{computed_hours})); $update_pos->{int38} = "$counting->{int38}" if(looks_like_number($counting->{int38})); $update_pos->{int39} = "$counting->{int39}" if(looks_like_number($counting->{int39})); $update_pos->{int40} = "$counting->{int40}" if(looks_like_number($counting->{int40})); diff --git a/copri4/main/src/Mod/Pricing.pm b/copri4/main/src/Mod/Pricing.pm index 90a4cd0..b805a09 100755 --- a/copri4/main/src/Mod/Pricing.pm +++ b/copri4/main/src/Mod/Pricing.pm @@ -62,7 +62,7 @@ sub only_first_free(){ int10 => "IN::('1','6')", "ct.close_time" => "is::null", }; - $pref = { %$pref, time_range => "start_time >= '$ctpos->{start_time}' and start_time < '$ctpos->{end_time}' and start_time != end_time" }; + $pref = { %$pref, time_range => "cp.start_time >= '$ctpos->{start_time}' and cp.start_time < '$ctpos->{end_time}' and cp.start_time != cp.end_time" }; my $record = $dbt->collect_post($dbh,$pref); return $record; diff --git a/copri4/main/src/Mod/Shareework.pm b/copri4/main/src/Mod/Shareework.pm index 949e333..116914a 100755 --- a/copri4/main/src/Mod/Shareework.pm +++ b/copri4/main/src/Mod/Shareework.pm @@ -269,7 +269,8 @@ sub save_account(){ $valxx = "KN-$valappend"; print FILE "Prepare SWK Bonusnr by prefix $valxx" . "\n" if($debug); } - if($valxx && ($valxx =~ /^(\w{2,3})-(\w+)/ || $valxx =~ /^(\w{2,3})(\d+)/)){ + #Freischaltcode format can be "CA-Li-hsze789k" or "CA1234567" + if($valxx && ($valxx =~ /^(\w{2,3})-([\w\-]+)/i || $valxx =~ /^(\w{2,3})(\d+)/)){ $valxx =~ s/\s//g; my $bonus_prefix = uc($1), my $bonusnr = $2; diff --git a/copri4/main/src/Tpl/BaseEdit.pm b/copri4/main/src/Tpl/BaseEdit.pm index 3cbabbe..4f3bd6e 100755 --- a/copri4/main/src/Tpl/BaseEdit.pm +++ b/copri4/main/src/Tpl/BaseEdit.pm @@ -19,6 +19,7 @@ use Mod::Libenzdb; use Mod::Basework; use Mod::DBtank; use Mod::APIfunc; +use Mod::Pricing; use Data::Dumper; sub new { @@ -42,6 +43,7 @@ sub tpl(){ my $bw = new Basework; my $dbt = new DBtank; my $apif = new APIfunc; + my $pri = new Pricing; my $but = new Buttons; my %ib = $but->ibuttons(); @@ -60,6 +62,13 @@ sub tpl(){ my $edit_template = ""; my $bg_color = "grey"; my $ctrel = {}; + my $cttpos = {}; + my $gesamt = 0; + my $pricing = {}; + my $counting = {}; + my $rental_feed = {}; + my $occupied_style = ""; + if($node_meta->{ct_table} eq "content" && $node_meta->{tpl_id}){ my $ref = { table => "$node_meta->{ct_table}", @@ -125,18 +134,54 @@ sub tpl(){ $edit = "rel_edit"; $save_key = "save_ctuser"; $tpl = $db->get_tpl($node_meta->{tpl_id}); + + }elsif($node_meta->{ct_table} eq "contenttranspos" && $node_meta->{tpl_id} == 221){ + my $now_dt = strftime "%Y-%m-%d %H:%M:%S", localtime; + my $pref = { + table => "contenttrans", + table_pos => "contenttranspos", + fetch => "one", + c_id => $c_id, + }; + + print $q->hidden(-name=>'c_id',-override=>'1', -value=>"$c_id"); + + $cttpos = $dbt->collect_post($dbh,$pref); + $occupied_style = "color:#ff1493" if($cttpos->{int10} == 2 ||$cttpos->{int10} == 3 || $cttpos->{int10} == 6); + + if($cttpos->{int35} && $cttpos->{start_time} && $cttpos->{end_time}){ + $cttpos->{end_time} = $now_dt if($cttpos->{int10} == 3); + ($pricing,$counting) = $pri->counting_rental(\%varenv,$cttpos,"calc_price"); + $rental_feed = $pri->fetch_rentalfeed(\%varenv,$cttpos,$counting); + $gesamt = $pri->round($pricing->{total_price}); + $gesamt = sprintf('%.2f', $gesamt); + }else{ + ($gesamt,my $rabatt) = $pri->price2calc($cttpos); + $gesamt = $pri->round($gesamt); + $gesamt = sprintf('%.2f', $gesamt); + } + + $bg_color = $varenv{background_color2}; + $edit = "base_edit"; + $save_key = "save_pos"; + $tpl = $db->get_tpl($node_meta->{tpl_id}); + }else{ print $q->div("Es konnten keine Daten gefunden werden"),"\n"; return "failure::Error, no table selected"; } - my $u_name = $dbt->sys_username($dbh,$ctrel->{owner}); - if(ref($ctrel) ne "HASH" && !$ctrel->{c_id} && !$ctrel->{u_id}){ - print $q->div("error: no content available"); - } + #if(ref($ctrel) ne "HASH" && !$ctrel->{c_id} && !$ctrel->{u_id}){ + # print $q->div("error: no content available"); + #} - $ctrel->{mtime} = $lb->time4de($ctrel->{mtime},"1") if($ctrel->{mtime}); + my $u_name = ""; + my $dbmtime = ""; + my $dbowner = $ctrel->{owner} || $cttpos->{owner_end} || ""; + my $dbmtime = $ctrel->{mtime} || $cttpos->{mtime} || ""; + $u_name = $dbt->sys_username($dbh,$dbowner); + $dbmtime = $lb->time4de($dbmtime,"1") if($dbmtime); my $selsize="200px"; #$db->users_up("rel_id4edit",$ctrel->{rel_id},$users_dms->{u_id}); @@ -147,23 +192,6 @@ sub tpl(){ print $q->hidden(-name=>'limit', -override=>'1', -value=>"$R::limit"); print $q->hidden(-name=>'relids', -override=>'1', -value=>"$R::relids"); - my ($start_date,$start_time,$s_dd,$s_mo,$s_yy,$s_hh,$s_mi,$end_date,$end_time,$e_yy,$e_mo,$e_dd,$e_hh,$e_mi); - my $today = strftime("%d.%m.%Y",localtime(time)); - my $start_datetime = $ctrel->{start_time}; - my $end_datetime = $ctrel->{end_time}; - - if($start_datetime){ - ($start_date,$start_time) = split(/ /,$start_datetime); - ($s_yy,$s_mo,$s_dd) = split(/-/,$start_date); - $start_date = "$s_dd-$s_mo-$s_yy"; - ($s_hh,$s_mi) = split(/\:/,$start_time); - } - if($end_datetime){ - ($end_date,$end_time) = split(/ /,$end_datetime); - ($e_yy,$e_mo,$e_dd) = split(/-/,$end_date); - $end_date = "$e_dd-$e_mo-$e_yy"; - ($e_hh,$e_mi) = split(/\:/,$end_time); - } ### my $bike_nodes = {}; @@ -187,11 +215,11 @@ sub tpl(){ print $but->singlesubmit7("rel_edit","$relate_key","$ib{$relate_key}","margin:0 5px;"); print $but->singlesubmit7("rel_edit","$move_key","$ib{$move_key}","margin:0 5px;"); print $but->singlesubmit7("rel_edit","$copy_key","$ib{$copy_key}","margin:0 5px;"); - print $but->singlesubmit7("$edit","remove_chk4rel","$ib{remove_chk4rel}","margin:0 5px;") if($node_meta->{tpl_id} != 199); + print $but->singlesubmit7("$edit","remove_chk4rel","$ib{remove_chk4rel}","margin:0 5px;") if($node_meta->{tpl_id} !~ /199|221/); #print $q->div({-style=>'position:fixed;bottom:2%;right:1%;z-index:10;font-size:13px;'}," (c_id: $ctrel->{c_id} | rel_id: $ctrel->{rel_id} | tpl_id: $ctrel->{template_id} / $edit_template)"),"\n" if($users_dms->{u_id} eq $varenv{superu_id}); print "\n"; - print $q->td({-style=>"background-color:$bg_color;padding-right:10px;border-bottom: 1px solid silver;text-align:right;font-size:11px;"}, "$u_name / $ctrel->{mtime}"); + print $q->td({-style=>"background-color:$bg_color;padding-right:10px;border-bottom: 1px solid silver;text-align:right;font-size:11px;"}, "$u_name / $dbmtime"); print $q->end_table; @@ -272,14 +300,138 @@ EOF foreach (@tpl_order){ + #Mietjournal edit + if($node_meta->{ct_table} eq "contenttranspos" && $node_meta->{tpl_id} == 221){ + my ($key,$des,$size,$postdes) = split /=/,$_; + + if($key =~ /c_id|ct_name|txt08|barcode/){ + print $q->Tr(),"\n"; + print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; + print $q->td({-class=>'content1_cms'}, $q->b("$cttpos->{$key}")),"\n"; + }elsif($key =~ /txt01/){ + print $q->Tr(),"\n"; + print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; + if($cttpos->{int09} && $cttpos->{$key} !~ /Manuell/){ + $cttpos->{$key} .= "\nManuell bearbeitet\n"; + } + + print ""; + print $q->textarea(-class=>'autos',-style=>"border: 1px solid #ededed;",-name=>"$key",-default=>"$cttpos->{$key}", -override=>'1',-rows=>"1",-cols=>45, -autofocus=>1),"
\n"; + + + print "\n"; + #if Traiff Nr. + }elsif($key eq "int09"){ + print $q->Tr(),"\n"; + print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; + print $q->td({-class=>'content1_cms'}, $q->textfield(-class=>'etxt',-name=>"int09",-default=>"$cttpos->{int09}",-size=>"5",-maxlength=>5), "Text", $q->textfield(-class=>'etxt',-name=>"txt04",-default=>"$cttpos->{txt04}",-size=>"30",-maxlength=>50)),"\n"; + + #Endstation + }elsif($key eq "int04"){ + print $q->Tr(),"\n"; + print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; + print $q->td({-class=>'content1_cms'}, $q->textfield(-class=>'etxt',-name=>"int04",-default=>"$cttpos->{int04}",-size=>"5",-maxlength=>40)),"\n"; + #End GPS + }elsif($key eq "txt06"){ + print $q->Tr(),"\n"; + print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; + print $q->td({-class=>'content1_cms'}, "$cttpos->{$key}"),"\n"; + + }elsif($key eq "date_time"){ + my ($s_yy,$s_mo,$s_dd,$s_hh,$s_mi) = $lb->split_date($cttpos->{start_time}); + my ($e_yy,$e_mo,$e_dd,$e_hh,$e_mi) = $lb->split_date($cttpos->{end_time}); + print $q->Tr(),"\n"; + print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; + print $q->td({-class=>'content1_cms'}, + $q->textfield(-id=>'datepicker3',-class=>'etxt',-name=>"start_date",-default=>"$s_dd.$s_mo.$s_yy",-size=>"8",-maxlength=>10), + $q->textfield(-class=>'etxt',-name=>"s_hh",-default=>"$s_hh",-size=>"1",-maxlength=>2),":", + $q->textfield(-class=>'etxt',-name=>"s_mi",-default=>"$s_mi",-size=>"1",-maxlength=>2)," → ", + $q->textfield(-id=>'datepicker4',-class=>'etxt',-name=>"end_date",-default=>"$e_dd.$e_mo.$e_yy",-size=>"8",-maxlength=>10), + $q->textfield(-class=>'etxt',-name=>"e_hh",-default=>"$e_hh",-size=>"1",-maxlength=>2),":", + $q->textfield(-class=>'etxt',-name=>"e_mi",-default=>"$e_mi",-size=>"1",-maxlength=>2)),"\n"; + + }elsif($key =~ /int10/ && "$size" eq "select"){#bike_state + my @_lock_valxx = (); + foreach my $s_key (sort keys (%{ $dbt->{copri_conf}->{bike_state} })) { + push @_lock_valxx, "$s_key:$dbt->{copri_conf}->{bike_state}->{$s_key}"; + } + print $q->Tr(); + print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; + print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector_class("$key","eselect","",$cttpos->{$key},@_lock_valxx)); + + }elsif($key =~ /int20/ && "$size" eq "select"){#lock_state locked/unlocked + my @_lock_valxx = (); + foreach my $s_key (sort keys (%{ $dbt->{copri_conf}->{lock_state} })) { + push @_lock_valxx, "$s_key:$dbt->{copri_conf}->{lock_state}->{$s_key}"; + } + my $sys_comment = ""; + $sys_comment = "Realer Schliesszustand kann nur am Mietrad gesteuert werden!" if($cttpos->{int11} == 2); + print $q->Tr(); + print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; + print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector_class("$key","eselect","",$cttpos->{$key},@_lock_valxx),"$sys_comment"); + + }elsif($key eq "int26"){ + if($cttpos->{int26}){ + print $q->Tr(),"\n"; + print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; + my $co2saving = ""; + my $co2diff = $pri->co2calc($cttpos); + my $sprit_price = $pri->sprit2calc($cttpos); + $co2saving .= "$co2diff kg CO²
"; + $co2saving .= "$sprit_price EUR
"; + $cttpos->{int26} =~ s/\./,/; + $co2saving .= "bei $cttpos->{int26} KM"; + print $q->td({-class=>'content1_cms'},"$co2saving"); + } + }elsif($key =~ /int03/){ + print $q->Tr(),"\n"; + print $q->td({-class=>'left_italic_cms',-nowrap=>"1"},"$des"),"\n"; + if($cttpos->{int35} && $cttpos->{start_time} && $cttpos->{end_time}){ + print $q->td({-class=>'content1_cms', -nowrap=>1},"$pricing->{real_clock} $pricing->{freed_time}"),"\n"; + }else{ + print $q->td({-colspan=>'1',-class=>'content1_cms'},$q->textfield(-class=>'etxt',-name=>"$key",-default=>"$cttpos->{$key}", -override=>'1',-size=>"$size",-maxlength=>10)),"\n"; + } + }elsif($key =~ /int02/){ + print $q->Tr(),"\n"; + print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; + if($cttpos->{int35} && $cttpos->{start_time} && $cttpos->{end_time}){ + print "\n"; + foreach my $fid (sort keys(%{ $rental_feed->{rental_description}->{tarif_elements} })){ + if(ref($rental_feed->{rental_description}->{tarif_elements}->{$fid}) eq "ARRAY"){ + print "$rental_feed->{rental_description}->{tarif_elements}->{$fid}[0]: $rental_feed->{rental_description}->{tarif_elements}->{$fid}[1]
\n"; + } + } + print "\n"; + }else{ + print $q->td({-class=>'content1_cms',-style=>""},$q->textfield(-class=>'etxt',-name=>"$key",-default=>"$cttpos->{$key}", -override=>'1',-size=>"$size",-maxlength=>100),"\n"); + } + }elsif($key =~ /int07/){ + print $q->Tr(),"\n"; + print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; + print $q->td({-class=>'content1_cms',-style=>"",-nowrap=>'1'},$q->textfield(-class=>'etxt',-name=>"$key",-default=>"$cttpos->{$key}", -override=>'1',-size=>"$size",-maxlength=>100),$but->selector("int08","40px","$cttpos->{int08}",("0.00:%","1.00:€"))),"\n"; + }elsif($key =~ /int01/){ + print $q->Tr(),"\n"; + print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; + print $q->td({-class=>'content1_cms',-nowrap=>"1"},"$gesamt €"); + }elsif($key =~ /txt/){ + print $q->Tr(),"\n"; + print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; + print $q->td({-class=>'content1_cms'},$q->textfield(-class=>'etxt',-name=>"$key",-default=>"$cttpos->{$key}", -override=>'1',-size=>"$size",-maxlength=>100)),"\n"; + }elsif($key =~ /int/){ + print $q->Tr(),"\n"; + print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; + print $q->td({-class=>'content1_cms',-nowrap=>"1"}," \n"); + } + }#end edit position + #service-config - if($tpl->{tpl_id} == 199){ + elsif($node_meta->{ct_table} eq "contentuser" && $node_meta->{tpl_id} == 199){ my ($key,$tplkey,$des,$size,$service_interval,$service_type) = split /=/,$_; $ctrel->{$key} = $q->unescapeHTML("$ctrel->{$key}"); $ctrel->{$key} = $lb->newline($ctrel->{$key},"",1); if($key =~ /ct_name/){ - print $q->Tr(); + print $q->Tr(),"\n"; print $q->td({-class=>'content1_cms',-colspan=>3},$q->b("$ctrel->{ct_name}")),"\n"; } elsif($key =~ /txt\d/ && $tplkey =~ /int\d/){ @@ -292,7 +444,7 @@ EOF my $desc_intervall = ""; my $desc_type = ""; ($desc_key,$desc_name,$desc_size,$desc_intervall,$desc_type) = split(/=/,$ctrel->{$key}); - print $q->Tr(); + print $q->Tr(),"\n"; print $q->hidden(-name=>"$key",-override=>1,-value=>"$tplkey"),"\n"; print $q->td({-class=>'content1_cms'},"$desc_num",$q->textfield(-class=>'etxt', -style=>"width:15em;",-name=>"$key", -default=>"$desc_name")),"\n"; print $q->hidden(-name=>"$key",-override=>1,-value=>"checkbox"),"\n"; @@ -310,7 +462,7 @@ EOF if($key =~ /c_id|ct_name|barcode|txt/ && $size eq "readonly"){ print $q->Tr(); print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; - print $q->td({-class=>'content1_cms',-colspan=>2},$q->textfield(-class=>'etxt', -style=>"width:15em;",-name=>"$key", -default=>"$ctrel->{$key}", -readonly=>1)),"\n"; + print $q->td({-class=>'content1_cms',-colspan=>2},$q->textfield(-class=>'etxt', -style=>"color:grey;",-name=>"$key", -default=>"$ctrel->{$key}", -readonly=>1)),"\n"; }elsif($key eq "u_id" && $size eq "readonly"){ my $adref = { table => "contentadr", @@ -402,7 +554,7 @@ EOF elsif($key =~ /int21|int22/ && "$size" eq "select" && $node_meta->{tpl_id} == 228){#Bonus Tarif my @_valxx = (""); foreach my $rid (sort { $tariff_all->{$a}->{barcode} <=> $tariff_all->{$b}->{barcode} } keys (%$tariff_all)){ - push (@_valxx, "$tariff_all->{$rid}->{barcode}:$tariff_all->{$rid}->{barcode} - $tariff_all->{$rid}->{txt01}"); + push (@_valxx, "$tariff_all->{$rid}->{barcode}:$tariff_all->{$rid}->{barcode} - $tariff_all->{$rid}->{ct_name}"); } print $q->Tr(); print $q->td({-class=>'left_italic_cms',-colspan=>'1'},"$des"); @@ -410,18 +562,18 @@ EOF } elsif($key =~ /int10/ && "$size" eq "select" && $node_meta->{tpl_id} == 205){#bike_state my @_lock_valxx = (); - while (my ($key, $value) = each %{ $dbt->{copri_conf}->{bike_state} }) { - push @_lock_valxx, "$key:$value";#[1:available] ... - } + foreach my $s_key (sort keys (%{ $dbt->{copri_conf}->{bike_state} })) { + push @_lock_valxx, "$s_key:$dbt->{copri_conf}->{bike_state}->{$s_key}"; + } print $q->Tr(); print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector_class("$key","eselect","",$ctrel->{$key},@_lock_valxx)); } elsif($key =~ /int10/ && "$size" eq "select" && $node_meta->{tpl_id} == 225){#station_state my @_lock_valxx = (); - while (my ($key, $value) = each %{ $dbt->{copri_conf}->{station_state} }) { - push @_lock_valxx, "$key:$value";#[1:available] ... - } + foreach my $s_key (sort keys (%{ $dbt->{copri_conf}->{station_state} })) { + push @_lock_valxx, "$s_key:$dbt->{copri_conf}->{station_state}->{$s_key}"; + } print $q->Tr(); print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector_class("$key","eselect","",$ctrel->{$key},@_lock_valxx)); @@ -429,51 +581,43 @@ EOF elsif($key =~ /int18/ && "$size" eq "select" && $node_meta->{tpl_id} == 210){#sharing_type my @_lock_valxx = (); - while (my ($key, $value) = each %{ $dbt->{copri_conf}->{sharing_type} }) { - push @_lock_valxx, "$key:$value";#[0:private] ... - } + foreach my $s_key (sort keys (%{ $dbt->{copri_conf}->{sharing_type} })) { + push @_lock_valxx, "$s_key:$dbt->{copri_conf}->{sharing_type}->{$s_key}"; + } print $q->Tr(); print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector_class("$key","eselect","",$ctrel->{$key},@_lock_valxx)); } elsif($key =~ /int20/ && "$size" eq "select" && $node_meta->{tpl_id} == 205){#lock_state locked/unlocked my @_lock_valxx = (); - while (my ($key, $value) = each %{ $dbt->{copri_conf}->{lock_state} }) { - push @_lock_valxx, "$key:$value";#[2:unlocked] - } + foreach my $s_key (sort keys (%{ $dbt->{copri_conf}->{lock_state} })) { + push @_lock_valxx, "$s_key:$dbt->{copri_conf}->{lock_state}->{$s_key}"; + } + my $sys_comment = ""; + $sys_comment = "Realer Schliesszustand kann nur am Mietrad gesteuert werden!" if($ctrel->{int11} == 2); print $q->Tr(); print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; - print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector_class("$key","eselect","",$ctrel->{$key},@_lock_valxx)); + print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector_class("$key","eselect","",$ctrel->{$key},@_lock_valxx),"$sys_comment"); } elsif($key =~ /int11/ && "$size" eq "select" && $node_meta->{tpl_id} == 205){#lock_system BC Ilockit usw my @_lock_valxx = (); - while (my ($key, $value) = each %{ $dbt->{copri_conf}->{lock_system} }) { - push @_lock_valxx, "$key:$value";#[2:Ilockit] - } + foreach my $s_key (sort keys (%{ $dbt->{copri_conf}->{lock_system} })) { + push @_lock_valxx, "$s_key:$dbt->{copri_conf}->{lock_system}->{$s_key}"; + } print $q->Tr(); print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector_class("$key","eselect","",$ctrel->{$key},@_lock_valxx)); } - #changed to time01 - elsif(1==2 && $key =~ /int01/ && "$size" eq "select" && $node_meta->{tpl_id} == 210){#tariff_unit - my @_unit_valxx = (); - while (my ($key, $value) = each %{ $dbt->{copri_conf}->{tariff_unit} }) { - push @_unit_valxx, "$key:$value";#[0.5:0,5 Std] - } - print $q->Tr(); - print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; - print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector_class("$key","eselect","",$ctrel->{$key},@_unit_valxx)); - } - elsif($key =~ /int/ && "$size" eq "select"){ - my @_valxx; - my $selsize="50px"; + #elsif($key =~ /int/ && "$size" eq "select"){ + # my @_valxx; + # my $selsize="50px"; - @_valxx = split(/\|/,$varenv{$seldes}); - $ctrel->{$key} =~ s/\.00//; - print $q->Tr(); - print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; - print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector("$key","$selsize",$ctrel->{$key},@_valxx)); - } + # @_valxx = split(/\|/,$varenv{$seldes}); + # $ctrel->{$key} =~ s/\.00//; + # print $q->Tr(); + # print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; + # print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector("$key","$selsize",$ctrel->{$key},@_valxx)); + #} elsif($key =~ /int/){ my $w = $size . "em"; print $q->Tr(); @@ -575,7 +719,7 @@ EOF my $h= 1;# if($size =~ /area(\d+)/); print $q->Tr(); print $q->td({-class=>'left_italic_cms',-colspan=>1},"$des"),"\n"; - print $q->td({-class=>'content1_cms', -colspan=>'3'},$q->textarea(-class=>"autos", -style=>'border: 1px solid silver;background-color:#ededed;',-rows=>"$h",-cols=>'35em;', -name=>"$key", -override=>'1',-default=>"$ctrel->{$key}")),"\n"; + print $q->td({-class=>'content1_cms', -colspan=>'3'},$q->textarea(-class=>"autos", -style=>'border: 1px solid silver;',-rows=>"$h",-cols=>'35em;', -name=>"$key", -override=>'1',-default=>"$ctrel->{$key}")),"\n"; } elsif($key =~ /txt/ && $size =~ /area(\d+)/){ #my $h= $1 if($size =~ /area(\d+)/); @@ -593,7 +737,7 @@ EOF $ctrel->{txt28} =~ s/\+/ /g; print $q->td({-style=>'border:1px solid silver;'},$ctrel->{txt28}),"\n"; }else{ - print $q->td({-class=>'content1_cms', -colspan=>'3'},$q->textarea(-id=>"$key", -class=>"autos", -style=>"border: 1px solid silver;background-color:#ededed;$h $w", -name=>"$key", -override=>'1',-default=>"$ctrel->{$key}")),"\n"; + print $q->td({-class=>'content1_cms', -colspan=>'3'},$q->textarea(-id=>"$key", -class=>"autos", -style=>"border: 1px solid silver;$h $w", -name=>"$key", -override=>'1',-default=>"$ctrel->{$key}")),"\n"; } } elsif($key =~ /txt02/ && $varenv{syshost} =~ /sharee/){ @@ -656,17 +800,20 @@ EOF } if($key =~ /date_time/){ - #print $q->hidden(-name=>'t_id', -override=>'1',-value=>"$times_id"); + my ($s_yy,$s_mo,$s_dd,$s_hh,$s_mi) = $lb->split_date($ctrel->{start_time}); + my ($e_yy,$e_mo,$e_dd,$e_hh,$e_mi) = $lb->split_date($ctrel->{end_time}); + print $q->Tr(); - print $q->td({-class=>'left_italic_cms'},"Datum Start"),"\n"; - print $q->td({-class=>'content1_cms', -colspan=>'1'},$q->textfield(-id=>'datepicker1',-class=>'etxt',-name=>"start_date",-default=>"$start_date",-override=>'1',-size=>"10",-maxlength=>10)),"\n"; - print $q->td({-class=>'content1_cms', -colspan=>'1'},"Ende", $q->textfield(-id=>'datepicker2',-class=>'etxt',-name=>"end_date",-default=>"$end_date",-override=>'1',-size=>"10",-maxlength=>10)),"\n"; - print $q->Tr(); - print $q->td({-class=>'left_italic_cms'},"Uhrzeit Start"),"\n"; - print $q->td({-class=>'content1_cms',-colspan=>'1'}, + print $q->td({-class=>'left_italic_cms'},"Start"),"\n"; + print $q->td({-class=>'content1_cms', -colspan=>'1'}, + $q->textfield(-id=>'datepicker3',-class=>'etxt',-name=>"start_date",-default=>"$s_dd.$s_mo.$s_yy",-override=>'1',-size=>"10",-maxlength=>10), $q->textfield(-class=>'etxt',-name=>"s_hh", -override=>'1',-default=>"$s_hh",-size=>"2",-maxlength=>2),":", $q->textfield(-class=>'etxt',-name=>"s_mi", -override=>'1',-default=>"$s_mi",-size=>"2",-maxlength=>2)),"\n"; - print $q->td({-class=>'content1_cms',-colspan=>'1'},"Ende", + + print $q->Tr(); + print $q->td({-class=>'left_italic_cms'},"Ende"),"\n"; + print $q->td({-class=>'content1_cms', -colspan=>'1'}, + $q->textfield(-id=>'datepicker4',-class=>'etxt',-name=>"end_date",-default=>"$e_dd.$e_mo.$e_yy",-override=>'1',-size=>"10",-maxlength=>10), $q->textfield(-class=>'etxt',-name=>"e_hh", -override=>'1',-default=>"$e_hh",-size=>"2",-maxlength=>2),":", $q->textfield(-class=>'etxt',-name=>"e_mi", -override=>'1',-default=>"$e_mi",-size=>"2",-maxlength=>2)),"\n"; } @@ -679,7 +826,7 @@ EOF print $q->end_table; #2.table ende - print $q->div($but->singlesubmit7("$edit","$save_key","$ib{$save_key}","margin:10px 20px;")),"\n"; + print $q->div($but->singlesubmit7("$edit","$save_key","$ib{$save_key}","margin:10px 5px;")),"\n"; my $debug = ""; $debug = "(ct_table: $node_meta->{ct_table} | main_id: $node_meta->{main_id} | c_id: $ctrel->{c_id} | tpl_id: $tpl->{tpl_id} | rel_id: $ctrel->{rel_id})"; print $q->div({-style=>'z-index:10;font-size:13px;'},"$debug"),"\n" if($users_dms->{u_id} == $dbt->{copri_conf}->{superu_id}); diff --git a/copri4/main/src/Tpl/Calorin.pm b/copri4/main/src/Tpl/Calorin.pm index 858b062..aac72f8 100755 --- a/copri4/main/src/Tpl/Calorin.pm +++ b/copri4/main/src/Tpl/Calorin.pm @@ -43,9 +43,12 @@ sub tpl(){ my $pri = new Pricing; my $lang = "de"; - #my $rel = $db->get_relation($main_id,$lang); my $tpl = $db->get_tpl($node_meta->{template_id}); - my @tpl_order = split /,/,$tpl->{tpl_order}; + + #DB tpl_order used by Rental Editor + #my @tpl_order = split /,/,$tpl->{tpl_order}; + my @tpl_order = ('date_time=Mietzeit','txt08=Vorname Name=readonly','int06=Start Station=5','int04=End Station=5','barcode=Rad Nr.=5','int12=Flotte=select','int10=Miet Status=select','int20=Schloss Status=select','owner=user=select'); + my %varenv = $cf->envonline(); my %ib = $but->ibuttons(); my $script = $q->script_name(); @@ -62,7 +65,6 @@ sub tpl(){ my $table = "contenttrans"; my $u_name = $q->escapeHTML("$R::u_name"); - my $ctf = $db->get_content1("contentuser",$dbt->{shareedms_conf}->{parent_id}); my $dbh = ""; my $channel_map = $dbt->channel_map(); @@ -96,16 +98,10 @@ sub tpl(){ my $bike_nodes = $dbt->fetch_rel4tpl4nd($dbh,$bnode); my $root_id = 100; - #alle nicht abgeschlossene mandanten-einträge .... my $x_main_ids = "$root_id,"; my $tplids = "$node_meta->{template_id},"; - $tplids .= "$ctf->{txt34}," if($ctf->{txt34}); - $tplids .= "$ctf->{txt35}," if($ctf->{txt35}); - $tplids .= "$ctf->{txt36}," if($ctf->{txt36}); - #sollte ins ctf-System. Verkaufliste,Verleihliste - #incl. Verkauf/Verleih journal - $tplids .= "204,207,218,209"; + $tplids .= "218,209"; $tplids =~ s/,$//; $x_main_ids .= $db->collect_noderec($root_id,$lang,"nothing"); @@ -163,11 +159,17 @@ sub tpl(){ $offset += $limit; } - my $cttpos; + my $cttpos = {}; $R::ct_ct_name =~ s/\#//; my $search = { - #table => "contenttranspos", table => "$node_meta->{ct_table}", + limit => $q->escapeHTML($limit), + offset => $q->escapeHTML($offset), + cal_sort_updown => $users_dms->{cal_sort_updown}, + }; + + if($R::base_edit !~ /transpos|save_pos/){ + $search = { %$search, cttpos_id => $q->escapeHTML("$R::cttpos_id"), txt06 => $q->escapeHTML("$R::txt06"), txt08 => $q->escapeHTML("$R::txt08"), @@ -182,11 +184,10 @@ sub tpl(){ ct_txt06 => $q->escapeHTML("$R::ct_txt06"),#PLZ ct_ct_name => $q->escapeHTML("$R::ct_ct_name"), owner => $q->escapeHTML("$R::owner"), - limit => $q->escapeHTML($limit), - offset => $q->escapeHTML($offset), - cal_sort_updown => $users_dms->{cal_sort_updown}, - }; - $search = { %$search, + } + } + + $search = { %$search, start_date_time => "$start_date_time", end_date_time => "$end_date_time", } if(!$R::cttpos_id); @@ -312,7 +313,7 @@ sub tpl(){ $nx++; $set_style = "background-color:#fcfdfb;"; $set_style = "background-color:#f4f1ee;" if($nx %= 2); - #$set_style = "background-color:$varenv{calendar_active_color}" if("$R::c_idpos" == "$cttpos->{$pid}->{c_id}"); + $set_style = "background-color:#b6dbe3;" if($R::c_id && $R::c_id == $cttpos->{$pid}->{c_id}); my $trans_style = "padding:0 5px;border: 2px solid #f7ae37;"; my $stamm_style = "padding:0 5px;border: 2px solid #98c13b;"; @@ -372,7 +373,7 @@ sub tpl(){ #if($ct_name){ if(1==1){ - print "\n"; + print "\n"; my $pos_hash = $cttpos->{$pid}; my $pos_details = ""; @@ -429,7 +430,10 @@ sub tpl(){ $end_station = $q->a({-class=>"linknav3",-style=>"",-href=>"/DMS/Waren/?detail_search=1&s_int04=$cttpos->{$pid}->{int04}",-title=>"Rad Warenstamm nach Station filtern"},"$cttpos->{$pid}->{int04}") if($ct4rel_ware->{$cttpos->{$pid}->{cc_id}}->{rel_id}); my $kunde = $q->a({-class=>"linknav3",-style=>"$ware_style",-href=>"/DMS/Kunden/?detail_search=1&s_c_id=$cttpos->{$pid}->{ca_id}",-title=>"Kunde im Kundenstamm"},"$cttpos->{$pid}->{txt08} ($cttpos->{$pid}->{ca_id})");#2021-05-24 saves kd name - print $q->div({-style=>'float:left;margin-left:1em;font-size:0.91em;'}, "$i) $start_time – $end_time → $kunde → Start Station $start_station → End Station $end_station → Rad $bikenr $status $lock_state $track_info → $u_name/$u_name_end $pos_id"),"\n"; + my $edit_pos = $q->a({-class=>"editboo",-href=>"?base_edit=transpos\&c_id=$cttpos->{$pid}->{c_id}\&owner=$users_dms->{u_id}",-title=>"Miete bearbeiten ($cttpos->{$pid}->{c_id})"},$q->span({-class=>"bi bi-file-earmark-text-fill"})); + + print $q->div({-style=>'float:left;margin-left:1em;font-size:0.91em;'}, "$edit_pos $i) $start_time – $end_time → $kunde → Start Station $start_station → End Station $end_station → Rad $bikenr $status $lock_state $track_info → $u_name/$u_name_end $pos_id"),"\n"; + print $q->div({-style=>'float:left;margin-left:1em;font-size:0.91em;'}, "→ Faktura", $q->a({-class=>"linknav3",-style=>"$trans_style",-href=>"/DMS/Faktura?ct_trans=open\&c_id4trans=$c_id4trans\&tpl_id4trans=$tpl_id4trans\&kind_of_trans=Faktura\&owner=$users_dms->{owner}",-title=>"Faktura Terminal öffnen"},"\#$ct_name")),"\n" if($c_id4trans && $tpl_id4trans); print $q->div({-style=>'float:left;margin-left:1em;font-size:0.91em;'}, "$user_device"),"\n"; diff --git a/copri4/main/src/Tpl/Karte_osm.pm b/copri4/main/src/Tpl/Karte_osm.pm index a16cc24..338d9f5 100755 --- a/copri4/main/src/Tpl/Karte_osm.pm +++ b/copri4/main/src/Tpl/Karte_osm.pm @@ -103,8 +103,8 @@ EOF print< - var map = L.map('map').setView([$lat, $lng], $map_zoom); -L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { + var map = L.map('map', { scrollWheelZoom: false }).setView([$lat, $lng], $map_zoom); + L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© OpenStreetMap contributors' }).addTo(map); diff --git a/copri4/main/src/Tpl/SubListe.pm b/copri4/main/src/Tpl/SubListe.pm index fbfca61..44d434a 100755 --- a/copri4/main/src/Tpl/SubListe.pm +++ b/copri4/main/src/Tpl/SubListe.pm @@ -184,7 +184,7 @@ EOF if(!$start_chck && !$end_chck && $main_ids && $tpl_ids){ #$rows = $db->count_content($searchref->{table_pos},"$main_ids","$tpl_ids"); - #collect search keys + #collect search keys. foreach my $postkey (@keywords){ foreach(@tpl_order){ my ($key,$val,$size) = split /=/,$_; @@ -195,7 +195,6 @@ EOF } } } - #trying to save hashref if($R::detail_search && ref($searchref) eq "HASH"){ store $searchref, $hashfile; diff --git a/copri4/main/src/Tpl/TransPositionen.pm b/copri4/main/src/Tpl/TransPositionen.pm index 870eaa5..89b4563 100755 --- a/copri4/main/src/Tpl/TransPositionen.pm +++ b/copri4/main/src/Tpl/TransPositionen.pm @@ -314,8 +314,6 @@ EOF print "\n"; }elsif($key =~ /txt/){ print $q->td({-class=>'element',-style=>"$txtstyle $set_style"},$q->textfield(-class=>'etxt',-style=>"$txtstyle",-name=>"col_$key",-default=>"$cttpos->{$id}->{$key}", -override=>'1',-size=>"$isize",-maxlength=>100),"\n"); - #}elsif($key =~ /save/){ - #print $q->td({-class=>'element',-style=>"$set_style"},$but->singlesubmit2("ct_trans","save_pos","$ib{save_pos}")); }elsif($key =~ /int/){ print $q->td({-class=>'tdint',-nowrap=>"1"}," \n"); } diff --git a/copri4/main/src/scripts/Ilockit_cloud.pl b/copri4/main/src/scripts/Ilockit_cloud.pl index 9fd3dcb..e629b53 100755 --- a/copri4/main/src/scripts/Ilockit_cloud.pl +++ b/copri4/main/src/scripts/Ilockit_cloud.pl @@ -213,6 +213,7 @@ sub get_devices { #sudo su www-data -c "./src/scripts/Ilockit_cloud.pl shareedms-fr01 get_events 6572 20" +#TODO &get_events if($todo eq "get_events"); sub get_events { diff --git a/copri4/main/src/scripts/coupongen.pl b/copri4/main/src/scripts/coupongen.pl new file mode 120000 index 0000000..4b65ed8 --- /dev/null +++ b/copri4/main/src/scripts/coupongen.pl @@ -0,0 +1 @@ +../../../../../sharee.bike/copri-bike/main/src/scripts/coupongen.pl \ No newline at end of file diff --git a/copri4/main/src/scripts/requested_timeout.pl b/copri4/main/src/scripts/requested_timeout.pl index 17991d1..474b8ae 100755 --- a/copri4/main/src/scripts/requested_timeout.pl +++ b/copri4/main/src/scripts/requested_timeout.pl @@ -48,6 +48,8 @@ my $update_cp = { table => "contenttranspos", #txt10 => "available", int10 => "1", + owner_end => "172", + mtime => "now()", }; my $update_cc = { table => "content", diff --git a/copri4/main/src/scripts/sig_client.pl b/copri4/main/src/scripts/sig_client.pl index 44be7ff..1007738 100755 --- a/copri4/main/src/scripts/sig_client.pl +++ b/copri4/main/src/scripts/sig_client.pl @@ -3,10 +3,15 @@ # SPDX-License-Identifier: AGPL-3.0-or-later # Copyright (c) Rainer Gümpelein, TeilRad GmbH # +#On this forking script, nothing will saved on script, else by execute APIsigclient methodes +# +# command line syntax +# sudo su www-data -c "./src/scripts/sig_client.pl shareeapp-sx 'todo' 'user_id' 'bike_id' 'pos_id'" +# # sudo su www-data -c "./src/scripts/sig_client.pl shareeapp-sx bikes_available" # -# sudo su www-data -c "./src/scripts/sig_client.pl shareeapp-sx reserve 1842 '380116b5-0522-43da-ab66-477744a731a3'" -# sudo su www-data -c "./src/scripts/sig_client.pl shareeapp-sx rental 1842 '380116b5-0522-43da-ab66-477744a731a3'" +# sudo su www-data -c "./src/scripts/sig_client.pl shareeapp-sx reserve 1842 '380116b5-0522-43da-ab66-477744a731a3' ''" +# sudo su www-data -c "./src/scripts/sig_client.pl shareeapp-sx rental 1842 '380116b5-0522-43da-ab66-477744a731a3' ''" # use vars qw($syshost); @@ -36,7 +41,8 @@ my $dbh = ""; my $todo = $ARGV[1] || ""; my $user_id = $ARGV[2] || ""; -my $pos_id = $ARGV[3] || ""; +my $bike_id = $ARGV[3] || ""; +my $pos_id = $ARGV[4] || ""; open(FILE,">>$varenv{logdir}/APIsigclient.log"); print FILE "\n*** $now_dt 'sig_client fork with todo:$todo|user_id:$user_id|pos_id:$pos_id' \n"; @@ -51,7 +57,7 @@ my $apref = { my $ctadr = { c_id => 0 }; $ctadr = $dbt->fetch_record($dbh,$apref) if($user_id =~ /^\d+$/ && $user_id > 0); -my $ct_bike = { txt22 => "" }; +my $ct_bike = { txt22 => "$bike_id" }; my $posref = { table => "contenttranspos", @@ -61,7 +67,7 @@ my $posref = { c_id => "$pos_id", }; my $ctpos = { c_id => 0 }; -$ctpos = $dbt->fetch_tablerecord($dbh,$posref) if($user_id =~ /^\d+$/ && $user_id > 0 && $pos_id); +$ctpos = $dbt->fetch_tablerecord($dbh,$posref) if($user_id =~ /^\d+$/ && $user_id > 0 && $pos_id && $pos_id =~ /^\d+$/); print FILE "fetched from DB ctadr:$ctadr->{c_id}|ctpos:$ctpos->{c_id}\n"; @@ -81,25 +87,36 @@ if($todo eq "bikes_available"){ #print $0 . Dumper($return) . "\n"; } -#only for tests +#sig => copri key mapping +#bike id => txt22 +#reservationId => txt10 +#renatlId => txt11 + +#only for tests. build in methode elsif($todo eq "reserve"){ #$ctadr = { c_id => 1842 }; #$ct_bike = { txt22 => "380116b5-0522-43da-ab66-477744a731a3" }; - my $return = $si->sig_booking(\%varenv,$ctadr,$ct_bike,$ctpos,$todo); + my $return = $si->sig_booking(\%varenv,$todo,$ctadr,$ct_bike,$ctpos); #print $0 . Dumper($return) . "\n"; } -#used also live! to fork rental request with +#live! Fork rental request with bike "id" elsif($todo eq "rental" && $ctadr->{c_id} > 0 && $ctpos->{txt22}){ #$ctadr = { c_id => 1842 }; #$ct_bike = { txt22 => "380116b5-0522-43da-ab66-477744a731a3" }; - my $return = $si->sig_booking(\%varenv,$ctadr,$ct_bike,$ctpos,$todo); + my $return = $si->sig_booking(\%varenv,$todo,$ctadr,$ct_bike,$ctpos); #print $0 . Dumper($return) . "\n"; } -#used also live! to fork rental_end request with "rentalId" +#live! Fork rental_end request with "rentalId" elsif($todo eq "rental_end" && $ctadr->{c_id} > 0 && $ctpos->{txt11}){ - my $return = $si->sig_booking(\%varenv,$ctadr,$ct_bike,$ctpos,$todo); + my $return = $si->sig_booking(\%varenv,$todo,$ctadr,$ct_bike,$ctpos); + #print $0 . Dumper($return) . "\n"; +} + +#only for tests. build in methode +elsif($todo eq "rentals_running" && $ctadr->{c_id} > 0 && $ctpos->{txt22}){ + my $return = $si->sig_booking(\%varenv,$todo,$ctadr,$ct_bike,$ctpos); #print $0 . Dumper($return) . "\n"; } diff --git a/copri4/shareeapp-operator/src/Lib/Mlogic.pm b/copri4/shareeapp-operator/src/Lib/Mlogic.pm index 63fa0b3..bd4078d 100755 --- a/copri4/shareeapp-operator/src/Lib/Mlogic.pm +++ b/copri4/shareeapp-operator/src/Lib/Mlogic.pm @@ -42,11 +42,11 @@ sub tpl(){ if($users_sharee->{c_id} && $R::sharee_edit ne "delete_account2" && ($users_sharee->{c_id} eq $varenv->{superu_id} || $dbt->{copri_conf}->{stage} eq "test")){ my $coo = $q->cookie('domcookie') || $q->param('sessionid') || ""; - my $api_test = "sharee_fr01"; my $bike="FR1538"; + #my $api_test = "sharee_fr01"; my $bike="FR1538"; #my $api_test = "sharee_fr01"; my $bike="FR4781";#Tracking and BVB test #my $api_test = "sharee_kn"; my $bike="KN205"; #my $api_test = "sharee_wue"; my $bike="WUE5524"; - #my $api_test = "sharee_sx"; my $bike="S3X1001"; + my $api_test = "sharee_sx"; my $bike="S3X1001"; #my $api_test = "sharee_ren"; my $bike="REN2"; print $q->div({-style=>'float:right;text-align:right;height:25px;padding:6px 15px;background-color:white'},$q->a({-style=>"background-color:#ffffff;color:#$bgcolor1;", -href=>"$varenv->{metahost}/src/scripts/tests/index.pl?sessionid=$coo\&api_test=$api_test\&bike=$bike", -target=>'_blank'}," [ tests --> $api_test ] "),"$users_sharee->{txt08}",$q->a({-style=>"color:#$bgcolor1;", -href=>"logout_sharee$session"},"logout")),"\n"; diff --git a/copri4/shareedms-operator/src/Lib/Mlogic.pm b/copri4/shareedms-operator/src/Lib/Mlogic.pm index 38f79c3..cda5a00 100755 --- a/copri4/shareedms-operator/src/Lib/Mlogic.pm +++ b/copri4/shareedms-operator/src/Lib/Mlogic.pm @@ -10,6 +10,7 @@ use CGI::Carp qw(fatalsToBrowser); use CGI ':standard'; use Config::General; use Mod::Buttons; +use Mod::Basework; use Mod::Libenz; use Mod::Libenzdb; use Mod::DBtank; @@ -34,6 +35,7 @@ sub tpl(){ my $return = shift || ""; my $q = new CGI; + my $bw = new Basework; my $lb = new Libenz; my $db = new Libenzdb; my $dbt = new DBtank; @@ -129,7 +131,13 @@ sub tpl(){ } if($users_dms->{u_id} && $main_id){ - $return = $lb->return_feedback($return,$users_dms->{kind_of_trans},$users_dms->{owner}) if($return !~ /shareejson/); + + if(ref($return) eq "HASH"){ + $return = $bw->return_feedback($node_meta,$users_dms,$return); + }else{ + #deprecated + $return = $lb->return_feedback($return,$node_meta->{node_name},$users_dms->{owner}) if($return !~ /shareejson/); + } if($main_id >= "100000"){ my $mstyle=""; @@ -359,7 +367,7 @@ EOF if($return !~ /failure/){ if(($R::ct_trans !~ /close/) && ($ct_table =~ /contenttrans/) && ($R::ct_trans || $R::trans2edit || $R::ctpos_activ || $R::select_part || $R::set_main_id)){ &Modalbox::mobox($node_meta,$users_dms,$mode,$return); - }elsif(($R::ct_trans !~ /close/) && ($ct_table =~ /content$|contentadr|contentuser|contentpos|users$/ && ($R::ct_trans || $R::rel_edit || $R::base_edit)) || ($R::node2edit && $R::node2edit =~ /edit/)){ + }elsif(($R::ct_trans !~ /close/) && ($ct_table =~ /content$|contentadr|contentuser|contentpos|users$|contenttranspos/ && ($R::ct_trans || $R::rel_edit || $R::base_edit)) || ($R::node2edit && $R::node2edit =~ /edit/)){ &Modalbox3::mobox3($node_meta,$users_dms,$mode,$return) if($R::rel_edit !~ /delete|save/ && $R::ct_trans !~ /delete/ && $R::base_edit !~ /delete|save/ && !$R::service_id); } }