mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-03 16:56:54 +00:00
98_Installer: use table headers and footers
git-svn-id: https://svn.fhem.de/fhem/trunk@19083 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
33ccbb35c8
commit
2a60f8cf14
@ -956,14 +956,22 @@ sub CreatePrereqsList {
|
|||||||
my $header = '';
|
my $header = '';
|
||||||
my $footer = '';
|
my $footer = '';
|
||||||
if ($html) {
|
if ($html) {
|
||||||
$header = '<html><table><tr><td>';
|
$header = '<html>';
|
||||||
$footer = '</td></tr></table></html>';
|
$footer = '</html>';
|
||||||
}
|
}
|
||||||
|
|
||||||
my $tOpen = '';
|
|
||||||
my $blockOpen = '';
|
my $blockOpen = '';
|
||||||
my $tTitleOpen = '';
|
my $tTitleOpen = '';
|
||||||
my $tTitleClose = '';
|
my $tTitleClose = '';
|
||||||
|
my $tOpen = '';
|
||||||
|
my $tCOpen = '';
|
||||||
|
my $tCClose = '';
|
||||||
|
my $tHOpen = '';
|
||||||
|
my $tHClose = '';
|
||||||
|
my $tBOpen = '';
|
||||||
|
my $tBClose = '';
|
||||||
|
my $tFOpen = '';
|
||||||
|
my $tFClose = '';
|
||||||
my $trOpen = '';
|
my $trOpen = '';
|
||||||
my $trOpenEven = '';
|
my $trOpenEven = '';
|
||||||
my $trOpenOdd = '';
|
my $trOpenOdd = '';
|
||||||
@ -973,8 +981,8 @@ sub CreatePrereqsList {
|
|||||||
my $tdOpen = '';
|
my $tdOpen = '';
|
||||||
my $tdOpen2 = '';
|
my $tdOpen2 = '';
|
||||||
my $tdOpen3 = '';
|
my $tdOpen3 = '';
|
||||||
my $txtOpen = '';
|
my $strongOpen = '';
|
||||||
my $txtClose = '';
|
my $strongClose = '';
|
||||||
my $tdClose = "\t\t\t";
|
my $tdClose = "\t\t\t";
|
||||||
my $thClose = "\t\t\t";
|
my $thClose = "\t\t\t";
|
||||||
my $trClose = '';
|
my $trClose = '';
|
||||||
@ -985,28 +993,38 @@ sub CreatePrereqsList {
|
|||||||
my $colorClose = '';
|
my $colorClose = '';
|
||||||
|
|
||||||
if ($html) {
|
if ($html) {
|
||||||
$blockOpen = '<div class="makeTable wide readings">';
|
$blockOpen = '<div class="makeTable wide internals">';
|
||||||
$tTitleOpen = '<span class="mkTitle">';
|
$tTitleOpen = '<span class="mkTitle">';
|
||||||
$tTitleClose = '</span>';
|
$tTitleClose = '</span>';
|
||||||
$tOpen = '<table class="block wide">';
|
$tOpen = '<table class="block wide internals wrapcolumns">';
|
||||||
|
$tCOpen = '<caption style="text-align: left; font-size: larger;">';
|
||||||
|
$tCClose = '</caption>';
|
||||||
|
$tHOpen = '<thead>';
|
||||||
|
$tHClose = '</thead>';
|
||||||
|
$tBOpen = '<tbody>';
|
||||||
|
$tBClose = '</tbody>';
|
||||||
|
$tFOpen = '<tfoot style="font-size: smaller;">';
|
||||||
|
$tFClose = '</tfoot>';
|
||||||
$trOpen = '<tr class="column">';
|
$trOpen = '<tr class="column">';
|
||||||
$trOpenEven = '<tr class="column even">';
|
$trOpenEven = '<tr class="column even">';
|
||||||
$trOpenOdd = '<tr class="column odd">';
|
$trOpenOdd = '<tr class="column odd">';
|
||||||
$thOpen = '<th style="text-align:left">';
|
$thOpen = '<th style="text-align: left; vertical-align: top;">';
|
||||||
$thOpen2 = '<th style="text-align:left" colspan="2">';
|
$thOpen2 =
|
||||||
$thOpen3 = '<th style="text-align:left" colspan="3">';
|
'<th style="text-align: left; vertical-align: top;" colspan="2">';
|
||||||
$tdOpen = '<td>';
|
$thOpen3 =
|
||||||
$tdOpen2 = '<td colspan="2">';
|
'<th style="text-align: left; vertical-align: top;" colspan="3">';
|
||||||
$tdOpen3 = '<td colspan="3">';
|
$tdOpen = '<td style="vertical-align: top;">';
|
||||||
$txtOpen = '<b>';
|
$tdOpen2 = '<td style="vertical-align: top;" colspan="2">';
|
||||||
$txtClose = '</b>';
|
$tdOpen3 = '<td style="vertical-align: top;" colspan="3">';
|
||||||
|
$strongOpen = '<strong>';
|
||||||
|
$strongClose = '</strong>';
|
||||||
$tdClose = '</td>';
|
$tdClose = '</td>';
|
||||||
$thClose = '</th>';
|
$thClose = '</th>';
|
||||||
$trClose = '</tr>';
|
$trClose = '</tr>';
|
||||||
$tClose = '</table>';
|
$tClose = '</table>';
|
||||||
$blockClose = '</div>';
|
$blockClose = '</div>';
|
||||||
$colorRed = '<span style="color:red">';
|
$colorRed = '<span style="color: red">';
|
||||||
$colorGreen = '<span style="color:green">';
|
$colorGreen = '<span style="color: green">';
|
||||||
$colorClose = '</span>';
|
$colorClose = '</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1135,56 +1153,68 @@ sub CreatePrereqsList {
|
|||||||
$l .= $trClose;
|
$l .= $trClose;
|
||||||
|
|
||||||
if ( $linecount == 1 ) {
|
if ( $linecount == 1 ) {
|
||||||
my $descr =
|
|
||||||
'These dependencies '
|
|
||||||
. $txtOpen . 'must'
|
|
||||||
. $txtClose
|
|
||||||
. ' be installed for the listed FHEM modules to work:';
|
|
||||||
$descr =
|
|
||||||
'These dependencies are '
|
|
||||||
. $txtOpen
|
|
||||||
. 'strongly encouraged'
|
|
||||||
. $txtClose
|
|
||||||
. ' and should be installed for full functionality of the listed FHEM modules, except in resource constrained environments:'
|
|
||||||
if ( $importance eq 'Recommended' );
|
|
||||||
$descr =
|
|
||||||
'These dependencies are '
|
|
||||||
. $txtOpen
|
|
||||||
. 'optional'
|
|
||||||
. $txtClose
|
|
||||||
. ', but are suggested for enhanced operation of the listed FHEM modules:'
|
|
||||||
if ( $importance eq 'Suggested' );
|
|
||||||
|
|
||||||
push @ret,
|
push @ret,
|
||||||
'<a name="prereqResult'
|
$trOpen
|
||||||
|
. $tdOpen
|
||||||
|
. (
|
||||||
|
$html
|
||||||
|
? '<a name="prereqResult' . $importance . '"></a>'
|
||||||
|
: ''
|
||||||
|
)
|
||||||
|
. $blockOpen
|
||||||
|
. $tOpen
|
||||||
|
. $tCOpen
|
||||||
. $importance
|
. $importance
|
||||||
. '"></a><h3>'
|
. $tCClose;
|
||||||
. $importance . '</h3>'
|
|
||||||
. $lb
|
push @ret, $tHOpen . $trOpen;
|
||||||
. $descr
|
|
||||||
. $lb
|
|
||||||
. $lb;
|
|
||||||
push @ret, $tOpen . $trOpen;
|
|
||||||
push @ret, $thOpen . 'Item' . $thClose;
|
push @ret, $thOpen . 'Item' . $thClose;
|
||||||
push @ret, $thOpen . 'Type' . $thClose;
|
push @ret, $thOpen . 'Type' . $thClose;
|
||||||
push @ret, $thOpen . 'Used by' . $thClose;
|
push @ret, $thOpen . 'Used by' . $thClose;
|
||||||
push @ret, $trClose;
|
push @ret, $trClose . $tHClose . $tBOpen;
|
||||||
}
|
}
|
||||||
|
|
||||||
push @ret, $l;
|
push @ret, $l;
|
||||||
$linecount++;
|
$linecount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
push @ret, $tClose;
|
push @ret, $tBClose;
|
||||||
|
|
||||||
|
my $descr =
|
||||||
|
'These dependencies '
|
||||||
|
. $strongOpen . 'must'
|
||||||
|
. $strongClose
|
||||||
|
. ' be installed for the listed FHEM modules to work.';
|
||||||
|
$descr =
|
||||||
|
'These dependencies are '
|
||||||
|
. $strongOpen
|
||||||
|
. 'strongly encouraged'
|
||||||
|
. $strongClose
|
||||||
|
. ' and should be installed for full functionality of the listed FHEM modules, except in resource constrained environments.'
|
||||||
|
if ( $importance eq 'Recommended' );
|
||||||
|
$descr =
|
||||||
|
'These dependencies are '
|
||||||
|
. $strongOpen
|
||||||
|
. 'optional'
|
||||||
|
. $strongClose
|
||||||
|
. ', but are suggested for enhanced operation of the listed FHEM modules.'
|
||||||
|
if ( $importance eq 'Suggested' );
|
||||||
|
|
||||||
|
push @ret, $tFOpen . $tdOpen3 . $descr . $tFClose;
|
||||||
|
push @ret, $tClose . $blockClose . $tdClose . $trClose;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($found) {
|
if ($found) {
|
||||||
|
push @ret, $tBClose;
|
||||||
|
|
||||||
if ( defined( $pkgStatus{Perl}{analyzed} ) ) {
|
if ( defined( $pkgStatus{Perl}{analyzed} ) ) {
|
||||||
push @ret,
|
push @ret,
|
||||||
$lb
|
$tFOpen
|
||||||
. $txtOpen . 'Hint:'
|
. $trOpen
|
||||||
. $txtClose
|
. $tdOpen
|
||||||
|
. $strongOpen . 'Hint:'
|
||||||
|
. $strongClose
|
||||||
. ' Some of the FHEM modules in use do not provide Perl prerequisites from its metadata.'
|
. ' Some of the FHEM modules in use do not provide Perl prerequisites from its metadata.'
|
||||||
. $lb;
|
. $lb;
|
||||||
|
|
||||||
@ -1197,8 +1227,12 @@ sub CreatePrereqsList {
|
|||||||
push @ret,
|
push @ret,
|
||||||
'This check may be incomplete until you install Perl::PrereqScanner::NotQuiteLite for automatic source code analysis.';
|
'This check may be incomplete until you install Perl::PrereqScanner::NotQuiteLite for automatic source code analysis.';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
push @ret, $tdClose . $trClose . $tFClose;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unshift @ret, $lb . $lb . $tdClose . $trClose;
|
||||||
|
|
||||||
unshift @ret,
|
unshift @ret,
|
||||||
$lb
|
$lb
|
||||||
. $space
|
. $space
|
||||||
@ -1233,6 +1267,9 @@ sub CreatePrereqsList {
|
|||||||
$found
|
$found
|
||||||
. ' total missing '
|
. ' total missing '
|
||||||
. ( $found > 1 ? 'prerequisites:' : 'prerequisite:' );
|
. ( $found > 1 ? 'prerequisites:' : 'prerequisite:' );
|
||||||
|
|
||||||
|
unshift @ret, $blockOpen . $blockClose;
|
||||||
|
unshift @ret, $tBOpen . $trOpen . $tdOpen;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
my @hooray = (
|
my @hooray = (
|
||||||
@ -1241,15 +1278,32 @@ sub CreatePrereqsList {
|
|||||||
);
|
);
|
||||||
my $x = 0 + int( rand( scalar @hooray + 1 - 0 ) );
|
my $x = 0 + int( rand( scalar @hooray + 1 - 0 ) );
|
||||||
unshift @ret,
|
unshift @ret,
|
||||||
ucfirst( $hooray[$x] )
|
$tBOpen
|
||||||
|
. $trOpen
|
||||||
|
. $tdOpen
|
||||||
|
. $lb
|
||||||
|
. ucfirst( $hooray[$x] )
|
||||||
. '! All prerequisites are met.'
|
. '! All prerequisites are met.'
|
||||||
. ( $html ? ' 🥳' : '' );
|
. ( $html ? ' 🥳' : '' )
|
||||||
|
. $lb
|
||||||
|
. $lb
|
||||||
|
. $tdClose
|
||||||
|
. $trClose
|
||||||
|
. $tBClose;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
push @ret, $tClose . $blockClose;
|
||||||
|
|
||||||
unshift @ret,
|
unshift @ret,
|
||||||
'<a name="prereqResultTOP"></a><h2>'
|
$blockOpen
|
||||||
|
. $blockClose
|
||||||
|
. ( $html ? '<a name="prereqResultTOP"></a>' : '' )
|
||||||
|
. $blockOpen
|
||||||
|
. $tTitleOpen
|
||||||
. ( $mode eq 'live' ? 'Live ' : '' )
|
. ( $mode eq 'live' ? 'Live ' : '' )
|
||||||
. 'System Prerequisites Check</h2>';
|
. 'System Prerequisites Check'
|
||||||
|
. $tTitleClose
|
||||||
|
. $tOpen;
|
||||||
|
|
||||||
return $header . join( "\n", @ret ) . $footer;
|
return $header . join( "\n", @ret ) . $footer;
|
||||||
}
|
}
|
||||||
@ -1267,20 +1321,39 @@ sub CreateSearchList ($$@) {
|
|||||||
my $html =
|
my $html =
|
||||||
defined( $hash->{CL} ) && $hash->{CL}{TYPE} eq "FHEMWEB" ? 1 : 0;
|
defined( $hash->{CL} ) && $hash->{CL}{TYPE} eq "FHEMWEB" ? 1 : 0;
|
||||||
|
|
||||||
|
my $FW_CSRF = (
|
||||||
|
defined( $defs{ $hash->{CL}{SNAME} }{CSRFTOKEN} )
|
||||||
|
? '&fwcsrf=' . $defs{ $hash->{CL}{SNAME} }{CSRFTOKEN}
|
||||||
|
: ''
|
||||||
|
);
|
||||||
|
my $FW_CSRF_input =
|
||||||
|
defined( $defs{ $hash->{CL}{SNAME} }{CSRFTOKEN} )
|
||||||
|
? '<input type="hidden" name="fwcsrf" value="'
|
||||||
|
. $defs{ $hash->{CL}{SNAME} }{CSRFTOKEN} . '">'
|
||||||
|
: '';
|
||||||
|
|
||||||
my $header = '';
|
my $header = '';
|
||||||
my $footer = '';
|
my $footer = '';
|
||||||
if ($html) {
|
if ($html) {
|
||||||
$header =
|
$header =
|
||||||
'<html><table><tr><td><div class="detLink installerBack" style="float:right"><a href="?detail='
|
'<html><div class="detLink installerBack" style="float:right"><a href="?detail='
|
||||||
. $hash->{NAME}
|
. $hash->{NAME}
|
||||||
. '">← back to FHEM Installer</a></div>';
|
. '">← back to FHEM Installer</a></div>';
|
||||||
$footer = '</td></tr></table></html>';
|
$footer = '</html>';
|
||||||
}
|
}
|
||||||
|
|
||||||
my $tOpen = '';
|
|
||||||
my $blockOpen = '';
|
my $blockOpen = '';
|
||||||
my $tTitleOpen = '';
|
my $tTitleOpen = '';
|
||||||
my $tTitleClose = '';
|
my $tTitleClose = '';
|
||||||
|
my $tOpen = '';
|
||||||
|
my $tCOpen = '';
|
||||||
|
my $tCClose = '';
|
||||||
|
my $tHOpen = '';
|
||||||
|
my $tHClose = '';
|
||||||
|
my $tBOpen = '';
|
||||||
|
my $tBClose = '';
|
||||||
|
my $tFOpen = '';
|
||||||
|
my $tFClose = '';
|
||||||
my $trOpen = '';
|
my $trOpen = '';
|
||||||
my $trOpenEven = '';
|
my $trOpenEven = '';
|
||||||
my $trOpenOdd = '';
|
my $trOpenOdd = '';
|
||||||
@ -1290,8 +1363,8 @@ sub CreateSearchList ($$@) {
|
|||||||
my $tdOpen = '';
|
my $tdOpen = '';
|
||||||
my $tdOpen2 = '';
|
my $tdOpen2 = '';
|
||||||
my $tdOpen3 = '';
|
my $tdOpen3 = '';
|
||||||
my $txtOpen = '';
|
my $strongOpen = '';
|
||||||
my $txtClose = '';
|
my $strongClose = '';
|
||||||
my $tdClose = "\t\t\t";
|
my $tdClose = "\t\t\t";
|
||||||
my $thClose = "\t\t\t";
|
my $thClose = "\t\t\t";
|
||||||
my $trClose = '';
|
my $trClose = '';
|
||||||
@ -1302,28 +1375,38 @@ sub CreateSearchList ($$@) {
|
|||||||
my $colorClose = '';
|
my $colorClose = '';
|
||||||
|
|
||||||
if ($html) {
|
if ($html) {
|
||||||
$blockOpen = '<div class="makeTable wide readings">';
|
$blockOpen = '<div class="makeTable wide internals">';
|
||||||
$tTitleOpen = '<span class="mkTitle">';
|
$tTitleOpen = '<span class="mkTitle">';
|
||||||
$tTitleClose = '</span>';
|
$tTitleClose = '</span>';
|
||||||
$tOpen = '<table class="block wide">';
|
$tOpen = '<table class="block wide internals wrapcolumns">';
|
||||||
|
$tCOpen = '<caption style="text-align: left; font-size: larger;">';
|
||||||
|
$tCClose = '</caption>';
|
||||||
|
$tHOpen = '<thead>';
|
||||||
|
$tHClose = '</thead>';
|
||||||
|
$tBOpen = '<tbody>';
|
||||||
|
$tBClose = '</tbody>';
|
||||||
|
$tFOpen = '<tfoot style="font-size: smaller;">';
|
||||||
|
$tFClose = '</tfoot>';
|
||||||
$trOpen = '<tr class="column">';
|
$trOpen = '<tr class="column">';
|
||||||
$trOpenEven = '<tr class="column even">';
|
$trOpenEven = '<tr class="column even">';
|
||||||
$trOpenOdd = '<tr class="column odd">';
|
$trOpenOdd = '<tr class="column odd">';
|
||||||
$thOpen = '<th style="text-align:left">';
|
$thOpen = '<th style="text-align: left; vertical-align: top;">';
|
||||||
$thOpen2 = '<th style="text-align:left" colspan="2">';
|
$thOpen2 =
|
||||||
$thOpen3 = '<th style="text-align:left" colspan="3">';
|
'<th style="text-align: left; vertical-align: top;" colspan="2">';
|
||||||
$tdOpen = '<td>';
|
$thOpen3 =
|
||||||
$tdOpen2 = '<td colspan="2">';
|
'<th style="text-align: left; vertical-align: top;" colspan="3">';
|
||||||
$tdOpen3 = '<td colspan="3">';
|
$tdOpen = '<td style="vertical-align: top;">';
|
||||||
$txtOpen = '<b>';
|
$tdOpen2 = '<td style="vertical-align: top;" colspan="2">';
|
||||||
$txtClose = '</b>';
|
$tdOpen3 = '<td style="vertical-align: top;" colspan="3">';
|
||||||
|
$strongOpen = '<strong>';
|
||||||
|
$strongClose = '</strong>';
|
||||||
$tdClose = '</td>';
|
$tdClose = '</td>';
|
||||||
$thClose = '</td>';
|
$thClose = '</td>';
|
||||||
$trClose = '</tr>';
|
$trClose = '</tr>';
|
||||||
$tClose = '</table>';
|
$tClose = '</table>';
|
||||||
$blockClose = '</div>';
|
$blockClose = '</div>';
|
||||||
$colorRed = '<span style="color:red">';
|
$colorRed = '<span style="color: red">';
|
||||||
$colorGreen = '<span style="color:green">';
|
$colorGreen = '<span style="color: green">';
|
||||||
$colorClose = '</span>';
|
$colorClose = '</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1336,11 +1419,18 @@ sub CreateSearchList ($$@) {
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
my $FW_CSRF = (
|
# Add search input
|
||||||
defined( $defs{ $hash->{CL}{SNAME} }{CSRFTOKEN} )
|
$header .=
|
||||||
? '&fwcsrf=' . $defs{ $hash->{CL}{SNAME} }{CSRFTOKEN}
|
'<form id="fhemsearch" method="get" action="?" onsubmit="cmd.value = \'get '
|
||||||
: ''
|
. $hash->{NAME}
|
||||||
);
|
. ' search \'+ q.value">'
|
||||||
|
. $FW_CSRF_input
|
||||||
|
. '<input type="hidden" name="cmd" value="">'
|
||||||
|
. '<label for="q" style="margin-right: 0.5em;">Search:</label>'
|
||||||
|
. '<input type="text" name="q" id="q" value="'
|
||||||
|
. $search
|
||||||
|
. '" autocorrect="off" autocapitalize="off">'
|
||||||
|
. '</form>';
|
||||||
|
|
||||||
my $found = 0;
|
my $found = 0;
|
||||||
|
|
||||||
@ -1358,16 +1448,17 @@ sub CreateSearchList ($$@) {
|
|||||||
push @ret,
|
push @ret,
|
||||||
( $html ? '<a name="searchResultDevices"></a>' : '' )
|
( $html ? '<a name="searchResultDevices"></a>' : '' )
|
||||||
. $blockOpen
|
. $blockOpen
|
||||||
. $tTitleOpen
|
|
||||||
. 'Devices'
|
|
||||||
. $tTitleClose
|
|
||||||
. $tOpen
|
. $tOpen
|
||||||
|
. $tCOpen
|
||||||
|
. 'Devices'
|
||||||
|
. $tCClose
|
||||||
|
. $tHOpen
|
||||||
. $trOpen;
|
. $trOpen;
|
||||||
|
|
||||||
push @ret, $thOpen . 'Device Name' . $thClose;
|
push @ret, $thOpen . 'Device Name' . $thClose;
|
||||||
push @ret, $thOpen . 'Device Type' . $thClose;
|
push @ret, $thOpen . 'Device Type' . $thClose;
|
||||||
push @ret, $thOpen . 'Device State' . $thClose;
|
push @ret, $thOpen . 'Device State' . $thClose;
|
||||||
push @ret, $trClose;
|
push @ret, $trClose . $tHClose;
|
||||||
}
|
}
|
||||||
$found++;
|
$found++;
|
||||||
$foundDevices++;
|
$foundDevices++;
|
||||||
@ -1420,15 +1511,16 @@ sub CreateSearchList ($$@) {
|
|||||||
push @ret,
|
push @ret,
|
||||||
( $html ? '<a name="searchResultModules"></a>' : '' )
|
( $html ? '<a name="searchResultModules"></a>' : '' )
|
||||||
. $blockOpen
|
. $blockOpen
|
||||||
. $tTitleOpen
|
|
||||||
. 'Modules'
|
|
||||||
. $tTitleClose
|
|
||||||
. $tOpen
|
. $tOpen
|
||||||
|
. $tCOpen
|
||||||
|
. 'Modules'
|
||||||
|
. $tCClose
|
||||||
|
. $tHOpen
|
||||||
. $trOpen;
|
. $trOpen;
|
||||||
|
|
||||||
push @ret, $thOpen . 'Module Name' . $thClose;
|
push @ret, $thOpen . 'Module Name' . $thClose;
|
||||||
push @ret, $thOpen . 'Abstract' . $thClose;
|
push @ret, $thOpen . 'Abstract' . $thClose;
|
||||||
push @ret, $trClose;
|
push @ret, $trClose . $tHClose;
|
||||||
}
|
}
|
||||||
$found++;
|
$found++;
|
||||||
$foundModules++;
|
$foundModules++;
|
||||||
@ -1472,15 +1564,16 @@ sub CreateSearchList ($$@) {
|
|||||||
push @ret,
|
push @ret,
|
||||||
( $html ? '<a name="searchResultPackages"></a>' : '' )
|
( $html ? '<a name="searchResultPackages"></a>' : '' )
|
||||||
. $blockOpen
|
. $blockOpen
|
||||||
. $tTitleOpen
|
|
||||||
. 'Packages'
|
|
||||||
. $tTitleClose
|
|
||||||
. $tOpen
|
. $tOpen
|
||||||
|
. $tCOpen
|
||||||
|
. 'Packages'
|
||||||
|
. $tCClose
|
||||||
|
. $tHOpen
|
||||||
. $trOpen;
|
. $trOpen;
|
||||||
|
|
||||||
push @ret, $thOpen . 'Package Name' . $thClose;
|
push @ret, $thOpen . 'Package Name' . $thClose;
|
||||||
push @ret, $thOpen . 'Abstract' . $thClose;
|
push @ret, $thOpen . 'Abstract' . $thClose;
|
||||||
push @ret, $trClose;
|
push @ret, $trClose . $tHClose;
|
||||||
}
|
}
|
||||||
$found++;
|
$found++;
|
||||||
$foundPackages++;
|
$foundPackages++;
|
||||||
@ -1529,14 +1622,14 @@ sub CreateSearchList ($$@) {
|
|||||||
|
|
||||||
my $descr = FHEM::Meta::GetKeywordDesc( $keyword, $lang );
|
my $descr = FHEM::Meta::GetKeywordDesc( $keyword, $lang );
|
||||||
|
|
||||||
push @ret, $blockOpen;
|
push @ret, $blockOpen . $tOpen;
|
||||||
|
|
||||||
if ($html) {
|
if ($html) {
|
||||||
push @ret,
|
push @ret,
|
||||||
'<span class="mkTitle"'
|
'<caption style="text-align: left; font-size: larger;"'
|
||||||
. ( $descr ne '' ? ' title="' . $descr . '"' : '' ) . '># '
|
. ( $descr ne '' ? ' title="' . $descr . '"' : '' ) . '># '
|
||||||
. $keyword
|
. $keyword
|
||||||
. $tTitleClose;
|
. $tCClose;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
push @ret, '# ' . $keyword;
|
push @ret, '# ' . $keyword;
|
||||||
@ -1547,7 +1640,7 @@ sub CreateSearchList ($$@) {
|
|||||||
packages
|
packages
|
||||||
);
|
);
|
||||||
|
|
||||||
push @ret, $tOpen . $trOpen;
|
push @ret, $tHOpen . $trOpen;
|
||||||
|
|
||||||
push @ret, $thOpen . 'Name' . $thClose;
|
push @ret, $thOpen . 'Name' . $thClose;
|
||||||
|
|
||||||
@ -1555,7 +1648,7 @@ sub CreateSearchList ($$@) {
|
|||||||
|
|
||||||
push @ret, $thOpen . 'Abstract' . $thClose;
|
push @ret, $thOpen . 'Abstract' . $thClose;
|
||||||
|
|
||||||
push @ret, $trClose;
|
push @ret, $trClose . $tHClose;
|
||||||
|
|
||||||
foreach my $mAttr (@mAttrs) {
|
foreach my $mAttr (@mAttrs) {
|
||||||
next
|
next
|
||||||
@ -1623,17 +1716,18 @@ sub CreateSearchList ($$@) {
|
|||||||
unless ($foundMaintainers) {
|
unless ($foundMaintainers) {
|
||||||
push @ret,
|
push @ret,
|
||||||
$blockOpen
|
$blockOpen
|
||||||
. $tTitleOpen
|
. $tOpen
|
||||||
|
. $tCOpen
|
||||||
. ( $html ? '<a name="searchResultMaintainers"></a>' : '' )
|
. ( $html ? '<a name="searchResultMaintainers"></a>' : '' )
|
||||||
. 'Authors & Maintainers'
|
. 'Authors & Maintainers'
|
||||||
. $tTitleClose
|
. $tCClose
|
||||||
. $tOpen
|
. $tHOpen
|
||||||
. $trOpen;
|
. $trOpen;
|
||||||
|
|
||||||
push @ret, $thOpen . 'Name' . $thClose;
|
push @ret, $thOpen . 'Name' . $thClose;
|
||||||
push @ret, $thOpen . 'Modules' . $thClose;
|
push @ret, $thOpen . 'Modules' . $thClose;
|
||||||
push @ret, $thOpen . 'Packages' . $thClose;
|
push @ret, $thOpen . 'Packages' . $thClose;
|
||||||
push @ret, $trClose;
|
push @ret, $trClose . $tHClose;
|
||||||
}
|
}
|
||||||
$found++;
|
$found++;
|
||||||
$foundMaintainers++;
|
$foundMaintainers++;
|
||||||
@ -1715,16 +1809,17 @@ sub CreateSearchList ($$@) {
|
|||||||
unless ($foundPerl) {
|
unless ($foundPerl) {
|
||||||
push @ret,
|
push @ret,
|
||||||
$blockOpen
|
$blockOpen
|
||||||
. $tTitleOpen
|
. $tOpen
|
||||||
|
. $tCOpen
|
||||||
. ( $html ? '<a name="searchResultPerl"></a>' : '' )
|
. ( $html ? '<a name="searchResultPerl"></a>' : '' )
|
||||||
. 'Perl Packages'
|
. 'Perl Packages'
|
||||||
. $tTitleClose
|
. $tCClose
|
||||||
. $tOpen
|
. $tHOpen
|
||||||
. $trOpen;
|
. $trOpen;
|
||||||
|
|
||||||
push @ret, $thOpen . 'Name' . $thClose;
|
push @ret, $thOpen . 'Name' . $thClose;
|
||||||
push @ret, $thOpen . 'Referenced from' . $thClose;
|
push @ret, $thOpen . 'Referenced from' . $thClose;
|
||||||
push @ret, $trClose;
|
push @ret, $trClose . $tHClose;
|
||||||
}
|
}
|
||||||
$found++;
|
$found++;
|
||||||
$foundPerl++;
|
$foundPerl++;
|
||||||
@ -1868,15 +1963,20 @@ sub CreateSearchList ($$@) {
|
|||||||
$found . ' total search ' . ( $found > 1 ? 'results:' : 'result:' );
|
$found . ' total search ' . ( $found > 1 ? 'results:' : 'result:' );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
unshift @ret, 'Nothing found'.$lb.$lb;
|
unshift @ret,
|
||||||
|
$tOpen
|
||||||
|
. $trOpenOdd
|
||||||
|
. $tdOpen
|
||||||
|
. 'Nothing found'
|
||||||
|
. $tdClose
|
||||||
|
. $trClose
|
||||||
|
. $tClose
|
||||||
|
. $lb
|
||||||
|
. $lb;
|
||||||
}
|
}
|
||||||
|
|
||||||
push @ret, $tdClose . $trClose . $tClose . $blockClose;
|
push @ret, $tdClose . $trClose . $tClose . $blockClose;
|
||||||
|
|
||||||
$search =~ s/\\s\*/ /g;
|
|
||||||
unshift @ret,
|
|
||||||
$blockOpen . $blockClose . $txtOpen.'Search string: '.$txtClose . $search . $lb . $lb;
|
|
||||||
|
|
||||||
unshift @ret,
|
unshift @ret,
|
||||||
$blockOpen
|
$blockOpen
|
||||||
. $blockClose
|
. $blockClose
|
||||||
@ -1887,7 +1987,9 @@ sub CreateSearchList ($$@) {
|
|||||||
. $tTitleClose
|
. $tTitleClose
|
||||||
. $tOpen
|
. $tOpen
|
||||||
. $trOpen
|
. $trOpen
|
||||||
. $tdOpen;
|
. $tdOpen
|
||||||
|
. $blockOpen
|
||||||
|
. $blockClose;
|
||||||
|
|
||||||
return $header . join( "\n", @ret ) . $footer;
|
return $header . join( "\n", @ret ) . $footer;
|
||||||
}
|
}
|
||||||
@ -1943,16 +2045,24 @@ sub CreateMetadataList ($$$) {
|
|||||||
my $footer = '';
|
my $footer = '';
|
||||||
if ($html) {
|
if ($html) {
|
||||||
$header =
|
$header =
|
||||||
'<html><table><tr><td><div class="detLink installerBack" style="float:right"><a href="?detail='
|
'<html><div class="detLink installerBack" style="float:right"><a href="?detail='
|
||||||
. $hash->{NAME}
|
. $hash->{NAME}
|
||||||
. '">← back to FHEM Installer</a></div>';
|
. '">← back to FHEM Installer</a></div>';
|
||||||
$footer = '</td></tr></table></html>';
|
$footer = '</html>';
|
||||||
}
|
}
|
||||||
|
|
||||||
my $blockOpen = '';
|
my $blockOpen = '';
|
||||||
my $tTitleOpen = '';
|
my $tTitleOpen = '';
|
||||||
my $tTitleClose = '';
|
my $tTitleClose = '';
|
||||||
my $tOpen = '';
|
my $tOpen = '';
|
||||||
|
my $tCOpen = '';
|
||||||
|
my $tCClose = '';
|
||||||
|
my $tHOpen = '';
|
||||||
|
my $tHClose = '';
|
||||||
|
my $tBOpen = '';
|
||||||
|
my $tBClose = '';
|
||||||
|
my $tFOpen = '';
|
||||||
|
my $tFClose = '';
|
||||||
my $trOpen = '';
|
my $trOpen = '';
|
||||||
my $trOpenEven = '';
|
my $trOpenEven = '';
|
||||||
my $trOpenOdd = '';
|
my $trOpenOdd = '';
|
||||||
@ -1962,8 +2072,8 @@ sub CreateMetadataList ($$$) {
|
|||||||
my $tdOpen = '';
|
my $tdOpen = '';
|
||||||
my $tdOpen2 = '';
|
my $tdOpen2 = '';
|
||||||
my $tdOpen3 = '';
|
my $tdOpen3 = '';
|
||||||
my $txtOpen = '';
|
my $strongOpen = '';
|
||||||
my $txtClose = '';
|
my $strongClose = '';
|
||||||
my $tdClose = "\t\t\t";
|
my $tdClose = "\t\t\t";
|
||||||
my $thClose = "\t\t\t";
|
my $thClose = "\t\t\t";
|
||||||
my $trClose = '';
|
my $trClose = '';
|
||||||
@ -1974,28 +2084,38 @@ sub CreateMetadataList ($$$) {
|
|||||||
my $colorClose = '';
|
my $colorClose = '';
|
||||||
|
|
||||||
if ($html) {
|
if ($html) {
|
||||||
$blockOpen = '<div class="makeTable wide readings">';
|
$blockOpen = '<div class="makeTable wide internals">';
|
||||||
$tTitleOpen = '<span class="mkTitle">';
|
$tTitleOpen = '<span class="mkTitle">';
|
||||||
$tTitleClose = '</span>';
|
$tTitleClose = '</span>';
|
||||||
$tOpen = '<table class="block wide readings">';
|
$tOpen = '<table class="block wide internals wrapcolumns">';
|
||||||
|
$tCOpen = '<caption style="text-align: left; font-size: larger;">';
|
||||||
|
$tCClose = '</caption>';
|
||||||
|
$tHOpen = '<thead>';
|
||||||
|
$tHClose = '</thead>';
|
||||||
|
$tBOpen = '<tbody>';
|
||||||
|
$tBClose = '</tbody>';
|
||||||
|
$tFOpen = '<tfoot style="font-size: smaller;">';
|
||||||
|
$tFClose = '</tfoot>';
|
||||||
$trOpen = '<tr class="column">';
|
$trOpen = '<tr class="column">';
|
||||||
$trOpenEven = '<tr class="column even">';
|
$trOpenEven = '<tr class="column even">';
|
||||||
$trOpenOdd = '<tr class="column odd">';
|
$trOpenOdd = '<tr class="column odd">';
|
||||||
$thOpen = '<th style="text-align:left">';
|
$thOpen = '<th style="text-align: left; vertical-align: top;">';
|
||||||
$thOpen2 = '<th style="text-align:left" colspan="2">';
|
$thOpen2 =
|
||||||
$thOpen3 = '<th style="text-align:left" colspan="3">';
|
'<th style="text-align: left; vertical-align: top;" colspan="2">';
|
||||||
$tdOpen = '<td>';
|
$thOpen3 =
|
||||||
$tdOpen2 = '<td colspan="2">';
|
'<th style="text-align: left; vertical-align: top;" colspan="3">';
|
||||||
$tdOpen3 = '<td colspan="3">';
|
$tdOpen = '<td style="vertical-align: top;">';
|
||||||
$txtOpen = '<b>';
|
$tdOpen2 = '<td style="vertical-align: top;" colspan="2">';
|
||||||
$txtClose = '</b>';
|
$tdOpen3 = '<td style="vertical-align: top;" colspan="3">';
|
||||||
|
$strongOpen = '<strong>';
|
||||||
|
$strongClose = '</strong>';
|
||||||
$tdClose = '</td>';
|
$tdClose = '</td>';
|
||||||
$thClose = '</th>';
|
$thClose = '</th>';
|
||||||
$trClose = '</tr>';
|
$trClose = '</tr>';
|
||||||
$tClose = '</table>';
|
$tClose = '</table>';
|
||||||
$blockClose = '</div>';
|
$blockClose = '</div>';
|
||||||
$colorRed = '<span style="color:red">';
|
$colorRed = '<span style="color: red">';
|
||||||
$colorGreen = '<span style="color:green">';
|
$colorGreen = '<span style="color: green">';
|
||||||
$colorClose = '</span>';
|
$colorClose = '</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2683,17 +2803,19 @@ m/^([^<>\n\r]+?)(?:\s+(\(last release only\)))?(?:\s+(?:<(.*)>))?$/
|
|||||||
}
|
}
|
||||||
|
|
||||||
push @ret,
|
push @ret,
|
||||||
$trOpen
|
$tFOpen
|
||||||
|
. $trOpen
|
||||||
. (
|
. (
|
||||||
$html
|
$html
|
||||||
? '<td style="text-align:right; font-size:.7em;" colspan="2">'
|
? '<td style="text-align:right;" colspan="2">'
|
||||||
: ''
|
: ''
|
||||||
)
|
)
|
||||||
. 'Based on data generated by '
|
. 'Based on data generated by '
|
||||||
. $lb
|
. $lb
|
||||||
. $modMeta->{generated_by}
|
. $modMeta->{generated_by}
|
||||||
. $tdClose
|
. $tdClose
|
||||||
. $trClose;
|
. $trClose
|
||||||
|
. $tFClose;
|
||||||
|
|
||||||
push @ret, $tClose . $blockClose;
|
push @ret, $tClose . $blockClose;
|
||||||
|
|
||||||
@ -2746,25 +2868,13 @@ m/^([^<>\n\r]+?)(?:\s+(\(last release only\)))?(?:\s+(?:<(.*)>))?$/
|
|||||||
. $tTitleClose
|
. $tTitleClose
|
||||||
. $tOpen;
|
. $tOpen;
|
||||||
|
|
||||||
push @ret,
|
push @ret, $tHOpen . $trOpen;
|
||||||
$trOpen
|
|
||||||
. $tdOpen2
|
|
||||||
. $txtOpen . 'Hint:'
|
|
||||||
. $txtClose
|
|
||||||
. $lb
|
|
||||||
. 'Dependents can only be shown here if they were loaded into the metadata cache before.'
|
|
||||||
. $lb
|
|
||||||
. $lb
|
|
||||||
. $tdClose
|
|
||||||
. $trClose;
|
|
||||||
|
|
||||||
push @ret, $trOpen;
|
|
||||||
|
|
||||||
push @ret, $thOpen . 'Importance' . $thClose;
|
push @ret, $thOpen . 'Importance' . $thClose;
|
||||||
|
|
||||||
push @ret, $thOpen . 'Dependent Modules' . $thClose;
|
push @ret, $thOpen . 'Dependent Modules' . $thClose;
|
||||||
|
|
||||||
push @ret, $trClose;
|
push @ret, $trClose . $tHClose;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $l = $linecount % 2 == 0 ? $trOpenEven : $trOpenOdd;
|
my $l = $linecount % 2 == 0 ? $trOpenEven : $trOpenOdd;
|
||||||
@ -2783,8 +2893,19 @@ m/^([^<>\n\r]+?)(?:\s+(\(last release only\)))?(?:\s+(?:<(.*)>))?$/
|
|||||||
$linecount++;
|
$linecount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
push @ret,
|
||||||
push @ret, $tClose . $lb if ( $linecount > 1 );
|
$tFOpen
|
||||||
|
. $trOpen
|
||||||
|
. $tdOpen2
|
||||||
|
. $strongOpen . 'Hint:'
|
||||||
|
. $strongClose
|
||||||
|
. ' Dependents can only be shown here if they were loaded into the metadata cache before.'
|
||||||
|
. $tdClose
|
||||||
|
. $trClose
|
||||||
|
. $tFClose
|
||||||
|
. $tClose
|
||||||
|
. $blockClose
|
||||||
|
if ( $linecount > 1 );
|
||||||
|
|
||||||
if (
|
if (
|
||||||
$modType eq 'module'
|
$modType eq 'module'
|
||||||
@ -2800,9 +2921,22 @@ m/^([^<>\n\r]+?)(?:\s+(\(last release only\)))?(?:\s+(?:<(.*)>))?$/
|
|||||||
|
|
||||||
my $linecount = 1;
|
my $linecount = 1;
|
||||||
|
|
||||||
if ( defined( $modules{$modName}{LOADED} ) ) {
|
if ( defined( $modules{$modName}{LOADED} )
|
||||||
|
&& $modules{$modName}{LOADED} )
|
||||||
|
{
|
||||||
my @instances = devspec2array( 'TYPE=' . $modName );
|
my @instances = devspec2array( 'TYPE=' . $modName );
|
||||||
if ( @instances > 0 ) {
|
if ( @instances > 0 ) {
|
||||||
|
push @ret,
|
||||||
|
$tHOpen
|
||||||
|
. $trOpen
|
||||||
|
. $thOpen . 'Name'
|
||||||
|
. $thClose
|
||||||
|
. $thOpen . 'State'
|
||||||
|
. $thClose
|
||||||
|
. $trClose
|
||||||
|
. $tHClose
|
||||||
|
. $tBOpen;
|
||||||
|
|
||||||
foreach my $instance ( sort { "\L$a" cmp "\L$b" } @instances ) {
|
foreach my $instance ( sort { "\L$a" cmp "\L$b" } @instances ) {
|
||||||
next if ( defined( $defs{$instance}{TEMPORARY} ) );
|
next if ( defined( $defs{$instance}{TEMPORARY} ) );
|
||||||
|
|
||||||
@ -2821,24 +2955,30 @@ m/^([^<>\n\r]+?)(?:\s+(\(last release only\)))?(?:\s+(?:<(.*)>))?$/
|
|||||||
push @ret, $l;
|
push @ret, $l;
|
||||||
$linecount++;
|
$linecount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
push @ret, $tBClose;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
push @ret,
|
push @ret,
|
||||||
$trOpenOdd
|
$tBOpen
|
||||||
|
. $trOpen
|
||||||
. $tdOpen
|
. $tdOpen
|
||||||
. 'The module was once loaded into memory, '
|
. 'The module was once loaded into memory, '
|
||||||
. 'but currently there is no device defined.'
|
. 'but currently there is no device defined.'
|
||||||
. $tdClose
|
. $tdClose
|
||||||
. $trClose;
|
. $trClose
|
||||||
|
. $tBClose;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
push @ret,
|
push @ret,
|
||||||
$trOpenOdd
|
$tBOpen
|
||||||
|
. $trOpen
|
||||||
. $tdOpen
|
. $tdOpen
|
||||||
. 'The module is currently not in use.'
|
. 'The module is currently not in use.'
|
||||||
. $tdClose
|
. $tdClose
|
||||||
. $trClose;
|
. $trClose
|
||||||
|
. $tBClose;
|
||||||
}
|
}
|
||||||
|
|
||||||
push @ret, $tClose . $blockClose;
|
push @ret, $tClose . $blockClose;
|
||||||
@ -2855,42 +2995,18 @@ m/^([^<>\n\r]+?)(?:\s+(\(last release only\)))?(?:\s+(?:<(.*)>))?$/
|
|||||||
. $trOpen
|
. $trOpen
|
||||||
. $tdOpen;
|
. $tdOpen;
|
||||||
|
|
||||||
push @ret,
|
push @ret, $blockOpen . $tOpen . $tCOpen . 'Perl Packages' . $tCClose;
|
||||||
$blockOpen
|
|
||||||
. $blockClose
|
|
||||||
. $blockOpen
|
|
||||||
. $tTitleOpen
|
|
||||||
. 'Perl Packages'
|
|
||||||
. $tTitleClose
|
|
||||||
. $tOpen;
|
|
||||||
|
|
||||||
if ( defined( $modMeta->{prereqs} )
|
if ( defined( $modMeta->{prereqs} )
|
||||||
&& defined( $modMeta->{prereqs}{runtime} ) )
|
&& defined( $modMeta->{prereqs}{runtime} ) )
|
||||||
{
|
{
|
||||||
push @ret,
|
|
||||||
$trOpen
|
|
||||||
. $tdOpen3
|
|
||||||
. $txtOpen . 'Hint:'
|
|
||||||
. $txtClose
|
|
||||||
. $lb
|
|
||||||
. 'This module does not provide Perl prerequisites from its metadata.'
|
|
||||||
. $lb
|
|
||||||
. 'The following result is based on automatic source code analysis '
|
|
||||||
. 'and can be incorrect.'
|
|
||||||
. $lb
|
|
||||||
. $lb
|
|
||||||
. $tdClose
|
|
||||||
. $trClose
|
|
||||||
if ( defined( $modMeta->{x_prereqs_src} )
|
|
||||||
&& $modMeta->{x_prereqs_src} ne 'META.json' );
|
|
||||||
|
|
||||||
@mAttrs = qw(
|
@mAttrs = qw(
|
||||||
requires
|
requires
|
||||||
recommends
|
recommends
|
||||||
suggests
|
suggests
|
||||||
);
|
);
|
||||||
|
|
||||||
push @ret, $trOpen;
|
push @ret, $tHOpen . $trOpen;
|
||||||
|
|
||||||
push @ret, $thOpen . 'Name' . $thClose;
|
push @ret, $thOpen . 'Name' . $thClose;
|
||||||
|
|
||||||
@ -2898,7 +3014,7 @@ m/^([^<>\n\r]+?)(?:\s+(\(last release only\)))?(?:\s+(?:<(.*)>))?$/
|
|||||||
|
|
||||||
push @ret, $thOpen . 'Status' . $thClose;
|
push @ret, $thOpen . 'Status' . $thClose;
|
||||||
|
|
||||||
push @ret, $trClose;
|
push @ret, $trClose . $tHClose . $tBOpen;
|
||||||
|
|
||||||
$linecount = 1;
|
$linecount = 1;
|
||||||
foreach my $mAttr (@mAttrs) {
|
foreach my $mAttr (@mAttrs) {
|
||||||
@ -2938,7 +3054,7 @@ m/^([^<>\n\r]+?)(?:\s+(\(last release only\)))?(?:\s+(?:<(.*)>))?$/
|
|||||||
$modMeta->{prereqs}{runtime}{x_inherited}{$prereq}
|
$modMeta->{prereqs}{runtime}{x_inherited}{$prereq}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
. '" style="color:grey;">'
|
. '" style="color: grey;">'
|
||||||
. $inherited
|
. $inherited
|
||||||
. '</span>'
|
. '</span>'
|
||||||
if ($html);
|
if ($html);
|
||||||
@ -2985,9 +3101,9 @@ m/^([^<>\n\r]+?)(?:\s+(\(last release only\)))?(?:\s+(?:<(.*)>))?$/
|
|||||||
{
|
{
|
||||||
$installed =
|
$installed =
|
||||||
$colorRed
|
$colorRed
|
||||||
. $txtOpen
|
. $strongOpen
|
||||||
. uc($installed)
|
. uc($installed)
|
||||||
. $txtClose
|
. $strongClose
|
||||||
. $colorClose;
|
. $colorClose;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3007,23 +3123,45 @@ m/^([^<>\n\r]+?)(?:\s+(\(last release only\)))?(?:\s+(?:<(.*)>))?$/
|
|||||||
$linecount++;
|
$linecount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
push @ret, $tBClose;
|
||||||
|
|
||||||
|
push @ret,
|
||||||
|
$tFOpen
|
||||||
|
. $trOpenEven
|
||||||
|
. $tdOpen3
|
||||||
|
. $strongOpen . 'Hint:'
|
||||||
|
. $strongClose
|
||||||
|
. ' The module does not provide Perl prerequisites from its metadata.'
|
||||||
|
. $lb
|
||||||
|
. 'This result is based on automatic source code analysis '
|
||||||
|
. 'and can be incorrect.'
|
||||||
|
. $tdClose
|
||||||
|
. $trClose
|
||||||
|
. $tFClose
|
||||||
|
if ( defined( $modMeta->{x_prereqs_src} )
|
||||||
|
&& $modMeta->{x_prereqs_src} ne 'META.json' );
|
||||||
}
|
}
|
||||||
elsif ( defined( $modMeta->{x_prereqs_src} ) ) {
|
elsif ( defined( $modMeta->{x_prereqs_src} ) ) {
|
||||||
push @ret,
|
push @ret,
|
||||||
$trOpenOdd
|
$tBOpen
|
||||||
|
. $trOpenOdd
|
||||||
. $tdOpen
|
. $tdOpen
|
||||||
. 'No known prerequisites.'
|
. 'No known prerequisites.'
|
||||||
. $tdClose
|
. $tdClose
|
||||||
. $trClose;
|
. $trClose
|
||||||
|
. $tBClose;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
push @ret,
|
push @ret,
|
||||||
$trOpenOdd
|
$tBOpen
|
||||||
|
. $trOpenOdd
|
||||||
. $tdOpen
|
. $tdOpen
|
||||||
. 'Module metadata do not contain any prerequisites.' . "\n"
|
. 'Module metadata do not contain any prerequisites.' . "\n"
|
||||||
. 'For automatic source code analysis, please install Perl::PrereqScanner::NotQuiteLite first.'
|
. 'For automatic source code analysis, please install Perl::PrereqScanner::NotQuiteLite first.'
|
||||||
. $tdClose
|
. $tdClose
|
||||||
. $trClose;
|
. $trClose
|
||||||
|
. $tBClose;
|
||||||
}
|
}
|
||||||
push @ret, $tClose . $blockClose;
|
push @ret, $tClose . $blockClose;
|
||||||
|
|
||||||
@ -3031,7 +3169,12 @@ m/^([^<>\n\r]+?)(?:\s+(\(last release only\)))?(?:\s+(?:<(.*)>))?$/
|
|||||||
&& defined( $modMeta->{x_prereqs_nodejs}{runtime} ) )
|
&& defined( $modMeta->{x_prereqs_nodejs}{runtime} ) )
|
||||||
{
|
{
|
||||||
push @ret,
|
push @ret,
|
||||||
$blockOpen . $tTitleOpen . 'Node.js Packages' . $tTitleClose . $tOpen;
|
$blockOpen
|
||||||
|
. $tTitleClose
|
||||||
|
. $tOpen
|
||||||
|
. $tCOpen
|
||||||
|
. 'Node.js Packages'
|
||||||
|
. $tCClose;
|
||||||
|
|
||||||
my @mAttrs = qw(
|
my @mAttrs = qw(
|
||||||
requires
|
requires
|
||||||
@ -3039,7 +3182,7 @@ m/^([^<>\n\r]+?)(?:\s+(\(last release only\)))?(?:\s+(?:<(.*)>))?$/
|
|||||||
suggests
|
suggests
|
||||||
);
|
);
|
||||||
|
|
||||||
push @ret, $trOpen;
|
push @ret, $tHOpen . $trOpen;
|
||||||
|
|
||||||
push @ret, $thOpen . 'Name' . $thClose;
|
push @ret, $thOpen . 'Name' . $thClose;
|
||||||
|
|
||||||
@ -3047,7 +3190,7 @@ m/^([^<>\n\r]+?)(?:\s+(\(last release only\)))?(?:\s+(?:<(.*)>))?$/
|
|||||||
|
|
||||||
push @ret, $thOpen . 'Status' . $thClose;
|
push @ret, $thOpen . 'Status' . $thClose;
|
||||||
|
|
||||||
push @ret, $trClose;
|
push @ret, $trClose . $tHClose . $tBOpen;
|
||||||
|
|
||||||
$linecount = 1;
|
$linecount = 1;
|
||||||
foreach my $mAttr (@mAttrs) {
|
foreach my $mAttr (@mAttrs) {
|
||||||
@ -3128,14 +3271,13 @@ m/^([^<>\n\r]+?)(?:\s+(\(last release only\)))?(?:\s+(?:<(.*)>))?$/
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
push @ret, $tClose . $blockClose;
|
push @ret, $tBClose . $tClose . $blockClose;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( defined( $modMeta->{x_prereqs_python} )
|
if ( defined( $modMeta->{x_prereqs_python} )
|
||||||
&& defined( $modMeta->{x_prereqs_python}{runtime} ) )
|
&& defined( $modMeta->{x_prereqs_python}{runtime} ) )
|
||||||
{
|
{
|
||||||
push @ret,
|
push @ret, $blockOpen . $tOpen . $tCOpen . 'Python Packages' . $tCClose;
|
||||||
$blockOpen . $tTitleOpen . 'Python Packages' . $tTitleClose . $tOpen;
|
|
||||||
|
|
||||||
my @mAttrs = qw(
|
my @mAttrs = qw(
|
||||||
requires
|
requires
|
||||||
@ -3143,7 +3285,7 @@ m/^([^<>\n\r]+?)(?:\s+(\(last release only\)))?(?:\s+(?:<(.*)>))?$/
|
|||||||
suggests
|
suggests
|
||||||
);
|
);
|
||||||
|
|
||||||
push @ret, $trOpen;
|
push @ret, $tHOpen . $trOpen;
|
||||||
|
|
||||||
push @ret, $thOpen . 'Name' . $thClose;
|
push @ret, $thOpen . 'Name' . $thClose;
|
||||||
|
|
||||||
@ -3151,7 +3293,7 @@ m/^([^<>\n\r]+?)(?:\s+(\(last release only\)))?(?:\s+(?:<(.*)>))?$/
|
|||||||
|
|
||||||
push @ret, $thOpen . 'Status' . $thClose;
|
push @ret, $thOpen . 'Status' . $thClose;
|
||||||
|
|
||||||
push @ret, $trClose;
|
push @ret, $trClose . $tHClose . $tBOpen;
|
||||||
|
|
||||||
$linecount = 1;
|
$linecount = 1;
|
||||||
foreach my $mAttr (@mAttrs) {
|
foreach my $mAttr (@mAttrs) {
|
||||||
@ -3257,7 +3399,7 @@ m/^([^<>\n\r]+?)(?:\s+(\(last release only\)))?(?:\s+(?:<(.*)>))?$/
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
push @ret, $tClose . $blockClose;
|
push @ret, $tBClose . $tClose . $blockClose;
|
||||||
}
|
}
|
||||||
|
|
||||||
push @ret, $tdClose . $trClose . $tClose . $blockClose;
|
push @ret, $tdClose . $trClose . $tClose . $blockClose;
|
||||||
@ -3872,10 +4014,10 @@ sub __aUniq {
|
|||||||
Installer
|
Installer
|
||||||
</h3>
|
</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<u><b>Installer - Module to update FHEM, install 3rd-party FHEM modules and manage system prerequisites</b></u><br>
|
<u><strong>Installer - Module to update FHEM, install 3rd-party FHEM modules and manage system prerequisites</strong></u><br>
|
||||||
<br>
|
<br>
|
||||||
<br>
|
<br>
|
||||||
<a name="Installerdefine" id="Installerdefine"></a><b>Define</b><br>
|
<a name="Installerdefine" id="Installerdefine"></a><strong>Define</strong><br>
|
||||||
<ul>
|
<ul>
|
||||||
<code>define <name> Installer</code><br>
|
<code>define <name> Installer</code><br>
|
||||||
<br>
|
<br>
|
||||||
@ -3885,7 +4027,7 @@ sub __aUniq {
|
|||||||
</ul><br>
|
</ul><br>
|
||||||
</ul><br>
|
</ul><br>
|
||||||
<br>
|
<br>
|
||||||
<a name="Installerget" id="Installerget"></a><b>Get</b>
|
<a name="Installerget" id="Installerget"></a><strong>Get</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li>checkPrereqs - list all missing prerequisites. If no parameter was given, the running live system will be inspected. If the parameter is a FHEM cfg file, inspection will be based on devices from this file. If the parameter is a list of module names, those will be used for inspection.
|
<li>checkPrereqs - list all missing prerequisites. If no parameter was given, the running live system will be inspected. If the parameter is a FHEM cfg file, inspection will be based on devices from this file. If the parameter is a list of module names, those will be used for inspection.
|
||||||
</li>
|
</li>
|
||||||
@ -3901,7 +4043,7 @@ sub __aUniq {
|
|||||||
</li>
|
</li>
|
||||||
</ul><br>
|
</ul><br>
|
||||||
<br>
|
<br>
|
||||||
<a name="Installerattribut" id="Installerattribut"></a><b>Attributes</b>
|
<a name="Installerattribut" id="Installerattribut"></a><strong>Attributes</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li>disable - disables the device
|
<li>disable - disables the device
|
||||||
</li>
|
</li>
|
||||||
@ -3939,7 +4081,7 @@ sub __aUniq {
|
|||||||
"abstract": "Modul zum Update von FHEM, zur Installation von Drittanbieter FHEM Modulen und der Verwaltung von Systemvoraussetzungen"
|
"abstract": "Modul zum Update von FHEM, zur Installation von Drittanbieter FHEM Modulen und der Verwaltung von Systemvoraussetzungen"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "v0.3.7",
|
"version": "v0.3.8",
|
||||||
"release_status": "testing",
|
"release_status": "testing",
|
||||||
"author": [
|
"author": [
|
||||||
"Julian Pawlowski <julian.pawlowski@gmail.com>"
|
"Julian Pawlowski <julian.pawlowski@gmail.com>"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user