diff --git a/contrib/DS_Starter/95_Dashboard.pm b/contrib/DS_Starter/95_Dashboard.pm index e39abee00..dcf77d8ea 100644 --- a/contrib/DS_Starter/95_Dashboard.pm +++ b/contrib/DS_Starter/95_Dashboard.pm @@ -76,6 +76,8 @@ our %Dashboard_vNotesIntern = ( ######################### # Forward declaration sub Dashboard_GetGroupList(); +sub Dashboard_searchImage($$$$); +use vars qw($FW_dir); # base directory for web server ######################### # Global variables @@ -271,11 +273,11 @@ sub Dashboard_Get($@) { # Attr ################################################################ sub Dashboard_Attr($$$) { - my ($cmd, $name, $attrName, $attrVal) = @_; + my ($cmd, $name, $aName, $aVal) = @_; my $hash = $defs{$name}; if ($cmd eq "set") { - if ($attrName =~ m/dashboard_tab([1-9][0-9]*)groups/ || $attrName =~ m/dashboard_tab([1-9][0-9]*)devices/) { + if ($aName =~ m/dashboard_tab([1-9][0-9]*)groups/ || $aName =~ m/dashboard_tab([1-9][0-9]*)devices/) { # add dynamic attributes addToDevAttrList($name, "dashboard_tab" . ($1 + 1) . "name"); addToDevAttrList($name, "dashboard_tab" . ($1 + 1) . "devices"); @@ -287,14 +289,31 @@ sub Dashboard_Attr($$$) { addToDevAttrList($name, "dashboard_tab" . ($1 + 1) . "backgroundimage"); } - if ($attrName =~ m/alias/) { + if ($aName =~ m/alias/) { # if an alias is set to the dashboard, replace the name shown in the left navigation by this alias my $url = '/dashboard/'.$name; - $data{FWEXT}{$url}{NAME} = $attrVal; + $data{FWEXT}{$url}{NAME} = $aVal; } - if ($attrName =~ m/dashboard_homeTab/) { - Dashboard_activateTab ($name,$attrVal); + if ($aName =~ m/dashboard_homeTab/) { + Dashboard_activateTab ($name,$aVal); + } + } + + if ($aName =~ m/dashboard_(.*)backgroundimage/) { + my $container = ""; + if (!$1) { + $container = "MAIN"; + } else { + $container = $1; + } + delete $hash->{HELPER}{BIMG}{$container}; + if($cmd eq "set") { + Dashboard_searchImage($name, "$FW_dir/images", $aVal,$container); + if (!$hash->{HELPER}{BIMG}{$container}) { + Log3 ($name, 2, "Dashboard $name - Background image file not found: $aVal"); + return "Background image file not found: $aVal"; + } } } @@ -411,7 +430,6 @@ sub Dashboard_SummaryFN ($$$$) { my $showfullsize = AttrVal($name, "dashboard_showfullsize", 0); my $flexible = AttrVal($name, "dashboard_flexible", 0); my $customcss = AttrVal($name, "dashboard_customcss", "none"); - my $backgroundimage = AttrVal($name, "dashboard_backgroundimage", ""); my $row = AttrVal($name, "dashboard_row", "center"); my $debug = AttrVal($name, "dashboard_debug", "0"); my ($activetab,$tabname) = Dashboard_GetActiveTab($name,1); @@ -432,8 +450,7 @@ sub Dashboard_SummaryFN ($$$$) { } # Hintergrundbild bauen - my $bimg = $backgroundimage?"url(/fhem/images/$backgroundimage)":""; - Log3 ($name, 5, "Dashboard $name - Backgroundimage to display: $bimg"); + my $bimg = $hash->{HELPER}{BIMG}{MAIN}?"url(/fhem/images/$hash->{HELPER}{BIMG}{MAIN})":"none"; if ($debug == 1) { $debugfield = "edit"; } if ($showtabs eq "tabs-and-buttonbar-at-the-top") { $showbuttonbar = "top"; } @@ -531,20 +548,23 @@ sub Dashboard_BuildDashboardTab ($$) { my $hash = $defs{$name}; my $id = $hash->{NR}; - my $colcount = AttrVal($name, 'dashboard_tab'.($t + 1).'colcount', AttrVal($name, "dashboard_colcount", 1)); - my $colwidths = AttrVal($name, 'dashboard_tab'.($t + 1).'rowcentercolwidth', AttrVal($name, "dashboard_rowcentercolwidth", 100)); + my $colcount = AttrVal($name, 'dashboard_tab'.($t+1).'colcount', AttrVal($name, "dashboard_colcount", 1)); + my $colwidths = AttrVal($name, 'dashboard_tab'.($t+1).'rowcentercolwidth', AttrVal($name, "dashboard_rowcentercolwidth", 100)); $colwidths =~ tr/,/:/; - my $backgroundimage = AttrVal($name, 'dashboard_tab'.($t + 1).'backgroundimage', ""); my $row = AttrVal($name, "dashboard_row", "center"); - my $tabgroups = AttrVal($name, "dashboard_tab".($t + 1)."groups", ""); - my $tabsortings = AttrVal($name, "dashboard_tab".($t + 1)."sorting", ""); - my $tabdevicegroups = AttrVal($name, "dashboard_tab".($t + 1)."devices", ""); + my $tabgroups = AttrVal($name, "dashboard_tab".($t+1)."groups", ""); + my $tabsortings = AttrVal($name, "dashboard_tab".($t+1)."sorting", ""); + my $tabdevicegroups = AttrVal($name, "dashboard_tab".($t+1)."devices", ""); my $tabcount = Dashboard_GetTabCount($hash, 1); unless ($tabgroups || $tabdevicegroups) { readingsSingleUpdate($hash, "state", "No Groups or devices set", 0); return ""; } + + # Hintergrundbild bauen + my $container = "tab".($t+1); + my $bimg = $hash->{HELPER}{BIMG}{$container}?"url(/fhem/images/$hash->{HELPER}{BIMG}{$container})":"none"; my @temptabdevicegroup = split(' ', $tabdevicegroups); my @tabdevicegroups = (); @@ -600,7 +620,7 @@ sub Dashboard_BuildDashboardTab ($$) { } } - my $ret = "
\n"; + my $ret = "
\n"; $ret .= "