From 1e1d24f2f6baa547e5a377440ca3168e089f29d2 Mon Sep 17 00:00:00 2001 From: rudolfkoenig Date: Fri, 14 Mar 2014 09:26:12 +0000 Subject: [PATCH] FHEMWEB: enable 0 as a command for devStateIcon git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@5221 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/01_FHEMWEB.pm | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/fhem/FHEM/01_FHEMWEB.pm b/fhem/FHEM/01_FHEMWEB.pm index 918d3a636..01008f0c5 100755 --- a/fhem/FHEM/01_FHEMWEB.pm +++ b/fhem/FHEM/01_FHEMWEB.pm @@ -119,6 +119,7 @@ FHEMWEB_Initialize($) my @attrList = qw( CORS:0,1 HTTPS:1,0 + JavaScripts SVGcache:1,0 allowedCommands allowfrom @@ -261,7 +262,6 @@ FW_Read($) } - # Data from HTTP Client my $buf; my $ret = sysread($c, $buf, 1024); @@ -574,7 +574,7 @@ FW_answerCall($) FW_pO ''; FW_pO ''; - FW_pO "\n$t"; + FW_pO "\n$t"; FW_pO ''; # Enable WebApps @@ -612,14 +612,16 @@ FW_answerCall($) } } + ####################### + # Other JavaScripts FW_pO sprintf($jsTemplate, "$FW_ME/pgm2/svg.js") if($FW_plotmode eq "SVG"); - if($FW_plotmode eq"jsSVG") { - FW_pO sprintf($jsTemplate, "$FW_ME/pgm2/jsSVG.js"); - FW_pO sprintf($jsTemplate, "$FW_ME/pgm2/jquery.min.js"); - } - foreach my $js (@FW_fhemwebjs) { - FW_pO sprintf($jsTemplate, "$FW_ME/pgm2/$js"); - } + map { FW_pO sprintf($jsTemplate, "$FW_ME/pgm2/$_") } @FW_fhemwebjs; + + $jsTemplate = ''; + map { + my $n = $_; $n =~ s+.*/++; $n =~ s/.js$//; $n =~ s/fhem_//; $n .= "Param"; + FW_pO sprintf($jsTemplate, AttrVal($FW_wname, $n, ""), "$FW_ME/$_"); + } split(" ", AttrVal($FW_wname, "JavaScripts", "")); my $onload = AttrVal($FW_wname, "longpoll", 1) ? "onload=\"FW_delayedStart()\"" : ""; @@ -1833,6 +1835,16 @@ FW_Attr(@) } } + if($a[2] eq "JavaScripts" && $a[0] eq "set") { # create some attributes + my (%a, @add); + map { $a{$_} = 1 } split(" ", $modules{FHEMWEB}{AttrList}); + map { + $_ =~ s+.*/++; $_ =~ s/.js$//; $_ =~ s/fhem_//; $_ .= "Param"; + push @add, $_ if(!$a{$_}); + } split(" ", $a[3]); + $modules{FHEMWEB}{AttrList} .= " ".join(" ",@add) if(@add); + } + return $retMsg; } @@ -2135,7 +2147,7 @@ FW_devState($$@) my ($icon, $isHtml); ($icon, $link, $isHtml) = FW_dev2image($d); $txt = ($isHtml ? $icon : FW_makeImage($icon, $state)) if($icon); - $link = "cmd.$d=set $d $link" if($link); + $link = "cmd.$d=set $d $link" if(defined($link)); } @@ -2144,12 +2156,12 @@ FW_devState($$@) # Have to cover: "on:An off:Aus", "A0:Aus AI:An Aus:off An:on" my $on = ReplaceEventMap($d, "on", 1); my $off = ReplaceEventMap($d, "off", 1); - $link = "cmd.$d=set $d " . ($state eq $on ? $off : $on) if(!$link); + $link = "cmd.$d=set $d " . ($state eq $on ? $off : $on) if(!defined($link)); $cmdList = "$on:$off" if(!$cmdList); } - if($link) { # Have command to execute + if(defined($link)) { # Have command to execute my $room = AttrVal($d, "room", undef); if($room) { if($FW_room && $room =~ m/\b$FW_room\b/) {