diff --git a/agent/app/dto/response/app.go b/agent/app/dto/response/app.go
index 1a5aefedc7fb..d9966fe8611b 100644
--- a/agent/app/dto/response/app.go
+++ b/agent/app/dto/response/app.go
@@ -66,6 +66,7 @@ type AppInstalledCheck struct {
InstallPath string `json:"installPath"`
HttpPort int `json:"httpPort"`
HttpsPort int `json:"httpsPort"`
+ WebsiteDir string `json:"websiteDir"`
}
type AppDetailDTO struct {
diff --git a/agent/app/service/app_install.go b/agent/app/service/app_install.go
index f5e57fa3bd0b..bf23626fb0d6 100644
--- a/agent/app/service/app_install.go
+++ b/agent/app/service/app_install.go
@@ -164,6 +164,11 @@ func (a *AppInstallService) CheckExist(req request.AppInstalledInfo) (*response.
res.HttpPort = appInstall.HttpPort
res.HttpsPort = appInstall.HttpsPort
+ if appInstall.App.Key == "openresty" {
+ websiteDir, _ := settingRepo.GetValueByKey("WEBSITE_DIR")
+ res.WebsiteDir = websiteDir
+ }
+
return res, nil
}
diff --git a/frontend/src/api/interface/app.ts b/frontend/src/api/interface/app.ts
index 67b8f47af5dd..c7e8eff7dc99 100644
--- a/frontend/src/api/interface/app.ts
+++ b/frontend/src/api/interface/app.ts
@@ -202,6 +202,7 @@ export namespace App {
installPath: string;
httpPort: number;
httpsPort: number;
+ websiteDir: string;
}
export interface DatabaseConnInfo {
diff --git a/frontend/src/components/app-status/index.vue b/frontend/src/components/app-status/index.vue
index 63c1bd1231fa..41acf72a51c3 100644
--- a/frontend/src/components/app-status/index.vue
+++ b/frontend/src/components/app-status/index.vue
@@ -46,9 +46,7 @@
type="primary"
@click="setting"
link
- :disabled="
- data.status === 'Installing' || (data.status !== 'Running' && data.app === 'OpenResty')
- "
+ :disabled="data.status === 'Installing'"
>
{{ $t('commons.button.set') }}
diff --git a/frontend/src/components/table-search/index.vue b/frontend/src/components/table-search/index.vue
index 98abdfdda915..82ebbb30ea87 100644
--- a/frontend/src/components/table-search/index.vue
+++ b/frontend/src/components/table-search/index.vue
@@ -7,6 +7,7 @@
@clear="search()"
suffix-icon="Search"
@change="search()"
+ :disabled="props.disabled"
:placeholder="props.placeholder || $t('commons.button.search')"
>
@@ -21,6 +22,10 @@ const emit = defineEmits(['search', 'update:searchName']);
const searchInfo = ref();
const props = defineProps({
placeholder: String,
+ disabled: {
+ type: Boolean,
+ default: false,
+ },
});
const search = () => {
diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts
index 6e578a54ef3a..9e02c1bcd60d 100644
--- a/frontend/src/lang/modules/en.ts
+++ b/frontend/src/lang/modules/en.ts
@@ -2522,6 +2522,7 @@ const message = {
browserCacheTimeHelper:
'The time static resources are cached locally in the browser, reducing redundant requests. Users will use the local cache directly before it expires when refreshing the page.',
donotLinkeDB: 'Do Not Link Database',
+ toWebsiteDir: 'Enter Website Directory',
},
php: {
short_open_tag: 'Short tag support',
diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts
index 939a1c0ab18f..b786378d81ba 100644
--- a/frontend/src/lang/modules/ja.ts
+++ b/frontend/src/lang/modules/ja.ts
@@ -2437,6 +2437,7 @@ const message = {
browserCacheTimeHelper:
'静的リソースがブラウザのローカルにキャッシュされる時間、冗長なリクエストを減らします。有効期限前にユーザーがページをリフレッシュすると、ローカルキャッシュが直接使用されます。',
donotLinkeDB: 'データベースをリンクしない',
+ toWebsiteDir: 'ウェブサイトディレクトリに入る',
},
php: {
short_open_tag: '短いタグサポート',
diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts
index f6ee68aaf73c..15019ca1130f 100644
--- a/frontend/src/lang/modules/ko.ts
+++ b/frontend/src/lang/modules/ko.ts
@@ -2395,6 +2395,7 @@ const message = {
browserCacheTimeHelper:
'정적 리소스가 브라우저 로컬에 캐시되는 시간, 중복 요청을 줄입니다. 유효기간 전에 사용자가 페이지를 새로 고치면 로컬 캐시가 직접 사용됩니다.',
donotLinkeDB: '데이터베이스 연결하지 않기',
+ toWebsiteDir: '웹사이트 디렉토리로 이동',
},
php: {
short_open_tag: '짧은 태그 지원',
diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts
index d17580ffadd1..2a400431b39a 100644
--- a/frontend/src/lang/modules/ms.ts
+++ b/frontend/src/lang/modules/ms.ts
@@ -2494,6 +2494,7 @@ const message = {
browserCacheTimeHelper:
'Masa sumber statik di-cache secara tempatan di pelayar, mengurangkan permintaan berulang. Pengguna akan menggunakan cache tempatan secara langsung sebelum tamat tempoh semasa menyegarkan halaman.',
donotLinkeDB: 'Jangan Sambungkan Pangkalan Data',
+ toWebsiteDir: 'Masuk ke Direktori Laman Web',
},
php: {
short_open_tag: 'Sokongan tag pendek',
diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts
index 510107d04d3f..6d19e4986c18 100644
--- a/frontend/src/lang/modules/pt-br.ts
+++ b/frontend/src/lang/modules/pt-br.ts
@@ -2494,6 +2494,7 @@ const message = {
browserCacheTimeHelper:
'O tempo que os recursos estáticos são armazenados em cache localmente no navegador, reduzindo requisições redundantes. Os usuários usarão o cache local diretamente antes de expirar ao atualizar a página.',
donotLinkeDB: 'Não Vincular Banco de Dados',
+ toWebsiteDir: 'Entrar no Diretório do Site',
},
php: {
short_open_tag: 'Suporte para short tags',
diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts
index f618ee6ffe9a..d179d1f9bf09 100644
--- a/frontend/src/lang/modules/ru.ts
+++ b/frontend/src/lang/modules/ru.ts
@@ -2491,6 +2491,7 @@ const message = {
browserCacheTimeHelper:
'Время, в течение которого статические ресурсы кешируются локально в браузере, уменьшая повторные запросы. Пользователи будут использовать локальный кеш напрямую, если срок его действия не истек при обновлении страницы.',
donotLinkeDB: 'Не связывать с базой данных',
+ toWebsiteDir: 'Перейти в каталог сайта',
},
php: {
short_open_tag: 'Поддержка коротких тегов',
diff --git a/frontend/src/lang/modules/tr.ts b/frontend/src/lang/modules/tr.ts
index cab52856c09b..1900bd6d6c69 100644
--- a/frontend/src/lang/modules/tr.ts
+++ b/frontend/src/lang/modules/tr.ts
@@ -2553,6 +2553,7 @@ const message = {
browserCacheTimeHelper:
'Statik kaynakların tarayıcıda yerel olarak önbelleğe alındığı süre, tekrarlayan istekleri azaltır. Kullanıcılar süre dolmadan önce sayfayı yenilediğinde yerel önbelleği doğrudan kullanır.',
donotLinkeDB: 'Veritabanına Bağlanma',
+ toWebsiteDir: 'Web Sitesi Dizinine Gir',
},
php: {
short_open_tag: 'Kısa etiket desteği',
diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts
index a86c4014d338..b0a3892897c5 100644
--- a/frontend/src/lang/modules/zh-Hant.ts
+++ b/frontend/src/lang/modules/zh-Hant.ts
@@ -2352,6 +2352,7 @@ const message = {
browserCacheTime: '瀏覽器緩存時間',
browserCacheTimeHelper: '靜態資源在瀏覽器本地緩存的時間,減少重複請求。到期前用戶刷新頁面會直接使用本地緩存。',
donotLinkeDB: '不關聯數據庫',
+ toWebsiteDir: '進入網站目錄',
},
php: {
short_open_tag: '短標簽支持',
diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts
index 8da66746f96b..f4a08fa9ef57 100644
--- a/frontend/src/lang/modules/zh.ts
+++ b/frontend/src/lang/modules/zh.ts
@@ -2341,6 +2341,7 @@ const message = {
browserCacheTime: '浏览器缓存时间',
browserCacheTimeHelper: '静态资源在浏览器本地缓存的时间,减少重复请求。到期前用户刷新页面会直接使用本地缓存。',
donotLinkeDB: '不关联数据库',
+ toWebsiteDir: '进入网站目录',
},
php: {
short_open_tag: '短标签支持',
diff --git a/frontend/src/views/app-store/installed/index.vue b/frontend/src/views/app-store/installed/index.vue
index 4bc1ba87c68a..44531ac46050 100644
--- a/frontend/src/views/app-store/installed/index.vue
+++ b/frontend/src/views/app-store/installed/index.vue
@@ -107,11 +107,8 @@
type="primary"
link
@click="routerToFileWithPath(installed.path)"
- >
-
-
-
-
+ icon="FolderOpened"
+ >
diff --git a/frontend/src/views/website/website/index.vue b/frontend/src/views/website/website/index.vue
index 73b78445f050..e1dd9258571c 100644
--- a/frontend/src/views/website/website/index.vue
+++ b/frontend/src/views/website/website/index.vue
@@ -19,21 +19,21 @@
>
-
+
{{ $t('website.create') }}
-
+
{{ $t('commons.table.group') }}
-
+
{{ $t('website.defaultServer') }}
-
+
{{ $t('website.defaultHtml') }}
-
+
{{ $t('commons.table.type') }}
-
+
{{ $t('commons.table.group') }}
@@ -60,8 +55,8 @@
-
-
+
+
-
- {{ $t('commons.service.serviceNotStarted', ['OpenResty']) }}
+
+
+ {{ $t('commons.service.serviceNotStarted', ['OpenResty']) }}
+
+ {{ $t('website.toWebsiteDir') }}
+
+
{{ $t('app.checkInstalledWarn', ['OpenResty']) }}
@@ -355,6 +355,7 @@ const dataRef = ref();
const domains = ref([]);
const columns = ref([]);
const hoveredRowIndex = ref(-1);
+const websiteDir = ref();
const paginationConfig = reactive({
cacheSizeKey: 'website-page-size',
@@ -392,6 +393,10 @@ const favoriteWebsite = (row: Website.Website) => {
updateWebsitConfig(row);
};
+const disabledConfig = computed(() => {
+ return nginxStatus.value != 'Running';
+});
+
const changeSort = ({ prop, order }) => {
if (order) {
switch (prop) {
@@ -585,6 +590,7 @@ const checkExist = (data: App.CheckInstalled) => {
containerName.value = data.containerName;
nginxStatus.value = data.status;
installPath.value = data.installPath;
+ websiteDir.value = data.websiteDir;
};
const checkDate = (date: Date) => {
diff --git a/frontend/src/views/website/website/nginx/index.vue b/frontend/src/views/website/website/nginx/index.vue
index 2232d6a53f88..ca2718af8527 100644
--- a/frontend/src/views/website/website/nginx/index.vue
+++ b/frontend/src/views/website/website/nginx/index.vue
@@ -12,7 +12,12 @@
{{ $t('nginx.configResource') }}
-
+
{{ $t('website.nginxPer') }}
{{ $t('runtime.module') }}
-
+
{{ $t('website.other') }}