FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Thema gestartet von: Virsacer am 23 Juli 2015, 18:07:29

Titel: (Weblink) Mehrzeiliges Perl
Beitrag von: Virsacer am 23 Juli 2015, 18:07:29
Hi, ich habe ein Weblink mit htmlCode, der aufgrund von Javascript etwas länger ist.
Außerdem benötige ich darin eine Perl-Ausgabe.

Der Code wird dann allerdings nur interpretiert, wenn er komplett in einer Zeile steht, was aber extrem unlesbar ist :-\
Wäre schön, wenn hier ebenfalls Zeilenumbrüche möglich wären...
Titel: Antw:(Weblink) Mehrzeiliges Perl
Beitrag von: rudolfkoenig am 24 Juli 2015, 06:14:58
Meiner Ansicht nach gehoert sowas in eine JavaScript-Datei, die man mit dem JavaScripts FHEMWEB Attribut reinladen kann.
Titel: Antw:(Weblink) Mehrzeiliges Perl
Beitrag von: Virsacer am 24 Juli 2015, 08:30:40
Und wie bekomme ich dann meine Perl-Werte da rein?
...auch mit unübersichtlichem einzeiligem Code :/

Außerdem soll das JS ja nicht auf jeder Seite sein, sondern nur da wo es tatsächlich ausgeführt werden soll.
Gibt sicher noch andere Anwendungsfälle ohne JS, bei denen das für höhere Lesbarkeit sorgen würde...
Titel: Antw:(Weblink) Mehrzeiliges Perl
Beitrag von: rudolfkoenig am 24 Juli 2015, 10:36:06
ZitatUnd wie bekomme ich dann meine Perl-Werte da rein?
Da gibt es diverse Methoden, wie trigger JS:meineFunktion("Parameter1","usw"), oder im weblink ein Hidden div mit den Parameter anlegen, und im Javascript nach diesem div suchen, oder ein eigenes FHEMWEB-Widget definieren, und mit normalen Events fuettern, usw. usf.

Btw. mehrzeilige welinks der Sorte htmlCode funktionieren, gerade getestet, siehe Anhang.
Titel: Antw:(Weblink) Mehrzeiliges Perl
Beitrag von: Virsacer am 24 Juli 2015, 18:45:48
ZitatBtw. mehrzeilige welinks der Sorte htmlCode funktionieren, gerade getestet, siehe Anhang.
Dass das funktioniert, ist klar...
...aber ich will ja Perl verwenden und das funktioniert nur, wenn alles in einer Zeile steht :-\

ZitatDa gibt es diverse Methoden, wie trigger JS:meineFunktion("Parameter1","usw"), oder im weblink ein Hidden div mit den Parameter anlegen, und im Javascript nach diesem div suchen, oder ein eigenes FHEMWEB-Widget definieren, und mit normalen Events fuettern, usw. usf.
Die Varianten haben doch auch alle das gleiche Problem, oder nicht?

PS: Im Anhang ist nur ein einfaches Beispiel - mein Code hat z.Z. 25 Zeilen...
Titel: Antw:(Weblink) Mehrzeiliges Perl
Beitrag von: karl0123 am 24 Juli 2015, 19:10:20
Warum verwendest du denn keine sub in der myUtils? Da kannst du dann so viele Zeilen verwenden, wie du möchtest.
Titel: Antw:(Weblink) Mehrzeiliges Perl
Beitrag von: Virsacer am 24 Juli 2015, 22:58:46
ZitatWarum verwendest du denn keine sub in der myUtils? Da kannst du dann so viele Zeilen verwenden, wie du möchtest.
Stimmt, das wäre ne Möglichkeit :)

Hab mal ein bisschen rumgespielt...
Damit funktionierts:

--- /opt/fhem/FHEM/x98_weblink.pm
+++ /opt/fhem/FHEM/98_weblink.pm
@@ -92,7 +92,7 @@

   my $attr = AttrVal($d, "htmlattr", "");
   if($wltype eq "htmlCode") {
-    $link = AnalyzePerlCommand(undef, $link) if($link =~ m/^{(.*)}$/);
+    $link = AnalyzePerlCommand(undef, $link) if($link =~ m/^{(.*)}$/s);
     $ret = $link;

   } elsif($wltype eq "link") {
Titel: Antw:(Weblink) Mehrzeiliges Perl
Beitrag von: rudolfkoenig am 09 August 2015, 16:35:51
Habs eingecheckt.
Titel: Antw:(Weblink) Mehrzeiliges Perl
Beitrag von: Virsacer am 09 August 2015, 19:56:19
Ah, cool 8)
Danke :)