From 97360aea980ccbb7c7773c031c12040f74ec2919 Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Sun, 31 May 2015 08:09:00 +0000 Subject: [PATCH] 01_FHEMWEB.pm: add links to the get dialog (Forum #37670) git-svn-id: https://svn.fhem.de/fhem/trunk@8667 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/01_FHEMWEB.pm | 37 +++++++++++++++++++++++-------------- fhem/www/pgm2/fhemweb.js | 2 +- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/fhem/FHEM/01_FHEMWEB.pm b/fhem/FHEM/01_FHEMWEB.pm index 58ef02cd5..c98be249a 100755 --- a/fhem/FHEM/01_FHEMWEB.pm +++ b/fhem/FHEM/01_FHEMWEB.pm @@ -626,13 +626,17 @@ FW_answerCall($) if($FW_XHR || $FW_jsonp) { $FW_cmdret = $docmd ? FW_fC($cmd, $cmddev) : ""; $FW_RETTYPE = "text/plain; charset=$FW_encoding"; + if($FW_jsonp) { $FW_cmdret =~ s/'/\\'/g; # Escape newlines in JavaScript string $FW_cmdret =~ s/\n/\\\n/g; FW_pO "$FW_jsonp('$FW_cmdret');"; + } else { + $FW_cmdret = FW_addLinks($FW_cmdret) if($FW_webArgs{addLinks}); FW_pO $FW_cmdret; + } return 0; } @@ -661,7 +665,7 @@ FW_answerCall($) if($cmd =~ m/^define +([^ ]+) /) { # "redirect" after define to details $FW_detail = $1; } - elsif($cmd =~ m/^copy +([^ ]+) +([^ ]+)/) { # "redirect" after define to details + elsif($cmd =~ m/^copy +([^ ]+) +([^ ]+)/) { # redirect define to details $FW_detail = $2; } } @@ -770,19 +774,7 @@ FW_answerCall($) $FW_cmdret = $1; } else { # "linkify" output (e.g. for list) - $FW_cmdret = FW_htmlEscape($FW_cmdret); - - my @lines = split( /\n/, $FW_cmdret ); # Adding links - $FW_cmdret = ""; - foreach my $line (@lines) { - $FW_cmdret .= "\n" if( $FW_cmdret ); - foreach my $word ( split( / /, $line ) ) { - $word = "$word" - if( $defs{$word} ); - $FW_cmdret .= "$word "; - } - } - + $FW_cmdret = FW_addLinks(FW_htmlEscape($FW_cmdret)); $FW_cmdret =~ s/:\S+//g if($FW_cmdret =~ m/unknown.*choose one of/i); $FW_cmdret = "
$FW_cmdret
" if($FW_cmdret =~ m/\n/); } @@ -826,6 +818,22 @@ FW_answerCall($) return 0; } +sub +FW_addLinks($) +{ + my @lines = split( /\n/, shift); # Adding links + my $ret = ""; + foreach my $line (@lines) { + $ret .= "\n" if( $ret ); + foreach my $word ( split( / /, $line ) ) { + $word = "$word" + if( $defs{$word} ); + $ret .= "$word "; + } + } + return $ret; +} + ########################### # Digest CGI parameters @@ -2615,6 +2623,7 @@ FW_htmlEscape($) $txt =~ s/&/&/g; $txt =~ s//>/g; + $txt =~ s/\n/
/g; return $txt; } diff --git a/fhem/www/pgm2/fhemweb.js b/fhem/www/pgm2/fhemweb.js index 564a88899..6513b8f1e 100644 --- a/fhem/www/pgm2/fhemweb.js +++ b/fhem/www/pgm2/fhemweb.js @@ -124,7 +124,7 @@ FW_jqueryReadyFn() $(el).parent().find("input,[name]").each(function() { cmd += (cmd?"&":"")+$(this).attr("name")+"="+$(this).val(); }); - FW_cmd(FW_root+"?"+cmd+"&XHR=1", function(data) { + FW_cmd(FW_root+"?"+cmd+"&XHR=1&addLinks=1", function(data) { FW_okDialog('
'+data+'
', el); }); });