mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-20 13:26:02 +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:
parent
791997f95d
commit
97cfaa871f
@ -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
|
||||||
|
@ -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) );
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user