dashboard-shell-shell 3.0.5-test.42 → 3.0.5-test.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6464,6 +6464,7 @@ storageClass:
6464
6464
  tooltip: By default the default storage class on the host Harvester cluster is used.
6465
6465
 
6466
6466
  tableHeaders:
6467
+ claimedby: claimedby
6467
6468
  pod: pod
6468
6469
  volumeattributesclass: volumeattributesclass
6469
6470
  assuredConcurrencyShares: Assured Concurrency Shares
@@ -796,6 +796,10 @@ asyncButton:
796
796
  action: 恢复编排
797
797
  success: 已恢复编排
798
798
  waiting: 正在恢复编排
799
+ redeploy:
800
+ action: 重新部署
801
+ success: 重新部署成功
802
+ waiting: 正在重新部署工作负载
799
803
  rollback:
800
804
  action: 回滚
801
805
  success: 已回滚
@@ -4592,6 +4596,10 @@ promptRollback:
4592
4596
  multipleWorkloadError: "一次只能回滚一个工作负载。"
4593
4597
  singleRevisionBanner: 没有可用于回滚的修订版本。
4594
4598
 
4599
+ promptRedeploy:
4600
+ title: 重新部署 {type}?
4601
+ attemptingToRedeploy: "您正在尝试重新部署 {type} {names} 重新部署将重启所选工作负载,可能导致暂时性服务中断。"
4602
+
4595
4603
  promptSaveAsRKETemplate:
4596
4604
  title: 将 {cluster} 转换为新的 RKE 模板
4597
4605
  name: 集群模板名称
@@ -5442,6 +5450,7 @@ storageClass:
5442
5450
  tooltip: 默认使用主机 Cloud 集群上的默认存储类。
5443
5451
 
5444
5452
  tableHeaders:
5453
+ claimedby: 占用者
5445
5454
  pod: pod
5446
5455
  ip: ip
5447
5456
  volumeattributesclass: 卷属性类
