";
echo "";
diff --git a/src/Server.php b/src/Server.php
index d154409..bf18816 100644
--- a/src/Server.php
+++ b/src/Server.php
@@ -904,6 +904,51 @@ $apiStatus = (int) ($this->fields['last_api_status'] ?? 0);
return;
}
+ $serverLocationId = (int) ($server->fields['locations_id'] ?? 0);
+ $linkableAssets = [];
+ if ($serverLocationId > 0) {
+ $itemtypes = Config::getEnabledItemtypes();
+ foreach ($unlinkedClients as $uc) {
+ $clientName = (string) ($uc['name'] ?? '');
+ if ($clientName === '') {
+ continue;
+ }
+ $clientNameLower = strtolower($clientName);
+ foreach ($itemtypes as $itemtype) {
+ if (!class_exists($itemtype)) {
+ continue;
+ }
+ $assetItem = new $itemtype();
+ if (!$assetItem instanceof CommonDBTM) {
+ continue;
+ }
+ $table = $assetItem->getTable();
+ if (!$DB->tableExists($table)) {
+ continue;
+ }
+ $assetIterator = $DB->request([
+ 'FROM' => $table,
+ 'WHERE' => [
+ 'name' => $clientName,
+ 'is_deleted' => 0,
+ ],
+ 'LIMIT' => 1,
+ ]);
+ foreach ($assetIterator as $assetRow) {
+ $assetLocationId = (int) ($assetRow['locations_id'] ?? 0);
+ $rootLocationId = LocationHelper::getRootLocationId($assetLocationId);
+ if ($rootLocationId > 0 && $rootLocationId === $serverLocationId) {
+ $linkableAssets[$clientNameLower] = [
+ 'itemtype' => $itemtype,
+ 'items_id' => (int) $assetRow['id'],
+ ];
+ }
+ break;
+ }
+ }
+ }
+ }
+
echo '';
echo '';
echo '';
@@ -912,11 +957,15 @@ $apiStatus = (int) ($this->fields['last_api_status'] ?? 0);
echo '| ' . htmlspecialchars(__('Status', 'urbackup')) . ' | ';
echo '' . htmlspecialchars(__('Last backup', 'urbackup')) . ' | ';
echo '' . htmlspecialchars(__('IP address', 'urbackup')) . ' | ';
+ echo '' . htmlspecialchars(__('Actions', 'urbackup')) . ' | ';
echo ' ';
echo '';
echo '';
foreach ($unlinkedClients as $uc) {
+ $clientName = (string) ($uc['name'] ?? 'Unknown');
+ $clientNameLower = strtolower($clientName);
+
$online = $uc['online'] ?? null;
$apiStatusString = $uc['status'] ?? '';
$statusHtml = self::renderOnlineBadge($online, $apiStatusString);
@@ -928,11 +977,28 @@ $apiStatus = (int) ($this->fields['last_api_status'] ?? 0);
$clientVersion = $uc['client_version_string'] ?? $uc['client_version'] ?? '-';
echo '';
- echo '| ' . htmlspecialchars((string) ($uc['name'] ?? 'Unknown')) . ' | ';
+ echo '' . htmlspecialchars($clientName) . ' | ';
echo '' . htmlspecialchars($clientVersion) . ' | ';
echo '' . $statusHtml . ' | ';
echo '' . htmlspecialchars($lastBackup ?: '-') . ' | ';
echo '' . htmlspecialchars($clientIp ?: '-') . ' | ';
+ echo '';
+ if (isset($linkableAssets[$clientNameLower])) {
+ $match = $linkableAssets[$clientNameLower];
+ $formAction = PLUGIN_URBACKUP_WEB_DIR . '/front/server.form.php';
+ echo ' | ';
echo ' ';
}
diff --git a/templates/asset/asset_tab.html.twig b/templates/asset/asset_tab.html.twig
index c3bc354..909971e 100644
--- a/templates/asset/asset_tab.html.twig
+++ b/templates/asset/asset_tab.html.twig
@@ -7,14 +7,6 @@
| {{ __('UrBackup server selection', 'urbackup') }} |
-
- | {{ __('Asset location ID', 'urbackup') }} |
- {{ asset_location_id }} |
-
-
- | {{ __('Root location ID', 'urbackup') }} |
- {{ root_location_id }} |
-
{% if is_sub_location %}
|
| |