diff options
-rw-r--r-- | src/usr/local/www/pkg_mgr_installed.php | 285 |
1 files changed, 185 insertions, 100 deletions
diff --git a/src/usr/local/www/pkg_mgr_installed.php b/src/usr/local/www/pkg_mgr_installed.php index dfc612f..f341d0f 100644 --- a/src/usr/local/www/pkg_mgr_installed.php +++ b/src/usr/local/www/pkg_mgr_installed.php @@ -72,43 +72,52 @@ if (is_subsystem_dirty('packagelock')) { exit; } -$pgtitle = array(gettext("System"), gettext("Package Manager"), gettext("Installed Packages")); -include("head.inc"); +// We are being called only to get the pacakge data, not to display anything +if (($_REQUEST) && ($_REQUEST['ajax'])) { + print(get_pkg_table()); + exit; +} -$tab_array = array(); -$tab_array[] = array(gettext("Installed Packages"), true, "pkg_mgr_installed.php"); -$tab_array[] = array(gettext("Available Packages"), false, "pkg_mgr.php"); -display_top_tabs($tab_array); +function get_pkg_table() { + $installed_packages = array(); + $package_list = get_pkg_info(); -$installed_packages = array(); -$package_list = get_pkg_info(); -foreach ($package_list as $pkg) { - if (!isset($pkg['installed']) && !isset($pkg['broken'])) { - continue; + if (!$package_list) { + print("error"); + exit; } - $installed_packages[] = $pkg; -} -if (empty($installed_packages)): - print_info_box(gettext("There are no packages currently installed."), 'warning', false); -else:?> - <div class="panel panel-default"> - <div class="panel-heading"><h2 class="panel-title"><?=gettext('Installed Packages')?></h2></div> - <div class="table-responsive"> - <table class="table table-striped table-hover table-condensed"> - <thead> - <tr> - <th><!-- Status icon --></th> - <th><?=gettext("Name")?></th> - <th><?=gettext("Category")?></th> - <th><?=gettext("Version")?></th> - <th><?=gettext("Description")?></th> - <th><?=gettext("Actions")?></th> - </tr> - </thead> - <tbody> -<?php - foreach ($installed_packages as $pkg): + foreach ($package_list as $pkg) { + if (!isset($pkg['installed']) && !isset($pkg['broken'])) { + continue; + } + $installed_packages[] = $pkg; + } + + $pkgtbl = ""; + + if (empty($installed_packages)) { + print ("nopkg"); + exit; + } + + $pkgtbl .=' <div class="panel panel-default">'; + $pkgtbl .=' <div class="panel-heading"><h2 class="panel-title">' . gettext('Installed Packages') . '</h2></div>'; + $pkgtbl .=' <div class="table-responsive">'; + $pkgtbl .=' <table class="table table-striped table-hover table-condensed">'; + $pkgtbl .=' <thead>'; + $pkgtbl .=' <tr>'; + $pkgtbl .=' <th><!-- Status icon --></th>'; + $pkgtbl .=' <th>' . gettext("Name") . '</th>'; + $pkgtbl .=' <th>' . gettext("Category") . '</th>'; + $pkgtbl .=' <th>' . gettext("Version") . '</th>'; + $pkgtbl .=' <th>' . gettext("Description") . '</th>'; + $pkgtbl .=' <th>' . gettext("Actions") . '</th>'; + $pkgtbl .=' </tr>'; + $pkgtbl .=' </thead>'; + $pkgtbl .=' <tbody>'; + + foreach ($installed_packages as $pkg) { if (!$pkg['name']) { continue; } @@ -147,74 +156,150 @@ else:?> $status = gettext('Unknown'); $statusicon = 'question'; } + + $pkgtbl .=' <tr>'; + $pkgtbl .=' <td>'; + + if ($upgradeavail) { + $pkgtbl .=' <a title="' . $status . '" href="pkg_mgr_install.php?mode=reinstallpkg&pkg=' . $pkg['name'] . $vergetstr . '" class="fa fa-refresh"></a>'; + } elseif ($missing) { + $pkgtbl .=' <span class="text-danger"><i title="' . $status . '" class="fa fa-exclamation"></i></span>'; + } else { + $pkgtbl .=' <i title="' . $status . '" class="fa fa-check"></i>'; + } + $pkgtbl .=' </td>'; + $pkgtbl .=' <td>'; + $pkgtbl .=' <span class="' . $txtcolor . '">' . $pkg['shortname'] . '</span>'; + $pkgtbl .=' </td>'; + $pkgtbl .=' <td>'; + $pkgtbl .=' ' . implode(" ", $pkg['categories']); + $pkgtbl .=' </td>'; + $pkgtbl .=' <td>'; + + if (!$g['disablepackagehistory']) { + $pkgtbl .=' <a target="_blank" title="' . gettext("View changelog") . '" href="' . htmlspecialchars($pkg['changeloglink']) . '">' . + htmlspecialchars($pkg['installed_version']) . '</a>'; + } else { + $pkgtbl .=' ' . htmlspecialchars($pkg['installed_version']); + } + + $pkgtbl .=' </td>'; + $pkgtbl .=' <td>'; + $pkgtbl .=' ' . $pkg['desc']; + + if (is_array($pkg['deps']) && count($pkg['deps'])) { + $pkgtbl .=' <br /><br />' . gettext("Package Dependencies") . ':<br/>'; + foreach ($pkg['deps'] as $pdep) { + $pkgtbl .=' <a target="_blank" href="https://freshports.org/' . $pdep['origin'] . '"> ' . + '<i class="fa fa-paperclip"></i> ' . basename($pdep['origin']) . '-' . $pdep['version'] . '</a> '; + } + } + $pkgtbl .=' </td>'; + $pkgtbl .=' <td>'; + $pkgtbl .=' <div class="row">'; + $pkgtbl .=' <a title="' . sprintf(gettext("Remove package %s"), $pkg['name']) . + '" href="pkg_mgr_install.php?mode=delete&pkg=' . $pkg['name'] . '" class="fa fa-trash"></a>'; + + if ($upgradeavail) { + $pkgtbl .=' <a title="' . sprintf(gettext("Update package %s"), $pkg['name']) . + '" href="pkg_mgr_install.php?mode=reinstallpkg&pkg=' . $pkg['name'] . $vergetstr . '" class="fa fa-refresh"></a>'; + } else { + $pkgtbl .=' <a title="' . sprintf(gettext("Reinstall package %s"), $pkg['name']) . + '" href="pkg_mgr_install.php?mode=reinstallpkg&pkg=' . $pkg['name'] . '" class="fa fa-retweet"></a>'; + } + + if (!isset($g['disablepackageinfo']) && $pkg['www'] != 'UNKNOWN') { + $pkgtbl .=' <a target="_blank" title="' . gettext("View more information") . '" href="' . + htmlspecialchars($pkg['www']) . '" class="fa fa-info"></a>'; + } + $pkgtbl .=' </div>'; + $pkgtbl .=' </td>'; + $pkgtbl .=' </tr>'; + } + + $pkgtbl .=' </tbody>'; + $pkgtbl .=' </table>'; + $pkgtbl .=' </div>'; + $pkgtbl .=' </div>'; + $pkgtbl .=' <br />'; + $pkgtbl .=' <div class="text-center">'; + $pkgtbl .=' <p>'; + $pkgtbl .=' <i class="fa fa-refresh"></i> = ' . gettext('Update') . ' '; + $pkgtbl .=' <i class="fa fa-check"></i> = ' . gettext('Current') . ' '; + $pkgtbl .=' </p>'; + $pkgtbl .=' <p>'; + $pkgtbl .=' <i class="fa fa-trash"></i> = ' . gettext('Remove') . ' '; + $pkgtbl .=' <i class="fa fa-info"></i> = ' . gettext('Information') . ' '; + $pkgtbl .=' <i class="fa fa-retweet"></i> = ' . gettext('Reinstall'); + $pkgtbl .=' </p>'; + $pkgtbl .=' <p><span class="text-warning">' . gettext("Newer version available") . '</span></p>'; + $pkgtbl .=' <p><span class="text-danger">' . gettext("Package is configured but not (fully) installed") . '</span></p>'; + $pkgtbl .=' </div>'; + + return $pkgtbl; +} + +$pgtitle = array(gettext("System"), gettext("Package Manager"), gettext("Installed Packages")); +include("head.inc"); + +$tab_array = array(); +$tab_array[] = array(gettext("Installed Packages"), true, "pkg_mgr_installed.php"); +$tab_array[] = array(gettext("Available Packages"), false, "pkg_mgr.php"); +display_top_tabs($tab_array); + ?> - <tr> - <td> -<?php if ($upgradeavail):?> - <a title="<?=$status?>" href="pkg_mgr_install.php?mode=reinstallpkg&pkg=<?=$pkg['name']?><?=$vergetstr?>" class="fa fa-refresh"></a> -<?php elseif ($missing):?> - <span class="text-danger"><i title="<?=$status?>" class="fa fa-exclamation"></i></span> -<?php else:?> - <i title="<?=$status?>" class="fa fa-check"></i> -<?php endif;?> - </td> - <td> - <span class="<?=$txtcolor?>"><?=$pkg['shortname']?></span> - </td> - <td> - <?=implode(" ", $pkg['categories'])?> - </td> - <td> -<?php if (!$g['disablepackagehistory']):?> - <a target="_blank" title="<?=gettext("View changelog")?>" href="<?=htmlspecialchars($pkg['changeloglink'])?>"> - <?=htmlspecialchars($pkg['installed_version'])?></a> -<?php else:?> - <?=htmlspecialchars($pkg['installed_version'])?> -<?php endif;?> - </td> - <td> - <?=$pkg['desc']?> -<?php if (is_array($pkg['deps']) && count($pkg['deps'])):?> - <br /><br /><?= gettext("Package Dependencies")?>:<br/> - <?php foreach ($pkg['deps'] as $pdep):?> - <a target="_blank" href="https://freshports.org/<?=$pdep['origin']?>"> <i class="fa fa-paperclip"></i> <?= basename($pdep['origin']) . '-' . $pdep['version']?></a>  - <?php endforeach;?> -<?php endif;?> - </td> - <td> - <div class="row"> - <a title="<?=sprintf(gettext("Remove package %s"), $pkg['name'])?>" href="pkg_mgr_install.php?mode=delete&pkg=<?=$pkg['name']?>" class="fa fa-trash"></a> -<?php if ($upgradeavail):?> - <a title="<?=sprintf(gettext("Update package %s"), $pkg['name'])?>" href="pkg_mgr_install.php?mode=reinstallpkg&pkg=<?=$pkg['name']?><?=$vergetstr?>" class="fa fa-refresh"></a> -<?php else:?> - <a title="<?=sprintf(gettext("Reinstall package %s"), $pkg['name'])?>" href="pkg_mgr_install.php?mode=reinstallpkg&pkg=<?=$pkg['name']?>" class="fa fa-retweet"></a> -<?php endif;?> - -<?php if (!isset($g['disablepackageinfo']) && $pkg['www'] != 'UNKNOWN'):?> - <a target="_blank" title="<?=gettext("View more information")?>" href="<?=htmlspecialchars($pkg['www'])?>" class="fa fa-info"></a> -<?php endif;?> - </div> - </td> - </tr> -<?php endforeach;?> - </tbody> -</table> -</div> -</div> -<br /> -<div class="text-center"> - <p> - <i class="fa fa-refresh"></i> = <?=gettext('Update')?> - <i class="fa fa-check"></i> = <?=gettext('Current')?> - </p> - <p> - <i class="fa fa-trash"></i> = <?=gettext('Remove')?> - <i class="fa fa-info"></i> = <?=gettext('Information')?> - <i class="fa fa-retweet"></i> = <?=gettext('Reinstall')?> - </p> - <p><span class="text-warning"><?=gettext("Newer version available")?></span></p> - <p><span class="text-danger"><?=gettext("Package is configured but not (fully) installed")?></span></p> + +<div class="panel panel-default"> + <div class="panel-heading"><h2 class="panel-title"><?=gettext('Packages')?></h2></div> + <div id="pkgtbl" class="panel-body table-responsive"> + <div id="waitmsg"> + <?php print_info_box(gettext("Please wait while the list of packages is retrieved and formatted.") . ' <i class="fa fa-cog fa-spin"></i>'); ?> + </div> + + <div id="errmsg" style="display: none;"> + <?php print_info_box("<ul><li>" . gettext("Unable to retrieve package information.") . "</li></ul>", 'danger'); ?> + </div> + + <div id="nopkg" style="display: none;"> + <?php print_info_box(gettext("There are no packages currently installed."), 'warning', false); ?> + </div> + </div> </div> +<script type="text/javascript"> +//<![CDATA[ + +events.push(function() { + + // Retrieve the table formatted pacakge information and display it in the "Packages" panel + // (Or display an appropriate error message) + var ajaxRequest; + + $.ajax({ + url: "/pkg_mgr_installed.php", + type: "post", + data: { ajax: "ajax"}, + success: function(data) { + if (data == "error") { + $('#waitmsg').hide(); + $('#nopkg').hide(); + $('#errmsg').show(); + } else if (data == "nopkg") { + $('#waitmsg').hide(); + $('#nopkg').show(); + $('#errmsg').hide(); + } else { + $('#pkgtbl').html(data); + } + }, + error: function() { + $('#waitmsg').hide(); + $('#nopkg').hide(); + $('#errmsg').show(); + } + }); + +}); +//]]> +</script> -<?php endif; ?> <?php include("foot.inc")?> |