@@ -623,13 +623,14 @@ export default {
623
623
  />
624
624
  <span v-else>{{ subtype.label }}</span>
625
625
  </h5>
626
- <a
626
+ <!-- 禅道 3541 隐藏 更多信息 -->
627
+ <!-- <a
627
628
  v-if="subtype.docLink"
628
629
  :href="subtype.docLink"
629
630
  target="_blank"
630
631
  rel="noopener nofollow"
631
632
  class="flex-right"
632
- >{{ t('generic.moreInfo') }} <i class="icon icon-external-link" /></a>
633
+ >{{ t('generic.moreInfo') }} <i class="icon icon-external-link" /></a> -->
633
634
  </div>
634
635
  <hr
635
636
  v-if="subtype.description"
@@ -148,7 +148,8 @@ export default {
148
148
  :to="clusterToolsLink"
149
149
  class="cluster-link"
150
150
  >
151
- {{ t('nav.clusterTools') }}
151
+ <!-- 禅道 3539 隐藏集群工具 -->
152
+ <!-- {{ t('nav.clusterTools') }} -->
152
153
  </router-link>
153
154
  </div>
154
155
  </div>
@@ -97,7 +97,7 @@ export default {
97
97
  <div :style="userLogoSize === 79 ? { width: '287px' } : {}" class="avatar">
98
98
  <img
99
99
  :style="{ width: userLogoSize + 'px', height: userLogoSize + 'px' }"
100
- src="@shell/assets/images/user.png"
100
+ :src="require('@shell/assets/images/user.png')"
101
101
  :class="{'round': principal.roundAvatar}"
102
102
  :alt="t('principal.alt.avatar')"
103
103
  >
@@ -655,7 +655,7 @@ export function init(store) {
655
655
  virtualType({
656
656
  label: store.getters['i18n/t'](`typeLabel.${ VIRTUAL_TYPES.PROJECT_SECRETS }`, { count: 2 }),
657
657
  group: 'storage',
658
- icon: 'globe',
658
+ icon: 'default',
659
659
  namespaced: false,
660
660
  ifRancherCluster: true,
661
661
  name: VIRTUAL_TYPES.PROJECT_SECRETS,
@@ -204,7 +204,7 @@ export default {
204
204
  >
205
205
  <template #title>
206
206
  <h4 class="text-default-text">
207
- {{ t('promptRollback.modalTitle', { workloadName }, true) }}
207
+ {{ t('promptRollback.modalTitle', { workloadName }) }}
208
208
  </h4>
209
209
  </template>
210
210
  <template #body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dashboard-shell-shell",
3
- "version": "3.0.5-test.42",
3
+ "version": "3.0.5-test.43",
4
4
  "description": "Rancher Dashboard Shell",
5
5
  "repository": "https://github.com/rancherlabs/dashboard",
6
6
  "license": "Apache-2.0",
@@ -694,7 +694,8 @@ export default {
694
694
  role="link"
695
695
  :aria-label="t('nav.clusterTools')"
696
696
  >
697
- <span>{{ t('nav.clusterTools') }}</span>
697
+ <!-- 禅道 3539 隐藏集群工具 -->
698
+ <!-- <span>{{ t('nav.clusterTools') }}</span> -->
698
699
  </router-link>
699
700
  </div>
700
701
  <ConfigBadge
@@ -41,6 +41,26 @@ export async function handleSpoofedRequest(rootGetters, schemaStore, opt, produc
41
41
  }
42
42
  }
43
43
 
44
+ export function normalizeSchemaMethods(schema) {
45
+ if (!schema) return schema;
46
+
47
+ const HTTP_METHODS = ["get", "post", "put", "patch", "delete"];
48
+
49
+ if (Array.isArray(schema.resourceMethods)) {
50
+ schema.resourceMethods = schema.resourceMethods.map(m =>
51
+ HTTP_METHODS.includes(m.toLowerCase()) ? m.toUpperCase() : m
52
+ );
53
+ }
54
+
55
+ if (Array.isArray(schema.collectionMethods)) {
56
+ schema.collectionMethods = schema.collectionMethods.map(m =>
57
+ HTTP_METHODS.includes(m.toLowerCase()) ? m.toUpperCase() : m
58
+ );
59
+ }
60
+
61
+ return schema;
62
+ }
63
+
44
64
  export async function loadSchemas(ctx, watch = true) {
45
65
  const {
46
66
  getters, dispatch, commit, rootGetters
@@ -55,6 +75,9 @@ export async function loadSchemas(ctx, watch = true) {
55
75
  }
56
76
 
57
77
  res.data.forEach(addSchemaIndexFields);
78
+
79
+ // ✅ 统一处理 HTTP 方法
80
+ res.data.forEach(normalizeSchemaMethods);
58
81
 
59
82
  commit('loadAll', {
60
83
  ctx,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env bash
2
2
 
3
3
  # 执行命令示例:
4
- # TAG=shell-pkg-v3.0.5-test.42 ./shell/scripts/publish-shell.sh
4
+ # TAG=shell-pkg-v3.0.5-test.43 ./shell/scripts/publish-shell.sh
5
5
 
6
6
  set -euo pipefail
7
7
 
@@ -2687,6 +2687,7 @@ export default class Ingress {
2687
2687
 
2688
2688
  declare module '@shell/plugins/dashboard-store/actions' {
2689
2689
  export function handleSpoofedRequest(rootGetters: any, schemaStore: any, opt: any, product: any): Promise<any>;
2690
+ export function normalizeSchemaMethods(schema: any): any;
2690
2691
  export function loadSchemas(ctx: any, watch?: boolean): Promise<any>;
2691
2692
  export const _ALL: "all";
2692
2693
  export const _MERGE: "merge";
@@ -1,5 +1,15 @@
1
1
  {
2
2
  "translations": [
3
+ {
4
+ "pattern": "virtualmachineimages\\.harvesterhci\\.io.*forbidden.*user.*cannot.*(patch|update|create|delete).*resource.*virtualmachineimages.*harvesterhci\\.io.*namespace",
5
+ "replacement": "权限不足",
6
+ "flags": "gi"
7
+ },
8
+ {
9
+ "pattern": "storageclasses\\.storage\\.k8s\\.io.*forbidden.*user.*cannot.*(patch|update|create|delete).*resource.*storageclasses.*storage\\.k8s\\.io.*cluster scope",
10
+ "replacement": "权限不足",
11
+ "flags": "gi"
12
+ },
3
13
  {
4
14
  "pattern": "Cluster agent is not connected",
5
15
  "replacement": "集群agent未连接",