Changes for Uli's FLOORPLAN

git-svn-id: https://fhem.svn.sourceforge.net/svnroot/fhem/trunk/fhem@1321 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig
2012-03-06 15:28:35 +00:00
parent 00cebf7f37
commit 9b11cb129e

View File

@@ -40,11 +40,17 @@ use vars qw($FW_dir); # moddir (./FHEM), needed by SVG
use vars qw($FW_ME); # webname (default is fhem), needed by 97_GROUP use vars qw($FW_ME); # webname (default is fhem), needed by 97_GROUP
use vars qw($FW_ss); # is smallscreen, needed by 97_GROUP/95_VIEW use vars qw($FW_ss); # is smallscreen, needed by 97_GROUP/95_VIEW
use vars qw($FW_tp); # is touchpad (iPad / etc) use vars qw($FW_tp); # is touchpad (iPad / etc)
use vars qw(%FW_types);# device types, for 97_GROUP/95_VIEW
# global variables, also used by 97_GROUP/95_VIEW/95_FLOORPLAN
use vars qw(%FW_types); # device types,
use vars qw($FW_RET); # Returned data (html)
use vars qw($FW_wname); # Web instance
use vars qw($FW_subdir); # Sub-path in URL for extensions, e.g. 95_FLOORPLAN
use vars qw(%FW_pos); # scroll position
my $zlib_loaded; my $zlib_loaded;
my $try_zlib = 1; my $try_zlib = 1;
######################### #########################
# As we are _not_ multithreaded, it is safe to use global variables. # As we are _not_ multithreaded, it is safe to use global variables.
# Note: for delivering SVG plots we fork # Note: for delivering SVG plots we fork
@@ -57,14 +63,11 @@ my %FW_icons; # List of icons
my $FW_iconsread; # Timestamp of last icondir check my $FW_iconsread; # Timestamp of last icondir check
my $FW_plotmode; # Global plot mode (WEB attribute) my $FW_plotmode; # Global plot mode (WEB attribute)
my $FW_plotsize; # Global plot size (WEB attribute) my $FW_plotsize; # Global plot size (WEB attribute)
my %FW_pos; # scroll position
my $FW_reldoc; # $FW_ME/commandref.html; my $FW_reldoc; # $FW_ME/commandref.html;
my $FW_RET; # Returned data (html)
my $FW_RETTYPE; # image/png or the like my $FW_RETTYPE; # image/png or the like
my $FW_room; # currently selected room my $FW_room; # currently selected room
my %FW_rooms; # hash of all rooms my %FW_rooms; # hash of all rooms
my %FW_types; # device types, for sorting my %FW_types; # device types, for sorting
my $FW_wname; # Web instance
my $FW_cname; # Current connection my $FW_cname; # Current connection
my @FW_zoom; # "qday", "day","week","month","year" my @FW_zoom; # "qday", "day","week","month","year"
my %FW_zoom; # the same as @FW_zoom my %FW_zoom; # the same as @FW_zoom
@@ -227,6 +230,8 @@ FW_Read($)
$FW_wname = $hash->{SNAME}; $FW_wname = $hash->{SNAME};
$FW_cname = $name; $FW_cname = $name;
$FW_subdir = "";
my $ll = GetLogLevel($FW_wname,4); my $ll = GetLogLevel($FW_wname,4);
my $c = $hash->{CD}; my $c = $hash->{CD};
if(!$zlib_loaded && $try_zlib && AttrVal($FW_wname, "fwcompress", 1)) { if(!$zlib_loaded && $try_zlib && AttrVal($FW_wname, "fwcompress", 1)) {
@@ -467,8 +472,7 @@ FW_AnswerCall($)
} }
$FW_longpoll = (AttrVal($FW_wname, "longpoll", undef) && $FW_longpoll = (AttrVal($FW_wname, "longpoll", undef) &&
$FW_room && (($FW_room && !$FW_detail) || ($FW_subdir ne "")));
!$FW_detail);
if($cmd =~ m/^toweblink (.*)$/) { if($cmd =~ m/^toweblink (.*)$/) {
my @aa = split(":", $1); my @aa = split(":", $1);
@@ -678,7 +682,7 @@ FW_makeSelect($$$$)
return if(!$list || $FW_hiddenroom{input}); return if(!$list || $FW_hiddenroom{input});
my @al = sort map { s/[:;].*//;$_ } split(" ", $list); my @al = sort map { s/[:;].*//;$_ } split(" ", $list);
FW_pO "<form method=\"get\" action=\"$FW_ME\">"; FW_pO "<form method=\"get\" action=\"$FW_ME$FW_subdir\">";
FW_pO FW_hidden("detail", $d); FW_pO FW_hidden("detail", $d);
FW_pO FW_hidden("dev.$cmd$d", $d); FW_pO FW_hidden("dev.$cmd$d", $d);
FW_pO FW_submit("cmd.$cmd$d", $cmd) . "&nbsp;$d"; FW_pO FW_submit("cmd.$cmd$d", $cmd) . "&nbsp;$d";
@@ -1625,7 +1629,7 @@ FW_pH(@)
my ($link, $txt, $td, $class) = @_; my ($link, $txt, $td, $class) = @_;
FW_pO "<td>" if($td); FW_pO "<td>" if($td);
$link = ($link =~ m,^/,) ? $link : "$FW_ME?$link"; $link = ($link =~ m,^/,) ? $link : "$FW_ME$FW_subdir?$link";
$class = "" if(!defined($class)); $class = "" if(!defined($class));
$class = " class=\"$class\"" if($class); $class = " class=\"$class\"" if($class);
@@ -1645,9 +1649,9 @@ FW_pHPlain(@)
FW_pO "<td>" if($td); FW_pO "<td>" if($td);
if($FW_ss || $FW_tp) { if($FW_ss || $FW_tp) {
FW_pO "<a onClick=\"location.href='$FW_ME?$link'\">$txt</a>"; FW_pO "<a onClick=\"location.href='$FW_ME$FW_subdir?$link'\">$txt</a>";
} else { } else {
FW_pO "<a href=\"$FW_ME?$link\">$txt</a>"; FW_pO "<a href=\"$FW_ME$FW_subdir?$link\">$txt</a>";
} }
FW_pO "</td>" if($td); FW_pO "</td>" if($td);
} }
@@ -1691,13 +1695,13 @@ FW_showWeblink($$$$)
} elsif($t eq "image") { } elsif($t eq "image") {
FW_pO "<img src=\"$v\" $attr><br>"; FW_pO "<img src=\"$v\" $attr><br>";
FW_pO "<br>"; FW_pO "<br>";
FW_pHPlain "detail=$d", $d; FW_pHPlain "detail=$d", $d if(!$FW_subdir);
FW_pO "<br>"; FW_pO "<br>";
} elsif($t eq "iframe") { } elsif($t eq "iframe") {
FW_pO "<iframe src=\"$v\" $attr>Iframes disabled</iframe>"; FW_pO "<iframe src=\"$v\" $attr>Iframes disabled</iframe>";
FW_pO "<br>"; FW_pO "<br>";
FW_pHPlain "detail=$d", $d; FW_pHPlain "detail=$d", $d if(!$FW_subdir);
FW_pO "<br>"; FW_pO "<br>";
@@ -1739,7 +1743,7 @@ FW_showWeblink($$$$)
} }
FW_pO "<br>"; FW_pO "<br>";
FW_pHPlain "detail=$d", $d; FW_pHPlain "detail=$d", $d if(!$FW_subdir);
FW_pO "<br>"; FW_pO "<br>";
} }
@@ -1886,14 +1890,15 @@ FW_Notify($$)
if($filter eq "all" || AttrVal($dn, "room", "") eq $filter) { if($filter eq "all" || AttrVal($dn, "room", "") eq $filter) {
FW_ReadIcons(); FW_ReadIcons();
my @old = ($FW_wname, $FW_ME, $FW_longpoll, $FW_ss, $FW_tp); my @old = ($FW_wname, $FW_ME, $FW_longpoll, $FW_ss, $FW_tp, $FW_subdir);
$FW_wname = $ntfy->{SNAME}; $FW_wname = $ntfy->{SNAME};
$FW_ME = "/" . AttrVal($FW_wname, "webname", "fhem"); $FW_ME = "/" . AttrVal($FW_wname, "webname", "fhem");
$FW_subdir = "";
$FW_longpoll = 1; $FW_longpoll = 1;
$FW_ss = AttrVal($FW_wname, "smallscreen", 0); $FW_ss = AttrVal($FW_wname, "smallscreen", 0);
$FW_tp = AttrVal($FW_wname, "touchpad", $FW_ss); $FW_tp = AttrVal($FW_wname, "touchpad", $FW_ss);
my ($allSet, $cmdlist, $txt) = FW_devState($dn, ""); my ($allSet, $cmdlist, $txt) = FW_devState($dn, "");
($FW_wname, $FW_ME, $FW_longpoll, $FW_ss, $FW_tp) = @old; ($FW_wname, $FW_ME, $FW_longpoll, $FW_ss, $FW_tp, $FW_subdir) = @old;
$data = "$dn;$dev->{STATE};$txt\n"; $data = "$dn;$dev->{STATE};$txt\n";
} elsif($filter eq "console") { } elsif($filter eq "console") {
@@ -1989,13 +1994,13 @@ FW_devState($$)
my $room = AttrVal($d, "room", undef); my $room = AttrVal($d, "room", undef);
$link .= "&room=$room" if($room); $link .= "&room=$room" if($room);
if($FW_longpoll) { if($FW_longpoll) {
$txt = "<a onClick=\"cmd('$FW_ME?XHR=1&$link')\">$txt</a>"; $txt = "<a onClick=\"cmd('$FW_ME$FW_subdir?XHR=1&$link')\">$txt</a>";
} elsif($FW_ss || $FW_tp) { } elsif($FW_ss || $FW_tp) {
$txt = "<a onClick=\"location.href='$FW_ME?$link$rf'\">$txt</a>"; $txt = "<a onClick=\"location.href='$FW_ME$FW_subdir?$link$rf'\">$txt</a>";
} else { } else {
$txt = "<a href=\"$FW_ME?$link\">$txt</a>"; $txt = "<a href=\"$FW_ME$FW_subdir?$link\">$txt</a>";
} }
} }