Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion css/serverinfo-main.css
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
/* extracted by css-entry-points-plugin */
@import './main-B1Pt6YZg.chunk.css';
@import './main-C_6xGBMP.chunk.css';
16 changes: 8 additions & 8 deletions js/serverinfo-main.mjs

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion js/serverinfo-main.mjs.map

Large diffs are not rendered by default.

29 changes: 29 additions & 0 deletions src/components/PhpExtensionsSection.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<!--
- SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors
- SPDX-License-Identifier: AGPL-3.0-or-later
-->
<template>
<SectionHeading :icon="Puzzle" :title="t('serverinfo', 'PHP extensions')" />
<div class="server-info__tag-wrapper">
<template v-if="extensions">
<span
v-for="ext in extensions"
:key="ext"
class="server-info__php-extension-tag">{{ ext }}</span>
</template>
<template v-else>
{{ t('serverinfo', 'Unable to list extensions') }}
</template>
</div>
</template>

<script setup lang="ts">
import { t } from '@nextcloud/l10n'
import Puzzle from 'vue-material-design-icons/Puzzle.vue'
import SectionHeading from './SectionHeading.vue'

defineProps<{
/** Loaded extensions, or null when the platform would not list them */
extensions: string[] | null
}>()
</script>
17 changes: 0 additions & 17 deletions src/components/PhpSection.vue
Original file line number Diff line number Diff line change
Expand Up @@ -37,22 +37,6 @@
{{ php.opcache_revalidate_freq }} {{ t('serverinfo', 'seconds') }}
</td>
</tr>
<tr>
<td>{{ t('serverinfo', 'Extensions:') }}</td>
<td class="info">
<div class="server-info__tag-wrapper">
<template v-if="php.extensions">
<span
v-for="ext in php.extensions"
:key="ext"
class="server-info__php-extension-tag">{{ ext }}</span>
</template>
<template v-else>
{{ t('serverinfo', 'Unable to list extensions') }}
</template>
</div>
</td>
</tr>
<tr v-if="phpinfo">
<td>{{ t('serverinfo', 'PHP Info:') }}</td>
<td>
Expand Down Expand Up @@ -164,7 +148,6 @@ defineProps<{
max_execution_time: number
upload_max_filesize: number
opcache_revalidate_freq: number
extensions: string[] | null
}
fpm: {
pool: string
Expand Down
9 changes: 9 additions & 0 deletions src/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,15 @@
width: 100%;
}

/* Core's reset sets `white-space: nowrap` on every table. A long value such as
the CPU model then cannot wrap: the table grows past its column and prints
over the section beside it. */
.server-info-table table,
.server-infos-table {
white-space: normal;
overflow-wrap: break-word;
}

.server-info-table td {
padding: 6px;
}
Expand Down
8 changes: 8 additions & 0 deletions src/views/SettingsAdmin.vue
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,10 @@
<div class="col col-6 col-m-12">
<DatabaseSection :database="staticData.database" />
</div>
<!-- Full width: the tag list is far too long for half a row -->
<div class="col col-12">
<PhpExtensionsSection :extensions="staticData.php.extensions" />
</div>
</div>
</div>

Expand Down Expand Up @@ -112,6 +116,9 @@
<div class="col col-6 col-m-12">
<SectionSkeleton />
</div>
<div class="col col-12">
<SectionSkeleton />
</div>
</div>
</div>
</template>
Expand All @@ -126,6 +133,7 @@ import DiskSection from '../components/DiskSection.vue'
import MemoryChartSection from '../components/MemoryChartSection.vue'
import MonitoringSection from '../components/MonitoringSection.vue'
import NetworkSection from '../components/NetworkSection.vue'
import PhpExtensionsSection from '../components/PhpExtensionsSection.vue'
import PhpSection from '../components/PhpSection.vue'
import SectionSkeleton from '../components/SectionSkeleton.vue'
import SharesSection from '../components/SharesSection.vue'
Expand Down
Loading