davidjumani a9bc272403 config: fix translation key usage for API actions and elsewhere (#407)
- Adds API messages
- Fixes English strings to use keys
- Fixes/adds missing keys to en.json
- Fixes locale load/store issue across logout/login

FIxes #410

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
Co-authored-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2021-01-20 07:06:19 +05:30

213 lines
7.9 KiB
JavaScript

// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
import kubernetes from '@/assets/icons/kubernetes.svg?inline'
export default {
name: 'image',
title: 'label.images',
icon: 'picture',
children: [
{
name: 'template',
title: 'label.templates',
icon: 'save',
permission: ['listTemplates'],
params: { templatefilter: 'self', showunique: 'true' },
resourceType: 'Template',
filters: ['self', 'shared', 'featured', 'community'],
columns: ['name', 'ostypename', 'status', 'hypervisor', 'account', 'domain', 'order'],
details: ['name', 'id', 'displaytext', 'checksum', 'hypervisor', 'format', 'ostypename', 'size', 'isready', 'passwordenabled', 'directdownload', 'isextractable', 'isdynamicallyscalable', 'ispublic', 'isfeatured', 'crosszones', 'type', 'account', 'domain', 'created'],
related: [{
name: 'vm',
title: 'label.instances',
param: 'templateid'
}],
tabs: [{
name: 'details',
component: () => import('@/components/view/DetailsTab.vue')
}, {
name: 'zones',
component: () => import('@/views/image/TemplateZones.vue')
}, {
name: 'settings',
component: () => import('@/components/view/DetailSettings')
}],
actions: [
{
api: 'registerTemplate',
icon: 'plus',
label: 'label.action.register.template',
listView: true,
popup: true,
component: () => import('@/views/image/RegisterOrUploadTemplate.vue')
},
{
api: 'getUploadParamsForTemplate',
icon: 'cloud-upload',
label: 'label.upload.template.from.local',
listView: true,
popup: true,
component: () => import('@/views/image/RegisterOrUploadTemplate.vue')
},
{
api: 'updateTemplate',
icon: 'edit',
label: 'label.edit',
dataView: true,
args: ['name', 'displaytext', 'passwordenabled', 'sshkeyenabled', 'ostypeid', 'isdynamicallyscalable', 'isrouting']
},
{
api: 'extractTemplate',
icon: 'cloud-download',
label: 'label.action.download.template',
message: 'message.action.download.template',
dataView: true,
show: (record) => { return record && record.isextractable },
args: ['zoneid', 'mode'],
mapping: {
zoneid: {
value: (record) => { return record.zoneid }
},
mode: {
value: (record) => { return 'HTTP_DOWNLOAD' }
}
},
response: (result) => { return `Please click <a href="${result.template.url}" target="_blank">${result.template.url}</a> to download.` }
},
{
api: 'updateTemplatePermissions',
icon: 'reconciliation',
label: 'label.action.share.template',
dataView: true,
popup: true,
show: (record, store) => { return (['Admin', 'DomainAdmin'].includes(store.userInfo.roletype) && (record.domainid === store.userInfo.domainid && record.account === store.userInfo.account) || record.templatetype !== 'BUILTIN') },
component: () => import('@/views/image/UpdateTemplateIsoPermissions')
}
]
},
{
name: 'iso',
title: 'label.isos',
icon: 'usb',
permission: ['listIsos'],
params: { isofilter: 'self', showunique: 'true' },
resourceType: 'ISO',
filters: ['self', 'shared', 'featured', 'community'],
columns: ['name', 'ostypename', 'account', 'domain'],
details: ['name', 'id', 'displaytext', 'checksum', 'ostypename', 'size', 'bootable', 'isready', 'directdownload', 'isextractable', 'ispublic', 'isfeatured', 'crosszones', 'account', 'domain', 'created'],
related: [{
name: 'vm',
title: 'label.instances',
param: 'isoid'
}],
tabs: [{
name: 'details',
component: () => import('@/components/view/DetailsTab.vue')
}, {
name: 'zones',
component: () => import('@/views/image/IsoZones.vue')
}],
actions: [
{
api: 'registerIso',
icon: 'plus',
label: 'label.action.register.iso',
listView: true,
popup: true,
component: () => import('@/views/image/RegisterOrUploadIso.vue')
},
{
api: 'getUploadParamsForIso',
icon: 'cloud-upload',
label: 'label.upload.iso.from.local',
listView: true,
popup: true,
component: () => import('@/views/image/RegisterOrUploadIso.vue')
},
{
api: 'updateIso',
icon: 'edit',
label: 'label.edit',
dataView: true,
args: ['name', 'displaytext', 'bootable', 'ostypeid', 'isdynamicallyscalable', 'isrouting']
},
{
api: 'extractIso',
icon: 'cloud-download',
label: 'label.action.download.iso',
message: 'message.action.download.iso',
dataView: true,
show: (record) => { return record && record.isextractable },
args: ['zoneid', 'mode'],
mapping: {
zoneid: {
value: (record) => { return record.zoneid }
},
mode: {
value: (record) => { return 'HTTP_DOWNLOAD' }
}
},
response: (result) => { return `Please click <a href="${result.iso.url}" target="_blank">${result.iso.url}</a> to download.` }
},
{
api: 'updateIsoPermissions',
icon: 'reconciliation',
label: 'label.action.edit.iso',
dataView: true,
args: ['op', 'accounts', 'projectids'],
popup: true,
show: (record, store) => { return (['Admin', 'DomainAdmin'].includes(store.userInfo.roletype) && (record.domainid === store.userInfo.domainid && record.account === store.userInfo.account) || record.templatetype !== 'BUILTIN') },
component: () => import('@/views/image/UpdateTemplateIsoPermissions')
}
]
},
{
name: 'kubernetesiso',
title: 'label.kubernetes.isos',
icon: kubernetes,
permission: ['listKubernetesSupportedVersions'],
columns: ['name', 'state', 'semanticversion', 'isostate', 'mincpunumber', 'minmemory', 'zonename'],
details: ['name', 'semanticversion', 'zoneid', 'zonename', 'isoid', 'isoname', 'isostate', 'mincpunumber', 'minmemory', 'supportsha', 'state'],
actions: [
{
api: 'addKubernetesSupportedVersion',
icon: 'plus',
label: 'label.kubernetes.version.add',
listView: true,
popup: true,
component: () => import('@/views/image/AddKubernetesSupportedVersion.vue')
},
{
api: 'updateKubernetesSupportedVersion',
icon: 'edit',
label: 'label.kubernetes.version.update',
dataView: true,
popup: true,
component: () => import('@/views/image/UpdateKubernetesSupportedVersion.vue')
},
{
api: 'deleteKubernetesSupportedVersion',
icon: 'delete',
label: 'label.kubernetes.version.update',
dataView: true
}
]
}
]
}