From fc376368cbe68bedb09bf9c8f33e65cfa8926328 Mon Sep 17 00:00:00 2001 From: borisneubert <> Date: Wed, 13 Aug 2014 14:37:55 +0000 Subject: [PATCH] enabled JavaScript in 02_RSS to support WebViewControl git-svn-id: https://svn.fhem.de/fhem/trunk@6402 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 1 + fhem/FHEM/02_RSS.pm | 36 ++++++++++++++++++++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/fhem/CHANGED b/fhem/CHANGED index 51b4927b5..31c80a670 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,6 @@ # 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. + - feature: enabled JavaScript in 02_RSS to support WebViewControl - added: new module 36_WMBUS.pm (kaihs) Wireless M-Bus - feature: SYSMON: aded new plots (power infos for cubietruck) - feature: SYSMON: aded new readings for each network interface: ip and ip6 diff --git a/fhem/FHEM/02_RSS.pm b/fhem/FHEM/02_RSS.pm index 53e645ea1..3459176af 100644 --- a/fhem/FHEM/02_RSS.pm +++ b/fhem/FHEM/02_RSS.pm @@ -222,6 +222,24 @@ RSS_returnRSS($) { } ################## +sub +RSS_getScript() { + + my $scripts= ""; + my $jsTemplate = ''; + if(defined($data{FWEXT})) { + foreach my $k (sort keys %{$data{FWEXT}}) { + my $h = $data{FWEXT}{$k}; + next if($h !~ m/HASH/ || !$h->{SCRIPT}); + my $script = $h->{SCRIPT}; + $script = ($script =~ m,^/,) ? "$FW_ME$script" : "$FW_ME/pgm2/$script"; + $scripts .= sprintf($jsTemplate, $script) . "\n"; + } + } + return $scripts; +} + + sub RSS_returnHTML($) { my ($name) = @_; @@ -232,7 +250,10 @@ RSS_returnHTML($) { my $refresh= AttrVal($name, 'refresh', 60); my $areas= AttrVal($name, 'areas', ""); my $mime = ($type eq 'png')? 'image/png' : 'image/jpeg'; - my $code= "\n \n $name\n \n \n \n \n \n $areas\n \n \n"; + my $doctype= ''; + my $xmlns= 'xmlns="http://www.w3.org/1999/xhtml"'; + my $scripts= RSS_getScript(); + my $code= "$doctype\n\n\n$name\n\n$scripts\n\n\n\n$areas\n\n\n"; return ("text/html; charset=utf-8", $code); } @@ -617,6 +638,7 @@ RSS_returnIMG($$) { # set the background # # check if background directory is set + my $reason= "?"; # remember reason for undefined image my $bgdir= AttrVal($name,"bg","undef"); if(defined($bgdir)){ my $bgnr; # item number @@ -639,6 +661,10 @@ RSS_returnIMG($$) { # detect pictures if(opendir(BGDIR, $bgdir)){ my @bgfiles= grep {$_ !~ /^\./} readdir(BGDIR); + + #foreach my $f (@bgfiles) { + # Debug sprintf("File \"%s\"\n", $f); + #} closedir(BGDIR); # get item number if($#bgfiles>=0) { @@ -672,6 +698,7 @@ RSS_returnIMG($$) { } } else { $S= undef; + $reason= "Something was wrong with background image \"$bgfile\"."; } } } @@ -679,7 +706,12 @@ RSS_returnIMG($$) { # # evaluate layout # - RSS_evalLayout($S, $name, $defs{$name}{fhem}{layout}); + if(defined($S)) { + RSS_evalLayout($S, $name, $defs{$name}{fhem}{layout}); + } else { + Log3 undef, 2, "$name: Could not create image. $reason"; + $S= GD::Image->newTrueColor($width,$height); # return empty image + } $defs{$name}{STATE} = localtime(); }; warn $@ if $@;