mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-09 14:47:00 +00:00
holiday.pm: move holiday directory from contrib to FHEM
git-svn-id: https://svn.fhem.de/fhem/trunk@15042 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
4dade819c2
commit
8d807ee02e
@ -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: 95_holiday: move holiday files from contrib to FHEM
|
||||
- feature: 31_Nello: updated to new api specifications
|
||||
- feature: 49_SSCam: V2.8.0, switch Surveillance Station HomeMode available
|
||||
- bugfix: 73_GardenaSmartBridge: code clean, update german tranlation
|
||||
|
@ -2166,7 +2166,7 @@ FW_style($$)
|
||||
|
||||
my $efl = AttrVal($FW_wname, 'editFileList',
|
||||
"Own modules and helper files:\$MW_dir:^(.*sh|[0-9][0-9].*Util.*pm|".
|
||||
".*cfg|.*holiday|myUtilsTemplate.pm|.*layout)\$\n".
|
||||
".*cfg|.*\.holiday|myUtilsTemplate.pm|.*layout)\$\n".
|
||||
"Gplot files:\$FW_gplotdir:^.*gplot\$\n".
|
||||
"Styles:\$FW_cssdir:^.*(css|svg)\$");
|
||||
foreach my $l (split(/[\r\n]/, $efl)) {
|
||||
|
@ -6,7 +6,7 @@ use strict;
|
||||
use warnings;
|
||||
use POSIX;
|
||||
|
||||
sub holiday_refresh($;$);
|
||||
sub holiday_refresh($;$$);
|
||||
|
||||
#####################################
|
||||
sub
|
||||
@ -16,6 +16,7 @@ holiday_Initialize($)
|
||||
|
||||
$hash->{DefFn} = "holiday_Define";
|
||||
$hash->{GetFn} = "holiday_Get";
|
||||
$hash->{SetFn} = "holiday_Set";
|
||||
$hash->{UndefFn} = "holiday_Undef";
|
||||
$hash->{AttrList} = $readingFnAttributes;
|
||||
}
|
||||
@ -27,7 +28,7 @@ holiday_Define($$)
|
||||
{
|
||||
my ($hash, $def) = @_;
|
||||
|
||||
return holiday_refresh($hash->{NAME}) if($init_done);
|
||||
return holiday_refresh($hash->{NAME}, undef, 1) if($init_done);
|
||||
InternalTimer(gettimeofday()+1, "holiday_refresh", $hash->{NAME}, 0);
|
||||
return undef;
|
||||
}
|
||||
@ -41,9 +42,9 @@ holiday_Undef($$)
|
||||
}
|
||||
|
||||
sub
|
||||
holiday_refresh($;$)
|
||||
holiday_refresh($;$$)
|
||||
{
|
||||
my ($name, $fordate) = (@_);
|
||||
my ($name, $fordate, $showAvailable) = (@_);
|
||||
my $hash = $defs{$name};
|
||||
my $fromTimer=0;
|
||||
|
||||
@ -63,9 +64,36 @@ holiday_refresh($;$)
|
||||
|
||||
Log3 $name, 5, "holiday_refresh $name called for $fordate ($fromTimer)";
|
||||
|
||||
my $fname = $attr{global}{modpath} . "/FHEM/" . $hash->{NAME} . ".holiday";
|
||||
my ($err, @holidayfile) = FileRead($fname);
|
||||
return $err if($err);
|
||||
my $dir = $attr{global}{modpath} . "/FHEM";
|
||||
my ($err, @holidayfile) = FileRead("$dir/$name.holiday");
|
||||
if($err) {
|
||||
$dir = $attr{global}{modpath}."/FHEM/holiday";
|
||||
($err, @holidayfile) = FileRead("$dir/$name.holiday");
|
||||
$hash->{READONLY} = 1;
|
||||
} else {
|
||||
$hash->{READONLY} = 0;
|
||||
}
|
||||
|
||||
if($err) {
|
||||
if($showAvailable) {
|
||||
my @ret;
|
||||
if(configDBUsed()) {
|
||||
@ret = cfgDB_FW_fileList($dir,".*.holiday",@ret);
|
||||
map { s/\.configDB$//;$_ } @ret;
|
||||
} else {
|
||||
if(opendir(DH, $dir)) {
|
||||
@ret = grep { m/\.holiday$/ } readdir(DH);
|
||||
closedir(DH);
|
||||
}
|
||||
}
|
||||
$err .= "\nAvailable holiday files: ".
|
||||
join(" ", map { s/.holiday//;$_ } @ret);
|
||||
} else {
|
||||
Log 1, "$name: $err";
|
||||
}
|
||||
return $err;
|
||||
}
|
||||
$hash->{HOLIDAYFILE} = "$dir/$name.holiday";
|
||||
|
||||
my @foundList;
|
||||
foreach my $l (@holidayfile) {
|
||||
@ -196,6 +224,23 @@ holiday_refresh($;$)
|
||||
}
|
||||
}
|
||||
|
||||
sub
|
||||
holiday_Set($@)
|
||||
{
|
||||
my ($hash, @a) = @_;
|
||||
|
||||
return "unknown argument $a[1], choose one of createPrivateCopy:noArg"
|
||||
if($a[1] ne "createPrivateCopy");
|
||||
return "Already a private version" if(!$hash->{READONLY});
|
||||
my $fname = $attr{global}{modpath}."/FHEM/holiday/$hash->{NAME}.holiday";
|
||||
my ($err, @holidayfile) = FileRead($fname);
|
||||
return $err if($err);
|
||||
$fname = $attr{global}{modpath}."/FHEM/$hash->{NAME}.holiday";
|
||||
$err = FileWrite($fname, @holidayfile);
|
||||
holiday_refresh($hash->{NAME});
|
||||
return $err;
|
||||
}
|
||||
|
||||
sub
|
||||
holiday_Get($@)
|
||||
{
|
||||
@ -282,7 +327,11 @@ western_easter($)
|
||||
<code>define <name> holiday</code>
|
||||
<br><br>
|
||||
Define a set of holidays. The module will try to open the file
|
||||
<name>.holiday in the <a href="#modpath">modpath</a>/FHEM directory.
|
||||
<name>.holiday in the <a href="#modpath">modpath</a>/FHEM directory
|
||||
first, then in the modpath/FHEM/holiday directory, the latter containing a
|
||||
set of predefined files. The set will be shown if an error occures at the
|
||||
time of the definietion.<br>
|
||||
|
||||
If entries in the holiday file match the current day, then the STATE of
|
||||
this holiday instance displayed in the <a href="#list">list</a> command
|
||||
will be set to the corresponding values, else the state is set to the text
|
||||
@ -347,13 +396,20 @@ western_easter($)
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
See also he.holiday in the contrib directory for official holidays in the
|
||||
german country of Hessen, and by.holiday for the Bavarian definition.
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
<a name="holidayset"></a>
|
||||
<b>Set</b> <ul>N/A</ul><br>
|
||||
<b>Set</b>
|
||||
<ul>
|
||||
<li>createPrivateCopy<br>
|
||||
<ul>
|
||||
if the holiday file is opened from the FHEM/holiday directory (which is
|
||||
refreshed by FHEM-update), then it is readonly, and should not be
|
||||
modified. With createPrivateCopy the file will be copied to the FHEM
|
||||
directory, where it can be modified.
|
||||
</ul></li>
|
||||
</ul><br>
|
||||
|
||||
<a name="holidayget"></a>
|
||||
<b>Get</b>
|
||||
@ -386,9 +442,12 @@ western_easter($)
|
||||
<ul>
|
||||
<code>define <name> holiday</code>
|
||||
<br><br>
|
||||
Definiert einen Satz mit Urlaubsinformationen. Das Modul versucht die Datei
|
||||
<name>.holiday im Pfad <a href="#modpath">modpath</a>/FHEM zu
|
||||
öffnen.
|
||||
Definiert einen Satz mit Urlaubsinformationen. Das Modul versucht die
|
||||
Datei <name>.holiday erst in <a href="#modpath">modpath</a>/FHEM zu
|
||||
öffnen, und dann in modpath/FHEM/holiday, Letzteres enthält eine
|
||||
Liste von per FHEM-update verteilten Dateien für diverse
|
||||
(Bundes-)Länder. Diese Liste wird bei einer Feherlmeldung angezeigt.
|
||||
|
||||
Wenn Einträge im der Datei auf den aktuellen Tag passen wird der STATE
|
||||
der Holiday-Instanz die im <a href="#list">list</a> Befehl angezeigt wird
|
||||
auf die entsprechenden Werte gesetzt. Andernfalls ist der STATE auf den
|
||||
@ -458,13 +517,20 @@ western_easter($)
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
Siehe auch he.holiday im contrib Verzeichnis für offizielle Feiertage
|
||||
in den deutschen Bundesländern Hessen und by.holiday für Bayern.
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
<a name="holidayset"></a>
|
||||
<b>Set</b> <ul>N/A</ul><br>
|
||||
<b>Set</b>
|
||||
<ul>
|
||||
<li>createPrivateCopy<br>
|
||||
<ul>
|
||||
Falls die Datei in der FHEM/holiday Verzeichnis geöffnet wurde,
|
||||
dann ist sie nicht beschreibbar, da dieses Verzeichnis mit FHEM
|
||||
update aktualisiert wird. Mit createPrivateCopy kann eine private Kopie
|
||||
im FHEM Verzeichnis erstellt werden.
|
||||
</ul></li>
|
||||
</ul><br>
|
||||
|
||||
<a name="holidayget"></a>
|
||||
<b>Get</b>
|
||||
|
@ -2559,7 +2559,7 @@ GlobalAttr($$$$)
|
||||
my %noDel = ( modpath=>1, verbose=>1, logfile=>1 );
|
||||
return "The global attribute $name cannot be deleted" if($noDel{$name});
|
||||
$featurelevel = 5.8 if($name eq "featurelevel");
|
||||
$haveInet6 = 0 if($name eq "useInet6");
|
||||
$haveInet6 = 0 if($name eq "useInet6"); # IPv6
|
||||
return undef;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user