mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-05 14:29:35 +00:00
Allow to search icons in subdirectories activated again Icons are searched in
the FHEM/<stylesheetPrefix> directory first (if set) git-svn-id: https://svn.fhem.de/fhem/trunk@1425 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
505f45e277
commit
807c3afd04
@ -342,11 +342,12 @@ FW_AnswerCall($)
|
|||||||
$FW_dir = AttrVal($FW_wname, "fwmodpath", "$attr{global}{modpath}/FHEM");
|
$FW_dir = AttrVal($FW_wname, "fwmodpath", "$attr{global}{modpath}/FHEM");
|
||||||
$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 $prf = AttrVal($FW_wname, "stylesheetPrefix", "");
|
||||||
|
|
||||||
# Lets go:
|
# Lets go:
|
||||||
if($arg =~ m,^${FW_ME}/(.*)\.(css|html|js)$,) {
|
if($arg =~ m,^${FW_ME}/(.*)\.(css|html|js)$,) {
|
||||||
my ($file, $ext) = ($1, $2);
|
my ($file, $ext) = ($1, $2);
|
||||||
$file =~ s,/,,g; # little bit of security
|
$file =~ s,\.\./,,g; # little bit of security
|
||||||
open(FH, "$FW_dir/$file.$ext") || return 0;
|
open(FH, "$FW_dir/$file.$ext") || return 0;
|
||||||
FW_pO join("", <FH>);
|
FW_pO join("", <FH>);
|
||||||
close(FH);
|
close(FH);
|
||||||
@ -358,14 +359,19 @@ FW_AnswerCall($)
|
|||||||
$arg =~ m,^$FW_ME/(.*.png)$,i ||
|
$arg =~ m,^$FW_ME/(.*.png)$,i ||
|
||||||
$arg =~ m,^/(favicon.ico)$,) {
|
$arg =~ m,^/(favicon.ico)$,) {
|
||||||
my ($img, $cachable) = ($1, 1);
|
my ($img, $cachable) = ($1, 1);
|
||||||
$img =~ s,/,,g;
|
$img =~ s,\.\./,,g;
|
||||||
if(!open(FH, "$FW_dir/$img")) { # Hack: convert device state to icon name
|
|
||||||
return 0 if($arg eq "/favicon.ico");
|
my $fnd;
|
||||||
|
$fnd = open(FH, "$FW_dir/$prf/$img") if($prf);
|
||||||
|
$fnd = open(FH, "$FW_dir/$img") if(!$fnd);
|
||||||
|
if(!$fnd && $arg =~ m,/icons/,) { # Hack: convert device state to icon name
|
||||||
FW_ReadIcons();
|
FW_ReadIcons();
|
||||||
$img = FW_dev2image($img);
|
$img = FW_dev2image($img);
|
||||||
$cachable = 0;
|
$cachable = 0;
|
||||||
return 0 if(!$img || !open(FH, "$FW_dir/$img"));
|
$fnd = open(FH, "$FW_dir/$prf/$img") if($img);
|
||||||
|
$fnd = open(FH, "$FW_dir/$img") if(!$fnd && $img);
|
||||||
}
|
}
|
||||||
|
return 0 if(!$fnd);
|
||||||
binmode (FH); # necessary for Windows
|
binmode (FH); # necessary for Windows
|
||||||
FW_pO join("", <FH>);
|
FW_pO join("", <FH>);
|
||||||
close(FH);
|
close(FH);
|
||||||
@ -502,7 +508,6 @@ FW_AnswerCall($)
|
|||||||
my $rf = AttrVal($FW_wname, "refresh", "");
|
my $rf = AttrVal($FW_wname, "refresh", "");
|
||||||
FW_pO "<meta http-equiv=\"refresh\" content=\"$rf\">" if($rf);
|
FW_pO "<meta http-equiv=\"refresh\" content=\"$rf\">" if($rf);
|
||||||
|
|
||||||
my $prf = AttrVal($FW_wname, "stylesheetPrefix", "");
|
|
||||||
$prf = "smallscreen" if(!$prf && $FW_ss);
|
$prf = "smallscreen" if(!$prf && $FW_ss);
|
||||||
$prf = "touchpad" if(!$prf && $FW_tp);
|
$prf = "touchpad" if(!$prf && $FW_tp);
|
||||||
FW_pO "<link href=\"$FW_ME/".$prf."style.css\" rel=\"stylesheet\"/>";
|
FW_pO "<link href=\"$FW_ME/".$prf."style.css\" rel=\"stylesheet\"/>";
|
||||||
@ -1820,17 +1825,26 @@ FW_ReadIcons()
|
|||||||
{
|
{
|
||||||
my $now = time();
|
my $now = time();
|
||||||
return if($FW_iconsread && ($now - $FW_iconsread) <= 5);
|
return if($FW_iconsread && ($now - $FW_iconsread) <= 5);
|
||||||
|
|
||||||
%FW_icons = ();
|
%FW_icons = ();
|
||||||
|
my @files;
|
||||||
if(opendir(DH, $FW_dir)) {
|
if(opendir(DH, $FW_dir)) {
|
||||||
my @files = readdir(DH);
|
@files = readdir(DH);
|
||||||
closedir(DH);
|
closedir(DH);
|
||||||
foreach my $l (sort @files) { # Order: .gif,.jpg,.png
|
|
||||||
next if($l !~ m/\.(png|gif|jpg)$/i);
|
|
||||||
my $x = $l;
|
|
||||||
$x =~ s/\.[^.]+$//; # Cut .gif/.jpg
|
|
||||||
$FW_icons{$x} = $l;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
my $prf = AttrVal($FW_wname, "stylesheetPrefix", "");
|
||||||
|
if($prf && opendir(DH, "$FW_dir/$prf")) {
|
||||||
|
push @files, readdir(DH);
|
||||||
|
closedir(DH);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach my $l (sort @files) { # Order: .gif,.jpg,.png
|
||||||
|
next if($l !~ m/\.(png|gif|jpg)$/i);
|
||||||
|
my $x = $l;
|
||||||
|
$x =~ s/\.[^.]+$//; # Cut .gif/.jpg
|
||||||
|
$FW_icons{$x} = $l;
|
||||||
|
}
|
||||||
|
|
||||||
$FW_iconsread = $now;
|
$FW_iconsread = $now;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user