2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-21 01:46:08 +00:00

02_FTUISRV: fix replacesetMagic to use hash - fhem.pl warning

git-svn-id: https://svn.fhem.de/fhem/trunk@14077 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
viegener 2017-04-22 21:24:14 +00:00
parent 791997f95d
commit 97cfaa871f
2 changed files with 35 additions and 23 deletions

View File

@ -1,5 +1,6 @@
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
# Do not insert empty lines here, update check depends on it. # Do not insert empty lines here, update check depends on it.
- bugfix: 02_FTUISRV: fix replacesetMagic to use hash - fhem.pl warning
- bugfix: 10_pilight_ctrl: fix GS-iwds07 - bugfix: 10_pilight_ctrl: fix GS-iwds07
- feature: 98_TRAFFIC: v1.3.1, attribute change, map setting save buttons - feature: 98_TRAFFIC: v1.3.1, attribute change, map setting save buttons
- feature: 98_TRAFFIC: v1.3, map customizable, enhancements, fix JSON error - feature: 98_TRAFFIC: v1.3, map customizable, enhancements, fix JSON error

View File

@ -74,6 +74,8 @@
# more tolerance on spaces around = # more tolerance on spaces around =
# doc change on ftui-if # doc change on ftui-if
# FIX: changed replaceSetmagic to hand over real device hash
#
# #
################################################################ ################################################################
#TODO: #TODO:
@ -269,6 +271,9 @@ sub FTUISRV_CGI() {
# get device name # get device name
$name= $data{FWEXT}{$link}{deviceName}; $name= $data{FWEXT}{$link}{deviceName};
# get corresponding hash
my $hash = $defs{$name};
# check system / device loglevel # check system / device loglevel
my $logLevel = $attr{global}{verbose}; my $logLevel = $attr{global}{verbose};
$logLevel = $attr{$name}{verbose} if ( defined( $attr{$name}{verbose} ) ); $logLevel = $attr{$name}{verbose} if ( defined( $attr{$name}{verbose} ) );
@ -299,7 +304,7 @@ sub FTUISRV_CGI() {
$filename = $1; $filename = $1;
$value = $4; $value = $4;
Log3 $name, 5, "$name: set Reading $reading = $value"; Log3 $name, 5, "$name: set Reading $reading = $value";
readingsSingleUpdate($defs{$name}, $reading, $value, 1); readingsSingleUpdate($hash, $reading, $value, 1);
} }
}; };
@ -316,12 +321,12 @@ sub FTUISRV_CGI() {
my $parhash = {}; my $parhash = {};
my $validatehash = {}; my $validatehash = {};
my ($err, $validated, $content) = FTUISRV_handletemplatefile( $name, $filename, $parhash, $validatehash ); my ($err, $validated, $content) = FTUISRV_handletemplatefile( $hash, $filename, $parhash, $validatehash );
# Validate HTML Result after parsing # Validate HTML Result after parsing
my $validate = AttrVal($name,'validateResult',0); my $validate = AttrVal($name,'validateResult',0);
if ( ( $validate ) && ( ( $filename =~ /\.html?$/i ) || ( $filename =~ /\.part?$/i ) ) && ( ! $validated ) ) { if ( ( $validate ) && ( ( $filename =~ /\.html?$/i ) || ( $filename =~ /\.part?$/i ) ) && ( ! $validated ) ) {
FTUISRV_validateHtml( $name, $content, $validate, $filename ); FTUISRV_validateHtml( $hash, $content, $validate, $filename );
} }
return("text/plain; charset=utf-8", "Error in filehandling: $err") if ( defined($err) ); return("text/plain; charset=utf-8", "Error in filehandling: $err") if ( defined($err) );
@ -354,7 +359,8 @@ sub FTUISRV_CGI() {
# optional: check FTUI # optional: check FTUI
sub FTUISRV_validateHtml( $$$$ ) { sub FTUISRV_validateHtml( $$$$ ) {
my ($name, $content, $validateLevel, $filename ) = @_; my ($hash, $content, $validateLevel, $filename ) = @_;
my $name = $hash->{NAME};
# state: 0: normal / 1: in tag / 2: in comment / 3: in quotes / 4: in dquotes / 5: in ptag # state: 0: normal / 1: in tag / 2: in comment / 3: in quotes / 4: in dquotes / 5: in ptag
# #
@ -640,7 +646,8 @@ sub popTag( $$ ) {
# contents # contents
sub FTUISRV_replaceKeys( $$$$ ) { sub FTUISRV_replaceKeys( $$$$ ) {
my ($name, $filename, $content, $parhash) = @_; my ($hash, $filename, $content, $parhash) = @_;
my $name = $hash->{NAME};
# make replacements of keys from hash # make replacements of keys from hash
while ( $content =~ /<\?ftui-key=([^\s]+)\s*\?>/g ) { while ( $content =~ /<\?ftui-key=([^\s]+)\s*\?>/g ) {
@ -675,7 +682,8 @@ sub FTUISRV_replaceKeys( $$$$ ) {
# contents # contents
sub FTUISRV_handleIf( $$$ ) { sub FTUISRV_handleIf( $$$ ) {
my ($name, $filename, $content) = @_; my ($hash, $filename, $content) = @_;
my $name = $hash->{NAME};
# Look for if expression # Look for if expression
my $done = ""; my $done = "";
@ -687,7 +695,7 @@ sub FTUISRV_handleIf( $$$ ) {
my $rest = $3; my $rest = $3;
# handle rest to check recursively for further ifs # handle rest to check recursively for further ifs
$rest = FTUISRV_handleIf( $name, $filename, $rest ); $rest = FTUISRV_handleIf( $hash, $filename, $rest );
# identify then and else parts # identify then and else parts
my $then; my $then;
@ -708,7 +716,7 @@ sub FTUISRV_handleIf( $$$ ) {
# check expression # check expression
my %dummy; my %dummy;
my ($err, @a) = ReplaceSetMagic(\%dummy, 0, ( $expr ) ); my ($err, @a) = ReplaceSetMagic($hash, 0, ( $expr ) );
if ( $err ) { if ( $err ) {
Log3 $name, 1, "$name: FTUISRV_handleIf failed on ReplaceSetmagic with :$err: on header :$expr:"; Log3 $name, 1, "$name: FTUISRV_handleIf failed on ReplaceSetmagic with :$err: on header :$expr:";
} else { } else {
@ -743,7 +751,8 @@ sub FTUISRV_handleIf( $$$ ) {
# contents # contents
sub FTUISRV_handleInc( $$$$$$ ) { sub FTUISRV_handleInc( $$$$$$ ) {
my ($name, $filename, $curdir, $content, $parhash, $validatehash) = @_; my ($hash, $filename, $curdir, $content, $parhash, $validatehash) = @_;
my $name = $hash->{NAME};
# Look for if expression # Look for if expression
my $done = ""; my $done = "";
@ -761,7 +770,7 @@ sub FTUISRV_handleInc( $$$$$$ ) {
# replace [device:reading] or even perl expressions with replaceSetMagic # replace [device:reading] or even perl expressions with replaceSetMagic
my %dummy; my %dummy;
Log3 $name, 4, "$name: FTUISRV_handleInc ReplaceSetmagic INC before :$values:"; Log3 $name, 4, "$name: FTUISRV_handleInc ReplaceSetmagic INC before :$values:";
my ($err, @a) = ReplaceSetMagic(\%dummy, 0, ( $values ) ); my ($err, @a) = ReplaceSetMagic($hash, 0, ( $values ) );
if ( $err ) { if ( $err ) {
Log3 $name, 1, "$name: FTUISRV_handleInc ($filename) failed on ReplaceSetmagic with :$err: on INC :$values:"; Log3 $name, 1, "$name: FTUISRV_handleInc ($filename) failed on ReplaceSetmagic with :$err: on INC :$values:";
@ -790,7 +799,7 @@ sub FTUISRV_handleInc( $$$$$$ ) {
Log3 $name, 4, "$name: start handling include (rec) :$incfile:"; Log3 $name, 4, "$name: start handling include (rec) :$incfile:";
my $inccontent; my $inccontent;
my $dummy; my $dummy;
($err, $dummy, $inccontent) = FTUISRV_handletemplatefile( $name, $incfile, $incparhash, $validatehash ); ($err, $dummy, $inccontent) = FTUISRV_handletemplatefile( $hash, $incfile, $incparhash, $validatehash );
Log3 $name, 4, "$name: done handling include (rec) :$incfile: ".(defined($err)?"Err: ".$err:"ok"); Log3 $name, 4, "$name: done handling include (rec) :$incfile: ".(defined($err)?"Err: ".$err:"ok");
@ -823,7 +832,8 @@ sub FTUISRV_handleInc( $$$$$$ ) {
# contents # contents
sub FTUISRV_handleLoopInc( $$$$$$ ) { sub FTUISRV_handleLoopInc( $$$$$$ ) {
my ($name, $filename, $curdir, $content, $parhash, $validatehash) = @_; my ($hash, $filename, $curdir, $content, $parhash, $validatehash) = @_;
my $name = $hash->{NAME};
# Look for if expression # Look for if expression
my $done = ""; my $done = "";
@ -851,7 +861,7 @@ sub FTUISRV_handleLoopInc( $$$$$$ ) {
# replace [device:reading] or even perl expressions with replaceSetMagic # replace [device:reading] or even perl expressions with replaceSetMagic
my %dummy; my %dummy;
Log3 $name, 4, "$name: FTUISRV_handleLoopInc ReplaceSetmagic INC before :$values:"; Log3 $name, 4, "$name: FTUISRV_handleLoopInc ReplaceSetmagic INC before :$values:";
my ($err, @a) = ReplaceSetMagic(\%dummy, 0, ( $values ) ); my ($err, @a) = ReplaceSetMagic($hash, 0, ( $values ) );
if ( $err ) { if ( $err ) {
Log3 $name, 1, "$name: FTUISRV_handleLoopInc ($filename) failed on ReplaceSetmagic with :$err: on INC :$values:"; Log3 $name, 1, "$name: FTUISRV_handleLoopInc ($filename) failed on ReplaceSetmagic with :$err: on INC :$values:";
@ -889,7 +899,7 @@ sub FTUISRV_handleLoopInc( $$$$$$ ) {
Log3 $name, 4, "$name: start handling include (rec) :$incfile: with value $key = :$loopvariable:"; Log3 $name, 4, "$name: start handling include (rec) :$incfile: with value $key = :$loopvariable:";
my $inccontent; my $inccontent;
my $dummy; my $dummy;
($err, $dummy, $inccontent) = FTUISRV_handletemplatefile( $name, $incfile, $loopincparhash, $validatehash ); ($err, $dummy, $inccontent) = FTUISRV_handletemplatefile( $hash, $incfile, $loopincparhash, $validatehash );
Log3 $name, 4, "$name: done handling include (rec) :$incfile: ".(defined($err)?"Err: ".$err:"ok"); Log3 $name, 4, "$name: done handling include (rec) :$incfile: ".(defined($err)?"Err: ".$err:"ok");
@ -923,7 +933,8 @@ sub FTUISRV_handleLoopInc( $$$$$$ ) {
# contents # contents
sub FTUISRV_handletemplatefile( $$$$ ) { sub FTUISRV_handletemplatefile( $$$$ ) {
my ($name, $filename, $parhash, $validatehash) = @_; my ($hash, $filename, $parhash, $validatehash) = @_;
my $name = $hash->{NAME};
my $content; my $content;
my $err; my $err;
@ -939,7 +950,7 @@ sub FTUISRV_handletemplatefile( $$$$ ) {
if ( ( $validate ) && ( ! defined($validatehash->{$filename} ) ) && ( ( $filename =~ /\.html?$/i ) || ( $filename =~ /\.part?$/i ) ) ) { if ( ( $validate ) && ( ! defined($validatehash->{$filename} ) ) && ( ( $filename =~ /\.html?$/i ) || ( $filename =~ /\.part?$/i ) ) ) {
$validated = 1; $validated = 1;
$validatehash->{$filename} = 1 if ( ! defined($validatehash->{$filename} ) ); $validatehash->{$filename} = 1 if ( ! defined($validatehash->{$filename} ) );
FTUISRV_validateHtml( $name, $content, $validate, $filename ); FTUISRV_validateHtml( $hash, $content, $validate, $filename );
} }
@ -969,10 +980,10 @@ sub FTUISRV_handletemplatefile( $$$$ ) {
# replace escaped > (i.e. \>) by > for key replacement # replace escaped > (i.e. \>) by > for key replacement
$sval =~ s/\?\\>/\?>/g; $sval =~ s/\?\\>/\?>/g;
$sval = FTUISRV_replaceKeys( $name, $filename." header", $sval, $parhash ); $sval = FTUISRV_replaceKeys( $hash, $filename." header", $sval, $parhash );
Log3 $name, 4, "$name: FTUISRV_handletemplatefile default value for key :$skey: after replace :".$sval.":"; Log3 $name, 4, "$name: FTUISRV_handletemplatefile default value for key :$skey: after replace :".$sval.":";
my ($err, @a) = ReplaceSetMagic(\%dummy, 0, ( $sval ) ); my ($err, @a) = ReplaceSetMagic($hash, 0, ( $sval ) );
if ( $err ) { if ( $err ) {
Log3 $name, 1, "$name: FTUISRV_handletemplatefile failed on ReplaceSetmagic with :$err: on header :$sval:"; Log3 $name, 1, "$name: FTUISRV_handletemplatefile failed on ReplaceSetmagic with :$err: on header :$sval:";
} else { } else {
@ -991,19 +1002,19 @@ sub FTUISRV_handletemplatefile( $$$$ ) {
} }
# replace the keys first before loop/if # replace the keys first before loop/if
$content = FTUISRV_replaceKeys( $name, $filename, $content, $parhash ); $content = FTUISRV_replaceKeys( $hash, $filename, $content, $parhash );
# eval if else endif expressions # eval if else endif expressions
$content = FTUISRV_handleIf( $name, $filename, $content ); $content = FTUISRV_handleIf( $hash, $filename, $content );
# Handle includes # Handle includes
Log3 $name, 4, "$name: look for includes :$filename:"; Log3 $name, 4, "$name: look for includes :$filename:";
( $err, $content ) = FTUISRV_handleInc( $name, $filename, $curdir, $content, $parhash, $validatehash ); ( $err, $content ) = FTUISRV_handleInc( $hash, $filename, $curdir, $content, $parhash, $validatehash );
# error will always result in stopping recursion # error will always result in stopping recursion
return ($err, $validated, $content) if ( defined($err) ); return ($err, $validated, $content) if ( defined($err) );
( $err, $content ) = FTUISRV_handleLoopInc( $name, $filename, $curdir, $content, $parhash, $validatehash ); ( $err, $content ) = FTUISRV_handleLoopInc( $hash, $filename, $curdir, $content, $parhash, $validatehash );
# error will always result in stopping recursion # error will always result in stopping recursion
return ($err, $validated, $content) if ( defined($err) ); return ($err, $validated, $content) if ( defined($err) );