Merge remote-tracking branch 'yudao/dev' into dev
This commit is contained in:
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
@@ -101,7 +101,6 @@
|
|||||||
"**/.DS_Store": true,
|
"**/.DS_Store": true,
|
||||||
"**/vite.config.mts.*": true,
|
"**/vite.config.mts.*": true,
|
||||||
"**/tea.yaml": true,
|
"**/tea.yaml": true,
|
||||||
"**/public/**": true
|
|
||||||
},
|
},
|
||||||
"files.watcherExclude": {
|
"files.watcherExclude": {
|
||||||
"**/.git/objects/**": true,
|
"**/.git/objects/**": true,
|
||||||
@@ -112,7 +111,6 @@
|
|||||||
"**/bower_components/**": true,
|
"**/bower_components/**": true,
|
||||||
"**/dist/**": true,
|
"**/dist/**": true,
|
||||||
"**/yarn.lock": true,
|
"**/yarn.lock": true,
|
||||||
"**/public/**": true
|
|
||||||
},
|
},
|
||||||
|
|
||||||
"typescript.tsserver.exclude": ["**/node_modules", "**/dist", "**/.turbo"],
|
"typescript.tsserver.exclude": ["**/node_modules", "**/dist", "**/.turbo"],
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ setupVbenForm<ComponentType>({
|
|||||||
if (value === undefined || value === null || value.length === 0) {
|
if (value === undefined || value === null || value.length === 0) {
|
||||||
return true;
|
return true;
|
||||||
} else if (!MOBILE_REGEX.test(value)) {
|
} else if (!MOBILE_REGEX.test(value)) {
|
||||||
return $t('ui.formRules.phone', [ctx.label]);
|
return $t('ui.formRules.mobile', [ctx.label]);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
@@ -55,7 +55,7 @@ setupVbenForm<ComponentType>({
|
|||||||
return $t('ui.formRules.required', [ctx.label]);
|
return $t('ui.formRules.required', [ctx.label]);
|
||||||
}
|
}
|
||||||
if (!MOBILE_REGEX.test(value)) {
|
if (!MOBILE_REGEX.test(value)) {
|
||||||
return $t('ui.formRules.phone', [ctx.label]);
|
return $t('ui.formRules.mobile', [ctx.label]);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* 来自 @vben/plugins/vxe-table style.css */
|
/* 来自 @vben/plugins/vxe-table style.css TODO @puhui999:可以写下目的哈; */
|
||||||
:root {
|
:root {
|
||||||
--vxe-ui-font-color: hsl(var(--foreground));
|
--vxe-ui-font-color: hsl(var(--foreground));
|
||||||
--vxe-ui-font-primary-color: hsl(var(--primary));
|
--vxe-ui-font-primary-color: hsl(var(--primary));
|
||||||
|
|||||||
48
apps/web-antd/src/api/bpm/form/index.ts
Normal file
48
apps/web-antd/src/api/bpm/form/index.ts
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
import type { PageParam, PageResult } from '@vben/request';
|
||||||
|
|
||||||
|
import { requestClient } from '#/api/request';
|
||||||
|
|
||||||
|
export namespace BpmFormApi {
|
||||||
|
// TODO @siye:注释加一个。。嘿嘿
|
||||||
|
export interface FormVO {
|
||||||
|
id?: number | undefined;
|
||||||
|
name: string;
|
||||||
|
conf: string;
|
||||||
|
fields: string[];
|
||||||
|
status: number;
|
||||||
|
remark: string;
|
||||||
|
createTime: string;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 获取表单分页列表 */
|
||||||
|
export async function getFormPage(params: PageParam) {
|
||||||
|
return requestClient.get<PageResult<BpmFormApi.FormVO>>('/bpm/form/page', {
|
||||||
|
params,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 获取表单详情 */
|
||||||
|
export async function getFormDetail(id: number) {
|
||||||
|
return requestClient.get<BpmFormApi.FormVO>(`/bpm/form/get?id=${id}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 创建表单 */
|
||||||
|
export async function createForm(data: BpmFormApi.FormVO) {
|
||||||
|
return requestClient.post('/bpm/form/create', data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 更新表单 */
|
||||||
|
export async function updateForm(data: BpmFormApi.FormVO) {
|
||||||
|
return requestClient.put('/bpm/form/update', data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 删除表单 */
|
||||||
|
export async function deleteForm(id: number) {
|
||||||
|
return requestClient.delete(`/bpm/form/delete?id=${id}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 获取表单简单列表 */
|
||||||
|
export async function getFormSimpleList() {
|
||||||
|
return requestClient.get<BpmFormApi.FormVO[]>('/bpm/form/simple-list');
|
||||||
|
}
|
||||||
2
apps/web-antd/src/components/table-action/index.ts
Normal file
2
apps/web-antd/src/components/table-action/index.ts
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
export { default as TableAction } from './table-action.vue';
|
||||||
|
export * from './typing';
|
||||||
268
apps/web-antd/src/components/table-action/table-action.vue
Normal file
268
apps/web-antd/src/components/table-action/table-action.vue
Normal file
@@ -0,0 +1,268 @@
|
|||||||
|
<!-- add by 星语:参考 vben2 的方式,增加 TableAction 组件 -->
|
||||||
|
<script setup lang="ts">
|
||||||
|
import type { ButtonType } from 'ant-design-vue/es/button';
|
||||||
|
|
||||||
|
import type { PropType } from 'vue';
|
||||||
|
|
||||||
|
import type { ActionItem, PopConfirm } from './typing';
|
||||||
|
|
||||||
|
import { computed, toRaw } from 'vue';
|
||||||
|
|
||||||
|
import { useAccess } from '@vben/access';
|
||||||
|
import { IconifyIcon } from '@vben/icons';
|
||||||
|
import { $t } from '@vben/locales';
|
||||||
|
import { isBoolean, isFunction } from '@vben/utils';
|
||||||
|
|
||||||
|
import {
|
||||||
|
Button,
|
||||||
|
Dropdown,
|
||||||
|
Menu,
|
||||||
|
Popconfirm,
|
||||||
|
Space,
|
||||||
|
Tooltip,
|
||||||
|
} from 'ant-design-vue';
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
actions: {
|
||||||
|
type: Array as PropType<ActionItem[]>,
|
||||||
|
default() {
|
||||||
|
return [];
|
||||||
|
},
|
||||||
|
},
|
||||||
|
dropDownActions: {
|
||||||
|
type: Array as PropType<ActionItem[]>,
|
||||||
|
default() {
|
||||||
|
return [];
|
||||||
|
},
|
||||||
|
},
|
||||||
|
divider: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const { hasAccessByCodes } = useAccess();
|
||||||
|
|
||||||
|
function isIfShow(action: ActionItem): boolean {
|
||||||
|
const ifShow = action.ifShow;
|
||||||
|
|
||||||
|
let isIfShow = true;
|
||||||
|
|
||||||
|
if (isBoolean(ifShow)) {
|
||||||
|
isIfShow = ifShow;
|
||||||
|
}
|
||||||
|
if (isFunction(ifShow)) {
|
||||||
|
isIfShow = ifShow(action);
|
||||||
|
}
|
||||||
|
return isIfShow;
|
||||||
|
}
|
||||||
|
|
||||||
|
const getActions = computed(() => {
|
||||||
|
return (toRaw(props.actions) || [])
|
||||||
|
.filter((action) => {
|
||||||
|
return (
|
||||||
|
(hasAccessByCodes(action.auth || []) ||
|
||||||
|
(action.auth || []).length === 0) &&
|
||||||
|
isIfShow(action)
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.map((action) => {
|
||||||
|
const { popConfirm } = action;
|
||||||
|
return {
|
||||||
|
// getPopupContainer: document.body,
|
||||||
|
type: 'link' as ButtonType,
|
||||||
|
...action,
|
||||||
|
...popConfirm,
|
||||||
|
onConfirm: popConfirm?.confirm,
|
||||||
|
onCancel: popConfirm?.cancel,
|
||||||
|
enable: !!popConfirm,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
const getDropdownList = computed((): any[] => {
|
||||||
|
return (toRaw(props.dropDownActions) || [])
|
||||||
|
.filter((action) => {
|
||||||
|
return (
|
||||||
|
(hasAccessByCodes(action.auth || []) ||
|
||||||
|
(action.auth || []).length === 0) &&
|
||||||
|
isIfShow(action)
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.map((action, index) => {
|
||||||
|
const { label, popConfirm } = action;
|
||||||
|
return {
|
||||||
|
...action,
|
||||||
|
...popConfirm,
|
||||||
|
onConfirm: popConfirm?.confirm,
|
||||||
|
onCancel: popConfirm?.cancel,
|
||||||
|
text: label,
|
||||||
|
divider:
|
||||||
|
index < props.dropDownActions.length - 1 ? props.divider : false,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
function getPopConfirmProps(attrs: PopConfirm) {
|
||||||
|
const originAttrs: any = attrs;
|
||||||
|
delete originAttrs.icon;
|
||||||
|
if (attrs.confirm && isFunction(attrs.confirm)) {
|
||||||
|
originAttrs.onConfirm = attrs.confirm;
|
||||||
|
delete originAttrs.confirm;
|
||||||
|
}
|
||||||
|
if (attrs.cancel && isFunction(attrs.cancel)) {
|
||||||
|
originAttrs.onCancel = attrs.cancel;
|
||||||
|
delete originAttrs.cancel;
|
||||||
|
}
|
||||||
|
return originAttrs;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getButtonProps(action: ActionItem) {
|
||||||
|
const res = {
|
||||||
|
type: action.type || 'primary',
|
||||||
|
...action,
|
||||||
|
};
|
||||||
|
delete res.icon;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleMenuClick(e: any) {
|
||||||
|
const action = getDropdownList.value[e.key];
|
||||||
|
if (action.onClick && isFunction(action.onClick)) {
|
||||||
|
action.onClick();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="m-table-action">
|
||||||
|
<Space
|
||||||
|
:size="
|
||||||
|
getActions?.some((item: ActionItem) => item.type === 'link') ? 0 : 8
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<template v-for="(action, index) in getActions" :key="index">
|
||||||
|
<Popconfirm
|
||||||
|
v-if="action.popConfirm"
|
||||||
|
v-bind="getPopConfirmProps(action.popConfirm)"
|
||||||
|
>
|
||||||
|
<template v-if="action.popConfirm.icon" #icon>
|
||||||
|
<IconifyIcon :icon="action.popConfirm.icon" />
|
||||||
|
</template>
|
||||||
|
<Tooltip
|
||||||
|
v-bind="
|
||||||
|
typeof action.tooltip === 'string'
|
||||||
|
? { title: action.tooltip }
|
||||||
|
: { ...action.tooltip }
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<Button v-bind="getButtonProps(action)">
|
||||||
|
<template v-if="action.icon" #icon>
|
||||||
|
<IconifyIcon :icon="action.icon" />
|
||||||
|
</template>
|
||||||
|
{{ action.label }}
|
||||||
|
</Button>
|
||||||
|
</Tooltip>
|
||||||
|
</Popconfirm>
|
||||||
|
<Tooltip
|
||||||
|
v-else
|
||||||
|
v-bind="
|
||||||
|
typeof action.tooltip === 'string'
|
||||||
|
? { title: action.tooltip }
|
||||||
|
: { ...action.tooltip }
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<Button v-bind="getButtonProps(action)" @click="action.onClick">
|
||||||
|
<template v-if="action.icon" #icon>
|
||||||
|
<IconifyIcon :icon="action.icon" />
|
||||||
|
</template>
|
||||||
|
{{ action.label }}
|
||||||
|
</Button>
|
||||||
|
</Tooltip>
|
||||||
|
</template>
|
||||||
|
</Space>
|
||||||
|
|
||||||
|
<Dropdown v-if="getDropdownList.length > 0" :trigger="['hover']">
|
||||||
|
<slot name="more">
|
||||||
|
<Button size="small" type="link">
|
||||||
|
<template #icon>
|
||||||
|
{{ $t('page.action.more') }}
|
||||||
|
<IconifyIcon class="icon-more" icon="ant-design:more-outlined" />
|
||||||
|
</template>
|
||||||
|
</Button>
|
||||||
|
</slot>
|
||||||
|
<template #overlay>
|
||||||
|
<Menu @click="handleMenuClick">
|
||||||
|
<Menu.Item v-for="(action, index) in getDropdownList" :key="index">
|
||||||
|
<template v-if="action.popConfirm">
|
||||||
|
<Popconfirm v-bind="getPopConfirmProps(action.popConfirm)">
|
||||||
|
<template v-if="action.popConfirm.icon" #icon>
|
||||||
|
<IconifyIcon :icon="action.popConfirm.icon" />
|
||||||
|
</template>
|
||||||
|
<div
|
||||||
|
:class="
|
||||||
|
action.disabled === true
|
||||||
|
? 'cursor-not-allowed text-gray-300'
|
||||||
|
: ''
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<IconifyIcon v-if="action.icon" :icon="action.icon" />
|
||||||
|
<span class="ml-1">{{ action.text }}</span>
|
||||||
|
</div>
|
||||||
|
</Popconfirm>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
<div
|
||||||
|
:class="
|
||||||
|
action.disabled === true
|
||||||
|
? 'cursor-not-allowed text-gray-300'
|
||||||
|
: ''
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<IconifyIcon v-if="action.icon" :icon="action.icon" />
|
||||||
|
{{ action.label }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</Menu.Item>
|
||||||
|
</Menu>
|
||||||
|
</template>
|
||||||
|
</Dropdown>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<style lang="scss">
|
||||||
|
.m-table-action {
|
||||||
|
.ant-btn {
|
||||||
|
padding: 4px;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-btn > .iconify + span,
|
||||||
|
.ant-btn > span + .iconify {
|
||||||
|
margin-inline-start: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.iconify {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
width: 1em;
|
||||||
|
height: 1em;
|
||||||
|
font-style: normal;
|
||||||
|
line-height: 0;
|
||||||
|
vertical-align: -0.125em;
|
||||||
|
color: inherit;
|
||||||
|
text-align: center;
|
||||||
|
text-transform: none;
|
||||||
|
text-rendering: optimizelegibility;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-popconfirm {
|
||||||
|
.ant-popconfirm-buttons {
|
||||||
|
.ant-btn {
|
||||||
|
margin-inline-start: 4px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
27
apps/web-antd/src/components/table-action/typing.ts
Normal file
27
apps/web-antd/src/components/table-action/typing.ts
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
import type { ButtonProps } from 'ant-design-vue/es/button/buttonTypes';
|
||||||
|
import type { TooltipProps } from 'ant-design-vue/es/tooltip/Tooltip';
|
||||||
|
|
||||||
|
export interface PopConfirm {
|
||||||
|
title: string;
|
||||||
|
okText?: string;
|
||||||
|
cancelText?: string;
|
||||||
|
confirm: () => void;
|
||||||
|
cancel?: () => void;
|
||||||
|
icon?: string;
|
||||||
|
disabled?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ActionItem extends ButtonProps {
|
||||||
|
onClick?: () => void;
|
||||||
|
label?: string;
|
||||||
|
color?: 'error' | 'success' | 'warning';
|
||||||
|
icon?: string;
|
||||||
|
popConfirm?: PopConfirm;
|
||||||
|
disabled?: boolean;
|
||||||
|
divider?: boolean;
|
||||||
|
// 权限编码控制是否显示
|
||||||
|
auth?: string[];
|
||||||
|
// 业务控制是否显示
|
||||||
|
ifShow?: ((action: ActionItem) => boolean) | boolean;
|
||||||
|
tooltip?: string | TooltipProps;
|
||||||
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
// TODO @芋艿:是否有更好的组织形式?!
|
||||||
import type { Key } from 'ant-design-vue/es/table/interface';
|
import type { Key } from 'ant-design-vue/es/table/interface';
|
||||||
|
|
||||||
import type { SystemDeptApi } from '#/api/system/dept';
|
import type { SystemDeptApi } from '#/api/system/dept';
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import type { TableToolbar } from '#/components/table-toolbar';
|
|||||||
|
|
||||||
import { ref, watch } from 'vue';
|
import { ref, watch } from 'vue';
|
||||||
|
|
||||||
|
// TODO @puhui999:这里的注释、目的写下;
|
||||||
export function useTableToolbar() {
|
export function useTableToolbar() {
|
||||||
const hiddenSearchBar = ref(false); // 隐藏搜索栏
|
const hiddenSearchBar = ref(false); // 隐藏搜索栏
|
||||||
const tableToolbarRef = ref<InstanceType<typeof TableToolbar>>();
|
const tableToolbarRef = ref<InstanceType<typeof TableToolbar>>();
|
||||||
@@ -14,6 +15,7 @@ export function useTableToolbar() {
|
|||||||
const table = tableRef.value;
|
const table = tableRef.value;
|
||||||
const tableToolbar = tableToolbarRef.value;
|
const tableToolbar = tableToolbarRef.value;
|
||||||
if (table && tableToolbar) {
|
if (table && tableToolbar) {
|
||||||
|
// TODO @puhui999:通过 nexttick 可以解决么?
|
||||||
setTimeout(async () => {
|
setTimeout(async () => {
|
||||||
const toolbar = tableToolbar.getToolbarRef();
|
const toolbar = tableToolbar.getToolbarRef();
|
||||||
if (!toolbar) {
|
if (!toolbar) {
|
||||||
@@ -29,6 +31,7 @@ export function useTableToolbar() {
|
|||||||
() => tableRef.value,
|
() => tableRef.value,
|
||||||
(val) => {
|
(val) => {
|
||||||
if (!val || isBound.value) return;
|
if (!val || isBound.value) return;
|
||||||
|
// TODO @puhui999:这里要处理下 promise 的告警么?
|
||||||
bindTableToolbar();
|
bindTableToolbar();
|
||||||
},
|
},
|
||||||
{ immediate: true },
|
{ immediate: true },
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
// TODO @xingyu:这个有可能 3 端复用么?想着是把 layouts 下的 components 没有这个目录哈;
|
||||||
import { useVbenModal, VbenButton, VbenButtonGroup } from '@vben/common-ui';
|
import { useVbenModal, VbenButton, VbenButtonGroup } from '@vben/common-ui';
|
||||||
import { openWindow } from '@vben/utils';
|
import { openWindow } from '@vben/utils';
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ const tenantEnable = isTenantEnable();
|
|||||||
const value = ref<number>(accessStore.visitTenantId ?? undefined); // 当前访问的租户 ID
|
const value = ref<number>(accessStore.visitTenantId ?? undefined); // 当前访问的租户 ID
|
||||||
const tenants = ref<SystemTenantApi.Tenant[]>([]); // 租户列表
|
const tenants = ref<SystemTenantApi.Tenant[]>([]); // 租户列表
|
||||||
|
|
||||||
|
// TODO @xingyu:这个有可能 3 端复用么?
|
||||||
async function handleChange(id: SelectValue) {
|
async function handleChange(id: SelectValue) {
|
||||||
// 设置访问租户 ID
|
// 设置访问租户 ID
|
||||||
accessStore.setVisitTenantId(id as number);
|
accessStore.setVisitTenantId(id as number);
|
||||||
|
|||||||
@@ -23,7 +23,8 @@
|
|||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
"confirm": "Confirm",
|
"confirm": "Confirm",
|
||||||
"reset": "Reset",
|
"reset": "Reset",
|
||||||
"search": "Search"
|
"search": "Search",
|
||||||
|
"more": "More"
|
||||||
},
|
},
|
||||||
"tenant": {
|
"tenant": {
|
||||||
"placeholder": "Please select tenant",
|
"placeholder": "Please select tenant",
|
||||||
|
|||||||
@@ -23,7 +23,8 @@
|
|||||||
"cancel": "取消",
|
"cancel": "取消",
|
||||||
"confirm": "确认",
|
"confirm": "确认",
|
||||||
"reset": "重置",
|
"reset": "重置",
|
||||||
"search": "搜索"
|
"search": "搜索",
|
||||||
|
"more": "更多"
|
||||||
},
|
},
|
||||||
"tenant": {
|
"tenant": {
|
||||||
"placeholder": "请选择租户",
|
"placeholder": "请选择租户",
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ function setupCommonGuard(router: Router) {
|
|||||||
// 记录已经加载的页面
|
// 记录已经加载的页面
|
||||||
const loadedPaths = new Set<string>();
|
const loadedPaths = new Set<string>();
|
||||||
|
|
||||||
router.beforeEach(async (to) => {
|
router.beforeEach((to) => {
|
||||||
to.meta.loaded = loadedPaths.has(to.path);
|
to.meta.loaded = loadedPaths.has(to.path);
|
||||||
|
|
||||||
// 页面加载进度条
|
// 页面加载进度条
|
||||||
|
|||||||
@@ -46,6 +46,22 @@ const routes: RouteRecordRaw[] = [
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: '/bpm/manager/form/edit',
|
||||||
|
name: 'BpmFormEditor',
|
||||||
|
component: () => import('#/views/bpm/form/editor.vue'),
|
||||||
|
meta: {
|
||||||
|
title: '编辑流程表单',
|
||||||
|
activePath: '/bpm/manager/form',
|
||||||
|
},
|
||||||
|
props: (route) => {
|
||||||
|
return {
|
||||||
|
id: route.query.id,
|
||||||
|
type: route.query.type,
|
||||||
|
copyId: route.query.copyId,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: 'manager/model/create',
|
path: 'manager/model/create',
|
||||||
component: () => import('#/views/bpm/model/form/index.vue'),
|
component: () => import('#/views/bpm/model/form/index.vue'),
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* 针对 https://github.com/xaboy/form-create-designer 封装的工具类
|
* 针对 https://github.com/xaboy/form-create-designer 封装的工具类
|
||||||
*/
|
*/
|
||||||
|
// TODO @芋艿:后续这些 form-create 的优化;另外需要使用 form-create-helper 会好点
|
||||||
import { isRef } from 'vue';
|
import { isRef } from 'vue';
|
||||||
|
|
||||||
// 编码表单 Conf
|
// 编码表单 Conf
|
||||||
|
|||||||
143
apps/web-antd/src/views/bpm/form/data.ts
Normal file
143
apps/web-antd/src/views/bpm/form/data.ts
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
import type { VbenFormSchema } from '#/adapter/form';
|
||||||
|
import type { OnActionClickFn, VxeTableGridOptions } from '#/adapter/vxe-table';
|
||||||
|
import type { BpmFormApi } from '#/api/bpm/form';
|
||||||
|
|
||||||
|
import { useAccess } from '@vben/access';
|
||||||
|
import { $t } from '@vben/locales';
|
||||||
|
|
||||||
|
import { z } from '#/adapter/form';
|
||||||
|
import { CommonStatusEnum, DICT_TYPE, getDictOptions } from '#/utils';
|
||||||
|
|
||||||
|
const { hasAccessByCodes } = useAccess();
|
||||||
|
|
||||||
|
/** 新增/修改的表单 */
|
||||||
|
export function useFormSchema(): VbenFormSchema[] {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
fieldName: 'id',
|
||||||
|
component: 'Input',
|
||||||
|
dependencies: {
|
||||||
|
triggerFields: [''],
|
||||||
|
show: () => false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fieldName: 'name',
|
||||||
|
label: '表单名称',
|
||||||
|
component: 'Input',
|
||||||
|
componentProps: {
|
||||||
|
placeholder: '请输入表单名称',
|
||||||
|
},
|
||||||
|
rules: 'required',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fieldName: 'status',
|
||||||
|
label: '状态',
|
||||||
|
component: 'RadioGroup',
|
||||||
|
componentProps: {
|
||||||
|
options: getDictOptions(DICT_TYPE.COMMON_STATUS, 'number'),
|
||||||
|
buttonStyle: 'solid',
|
||||||
|
optionType: 'button',
|
||||||
|
},
|
||||||
|
rules: z.number().default(CommonStatusEnum.ENABLE),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fieldName: 'remark',
|
||||||
|
label: '备注',
|
||||||
|
component: 'Textarea',
|
||||||
|
componentProps: {
|
||||||
|
placeholder: '请输入备注',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 列表的搜索表单 */
|
||||||
|
export function useGridFormSchema(): VbenFormSchema[] {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
fieldName: 'name',
|
||||||
|
label: '表单名称',
|
||||||
|
component: 'Input',
|
||||||
|
componentProps: {
|
||||||
|
placeholder: '请输入表单名称',
|
||||||
|
allowClear: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 列表的字段 */
|
||||||
|
export function useGridColumns<T = BpmFormApi.FormVO>(
|
||||||
|
onActionClick: OnActionClickFn<T>,
|
||||||
|
): VxeTableGridOptions['columns'] {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
field: 'id',
|
||||||
|
title: '编号',
|
||||||
|
minWidth: 100,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'name',
|
||||||
|
title: '表单名称',
|
||||||
|
minWidth: 200,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'status',
|
||||||
|
title: '状态',
|
||||||
|
minWidth: 200,
|
||||||
|
cellRender: {
|
||||||
|
name: 'CellDict',
|
||||||
|
props: { type: DICT_TYPE.COMMON_STATUS },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'remark',
|
||||||
|
title: '备注',
|
||||||
|
minWidth: 200,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'createTime',
|
||||||
|
title: '创建时间',
|
||||||
|
minWidth: 180,
|
||||||
|
formatter: 'formatDateTime',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'operation',
|
||||||
|
title: '操作',
|
||||||
|
minWidth: 150,
|
||||||
|
align: 'center',
|
||||||
|
fixed: 'right',
|
||||||
|
cellRender: {
|
||||||
|
attrs: {
|
||||||
|
nameField: 'name',
|
||||||
|
nameTitle: '流程名称',
|
||||||
|
onClick: onActionClick,
|
||||||
|
},
|
||||||
|
name: 'CellOperation',
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
code: 'copy',
|
||||||
|
text: $t('ui.actionTitle.copy'),
|
||||||
|
show: hasAccessByCodes(['bpm:form:update']),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: 'edit',
|
||||||
|
text: $t('ui.actionTitle.edit'),
|
||||||
|
show: hasAccessByCodes(['bpm:form:update']),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: 'detail',
|
||||||
|
text: $t('ui.actionTitle.detail'),
|
||||||
|
show: hasAccessByCodes(['bpm:form:query']),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: 'delete',
|
||||||
|
text: $t('ui.actionTitle.delete'),
|
||||||
|
show: hasAccessByCodes(['bpm:form:delete']),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
159
apps/web-antd/src/views/bpm/form/editor.vue
Normal file
159
apps/web-antd/src/views/bpm/form/editor.vue
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
<script lang="ts" setup>
|
||||||
|
// TODO @siye:editor 要不要放到独立的目录?form/designer ?
|
||||||
|
import { computed, onMounted, ref } from 'vue';
|
||||||
|
|
||||||
|
import { Page, useVbenModal } from '@vben/common-ui';
|
||||||
|
import { IconifyIcon } from '@vben/icons';
|
||||||
|
|
||||||
|
import FcDesigner from '@form-create/antd-designer';
|
||||||
|
import { Button, message } from 'ant-design-vue';
|
||||||
|
|
||||||
|
import { getFormDetail } from '#/api/bpm/form';
|
||||||
|
import { useFormCreateDesigner } from '#/components/form-create';
|
||||||
|
import { router } from '#/router';
|
||||||
|
import { setConfAndFields } from '#/utils';
|
||||||
|
|
||||||
|
import Form from './modules/form.vue';
|
||||||
|
|
||||||
|
defineOptions({ name: 'BpmFormEditor' });
|
||||||
|
|
||||||
|
// TODO @siye:这里有 lint 告警
|
||||||
|
const props = defineProps<Props>();
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
copyId?: number;
|
||||||
|
id?: number;
|
||||||
|
type: 'copy' | 'create' | 'edit';
|
||||||
|
}
|
||||||
|
|
||||||
|
// 流程表单详情
|
||||||
|
const flowFormConfig = ref();
|
||||||
|
|
||||||
|
const [FormModal, formModalApi] = useVbenModal({
|
||||||
|
connectedComponent: Form,
|
||||||
|
destroyOnClose: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
const designerRef = ref<InstanceType<typeof FcDesigner>>();
|
||||||
|
|
||||||
|
// 表单设计器配置
|
||||||
|
const designerConfig = ref({
|
||||||
|
switchType: [], // 是否可以切换组件类型,或者可以相互切换的字段
|
||||||
|
autoActive: true, // 是否自动选中拖入的组件
|
||||||
|
useTemplate: false, // 是否生成vue2语法的模板组件
|
||||||
|
formOptions: {
|
||||||
|
form: {
|
||||||
|
labelWidth: '100px', // 设置默认的 label 宽度为 100px
|
||||||
|
},
|
||||||
|
}, // 定义表单配置默认值
|
||||||
|
fieldReadonly: false, // 配置field是否可以编辑
|
||||||
|
hiddenDragMenu: false, // 隐藏拖拽操作按钮
|
||||||
|
hiddenDragBtn: false, // 隐藏拖拽按钮
|
||||||
|
hiddenMenu: [], // 隐藏部分菜单
|
||||||
|
hiddenItem: [], // 隐藏部分组件
|
||||||
|
hiddenItemConfig: {}, // 隐藏组件的部分配置项
|
||||||
|
disabledItemConfig: {}, // 禁用组件的部分配置项
|
||||||
|
showSaveBtn: false, // 是否显示保存按钮
|
||||||
|
showConfig: true, // 是否显示右侧的配置界面
|
||||||
|
showBaseForm: true, // 是否显示组件的基础配置表单
|
||||||
|
showControl: true, // 是否显示组件联动
|
||||||
|
showPropsForm: true, // 是否显示组件的属性配置表单
|
||||||
|
showEventForm: true, // 是否显示组件的事件配置表单
|
||||||
|
showValidateForm: true, // 是否显示组件的验证配置表单
|
||||||
|
showFormConfig: true, // 是否显示表单配置
|
||||||
|
showInputData: true, // 是否显示录入按钮
|
||||||
|
showDevice: true, // 是否显示多端适配选项
|
||||||
|
appendConfigData: [], // 定义渲染规则所需的formData
|
||||||
|
});
|
||||||
|
|
||||||
|
useFormCreateDesigner(designerRef); // 表单设计器增强
|
||||||
|
|
||||||
|
// 计算属性:获取当前需要加载的表单ID
|
||||||
|
const currentFormId = computed(() => {
|
||||||
|
switch (props.type) {
|
||||||
|
case 'copy': {
|
||||||
|
return props.copyId;
|
||||||
|
}
|
||||||
|
case 'create':
|
||||||
|
case 'edit': {
|
||||||
|
return props.id;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 加载表单配置
|
||||||
|
async function loadFormConfig(id: number) {
|
||||||
|
try {
|
||||||
|
const formDetail = await getFormDetail(id);
|
||||||
|
flowFormConfig.value = formDetail;
|
||||||
|
if (designerRef.value) {
|
||||||
|
setConfAndFields(designerRef, formDetail.conf, formDetail.fields);
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
message.error('加载表单配置失败');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 初始化设计器
|
||||||
|
async function initializeDesigner() {
|
||||||
|
const id = currentFormId.value;
|
||||||
|
|
||||||
|
if (props.type === 'copy' && !id) {
|
||||||
|
message.error('复制ID不能为空');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (id) {
|
||||||
|
await loadFormConfig(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleSave() {
|
||||||
|
formModalApi
|
||||||
|
.setData({
|
||||||
|
designer: designerRef.value,
|
||||||
|
formConfig: flowFormConfig.value,
|
||||||
|
action: props.type,
|
||||||
|
})
|
||||||
|
.open();
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO @siye:一些必要的注释,稍微写写哈。保持风格的一致性;
|
||||||
|
function onBack() {
|
||||||
|
router.push({
|
||||||
|
path: '/bpm/manager/form',
|
||||||
|
query: {
|
||||||
|
refresh: '1',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
initializeDesigner();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<Page auto-content-height>
|
||||||
|
<FormModal @success="onBack" />
|
||||||
|
|
||||||
|
<FcDesigner class="my-designer" ref="designerRef" :config="designerConfig">
|
||||||
|
<template #handle>
|
||||||
|
<Button size="small" type="primary" @click="handleSave">
|
||||||
|
<IconifyIcon icon="mdi:content-save" />
|
||||||
|
保存
|
||||||
|
</Button>
|
||||||
|
</template>
|
||||||
|
</FcDesigner>
|
||||||
|
</Page>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.my-designer {
|
||||||
|
height: 100%;
|
||||||
|
min-height: 500px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -1,34 +1,216 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { Page } from '@vben/common-ui';
|
import type {
|
||||||
|
OnActionClickParams,
|
||||||
|
VxeTableGridOptions,
|
||||||
|
} from '#/adapter/vxe-table';
|
||||||
|
import type { BpmFormApi } from '#/api/bpm/form';
|
||||||
|
|
||||||
import { Button } from 'ant-design-vue';
|
import { ref, watch } from 'vue';
|
||||||
|
import { useRoute } from 'vue-router';
|
||||||
|
|
||||||
|
import { Page, useVbenModal } from '@vben/common-ui';
|
||||||
|
import { Plus } from '@vben/icons';
|
||||||
|
import { $t } from '@vben/locales';
|
||||||
|
|
||||||
|
import { Button, message } from 'ant-design-vue';
|
||||||
|
|
||||||
|
import { useVbenVxeGrid } from '#/adapter/vxe-table';
|
||||||
|
import { deleteForm, getFormDetail, getFormPage } from '#/api/bpm/form';
|
||||||
import { DocAlert } from '#/components/doc-alert';
|
import { DocAlert } from '#/components/doc-alert';
|
||||||
|
import { router } from '#/router';
|
||||||
|
import { setConfAndFields2 } from '#/utils';
|
||||||
|
|
||||||
|
import { useGridColumns, useGridFormSchema } from './data';
|
||||||
|
|
||||||
|
defineOptions({ name: 'BpmForm' });
|
||||||
|
|
||||||
|
const [Grid, gridApi] = useVbenVxeGrid({
|
||||||
|
formOptions: {
|
||||||
|
schema: useGridFormSchema(),
|
||||||
|
},
|
||||||
|
gridOptions: {
|
||||||
|
columns: useGridColumns(onActionClick),
|
||||||
|
height: 'auto',
|
||||||
|
keepSource: true,
|
||||||
|
proxyConfig: {
|
||||||
|
ajax: {
|
||||||
|
query: async ({ page }, formValues) => {
|
||||||
|
return await getFormPage({
|
||||||
|
pageNo: page.currentPage,
|
||||||
|
pageSize: page.pageSize,
|
||||||
|
...formValues,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
rowConfig: {
|
||||||
|
keyField: 'id',
|
||||||
|
},
|
||||||
|
toolbarConfig: {
|
||||||
|
refresh: { code: 'query' },
|
||||||
|
search: true,
|
||||||
|
},
|
||||||
|
cellConfig: {
|
||||||
|
height: 64,
|
||||||
|
},
|
||||||
|
} as VxeTableGridOptions<BpmFormApi.FormVO>,
|
||||||
|
});
|
||||||
|
|
||||||
|
/** 表格操作按钮的回调函数 */
|
||||||
|
function onActionClick({ code, row }: OnActionClickParams<BpmFormApi.FormVO>) {
|
||||||
|
switch (code) {
|
||||||
|
case 'copy': {
|
||||||
|
onCopy(row);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 'delete': {
|
||||||
|
onDelete(row);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 'detail': {
|
||||||
|
onDetail(row);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 'edit': {
|
||||||
|
onEdit(row);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/** 复制 */
|
||||||
|
function onCopy(row: BpmFormApi.FormVO) {
|
||||||
|
router.push({
|
||||||
|
name: 'BpmFormEditor',
|
||||||
|
query: {
|
||||||
|
copyId: row.id,
|
||||||
|
type: 'copy',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 删除 */
|
||||||
|
async function onDelete(row: BpmFormApi.FormVO) {
|
||||||
|
const hideLoading = message.loading({
|
||||||
|
content: $t('ui.actionMessage.deleting', [row.id]),
|
||||||
|
duration: 0,
|
||||||
|
key: 'action_process_msg',
|
||||||
|
});
|
||||||
|
try {
|
||||||
|
await deleteForm(row.id as number);
|
||||||
|
message.success($t('ui.actionMessage.deleteSuccess', [row.name]));
|
||||||
|
onRefresh();
|
||||||
|
} finally {
|
||||||
|
hideLoading();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 详情 */
|
||||||
|
const formConfig = ref<any>({});
|
||||||
|
async function onDetail(row: BpmFormApi.FormVO) {
|
||||||
|
formConfig.value = await getFormDetail(row.id as number);
|
||||||
|
|
||||||
|
setConfAndFields2(
|
||||||
|
formConfig.value,
|
||||||
|
formConfig.value.conf,
|
||||||
|
formConfig.value.fields,
|
||||||
|
);
|
||||||
|
detailModalApi.open();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 编辑 */
|
||||||
|
function onEdit(row: BpmFormApi.FormVO) {
|
||||||
|
console.warn(row);
|
||||||
|
router.push({
|
||||||
|
name: 'BpmFormEditor',
|
||||||
|
query: {
|
||||||
|
id: row.id,
|
||||||
|
type: 'edit',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 刷新表格 */
|
||||||
|
function onRefresh() {
|
||||||
|
gridApi.query();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 新增 */
|
||||||
|
function onCreate() {
|
||||||
|
router.push({
|
||||||
|
name: 'BpmFormEditor',
|
||||||
|
query: {
|
||||||
|
type: 'create',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 详情弹窗 */
|
||||||
|
const [DetailModal, detailModalApi] = useVbenModal({
|
||||||
|
destroyOnClose: true,
|
||||||
|
footer: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
/** 检测路由参数 */
|
||||||
|
const route = useRoute();
|
||||||
|
watch(
|
||||||
|
() => route.query.refresh,
|
||||||
|
(val) => {
|
||||||
|
if (val === '1') {
|
||||||
|
onRefresh();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ immediate: true },
|
||||||
|
);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<Page>
|
<Page auto-content-height>
|
||||||
<DocAlert
|
<DocAlert
|
||||||
title="审批接入(流程表单)"
|
title="审批接入(流程表单)"
|
||||||
url="https://doc.iocoder.cn/bpm/use-bpm-form/"
|
url="https://doc.iocoder.cn/bpm/use-bpm-form/"
|
||||||
/>
|
/>
|
||||||
<Button
|
<FormModal @success="onRefresh" />
|
||||||
danger
|
<Grid table-title="流程表单">
|
||||||
type="link"
|
<template #toolbar-tools>
|
||||||
target="_blank"
|
<Button type="primary" @click="onCreate">
|
||||||
href="https://github.com/yudaocode/yudao-ui-admin-vue3"
|
<Plus class="size-5" />
|
||||||
|
{{ $t('ui.actionTitle.create', ['流程表单']) }}
|
||||||
|
</Button>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<!-- 摘要 -->
|
||||||
|
<!-- TODO @siye:这个是不是不应该有呀? -->
|
||||||
|
<template #slot-summary="{ row }">
|
||||||
|
<div
|
||||||
|
class="flex flex-col py-2"
|
||||||
|
v-if="
|
||||||
|
row.processInstance.summary &&
|
||||||
|
row.processInstance.summary.length > 0
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
v-for="(item, index) in row.processInstance.summary"
|
||||||
|
:key="index"
|
||||||
|
>
|
||||||
|
<span class="text-gray-500">
|
||||||
|
{{ item.key }} : {{ item.value }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-else>-</div>
|
||||||
|
</template>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
<DetailModal
|
||||||
|
title="流程表单详情"
|
||||||
|
class="w-[800px]"
|
||||||
|
:body-style="{
|
||||||
|
maxHeight: '100px',
|
||||||
|
}"
|
||||||
>
|
>
|
||||||
该功能支持 Vue3 + element-plus 版本!
|
<div class="mx-4">
|
||||||
</Button>
|
<form-create :option="formConfig.option" :rule="formConfig.rule" />
|
||||||
<br />
|
</div>
|
||||||
<Button
|
</DetailModal>
|
||||||
type="link"
|
|
||||||
target="_blank"
|
|
||||||
href="https://github.com/yudaocode/yudao-ui-admin-vue3/blob/master/src/views/bpm/form/index"
|
|
||||||
>
|
|
||||||
可参考
|
|
||||||
https://github.com/yudaocode/yudao-ui-admin-vue3/blob/master/src/views/bpm/form/index
|
|
||||||
代码,pull request 贡献给我们!
|
|
||||||
</Button>
|
|
||||||
</Page>
|
</Page>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
110
apps/web-antd/src/views/bpm/form/modules/form.vue
Normal file
110
apps/web-antd/src/views/bpm/form/modules/form.vue
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
<script lang="ts" setup>
|
||||||
|
import type { FcDesigner } from '@form-create/antd-designer';
|
||||||
|
|
||||||
|
import type { BpmFormApi } from '#/api/bpm/form';
|
||||||
|
|
||||||
|
import { computed, ref } from 'vue';
|
||||||
|
|
||||||
|
import { useVbenModal } from '@vben/common-ui';
|
||||||
|
|
||||||
|
import { message } from 'ant-design-vue';
|
||||||
|
|
||||||
|
import { useVbenForm } from '#/adapter/form';
|
||||||
|
import { createForm, updateForm } from '#/api/bpm/form';
|
||||||
|
import { $t } from '#/locales';
|
||||||
|
import { encodeConf, encodeFields } from '#/utils';
|
||||||
|
|
||||||
|
import { useFormSchema } from '../data';
|
||||||
|
|
||||||
|
const emit = defineEmits(['success']);
|
||||||
|
|
||||||
|
const designerComponent = ref<InstanceType<typeof FcDesigner>>();
|
||||||
|
const formData = ref<BpmFormApi.FormVO>();
|
||||||
|
const editorAction = ref<string>();
|
||||||
|
|
||||||
|
const getTitle = computed(() => {
|
||||||
|
if (!formData.value?.id) {
|
||||||
|
return $t('ui.actionTitle.create', ['流程表单']);
|
||||||
|
}
|
||||||
|
return editorAction.value === 'copy'
|
||||||
|
? $t('ui.actionTitle.copy', ['流程表单'])
|
||||||
|
: $t('ui.actionTitle.edit', ['流程表单']);
|
||||||
|
});
|
||||||
|
|
||||||
|
const [Form, formApi] = useVbenForm({
|
||||||
|
layout: 'horizontal',
|
||||||
|
schema: useFormSchema(),
|
||||||
|
showDefaultActions: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
const [Modal, modalApi] = useVbenModal({
|
||||||
|
async onConfirm() {
|
||||||
|
// TODO @siye:建议和别的模块,也稍微加点类似的注释哈。= = 阅读总是会有点层次感;
|
||||||
|
const { valid } = await formApi.validate();
|
||||||
|
if (!valid) return;
|
||||||
|
|
||||||
|
modalApi.lock();
|
||||||
|
try {
|
||||||
|
const data = (await formApi.getValues()) as BpmFormApi.FormVO;
|
||||||
|
|
||||||
|
data.conf = encodeConf(designerComponent);
|
||||||
|
data.fields = encodeFields(designerComponent);
|
||||||
|
|
||||||
|
// TODO @siye:这个是不是不用抽方法呀,直接写逻辑就完事啦。
|
||||||
|
const saveForm = async () => {
|
||||||
|
if (!formData.value?.id) {
|
||||||
|
return createForm(data);
|
||||||
|
}
|
||||||
|
return editorAction.value === 'copy'
|
||||||
|
? createForm(data)
|
||||||
|
: updateForm(data);
|
||||||
|
};
|
||||||
|
|
||||||
|
await saveForm();
|
||||||
|
await modalApi.close();
|
||||||
|
emit('success');
|
||||||
|
message.success($t('ui.actionMessage.operationSuccess'));
|
||||||
|
} finally {
|
||||||
|
modalApi.unlock();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async onOpenChange(isOpen: boolean) {
|
||||||
|
if (!isOpen) {
|
||||||
|
formData.value = undefined;
|
||||||
|
designerComponent.value = undefined;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO @siye:建议和别的模块,也稍微加点类似的注释哈。= = 阅读总是会有点层次感;
|
||||||
|
const data = modalApi.getData<any>();
|
||||||
|
if (!data) return;
|
||||||
|
|
||||||
|
designerComponent.value = data.designer;
|
||||||
|
formData.value = data.formConfig;
|
||||||
|
editorAction.value = data.action;
|
||||||
|
|
||||||
|
if (editorAction.value === 'copy' && formData.value) {
|
||||||
|
formData.value = {
|
||||||
|
...formData.value,
|
||||||
|
name: `${formData.value.name}_copy`,
|
||||||
|
id: undefined,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (formData.value) {
|
||||||
|
await formApi.setValues(formData.value);
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
modalApi.unlock();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<Modal :title="getTitle" class="w-[600px]">
|
||||||
|
<Form class="mx-4" />
|
||||||
|
</Modal>
|
||||||
|
</template>
|
||||||
@@ -42,6 +42,21 @@ const [Grid, gridApi] = useVbenVxeGrid({
|
|||||||
...formValues,
|
...formValues,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
querySuccess: (params) => {
|
||||||
|
// TODO @siye:getLeaderName?: (userId: number) => string | undefined, 参考这个哈。
|
||||||
|
const { list } = params.response;
|
||||||
|
const userMap = new Map(
|
||||||
|
userList.value.map((user) => [user.id, user.nickname]),
|
||||||
|
);
|
||||||
|
list.forEach(
|
||||||
|
(item: BpmUserGroupApi.UserGroupVO & { nicknames?: string }) => {
|
||||||
|
item.nicknames = item.userIds
|
||||||
|
.map((userId) => userMap.get(userId))
|
||||||
|
.filter(Boolean)
|
||||||
|
.join('、');
|
||||||
|
},
|
||||||
|
);
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
rowConfig: {
|
rowConfig: {
|
||||||
@@ -127,14 +142,7 @@ onMounted(async () => {
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template #userIds-cell="{ row }">
|
<template #userIds-cell="{ row }">
|
||||||
<span
|
<span>{{ row.nicknames }}</span>
|
||||||
v-for="(userId, index) in row.userIds"
|
|
||||||
:key="userId"
|
|
||||||
class="pr-5px"
|
|
||||||
>
|
|
||||||
{{ userList.find((user) => user.id === userId)?.nickname }}
|
|
||||||
<span v-if="index < row.userIds.length - 1">、</span>
|
|
||||||
</span>
|
|
||||||
</template>
|
</template>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Page>
|
</Page>
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import { z } from '#/adapter/form';
|
|||||||
import { CommonStatusEnum, DICT_TYPE, getDictOptions } from '#/utils';
|
import { CommonStatusEnum, DICT_TYPE, getDictOptions } from '#/utils';
|
||||||
|
|
||||||
const { hasAccessByCodes } = useAccess();
|
const { hasAccessByCodes } = useAccess();
|
||||||
|
|
||||||
/** 新增/修改的表单 */
|
/** 新增/修改的表单 */
|
||||||
export function useFormSchema(): VbenFormSchema[] {
|
export function useFormSchema(): VbenFormSchema[] {
|
||||||
return [
|
return [
|
||||||
|
|||||||
@@ -269,13 +269,14 @@ onMounted(() => {
|
|||||||
<img
|
<img
|
||||||
v-if="definition.icon"
|
v-if="definition.icon"
|
||||||
:src="definition.icon"
|
:src="definition.icon"
|
||||||
class="h-12 w-12 object-contain"
|
class="flow-icon-img object-contain"
|
||||||
alt="流程图标"
|
alt="流程图标"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<div v-else class="flow-icon flex-shrink-0">
|
<div v-else class="flow-icon flex-shrink-0">
|
||||||
<Tooltip :title="definition.name">
|
<Tooltip :title="definition.name">
|
||||||
<span class="text-xs text-white">
|
<span class="text-xs text-white">
|
||||||
{{ definition.name }}
|
{{ definition.name?.slice(0, 2) }}
|
||||||
</span>
|
</span>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</div>
|
</div>
|
||||||
@@ -324,19 +325,26 @@ onMounted(() => {
|
|||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.process-definition-container {
|
.process-definition-container {
|
||||||
.definition-item-card {
|
.definition-item-card {
|
||||||
|
.flow-icon-img {
|
||||||
|
width: 48px;
|
||||||
|
height: 48px;
|
||||||
|
border-radius: 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
.flow-icon {
|
.flow-icon {
|
||||||
|
@apply bg-primary;
|
||||||
|
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
width: 32px;
|
width: 48px;
|
||||||
height: 32px;
|
height: 48px;
|
||||||
background-color: #3f73f7;
|
border-radius: 0.25rem;
|
||||||
border-radius: 50%;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&.search-match {
|
&.search-match {
|
||||||
background-color: rgb(63 115 247 / 10%);
|
background-color: rgb(63 115 247 / 10%);
|
||||||
border: 1px solid #3f73f7;
|
border: 1px solid var(--primary);
|
||||||
animation: bounce 0.5s ease;
|
animation: bounce 0.5s ease;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,12 +5,6 @@ import type { SystemUserApi } from '#/api/system/user';
|
|||||||
import { nextTick, onMounted, ref } from 'vue';
|
import { nextTick, onMounted, ref } from 'vue';
|
||||||
|
|
||||||
import { Page } from '@vben/common-ui';
|
import { Page } from '@vben/common-ui';
|
||||||
import {
|
|
||||||
SvgBpmApproveIcon,
|
|
||||||
SvgBpmCancelIcon,
|
|
||||||
SvgBpmRejectIcon,
|
|
||||||
SvgBpmRunningIcon,
|
|
||||||
} from '@vben/icons';
|
|
||||||
import { formatDateTime } from '@vben/utils';
|
import { formatDateTime } from '@vben/utils';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
@@ -38,6 +32,12 @@ import {
|
|||||||
registerComponent,
|
registerComponent,
|
||||||
setConfAndFields2,
|
setConfAndFields2,
|
||||||
} from '#/utils';
|
} from '#/utils';
|
||||||
|
import {
|
||||||
|
SvgBpmApproveIcon,
|
||||||
|
SvgBpmCancelIcon,
|
||||||
|
SvgBpmRejectIcon,
|
||||||
|
SvgBpmRunningIcon,
|
||||||
|
} from '#/views/bpm/processInstance/detail/modules/icons';
|
||||||
|
|
||||||
import ProcessInstanceTimeline from './modules/time-line.vue';
|
import ProcessInstanceTimeline from './modules/time-line.vue';
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
import { createIconifyIcon } from '@vben/icons';
|
||||||
|
|
||||||
|
// bpm 图标
|
||||||
|
// TODO @siye:可以新建出一个 bpm 目录哇?icons/bpm;
|
||||||
|
const SvgBpmRunningIcon = createIconifyIcon('svg:bpm-running');
|
||||||
|
const SvgBpmApproveIcon = createIconifyIcon('svg:bpm-approve');
|
||||||
|
const SvgBpmRejectIcon = createIconifyIcon('svg:bpm-reject');
|
||||||
|
const SvgBpmCancelIcon = createIconifyIcon('svg:bpm-cancel');
|
||||||
|
|
||||||
|
export {
|
||||||
|
SvgBpmApproveIcon,
|
||||||
|
SvgBpmCancelIcon,
|
||||||
|
SvgBpmRejectIcon,
|
||||||
|
SvgBpmRunningIcon,
|
||||||
|
};
|
||||||
@@ -8,7 +8,7 @@ import { useRouter } from 'vue-router';
|
|||||||
import { IconifyIcon } from '@vben/icons';
|
import { IconifyIcon } from '@vben/icons';
|
||||||
import { formatDateTime, isEmpty } from '@vben/utils';
|
import { formatDateTime, isEmpty } from '@vben/utils';
|
||||||
|
|
||||||
import { Avatar, Button, Image, Tooltip } from 'ant-design-vue';
|
import { Avatar, Button, Image, Timeline, Tooltip } from 'ant-design-vue';
|
||||||
|
|
||||||
import { UserSelectModal } from '#/components/user-select-modal';
|
import { UserSelectModal } from '#/components/user-select-modal';
|
||||||
import {
|
import {
|
||||||
@@ -217,9 +217,9 @@ const handleUserSelectCancel = () => {
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<a-timeline class="pt-20px">
|
<Timeline class="pt-20px">
|
||||||
<!-- 遍历每个审批节点 -->
|
<!-- 遍历每个审批节点 -->
|
||||||
<a-timeline-item
|
<Timeline.Item
|
||||||
v-for="(activity, index) in activityNodes"
|
v-for="(activity, index) in activityNodes"
|
||||||
:key="index"
|
:key="index"
|
||||||
:color="getApprovalNodeColor(activity.status)"
|
:color="getApprovalNodeColor(activity.status)"
|
||||||
@@ -448,8 +448,8 @@ const handleUserSelectCancel = () => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-timeline-item>
|
</Timeline.Item>
|
||||||
</a-timeline>
|
</Timeline>
|
||||||
|
|
||||||
<!-- 用户选择弹窗 -->
|
<!-- 用户选择弹窗 -->
|
||||||
<UserSelectModal
|
<UserSelectModal
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import { BpmProcessInstanceStatus, DICT_TYPE } from '#/utils';
|
|||||||
|
|
||||||
import { useGridColumns, useGridFormSchema } from './data';
|
import { useGridColumns, useGridFormSchema } from './data';
|
||||||
|
|
||||||
defineOptions({ name: 'BpmProcessInstanceManager' });
|
defineOptions({ name: 'BpmProcessInstanceMy' });
|
||||||
|
|
||||||
const [Grid, gridApi] = useVbenVxeGrid({
|
const [Grid, gridApi] = useVbenVxeGrid({
|
||||||
formOptions: {
|
formOptions: {
|
||||||
|
|||||||
111
apps/web-antd/src/views/bpm/task/copy/data.ts
Normal file
111
apps/web-antd/src/views/bpm/task/copy/data.ts
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
import type { VbenFormSchema } from '#/adapter/form';
|
||||||
|
import type { OnActionClickFn, VxeTableGridOptions } from '#/adapter/vxe-table';
|
||||||
|
import type { BpmTaskApi } from '#/api/bpm/task';
|
||||||
|
|
||||||
|
import { useAccess } from '@vben/access';
|
||||||
|
|
||||||
|
import { getRangePickerDefaultProps } from '#/utils';
|
||||||
|
|
||||||
|
const { hasAccessByCodes } = useAccess();
|
||||||
|
|
||||||
|
/** 列表的搜索表单 */
|
||||||
|
export function useGridFormSchema(): VbenFormSchema[] {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
fieldName: 'name',
|
||||||
|
label: '流程名称',
|
||||||
|
component: 'Input',
|
||||||
|
componentProps: {
|
||||||
|
placeholder: '请输入流程名称',
|
||||||
|
allowClear: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fieldName: 'createTime',
|
||||||
|
label: '抄送时间',
|
||||||
|
component: 'RangePicker',
|
||||||
|
componentProps: {
|
||||||
|
...getRangePickerDefaultProps(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 列表的字段 */
|
||||||
|
export function useGridColumns<T = BpmTaskApi.TaskVO>(
|
||||||
|
onActionClick: OnActionClickFn<T>,
|
||||||
|
): VxeTableGridOptions['columns'] {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
field: 'processInstanceName',
|
||||||
|
title: '流程名称',
|
||||||
|
minWidth: 200,
|
||||||
|
fixed: 'left',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'summary',
|
||||||
|
title: '摘要',
|
||||||
|
minWidth: 200,
|
||||||
|
slots: {
|
||||||
|
default: 'slot-summary',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'startUser.nickname',
|
||||||
|
title: '流程发起人',
|
||||||
|
minWidth: 120,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'processInstanceStartTime',
|
||||||
|
title: '流程发起时间',
|
||||||
|
minWidth: 180,
|
||||||
|
formatter: 'formatDateTime',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'activityName',
|
||||||
|
title: '抄送节点',
|
||||||
|
minWidth: 180,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'createUser.nickname',
|
||||||
|
title: '抄送人',
|
||||||
|
minWidth: 180,
|
||||||
|
slots: {
|
||||||
|
default: 'slot-createUser',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'reason',
|
||||||
|
title: '抄送意见',
|
||||||
|
minWidth: 180,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'createTime',
|
||||||
|
title: '抄送时间',
|
||||||
|
minWidth: 180,
|
||||||
|
formatter: 'formatDateTime',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'operation',
|
||||||
|
title: '操作',
|
||||||
|
minWidth: 120,
|
||||||
|
align: 'center',
|
||||||
|
fixed: 'right',
|
||||||
|
cellRender: {
|
||||||
|
attrs: {
|
||||||
|
nameField: 'name',
|
||||||
|
nameTitle: '流程名称',
|
||||||
|
onClick: onActionClick,
|
||||||
|
},
|
||||||
|
name: 'CellOperation',
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
code: 'detail',
|
||||||
|
text: '详情',
|
||||||
|
show: hasAccessByCodes(['bpm:task:query']),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,34 +1,115 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
import type {
|
||||||
|
OnActionClickParams,
|
||||||
|
VxeTableGridOptions,
|
||||||
|
} from '#/adapter/vxe-table';
|
||||||
|
import type { BpmProcessInstanceApi } from '#/api/bpm/processInstance';
|
||||||
|
|
||||||
import { Page } from '@vben/common-ui';
|
import { Page } from '@vben/common-ui';
|
||||||
|
|
||||||
import { Button } from 'ant-design-vue';
|
import { useVbenVxeGrid } from '#/adapter/vxe-table';
|
||||||
|
import { getProcessInstanceCopyPage } from '#/api/bpm/processInstance';
|
||||||
import { DocAlert } from '#/components/doc-alert';
|
import { DocAlert } from '#/components/doc-alert';
|
||||||
|
import { router } from '#/router';
|
||||||
|
|
||||||
|
import { useGridColumns, useGridFormSchema } from './data';
|
||||||
|
|
||||||
|
defineOptions({ name: 'BpmCopyTask' });
|
||||||
|
|
||||||
|
const [Grid, gridApi] = useVbenVxeGrid({
|
||||||
|
formOptions: {
|
||||||
|
schema: useGridFormSchema(),
|
||||||
|
},
|
||||||
|
gridOptions: {
|
||||||
|
columns: useGridColumns(onActionClick),
|
||||||
|
height: 'auto',
|
||||||
|
keepSource: true,
|
||||||
|
proxyConfig: {
|
||||||
|
ajax: {
|
||||||
|
query: async ({ page }, formValues) => {
|
||||||
|
return await getProcessInstanceCopyPage({
|
||||||
|
pageNo: page.currentPage,
|
||||||
|
pageSize: page.pageSize,
|
||||||
|
...formValues,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
rowConfig: {
|
||||||
|
keyField: 'id',
|
||||||
|
},
|
||||||
|
toolbarConfig: {
|
||||||
|
refresh: { code: 'query' },
|
||||||
|
search: true,
|
||||||
|
},
|
||||||
|
cellConfig: {
|
||||||
|
height: 64,
|
||||||
|
},
|
||||||
|
} as VxeTableGridOptions<BpmProcessInstanceApi.ProcessInstanceVO>,
|
||||||
|
});
|
||||||
|
|
||||||
|
/** 表格操作按钮的回调函数 */
|
||||||
|
function onActionClick({
|
||||||
|
code,
|
||||||
|
row,
|
||||||
|
}: OnActionClickParams<BpmProcessInstanceApi.ProcessInstanceVO>) {
|
||||||
|
switch (code) {
|
||||||
|
case 'detail': {
|
||||||
|
onDetail(row);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 办理任务 */
|
||||||
|
function onDetail(row: BpmProcessInstanceApi.ProcessInstanceVO) {
|
||||||
|
// TODO @siye:row 的类型是不是不对哈?需要改成 copyvo 么?
|
||||||
|
const query = {
|
||||||
|
id: row.processInstanceId,
|
||||||
|
...(row.activityId && { activityId: row.activityId }),
|
||||||
|
};
|
||||||
|
router.push({
|
||||||
|
name: 'BpmProcessInstanceDetail',
|
||||||
|
query,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 刷新表格 */
|
||||||
|
function onRefresh() {
|
||||||
|
gridApi.query();
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<Page>
|
<Page auto-content-height>
|
||||||
|
<!-- TODO @siye:应该用 <template #doc>,这样高度可以被用进去哈 -->
|
||||||
<DocAlert
|
<DocAlert
|
||||||
title="审批转办、委派、抄送"
|
title="审批转办、委派、抄送"
|
||||||
url="https://doc.iocoder.cn/bpm/task-delegation-and-cc/"
|
url="https://doc.iocoder.cn/bpm/task-delegation-and-cc/"
|
||||||
/>
|
/>
|
||||||
<Button
|
|
||||||
danger
|
<FormModal @success="onRefresh" />
|
||||||
type="link"
|
<Grid table-title="抄送任务">
|
||||||
target="_blank"
|
<!-- 摘要 -->
|
||||||
href="https://github.com/yudaocode/yudao-ui-admin-vue3"
|
<template #slot-summary="{ row }">
|
||||||
>
|
<div
|
||||||
该功能支持 Vue3 + element-plus 版本!
|
class="flex flex-col py-2"
|
||||||
</Button>
|
v-if="row.summary && row.summary.length > 0"
|
||||||
<br />
|
>
|
||||||
<Button
|
<div v-for="(item, index) in row.summary" :key="index">
|
||||||
type="link"
|
<span class="text-gray-500">
|
||||||
target="_blank"
|
{{ item.key }} : {{ item.value }}
|
||||||
href="https://github.com/yudaocode/yudao-ui-admin-vue3/blob/master/src/views/bpm/task/copy/index"
|
</span>
|
||||||
>
|
</div>
|
||||||
可参考
|
</div>
|
||||||
https://github.com/yudaocode/yudao-ui-admin-vue3/blob/master/src/views/bpm/task/copy/index
|
<div v-else>-</div>
|
||||||
代码,pull request 贡献给我们!
|
</template>
|
||||||
</Button>
|
<!-- 抄送人 -->
|
||||||
|
<template #slot-createUser="{ row }">
|
||||||
|
<span class="text-gray-500">
|
||||||
|
{{ row.createUser.nickname || '系统' }}
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</Grid>
|
||||||
</Page>
|
</Page>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
177
apps/web-antd/src/views/bpm/task/done/data.ts
Normal file
177
apps/web-antd/src/views/bpm/task/done/data.ts
Normal file
@@ -0,0 +1,177 @@
|
|||||||
|
import type { VbenFormSchema } from '#/adapter/form';
|
||||||
|
import type { OnActionClickFn, VxeTableGridOptions } from '#/adapter/vxe-table';
|
||||||
|
import type { BpmTaskApi } from '#/api/bpm/task';
|
||||||
|
|
||||||
|
import { useAccess } from '@vben/access';
|
||||||
|
|
||||||
|
import { getCategorySimpleList } from '#/api/bpm/category';
|
||||||
|
import {
|
||||||
|
DICT_TYPE,
|
||||||
|
formatPast2,
|
||||||
|
getDictOptions,
|
||||||
|
getRangePickerDefaultProps,
|
||||||
|
} from '#/utils';
|
||||||
|
|
||||||
|
// TODO @siye:这个要去掉么?没用到
|
||||||
|
const { hasAccessByCodes } = useAccess();
|
||||||
|
|
||||||
|
/** 列表的搜索表单 */
|
||||||
|
export function useGridFormSchema(): VbenFormSchema[] {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
fieldName: 'name',
|
||||||
|
label: '流程名称',
|
||||||
|
component: 'Input',
|
||||||
|
componentProps: {
|
||||||
|
placeholder: '请输入流程名称',
|
||||||
|
allowClear: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fieldName: 'processDefinitionId',
|
||||||
|
label: '所属流程',
|
||||||
|
component: 'Input',
|
||||||
|
componentProps: {
|
||||||
|
placeholder: '请输入流程定义的编号',
|
||||||
|
allowClear: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fieldName: 'category',
|
||||||
|
label: '流程分类',
|
||||||
|
component: 'ApiSelect',
|
||||||
|
componentProps: {
|
||||||
|
placeholder: '请输入流程分类',
|
||||||
|
allowClear: true,
|
||||||
|
api: getCategorySimpleList,
|
||||||
|
labelField: 'name',
|
||||||
|
valueField: 'code',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fieldName: 'status',
|
||||||
|
label: '流程状态',
|
||||||
|
component: 'Select',
|
||||||
|
componentProps: {
|
||||||
|
options: getDictOptions(
|
||||||
|
DICT_TYPE.BPM_PROCESS_INSTANCE_STATUS,
|
||||||
|
'number',
|
||||||
|
),
|
||||||
|
placeholder: '请选择流程状态',
|
||||||
|
allowClear: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
// 发起时间
|
||||||
|
{
|
||||||
|
fieldName: 'createTime',
|
||||||
|
label: '发起时间',
|
||||||
|
component: 'RangePicker',
|
||||||
|
componentProps: {
|
||||||
|
...getRangePickerDefaultProps(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 列表的字段 */
|
||||||
|
export function useGridColumns<T = BpmTaskApi.TaskVO>(
|
||||||
|
onActionClick: OnActionClickFn<T>,
|
||||||
|
): VxeTableGridOptions['columns'] {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
field: 'name',
|
||||||
|
title: '流程名称',
|
||||||
|
minWidth: 200,
|
||||||
|
fixed: 'left',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'processInstance.summary',
|
||||||
|
title: '摘要',
|
||||||
|
minWidth: 200,
|
||||||
|
slots: {
|
||||||
|
default: 'slot-summary',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'processInstance.startUser.nickname',
|
||||||
|
title: '发起人',
|
||||||
|
minWidth: 120,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'createTime',
|
||||||
|
title: '发起时间',
|
||||||
|
minWidth: 180,
|
||||||
|
formatter: 'formatDateTime',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'name',
|
||||||
|
title: '当前任务',
|
||||||
|
minWidth: 180,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'createTime',
|
||||||
|
title: '任务开始时间',
|
||||||
|
minWidth: 180,
|
||||||
|
formatter: 'formatDateTime',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'endTime',
|
||||||
|
title: '任务结束时间',
|
||||||
|
minWidth: 180,
|
||||||
|
formatter: 'formatDateTime',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'status',
|
||||||
|
title: '审批状态',
|
||||||
|
minWidth: 180,
|
||||||
|
cellRender: {
|
||||||
|
name: 'CellDict',
|
||||||
|
props: { type: DICT_TYPE.BPM_TASK_STATUS },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'reason',
|
||||||
|
title: '审批建议',
|
||||||
|
minWidth: 180,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'durationInMillis',
|
||||||
|
title: '耗时',
|
||||||
|
minWidth: 180,
|
||||||
|
formatter: ({ row }) => {
|
||||||
|
return `${formatPast2(row.durationInMillis)}`;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'processInstanceId',
|
||||||
|
title: '流程编号',
|
||||||
|
minWidth: 280,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'id',
|
||||||
|
title: '任务编号',
|
||||||
|
minWidth: 280,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'operation',
|
||||||
|
title: '操作',
|
||||||
|
minWidth: 120,
|
||||||
|
align: 'center',
|
||||||
|
fixed: 'right',
|
||||||
|
cellRender: {
|
||||||
|
attrs: {
|
||||||
|
nameField: 'name',
|
||||||
|
nameTitle: '流程名称',
|
||||||
|
onClick: onActionClick,
|
||||||
|
},
|
||||||
|
name: 'CellOperation',
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
code: 'history',
|
||||||
|
text: '历史',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,13 +1,83 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
import type {
|
||||||
|
OnActionClickParams,
|
||||||
|
VxeTableGridOptions,
|
||||||
|
} from '#/adapter/vxe-table';
|
||||||
|
import type { BpmTaskApi } from '#/api/bpm/task';
|
||||||
|
|
||||||
import { Page } from '@vben/common-ui';
|
import { Page } from '@vben/common-ui';
|
||||||
|
|
||||||
import { Button } from 'ant-design-vue';
|
import { useVbenVxeGrid } from '#/adapter/vxe-table';
|
||||||
|
import { getTaskDonePage } from '#/api/bpm/task';
|
||||||
import { DocAlert } from '#/components/doc-alert';
|
import { DocAlert } from '#/components/doc-alert';
|
||||||
|
import { router } from '#/router';
|
||||||
|
|
||||||
|
import { useGridColumns, useGridFormSchema } from './data';
|
||||||
|
|
||||||
|
defineOptions({ name: 'BpmDoneTask' });
|
||||||
|
|
||||||
|
const [Grid, gridApi] = useVbenVxeGrid({
|
||||||
|
formOptions: {
|
||||||
|
schema: useGridFormSchema(),
|
||||||
|
},
|
||||||
|
gridOptions: {
|
||||||
|
columns: useGridColumns(onActionClick),
|
||||||
|
height: 'auto',
|
||||||
|
keepSource: true,
|
||||||
|
proxyConfig: {
|
||||||
|
ajax: {
|
||||||
|
query: async ({ page }, formValues) => {
|
||||||
|
return await getTaskDonePage({
|
||||||
|
pageNo: page.currentPage,
|
||||||
|
pageSize: page.pageSize,
|
||||||
|
...formValues,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
rowConfig: {
|
||||||
|
keyField: 'id',
|
||||||
|
},
|
||||||
|
toolbarConfig: {
|
||||||
|
refresh: { code: 'query' },
|
||||||
|
search: true,
|
||||||
|
},
|
||||||
|
cellConfig: {
|
||||||
|
height: 64,
|
||||||
|
},
|
||||||
|
} as VxeTableGridOptions<BpmTaskApi.TaskVO>,
|
||||||
|
});
|
||||||
|
|
||||||
|
/** 表格操作按钮的回调函数 */
|
||||||
|
function onActionClick({ code, row }: OnActionClickParams<BpmTaskApi.TaskVO>) {
|
||||||
|
switch (code) {
|
||||||
|
case 'history': {
|
||||||
|
onHistory(row);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 查看历史 */
|
||||||
|
function onHistory(row: BpmTaskApi.TaskVO) {
|
||||||
|
console.warn(row);
|
||||||
|
router.push({
|
||||||
|
name: 'BpmProcessInstanceDetail',
|
||||||
|
query: {
|
||||||
|
id: row.processInstance.id,
|
||||||
|
taskId: row.id,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 刷新表格 */
|
||||||
|
function onRefresh() {
|
||||||
|
gridApi.query();
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<Page>
|
<Page auto-content-height>
|
||||||
<DocAlert
|
<DocAlert
|
||||||
title="审批通过、不通过、驳回"
|
title="审批通过、不通过、驳回"
|
||||||
url="https://doc.iocoder.cn/bpm/task-todo-done/"
|
url="https://doc.iocoder.cn/bpm/task-todo-done/"
|
||||||
@@ -18,23 +88,29 @@ import { DocAlert } from '#/components/doc-alert';
|
|||||||
url="https://doc.iocoder.cn/bpm/task-delegation-and-cc/"
|
url="https://doc.iocoder.cn/bpm/task-delegation-and-cc/"
|
||||||
/>
|
/>
|
||||||
<DocAlert title="审批加签、减签" url="https://doc.iocoder.cn/bpm/sign/" />
|
<DocAlert title="审批加签、减签" url="https://doc.iocoder.cn/bpm/sign/" />
|
||||||
<Button
|
|
||||||
danger
|
<FormModal @success="onRefresh" />
|
||||||
type="link"
|
<Grid table-title="已办任务">
|
||||||
target="_blank"
|
<!-- 摘要 -->
|
||||||
href="https://github.com/yudaocode/yudao-ui-admin-vue3"
|
<template #slot-summary="{ row }">
|
||||||
>
|
<div
|
||||||
该功能支持 Vue3 + element-plus 版本!
|
class="flex flex-col py-2"
|
||||||
</Button>
|
v-if="
|
||||||
<br />
|
row.processInstance.summary &&
|
||||||
<Button
|
row.processInstance.summary.length > 0
|
||||||
type="link"
|
"
|
||||||
target="_blank"
|
>
|
||||||
href="https://github.com/yudaocode/yudao-ui-admin-vue3/blob/master/src/views/bpm/task/done/index"
|
<div
|
||||||
>
|
v-for="(item, index) in row.processInstance.summary"
|
||||||
可参考
|
:key="index"
|
||||||
https://github.com/yudaocode/yudao-ui-admin-vue3/blob/master/src/views/bpm/task/done/index
|
>
|
||||||
代码,pull request 贡献给我们!
|
<span class="text-gray-500">
|
||||||
</Button>
|
{{ item.key }} : {{ item.value }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-else>-</div>
|
||||||
|
</template>
|
||||||
|
</Grid>
|
||||||
</Page>
|
</Page>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
136
apps/web-antd/src/views/bpm/task/manager/data.ts
Normal file
136
apps/web-antd/src/views/bpm/task/manager/data.ts
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
import type { VbenFormSchema } from '#/adapter/form';
|
||||||
|
import type { OnActionClickFn, VxeTableGridOptions } from '#/adapter/vxe-table';
|
||||||
|
import type { BpmTaskApi } from '#/api/bpm/task';
|
||||||
|
|
||||||
|
import { DICT_TYPE, formatPast2, getRangePickerDefaultProps } from '#/utils';
|
||||||
|
|
||||||
|
/** 列表的搜索表单 */
|
||||||
|
export function useGridFormSchema(): VbenFormSchema[] {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
fieldName: 'name',
|
||||||
|
label: '任务名称',
|
||||||
|
component: 'Input',
|
||||||
|
componentProps: {
|
||||||
|
placeholder: '请输入任务名称',
|
||||||
|
allowClear: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fieldName: 'createTime',
|
||||||
|
label: '创建时间',
|
||||||
|
component: 'RangePicker',
|
||||||
|
componentProps: {
|
||||||
|
...getRangePickerDefaultProps(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 列表的字段 */
|
||||||
|
export function useGridColumns<T = BpmTaskApi.TaskVO>(
|
||||||
|
onActionClick: OnActionClickFn<T>,
|
||||||
|
): VxeTableGridOptions['columns'] {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
field: 'name',
|
||||||
|
title: '流程名称',
|
||||||
|
minWidth: 200,
|
||||||
|
fixed: 'left',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'processInstance.summary',
|
||||||
|
title: '摘要',
|
||||||
|
minWidth: 200,
|
||||||
|
slots: {
|
||||||
|
default: 'slot-summary',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'processInstance.startUser.nickname',
|
||||||
|
title: '发起人',
|
||||||
|
minWidth: 120,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'createTime',
|
||||||
|
title: '发起时间',
|
||||||
|
minWidth: 180,
|
||||||
|
formatter: 'formatDateTime',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'name',
|
||||||
|
title: '当前任务',
|
||||||
|
minWidth: 180,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'createTime',
|
||||||
|
title: '任务开始时间',
|
||||||
|
minWidth: 180,
|
||||||
|
formatter: 'formatDateTime',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'endTime',
|
||||||
|
title: '任务结束时间',
|
||||||
|
minWidth: 180,
|
||||||
|
formatter: 'formatDateTime',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'assigneeUser.nickname',
|
||||||
|
title: '审批人',
|
||||||
|
minWidth: 180,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'status',
|
||||||
|
title: '审批状态',
|
||||||
|
minWidth: 180,
|
||||||
|
cellRender: {
|
||||||
|
name: 'CellDict',
|
||||||
|
props: { type: DICT_TYPE.BPM_TASK_STATUS },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'reason',
|
||||||
|
title: '审批建议',
|
||||||
|
minWidth: 180,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'durationInMillis',
|
||||||
|
title: '耗时',
|
||||||
|
minWidth: 180,
|
||||||
|
formatter: ({ row }) => {
|
||||||
|
return `${formatPast2(row.durationInMillis)}`;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'processInstanceId',
|
||||||
|
title: '流程编号',
|
||||||
|
minWidth: 280,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'id',
|
||||||
|
title: '任务编号',
|
||||||
|
minWidth: 280,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'operation',
|
||||||
|
title: '操作',
|
||||||
|
minWidth: 120,
|
||||||
|
align: 'center',
|
||||||
|
fixed: 'right',
|
||||||
|
cellRender: {
|
||||||
|
attrs: {
|
||||||
|
nameField: 'name',
|
||||||
|
nameTitle: '流程名称',
|
||||||
|
onClick: onActionClick,
|
||||||
|
},
|
||||||
|
name: 'CellOperation',
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
code: 'history',
|
||||||
|
text: '历史',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,31 +1,108 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
import type {
|
||||||
|
OnActionClickParams,
|
||||||
|
VxeTableGridOptions,
|
||||||
|
} from '#/adapter/vxe-table';
|
||||||
|
import type { BpmTaskApi } from '#/api/bpm/task';
|
||||||
|
|
||||||
import { Page } from '@vben/common-ui';
|
import { Page } from '@vben/common-ui';
|
||||||
|
|
||||||
import { Button } from 'ant-design-vue';
|
import { useVbenVxeGrid } from '#/adapter/vxe-table';
|
||||||
|
import { getTaskManagerPage } from '#/api/bpm/task';
|
||||||
import { DocAlert } from '#/components/doc-alert';
|
import { DocAlert } from '#/components/doc-alert';
|
||||||
|
import { router } from '#/router';
|
||||||
|
|
||||||
|
import { useGridColumns, useGridFormSchema } from './data';
|
||||||
|
|
||||||
|
defineOptions({ name: 'BpmManagerTask' });
|
||||||
|
|
||||||
|
const [Grid, gridApi] = useVbenVxeGrid({
|
||||||
|
formOptions: {
|
||||||
|
schema: useGridFormSchema(),
|
||||||
|
},
|
||||||
|
gridOptions: {
|
||||||
|
columns: useGridColumns(onActionClick),
|
||||||
|
height: 'auto',
|
||||||
|
keepSource: true,
|
||||||
|
proxyConfig: {
|
||||||
|
ajax: {
|
||||||
|
query: async ({ page }, formValues) => {
|
||||||
|
return await getTaskManagerPage({
|
||||||
|
pageNo: page.currentPage,
|
||||||
|
pageSize: page.pageSize,
|
||||||
|
...formValues,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
rowConfig: {
|
||||||
|
keyField: 'id',
|
||||||
|
},
|
||||||
|
toolbarConfig: {
|
||||||
|
refresh: { code: 'query' },
|
||||||
|
search: true,
|
||||||
|
},
|
||||||
|
cellConfig: {
|
||||||
|
height: 64,
|
||||||
|
},
|
||||||
|
} as VxeTableGridOptions<BpmTaskApi.TaskVO>,
|
||||||
|
});
|
||||||
|
|
||||||
|
/** 表格操作按钮的回调函数 */
|
||||||
|
function onActionClick({ code, row }: OnActionClickParams<BpmTaskApi.TaskVO>) {
|
||||||
|
switch (code) {
|
||||||
|
case 'history': {
|
||||||
|
onHistory(row);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 查看历史 */
|
||||||
|
function onHistory(row: BpmTaskApi.TaskVO) {
|
||||||
|
console.warn(row);
|
||||||
|
router.push({
|
||||||
|
name: 'BpmProcessInstanceDetail',
|
||||||
|
query: {
|
||||||
|
// TODO @siye:数据类型,会爆红哈;
|
||||||
|
id: row.processInstance.id,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 刷新表格 */
|
||||||
|
function onRefresh() {
|
||||||
|
gridApi.query();
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<Page>
|
<Page auto-content-height>
|
||||||
<DocAlert title="工作流手册" url="https://doc.iocoder.cn/bpm/" />
|
<DocAlert title="工作流手册" url="https://doc.iocoder.cn/bpm/" />
|
||||||
<Button
|
|
||||||
danger
|
<FormModal @success="onRefresh" />
|
||||||
type="link"
|
<Grid table-title="流程任务">
|
||||||
target="_blank"
|
<!-- 摘要 -->
|
||||||
href="https://github.com/yudaocode/yudao-ui-admin-vue3"
|
<!-- TODO siye:这个要不要,也放到 data.ts 处理掉? -->
|
||||||
>
|
<template #slot-summary="{ row }">
|
||||||
该功能支持 Vue3 + element-plus 版本!
|
<div
|
||||||
</Button>
|
class="flex flex-col py-2"
|
||||||
<br />
|
v-if="
|
||||||
<Button
|
row.processInstance.summary &&
|
||||||
type="link"
|
row.processInstance.summary.length > 0
|
||||||
target="_blank"
|
"
|
||||||
href="https://github.com/yudaocode/yudao-ui-admin-vue3/blob/master/src/views/bpm/task/manager/index"
|
>
|
||||||
>
|
<div
|
||||||
可参考
|
v-for="(item, index) in row.processInstance.summary"
|
||||||
https://github.com/yudaocode/yudao-ui-admin-vue3/blob/master/src/views/bpm/task/manager/index
|
:key="index"
|
||||||
代码,pull request 贡献给我们!
|
>
|
||||||
</Button>
|
<span class="text-gray-500">
|
||||||
|
{{ item.key }} : {{ item.value }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-else>-</div>
|
||||||
|
</template>
|
||||||
|
</Grid>
|
||||||
</Page>
|
</Page>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
143
apps/web-antd/src/views/bpm/task/todo/data.ts
Normal file
143
apps/web-antd/src/views/bpm/task/todo/data.ts
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
import type { VbenFormSchema } from '#/adapter/form';
|
||||||
|
import type { OnActionClickFn, VxeTableGridOptions } from '#/adapter/vxe-table';
|
||||||
|
import type { BpmTaskApi } from '#/api/bpm/task';
|
||||||
|
|
||||||
|
import { useAccess } from '@vben/access';
|
||||||
|
|
||||||
|
import { getCategorySimpleList } from '#/api/bpm/category';
|
||||||
|
import { DICT_TYPE, getDictOptions, getRangePickerDefaultProps } from '#/utils';
|
||||||
|
|
||||||
|
const { hasAccessByCodes } = useAccess();
|
||||||
|
|
||||||
|
/** 列表的搜索表单 */
|
||||||
|
export function useGridFormSchema(): VbenFormSchema[] {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
fieldName: 'name',
|
||||||
|
label: '流程名称',
|
||||||
|
component: 'Input',
|
||||||
|
componentProps: {
|
||||||
|
placeholder: '请输入流程名称',
|
||||||
|
allowClear: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fieldName: 'processDefinitionId',
|
||||||
|
label: '所属流程',
|
||||||
|
component: 'Input',
|
||||||
|
componentProps: {
|
||||||
|
placeholder: '请输入流程定义的编号',
|
||||||
|
allowClear: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fieldName: 'category',
|
||||||
|
label: '流程分类',
|
||||||
|
component: 'ApiSelect',
|
||||||
|
componentProps: {
|
||||||
|
placeholder: '请输入流程分类',
|
||||||
|
allowClear: true,
|
||||||
|
api: getCategorySimpleList,
|
||||||
|
labelField: 'name',
|
||||||
|
valueField: 'code',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fieldName: 'status',
|
||||||
|
label: '流程状态',
|
||||||
|
component: 'Select',
|
||||||
|
componentProps: {
|
||||||
|
options: getDictOptions(
|
||||||
|
DICT_TYPE.BPM_PROCESS_INSTANCE_STATUS,
|
||||||
|
'number',
|
||||||
|
),
|
||||||
|
placeholder: '请选择流程状态',
|
||||||
|
allowClear: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fieldName: 'createTime',
|
||||||
|
label: '发起时间',
|
||||||
|
component: 'RangePicker',
|
||||||
|
componentProps: {
|
||||||
|
...getRangePickerDefaultProps(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 列表的字段 */
|
||||||
|
export function useGridColumns<T = BpmTaskApi.TaskVO>(
|
||||||
|
onActionClick: OnActionClickFn<T>,
|
||||||
|
): VxeTableGridOptions['columns'] {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
field: 'name',
|
||||||
|
title: '流程名称',
|
||||||
|
minWidth: 200,
|
||||||
|
fixed: 'left',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'processInstance.summary',
|
||||||
|
title: '摘要',
|
||||||
|
minWidth: 200,
|
||||||
|
slots: {
|
||||||
|
default: 'slot-summary',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'processInstance.startUser.nickname',
|
||||||
|
title: '发起人',
|
||||||
|
minWidth: 120,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'createTime',
|
||||||
|
title: '发起时间',
|
||||||
|
minWidth: 180,
|
||||||
|
formatter: 'formatDateTime',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'name',
|
||||||
|
title: '当前任务',
|
||||||
|
minWidth: 180,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'createTime',
|
||||||
|
title: '任务时间',
|
||||||
|
minWidth: 180,
|
||||||
|
formatter: 'formatDateTime',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'processInstanceId',
|
||||||
|
title: '流程编号',
|
||||||
|
minWidth: 280,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'id',
|
||||||
|
title: '任务编号',
|
||||||
|
minWidth: 280,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'operation',
|
||||||
|
title: '操作',
|
||||||
|
minWidth: 120,
|
||||||
|
align: 'center',
|
||||||
|
fixed: 'right',
|
||||||
|
cellRender: {
|
||||||
|
attrs: {
|
||||||
|
nameField: 'name',
|
||||||
|
nameTitle: '流程名称',
|
||||||
|
onClick: onActionClick,
|
||||||
|
},
|
||||||
|
name: 'CellOperation',
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
code: 'audit',
|
||||||
|
text: '办理',
|
||||||
|
show: hasAccessByCodes(['bpm:task:query']),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,13 +1,83 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
import type {
|
||||||
|
OnActionClickParams,
|
||||||
|
VxeTableGridOptions,
|
||||||
|
} from '#/adapter/vxe-table';
|
||||||
|
import type { BpmTaskApi } from '#/api/bpm/task';
|
||||||
|
|
||||||
import { Page } from '@vben/common-ui';
|
import { Page } from '@vben/common-ui';
|
||||||
|
|
||||||
import { Button } from 'ant-design-vue';
|
import { useVbenVxeGrid } from '#/adapter/vxe-table';
|
||||||
|
import { getTaskTodoPage } from '#/api/bpm/task';
|
||||||
import { DocAlert } from '#/components/doc-alert';
|
import { DocAlert } from '#/components/doc-alert';
|
||||||
|
import { router } from '#/router';
|
||||||
|
|
||||||
|
import { useGridColumns, useGridFormSchema } from './data';
|
||||||
|
|
||||||
|
defineOptions({ name: 'BpmTodoTask' });
|
||||||
|
|
||||||
|
const [Grid, gridApi] = useVbenVxeGrid({
|
||||||
|
formOptions: {
|
||||||
|
schema: useGridFormSchema(),
|
||||||
|
},
|
||||||
|
gridOptions: {
|
||||||
|
columns: useGridColumns(onActionClick),
|
||||||
|
height: 'auto',
|
||||||
|
keepSource: true,
|
||||||
|
proxyConfig: {
|
||||||
|
ajax: {
|
||||||
|
query: async ({ page }, formValues) => {
|
||||||
|
return await getTaskTodoPage({
|
||||||
|
pageNo: page.currentPage,
|
||||||
|
pageSize: page.pageSize,
|
||||||
|
...formValues,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
rowConfig: {
|
||||||
|
keyField: 'id',
|
||||||
|
},
|
||||||
|
toolbarConfig: {
|
||||||
|
refresh: { code: 'query' },
|
||||||
|
search: true,
|
||||||
|
},
|
||||||
|
cellConfig: {
|
||||||
|
height: 64,
|
||||||
|
},
|
||||||
|
} as VxeTableGridOptions<BpmTaskApi.TaskVO>,
|
||||||
|
});
|
||||||
|
|
||||||
|
/** 表格操作按钮的回调函数 */
|
||||||
|
function onActionClick({ code, row }: OnActionClickParams<BpmTaskApi.TaskVO>) {
|
||||||
|
switch (code) {
|
||||||
|
case 'audit': {
|
||||||
|
onAudit(row);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 办理任务 */
|
||||||
|
function onAudit(row: BpmTaskApi.TaskVO) {
|
||||||
|
console.warn(row);
|
||||||
|
router.push({
|
||||||
|
name: 'BpmProcessInstanceDetail',
|
||||||
|
query: {
|
||||||
|
id: row.processInstance.id,
|
||||||
|
taskId: row.id,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 刷新表格 */
|
||||||
|
function onRefresh() {
|
||||||
|
gridApi.query();
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<Page>
|
<Page auto-content-height>
|
||||||
<DocAlert
|
<DocAlert
|
||||||
title="审批通过、不通过、驳回"
|
title="审批通过、不通过、驳回"
|
||||||
url="https://doc.iocoder.cn/bpm/task-todo-done/"
|
url="https://doc.iocoder.cn/bpm/task-todo-done/"
|
||||||
@@ -18,23 +88,30 @@ import { DocAlert } from '#/components/doc-alert';
|
|||||||
url="https://doc.iocoder.cn/bpm/task-delegation-and-cc/"
|
url="https://doc.iocoder.cn/bpm/task-delegation-and-cc/"
|
||||||
/>
|
/>
|
||||||
<DocAlert title="审批加签、减签" url="https://doc.iocoder.cn/bpm/sign/" />
|
<DocAlert title="审批加签、减签" url="https://doc.iocoder.cn/bpm/sign/" />
|
||||||
<Button
|
|
||||||
danger
|
<FormModal @success="onRefresh" />
|
||||||
type="link"
|
<Grid table-title="待办任务">
|
||||||
target="_blank"
|
<!-- 摘要 -->
|
||||||
href="https://github.com/yudaocode/yudao-ui-admin-vue3"
|
<!-- TODO siye:这个要不要,也放到 data.ts 处理掉? -->
|
||||||
>
|
<template #slot-summary="{ row }">
|
||||||
该功能支持 Vue3 + element-plus 版本!
|
<div
|
||||||
</Button>
|
class="flex flex-col py-2"
|
||||||
<br />
|
v-if="
|
||||||
<Button
|
row.processInstance.summary &&
|
||||||
type="link"
|
row.processInstance.summary.length > 0
|
||||||
target="_blank"
|
"
|
||||||
href="https://github.com/yudaocode/yudao-ui-admin-vue3/blob/master/src/views/bpm/task/todo/index"
|
>
|
||||||
>
|
<div
|
||||||
可参考
|
v-for="(item, index) in row.processInstance.summary"
|
||||||
https://github.com/yudaocode/yudao-ui-admin-vue3/blob/master/src/views/bpm/task/todo/index
|
:key="index"
|
||||||
代码,pull request 贡献给我们!
|
>
|
||||||
</Button>
|
<span class="text-gray-500">
|
||||||
|
{{ item.key }} : {{ item.value }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-else>-</div>
|
||||||
|
</template>
|
||||||
|
</Grid>
|
||||||
</Page>
|
</Page>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -150,6 +150,7 @@ export function useGridColumns(
|
|||||||
minWidth: 200,
|
minWidth: 200,
|
||||||
align: 'center',
|
align: 'center',
|
||||||
fixed: 'right',
|
fixed: 'right',
|
||||||
|
// TODO @puhui999:headerAlign 要使用 headerAlign: 'center' 么?看着现在分成了 align 和 headerAlign 两种
|
||||||
headerAlign: 'center',
|
headerAlign: 'center',
|
||||||
showOverflow: false,
|
showOverflow: false,
|
||||||
cellRender: {
|
cellRender: {
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ const [Modal, modalApi] = useVbenModal({
|
|||||||
|
|
||||||
/** 上传前 */
|
/** 上传前 */
|
||||||
function beforeUpload(file: FileType) {
|
function beforeUpload(file: FileType) {
|
||||||
|
// TODO @puhui999:研究下,看看怎么类似 antd 可以前端直传哈;通过配置切换;
|
||||||
formApi.setFieldValue('file', file);
|
formApi.setFieldValue('file', file);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -61,6 +62,7 @@ function beforeUpload(file: FileType) {
|
|||||||
<template #file>
|
<template #file>
|
||||||
<div class="w-full">
|
<div class="w-full">
|
||||||
<!-- 上传区域 -->
|
<!-- 上传区域 -->
|
||||||
|
<!-- TODO @puhui999:1)上传图片,用不了;2)底部有点遮挡 -->
|
||||||
<Upload.Dragger
|
<Upload.Dragger
|
||||||
name="file"
|
name="file"
|
||||||
:max-count="1"
|
:max-count="1"
|
||||||
|
|||||||
@@ -323,10 +323,9 @@ export function useGridColumns(
|
|||||||
{
|
{
|
||||||
field: 'operation',
|
field: 'operation',
|
||||||
title: '操作',
|
title: '操作',
|
||||||
align: 'right',
|
|
||||||
minWidth: 200,
|
minWidth: 200,
|
||||||
fixed: 'right',
|
fixed: 'right',
|
||||||
headerAlign: 'center',
|
align: 'center',
|
||||||
showOverflow: false,
|
showOverflow: false,
|
||||||
cellRender: {
|
cellRender: {
|
||||||
attrs: {
|
attrs: {
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
import type { VbenFormSchema } from '#/adapter/form';
|
import type { VbenFormSchema } from '#/adapter/form';
|
||||||
import type { OnActionClickFn, VxeTableGridOptions } from '#/adapter/vxe-table';
|
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
|
||||||
import type { SystemRoleApi } from '#/api/system/role';
|
|
||||||
|
|
||||||
import { useAccess } from '@vben/access';
|
|
||||||
|
|
||||||
import { z } from '#/adapter/form';
|
import { z } from '#/adapter/form';
|
||||||
import {
|
import {
|
||||||
@@ -13,8 +10,6 @@ import {
|
|||||||
SystemDataScopeEnum,
|
SystemDataScopeEnum,
|
||||||
} from '#/utils';
|
} from '#/utils';
|
||||||
|
|
||||||
const { hasAccessByCodes } = useAccess();
|
|
||||||
|
|
||||||
/** 新增/修改的表单 */
|
/** 新增/修改的表单 */
|
||||||
export function useFormSchema(): VbenFormSchema[] {
|
export function useFormSchema(): VbenFormSchema[] {
|
||||||
return [
|
return [
|
||||||
@@ -189,9 +184,7 @@ export function useGridFormSchema(): VbenFormSchema[] {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** 列表的字段 */
|
/** 列表的字段 */
|
||||||
export function useGridColumns<T = SystemRoleApi.Role>(
|
export function useGridColumns(): VxeTableGridOptions['columns'] {
|
||||||
onActionClick: OnActionClickFn<T>,
|
|
||||||
): VxeTableGridOptions['columns'] {
|
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
field: 'id',
|
field: 'id',
|
||||||
@@ -243,41 +236,10 @@ export function useGridColumns<T = SystemRoleApi.Role>(
|
|||||||
formatter: 'formatDateTime',
|
formatter: 'formatDateTime',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'operation',
|
|
||||||
title: '操作',
|
title: '操作',
|
||||||
width: 240,
|
width: 240,
|
||||||
fixed: 'right',
|
fixed: 'right',
|
||||||
align: 'center',
|
slots: { default: 'actions' },
|
||||||
cellRender: {
|
|
||||||
attrs: {
|
|
||||||
nameField: 'name',
|
|
||||||
nameTitle: '角色',
|
|
||||||
onClick: onActionClick,
|
|
||||||
},
|
|
||||||
name: 'CellOperation',
|
|
||||||
options: [
|
|
||||||
{
|
|
||||||
code: 'edit',
|
|
||||||
show: hasAccessByCodes(['system:role:update']),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
code: 'delete',
|
|
||||||
show: hasAccessByCodes(['system:role:delete']),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
code: 'assign-data-permission',
|
|
||||||
text: '数据权限',
|
|
||||||
show: hasAccessByCodes([
|
|
||||||
'system:permission:assign-role-data-scope',
|
|
||||||
]),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
code: 'assign-menu',
|
|
||||||
text: '菜单权限',
|
|
||||||
show: hasAccessByCodes(['system:permission:assign-role-menu']),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import type {
|
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
|
||||||
OnActionClickParams,
|
|
||||||
VxeTableGridOptions,
|
|
||||||
} from '#/adapter/vxe-table';
|
|
||||||
import type { SystemRoleApi } from '#/api/system/role';
|
import type { SystemRoleApi } from '#/api/system/role';
|
||||||
|
|
||||||
import { Page, useVbenModal } from '@vben/common-ui';
|
import { Page, useVbenModal } from '@vben/common-ui';
|
||||||
@@ -14,6 +11,7 @@ import { Button, message } from 'ant-design-vue';
|
|||||||
import { useVbenVxeGrid } from '#/adapter/vxe-table';
|
import { useVbenVxeGrid } from '#/adapter/vxe-table';
|
||||||
import { deleteRole, exportRole, getRolePage } from '#/api/system/role';
|
import { deleteRole, exportRole, getRolePage } from '#/api/system/role';
|
||||||
import { DocAlert } from '#/components/doc-alert';
|
import { DocAlert } from '#/components/doc-alert';
|
||||||
|
import { TableAction } from '#/components/table-action';
|
||||||
import { $t } from '#/locales';
|
import { $t } from '#/locales';
|
||||||
|
|
||||||
import { useGridColumns, useGridFormSchema } from './data';
|
import { useGridColumns, useGridFormSchema } from './data';
|
||||||
@@ -67,6 +65,7 @@ async function onDelete(row: SystemRoleApi.Role) {
|
|||||||
});
|
});
|
||||||
try {
|
try {
|
||||||
await deleteRole(row.id as number);
|
await deleteRole(row.id as number);
|
||||||
|
hideLoading();
|
||||||
message.success($t('ui.actionMessage.deleteSuccess', [row.name]));
|
message.success($t('ui.actionMessage.deleteSuccess', [row.name]));
|
||||||
onRefresh();
|
onRefresh();
|
||||||
} catch {
|
} catch {
|
||||||
@@ -84,34 +83,12 @@ function onAssignMenu(row: SystemRoleApi.Role) {
|
|||||||
assignMenuFormApi.setData(row).open();
|
assignMenuFormApi.setData(row).open();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 表格操作按钮的回调函数 */
|
|
||||||
function onActionClick({ code, row }: OnActionClickParams<SystemRoleApi.Role>) {
|
|
||||||
switch (code) {
|
|
||||||
case 'assign-data-permission': {
|
|
||||||
onAssignDataPermission(row);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'assign-menu': {
|
|
||||||
onAssignMenu(row);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'delete': {
|
|
||||||
onDelete(row);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'edit': {
|
|
||||||
onEdit(row);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const [Grid, gridApi] = useVbenVxeGrid({
|
const [Grid, gridApi] = useVbenVxeGrid({
|
||||||
formOptions: {
|
formOptions: {
|
||||||
schema: useGridFormSchema(),
|
schema: useGridFormSchema(),
|
||||||
},
|
},
|
||||||
gridOptions: {
|
gridOptions: {
|
||||||
columns: useGridColumns(onActionClick),
|
columns: useGridColumns(),
|
||||||
height: 'auto',
|
height: 'auto',
|
||||||
keepSource: true,
|
keepSource: true,
|
||||||
proxyConfig: {
|
proxyConfig: {
|
||||||
@@ -169,6 +146,44 @@ const [Grid, gridApi] = useVbenVxeGrid({
|
|||||||
{{ $t('ui.actionTitle.export') }}
|
{{ $t('ui.actionTitle.export') }}
|
||||||
</Button>
|
</Button>
|
||||||
</template>
|
</template>
|
||||||
|
<template #actions="{ row }">
|
||||||
|
<TableAction
|
||||||
|
:actions="[
|
||||||
|
{
|
||||||
|
label: $t('common.edit'),
|
||||||
|
type: 'link',
|
||||||
|
icon: 'ant-design:edit-outlined',
|
||||||
|
auth: ['system:role:update'],
|
||||||
|
onClick: onEdit.bind(null, row),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: $t('common.delete'),
|
||||||
|
type: 'link',
|
||||||
|
danger: true,
|
||||||
|
icon: 'ant-design:delete-outlined',
|
||||||
|
auth: ['system:role:delete'],
|
||||||
|
popConfirm: {
|
||||||
|
title: $t('ui.actionMessage.deleteConfirm', [row.name]),
|
||||||
|
confirm: onDelete.bind(null, row),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]"
|
||||||
|
:drop-down-actions="[
|
||||||
|
{
|
||||||
|
label: '数据权限',
|
||||||
|
type: 'link',
|
||||||
|
auth: ['system:permission:assign-role-data-scope'],
|
||||||
|
onClick: onAssignDataPermission.bind(null, row),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '菜单权限',
|
||||||
|
type: 'link',
|
||||||
|
auth: ['system:permission:assign-role-menu'],
|
||||||
|
onClick: onAssignMenu.bind(null, row),
|
||||||
|
},
|
||||||
|
]"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Page>
|
</Page>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
import type { VbenFormSchema } from '#/adapter/form';
|
import type { VbenFormSchema } from '#/adapter/form';
|
||||||
import type { OnActionClickFn, VxeTableGridOptions } from '#/adapter/vxe-table';
|
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
|
||||||
import type { SystemTenantApi } from '#/api/system/tenant';
|
|
||||||
|
|
||||||
import { useAccess } from '@vben/access';
|
|
||||||
|
|
||||||
import { z } from '#/adapter/form';
|
import { z } from '#/adapter/form';
|
||||||
import { getTenantPackageList } from '#/api/system/tenant-package';
|
import { getTenantPackageList } from '#/api/system/tenant-package';
|
||||||
@@ -13,8 +10,6 @@ import {
|
|||||||
getRangePickerDefaultProps,
|
getRangePickerDefaultProps,
|
||||||
} from '#/utils';
|
} from '#/utils';
|
||||||
|
|
||||||
const { hasAccessByCodes } = useAccess();
|
|
||||||
|
|
||||||
/** 新增/修改的表单 */
|
/** 新增/修改的表单 */
|
||||||
export function useFormSchema(): VbenFormSchema[] {
|
export function useFormSchema(): VbenFormSchema[] {
|
||||||
return [
|
return [
|
||||||
@@ -162,8 +157,7 @@ export function useGridFormSchema(): VbenFormSchema[] {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** 列表的字段 */
|
/** 列表的字段 */
|
||||||
export function useGridColumns<T = SystemTenantApi.Tenant>(
|
export function useGridColumns(
|
||||||
onActionClick: OnActionClickFn<T>,
|
|
||||||
getPackageName?: (packageId: number) => string | undefined,
|
getPackageName?: (packageId: number) => string | undefined,
|
||||||
): VxeTableGridOptions['columns'] {
|
): VxeTableGridOptions['columns'] {
|
||||||
return [
|
return [
|
||||||
@@ -227,29 +221,10 @@ export function useGridColumns<T = SystemTenantApi.Tenant>(
|
|||||||
formatter: 'formatDateTime',
|
formatter: 'formatDateTime',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'operation',
|
|
||||||
title: '操作',
|
title: '操作',
|
||||||
minWidth: 130,
|
width: 130,
|
||||||
align: 'center',
|
|
||||||
fixed: 'right',
|
fixed: 'right',
|
||||||
cellRender: {
|
slots: { default: 'actions' },
|
||||||
attrs: {
|
|
||||||
nameField: 'name',
|
|
||||||
nameTitle: '租户',
|
|
||||||
onClick: onActionClick,
|
|
||||||
},
|
|
||||||
name: 'CellOperation',
|
|
||||||
options: [
|
|
||||||
{
|
|
||||||
code: 'edit',
|
|
||||||
show: hasAccessByCodes(['system:tenant:update']),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
code: 'delete',
|
|
||||||
show: hasAccessByCodes(['system:tenant:delete']),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import type {
|
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
|
||||||
OnActionClickParams,
|
|
||||||
VxeTableGridOptions,
|
|
||||||
} from '#/adapter/vxe-table';
|
|
||||||
import type { SystemTenantApi } from '#/api/system/tenant';
|
import type { SystemTenantApi } from '#/api/system/tenant';
|
||||||
import type { SystemTenantPackageApi } from '#/api/system/tenant-package';
|
import type { SystemTenantPackageApi } from '#/api/system/tenant-package';
|
||||||
|
|
||||||
@@ -75,29 +72,12 @@ async function onDelete(row: SystemTenantApi.Tenant) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 表格操作按钮的回调函数 */
|
|
||||||
function onActionClick({
|
|
||||||
code,
|
|
||||||
row,
|
|
||||||
}: OnActionClickParams<SystemTenantApi.Tenant>) {
|
|
||||||
switch (code) {
|
|
||||||
case 'delete': {
|
|
||||||
onDelete(row);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'edit': {
|
|
||||||
onEdit(row);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const [Grid, gridApi] = useVbenVxeGrid({
|
const [Grid, gridApi] = useVbenVxeGrid({
|
||||||
formOptions: {
|
formOptions: {
|
||||||
schema: useGridFormSchema(),
|
schema: useGridFormSchema(),
|
||||||
},
|
},
|
||||||
gridOptions: {
|
gridOptions: {
|
||||||
columns: useGridColumns(onActionClick, getPackageName),
|
columns: useGridColumns(getPackageName),
|
||||||
height: 'auto',
|
height: 'auto',
|
||||||
keepSource: true,
|
keepSource: true,
|
||||||
proxyConfig: {
|
proxyConfig: {
|
||||||
@@ -153,6 +133,30 @@ onMounted(async () => {
|
|||||||
{{ $t('ui.actionTitle.export') }}
|
{{ $t('ui.actionTitle.export') }}
|
||||||
</Button>
|
</Button>
|
||||||
</template>
|
</template>
|
||||||
|
<template #actions="{ row }">
|
||||||
|
<TableAction
|
||||||
|
:actions="[
|
||||||
|
{
|
||||||
|
label: $t('common.edit'),
|
||||||
|
type: 'link',
|
||||||
|
icon: 'ant-design:edit-outlined',
|
||||||
|
auth: ['system:role:update'],
|
||||||
|
onClick: onEdit.bind(null, row),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: $t('common.delete'),
|
||||||
|
type: 'link',
|
||||||
|
danger: true,
|
||||||
|
icon: 'ant-design:delete-outlined',
|
||||||
|
auth: ['system:role:delete'],
|
||||||
|
popConfirm: {
|
||||||
|
title: $t('ui.actionMessage.deleteConfirm', [row.name]),
|
||||||
|
confirm: onDelete.bind(null, row),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Page>
|
</Page>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
import type { VbenFormSchema } from '#/adapter/form';
|
import type { VbenFormSchema } from '#/adapter/form';
|
||||||
import type { OnActionClickFn, VxeTableGridOptions } from '#/adapter/vxe-table';
|
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
|
||||||
import type { SystemTenantPackageApi } from '#/api/system/tenant-package';
|
|
||||||
|
|
||||||
import { useAccess } from '@vben/access';
|
|
||||||
|
|
||||||
import { z } from '#/adapter/form';
|
import { z } from '#/adapter/form';
|
||||||
import {
|
import {
|
||||||
@@ -12,8 +9,6 @@ import {
|
|||||||
getRangePickerDefaultProps,
|
getRangePickerDefaultProps,
|
||||||
} from '#/utils';
|
} from '#/utils';
|
||||||
|
|
||||||
const { hasAccessByCodes } = useAccess();
|
|
||||||
|
|
||||||
/** 新增/修改的表单 */
|
/** 新增/修改的表单 */
|
||||||
export function useFormSchema(): VbenFormSchema[] {
|
export function useFormSchema(): VbenFormSchema[] {
|
||||||
return [
|
return [
|
||||||
@@ -91,9 +86,7 @@ export function useGridFormSchema(): VbenFormSchema[] {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** 列表的字段 */
|
/** 列表的字段 */
|
||||||
export function useGridColumns<T = SystemTenantPackageApi.TenantPackage>(
|
export function useGridColumns(): VxeTableGridOptions['columns'] {
|
||||||
onActionClick: OnActionClickFn<T>,
|
|
||||||
): VxeTableGridOptions['columns'] {
|
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
field: 'id',
|
field: 'id',
|
||||||
@@ -126,29 +119,10 @@ export function useGridColumns<T = SystemTenantPackageApi.TenantPackage>(
|
|||||||
formatter: 'formatDateTime',
|
formatter: 'formatDateTime',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'operation',
|
|
||||||
title: '操作',
|
title: '操作',
|
||||||
minWidth: 130,
|
width: 130,
|
||||||
align: 'center',
|
|
||||||
fixed: 'right',
|
fixed: 'right',
|
||||||
cellRender: {
|
slots: { default: 'actions' },
|
||||||
attrs: {
|
|
||||||
nameField: 'name',
|
|
||||||
nameTitle: '套餐',
|
|
||||||
onClick: onActionClick,
|
|
||||||
},
|
|
||||||
name: 'CellOperation',
|
|
||||||
options: [
|
|
||||||
{
|
|
||||||
code: 'edit',
|
|
||||||
show: hasAccessByCodes(['system:tenant-package:update']),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
code: 'delete',
|
|
||||||
show: hasAccessByCodes(['system:tenant-package:delete']),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import type {
|
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
|
||||||
OnActionClickParams,
|
|
||||||
VxeTableGridOptions,
|
|
||||||
} from '#/adapter/vxe-table';
|
|
||||||
import type { SystemTenantPackageApi } from '#/api/system/tenant-package';
|
import type { SystemTenantPackageApi } from '#/api/system/tenant-package';
|
||||||
|
|
||||||
import { Page, useVbenModal } from '@vben/common-ui';
|
import { Page, useVbenModal } from '@vben/common-ui';
|
||||||
@@ -57,30 +54,13 @@ async function onDelete(row: SystemTenantPackageApi.TenantPackage) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 表格操作按钮的回调函数 */
|
|
||||||
function onActionClick({
|
|
||||||
code,
|
|
||||||
row,
|
|
||||||
}: OnActionClickParams<SystemTenantPackageApi.TenantPackage>) {
|
|
||||||
switch (code) {
|
|
||||||
case 'delete': {
|
|
||||||
onDelete(row);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'edit': {
|
|
||||||
onEdit(row);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const [Grid, gridApi] = useVbenVxeGrid({
|
const [Grid, gridApi] = useVbenVxeGrid({
|
||||||
formOptions: {
|
formOptions: {
|
||||||
schema: useGridFormSchema(),
|
schema: useGridFormSchema(),
|
||||||
// TODO @芋艿:时间筛选,后续处理;
|
// TODO @芋艿:时间筛选,后续处理;
|
||||||
},
|
},
|
||||||
gridOptions: {
|
gridOptions: {
|
||||||
columns: useGridColumns(onActionClick),
|
columns: useGridColumns(),
|
||||||
height: 'auto',
|
height: 'auto',
|
||||||
keepSource: true,
|
keepSource: true,
|
||||||
proxyConfig: {
|
proxyConfig: {
|
||||||
@@ -123,6 +103,30 @@ const [Grid, gridApi] = useVbenVxeGrid({
|
|||||||
{{ $t('ui.actionTitle.create', ['套餐']) }}
|
{{ $t('ui.actionTitle.create', ['套餐']) }}
|
||||||
</Button>
|
</Button>
|
||||||
</template>
|
</template>
|
||||||
|
<template #actions="{ row }">
|
||||||
|
<TableAction
|
||||||
|
:actions="[
|
||||||
|
{
|
||||||
|
label: $t('common.edit'),
|
||||||
|
type: 'link',
|
||||||
|
icon: 'ant-design:edit-outlined',
|
||||||
|
auth: ['system:role:update'],
|
||||||
|
onClick: onEdit.bind(null, row),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: $t('common.delete'),
|
||||||
|
type: 'link',
|
||||||
|
danger: true,
|
||||||
|
icon: 'ant-design:delete-outlined',
|
||||||
|
auth: ['system:role:delete'],
|
||||||
|
popConfirm: {
|
||||||
|
title: $t('ui.actionMessage.deleteConfirm', [row.name]),
|
||||||
|
confirm: onDelete.bind(null, row),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Page>
|
</Page>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
import type { VbenFormSchema } from '#/adapter/form';
|
import type { VbenFormSchema } from '#/adapter/form';
|
||||||
import type { OnActionClickFn, VxeTableGridOptions } from '#/adapter/vxe-table';
|
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
|
||||||
import type { SystemUserApi } from '#/api/system/user';
|
import type { SystemUserApi } from '#/api/system/user';
|
||||||
|
|
||||||
import { useAccess } from '@vben/access';
|
|
||||||
import { handleTree } from '@vben/utils';
|
import { handleTree } from '@vben/utils';
|
||||||
|
|
||||||
import { z } from '#/adapter/form';
|
import { z } from '#/adapter/form';
|
||||||
@@ -16,8 +15,6 @@ import {
|
|||||||
getRangePickerDefaultProps,
|
getRangePickerDefaultProps,
|
||||||
} from '#/utils';
|
} from '#/utils';
|
||||||
|
|
||||||
const { hasAccessByCodes } = useAccess();
|
|
||||||
|
|
||||||
/** 新增/修改的表单 */
|
/** 新增/修改的表单 */
|
||||||
export function useFormSchema(): VbenFormSchema[] {
|
export function useFormSchema(): VbenFormSchema[] {
|
||||||
return [
|
return [
|
||||||
@@ -83,7 +80,7 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||||||
fieldName: 'email',
|
fieldName: 'email',
|
||||||
label: '邮箱',
|
label: '邮箱',
|
||||||
component: 'Input',
|
component: 'Input',
|
||||||
rules: z.string().email('邮箱格式不正确').optional(),
|
rules: z.string().email('邮箱格式不正确').or(z.literal('')).optional(),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'mobile',
|
fieldName: 'mobile',
|
||||||
@@ -262,7 +259,6 @@ export function useGridFormSchema(): VbenFormSchema[] {
|
|||||||
|
|
||||||
/** 列表的字段 */
|
/** 列表的字段 */
|
||||||
export function useGridColumns<T = SystemUserApi.User>(
|
export function useGridColumns<T = SystemUserApi.User>(
|
||||||
onActionClick: OnActionClickFn<T>,
|
|
||||||
onStatusChange?: (
|
onStatusChange?: (
|
||||||
newStatus: number,
|
newStatus: number,
|
||||||
row: T,
|
row: T,
|
||||||
@@ -315,41 +311,10 @@ export function useGridColumns<T = SystemUserApi.User>(
|
|||||||
formatter: 'formatDateTime',
|
formatter: 'formatDateTime',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'operation',
|
|
||||||
title: '操作',
|
title: '操作',
|
||||||
minWidth: 160,
|
width: 160,
|
||||||
fixed: 'right',
|
fixed: 'right',
|
||||||
align: 'center',
|
slots: { default: 'actions' },
|
||||||
cellRender: {
|
|
||||||
attrs: {
|
|
||||||
nameField: 'username',
|
|
||||||
nameTitle: '用户',
|
|
||||||
onClick: onActionClick,
|
|
||||||
},
|
|
||||||
name: 'CellOperation',
|
|
||||||
// TODO @芋艿:后续把 delete、assign-role、reset-password 搞成"更多"
|
|
||||||
options: [
|
|
||||||
{
|
|
||||||
code: 'edit',
|
|
||||||
show: hasAccessByCodes(['system:user:update']),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
code: 'delete',
|
|
||||||
show: hasAccessByCodes(['system:user:delete']),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
code: 'assign-role',
|
|
||||||
text: '分配角色',
|
|
||||||
show: hasAccessByCodes(['system:permission:assign-user-role']),
|
|
||||||
'v-access:code': 'system:user:assign-role1',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
code: 'reset-password',
|
|
||||||
text: '重置密码',
|
|
||||||
show: hasAccessByCodes(['system:user:update-password']),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import type {
|
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
|
||||||
OnActionClickParams,
|
|
||||||
VxeTableGridOptions,
|
|
||||||
} from '#/adapter/vxe-table';
|
|
||||||
import type { SystemDeptApi } from '#/api/system/dept';
|
import type { SystemDeptApi } from '#/api/system/dept';
|
||||||
import type { SystemUserApi } from '#/api/system/user';
|
import type { SystemUserApi } from '#/api/system/user';
|
||||||
|
|
||||||
@@ -22,6 +19,7 @@ import {
|
|||||||
updateUserStatus,
|
updateUserStatus,
|
||||||
} from '#/api/system/user';
|
} from '#/api/system/user';
|
||||||
import { DocAlert } from '#/components/doc-alert';
|
import { DocAlert } from '#/components/doc-alert';
|
||||||
|
import { TableAction } from '#/components/table-action';
|
||||||
import { $t } from '#/locales';
|
import { $t } from '#/locales';
|
||||||
import { DICT_TYPE, getDictLabel } from '#/utils';
|
import { DICT_TYPE, getDictLabel } from '#/utils';
|
||||||
|
|
||||||
@@ -137,34 +135,12 @@ async function onStatusChange(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 表格操作按钮的回调函数 */
|
|
||||||
function onActionClick({ code, row }: OnActionClickParams<SystemUserApi.User>) {
|
|
||||||
switch (code) {
|
|
||||||
case 'assign-role': {
|
|
||||||
onAssignRole(row);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'delete': {
|
|
||||||
onDelete(row);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'edit': {
|
|
||||||
onEdit(row);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'reset-password': {
|
|
||||||
onResetPassword(row);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const [Grid, gridApi] = useVbenVxeGrid({
|
const [Grid, gridApi] = useVbenVxeGrid({
|
||||||
formOptions: {
|
formOptions: {
|
||||||
schema: useGridFormSchema(),
|
schema: useGridFormSchema(),
|
||||||
},
|
},
|
||||||
gridOptions: {
|
gridOptions: {
|
||||||
columns: useGridColumns(onActionClick, onStatusChange),
|
columns: useGridColumns(onStatusChange),
|
||||||
height: 'auto',
|
height: 'auto',
|
||||||
keepSource: true,
|
keepSource: true,
|
||||||
proxyConfig: {
|
proxyConfig: {
|
||||||
@@ -242,6 +218,44 @@ const [Grid, gridApi] = useVbenVxeGrid({
|
|||||||
{{ $t('ui.actionTitle.import', ['用户']) }}
|
{{ $t('ui.actionTitle.import', ['用户']) }}
|
||||||
</Button>
|
</Button>
|
||||||
</template>
|
</template>
|
||||||
|
<template #actions="{ row }">
|
||||||
|
<TableAction
|
||||||
|
:actions="[
|
||||||
|
{
|
||||||
|
label: $t('common.edit'),
|
||||||
|
type: 'link',
|
||||||
|
icon: 'ant-design:edit-outlined',
|
||||||
|
auth: ['system:user:update'],
|
||||||
|
onClick: onEdit.bind(null, row),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: $t('common.delete'),
|
||||||
|
type: 'link',
|
||||||
|
danger: true,
|
||||||
|
icon: 'ant-design:delete-outlined',
|
||||||
|
auth: ['system:user:delete'],
|
||||||
|
popConfirm: {
|
||||||
|
title: $t('ui.actionMessage.deleteConfirm', [row.name]),
|
||||||
|
confirm: onDelete.bind(null, row),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]"
|
||||||
|
:drop-down-actions="[
|
||||||
|
{
|
||||||
|
label: '数据权限',
|
||||||
|
type: 'link',
|
||||||
|
auth: ['system:permission:assign-user-role'],
|
||||||
|
onClick: onAssignRole.bind(null, row),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '菜单权限',
|
||||||
|
type: 'link',
|
||||||
|
auth: ['system:user:update-password'],
|
||||||
|
onClick: onResetPassword.bind(null, row),
|
||||||
|
},
|
||||||
|
]"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
</Grid>
|
</Grid>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ VITE_APP_CAPTCHA_ENABLE=false
|
|||||||
VITE_APP_DOCALERT_ENABLE=true
|
VITE_APP_DOCALERT_ENABLE=true
|
||||||
|
|
||||||
# 百度统计
|
# 百度统计
|
||||||
VITE_APP_BAIDU_CODE = e98f2eab6ceb8688bc6d8fc5332ff093
|
VITE_APP_BAIDU_CODE = b79d8f49e2d38b26503b92810b740f45
|
||||||
|
|
||||||
# GoView域名
|
# GoView域名
|
||||||
VITE_GOVIEW_URL='http://127.0.0.1:3000'
|
VITE_GOVIEW_URL='http://127.0.0.1:3000'
|
||||||
|
|||||||
@@ -26,6 +26,9 @@
|
|||||||
"#/*": "./src/*"
|
"#/*": "./src/*"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@form-create/designer": "^3.2.6",
|
||||||
|
"@form-create/element-ui": "^3.2.11",
|
||||||
|
"@tinymce/tinymce-vue": "catalog:",
|
||||||
"@vben/access": "workspace:*",
|
"@vben/access": "workspace:*",
|
||||||
"@vben/common-ui": "workspace:*",
|
"@vben/common-ui": "workspace:*",
|
||||||
"@vben/constants": "workspace:*",
|
"@vben/constants": "workspace:*",
|
||||||
@@ -41,8 +44,11 @@
|
|||||||
"@vben/types": "workspace:*",
|
"@vben/types": "workspace:*",
|
||||||
"@vben/utils": "workspace:*",
|
"@vben/utils": "workspace:*",
|
||||||
"@vueuse/core": "catalog:",
|
"@vueuse/core": "catalog:",
|
||||||
|
"cropperjs": "catalog:",
|
||||||
|
"crypto-js": "catalog:",
|
||||||
"dayjs": "catalog:",
|
"dayjs": "catalog:",
|
||||||
"element-plus": "catalog:",
|
"element-plus": "catalog:",
|
||||||
|
"highlight.js": "catalog:",
|
||||||
"pinia": "catalog:",
|
"pinia": "catalog:",
|
||||||
"vue": "catalog:",
|
"vue": "catalog:",
|
||||||
"vue-router": "catalog:"
|
"vue-router": "catalog:"
|
||||||
|
|||||||
1
apps/web-ele/public/tinymce/icons/default/icons.min.js
vendored
Normal file
1
apps/web-ele/public/tinymce/icons/default/icons.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
3
apps/web-ele/public/tinymce/langs/README.md
Normal file
3
apps/web-ele/public/tinymce/langs/README.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
This is where language files should be placed.
|
||||||
|
|
||||||
|
Please DO NOT translate these directly, use this service instead: https://crowdin.com/project/tinymce
|
||||||
1
apps/web-ele/public/tinymce/langs/zh_CN.js
Normal file
1
apps/web-ele/public/tinymce/langs/zh_CN.js
Normal file
File diff suppressed because one or more lines are too long
6
apps/web-ele/public/tinymce/license.md
Normal file
6
apps/web-ele/public/tinymce/license.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# Software License Agreement
|
||||||
|
|
||||||
|
**TinyMCE** – [<https://github.com/tinymce/tinymce>](https://github.com/tinymce/tinymce)
|
||||||
|
Copyright (c) 2024, Ephox Corporation DBA Tiny Technologies, Inc.
|
||||||
|
|
||||||
|
Licensed under the terms of [GNU General Public License Version 2 or later](http://www.gnu.org/licenses/gpl.html).
|
||||||
4
apps/web-ele/public/tinymce/models/dom/model.min.js
vendored
Normal file
4
apps/web-ele/public/tinymce/models/dom/model.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
4
apps/web-ele/public/tinymce/plugins/accordion/plugin.min.js
vendored
Normal file
4
apps/web-ele/public/tinymce/plugins/accordion/plugin.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
4
apps/web-ele/public/tinymce/plugins/advlist/plugin.min.js
vendored
Normal file
4
apps/web-ele/public/tinymce/plugins/advlist/plugin.min.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
/**
|
||||||
|
* TinyMCE version 7.8.0 (TBD)
|
||||||
|
*/
|
||||||
|
!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager");const e=(t,e,s)=>{const r="UL"===e?"InsertUnorderedList":"InsertOrderedList";t.execCommand(r,!1,!1===s?null:{"list-style-type":s})},s=t=>e=>e.options.get(t),r=s("advlist_number_styles"),n=s("advlist_bullet_styles"),l=t=>null==t,i=t=>!l(t);class o{constructor(t,e){this.tag=t,this.value=e}static some(t){return new o(!0,t)}static none(){return o.singletonNone}fold(t,e){return this.tag?e(this.value):t()}isSome(){return this.tag}isNone(){return!this.tag}map(t){return this.tag?o.some(t(this.value)):o.none()}bind(t){return this.tag?t(this.value):o.none()}exists(t){return this.tag&&t(this.value)}forall(t){return!this.tag||t(this.value)}filter(t){return!this.tag||t(this.value)?this:o.none()}getOr(t){return this.tag?this.value:t}or(t){return this.tag?this:t}getOrThunk(t){return this.tag?this.value:t()}orThunk(t){return this.tag?this:t()}getOrDie(t){if(this.tag)return this.value;throw new Error(null!=t?t:"Called getOrDie on None")}static from(t){return i(t)?o.some(t):o.none()}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(t){this.tag&&t(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:"none()"}}o.singletonNone=new o(!1);const a=Array.prototype.indexOf,u=Object.keys;var d=tinymce.util.Tools.resolve("tinymce.util.Tools");const c=t=>e=>i(e)&&t.test(e.nodeName),h=c(/^(OL|UL|DL)$/),g=c(/^(TH|TD)$/),p=t=>l(t)||"default"===t?"":t,m=(t,e)=>s=>((t,e)=>{const s=t.selection.getNode();return e({parents:t.dom.getParents(s),element:s}),t.on("NodeChange",e),()=>t.off("NodeChange",e)})(t,(r=>((t,r)=>{const n=t.selection.getStart(!0);s.setActive(((t,e,s)=>((t,e,s)=>{for(let e=0,n=t.length;e<n;e++){const n=t[e];if(h(r=n)&&!/\btox\-/.test(r.className))return o.some(n);if(s(n,e))break}var r;return o.none()})(e,0,g).exists((e=>e.nodeName===s&&((t,e)=>t.dom.isChildOf(e,t.getBody()))(t,e))))(t,r,e)),s.setEnabled(!((t,e)=>{const s=t.dom.getParent(e,"ol,ul,dl");return((t,e)=>null!==e&&!t.dom.isEditable(e))(t,s)||!t.selection.isEditable()})(t,n))})(t,r.parents))),v=(t,s,r,n,l,i)=>{const c={"lower-latin":"lower-alpha","upper-latin":"upper-alpha","lower-alpha":"lower-latin","upper-alpha":"upper-latin"},h=(g=t=>{return e=i,s=t,a.call(e,s)>-1;var e,s},((t,e)=>{const s={};return((t,e)=>{const s=u(t);for(let r=0,n=s.length;r<n;r++){const n=s[r];e(t[n],n)}})(t,((t,r)=>{const n=e(t,r);s[n.k]=n.v})),s})(c,((t,e)=>({k:e,v:g(t)}))));var g;t.ui.registry.addSplitButton(s,{tooltip:r,icon:"OL"===l?"ordered-list":"unordered-list",presets:"listpreview",columns:3,fetch:t=>{t(d.map(i,(t=>{const e="OL"===l?"num":"bull",s="disc"===t||"decimal"===t?"default":t,r=p(t),n=(t=>t.replace(/\-/g," ").replace(/\b\w/g,(t=>t.toUpperCase())))(t);return{type:"choiceitem",value:r,icon:"list-"+e+"-"+s,text:n}})))},onAction:()=>t.execCommand(n),onItemAction:(s,r)=>{e(t,l,r)},select:e=>{const s=(t=>{const e=t.dom.getParent(t.selection.getNode(),"ol,ul"),s=t.dom.getStyle(e,"listStyleType");return o.from(s)})(t);return s.exists((t=>e===t||c[t]===e&&!h[e]))},onSetup:m(t,l)})},y=(t,s,r,n,l,i)=>{i.length>1?v(t,s,r,n,l,i):((t,s,r,n,l,i)=>{t.ui.registry.addToggleButton(s,{active:!1,tooltip:r,icon:"OL"===l?"ordered-list":"unordered-list",onSetup:m(t,l),onAction:()=>t.queryCommandState(n)||""===i?t.execCommand(n):e(t,l,i)})})(t,s,r,n,l,p(i[0]))};t.add("advlist",(t=>{t.hasPlugin("lists")?((t=>{const e=t.options.register;e("advlist_number_styles",{processor:"string[]",default:"default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman".split(",")}),e("advlist_bullet_styles",{processor:"string[]",default:"default,circle,square".split(",")})})(t),(t=>{y(t,"numlist","Numbered list","InsertOrderedList","OL",r(t)),y(t,"bullist","Bullet list","InsertUnorderedList","UL",n(t))})(t),(t=>{t.addCommand("ApplyUnorderedListStyle",((s,r)=>{e(t,"UL",r["list-style-type"])})),t.addCommand("ApplyOrderedListStyle",((s,r)=>{e(t,"OL",r["list-style-type"])}))})(t)):console.error("Please use the Lists plugin together with the List Styles plugin.")}))}();
|
||||||
4
apps/web-ele/public/tinymce/plugins/anchor/plugin.min.js
vendored
Normal file
4
apps/web-ele/public/tinymce/plugins/anchor/plugin.min.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
/**
|
||||||
|
* TinyMCE version 7.8.0 (TBD)
|
||||||
|
*/
|
||||||
|
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),o=tinymce.util.Tools.resolve("tinymce.util.Tools");const n=e=>e.options.get("allow_html_in_named_anchor");const a="a:not([href])",r=e=>!e,i=e=>e.getAttribute("id")||e.getAttribute("name")||"",l=e=>(e=>"a"===e.nodeName.toLowerCase())(e)&&!e.getAttribute("href")&&""!==i(e),s=e=>e.dom.getParent(e.selection.getStart(),a),d=(e,a)=>{const r=s(e);r?((e,t,o)=>{o.removeAttribute("name"),o.id=t,e.addVisual(),e.undoManager.add()})(e,a,r):((e,a)=>{e.undoManager.transact((()=>{n(e)||e.selection.collapse(!0),e.selection.isCollapsed()?e.insertContent(e.dom.createHTML("a",{id:a})):((e=>{const n=e.dom;t(n).walk(e.selection.getRng(),(e=>{o.each(e,(e=>{var t;l(t=e)&&!t.firstChild&&n.remove(e,!1)}))}))})(e),e.formatter.remove("namedAnchor",void 0,void 0,!0),e.formatter.apply("namedAnchor",{value:a}),e.addVisual())}))})(e,a),e.focus()},c=e=>(e=>r(e.attr("href"))&&!r(e.attr("id")||e.attr("name")))(e)&&!e.firstChild,m=e=>t=>{for(let o=0;o<t.length;o++){const n=t[o];c(n)&&n.attr("contenteditable",e)}},u=e=>t=>{const o=()=>{t.setEnabled(e.selection.isEditable())};return e.on("NodeChange",o),o(),()=>{e.off("NodeChange",o)}};e.add("anchor",(e=>{(e=>{(0,e.options.register)("allow_html_in_named_anchor",{processor:"boolean",default:!1})})(e),(e=>{e.on("PreInit",(()=>{e.parser.addNodeFilter("a",m("false")),e.serializer.addNodeFilter("a",m(null))}))})(e),(e=>{e.addCommand("mceAnchor",(()=>{(e=>{const t=(e=>{const t=s(e);return t?i(t):""})(e);e.windowManager.open({title:"Anchor",size:"normal",body:{type:"panel",items:[{name:"id",type:"input",label:"ID",placeholder:"example"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{id:t},onSubmit:t=>{((e,t)=>/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(t)?(d(e,t),!0):(e.windowManager.alert("ID should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."),!1))(e,t.getData().id)&&t.close()}})})(e)}))})(e),(e=>{const t=()=>e.execCommand("mceAnchor");e.ui.registry.addToggleButton("anchor",{icon:"bookmark",tooltip:"Anchor",onAction:t,onSetup:t=>{const o=e.selection.selectorChangedWithUnbind("a:not([href])",t.setActive).unbind,n=u(e)(t);return()=>{o(),n()}}}),e.ui.registry.addMenuItem("anchor",{icon:"bookmark",text:"Anchor...",onAction:t,onSetup:u(e)})})(e),e.on("PreInit",(()=>{(e=>{e.formatter.register("namedAnchor",{inline:"a",selector:a,remove:"all",split:!0,deep:!0,attributes:{id:"%value"},onmatch:(e,t,o)=>l(e)})})(e)}))}))}();
|
||||||
4
apps/web-ele/public/tinymce/plugins/autolink/plugin.min.js
vendored
Normal file
4
apps/web-ele/public/tinymce/plugins/autolink/plugin.min.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
/**
|
||||||
|
* TinyMCE version 7.8.0 (TBD)
|
||||||
|
*/
|
||||||
|
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager");const t=e=>t=>t.options.get(e),n=t("autolink_pattern"),o=t("link_default_target"),r=t("link_default_protocol"),a=t("allow_unsafe_link_target"),s=e=>"string"===(e=>{const t=typeof e;return null===e?"null":"object"===t&&Array.isArray(e)?"array":"object"===t&&(n=o=e,(r=String).prototype.isPrototypeOf(n)||(null===(a=o.constructor)||void 0===a?void 0:a.name)===r.name)?"string":t;var n,o,r,a})(e);const l=e=>undefined===e;const i=e=>!(e=>null==e)(e),c=Object.hasOwnProperty,d=e=>"\ufeff"===e;var u=tinymce.util.Tools.resolve("tinymce.dom.TextSeeker");const f=e=>/^[(\[{ \u00a0]$/.test(e),g=(e,t,n)=>{for(let o=t-1;o>=0;o--){const t=e.charAt(o);if(!d(t)&&n(t))return o}return-1},m=(e,t)=>{var o;const a=e.schema.getVoidElements(),s=n(e),{dom:i,selection:d}=e;if(null!==i.getParent(d.getNode(),"a[href]")||e.mode.isReadOnly())return null;const m=d.getRng(),k=u(i,(e=>{return i.isBlock(e)||(t=a,n=e.nodeName.toLowerCase(),c.call(t,n))||"false"===i.getContentEditable(e);var t,n})),{container:p,offset:y}=((e,t)=>{let n=e,o=t;for(;1===n.nodeType&&n.childNodes[o];)n=n.childNodes[o],o=3===n.nodeType?n.data.length:n.childNodes.length;return{container:n,offset:o}})(m.endContainer,m.endOffset),w=null!==(o=i.getParent(p,i.isBlock))&&void 0!==o?o:i.getRoot(),h=k.backwards(p,y+t,((e,t)=>{const n=e.data,o=g(n,t,(r=f,e=>!r(e)));var r,a;return-1===o||(a=n[o],/[?!,.;:]/.test(a))?o:o+1}),w);if(!h)return null;let v=h.container;const _=k.backwards(h.container,h.offset,((e,t)=>{v=e;const n=g(e.data,t,f);return-1===n?n:n+1}),w),A=i.createRng();_?A.setStart(_.container,_.offset):A.setStart(v,0),A.setEnd(h.container,h.offset);const C=A.toString().replace(/\uFEFF/g,"").match(s);if(C){let t=C[0];return $="www.",(b=t).length>=4&&b.substr(0,4)===$?t=r(e)+"://"+t:((e,t,n=0,o)=>{const r=e.indexOf(t,n);return-1!==r&&(!!l(o)||r+t.length<=o)})(t,"@")&&!(e=>/^([A-Za-z][A-Za-z\d.+-]*:\/\/)|mailto:/.test(e))(t)&&(t="mailto:"+t),{rng:A,url:t}}var b,$;return null},k=(e,t)=>{const{dom:n,selection:r}=e,{rng:l,url:i}=t,c=r.getBookmark();r.setRng(l);const d="createlink",u={command:d,ui:!1,value:i};if(!e.dispatch("BeforeExecCommand",u).isDefaultPrevented()){e.getDoc().execCommand(d,!1,i),e.dispatch("ExecCommand",u);const t=o(e);if(s(t)){const o=r.getNode();n.setAttrib(o,"target",t),"_blank"!==t||a(e)||n.setAttrib(o,"rel","noopener")}}r.moveToBookmark(c),e.nodeChanged()},p=e=>{const t=m(e,-1);i(t)&&k(e,t)},y=p;e.add("autolink",(e=>{(e=>{const t=e.options.register;t("autolink_pattern",{processor:"regexp",default:new RegExp("^"+/(?:[A-Za-z][A-Za-z\d.+-]{0,14}:\/\/(?:[-.~*+=!&;:'%@?^${}(),\w]+@)?|www\.|[-;:&=+$,.\w]+@)[A-Za-z\d-]+(?:\.[A-Za-z\d-]+)*(?::\d+)?(?:\/(?:[-.~*+=!;:'%@$(),\/\w]*[-~*+=%@$()\/\w])?)?(?:\?(?:[-.~*+=!&;:'%@?^${}(),\/\w]+))?(?:#(?:[-.~*+=!&;:'%@?^${}(),\/\w]+))?/g.source+"$","i")}),t("link_default_target",{processor:"string"}),t("link_default_protocol",{processor:"string",default:"https"})})(e),(e=>{e.on("keydown",(t=>{13!==t.keyCode||t.isDefaultPrevented()||(e=>{const t=m(e,0);i(t)&&k(e,t)})(e)})),e.on("keyup",(t=>{32===t.keyCode?p(e):(48===t.keyCode&&t.shiftKey||221===t.keyCode)&&y(e)}))})(e)}))}();
|
||||||
4
apps/web-ele/public/tinymce/plugins/autoresize/plugin.min.js
vendored
Normal file
4
apps/web-ele/public/tinymce/plugins/autoresize/plugin.min.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
/**
|
||||||
|
* TinyMCE version 7.8.0 (TBD)
|
||||||
|
*/
|
||||||
|
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.Env");const o=e=>t=>t.options.get(e),n=o("min_height"),s=o("max_height"),i=o("autoresize_overflow_padding"),r=o("autoresize_bottom_margin"),g=(e,t)=>{const o=e.getBody();o&&(o.style.overflowY=t?"":"hidden",t||(o.scrollTop=0))},l=(e,t,o,n)=>{var s;const i=parseInt(null!==(s=e.getStyle(t,o,n))&&void 0!==s?s:"",10);return isNaN(i)?0:i},a=(e,o,r,c)=>{var d;const u=e.dom,h=e.getDoc();if(!h)return;if((e=>e.plugins.fullscreen&&e.plugins.fullscreen.isFullscreen())(e))return void g(e,!0);const m=h.documentElement,f=c?c():i(e),p=null!==(d=n(e))&&void 0!==d?d:e.getElement().offsetHeight;let y=p;const S=l(u,m,"margin-top",!0),v=l(u,m,"margin-bottom",!0);let C=m.offsetHeight+S+v+f;C<0&&(C=0);const H=e.getContainer().offsetHeight-e.getContentAreaContainer().offsetHeight;C+H>p&&(y=C+H);const b=s(e);b&&y>b?(y=b,g(e,!0)):g(e,!1);const w=o.get();if(w.set&&(e.dom.setStyles(e.getDoc().documentElement,{"min-height":0}),e.dom.setStyles(e.getBody(),{"min-height":"inherit"})),y!==w.totalHeight&&(C-f!==w.contentHeight||!w.set)){const n=y-w.totalHeight;if(u.setStyle(e.getContainer(),"height",y+"px"),o.set({totalHeight:y,contentHeight:C,set:!0}),(e=>{e.dispatch("ResizeEditor")})(e),t.browser.isSafari()&&(t.os.isMacOS()||t.os.isiOS())){const t=e.getWin();t.scrollTo(t.pageXOffset,t.pageYOffset)}e.hasFocus()&&(e=>{if("setcontent"===(null==e?void 0:e.type.toLowerCase())){const t=e;return!0===t.selection||!0===t.paste}return!1})(r)&&e.selection.scrollIntoView(),(t.browser.isSafari()||t.browser.isChromium())&&n<0&&a(e,o,r,c)}};e.add("autoresize",(e=>{if((e=>{const t=e.options.register;t("autoresize_overflow_padding",{processor:"number",default:1}),t("autoresize_bottom_margin",{processor:"number",default:50})})(e),e.options.isSet("resize")||e.options.set("resize",!1),!e.inline){const o=(()=>{let e={totalHeight:0,contentHeight:0,set:!1};return{get:()=>e,set:t=>{e=t}}})();((e,t)=>{e.addCommand("mceAutoResize",(()=>{a(e,t)}))})(e,o),((e,o)=>{const n=()=>r(e);e.on("init",(s=>{const r=i(e),g=e.dom;g.setStyles(e.getDoc().documentElement,{height:"auto"}),t.browser.isEdge()||t.browser.isIE()?g.setStyles(e.getBody(),{paddingLeft:r,paddingRight:r,"min-height":0}):g.setStyles(e.getBody(),{paddingLeft:r,paddingRight:r}),a(e,o,s,n)})),e.on("NodeChange SetContent keyup FullscreenStateChanged ResizeContent",(t=>{a(e,o,t,n)}))})(e,o)}}))}();
|
||||||
4
apps/web-ele/public/tinymce/plugins/autosave/plugin.min.js
vendored
Normal file
4
apps/web-ele/public/tinymce/plugins/autosave/plugin.min.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
/**
|
||||||
|
* TinyMCE version 7.8.0 (TBD)
|
||||||
|
*/
|
||||||
|
!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager");const e=t=>"string"===(t=>{const e=typeof t;return null===t?"null":"object"===e&&Array.isArray(t)?"array":"object"===e&&(r=o=t,(a=String).prototype.isPrototypeOf(r)||(null===(s=o.constructor)||void 0===s?void 0:s.name)===a.name)?"string":e;var r,o,a,s})(t);const r=t=>undefined===t;var o=tinymce.util.Tools.resolve("tinymce.util.Delay"),a=tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),s=tinymce.util.Tools.resolve("tinymce.util.Tools");const n=t=>{const e=/^(\d+)([ms]?)$/.exec(t);return(e&&e[2]?{s:1e3,m:6e4}[e[2]]:1)*parseInt(t,10)},i=t=>e=>e.options.get(t),u=i("autosave_ask_before_unload"),l=i("autosave_restore_when_empty"),c=i("autosave_interval"),d=i("autosave_retention"),m=t=>{const e=document.location;return t.options.get("autosave_prefix").replace(/{path}/g,e.pathname).replace(/{query}/g,e.search).replace(/{hash}/g,e.hash).replace(/{id}/g,t.id)},v=(t,e)=>{if(r(e))return t.dom.isEmpty(t.getBody());{const r=s.trim(e);if(""===r)return!0;{const e=(new DOMParser).parseFromString(r,"text/html");return t.dom.isEmpty(e)}}},f=t=>{var e;const r=parseInt(null!==(e=a.getItem(m(t)+"time"))&&void 0!==e?e:"0",10)||0;return!((new Date).getTime()-r>d(t)&&(p(t,!1),1))},p=(t,e)=>{const r=m(t);a.removeItem(r+"draft"),a.removeItem(r+"time"),!1!==e&&(t=>{t.dispatch("RemoveDraft")})(t)},y=t=>{const e=m(t);!v(t)&&t.isDirty()&&(a.setItem(e+"draft",t.getContent({format:"raw",no_events:!0})),a.setItem(e+"time",(new Date).getTime().toString()),(t=>{t.dispatch("StoreDraft")})(t))},g=t=>{var e;const r=m(t);f(t)&&(t.setContent(null!==(e=a.getItem(r+"draft"))&&void 0!==e?e:"",{format:"raw"}),(t=>{t.dispatch("RestoreDraft")})(t))};var D=tinymce.util.Tools.resolve("tinymce.EditorManager");const h=t=>e=>{const r=()=>f(t)&&!t.mode.isReadOnly();e.setEnabled(r());const o=()=>e.setEnabled(r());return t.on("StoreDraft RestoreDraft RemoveDraft",o),()=>t.off("StoreDraft RestoreDraft RemoveDraft",o)};t.add("autosave",(t=>((t=>{const r=t.options.register,o=t=>{const r=e(t);return r?{value:n(t),valid:r}:{valid:!1,message:"Must be a string."}};r("autosave_ask_before_unload",{processor:"boolean",default:!0}),r("autosave_prefix",{processor:"string",default:"tinymce-autosave-{path}{query}{hash}-{id}-"}),r("autosave_restore_when_empty",{processor:"boolean",default:!1}),r("autosave_interval",{processor:o,default:"30s"}),r("autosave_retention",{processor:o,default:"20m"})})(t),(t=>{t.editorManager.on("BeforeUnload",(t=>{let e;s.each(D.get(),(t=>{t.plugins.autosave&&t.plugins.autosave.storeDraft(),!e&&t.isDirty()&&u(t)&&(e=t.translate("You have unsaved changes are you sure you want to navigate away?"))})),e&&(t.preventDefault(),t.returnValue=e)}))})(t),(t=>{(t=>{const e=c(t);o.setEditorInterval(t,(()=>{y(t)}),e)})(t);const e=()=>{(t=>{t.undoManager.transact((()=>{g(t),p(t)})),t.focus()})(t)};t.ui.registry.addButton("restoredraft",{tooltip:"Restore last draft",icon:"restore-draft",onAction:e,onSetup:h(t)}),t.ui.registry.addMenuItem("restoredraft",{text:"Restore last draft",icon:"restore-draft",onAction:e,onSetup:h(t)})})(t),t.on("init",(()=>{l(t)&&t.dom.isEmpty(t.getBody())&&g(t)})),(t=>({hasDraft:()=>f(t),storeDraft:()=>y(t),restoreDraft:()=>g(t),removeDraft:e=>p(t,e),isEmpty:e=>v(t,e)}))(t))))}();
|
||||||
4
apps/web-ele/public/tinymce/plugins/charmap/plugin.min.js
vendored
Normal file
4
apps/web-ele/public/tinymce/plugins/charmap/plugin.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
4
apps/web-ele/public/tinymce/plugins/code/plugin.min.js
vendored
Normal file
4
apps/web-ele/public/tinymce/plugins/code/plugin.min.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
/**
|
||||||
|
* TinyMCE version 7.8.0 (TBD)
|
||||||
|
*/
|
||||||
|
!function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("code",(e=>((e=>{e.addCommand("mceCodeEditor",(()=>{(e=>{const o=(e=>e.getContent({source_view:!0}))(e);e.windowManager.open({title:"Source Code",size:"large",body:{type:"panel",items:[{type:"textarea",name:"code"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{code:o},onSubmit:o=>{((e,o)=>{e.focus(),e.undoManager.transact((()=>{e.setContent(o)})),e.selection.setCursorLocation(),e.nodeChanged()})(e,o.getData().code),o.close()}})})(e)}))})(e),(e=>{const o=()=>e.execCommand("mceCodeEditor");e.ui.registry.addButton("code",{icon:"sourcecode",tooltip:"Source code",onAction:o}),e.ui.registry.addMenuItem("code",{icon:"sourcecode",text:"Source code",onAction:o})})(e),{})))}();
|
||||||
4
apps/web-ele/public/tinymce/plugins/codesample/plugin.min.js
vendored
Normal file
4
apps/web-ele/public/tinymce/plugins/codesample/plugin.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
4
apps/web-ele/public/tinymce/plugins/directionality/plugin.min.js
vendored
Normal file
4
apps/web-ele/public/tinymce/plugins/directionality/plugin.min.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
/**
|
||||||
|
* TinyMCE version 7.8.0 (TBD)
|
||||||
|
*/
|
||||||
|
!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager");const e=t=>e=>typeof e===t,o=t=>"string"===(t=>{const e=typeof t;return null===t?"null":"object"===e&&Array.isArray(t)?"array":"object"===e&&(o=r=t,(n=String).prototype.isPrototypeOf(o)||(null===(i=r.constructor)||void 0===i?void 0:i.name)===n.name)?"string":e;var o,r,n,i})(t),r=e("boolean"),n=t=>!(t=>null==t)(t),i=e("function"),s=e("number"),l=()=>false;class a{constructor(t,e){this.tag=t,this.value=e}static some(t){return new a(!0,t)}static none(){return a.singletonNone}fold(t,e){return this.tag?e(this.value):t()}isSome(){return this.tag}isNone(){return!this.tag}map(t){return this.tag?a.some(t(this.value)):a.none()}bind(t){return this.tag?t(this.value):a.none()}exists(t){return this.tag&&t(this.value)}forall(t){return!this.tag||t(this.value)}filter(t){return!this.tag||t(this.value)?this:a.none()}getOr(t){return this.tag?this.value:t}or(t){return this.tag?this:t}getOrThunk(t){return this.tag?this.value:t()}orThunk(t){return this.tag?this:t()}getOrDie(t){if(this.tag)return this.value;throw new Error(null!=t?t:"Called getOrDie on None")}static from(t){return n(t)?a.some(t):a.none()}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(t){this.tag&&t(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:"none()"}}a.singletonNone=new a(!1);const u=(t,e)=>{for(let o=0,r=t.length;o<r;o++)e(t[o],o)},c=t=>{if(null==t)throw new Error("Node cannot be null or undefined");return{dom:t}},d=c,h=(t,e)=>{const o=t.dom;if(1!==o.nodeType)return!1;{const t=o;if(void 0!==t.matches)return t.matches(e);if(void 0!==t.msMatchesSelector)return t.msMatchesSelector(e);if(void 0!==t.webkitMatchesSelector)return t.webkitMatchesSelector(e);if(void 0!==t.mozMatchesSelector)return t.mozMatchesSelector(e);throw new Error("Browser lacks native selectors")}};"undefined"!=typeof window?window:Function("return this;")();const m=t=>e=>(t=>t.dom.nodeType)(e)===t,g=m(1),f=m(3),v=m(11),y=(t,e)=>{t.dom.removeAttribute(e)},p=t=>d(t.dom.host),w=t=>{const e=f(t)?t.dom.parentNode:t.dom;if(null==e||null===e.ownerDocument)return!1;const o=e.ownerDocument;return(t=>{const e=(t=>d(t.dom.getRootNode()))(t);return v(o=e)&&n(o.dom.host)?a.some(e):a.none();var o})(d(e)).fold((()=>o.body.contains(e)),(r=w,i=p,t=>r(i(t))));var r,i},b=t=>"rtl"===((t,e)=>{const o=t.dom,r=window.getComputedStyle(o).getPropertyValue(e);return""!==r||w(t)?r:((t,e)=>(t=>void 0!==t.style&&i(t.style.getPropertyValue))(t)?t.style.getPropertyValue(e):"")(o,e)})(t,"direction")?"rtl":"ltr",S=(t,e)=>(t=>((t,e)=>{const o=[];for(let r=0,n=t.length;r<n;r++){const n=t[r];e(n,r)&&o.push(n)}return o})(((t,e)=>{const o=t.length,r=new Array(o);for(let n=0;n<o;n++){const o=t[n];r[n]=e(o,n)}return r})(t.dom.childNodes,d),(t=>h(t,e))))(t),N=t=>g(t)&&"li"===t.dom.nodeName.toLowerCase();const A=(t,e,n)=>{u(e,(e=>{const c=d(e),m=N(c),f=((t,e)=>{return(e?(o=t,r="ol,ul",((t,e,o)=>{let n=t.dom;const s=i(o)?o:l;for(;n.parentNode;){n=n.parentNode;const t=d(n);if(h(t,r))return a.some(t);if(s(t))break}return a.none()})(o,0,n)):a.some(t)).getOr(t);var o,r,n})(c,m);var v;(v=f,(t=>a.from(t.dom.parentNode).map(d))(v).filter(g)).each((e=>{if(t.setStyle(f.dom,"direction",null),b(e)===n?y(f,"dir"):((t,e,n)=>{((t,e,n)=>{if(!(o(n)||r(n)||s(n)))throw console.error("Invalid call to Attribute.set. Key ",e,":: Value ",n,":: Element ",t),new Error("Attribute value was not simple");t.setAttribute(e,n+"")})(t.dom,e,n)})(f,"dir",n),b(f)!==n&&t.setStyle(f.dom,"direction",n),m){const e=S(f,"li[dir],li[style]");u(e,(e=>{y(e,"dir"),t.setStyle(e.dom,"direction",null)}))}}))}))},T=(t,e)=>{t.selection.isEditable()&&(A(t.dom,t.selection.getSelectedBlocks(),e),t.nodeChanged())},C=(t,e)=>o=>{const r=r=>{const n=d(r.element);o.setActive(b(n)===e),o.setEnabled(t.selection.isEditable())};return t.on("NodeChange",r),o.setEnabled(t.selection.isEditable()),()=>t.off("NodeChange",r)};t.add("directionality",(t=>{(t=>{t.addCommand("mceDirectionLTR",(()=>{T(t,"ltr")})),t.addCommand("mceDirectionRTL",(()=>{T(t,"rtl")}))})(t),(t=>{t.ui.registry.addToggleButton("ltr",{tooltip:"Left to right",icon:"ltr",onAction:()=>t.execCommand("mceDirectionLTR"),onSetup:C(t,"ltr")}),t.ui.registry.addToggleButton("rtl",{tooltip:"Right to left",icon:"rtl",onAction:()=>t.execCommand("mceDirectionRTL"),onSetup:C(t,"rtl")})})(t)}))}();
|
||||||
File diff suppressed because one or more lines are too long
3
apps/web-ele/public/tinymce/plugins/emoticons/js/emojiimages.min.js
vendored
Normal file
3
apps/web-ele/public/tinymce/plugins/emoticons/js/emojiimages.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
apps/web-ele/public/tinymce/plugins/emoticons/js/emojis.min.js
vendored
Normal file
2
apps/web-ele/public/tinymce/plugins/emoticons/js/emojis.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
4
apps/web-ele/public/tinymce/plugins/emoticons/plugin.min.js
vendored
Normal file
4
apps/web-ele/public/tinymce/plugins/emoticons/plugin.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
4
apps/web-ele/public/tinymce/plugins/fullscreen/plugin.min.js
vendored
Normal file
4
apps/web-ele/public/tinymce/plugins/fullscreen/plugin.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.ar',
|
||||||
|
'<h1>بدء التنقل بواسطة لوحة المفاتيح</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>التركيز على شريط القوائم</dt>\n' +
|
||||||
|
' <dd>نظاما التشغيل Windows أو Linux: Alt + F9</dd>\n' +
|
||||||
|
' <dd>نظام التشغيل macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>التركيز على شريط الأدوات</dt>\n' +
|
||||||
|
' <dd>نظاما التشغيل Windows أو Linux: Alt + F10</dd>\n' +
|
||||||
|
' <dd>نظام التشغيل macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>التركيز على التذييل</dt>\n' +
|
||||||
|
' <dd>نظاما التشغيل Windows أو Linux: Alt + F11</dd>\n' +
|
||||||
|
' <dd>نظام التشغيل macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>تركيز الإشعارات</dt>\n' +
|
||||||
|
' <dd>نظاما التشغيل Windows أو Linux: Alt + F12</dd>\n' +
|
||||||
|
' <dd>نظام التشغيل macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>التركيز على شريط أدوات السياق</dt>\n' +
|
||||||
|
' <dd>أنظمة التشغيل Windows أو Linux أو macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>سيبدأ التنقل عند عنصر واجهة المستخدم الأول، والذي سيتم تمييزه أو تسطيره في حالة العنصر الأول في\n' +
|
||||||
|
' مسار عنصر التذييل.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>التنقل بين أقسام واجهة المستخدم</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>للانتقال من أحد أقسام واجهة المستخدم إلى القسم التالي، اضغط على <strong>Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>للانتقال من أحد أقسام واجهة المستخدم إلى القسم السابق، اضغط على <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>ترتيب علامات <strong>Tab</strong> لأقسام واجهة المستخدم هذه هو:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>شريط القوائم</li>\n' +
|
||||||
|
' <li>كل مجموعة شريط الأدوات</li>\n' +
|
||||||
|
' <li>الشريط الجانبي</li>\n' +
|
||||||
|
' <li>مسار العنصر في التذييل</li>\n' +
|
||||||
|
' <li>زر تبديل عدد الكلمات في التذييل</li>\n' +
|
||||||
|
' <li>رابط إدراج العلامة التجارية في التذييل</li>\n' +
|
||||||
|
' <li>مؤشر تغيير حجم المحرر في التذييل</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>إذا لم يكن قسم واجهة المستخدم موجودًا، فسيتم تخطيه.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>إذا كان التذييل يحتوي على التركيز على التنقل بواسطة لوحة المفاتيح، ولا يوجد شريط جانبي مرئي، فإن الضغط على <strong>Shift+Tab</strong>\n' +
|
||||||
|
' ينقل التركيز إلى مجموعة شريط الأدوات الأولى، وليس الأخيرة.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>التنقل بين أقسام واجهة المستخدم</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>للانتقال من أحد عناصر واجهة المستخدم إلى العنصر التالي، اضغط على مفتاح <strong>السهم</strong> المناسب.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>مفتاحا السهمين <strong>اليسار</strong> و<strong>اليمين</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>التنقل بين القوائم في شريط القوائم.</li>\n' +
|
||||||
|
' <li>فتح قائمة فرعية في القائمة.</li>\n' +
|
||||||
|
' <li>التنقل بين الأزرار في مجموعة شريط الأدوات.</li>\n' +
|
||||||
|
' <li>التنقل بين العناصر في مسار عنصر التذييل.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>مفتاحا السهمين <strong>لأسفل</strong> و<strong>لأعلى</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>التنقل بين عناصر القائمة في القائمة.</li>\n' +
|
||||||
|
' <li>التنقل بين العناصر في قائمة شريط الأدوات المنبثقة.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>دورة مفاتيح <strong>الأسهم</strong> داخل قسم واجهة المستخدم التي تم التركيز عليها.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>لإغلاق قائمة مفتوحة أو قائمة فرعية مفتوحة أو قائمة منبثقة مفتوحة، اضغط على مفتاح <strong>Esc</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>إذا كان التركيز الحالي على "الجزء العلوي" من قسم معين لواجهة المستخدم، فإن الضغط على مفتاح <strong>Esc</strong> يؤدي أيضًا إلى الخروج\n' +
|
||||||
|
' من التنقل بواسطة لوحة المفاتيح بالكامل.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>تنفيذ عنصر قائمة أو زر شريط أدوات</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>عندما يتم تمييز عنصر القائمة المطلوب أو زر شريط الأدوات، اضغط على زر <strong>Return</strong>، أو <strong>Enter</strong>،\n' +
|
||||||
|
' أو <strong>مفتاح المسافة</strong> لتنفيذ العنصر.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>التنقل في مربعات الحوار غير المبوبة</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>في مربعات الحوار غير المبوبة، يتم التركيز على المكون التفاعلي الأول عند فتح مربع الحوار.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>التنقل بين مكونات الحوار التفاعلي بالضغط على زر <strong>Tab</strong> أو <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>التنقل في مربعات الحوار المبوبة</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>في مربعات الحوار المبوبة، يتم التركيز على الزر الأول في قائمة علامات التبويب عند فتح مربع الحوار.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>التنقل بين المكونات التفاعلية لعلامة التبويب لمربع الحوار هذه بالضغط على زر <strong>Tab</strong> أو\n' +
|
||||||
|
' <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>التبديل إلى علامة تبويب أخرى لمربع الحوار من خلال التركيز على قائمة علامة التبويب ثم الضغط على زر <strong>السهم</strong> المناسب\n' +
|
||||||
|
' مفتاح للتنقل بين علامات التبويب المتاحة.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.bg_BG',
|
||||||
|
'<h1>Начало на навигацията с клавиатурата</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Фокусиране върху лентата с менюта</dt>\n' +
|
||||||
|
' <dd>Windows или Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Фокусиране върху лентата с инструменти</dt>\n' +
|
||||||
|
' <dd>Windows или Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Фокусиране върху долния колонтитул</dt>\n' +
|
||||||
|
' <dd>Windows или Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Фокусиране на известието</dt>\n' +
|
||||||
|
' <dd>Windows или Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Фокусиране върху контекстуалната лента с инструменти</dt>\n' +
|
||||||
|
' <dd>Windows, Linux или macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Навигацията ще започне с първия елемент на ПИ, който ще бъде маркиран или подчертан в случая на първия елемент в\n' +
|
||||||
|
' пътя до елемента в долния колонтитул.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Навигиране между раздели на ПИ</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>За да преминете от един раздел на ПИ към следващия, натиснете <strong>Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>За да преминете от един раздел на ПИ към предишния, натиснете <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Редът за <strong>обхождане с табулация</strong> на тези раздели на ПИ е:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Лентата с менюта</li>\n' +
|
||||||
|
' <li>Всяка група на лентата с инструменти</li>\n' +
|
||||||
|
' <li>Страничната лента</li>\n' +
|
||||||
|
' <li>Пътят до елемента в долния колонтитул</li>\n' +
|
||||||
|
' <li>Бутонът за превключване на броя на думите в долния колонтитул</li>\n' +
|
||||||
|
' <li>Връзката за търговска марка в долния колонтитул</li>\n' +
|
||||||
|
' <li>Манипулаторът за преоразмеряване на редактора в долния колонтитул</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Ако някой раздел на ПИ липсва, той се пропуска.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Ако долният колонтитул има фокус за навигация с клавиатурата и няма странична лента, натискането на <strong>Shift+Tab</strong>\n' +
|
||||||
|
' премества фокуса към първата група на лентата с инструменти, а не към последната.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Навигиране в разделите на ПИ</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>За да преминете от един елемент на ПИ към следващия, натиснете съответния клавиш със <strong>стрелка</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>С клавишите със стрелка <strong>наляво</strong> и <strong>надясно</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>се придвижвате между менютата в лентата с менюто;</li>\n' +
|
||||||
|
' <li>отваряте подменю в меню;</li>\n' +
|
||||||
|
' <li>се придвижвате между бутоните в група на лентата с инструменти;</li>\n' +
|
||||||
|
' <li>се придвижвате между елементи в пътя до елемент в долния колонтитул.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>С клавишите със стрелка <strong>надолу</strong> и <strong>нагоре</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>се придвижвате между елементите от менюто в дадено меню;</li>\n' +
|
||||||
|
' <li>се придвижвате между елементите в изскачащо меню на лентата с инструменти.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Клавишите със <strong>стрелки</strong> се придвижват в рамките на фокусирания раздел на ПИ.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>За да затворите отворено меню, подменю или изскачащо меню, натиснете клавиша <strong>Esc</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Ако текущият фокус е върху „горната част“ на конкретен раздел на ПИ, натискането на клавиша <strong>Esc</strong> също излиза\n' +
|
||||||
|
' напълно от навигацията с клавиатурата.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Изпълнение на елемент от менюто или бутон от лентата с инструменти</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Когато желаният елемент от менюто или бутон от лентата с инструменти е маркиран, натиснете <strong>Return</strong>, <strong>Enter</strong>\n' +
|
||||||
|
' или <strong>клавиша за интервал</strong>, за да изпълните елемента.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Навигиране в диалогови прозорци без раздели</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>В диалоговите прозорци без раздели първият интерактивен компонент се фокусира, когато се отвори диалоговият прозорец.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Навигирайте между интерактивните компоненти на диалоговия прозорец, като натиснете <strong>Tab</strong> или <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Навигиране в диалогови прозорци с раздели</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>В диалоговите прозорци с раздели първият бутон в менюто с раздели се фокусира, когато се отвори диалоговият прозорец.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Навигирайте между интерактивните компоненти на този диалогов раздел, като натиснете <strong>Tab</strong> или\n' +
|
||||||
|
' <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Превключете към друг диалогов раздел, като фокусирате върху менюто с раздели и след това натиснете съответния клавиш със <strong>стрелка</strong>,\n' +
|
||||||
|
' за да преминете през наличните раздели.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.ca',
|
||||||
|
'<h1>Inici de la navegació amb el teclat</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Enfocar la barra de menús</dt>\n' +
|
||||||
|
' <dd>Windows o Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
" <dt>Enfocar la barra d'eines</dt>\n" +
|
||||||
|
' <dd>Windows o Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Enfocar el peu de pàgina</dt>\n' +
|
||||||
|
' <dd>Windows o Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Enfocar la notificació</dt>\n' +
|
||||||
|
' <dd>Windows o Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
" <dt>Enfocar una barra d'eines contextual</dt>\n" +
|
||||||
|
' <dd>Windows, Linux o macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>La navegació començarà en el primer element de la interfície d'usuari, que es ressaltarà o subratllarà per al primer element a\n" +
|
||||||
|
" la ruta de l'element de peu de pàgina.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
"<h1>Navegació entre seccions de la interfície d'usuari</h1>\n" +
|
||||||
|
'\n' +
|
||||||
|
"<p>Per desplaçar-vos des d'una secció de la interfície d'usuari a la següent, premeu la tecla <strong>Tab</strong>.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
"<p>Per desplaçar-vos des d'una secció de la interfície d'usuari a l'anterior, premeu les tecles <strong>Maj+Tab</strong>.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
"<p>L'ordre en prémer la tecla <strong>Tab</strong> d'aquestes secciones de la interfície d'usuari és:</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Barra de menús</li>\n' +
|
||||||
|
" <li>Cada grup de la barra d'eines</li>\n" +
|
||||||
|
' <li>Barra lateral</li>\n' +
|
||||||
|
" <li>Ruta de l'element del peu de pàgina</li>\n" +
|
||||||
|
' <li>Botó de commutació de recompte de paraules al peu de pàgina</li>\n' +
|
||||||
|
' <li>Enllaç de marca del peu de pàgina</li>\n' +
|
||||||
|
" <li>Control de canvi de mida de l'editor al peu de pàgina</li>\n" +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>Si no hi ha una secció de la interfície d'usuari, s'ometrà.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
'<p>Si el peu de pàgina té el focus de navegació del teclat i no hi ha cap barra lateral visible, en prémer <strong>Maj+Tab</strong>\n' +
|
||||||
|
" el focus es mou al primer grup de la barra d'eines, no l'últim.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
"<h1>Navegació dins de les seccions de la interfície d'usuari</h1>\n" +
|
||||||
|
'\n' +
|
||||||
|
"<p>Per desplaçar-vos des d'un element de la interfície d'usuari al següent, premeu la tecla de <strong>Fletxa</strong> adequada.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
'<p>Les tecles de fletxa <strong>Esquerra</strong> i <strong>Dreta</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>us permeten desplaçar-vos entre menús de la barra de menús.</li>\n' +
|
||||||
|
' <li>obren un submenú en un menú.</li>\n' +
|
||||||
|
" <li>us permeten desplaçar-vos entre botons d'un grup de la barra d'eines.</li>\n" +
|
||||||
|
" <li>us permeten desplaçar-vos entre elements de la ruta d'elements del peu de pàgina.</li>\n" +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Les tecles de fletxa <strong>Avall</strong> i <strong>Amunt</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
" <li>us permeten desplaçar-vos entre elements de menú d'un menú.</li>\n" +
|
||||||
|
" <li>us permeten desplaçar-vos entre elements d'un menú emergent de la barra d'eines.</li>\n" +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>Les tecles de <strong>Fletxa</strong> us permeten desplaçar-vos dins de la secció de la interfície d'usuari que té el focus.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
'<p>Per tancar un menú, un submenú o un menú emergent oberts, premeu la tecla <strong>Esc</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>Si el focus actual es troba a la ‘part superior’ d'una secció específica de la interfície d'usuari, en prémer la tecla <strong>Esc</strong> també es tanca\n" +
|
||||||
|
' completament la navegació amb el teclat.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<h1>Execució d'un element de menú o d'un botó de la barra d'eines</h1>\n" +
|
||||||
|
'\n' +
|
||||||
|
"<p>Quan l'element del menú o el botó de la barra d'eines que desitgeu estigui ressaltat, premeu <strong>Retorn</strong>, <strong>Intro</strong>\n" +
|
||||||
|
" o la <strong>barra d'espai</strong> per executar l'element.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navegació per quadres de diàleg sense pestanyes</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>En els quadres de diàleg sense pestanyes, el primer component interactiu pren el focus quan s'obre el quadre diàleg.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
'<p>Premeu la tecla <strong>Tab</strong> o les tecles <strong>Maj+Tab</strong> per desplaçar-vos entre components interactius del quadre de diàleg.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navegació per quadres de diàleg amb pestanyes</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>En els quadres de diàleg amb pestanyes, el primer botó del menú de la pestanya pren el focus quan s'obre el quadre diàleg.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
"<p>Per desplaçar-vos entre components interactius d'aquest quadre de diàleg, premeu la tecla <strong>Tab</strong> o\n" +
|
||||||
|
' les tecles <strong>Maj+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>Canvieu a la pestanya d'un altre quadre de diàleg, tot enfocant el menú de la pestanya, i després premeu la tecla <strong>Fletxa</strong> adequada\n" +
|
||||||
|
' per canviar entre les pestanyes disponibles.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.cs',
|
||||||
|
'<h1>Začínáme navigovat pomocí klávesnice</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Přejít na řádek nabídek</dt>\n' +
|
||||||
|
' <dd>Windows nebo Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Přejít na panel nástrojů</dt>\n' +
|
||||||
|
' <dd>Windows nebo Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Přejít na zápatí</dt>\n' +
|
||||||
|
' <dd>Windows nebo Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Přejít na oznámení</dt>\n' +
|
||||||
|
' <dd>Windows nebo Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Přejít na kontextový panel nástrojů</dt>\n' +
|
||||||
|
' <dd>Windows, Linux nebo macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navigace začne u první položky uživatelského rozhraní, která bude zvýrazněna nebo v případě první položky\n' +
|
||||||
|
' cesty k prvku zápatí podtržena.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigace mezi oddíly uživatelského rozhraní</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Stisknutím klávesy <strong>Tab</strong> se posunete z jednoho oddílu uživatelského rozhraní na další.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Stisknutím kláves <strong>Shift+Tab</strong> se posunete z jednoho oddílu uživatelského rozhraní na předchozí.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Pořadí přepínání mezi oddíly uživatelského rozhraní pomocí klávesy <strong>Tab</strong>:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Řádek nabídek</li>\n' +
|
||||||
|
' <li>Každá skupina panelu nástrojů</li>\n' +
|
||||||
|
' <li>Boční panel</li>\n' +
|
||||||
|
' <li>Cesta k prvku v zápatí.</li>\n' +
|
||||||
|
' <li>Tlačítko přepínače počtu slov v zápatí</li>\n' +
|
||||||
|
' <li>Odkaz na informace o značce v zápatí</li>\n' +
|
||||||
|
' <li>Úchyt pro změnu velikosti editoru v zápatí</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Pokud nějaký oddíl uživatelského rozhraní není přítomen, je přeskočen.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Pokud je zápatí vybrané pro navigaci pomocí klávesnice a není zobrazen žádný boční panel, stisknutím kláves <strong>Shift+Tab</strong>\n' +
|
||||||
|
' přejdete na první skupinu panelu nástrojů, nikoli na poslední.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigace v rámci oddílů uživatelského rozhraní</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Chcete-li se přesunout z jednoho prvku uživatelského rozhraní na další, stiskněte příslušnou klávesu s <strong>šipkou</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Klávesy s šipkou <strong>vlevo</strong> a <strong>vpravo</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>umožňují přesun mezi nabídkami na řádku nabídek;</li>\n' +
|
||||||
|
' <li>otevírají podnabídku nabídky;</li>\n' +
|
||||||
|
' <li>umožňují přesun mezi tlačítky ve skupině panelu nástrojů;</li>\n' +
|
||||||
|
' <li>umožňují přesun mezi položkami cesty prvku v zápatí.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Klávesy se šipkou <strong>dolů</strong> a <strong>nahoru</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>umožňují přesun mezi položkami nabídky;</li>\n' +
|
||||||
|
' <li>umožňují přesun mezi položkami místní nabídky panelu nástrojů.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>Šipky</strong> provádí přepínání v rámci vybraného oddílu uživatelského rozhraní.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Chcete-li zavřít otevřenou nabídku, podnabídku nebo místní nabídku, stiskněte klávesu <strong>Esc</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Pokud je aktuálně vybrána horní část oddílu uživatelského rozhraní, stisknutím klávesy <strong>Esc</strong> zcela ukončíte také\n' +
|
||||||
|
' navigaci pomocí klávesnice.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Provedení příkazu položky nabídky nebo tlačítka panelu nástrojů</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Pokud je zvýrazněna požadovaná položka nabídky nebo tlačítko panelu nástrojů, stisknutím klávesy <strong>Return</strong>, <strong>Enter</strong>\n' +
|
||||||
|
' nebo <strong>mezerníku</strong> provedete příslušný příkaz.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigace v dialogových oknech bez záložek</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Při otevření dialogových oken bez záložek přejdete na první interaktivní komponentu.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Přecházet mezi interaktivními komponentami dialogového okna můžete stisknutím klávesy <strong>Tab</strong> nebo kombinace <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigace v dialogových oknech se záložkami</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Při otevření dialogových oken se záložkami přejdete na první tlačítko v nabídce záložek.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Přecházet mezi interaktivními komponentami této záložky dialogového okna můžete stisknutím klávesy <strong>Tab</strong> nebo\n' +
|
||||||
|
' kombinace <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Chcete-li přepnout na další záložku dialogového okna, přejděte na nabídku záložek a poté můžete stisknutím požadované <strong>šipky</strong>\n' +
|
||||||
|
' přepínat mezi dostupnými záložkami.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.da',
|
||||||
|
'<h1>Start tastaturnavigation</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Fokuser på menulinjen</dt>\n' +
|
||||||
|
' <dd>Windows eller Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Fokuser på værktøjslinjen</dt>\n' +
|
||||||
|
' <dd>Windows eller Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Fokuser på sidefoden</dt>\n' +
|
||||||
|
' <dd>Windows eller Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Fokuser på meddelelsen</dt>\n' +
|
||||||
|
' <dd>Windows eller Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Fokuser på kontekstuel værktøjslinje</dt>\n' +
|
||||||
|
' <dd>Windows, Linux eller macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navigationen starter ved det første UI-element, som fremhæves eller understreges hvad angår det første element i\n' +
|
||||||
|
' sidefodens sti til elementet.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Naviger mellem UI-sektioner</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Gå fra én UI-sektion til den næste ved at trykke på <strong>Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Gå fra én UI-sektion til den forrige ved at trykke på <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>Tab</strong>-rækkefølgen af disse UI-sektioner er:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Menulinje</li>\n' +
|
||||||
|
' <li>Hver værktøjsgruppe</li>\n' +
|
||||||
|
' <li>Sidepanel</li>\n' +
|
||||||
|
' <li>Sti til elementet i sidefoden</li>\n' +
|
||||||
|
' <li>Til/fra-knap for ordoptælling i sidefoden</li>\n' +
|
||||||
|
' <li>Brandinglink i sidefoden</li>\n' +
|
||||||
|
' <li>Tilpasningshåndtag for editor i sidefoden</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Hvis en UI-sektion ikke er til stede, springes den over.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Hvis sidefoden har fokus til tastaturnavigation, og der ikke er noget synligt sidepanel, kan der trykkes på <strong>Shift+Tab</strong>\n' +
|
||||||
|
' for at flytte fokus til den første værktøjsgruppe, ikke den sidste.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Naviger inden for UI-sektioner</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Gå fra ét UI-element til det næste ved at trykke på den relevante <strong>piletast</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>Venstre</strong> og <strong>højre</strong> piletast</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>flytter mellem menuerne i menulinjen.</li>\n' +
|
||||||
|
' <li>åbner en undermenu i en menu.</li>\n' +
|
||||||
|
' <li>flytter mellem knapperne i en værktøjsgruppe.</li>\n' +
|
||||||
|
' <li>flytter mellem elementer i sidefodens sti til elementet.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Pil <strong>ned</strong> og <strong>op</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>flytter mellem menupunkterne i en menu.</li>\n' +
|
||||||
|
' <li>flytter mellem punkterne i en genvejsmenu i værktøjslinjen.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>Piletasterne</strong> kører rundt inden for UI-sektionen, der fokuseres på.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>For at lukke en åben menu, en åben undermenu eller en åben genvejsmenu trykkes der på <strong>Esc</strong>-tasten.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>Hvis det aktuelle fokus er i 'toppen' af en bestemt UI-sektion, vil tryk på <strong>Esc</strong>-tasten også afslutte\n" +
|
||||||
|
' tastaturnavigationen helt.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Udfør et menupunkt eller en værktøjslinjeknap</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Når det ønskede menupunkt eller den ønskede værktøjslinjeknap er fremhævet, trykkes der på <strong>Retur</strong>, <strong>Enter</strong>\n' +
|
||||||
|
' eller <strong>mellemrumstasten</strong> for at udføre elementet.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Naviger i ikke-faneopdelte dialogbokse</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>I ikke-faneopdelte dialogbokse får den første interaktive komponent fokus, når dialogboksen åbnes.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Naviger mellem interaktive dialogbokskomponenter ved at trykke på <strong>Tab</strong> eller <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Naviger i faneopdelte dialogbokse</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>I faneopdelte dialogbokse får den første knap i fanemenuen fokus, når dialogboksen åbnes.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Naviger mellem interaktive komponenter i denne dialogboksfane ved at trykke på <strong>Tab</strong> eller\n' +
|
||||||
|
' <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Skift til en anden dialogboksfane ved at fokusere på fanemenuen og derefter trykke på den relevante <strong>piletast</strong>\n' +
|
||||||
|
' for at køre igennem de tilgængelige faner.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.de',
|
||||||
|
'<h1>Grundlagen der Tastaturnavigation</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Fokus auf Menüleiste</dt>\n' +
|
||||||
|
' <dd>Windows oder Linux: ALT+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Fokus auf Symbolleiste</dt>\n' +
|
||||||
|
' <dd>Windows oder Linux: ALT+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Fokus auf Fußzeile</dt>\n' +
|
||||||
|
' <dd>Windows oder Linux: ALT+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Benachrichtigung fokussieren</dt>\n' +
|
||||||
|
' <dd>Windows oder Linux: ALT+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Fokus auf kontextbezogene Symbolleiste</dt>\n' +
|
||||||
|
' <dd>Windows, Linux oder macOS: STRG+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Die Navigation beginnt beim ersten Benutzeroberflächenelement, welches hervorgehoben ist. Falls sich das erste Element im Pfad der Fußzeile befindet,\n' +
|
||||||
|
' ist es unterstrichen.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Zwischen Abschnitten der Benutzeroberfläche navigieren</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Um von einem Abschnitt der Benutzeroberfläche zum nächsten zu wechseln, drücken Sie <strong>TAB</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Um von einem Abschnitt der Benutzeroberfläche zum vorherigen zu wechseln, drücken Sie <strong>UMSCHALT+TAB</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Die Abschnitte der Benutzeroberfläche haben folgende <strong>TAB</strong>-Reihenfolge:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Menüleiste</li>\n' +
|
||||||
|
' <li>Einzelne Gruppen der Symbolleiste</li>\n' +
|
||||||
|
' <li>Randleiste</li>\n' +
|
||||||
|
' <li>Elementpfad in der Fußzeile</li>\n' +
|
||||||
|
' <li>Umschaltfläche „Wörter zählen“ in der Fußzeile</li>\n' +
|
||||||
|
' <li>Branding-Link in der Fußzeile</li>\n' +
|
||||||
|
' <li>Editor-Ziehpunkt zur Größenänderung in der Fußzeile</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Falls ein Abschnitt der Benutzeroberflächen nicht vorhanden ist, wird er übersprungen.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Wenn in der Fußzeile die Tastaturnavigation fokussiert ist und keine Randleiste angezeigt wird, wechselt der Fokus durch Drücken von <strong>UMSCHALT+TAB</strong>\n' +
|
||||||
|
' zur ersten Gruppe der Symbolleiste, nicht zur letzten.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Innerhalb von Abschnitten der Benutzeroberfläche navigieren</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Um von einem Element der Benutzeroberfläche zum nächsten zu wechseln, drücken Sie die entsprechende <strong>Pfeiltaste</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Die Pfeiltasten <strong>Links</strong> und <strong>Rechts</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>wechseln zwischen Menüs in der Menüleiste.</li>\n' +
|
||||||
|
' <li>öffnen das Untermenü eines Menüs.</li>\n' +
|
||||||
|
' <li>wechseln zwischen Schaltflächen in einer Gruppe der Symbolleiste.</li>\n' +
|
||||||
|
' <li>wechseln zwischen Elementen im Elementpfad der Fußzeile.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Die Pfeiltasten <strong>Abwärts</strong> und <strong>Aufwärts</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>wechseln zwischen Menüelementen in einem Menü.</li>\n' +
|
||||||
|
' <li>wechseln zwischen Elementen in einem Popupmenü der Symbolleiste.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Die <strong>Pfeiltasten</strong> rotieren innerhalb des fokussierten Abschnitts der Benutzeroberfläche.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Um ein geöffnetes Menü, ein geöffnetes Untermenü oder ein geöffnetes Popupmenü zu schließen, drücken Sie die <strong>ESC</strong>-Taste.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Wenn sich der aktuelle Fokus ganz oben in einem bestimmten Abschnitt der Benutzeroberfläche befindet, wird durch Drücken der <strong>ESC</strong>-Taste auch\n' +
|
||||||
|
' die Tastaturnavigation beendet.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Ein Menüelement oder eine Symbolleistenschaltfläche ausführen</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Wenn das gewünschte Menüelement oder die gewünschte Symbolleistenschaltfläche hervorgehoben ist, drücken Sie <strong>Zurück</strong>, <strong>Eingabe</strong>\n' +
|
||||||
|
' oder die <strong>Leertaste</strong>, um das Element auszuführen.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>In Dialogfeldern ohne Registerkarten navigieren</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>In Dialogfeldern ohne Registerkarten ist beim Öffnen eines Dialogfelds die erste interaktive Komponente fokussiert.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navigieren Sie zwischen den interaktiven Komponenten eines Dialogfelds, indem Sie <strong>TAB</strong> oder <strong>UMSCHALT+TAB</strong> drücken.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>In Dialogfeldern mit Registerkarten navigieren</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>In Dialogfeldern mit Registerkarten ist beim Öffnen eines Dialogfelds die erste Schaltfläche eines Registerkartenmenüs fokussiert.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navigieren Sie zwischen den interaktiven Komponenten auf dieser Registerkarte des Dialogfelds, indem Sie <strong>TAB</strong> oder\n' +
|
||||||
|
' <strong>UMSCHALT+TAB</strong> drücken.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Wechseln Sie zu einer anderen Registerkarte des Dialogfelds, indem Sie den Fokus auf das Registerkartenmenü legen und dann die entsprechende <strong>Pfeiltaste</strong>\n' +
|
||||||
|
' drücken, um durch die verfügbaren Registerkarten zu rotieren.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.el',
|
||||||
|
'<h1>Έναρξη πλοήγησης μέσω πληκτρολογίου</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Εστίαση στη γραμμή μενού</dt>\n' +
|
||||||
|
' <dd>Windows ή Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Εστίαση στη γραμμή εργαλείων</dt>\n' +
|
||||||
|
' <dd>Windows ή Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Εστίαση στο υποσέλιδο</dt>\n' +
|
||||||
|
' <dd>Windows ή Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Εστίαση στην ειδοποίηση</dt>\n' +
|
||||||
|
' <dd>Windows ή Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Εστίαση σε γραμμή εργαλείων βάσει περιεχομένου</dt>\n' +
|
||||||
|
' <dd>Windows, Linux ή macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Η πλοήγηση θα ξεκινήσει από το πρώτο στοιχείο περιβάλλοντος χρήστη, που θα επισημαίνεται ή θα είναι υπογραμμισμένο,\n' +
|
||||||
|
' όπως στην περίπτωση της διαδρομής του στοιχείου Υποσέλιδου.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Πλοήγηση μεταξύ ενοτήτων του περιβάλλοντος χρήστη</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Για να μετακινηθείτε από μια ενότητα περιβάλλοντος χρήστη στην επόμενη, πιέστε το πλήκτρο <strong>Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Για να μετακινηθείτε από μια ενότητα περιβάλλοντος χρήστη στην προηγούμενη, πιέστε τα πλήκτρα <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Η σειρά <strong>Tab</strong> αυτών των ενοτήτων περιβάλλοντος χρήστη είναι η εξής:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Γραμμή μενού</li>\n' +
|
||||||
|
' <li>Κάθε ομάδα γραμμής εργαλείων</li>\n' +
|
||||||
|
' <li>Πλαϊνή γραμμή</li>\n' +
|
||||||
|
' <li>Διαδρομή στοιχείου στο υποσέλιδο</li>\n' +
|
||||||
|
' <li>Κουμπί εναλλαγής μέτρησης λέξεων στο υποσέλιδο</li>\n' +
|
||||||
|
' <li>Σύνδεσμος επωνυμίας στο υποσέλιδο</li>\n' +
|
||||||
|
' <li>Λαβή αλλαγής μεγέθους προγράμματος επεξεργασίας στο υποσέλιδο</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Εάν δεν εμφανίζεται ενότητα περιβάλλοντος χρήστη, παραλείπεται.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Εάν η εστίαση πλοήγησης βρίσκεται στο πληκτρολόγιο και δεν υπάρχει εμφανής πλαϊνή γραμμή, εάν πιέσετε <strong>Shift+Tab</strong>\n' +
|
||||||
|
' η εστίαση μετακινείται στην πρώτη ομάδα γραμμής εργαλείων, όχι στην τελευταία.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Πλοήγηση εντός των ενοτήτων του περιβάλλοντος χρήστη</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Για να μετακινηθείτε από ένα στοιχείο περιβάλλοντος χρήστη στο επόμενο, πιέστε το αντίστοιχο πλήκτρο <strong>βέλους</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Με τα πλήκτρα <strong>αριστερού</strong> και <strong>δεξιού</strong> βέλους</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>γίνεται μετακίνηση μεταξύ των μενού στη γραμμή μενού.</li>\n' +
|
||||||
|
' <li>ανοίγει ένα υπομενού σε ένα μενού.</li>\n' +
|
||||||
|
' <li>γίνεται μετακίνηση μεταξύ κουμπιών σε μια ομάδα γραμμής εργαλείων.</li>\n' +
|
||||||
|
' <li>γίνεται μετακίνηση μεταξύ στοιχείων στη διαδρομή στοιχείου στο υποσέλιδο.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Με τα πλήκτρα <strong>επάνω</strong> και <strong>κάτω</strong> βέλους</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>γίνεται μετακίνηση μεταξύ των στοιχείων μενού σε ένα μενού.</li>\n' +
|
||||||
|
' <li>γίνεται μετακίνηση μεταξύ των στοιχείων μενού σε ένα αναδυόμενο μενού γραμμής εργαλείων.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Με τα πλήκτρα <strong>βέλους</strong> γίνεται κυκλική μετακίνηση εντός της εστιασμένης ενότητας περιβάλλοντος χρήστη.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Για να κλείσετε ένα ανοιχτό μενού, ένα ανοιχτό υπομενού ή ένα ανοιχτό αναδυόμενο μενού, πιέστε το πλήκτρο <strong>Esc</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Εάν η τρέχουσα εστίαση βρίσκεται στην κορυφή μιας ενότητας περιβάλλοντος χρήστη, πιέζοντας το πλήκτρο <strong>Esc</strong>,\n' +
|
||||||
|
' γίνεται επίσης πλήρης έξοδος από την πλοήγηση μέσω πληκτρολογίου.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Εκτέλεση ενός στοιχείου μενού ή κουμπιού γραμμής εργαλείων</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Όταν το επιθυμητό στοιχείο μενού ή κουμπί γραμμής εργαλείων είναι επισημασμένο, πιέστε τα πλήκτρα <strong>Return</strong>, <strong>Enter</strong>,\n' +
|
||||||
|
' ή το <strong>πλήκτρο διαστήματος</strong> για να εκτελέσετε το στοιχείο.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Πλοήγηση σε παράθυρα διαλόγου χωρίς καρτέλες</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Σε παράθυρα διαλόγου χωρίς καρτέλες, το πρώτο αλληλεπιδραστικό στοιχείο λαμβάνει την εστίαση όταν ανοίγει το παράθυρο διαλόγου.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Μπορείτε να πλοηγηθείτε μεταξύ των αλληλεπιδραστικών στοιχείων παραθύρων διαλόγων πιέζοντας τα πλήκτρα <strong>Tab</strong> ή <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Πλοήγηση σε παράθυρα διαλόγου με καρτέλες</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Σε παράθυρα διαλόγου με καρτέλες, το πρώτο κουμπί στο μενού καρτέλας λαμβάνει την εστίαση όταν ανοίγει το παράθυρο διαλόγου.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Μπορείτε να πλοηγηθείτε μεταξύ των αλληλεπιδραστικών στοιχείων αυτής της καρτέλα διαλόγου πιέζοντας τα πλήκτρα <strong>Tab</strong> ή\n' +
|
||||||
|
' <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Μπορείτε να κάνετε εναλλαγή σε άλλη καρτέλα του παραθύρου διαλόγου, μεταφέροντας την εστίαση στο μενού καρτέλας και πιέζοντας το κατάλληλο πλήκτρο <strong>βέλους</strong>\n' +
|
||||||
|
' για να μετακινηθείτε κυκλικά στις διαθέσιμες καρτέλες.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.en',
|
||||||
|
'<h1>Begin keyboard navigation</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Focus the Menu bar</dt>\n' +
|
||||||
|
' <dd>Windows or Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Focus the Toolbar</dt>\n' +
|
||||||
|
' <dd>Windows or Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Focus the footer</dt>\n' +
|
||||||
|
' <dd>Windows or Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Focus the notification</dt>\n' +
|
||||||
|
' <dd>Windows or Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Focus a contextual toolbar</dt>\n' +
|
||||||
|
' <dd>Windows, Linux or macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navigation will start at the first UI item, which will be highlighted, or underlined in the case of the first item in\n' +
|
||||||
|
' the Footer element path.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigate between UI sections</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>To move from one UI section to the next, press <strong>Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>To move from one UI section to the previous, press <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>The <strong>Tab</strong> order of these UI sections is:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Menu bar</li>\n' +
|
||||||
|
' <li>Each toolbar group</li>\n' +
|
||||||
|
' <li>Sidebar</li>\n' +
|
||||||
|
' <li>Element path in the footer</li>\n' +
|
||||||
|
' <li>Word count toggle button in the footer</li>\n' +
|
||||||
|
' <li>Branding link in the footer</li>\n' +
|
||||||
|
' <li>Editor resize handle in the footer</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>If a UI section is not present, it is skipped.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>If the footer has keyboard navigation focus, and there is no visible sidebar, pressing <strong>Shift+Tab</strong>\n' +
|
||||||
|
' moves focus to the first toolbar group, not the last.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigate within UI sections</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>To move from one UI element to the next, press the appropriate <strong>Arrow</strong> key.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>The <strong>Left</strong> and <strong>Right</strong> arrow keys</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>move between menus in the menu bar.</li>\n' +
|
||||||
|
' <li>open a sub-menu in a menu.</li>\n' +
|
||||||
|
' <li>move between buttons in a toolbar group.</li>\n' +
|
||||||
|
' <li>move between items in the footer’s element path.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>The <strong>Down</strong> and <strong>Up</strong> arrow keys</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>move between menu items in a menu.</li>\n' +
|
||||||
|
' <li>move between items in a toolbar pop-up menu.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>Arrow</strong> keys cycle within the focused UI section.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>To close an open menu, an open sub-menu, or an open pop-up menu, press the <strong>Esc</strong> key.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>If the current focus is at the ‘top’ of a particular UI section, pressing the <strong>Esc</strong> key also exits\n' +
|
||||||
|
' keyboard navigation entirely.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Execute a menu item or toolbar button</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>When the desired menu item or toolbar button is highlighted, press <strong>Return</strong>, <strong>Enter</strong>,\n' +
|
||||||
|
' or the <strong>Space bar</strong> to execute the item.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigate non-tabbed dialogs</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>In non-tabbed dialogs, the first interactive component takes focus when the dialog opens.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navigate between interactive dialog components by pressing <strong>Tab</strong> or <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigate tabbed dialogs</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>In tabbed dialogs, the first button in the tab menu takes focus when the dialog opens.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navigate between interactive components of this dialog tab by pressing <strong>Tab</strong> or\n' +
|
||||||
|
' <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Switch to another dialog tab by giving the tab menu focus and then pressing the appropriate <strong>Arrow</strong>\n' +
|
||||||
|
' key to cycle through the available tabs.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.es',
|
||||||
|
'<h1>Iniciar la navegación con el teclado</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Enfocar la barra de menús</dt>\n' +
|
||||||
|
' <dd>Windows o Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Enfocar la barra de herramientas</dt>\n' +
|
||||||
|
' <dd>Windows o Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Enfocar el pie de página</dt>\n' +
|
||||||
|
' <dd>Windows o Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Enfocar la notificación</dt>\n' +
|
||||||
|
' <dd>Windows o Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Enfocar una barra de herramientas contextual</dt>\n' +
|
||||||
|
' <dd>Windows, Linux o macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>La navegación comenzará por el primer elemento de la interfaz de usuario (IU), de tal manera que se resaltará, o bien se subrayará si se trata del primer elemento de\n' +
|
||||||
|
' la ruta de elemento del pie de página.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navegar entre las secciones de la IU</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Para pasar de una sección de la IU a la siguiente, pulse la tecla <strong>Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Para pasar de una sección de la IU a la anterior, pulse <strong>Mayús+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>El orden de <strong>tabulación</strong> de estas secciones de la IU es:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Barra de menús</li>\n' +
|
||||||
|
' <li>Cada grupo de barra de herramientas</li>\n' +
|
||||||
|
' <li>Barra lateral</li>\n' +
|
||||||
|
' <li>Ruta del elemento en el pie de página</li>\n' +
|
||||||
|
' <li>Botón de alternancia de recuento de palabras en el pie de página</li>\n' +
|
||||||
|
' <li>Enlace de personalización de marca en el pie de página</li>\n' +
|
||||||
|
' <li>Controlador de cambio de tamaño en el pie de página</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Si una sección de la IU no está presente, esta se omite.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Si el pie de página tiene un enfoque de navegación con el teclado y no hay ninguna barra lateral visible, al pulsar <strong>Mayús+Tab</strong>,\n' +
|
||||||
|
' el enfoque se moverá al primer grupo de barra de herramientas, en lugar de al último.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navegar dentro de las secciones de la IU</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Para pasar de un elemento de la IU al siguiente, pulse la tecla de <strong>flecha</strong> correspondiente.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Las teclas de flecha <strong>izquierda</strong> y <strong>derecha</strong> permiten</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>desplazarse entre los menús de la barra de menús.</li>\n' +
|
||||||
|
' <li>abrir el submenú de un menú.</li>\n' +
|
||||||
|
' <li>desplazarse entre los botones de un grupo de barra de herramientas.</li>\n' +
|
||||||
|
' <li>desplazarse entre los elementos de la ruta de elemento del pie de página.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Las teclas de flecha <strong>abajo</strong> y <strong>arriba</strong> permiten</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>desplazarse entre los elementos de menú de un menú.</li>\n' +
|
||||||
|
' <li>desplazarse entre los elementos de un menú emergente de una barra de herramientas.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Las teclas de <strong>flecha</strong> van cambiando dentro de la sección de la IU enfocada.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Para cerrar un menú, un submenú o un menú emergente que estén abiertos, pulse la tecla <strong>Esc</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Si el enfoque actual se encuentra en la parte superior de una sección de la IU determinada, al pulsar la tecla <strong>Esc</strong> saldrá\n' +
|
||||||
|
' de la navegación con el teclado por completo.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Ejecutar un elemento de menú o un botón de barra de herramientas</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Si el elemento de menú o el botón de barra de herramientas deseado está resaltado, pulse la tecla <strong>Retorno</strong> o <strong>Entrar</strong>,\n' +
|
||||||
|
' o la <strong>barra espaciadora</strong> para ejecutar el elemento.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navegar por cuadros de diálogo sin pestañas</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>En los cuadros de diálogo sin pestañas, el primer componente interactivo se enfoca al abrirse el cuadro de diálogo.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Para navegar entre los componentes interactivos del cuadro de diálogo, pulse las teclas <strong>Tab</strong> o <strong>Mayús+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navegar por cuadros de diálogo con pestañas</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>En los cuadros de diálogo con pestañas, el primer botón del menú de pestaña se enfoca al abrirse el cuadro de diálogo.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Para navegar entre componentes interactivos de esta pestaña del cuadro de diálogo, pulse las teclas <strong>Tab</strong> o\n' +
|
||||||
|
' <strong>Mayús+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Si desea cambiar a otra pestaña del cuadro de diálogo, enfoque el menú de pestañas y, a continuación, pulse la tecla de <strong>flecha</strong>\n' +
|
||||||
|
' correspondiente para moverse por las pestañas disponibles.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.eu',
|
||||||
|
'<h1>Hasi teklatuaren nabigazioa</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Fokuratu menu-barra</dt>\n' +
|
||||||
|
' <dd>Windows edo Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Fokuratu tresna-barra</dt>\n' +
|
||||||
|
' <dd>Windows edo Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Fokuratu orri-oina</dt>\n' +
|
||||||
|
' <dd>Windows edo Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Fokuratu jakinarazpena</dt>\n' +
|
||||||
|
' <dd>Windows edo Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Fokuratu testuinguruaren tresna-barra</dt>\n' +
|
||||||
|
' <dd>Windows, Linux edo macOS: Ktrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Nabigazioa EIko lehen elementuan hasiko da: elementu hori nabarmendu egingo da, edo azpimarratu lehen elementua bada\n' +
|
||||||
|
' orri-oineko elementuaren bidea.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Nabigatu EIko atalen artean</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>EIko atal batetik hurrengora mugitzeko, sakatu <strong>Tabuladorea</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>EIko atal batetik aurrekora mugitzeko, sakatu <strong>Maius+Tabuladorea</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>EIko atal hauen <strong>Tabuladorea</strong> da:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Menu-barra</li>\n' +
|
||||||
|
' <li>Tresna-barraren talde bakoitza</li>\n' +
|
||||||
|
' <li>Alboko barra</li>\n' +
|
||||||
|
' <li>Orri-oineko elementuaren bidea</li>\n' +
|
||||||
|
' <li>Orri-oneko urrats-kontaketa txandakatzeko botoia</li>\n' +
|
||||||
|
' <li>Orri-oineko marken esteka</li>\n' +
|
||||||
|
' <li>Orri-oineko editorearen tamaina aldatzeko heldulekua</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>EIko atal bat ez badago, saltatu egin da.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Orri-oinak teklatuaren nabigazioa fokuratuta badago, eta alboko barra ikusgai ez badago, <strong>Maius+Tabuladorea</strong> sakatuz gero,\n' +
|
||||||
|
' fokua tresna-barrako lehen taldera eramaten da, ez azkenera.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Nabigatu EIko atalen barruan</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>EIko elementu batetik hurrengora mugitzeko, sakatu dagokion <strong>Gezia</strong> tekla.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>Ezkerrera</strong> eta <strong>Eskuinera</strong> gezi-teklak</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>menu-barrako menuen artean mugitzen da.</li>\n' +
|
||||||
|
' <li>ireki azpimenu bat menuan.</li>\n' +
|
||||||
|
' <li>mugitu botoi batetik bestera tresna-barren talde batean.</li>\n' +
|
||||||
|
' <li>mugitu orri-oineko elementuaren bideko elementu batetik bestera.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>Gora</strong> eta <strong>Behera</strong> gezi-teklak</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>mugitu menu bateko menu-elementuen artean.</li>\n' +
|
||||||
|
' <li>mugitu tresna-barrako menu gainerakor bateko menu-elementuen artean.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>Gezia</strong> teklen zikloa nabarmendutako EI atalen barruan.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Irekitako menu bat ixteko, ireki azpimenua, edo ireki menu gainerakorra, sakatu <strong>Ihes</strong> tekla.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Une horretan fokuratzea EIko atal jakin baten "goialdean" badago, <strong>Ihes</strong> tekla sakatuz gero\n' +
|
||||||
|
' teklatuaren nabigaziotik irtengo zara.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Exekutatu menuko elementu bat edo tresna-barrako botoi bat</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Nahi den menuaren elementua edo tresna-barraren botoia nabarmenduta dagoenean, sakatu <strong>Itzuli</strong>, <strong>Sartu</strong>\n' +
|
||||||
|
' edo <strong>Zuriune-barra</strong> elementua exekutatzeko.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Nabigatu fitxarik gabeko elkarrizketak</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Fitxarik gabeko elkarrizketetan, lehen osagai interaktiboa fokuratzen da elkarrizketa irekitzen denean.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Nabigatu elkarrizketa interaktiboko osagai batetik bestera <strong>Tabuladorea</strong> edo <strong>Maius+Tabuladorea</strong> sakatuta.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Nabigatu fitxadun elkarrizketak</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Fitxadun elkarrizketetan, fitxa-menuko lehen botoia fokuratzen da elkarrizketa irekitzen denean.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Nabigatu elkarrizketa-fitxa honen interaktiboko osagai batetik bestera <strong>Tabuladorea</strong> edo\n' +
|
||||||
|
' <strong>Maius+Tabuladorea</strong> sakatuta.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Aldatu beste elkarrizketa-fitxa batera fitxa-menua fokuratu eta dagokion <strong>Gezia</strong>\n' +
|
||||||
|
' tekla sakatzeko, erabilgarri dauden fitxa batetik bestera txandakatzeko.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.fa',
|
||||||
|
'<h1>شروع پیمایش صفحهکلید</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>تمرکز بر نوار منو</dt>\n' +
|
||||||
|
' <dd>Windows یا Linux:: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>تمرکز بر نوار ابزار</dt>\n' +
|
||||||
|
' <dd>Windows یا Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>تمرکز بر پانویس</dt>\n' +
|
||||||
|
' <dd>Windows یا Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>تمرکز اعلان</dt>\n' +
|
||||||
|
' <dd>ویندوز یا لینوکس: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>تمرکز بر نوار ابزار بافتاری</dt>\n' +
|
||||||
|
' <dd>Windows ،Linux یا macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>پیمایش در اولین مورد رابط کاربری شروع میشود و درخصوص اولین مورد در\n' +
|
||||||
|
' مسیر عنصر پانویس، برجسته یا زیرخطدار میشود.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>پیمایش بین بخشهای رابط کاربری</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>برای جابجایی از یک بخش رابط کاربری به بخش بعدی، <strong>Tab</strong> را فشار دهید.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>برای جابجایی از یک بخش رابط کاربری به بخش قبلی، <strong>Shift+Tab</strong> را فشار دهید.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>ترتیب <strong>Tab</strong> این بخشهای رابط کاربری عبارتند از:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>نوار منو</li>\n' +
|
||||||
|
' <li>هر گروه نوار ابزار</li>\n' +
|
||||||
|
' <li>نوار کناری</li>\n' +
|
||||||
|
' <li>مسیر عنصر در پانویس</li>\n' +
|
||||||
|
' <li>دکمه تغییر وضعیت تعداد کلمات در پانویس</li>\n' +
|
||||||
|
' <li>پیوند نمانامسازی در پانویس</li>\n' +
|
||||||
|
' <li>دسته تغییر اندازه ویرایشگر در پانویس</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>اگر بخشی از رابط کاربری موجود نباشد، رد میشود.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>اگر پانویس دارای تمرکز بر پیمایش صفحهکلید باشد، و نوار کناری قابلمشاهده وجود ندارد، فشردن <strong>Shift+Tab</strong>\n' +
|
||||||
|
' تمرکز را به گروه نوار ابزار اول میبرد، نه آخر.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>پیمایش در بخشهای رابط کاربری</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>برای جابجایی از یک عنصر رابط کاربری به بعدی، کلید <strong>جهتنمای</strong> مناسب را فشار دهید.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>کلیدهای جهتنمای <strong>چپ</strong> و <strong>راست</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>جابجایی بین منوها در نوار منو.</li>\n' +
|
||||||
|
' <li>باز کردن منوی فرعی در یک منو.</li>\n' +
|
||||||
|
' <li>جابجایی بین دکمهها در یک گروه نوار ابزار.</li>\n' +
|
||||||
|
' <li>جابجایی بین موارد در مسیر عنصر پانویس.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>کلیدهای جهتنمای <strong>پایین</strong> و <strong>بالا</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>جابجایی بین موارد منو در یک منو.</li>\n' +
|
||||||
|
' <li>جابجایی بین موارد در یک منوی بازشوی نوار ابزار.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>کلیدهای<strong>جهتنما</strong> در بخش رابط کاربری متمرکز میچرخند.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>برای بستن یک منوی باز، یک منوی فرعی باز، یا یک منوی بازشوی باز، کلید <strong>Esc</strong> را فشار دهید.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>اگر تمرکز فعلی در «بالای» یک بخش رابط کاربری خاص است، فشردن کلید <strong>Esc</strong> نیز موجب\n' +
|
||||||
|
' خروج کامل از پیمایش صفحهکلید میشود.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>اجرای یک مورد منو یا دکمه نوار ابزار</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>وقتی مورد منو یا دکمه نوار ابزار مورد نظر هایلایت شد، دکمه <strong>بازگشت</strong>، <strong>Enter</strong>،\n' +
|
||||||
|
' یا <strong>نوار Space</strong> را فشار دهید تا مورد را اجرا کنید.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>پیمایش در کادرهای گفتگوی بدون زبانه</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>در کادرهای گفتگوی بدون زبانه، وقتی کادر گفتگو باز میشود، اولین جزء تعاملی متمرکز میشود.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>با فشردن <strong>Tab</strong> یا <strong>Shift+Tab</strong>، بین اجزای کادر گفتگوی تعاملی پیمایش کنید.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>پیمایش کادرهای گفتگوی زبانهدار</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>در کادرهای گفتگوی زبانهدار، وقتی کادر گفتگو باز میشود، اولین دکمه در منوی زبانه متمرکز میشود.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>با فشردن <strong>Tab</strong> یا\n' +
|
||||||
|
' <strong>Shift+Tab</strong>، بین اجزای تعاملی این زبانه کادر گفتگو پیمایش کنید.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>با دادن تمرکز به منوی زبانه و سپس فشار دادن کلید <strong>جهتنمای</strong>\n' +
|
||||||
|
' مناسب برای چرخش میان زبانههای موجود، به زبانه کادر گفتگوی دیگری بروید.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.fi',
|
||||||
|
'<h1>Näppäimistönavigoinnin aloittaminen</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Siirrä kohdistus valikkopalkkiin</dt>\n' +
|
||||||
|
' <dd>Windows tai Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Siirrä kohdistus työkalupalkkiin</dt>\n' +
|
||||||
|
' <dd>Windows tai Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Siirrä kohdistus alatunnisteeseen</dt>\n' +
|
||||||
|
' <dd>Windows tai Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Keskitä ilmoitukseen</dt>\n' +
|
||||||
|
' <dd>Windows ja Linux: Alt + F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Siirrä kohdistus kontekstuaaliseen työkalupalkkiin</dt>\n' +
|
||||||
|
' <dd>Windows, Linux tai macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navigointi aloitetaan ensimmäisestä käyttöliittymän kohteesta, joka joko korostetaan tai alleviivataan, jos\n' +
|
||||||
|
' kyseessä on Alatunniste-elementin polun ensimmäinen kohde.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Käyttöliittymän eri osien välillä navigointi</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Paina <strong>sarkainnäppäintä</strong> siirtyäksesi käyttöliittymän osasta seuraavaan.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Jos haluat siirtyä edelliseen käyttöliittymän osaan, paina <strong>Shift+sarkainnäppäin</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>Sarkainnäppäin</strong> siirtää sinua näissä käyttöliittymän osissa tässä järjestyksessä:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Valikkopalkki</li>\n' +
|
||||||
|
' <li>Työkalupalkin ryhmät</li>\n' +
|
||||||
|
' <li>Sivupalkki</li>\n' +
|
||||||
|
' <li>Elementin polku alatunnisteessa</li>\n' +
|
||||||
|
' <li>Sanalaskurin vaihtopainike alatunnisteessa</li>\n' +
|
||||||
|
' <li>Brändäyslinkki alatunnisteessa</li>\n' +
|
||||||
|
' <li>Editorin koon muuttamisen kahva alatunnisteessa</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Jos jotakin käyttöliittymän osaa ei ole, se ohitetaan.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Jos kohdistus on siirretty alatunnisteeseen näppäimistönavigoinnilla eikä sivupalkkia ole näkyvissä, <strong>Shift+sarkainnäppäin</strong>\n' +
|
||||||
|
' siirtää kohdistuksen työkalupalkin ensimmäiseen ryhmään, eikä viimeiseen.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Käyttöliittymän eri osien sisällä navigointi</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Paina <strong>nuolinäppäimiä</strong> siirtyäksesi käyttöliittymäelementistä seuraavaan.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>Vasen</strong>- ja <strong>Oikea</strong>-nuolinäppäimet</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>siirtävät sinua valikkopalkin valikoiden välillä.</li>\n' +
|
||||||
|
' <li>avaavat valikon alavalikon.</li>\n' +
|
||||||
|
' <li>siirtävät sinua työkalupalkin ryhmän painikkeiden välillä.</li>\n' +
|
||||||
|
' <li>siirtävät sinua kohteiden välillä alatunnisteen elementin polussa.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>Alas</strong>- ja <strong>Ylös</strong>-nuolinäppäimet</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>siirtävät sinua valikon valikkokohteiden välillä.</li>\n' +
|
||||||
|
' <li>siirtävät sinua työkalupalkin ponnahdusvalikon kohteiden välillä.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>Nuolinäppäimet</strong> siirtävät sinua käyttöliittymän korostetun osan sisällä syklissä.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Paina <strong>Esc</strong>-näppäintä sulkeaksesi avoimen valikon, avataksesi alavalikon tai avataksesi ponnahdusvalikon.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Jos kohdistus on käyttöliittymän tietyn osion ylälaidassa, <strong>Esc</strong>-näppäimen painaminen\n' +
|
||||||
|
' poistuu myös näppäimistönavigoinnista kokonaan.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Suorita valikkokohde tai työkalupalkin painike</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Kun haluamasi valikkokohde tai työkalupalkin painike on korostettuna, paina <strong>Return</strong>-, <strong>Enter</strong>-\n' +
|
||||||
|
' tai <strong>välilyöntinäppäintä</strong> suorittaaksesi kohteen.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Välilehdittömissä valintaikkunoissa navigointi</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Kun välilehdetön valintaikkuna avautuu, kohdistus siirtyy sen ensimmäiseen interaktiiviseen komponenttiin.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Voit siirtyä valintaikkunan interaktiivisten komponenttien välillä painamalla <strong>sarkainnäppäintä</strong> tai <strong>Shift+sarkainnäppäin</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Välilehdellisissä valintaikkunoissa navigointi</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Kun välilehdellinen valintaikkuna avautuu, kohdistus siirtyy välilehtivalikon ensimmäiseen painikkeeseen.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Voit siirtyä valintaikkunan välilehden interaktiivisen komponenttien välillä painamalla <strong>sarkainnäppäintä</strong> tai\n' +
|
||||||
|
' <strong>Shift+sarkainnäppäin</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Voit siirtyä valintaikkunan toiseen välilehteen siirtämällä kohdistuksen välilehtivalikkoon ja painamalla sopivaa <strong>nuolinäppäintä</strong>\n' +
|
||||||
|
' siirtyäksesi käytettävissä olevien välilehtien välillä syklissä.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.fr_FR',
|
||||||
|
'<h1>Débuter la navigation au clavier</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Cibler la barre du menu</dt>\n' +
|
||||||
|
' <dd>Windows ou Linux : Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS : ⌥F9</dd>\n' +
|
||||||
|
" <dt>Cibler la barre d'outils</dt>\n" +
|
||||||
|
' <dd>Windows ou Linux : Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS : ⌥F10</dd>\n' +
|
||||||
|
' <dt>Cibler le pied de page</dt>\n' +
|
||||||
|
' <dd>Windows ou Linux : Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS : ⌥F11</dd>\n' +
|
||||||
|
' <dt>Cibler la notification</dt>\n' +
|
||||||
|
' <dd>Windows ou Linux : Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS : ⌥F12</dd>\n' +
|
||||||
|
" <dt>Cibler une barre d'outils contextuelle</dt>\n" +
|
||||||
|
' <dd>Windows, Linux ou macOS : Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>La navigation débutera sur le premier élément de l'interface utilisateur, qui sera mis en surbrillance ou bien souligné dans le cas du premier élément du\n" +
|
||||||
|
" chemin d'éléments du pied de page.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
"<h1>Naviguer entre les sections de l'interface utilisateur</h1>\n" +
|
||||||
|
'\n' +
|
||||||
|
"<p>Pour passer d'une section de l'interface utilisateur à la suivante, appuyez sur <strong>Tabulation</strong>.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
"<p>Pour passer d'une section de l'interface utilisateur à la précédente, appuyez sur <strong>Maj+Tabulation</strong>.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
"<p>L'ordre de <strong>Tabulation</strong> de ces sections de l'interface utilisateur est le suivant :</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Barre du menu</li>\n' +
|
||||||
|
" <li>Chaque groupe de barres d'outils</li>\n" +
|
||||||
|
' <li>Barre latérale</li>\n' +
|
||||||
|
" <li>Chemin d'éléments du pied de page</li>\n" +
|
||||||
|
" <li>Bouton d'activation du compteur de mots dans le pied de page</li>\n" +
|
||||||
|
' <li>Lien de marque dans le pied de page</li>\n' +
|
||||||
|
" <li>Poignée de redimensionnement de l'éditeur dans le pied de page</li>\n" +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>Si une section de l'interface utilisateur n'est pas présente, elle sera ignorée.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
"<p>Si le pied de page comporte un ciblage par navigation au clavier et qu'il n'y a aucune barre latérale visible, appuyer sur <strong>Maj+Tabulation</strong>\n" +
|
||||||
|
" déplace le ciblage vers le premier groupe de barres d'outils et non le dernier.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
"<h1>Naviguer au sein des sections de l'interface utilisateur</h1>\n" +
|
||||||
|
'\n' +
|
||||||
|
"<p>Pour passer d'un élément de l'interface utilisateur au suivant, appuyez sur la <strong>Flèche</strong> appropriée.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
'<p>Les touches fléchées <strong>Gauche</strong> et <strong>Droite</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>se déplacent entre les menus de la barre des menus.</li>\n' +
|
||||||
|
" <li>ouvrent un sous-menu au sein d'un menu.</li>\n" +
|
||||||
|
" <li>se déplacent entre les boutons d'un groupe de barres d'outils.</li>\n" +
|
||||||
|
" <li>se déplacent entre les éléments du chemin d'éléments du pied de page.</li>\n" +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Les touches fléchées <strong>Bas</strong> et <strong>Haut</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
" <li>se déplacent entre les éléments de menu au sein d'un menu.</li>\n" +
|
||||||
|
" <li>se déplacent entre les éléments au sein d'un menu contextuel de barre d'outils.</li>\n" +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>Les <strong>Flèches</strong> parcourent la section de l'interface utilisateur ciblée.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
'<p>Pour fermer un menu ouvert, un sous-menu ouvert ou un menu contextuel ouvert, appuyez sur <strong>Echap</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>Si l'actuel ciblage se trouve en « haut » d'une section spécifique de l'interface utilisateur, appuyer sur <strong>Echap</strong> permet également de quitter\n" +
|
||||||
|
' entièrement la navigation au clavier.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<h1>Exécuter un élément de menu ou un bouton de barre d'outils</h1>\n" +
|
||||||
|
'\n' +
|
||||||
|
"<p>Lorsque l'élément de menu ou le bouton de barre d'outils désiré est mis en surbrillance, appuyez sur la touche <strong>Retour arrière</strong>, <strong>Entrée</strong>\n" +
|
||||||
|
" ou la <strong>Barre d'espace</strong> pour exécuter l'élément.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Naviguer au sein de dialogues sans onglets</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>Dans les dialogues sans onglets, le premier composant interactif est ciblé lorsque le dialogue s'ouvre.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
'<p>Naviguez entre les composants du dialogue interactif en appuyant sur <strong>Tabulation</strong> ou <strong>Maj+Tabulation</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Naviguer au sein de dialogues avec onglets</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>Dans les dialogues avec onglets, le premier bouton du menu de l'onglet est ciblé lorsque le dialogue s'ouvre.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
'<p>Naviguez entre les composants interactifs de cet onglet de dialogue en appuyant sur <strong>Tabulation</strong> ou\n' +
|
||||||
|
' <strong>Maj+Tabulation</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>Passez à un autre onglet de dialogue en ciblant le menu de l'onglet et en appuyant sur la <strong>Flèche</strong>\n" +
|
||||||
|
' appropriée pour parcourir les onglets disponibles.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.he_IL',
|
||||||
|
'<h1>התחל ניווט במקלדת</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>התמקד בשורת התפריטים</dt>\n' +
|
||||||
|
' <dd>Windows או Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>העבר מיקוד לסרגל הכלים</dt>\n' +
|
||||||
|
' <dd>Windows או Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>העבר מיקוד לכותרת התחתונה</dt>\n' +
|
||||||
|
' <dd>Windows או Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>העבר מיקוד להודעה</dt>\n' +
|
||||||
|
' <dd>Windows או Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>העבר מיקוד לסרגל כלים הקשרי</dt>\n' +
|
||||||
|
' <dd>Windows, Linux או macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>הניווט יתחיל ברכיב הראשון במשך, שיודגש או שיהיה מתחתיו קו תחתון במקרה של הפריט הראשון\n' +
|
||||||
|
' הנתיב של רכיב הכותרת התחתונה.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>עבור בין מקטעים במסך</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>כדי לעבור בין המקטעים במסך, הקש <strong>Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>כדי לעבור למקטע הקודם במסך, הקש <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>הסדר מבחינת מקש <strong>Tab</strong> של הרכיבים במסך:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>שורת התפריטים</li>\n' +
|
||||||
|
' <li>כל קבוצה בסרגל הכלים</li>\n' +
|
||||||
|
' <li>הסרגל הצידי</li>\n' +
|
||||||
|
' <li>נתיב של רכיב בכותרת התחתונה</li>\n' +
|
||||||
|
' <li>לחצן לספירת מילים בכותרת התחתונה</li>\n' +
|
||||||
|
' <li>קישור של המותג בכותרת התחתונה</li>\n' +
|
||||||
|
' <li>ידית לשינוי גודל עבור העורך בכותרת התחתונה</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>אם רכיב כלשהו במסך לא מופיע, המערכת תדלג עליו.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>אם בכותרת התחתונה יש מיקוד של ניווט במקלדת, ולא מופיע סרגל בצד, יש להקיש <strong>Shift+Tab</strong>\n' +
|
||||||
|
' מעביר את המיקוד לקבוצה הראשונה בסרגל הכלים, לא האחרונה.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>עבור בתוך מקטעים במסך</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>כדי לעבור מרכיב אחד לרכיב אחר במסך, הקש על מקש <strong>החץ</strong> המתאים.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>מקשי החיצים <strong>שמאלה</strong> ו<strong>ימינה</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>עבור בין תפריטים בשורת התפריטים.</li>\n' +
|
||||||
|
' <li>פתח תפריט משני בתפריט.</li>\n' +
|
||||||
|
' <li>עבור בין לחצנים בקבוצה בסרגל הכלים.</li>\n' +
|
||||||
|
' <li>עבור בין פריטים ברכיב בכותרת התחתונה.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>מקשי החיצים <strong>למטה</strong> ו<strong>למעלה</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>עבור בין פריטים בתפריט.</li>\n' +
|
||||||
|
' <li>עבור בין פריטים בחלון הקובץ של סרגל הכלים.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>מקשי <strong>החצים</strong> משתנים בתוך המקטע במסך שעליו נמצא המיקוד.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>כדי לסגור תפריט פתוח, תפריט משני פתוח או חלון קופץ, הקש על <strong>Esc</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>אם המיקוד הוא על החלק 'העליון' של מקטע מסוים במסך, הקשה על <strong>Esc</strong> מביאה גם ליציאה\n" +
|
||||||
|
' מהניווט במקלדת לחלוטין.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>הפעל פריט בתפריט או לחצן בסרגל הכלים</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>כאשר הפריט הרצוי בתפריט או הלחצן בסרגל הכלים מודגשים, הקש על <strong>Return</strong>, <strong>Enter</strong>,\n' +
|
||||||
|
' או על <strong>מקש הרווח</strong> כדי להפעיל את הפריט.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>ניווט בחלונות דו-שיח בלי כרטיסיות</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>בחלונות דו-שיח בלי כרטיסיות, הרכיב האינטראקטיבי הראשון מקבל את המיקוד כאשר החלון נפתח.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>עבור בין רכיבים אינטראקטיביים בחלון על ידי הקשה על <strong>Tab</strong> או <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>ניווט בחלונות דו-שיח עם כרטיסיות</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>בחלונות דו-שיח עם כרטיסיות, הלחצן הראשון בתפריט מקבל את המיקוד כאשר החלון נפתח.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>עבור בין רכיבים אינטראקטיביים בחלון על ידי הקשה על <strong>Tab</strong> או\n' +
|
||||||
|
' <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>עבור לכרטיסיה אחרת בחלון על ידי העברת המיקוד לתפריט הכרטיסיות והקשה על <strong>החץ</strong>המתאים\n' +
|
||||||
|
' כדי לעבור בין הכרטיסיות הזמינות.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.hi',
|
||||||
|
'<h1>कीबोर्ड नेविगेशन शुरू करें</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>मेन्यू बार पर फ़ोकस करें</dt>\n' +
|
||||||
|
' <dd>Windows या Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>टूलबार पर फ़ोकस करें</dt>\n' +
|
||||||
|
' <dd>Windows या Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>फ़ुटर पर फ़ोकस करें</dt>\n' +
|
||||||
|
' <dd>Windows या Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>नोटिफ़िकेशन फ़ोकस</dt>\n' +
|
||||||
|
' <dd>Windows या Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>प्रासंगिक टूलबार पर फ़ोकस करें</dt>\n' +
|
||||||
|
' <dd>Windows, Linux या macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>नेविगेशन पहले UI आइटम पर शुरू होगा, जिसे हाइलाइट किया जाएगा या पहले आइटम के मामले में फ़ुटर तत्व पथ में\n' +
|
||||||
|
' रेखांकित किया जाएगा।</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>UI सेक्शन के बीच नेविगेट करें</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>एक UI सेक्शन से दूसरे सेक्शन में जाने के लिए, <strong>Tab</strong> दबाएं।</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>एक UI सेक्शन से पिछले सेक्शन में जाने के लिए, <strong>Shift+Tab</strong> दबाएं।</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>इन UI सेक्शन का <strong>Tab</strong> क्रम नीचे दिया गया है:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>मेन्यू बार</li>\n' +
|
||||||
|
' <li>प्रत्येक टूलबार समूह</li>\n' +
|
||||||
|
' <li>साइडबार</li>\n' +
|
||||||
|
' <li>फ़ुटर में तत्व पथ</li>\n' +
|
||||||
|
' <li>फ़ुटर में शब्द गणना टॉगल बटन</li>\n' +
|
||||||
|
' <li>फ़ुटर में ब्रांडिंग लिंक</li>\n' +
|
||||||
|
' <li>फ़ुटर में संपादक का आकार बदलने का हैंडल</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>अगर कोई UI सेक्शन मौजूद नहीं है, तो उसे छोड़ दिया जाता है।</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>अगर फ़ुटर में कीबोर्ड नेविगेशन फ़ोकस है, और कोई दिखा देने वाला साइडबार नहीं है, तो <strong>Shift+Tab</strong> दबाने से\n' +
|
||||||
|
' फ़ोकस पहले टूलबार समूह पर चला जाता है, पिछले पर नहीं।</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>UI सेक्शन के भीतर नेविगेट करें</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>एक UI तत्व से दूसरे में जाने के लिए उपयुक्त <strong>ऐरो</strong> कुंजी दबाएं।</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>बाएं</strong> और <strong>दाएं</strong> ऐरो कुंजियां</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>मेन्यू बार में मेन्यू के बीच ले जाती हैं।</li>\n' +
|
||||||
|
' <li>मेन्यू में एक सब-मेन्यू खोलें।</li>\n' +
|
||||||
|
' <li>टूलबार समूह में बटनों के बीच ले जाएं।</li>\n' +
|
||||||
|
' <li>फ़ुटर के तत्व पथ में आइटम के बीच ले जाएं।</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>नीचे</strong> और <strong>ऊपर</strong> ऐरो कुंजियां</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>मेन्यू में मेन्यू आइटम के बीच ले जाती हैं।</li>\n' +
|
||||||
|
' <li>टूलबार पॉप-अप मेन्यू में आइटम के बीच ले जाएं।</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>फ़ोकस वाले UI सेक्शन के भीतर <strong>ऐरो</strong> कुंजियां चलाती रहती हैं।</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>कोई खुला मेन्यू, कोई खुला सब-मेन्यू या कोई खुला पॉप-अप मेन्यू बंद करने के लिए <strong>Esc</strong> कुंजी दबाएं।</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>अगर मौजूदा फ़ोकस किसी विशेष UI सेक्शन के 'शीर्ष' पर है, तो <strong>Esc</strong> कुंजी दबाने से भी\n" +
|
||||||
|
' कीबोर्ड नेविगेशन पूरी तरह से बाहर हो जाता है।</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>मेन्यू आइटम या टूलबार बटन निष्पादित करें</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>जब वांछित मेन्यू आइटम या टूलबार बटन हाइलाइट किया जाता है, तो आइटम को निष्पादित करने के लिए <strong>Return</strong>, <strong>Enter</strong>,\n' +
|
||||||
|
' या <strong>Space bar</strong> दबाएं।</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>गैर-टैब वाले डायलॉग पर नेविगेट करें</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>गैर-टैब वाले डायलॉग में, डायलॉग खुलने पर पहला इंटरैक्टिव घटक फ़ोकस लेता है।</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>Tab</strong> or <strong>Shift+Tab</strong> दबाकर इंटरैक्टिव डायलॉग घटकों के बीच नेविगेट करें।</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>टैब किए गए डायलॉग पर नेविगेट करें</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>टैब किए गए डायलॉग में, डायलॉग खुलने पर टैब मेन्यू में पहला बटन फ़ोकस लेता है।</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>इस डायलॉग टैब के इंटरैक्टिव घटकों के बीच नेविगेट करने के लिए <strong>Tab</strong> या\n' +
|
||||||
|
' <strong>Shift+Tab</strong> दबाएं।</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>टैब मेन्यू को फ़ोकस देकर और फिर उपलब्ध टैब में के बीच जाने के लिए उपयुक्त <strong>ऐरो</strong>\n' +
|
||||||
|
' कुंजी दबाकर दूसरे डायलॉग टैब पर स्विच करें।</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.hr',
|
||||||
|
'<h1>Početak navigacije na tipkovnici</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Fokusiranje trake izbornika</dt>\n' +
|
||||||
|
' <dd>Windows ili Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Fokusiranje alatne trake</dt>\n' +
|
||||||
|
' <dd>Windows ili Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Fokusiranje podnožja</dt>\n' +
|
||||||
|
' <dd>Windows ili Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Fokusiranje obavijesti</dt>\n' +
|
||||||
|
' <dd>Windows ili Linux: Alt + F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Fokusiranje kontekstne alatne trake</dt>\n' +
|
||||||
|
' <dd>Windows, Linux ili macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navigacija će započeti kod prve stavke na korisničkom sučelju, koja će biti istaknuta ili podcrtana ako se radi o prvoj stavci u\n' +
|
||||||
|
' putu elementa u podnožju.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigacija između dijelova korisničkog sučelja</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Za pomicanje s jednog dijela korisničkog sučelja na drugi pritisnite <strong>tabulator</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Za pomicanje s jednog dijela korisničkog sučelja na prethodni pritisnite <strong>Shift + tabulator</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Ovo je redoslijed pomicanja <strong>tabulatora</strong> po dijelovima korisničkog sučelja:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Traka izbornika</li>\n' +
|
||||||
|
' <li>Pojedinačne grupe na alatnoj traci</li>\n' +
|
||||||
|
' <li>Bočna traka</li>\n' +
|
||||||
|
' <li>Put elemenata u podnožju</li>\n' +
|
||||||
|
' <li>Gumb za pomicanje po broju riječi u podnožju</li>\n' +
|
||||||
|
' <li>Veza na brand u podnožju</li>\n' +
|
||||||
|
' <li>Značajka za promjenu veličine alata za uređivanje u podnožju</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Ako neki dio korisničkog sučelja nije naveden, on se preskače.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Ako u podnožju postoji fokus za navigaciju na tipkovnici, a nema vidljive bočne trake, pritiskom na <strong>Shift + tabulator</strong>\n' +
|
||||||
|
' fokus se prebacuje na prvu skupinu na alatnoj traci, ne na zadnju.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigacija unutar dijelova korisničkog sučelja</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Za pomicanje s jednog elementa korisničkog sučelja na drugi pritisnite tipku s odgovarajućom <strong>strelicom</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Tipke s <strong>lijevom</strong> i <strong>desnom</strong> strelicom</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>služe za pomicanje između izbornika na alatnoj traci.</li>\n' +
|
||||||
|
' <li>otvaraju podizbornik unutar izbornika.</li>\n' +
|
||||||
|
' <li>služe za pomicanje između gumba unutar skupina na alatnoj traci.</li>\n' +
|
||||||
|
' <li>služe za pomicanje između stavki na elementu puta u podnožju.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Tipke s <strong>donjom</strong> i <strong>gornjom</strong> strelicom</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>služe za pomicanje između stavki unutar izbornika.</li>\n' +
|
||||||
|
' <li>služe za pomicanje između stavki na alatnoj traci skočnog izbornika.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Tipkama <strong>strelica</strong> kružno se pomičete unutar dijela korisničkog sučelja koji je u fokusu.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Za zatvaranje otvorenog izbornika, otvorenog podizbornika ili otvorenog skočnog izbornika pritisnite tipku <strong>Esc</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Ako je fokus trenutačno postavljen na vrh pojedinačnog dijela korisničkog sučelja, pritiskom na tipku <strong>Esc</strong> također\n' +
|
||||||
|
' u potpunosti zatvarate navigaciju na tipkovnici.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Izvršavanje radnji putem stavki izbornika ili gumba na alatnoj traci</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Nakon što se istakne stavka izbornika ili gumb na alatnoj traci s radnjom koju želite izvršiti, pritisnite tipku <strong>Return</strong>, <strong>Enter</strong>\n' +
|
||||||
|
' ili <strong>razmak</strong> da biste pokrenuli željenu radnju.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigacija dijaloškim okvirima izvan kartica</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Prilikom otvaranja dijaloških okvira izvan kartica fokus se nalazi na prvoj interaktivnoj komponenti.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navigaciju između interaktivnih dijaloških komponenata vršite pritiskom na <strong>tabulator</strong> ili <strong>Shift + tabulator</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigacija dijaloškim okvirima u karticama</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Prilikom otvaranja dijaloških okvira u karticama fokus se nalazi na prvom gumbu u izborniku unutar kartice.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navigaciju između interaktivnih komponenata dijaloškog okvira u kartici vršite pritiskom na <strong>tabulator</strong> ili\n' +
|
||||||
|
' <strong>Shift + tabulator</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Na karticu s drugim dijaloškim okvirom možete se prebaciti tako da stavite fokus na izbornik kartice pa pritisnete tipku s odgovarajućom <strong>strelicom</strong>\n' +
|
||||||
|
' za kružno pomicanje između dostupnih kartica.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.hu_HU',
|
||||||
|
'<h1>Billentyűzetes navigáció indítása</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Fókusz a menüsávra</dt>\n' +
|
||||||
|
' <dd>Windows és Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Fókusz az eszköztárra</dt>\n' +
|
||||||
|
' <dd>Windows és Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Fókusz a láblécre</dt>\n' +
|
||||||
|
' <dd>Windows és Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Ráközelítés az értesítésre</dt>\n' +
|
||||||
|
' <dd>Windows vagy Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Fókusz egy környezetfüggő eszköztárra</dt>\n' +
|
||||||
|
' <dd>Windows, Linux és macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>A navigáció az első felhasználói felületi elemnél kezdődik, amelyet a rendszer kiemel, illetve aláhúz, amennyiben az az első elem\n' +
|
||||||
|
' a lábléc elemútvonalán.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigálás a felhasználói felület szakaszai között</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>A felhasználói felület következő szakaszára váltáshoz nyomja meg a <strong>Tab</strong> billentyűt.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>A felhasználói felület előző szakaszára váltáshoz nyomja meg a <strong>Shift+Tab</strong> billentyűt.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>A <strong>Tab</strong> billentyűvel a felhasználói felület szakaszai között a következő sorrendben vált:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Menüsáv</li>\n' +
|
||||||
|
' <li>Az egyes eszköztárcsoportok</li>\n' +
|
||||||
|
' <li>Oldalsáv</li>\n' +
|
||||||
|
' <li>Elemútvonal a láblécen</li>\n' +
|
||||||
|
' <li>Szószámátkapcsoló gomb a láblécen</li>\n' +
|
||||||
|
' <li>Márkalink a láblécen</li>\n' +
|
||||||
|
' <li>Szerkesztő átméretezési fogópontja a láblécen</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Ha a felhasználói felület valamelyik eleme nincs jelen, a rendszer kihagyja.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Ha a billentyűzetes navigáció fókusza a láblécen van, és nincs látható oldalsáv, a <strong>Shift+Tab</strong>\n' +
|
||||||
|
' billentyűkombináció lenyomásakor az első eszköztárcsoportra ugrik a fókusz, nem az utolsóra.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigálás a felhasználói felület szakaszain belül</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>A felhasználói felület következő elemére váltáshoz nyomja meg a megfelelő <strong>nyílbillentyűt</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>A <strong>bal</strong> és a <strong>jobb</strong> nyílgomb</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>a menüsávban a menük között vált.</li>\n' +
|
||||||
|
' <li>a menükben megnyit egy almenüt.</li>\n' +
|
||||||
|
' <li>az eszköztárcsoportban a gombok között vált.</li>\n' +
|
||||||
|
' <li>a lábléc elemútvonalán az elemek között vált.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>A <strong>le</strong> és a <strong>fel</strong> nyílgomb</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>a menükben a menüpontok között vált.</li>\n' +
|
||||||
|
' <li>az eszköztár előugró menüjében az elemek között vált.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>A <strong>nyílbillentyűk</strong> lenyomásával körkörösen lépkedhet a fókuszban lévő felhasználói felületi szakasz elemei között.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>A megnyitott menüket, almenüket és előugró menüket az <strong>Esc</strong> billentyűvel zárhatja be.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Ha a fókusz az aktuális felületi elem „felső” részén van, az <strong>Esc</strong> billentyűvel az egész\n' +
|
||||||
|
' billentyűzetes navigációból kilép.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Menüpont vagy eszköztárgomb aktiválása</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Amikor a kívánt menüelem vagy eszköztárgomb van kijelölve, nyomja meg a <strong>Return</strong>, az <strong>Enter</strong>\n' +
|
||||||
|
' vagy a <strong>Szóköz</strong> billentyűt az adott elem vagy gomb aktiválásához.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigálás a lapokkal nem rendelkező párbeszédablakokban</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>A lapokkal nem rendelkező párbeszédablakokban az első interaktív összetevő kapja a fókuszt, amikor a párbeszédpanel megnyílik.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>A párbeszédpanelek interaktív összetevői között a <strong>Tab</strong> vagy a <strong>Shift+Tab</strong> billentyűvel navigálhat.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigálás a lapokkal rendelkező párbeszédablakokban</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>A lapokkal rendelkező párbeszédablakokban a lapmenü első gombja kapja a fókuszt, amikor a párbeszédpanel megnyílik.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>A párbeszédpanel e lapjának interaktív összetevői között a <strong>Tab</strong> vagy\n' +
|
||||||
|
' <strong>Shift+Tab</strong> billentyűvel navigálhat.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>A párbeszédablak másik lapjára úgy léphet, hogy a fókuszt a lapmenüre állítja, majd lenyomja a megfelelő <strong>nyílbillentyűt</strong>\n' +
|
||||||
|
' a rendelkezésre álló lapok közötti lépkedéshez.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.id',
|
||||||
|
'<h1>Memulai navigasi keyboard</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Fokus pada bilah Menu</dt>\n' +
|
||||||
|
' <dd>Windows atau Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Fokus pada Bilah Alat</dt>\n' +
|
||||||
|
' <dd>Windows atau Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Fokus pada footer</dt>\n' +
|
||||||
|
' <dd>Windows atau Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Fokuskan pemberitahuan</dt>\n' +
|
||||||
|
' <dd>Windows atau Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Fokus pada bilah alat kontekstual</dt>\n' +
|
||||||
|
' <dd>Windows, Linux, atau macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navigasi akan dimulai dari item pertama UI, yang akan disorot atau digarisbawahi di\n' +
|
||||||
|
' alur elemen Footer.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Berpindah antar-bagian UI</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Untuk berpindah dari satu bagian UI ke bagian berikutnya, tekan <strong>Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Untuk berpindah dari satu bagian UI ke bagian sebelumnya, tekan <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Urutan <strong>Tab</strong> bagian-bagian UI ini adalah:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Bilah menu</li>\n' +
|
||||||
|
' <li>Tiap grup bilah alat</li>\n' +
|
||||||
|
' <li>Bilah sisi</li>\n' +
|
||||||
|
' <li>Alur elemen di footer</li>\n' +
|
||||||
|
' <li>Tombol aktifkan/nonaktifkan jumlah kata di footer</li>\n' +
|
||||||
|
' <li>Tautan merek di footer</li>\n' +
|
||||||
|
' <li>Pengatur pengubahan ukuran editor di footer</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Jika suatu bagian UI tidak ada, bagian tersebut dilewati.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Jika fokus navigasi keyboard ada pada footer, tetapi tidak ada bilah sisi yang terlihat, menekan <strong>Shift+Tab</strong>\n' +
|
||||||
|
' akan memindahkan fokus ke grup bilah alat pertama, bukan yang terakhir.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Berpindah di dalam bagian-bagian UI</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Untuk berpindah dari satu elemen UI ke elemen berikutnya, tekan tombol <strong>Panah</strong> yang sesuai.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Tombol panah <strong>Kiri</strong> dan <strong>Kanan</strong> untuk</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>berpindah-pindah antar-menu di dalam bilah menu.</li>\n' +
|
||||||
|
' <li>membuka sub-menu di dalam menu.</li>\n' +
|
||||||
|
' <li>berpindah-pindah antar-tombol di dalam grup bilah alat.</li>\n' +
|
||||||
|
' <li>berpindah-pindah antar-item di dalam alur elemen footer.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Tombol panah <strong>Bawah</strong> dan <strong>Atas</strong> untuk</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>berpindah-pindah antar-item menu di dalam menu.</li>\n' +
|
||||||
|
' <li>berpindah-pindah antar-item di dalam menu pop-up bilah alat.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Tombol <strong>Panah</strong> hanya bergerak di dalam bagian UI yang difokuskan.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Untuk menutup menu, sub-menu, atau menu pop-up yang terbuka, tekan tombol <strong>Esc</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Jika fokus sedang berada di ‘atas’ bagian UI tertentu, menekan tombol <strong>Esc</strong> juga dapat mengeluarkan fokus\n' +
|
||||||
|
' dari seluruh navigasi keyboard.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Menjalankan item menu atau tombol bilah alat</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Jika item menu atau tombol bilah alat yang diinginkan tersorot, tekan <strong>Return</strong>, <strong>Enter</strong>,\n' +
|
||||||
|
' atau <strong>Spasi</strong> untuk menjalankan item.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Berpindah dalam dialog tanpa tab</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Dalam dialog tanpa tab, fokus diarahkan pada komponen interaktif pertama saat dialog terbuka.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Berpindah di antara komponen dalam dialog interaktif dengan menekan <strong>Tab</strong> atau <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Berpindah dalam dialog dengan tab</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Dalam dialog yang memiliki tab, fokus diarahkan pada tombol pertama di dalam menu saat dialog terbuka.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Berpindah di antara komponen-komponen interaktif pada tab dialog ini dengan menekan <strong>Tab</strong> atau\n' +
|
||||||
|
' <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Beralih ke tab dialog lain dengan mengarahkan fokus pada menu tab lalu tekan tombol <strong>Panah</strong>\n' +
|
||||||
|
' yang sesuai untuk berpindah ke berbagai tab yang tersedia.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.it',
|
||||||
|
'<h1>Iniziare la navigazione tramite tastiera</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Impostare lo stato attivo per la barra dei menu</dt>\n' +
|
||||||
|
' <dd>Windows o Linux: ALT+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Impostare lo stato attivo per la barra degli strumenti</dt>\n' +
|
||||||
|
' <dd>Windows o Linux: ALT+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Impostare lo stato attivo per il piè di pagina</dt>\n' +
|
||||||
|
' <dd>Windows o Linux: ALT+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Metti a fuoco la notifica</dt>\n' +
|
||||||
|
' <dd>Windows o Linux: ALT+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Impostare lo stato attivo per la barra degli strumenti contestuale</dt>\n' +
|
||||||
|
' <dd>Windows, Linux o macOS: CTRL+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>La navigazione inizierà dalla prima voce dell'interfaccia utente, che sarà evidenziata o sottolineata nel caso della prima voce\n" +
|
||||||
|
" nel percorso dell'elemento del piè di pagina.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
"<h1>Navigare tra le sezioni dell'interfaccia utente</h1>\n" +
|
||||||
|
'\n' +
|
||||||
|
"<p>Per passare da una sezione dell'interfaccia utente alla successiva, premere <strong>TAB</strong>.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
"<p>Per passare da una sezione dell'interfaccia utente alla precedente, premere <strong>MAIUSC+TAB</strong>.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
"<p>L'ordine di <strong>tabulazione</strong> di queste sezioni dell'interfaccia utente è:</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Barra dei menu</li>\n' +
|
||||||
|
' <li>Ogni gruppo di barre degli strumenti</li>\n' +
|
||||||
|
' <li>Barra laterale</li>\n' +
|
||||||
|
" <li>Percorso dell'elemento nel piè di pagina</li>\n" +
|
||||||
|
' <li>Pulsante di attivazione/disattivazione del conteggio delle parole nel piè di pagina</li>\n' +
|
||||||
|
' <li>Collegamento al marchio nel piè di pagina</li>\n' +
|
||||||
|
" <li>Quadratino di ridimensionamento dell'editor nel piè di pagina</li>\n" +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>Se una sezione dell'interfaccia utente non è presente, viene saltata.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
'<p>Se il piè di pagina ha lo stato attivo per la navigazione tramite tastiera e non è presente alcuna barra laterale visibile, premendo <strong>MAIUSC+TAB</strong>\n' +
|
||||||
|
" si sposta lo stato attivo sul primo gruppo di barre degli strumenti, non sull'ultimo.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
"<h1>Navigare all'interno delle sezioni dell'interfaccia utente</h1>\n" +
|
||||||
|
'\n' +
|
||||||
|
"<p>Per passare da un elemento dell'interfaccia utente al successivo, premere il tasto <strong>freccia</strong> appropriato.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
'<p>I tasti freccia <strong>Sinistra</strong> e <strong>Destra</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>consentono di spostarsi tra i menu della barra dei menu.</li>\n' +
|
||||||
|
' <li>aprono un sottomenu in un menu.</li>\n' +
|
||||||
|
' <li>consentono di spostarsi tra i pulsanti di un gruppo di barre degli strumenti.</li>\n' +
|
||||||
|
" <li>consentono di spostarsi tra le voci nel percorso dell'elemento del piè di pagina.</li>\n" +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>I tasti freccia <strong>Giù</strong> e <strong>Su</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>consentono di spostarsi tra le voci di un menu.</li>\n' +
|
||||||
|
' <li>consentono di spostarsi tra le voci di un menu a comparsa della barra degli strumenti.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>I tasti <strong>freccia</strong> consentono di spostarsi all'interno della sezione dell'interfaccia utente con stato attivo.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
'<p>Per chiudere un menu aperto, un sottomenu aperto o un menu a comparsa aperto, premere il tasto <strong>ESC</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>Se lo stato attivo corrente si trova nella parte superiore di una particolare sezione dell'interfaccia utente, premendo il tasto <strong>ESC</strong> si esce\n" +
|
||||||
|
' completamente dalla navigazione tramite tastiera.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Eseguire una voce di menu o un pulsante della barra degli strumenti</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Quando la voce di menu o il pulsante della barra degli strumenti desiderati sono evidenziati, premere il tasto di<strong>ritorno a capo</strong>, il tasto <strong>Invio</strong>\n' +
|
||||||
|
' o la <strong>barra spaziatrice</strong> per eseguirli.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigare nelle finestre di dialogo non a schede</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>Nelle finestre di dialogo non a schede, all'apertura della finestra di dialogo diventa attivo il primo componente interattivo.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
'<p>Per spostarsi tra i componenti interattivi della finestra di dialogo, premere <strong>TAB</strong> o <strong>MAIUSC+TAB</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigare nelle finestre di dialogo a schede</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>Nelle finestre di dialogo a schede, all'apertura della finestra di dialogo diventa attivo il primo pulsante del menu della scheda.</p>\n" +
|
||||||
|
'\n' +
|
||||||
|
'<p>Per spostarsi tra i componenti interattivi di questa scheda della finestra di dialogo, premere <strong>TAB</strong> o\n' +
|
||||||
|
' <strong>MAIUSC+TAB</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>Per passare a un'altra scheda della finestra di dialogo, attivare il menu della scheda e premere il tasto <strong>freccia</strong>\n" +
|
||||||
|
' appropriato per scorrere le schede disponibili.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.ja',
|
||||||
|
'<h1>キーボード ナビゲーションの開始</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>メニュー バーをフォーカス</dt>\n' +
|
||||||
|
' <dd>Windows または Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>ツール バーをフォーカス</dt>\n' +
|
||||||
|
' <dd>Windows または Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>フッターをフォーカス</dt>\n' +
|
||||||
|
' <dd>Windows または Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>通知にフォーカス</dt>\n' +
|
||||||
|
' <dd>Windows または Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>コンテキスト ツール バーをフォーカス</dt>\n' +
|
||||||
|
' <dd>Windows、Linux または macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>ナビゲーションは最初の UI 項目から開始され、強調表示されるか、フッターの要素パスにある最初の項目の場合は\n' +
|
||||||
|
' 下線が引かれます。</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>UI セクション間の移動</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>次の UI セクションに移動するには、<strong>Tab</strong> を押します。</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>前の UI セクションに移動するには、<strong>Shift+Tab</strong> を押します。</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>これらの UI セクションの <strong>Tab</strong> の順序:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>メニュー バー</li>\n' +
|
||||||
|
' <li>各ツール バー グループ</li>\n' +
|
||||||
|
' <li>サイド バー</li>\n' +
|
||||||
|
' <li>フッターの要素パス</li>\n' +
|
||||||
|
' <li>フッターの単語数切り替えボタン</li>\n' +
|
||||||
|
' <li>フッターのブランド リンク</li>\n' +
|
||||||
|
' <li>フッターのエディター サイズ変更ハンドル</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>UI セクションが存在しない場合は、スキップされます。</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>フッターにキーボード ナビゲーション フォーカスがあり、表示可能なサイド バーがない場合、<strong>Shift+Tab</strong> を押すと、\n' +
|
||||||
|
' フォーカスが最後ではなく最初のツール バー グループに移動します。</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>UI セクション内の移動</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>次の UI 要素に移動するには、適切な<strong>矢印</strong>キーを押します。</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>左矢印</strong>と<strong>右矢印</strong>のキー</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>メニュー バーのメニュー間で移動します。</li>\n' +
|
||||||
|
' <li>メニュー内のサブメニューを開きます。</li>\n' +
|
||||||
|
' <li>ツール バー グループのボタン間で移動します。</li>\n' +
|
||||||
|
' <li>フッターの要素パスの項目間で移動します。</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>下矢印</strong>と<strong>上矢印</strong>のキー</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>メニュー内のメニュー項目間で移動します。</li>\n' +
|
||||||
|
' <li>ツール バー ポップアップ メニュー内のメニュー項目間で移動します。</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>矢印</strong>キーで、フォーカスされた UI セクション内で循環します。</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>開いたメニュー、開いたサブメニュー、開いたポップアップ メニューを閉じるには、<strong>Esc</strong> キーを押します。</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>現在のフォーカスが特定の UI セクションの「一番上」にある場合、<strong>Esc</strong> キーを押すと\n' +
|
||||||
|
' キーボード ナビゲーションも完全に閉じられます。</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>メニュー項目またはツール バー ボタンの実行</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>目的のメニュー項目やツール バー ボタンが強調表示されている場合、<strong>リターン</strong>、<strong>Enter</strong>、\n' +
|
||||||
|
' または<strong>スペース キー</strong>を押して項目を実行します。</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>タブのないダイアログの移動</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>タブのないダイアログでは、ダイアログが開くと最初の対話型コンポーネントがフォーカスされます。</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>Tab</strong> または <strong>Shift+Tab</strong> を押して、対話型ダイアログ コンポーネント間で移動します。</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>タブ付きダイアログの移動</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>タブ付きダイアログでは、ダイアログが開くとタブ メニューの最初のボタンがフォーカスされます。</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>Tab</strong> または\n' +
|
||||||
|
' <strong>Shift+Tab</strong> を押して、このダイアログ タブの対話型コンポーネント間で移動します。</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>タブ メニューをフォーカスしてから適切な<strong>矢印</strong>キーを押して表示可能なタブを循環して、\n' +
|
||||||
|
' 別のダイアログに切り替えます。</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.kk',
|
||||||
|
'<h1>Пернетақта навигациясын бастау</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Мәзір жолағын фокустау</dt>\n' +
|
||||||
|
' <dd>Windows немесе Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Құралдар тақтасын фокустау</dt>\n' +
|
||||||
|
' <dd>Windows немесе Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Төменгі деректемені фокустау</dt>\n' +
|
||||||
|
' <dd>Windows немесе Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Хабарландыруды белгілеу</dt>\n' +
|
||||||
|
' <dd>Windows немесе Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Мәтінмәндік құралдар тақтасын фокустау</dt>\n' +
|
||||||
|
' <dd>Windows, Linux немесе macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Навигация бөлектелетін немесе Төменгі деректеме элементінің жолындағы бірінші элемент жағдайында асты сызылатын\n' +
|
||||||
|
' бірінші ПИ элементінен басталады.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>ПИ бөлімдері арасында навигациялау</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Бір ПИ бөлімінен келесісіне өту үшін <strong>Tab</strong> пернесін басыңыз.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Бір ПИ бөлімінен алдыңғысына өту үшін <strong>Shift+Tab</strong> пернесін басыңыз.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Осы ПИ бөлімдерінің <strong>Tab</strong> реті:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Мәзір жолағы</li>\n' +
|
||||||
|
' <li>Әрбір құралдар тақтасы тобы</li>\n' +
|
||||||
|
' <li>Бүйірлік жолақ</li>\n' +
|
||||||
|
' <li>Төменгі деректемедегі элемент жолы</li>\n' +
|
||||||
|
' <li>Төменгі деректемедегі сөздер санын ауыстыру түймесі</li>\n' +
|
||||||
|
' <li>Төменгі деректемедегі брендингтік сілтеме</li>\n' +
|
||||||
|
' <li>Төменгі деректемедегі редактор өлшемін өзгерту тұтқасы</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>ПИ бөлімі көрсетілмесе, ол өткізіп жіберіледі.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Төменгі деректемеде пернетақта навигациясының фокусы болса және бүйірлік жолақ көрінбесе, <strong>Shift+Tab</strong> тіркесімін басу әрекеті\n' +
|
||||||
|
' фокусты соңғысы емес, бірінші құралдар тақтасы тобына жылжытады.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>ПИ бөлімдерінде навигациялау</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Бір ПИ элементінен келесісіне өту үшін <strong>Arrow</strong> (Көрсеткі) пернесін басыңыз.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>Left</strong> (Сол жақ) және <strong>Right</strong> (Оң жақ) көрсеткі пернелері</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>мәзір жолағындағы мәзірлер арасында жылжыту.</li>\n' +
|
||||||
|
' <li>мәзірде ішкі мәзірді ашу.</li>\n' +
|
||||||
|
' <li>құралдар тақтасы тобындағы түймелер арасында жылжыту.</li>\n' +
|
||||||
|
' <li>төменгі деректеме элементінің жолындағы элементтер арасында жылжыту.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>Down</strong> (Төмен) және <strong>Up</strong> (Жоғары) көрсеткі пернелері</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>мәзірдегі мәзір элементтері арасында жылжыту.</li>\n' +
|
||||||
|
' <li>құралдар тақтасының ашылмалы мәзіріндегі мәзір элементтері арасында жылжыту.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Фокусталған ПИ бөліміндегі <strong>Arrow</strong> (Көрсеткі) пернелерінің циклі.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Ашық мәзірді жабу үшін ішкі мәзірді ашып немесе ашылмалы мәзірді ашып, <strong>Esc</strong> пернесін басыңыз.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Ағымдағы фокус белгілі бір ПИ бөлімінің «үстінде» болса, <strong>Esc</strong> пернесін басу әрекеті пернетақта\n' +
|
||||||
|
' навигациясын толығымен жабады.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Мәзір элементін немесе құралдар тақтасы түймесін орындау</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Қажетті мәзір элементі немесе құралдар тақтасы түймесі бөлектелген кезде, элементті орындау үшін <strong>Return</strong> (Қайтару), <strong>Enter</strong> (Енгізу)\n' +
|
||||||
|
' немесе <strong>Space bar</strong> (Бос орын) пернесін басыңыз.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Белгіленбеген диалог терезелерін навигациялау</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Белгіленбеген диалог терезелерінде диалог терезесі ашылған кезде бірінші интерактивті құрамдас фокусталады.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>Tab</strong> немесе <strong>Shift+Tab</strong> пернесін басу арқылы интерактивті диалог терезесінің құрамдастары арасында навигациялаңыз.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Белгіленген диалог терезелерін навигациялау</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Белгіленген диалог терезелерінде диалог терезесі ашылған кезде қойынды мәзіріндегі бірінші түйме фокусталады.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>Tab</strong> немесе\n' +
|
||||||
|
' <strong>Shift+Tab</strong> пернесін басу арқылы осы диалог терезесі қойындысының интерактивті құрамдастары арасында навигациялаңыз.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Қойынды мәзірінің фокусын беру арқылы басқа диалог терезесінің қойындысына ауысып, тиісті <strong>Arrow</strong> (Көрсеткі)\n' +
|
||||||
|
' пернесін басу арқылы қолжетімді қойындылар арасында айналдыруға болады.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.ko_KR',
|
||||||
|
'<h1>키보드 탐색 시작</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>메뉴 모음 포커스 표시</dt>\n' +
|
||||||
|
' <dd>Windows 또는 Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>도구 모음 포커스 표시</dt>\n' +
|
||||||
|
' <dd>Windows 또는 Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>푸터 포커스 표시</dt>\n' +
|
||||||
|
' <dd>Windows 또는 Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>알림 포커스</dt>\n' +
|
||||||
|
' <dd>Windows 또는 Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>컨텍스트 도구 모음에 포커스 표시</dt>\n' +
|
||||||
|
' <dd>Windows, Linux 또는 macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>첫 번째 UI 항목에서 탐색이 시작되며, 이때 첫 번째 항목이 강조 표시되거나 푸터 요소 경로에 있는\n' +
|
||||||
|
' 경우 밑줄 표시됩니다.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>UI 섹션 간 탐색</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>한 UI 섹션에서 다음 UI 섹션으로 이동하려면 <strong>Tab(탭)</strong>을 누릅니다.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>한 UI 섹션에서 이전 UI 섹션으로 돌아가려면 <strong>Shift+Tab(시프트+탭)</strong>을 누릅니다.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>이 UI 섹션의 <strong>Tab(탭)</strong> 순서는 다음과 같습니다.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>메뉴 바</li>\n' +
|
||||||
|
' <li>각 도구 모음 그룹</li>\n' +
|
||||||
|
' <li>사이드바</li>\n' +
|
||||||
|
' <li>푸터의 요소 경로</li>\n' +
|
||||||
|
' <li>푸터의 단어 수 토글 버튼</li>\n' +
|
||||||
|
' <li>푸터의 브랜딩 링크</li>\n' +
|
||||||
|
' <li>푸터의 에디터 크기 변경 핸들</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>UI 섹션이 없는 경우 건너뛰기합니다.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>푸터에 키보드 탐색 포커스가 있고 사이드바는 보이지 않는 경우 <strong>Shift+Tab(시프트+탭)</strong>을 누르면\n' +
|
||||||
|
' 포커스 표시가 마지막이 아닌 첫 번째 도구 모음 그룹으로 이동합니다.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>UI 섹션 내 탐색</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>한 UI 요소에서 다음 UI 요소로 이동하려면 적절한 <strong>화살표</strong> 키를 누릅니다.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>왼쪽</strong>과 <strong>오른쪽</strong> 화살표 키의 용도:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>메뉴 모음에서 메뉴 항목 사이를 이동합니다.</li>\n' +
|
||||||
|
' <li>메뉴에서 하위 메뉴를 엽니다.</li>\n' +
|
||||||
|
' <li>도구 모음 그룹에서 버튼 사이를 이동합니다.</li>\n' +
|
||||||
|
' <li>푸터의 요소 경로에서 항목 간에 이동합니다.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>아래</strong>와 <strong>위</strong> 화살표 키의 용도:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>메뉴에서 메뉴 항목 사이를 이동합니다.</li>\n' +
|
||||||
|
' <li>도구 모음 팝업 메뉴에서 메뉴 항목 사이를 이동합니다.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>화살표</strong> 키는 포커스 표시 UI 섹션 내에서 순환됩니다.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>열려 있는 메뉴, 열려 있는 하위 메뉴 또는 열려 있는 팝업 메뉴를 닫으려면 <strong>Esc</strong> 키를 누릅니다.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>현재 포커스 표시가 특정 UI 섹션 '상단'에 있는 경우 이때도 <strong>Esc</strong> 키를 누르면\n" +
|
||||||
|
' 키보드 탐색이 완전히 종료됩니다.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>메뉴 항목 또는 도구 모음 버튼 실행</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>원하는 메뉴 항목 또는 도구 모음 버튼이 강조 표시되어 있을 때 <strong>Return(리턴)</strong>, <strong>Enter(엔터)</strong>,\n' +
|
||||||
|
' 또는 <strong>Space bar(스페이스바)</strong>를 눌러 해당 항목을 실행합니다.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>탭이 없는 대화 탐색</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>탭이 없는 대화의 경우, 첫 번째 대화형 요소가 포커스 표시된 상태로 대화가 열립니다.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>대화형 요소들 사이를 이동할 때는 <strong>Tab(탭)</strong> 또는 <strong>Shift+Tab(시프트+탭)</strong>을 누릅니다.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>탭이 있는 대화 탐색</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>탭이 있는 대화의 경우, 탭 메뉴에서 첫 번째 버튼이 포커스 표시된 상태로 대화가 열립니다.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>이 대화 탭의 대화형 요소들 사이를 이동할 때는 <strong>Tab(탭)</strong> 또는\n' +
|
||||||
|
' <strong>Shift+Tab(시프트+탭)</strong>을 누릅니다.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>다른 대화 탭으로 이동하려면 탭 메뉴를 포커스 표시한 다음 적절한 <strong>화살표</strong>\n' +
|
||||||
|
' 키를 눌러 사용 가능한 탭들을 지나 원하는 탭으로 이동합니다.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.ms',
|
||||||
|
'<h1>Mulakan navigasi papan kekunci</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Fokus bar Menu</dt>\n' +
|
||||||
|
' <dd>Windows atau Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Fokus Bar Alat</dt>\n' +
|
||||||
|
' <dd>Windows atau Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Fokus pengaki</dt>\n' +
|
||||||
|
' <dd>Windows atau Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Tumpu kepada pemberitahuan</dt>\n' +
|
||||||
|
' <dd>Windows atau Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Fokus bar alat kontekstual</dt>\n' +
|
||||||
|
' <dd>Windows, Linux atau macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navigasi akan bermula pada item UI pertama, yang akan diserlahkan atau digaris bawah dalam saiz item pertama dalam\n' +
|
||||||
|
' laluan elemen Pengaki.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigasi antara bahagian UI</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Untuk bergerak dari satu bahagian UI ke yang seterusnya, tekan <strong>Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Untuk bergerak dari satu bahagian UI ke yang sebelumnya, tekan <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Tertib <strong>Tab</strong> bahagian UI ini ialah:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Bar menu</li>\n' +
|
||||||
|
' <li>Setiap kumpulan bar alat</li>\n' +
|
||||||
|
' <li>Bar sisi</li>\n' +
|
||||||
|
' <li>Laluan elemen dalam pengaki</li>\n' +
|
||||||
|
' <li>Butang togol kiraan perkataan dalam pengaki</li>\n' +
|
||||||
|
' <li>Pautan penjenamaan dalam pengaki</li>\n' +
|
||||||
|
' <li>Pemegang saiz semula editor dalam pengaki</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Jika bahagian UI tidak wujud, ia dilangkau.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Jika pengaki mempunyai fokus navigasi papan kekunci dan tiada bar sisi kelihatan, menekan <strong>Shift+Tab</strong>\n' +
|
||||||
|
' akan mengalihkan fokus ke kumpulan bar alat pertama, bukannya yang terakhir.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigasi dalam bahagian UI</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Untuk bergerak dari satu elemen UI ke yang seterusnya, tekan kekunci <strong>Anak Panah</strong> yang bersesuaian.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Kekunci anak panah <strong>Kiri</strong> dan <strong>Kanan</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>bergerak antara menu dalam bar menu.</li>\n' +
|
||||||
|
' <li>membukan submenu dalam menu.</li>\n' +
|
||||||
|
' <li>bergerak antara butang dalam kumpulan bar alat.</li>\n' +
|
||||||
|
' <li>Laluan elemen dalam pengaki.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Kekunci anak panah <strong>Bawah</strong> dan <strong>Atas</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>bergerak antara item menu dalam menu.</li>\n' +
|
||||||
|
' <li>bergerak antara item dalam menu timbul bar alat.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Kekunci <strong>Anak Panah</strong> berkitar dalam bahagian UI difokuskan.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Untuk menutup menu buka, submenu terbuka atau menu timbul terbuka, tekan kekunci <strong>Esc</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>Jika fokus semasa berada di bahagian 'atas' bahagian UI tertentu, menekan kekunci <strong>Esc</strong> juga akan keluar daripada\n" +
|
||||||
|
' navigasi papan kekunci sepenuhnya.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Laksanakan item menu atau butang bar alat</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Apabila item menu atau butang bar alat yang diinginkan diserlahkan, tekan <strong>Return</strong>, <strong>Enter</strong>,\n' +
|
||||||
|
' atau <strong>bar Space</strong> untuk melaksanakan item.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigasi ke dialog tidak bertab</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Dalam dialog tidak bertab, komponen interaksi pertama difokuskan apabila dialog dibuka.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navigasi antara komponen dialog interaktif dengan menekan <strong>Tab</strong> atau <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigasi ke dialog bertab</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Dalam dialog bertab, butang pertama dalam menu tab difokuskan apabila dialog dibuka.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navigasi antara komponen interaktif tab dialog ini dengan menekan <strong>Tab</strong> atau\n' +
|
||||||
|
' <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Tukar kepada tab dialog lain dengan memfokuskan menu tab, kemudian menekan kekunci <strong>Anak Panah</strong> yang bersesuaian\n' +
|
||||||
|
' untuk berkitar menerusi tab yang tersedia.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.nb_NO',
|
||||||
|
'<h1>Starte tastaturnavigering</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Utheve menylinjen</dt>\n' +
|
||||||
|
' <dd>Windows eller Linux: Alt + F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Utheve verktøylinjen</dt>\n' +
|
||||||
|
' <dd>Windows eller Linux: Alt + F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Utheve bunnteksten</dt>\n' +
|
||||||
|
' <dd>Windows eller Linux: Alt + F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Fokuser på varselet</dt>\n' +
|
||||||
|
' <dd>Windows eller Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Utheve en kontekstuell verktøylinje</dt>\n' +
|
||||||
|
' <dd>Windows, Linux eller macOS: Ctrl + F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navigeringen starter ved det første grensesnittelementet, som utheves, eller understrekes når det gjelder det første elementet i\n' +
|
||||||
|
' elementstien i bunnteksten.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigere mellom grensesnittdeler</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Du kan bevege deg fra én grensesnittdel til den neste ved å trykke på <strong>tabulatortasten</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Du kan bevege deg fra én grensesnittdel til den forrige ved å trykke på <strong>Shift + tabulatortasten</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Rekkefølgen til <strong>tabulatortasten</strong> gjennom grensesnittdelene er:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Menylinjen</li>\n' +
|
||||||
|
' <li>Hver gruppe på verktøylinjen</li>\n' +
|
||||||
|
' <li>Sidestolpen</li>\n' +
|
||||||
|
' <li>Elementstien i bunnteksten</li>\n' +
|
||||||
|
' <li>Veksleknappen for ordantall i bunnteksten</li>\n' +
|
||||||
|
' <li>Merkelenken i bunnteksten</li>\n' +
|
||||||
|
' <li>Skaleringshåndtaket for redigeringsprogrammet i bunnteksten</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Hvis en grensesnittdel ikke er til stede, blir den hoppet over.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Hvis tastaturnavigeringen har uthevet bunnteksten og det ikke finnes en synlig sidestolpe, kan du trykke på <strong>Shift + tabulatortasten</strong>\n' +
|
||||||
|
' for å flytte fokuset til den første gruppen på verktøylinjen i stedet for den siste.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigere innenfor grensesnittdeler</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Du kan bevege deg fra ett grensesnittelement til det neste ved å trykke på den aktuelle <strong>piltasten</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>De <strong>venstre</strong> og <strong>høyre</strong> piltastene</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>beveger deg mellom menyer på menylinjen.</li>\n' +
|
||||||
|
' <li>åpner en undermeny i en meny.</li>\n' +
|
||||||
|
' <li>beveger deg mellom knapper i en gruppe på verktøylinjen.</li>\n' +
|
||||||
|
' <li>beveger deg mellom elementer i elementstien i bunnteksten.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>Ned</strong>- og <strong>opp</strong>-piltastene</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>beveger deg mellom menyelementer i en meny.</li>\n' +
|
||||||
|
' <li>beveger deg mellom elementer i en hurtigmeny på verktøylinjen.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Med <strong>piltastene</strong> kan du bevege deg innenfor den uthevede grensesnittdelen.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Du kan lukke en åpen meny, en åpen undermeny eller en åpen hurtigmeny ved å klikke på <strong>Esc</strong>-tasten.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Hvis det øverste nivået i en grensesnittdel er uthevet, kan du ved å trykke på <strong>Esc</strong> også avslutte\n' +
|
||||||
|
' tastaturnavigeringen helt.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Utføre et menyelement eller en knapp på en verktøylinje</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Når det ønskede menyelementet eller verktøylinjeknappen er uthevet, trykker du på <strong>Retur</strong>, <strong>Enter</strong>,\n' +
|
||||||
|
' eller <strong>mellomromstasten</strong> for å utføre elementet.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigere i dialogbokser uten faner</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>I dialogbokser uten faner blir den første interaktive komponenten uthevet når dialogboksen åpnes.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Naviger mellom interaktive komponenter i dialogboksen ved å trykke på <strong>tabulatortasten</strong> eller <strong>Shift + tabulatortasten</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigere i fanebaserte dialogbokser</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>I fanebaserte dialogbokser blir den første knappen i fanemenyen uthevet når dialogboksen åpnes.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Naviger mellom interaktive komponenter i fanen ved å trykke på <strong>tabulatortasten</strong> eller\n' +
|
||||||
|
' <strong>Shift + tabulatortasten</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Veksle til en annen fane i dialogboksen ved å utheve fanemenyen, og trykk deretter på den aktuelle <strong>piltasten</strong>\n' +
|
||||||
|
' for å bevege deg mellom de tilgjengelige fanene.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.nl',
|
||||||
|
'<h1>Toetsenbordnavigatie starten</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Focus op de menubalk instellen</dt>\n' +
|
||||||
|
' <dd>Windows of Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Focus op de werkbalk instellen</dt>\n' +
|
||||||
|
' <dd>Windows of Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Focus op de voettekst instellen</dt>\n' +
|
||||||
|
' <dd>Windows of Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Focus op de melding instellen</dt>\n' +
|
||||||
|
' <dd>Windows of Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Focus op een contextuele werkbalk instellen</dt>\n' +
|
||||||
|
' <dd>Windows, Linux of macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>De navigatie start bij het eerste UI-item, dat wordt gemarkeerd of onderstreept als het eerste item zich in\n' +
|
||||||
|
' in het elementenpad van de voettekst bevindt.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigeren tussen UI-secties</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Druk op <strong>Tab</strong> om naar de volgende UI-sectie te gaan.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Druk op <strong>Shift+Tab</strong> om naar de vorige UI-sectie te gaan.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>De <strong>Tab</strong>-volgorde van deze UI-secties is:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Menubalk</li>\n' +
|
||||||
|
' <li>Elke werkbalkgroep</li>\n' +
|
||||||
|
' <li>Zijbalk</li>\n' +
|
||||||
|
' <li>Elementenpad in de voettekst</li>\n' +
|
||||||
|
' <li>Wisselknop voor aantal woorden in de voettekst</li>\n' +
|
||||||
|
' <li>Merkkoppeling in de voettekst</li>\n' +
|
||||||
|
' <li>Greep voor het wijzigen van het formaat van de editor in de voettekst</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Als een UI-sectie niet aanwezig is, wordt deze overgeslagen.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Als de focus van de toetsenbordnavigatie is ingesteld op de voettekst en er geen zichtbare zijbalk is, kun je op <strong>Shift+Tab</strong> drukken\n' +
|
||||||
|
' om de focus naar de eerste werkbalkgroep in plaats van de laatste te verplaatsen.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigeren binnen UI-secties</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Druk op de <strong>pijltjestoets</strong> om naar het betreffende UI-element te gaan.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Met de pijltjestoetsen <strong>Links</strong> en <strong>Rechts</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
" <li>wissel je tussen menu's in de menubalk.</li>\n" +
|
||||||
|
' <li>open je een submenu in een menu.</li>\n' +
|
||||||
|
' <li>wissel je tussen knoppen in een werkbalkgroep.</li>\n' +
|
||||||
|
' <li>wissel je tussen items in het elementenpad in de voettekst.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Met de pijltjestoetsen <strong>Omlaag</strong> en <strong>Omhoog</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>wissel je tussen menu-items in een menu.</li>\n' +
|
||||||
|
' <li>wissel je tussen items in een werkbalkpop-upmenu.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Met de <strong>pijltjestoetsen</strong> wissel je binnen de UI-sectie waarop de focus is ingesteld.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Druk op de toets <strong>Esc</strong> om een geopend menu, submenu of pop-upmenu te sluiten.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
"<p>Als de huidige focus is ingesteld 'bovenaan' een bepaalde UI-sectie, kun je op de toets <strong>Esc</strong> drukken\n" +
|
||||||
|
' om de toetsenbordnavigatie af te sluiten.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Een menu-item of werkbalkknop uitvoeren</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Als het gewenste menu-item of de gewenste werkbalkknop is gemarkeerd, kun je op <strong>Return</strong>, <strong>Enter</strong>\n' +
|
||||||
|
' of de <strong>spatiebalk</strong> drukken om het item uit te voeren.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigeren in dialoogvensters zonder tabblad</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Als een dialoogvenster zonder tabblad wordt geopend, wordt de focus ingesteld op het eerste interactieve onderdeel.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Je kunt navigeren tussen interactieve onderdelen van een dialoogvenster door op <strong>Tab</strong> of <strong>Shift+Tab</strong> te drukken.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigeren in dialoogvensters met tabblad</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Als een dialoogvenster met tabblad wordt geopend, wordt de focus ingesteld op de eerste knop in het tabbladmenu.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Je kunt navigeren tussen interactieve onderdelen van dit tabblad van het dialoogvenster door op <strong>Tab</strong> of\n' +
|
||||||
|
' <strong>Shift+Tab</strong> te drukken.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Je kunt overschakelen naar een ander tabblad van het dialoogvenster door de focus in te stellen op het tabbladmenu en vervolgens op de juiste <strong>pijltjestoets</strong>\n' +
|
||||||
|
' te drukken om tussen de beschikbare tabbladen te wisselen.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.pl',
|
||||||
|
'<h1>Początek nawigacji przy użyciu klawiatury</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Ustaw fokus na pasek menu</dt>\n' +
|
||||||
|
' <dd>Windows lub Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Ustaw fokus na pasek narzędzi</dt>\n' +
|
||||||
|
' <dd>Windows lub Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Ustaw fokus na sekcję Footer</dt>\n' +
|
||||||
|
' <dd>Windows lub Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Skup się na powiadomieniu</dt>\n' +
|
||||||
|
' <dd>Windows lub Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Ustaw fokus na kontekstowy pasek narzędzi</dt>\n' +
|
||||||
|
' <dd>Windows, Linux lub macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Nawigacja zostanie rozpoczęta od pierwszego elementu interfejsu użytkownika, który jest podświetlony lub — w przypadku pierwszego elementu\n' +
|
||||||
|
' w ścieżce elementów w sekcji Footer — podkreślony.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Nawigacja pomiędzy sekcjami interfejsu użytkownika</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Aby przenieść się z danej sekcji interfejsu użytkownika do następnej, naciśnij <strong>Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Aby przenieść się z danej sekcji interfejsu użytkownika do poprzedniej, naciśnij <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Kolejność klawisza <strong>Tab</strong> w takich sekcjach interfejsu użytkownika jest następująca:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Pasek menu</li>\n' +
|
||||||
|
' <li>Każda grupa na pasku narzędzi</li>\n' +
|
||||||
|
' <li>Pasek boczny</li>\n' +
|
||||||
|
' <li>Ścieżka elementów w sekcji Footer</li>\n' +
|
||||||
|
' <li>Przycisk przełączania liczby słów w sekcji Footer</li>\n' +
|
||||||
|
' <li>Łącze brandujące w sekcji Footer</li>\n' +
|
||||||
|
' <li>Uchwyt zmiany rozmiaru edytora w sekcji Footer</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Jeżeli nie ma sekcji interfejsu użytkownika, jest to pomijane.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Jeżeli na sekcji Footer jest ustawiony fokus nawigacji przy użyciu klawiatury i nie ma widocznego paska bocznego, naciśnięcie <strong>Shift+Tab</strong>\n' +
|
||||||
|
' przenosi fokus na pierwszą grupę paska narzędzi, a nie na ostatnią.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Nawigacja wewnątrz sekcji interfejsu użytkownika</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Aby przenieść się z danego elementu interfejsu użytkownika do następnego, naciśnij odpowiedni klawisz <strong>strzałki</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Klawisze strzałek <strong>w prawo</strong> i <strong>w lewo</strong> służą do</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>przenoszenia się pomiędzy menu na pasku menu,</li>\n' +
|
||||||
|
' <li>otwarcia podmenu w menu,</li>\n' +
|
||||||
|
' <li>przenoszenia się pomiędzy przyciskami w grupie paska narzędzi,</li>\n' +
|
||||||
|
' <li>przenoszenia się pomiędzy elementami w ścieżce elementów w sekcji Footer.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Klawisze strzałek <strong>w dół</strong> i <strong>w górę</strong> służą do</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>przenoszenia się pomiędzy elementami menu w menu,</li>\n' +
|
||||||
|
' <li>przenoszenia się pomiędzy elementami w wyskakującym menu paska narzędzi.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Klawisze <strong>strzałek</strong> służą do przemieszczania się w sekcji interfejsu użytkownika z ustawionym fokusem.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Aby zamknąć otwarte menu, otwarte podmenu lub otwarte menu wyskakujące, naciśnij klawisz <strong>Esc</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Jeżeli fokus jest ustawiony na górze konkretnej sekcji interfejsu użytkownika, naciśnięcie klawisza <strong>Esc</strong> powoduje wyjście\n' +
|
||||||
|
' z nawigacji przy użyciu klawiatury.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Wykonanie elementu menu lub przycisku paska narzędzi</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Gdy podświetlony jest żądany element menu lub przycisk paska narzędzi, naciśnij klawisz <strong>Return</strong>, <strong>Enter</strong>\n' +
|
||||||
|
' lub <strong>Spacja</strong>, aby go wykonać.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Nawigacja po oknie dialogowym bez kart</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Gdy otwiera się okno dialogowe bez kart, fokus ustawiany jest na pierwszą interaktywną część okna.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Pomiędzy interaktywnymi częściami okna dialogowego nawiguj, naciskając klawisze <strong>Tab</strong> lub <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Nawigacja po oknie dialogowym z kartami</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>W przypadku okna dialogowego z kartami po otwarciu okna dialogowego fokus ustawiany jest na pierwszy przycisk w menu karty.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Nawigację pomiędzy interaktywnymi częściami karty okna dialogowego prowadzi się poprzez naciskanie klawiszy <strong>Tab</strong> lub\n' +
|
||||||
|
' <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Przełączenie się na inną kartę okna dialogowego wykonuje się poprzez ustawienie fokusu na menu karty i naciśnięcie odpowiedniego klawisza <strong>strzałki</strong>\n' +
|
||||||
|
' w celu przemieszczenia się pomiędzy dostępnymi kartami.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.pt_BR',
|
||||||
|
'<h1>Iniciar navegação pelo teclado</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Foco na barra de menus</dt>\n' +
|
||||||
|
' <dd>Windows ou Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Foco na barra de ferramentas</dt>\n' +
|
||||||
|
' <dd>Windows ou Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Foco no rodapé</dt>\n' +
|
||||||
|
' <dd>Windows ou Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Foco na notificação</dt>\n' +
|
||||||
|
' <dd>Windows ou Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Foco na barra de ferramentas contextual</dt>\n' +
|
||||||
|
' <dd>Windows, Linux ou macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>A navegação inicia no primeiro item da IU, que será destacado ou sublinhado no caso do primeiro item no\n' +
|
||||||
|
' caminho do elemento Rodapé.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navegar entre seções da IU</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Para ir de uma seção da IU para a seguinte, pressione <strong>Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Para ir de uma seção da IU para a anterior, pressione <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>A ordem de <strong>Tab</strong> destas seções da IU é:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Barra de menus</li>\n' +
|
||||||
|
' <li>Cada grupo da barra de ferramentas</li>\n' +
|
||||||
|
' <li>Barra lateral</li>\n' +
|
||||||
|
' <li>Caminho do elemento no rodapé</li>\n' +
|
||||||
|
' <li>Botão de alternar contagem de palavras no rodapé</li>\n' +
|
||||||
|
' <li>Link da marca no rodapé</li>\n' +
|
||||||
|
' <li>Alça de redimensionamento do editor no rodapé</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Se não houver uma seção da IU, ela será pulada.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Se o rodapé tiver o foco da navegação pelo teclado e não houver uma barra lateral visível, pressionar <strong>Shift+Tab</strong>\n' +
|
||||||
|
' move o foco para o primeiro grupo da barra de ferramentas, não para o último.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navegar dentro das seções da IU</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Para ir de um elemento da IU para o seguinte, pressione a <strong>Seta</strong> correspondente.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>As teclas de seta <strong>Esquerda</strong> e <strong>Direita</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>movem entre menus na barra de menus.</li>\n' +
|
||||||
|
' <li>abrem um submenu em um menu.</li>\n' +
|
||||||
|
' <li>movem entre botões em um grupo da barra de ferramentas.</li>\n' +
|
||||||
|
' <li>movem entre itens no caminho do elemento do rodapé.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>As teclas de seta <strong>Abaixo</strong> e <strong>Acima</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>movem entre itens de menu em um menu.</li>\n' +
|
||||||
|
' <li>movem entre itens em um menu suspenso da barra de ferramentas.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>As teclas de <strong>Seta</strong> alternam dentre a seção da IU em foco.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Para fechar um menu aberto, um submenu aberto ou um menu suspenso aberto, pressione <strong>Esc</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Se o foco atual estiver no ‘alto’ de determinada seção da IU, pressionar <strong>Esc</strong> também sai\n' +
|
||||||
|
' totalmente da navegação pelo teclado.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Executar um item de menu ou botão da barra de ferramentas</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Com o item de menu ou botão da barra de ferramentas desejado destacado, pressione <strong>Return</strong>, <strong>Enter</strong>,\n' +
|
||||||
|
' ou a <strong>Barra de espaço</strong> para executar o item.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navegar por caixas de diálogo sem guias</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Em caixas de diálogo sem guias, o primeiro componente interativo recebe o foco quando a caixa de diálogo abre.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navegue entre componentes interativos de caixa de diálogo pressionando <strong>Tab</strong> ou <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navegar por caixas de diálogo com guias</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Em caixas de diálogo com guias, o primeiro botão no menu da guia recebe o foco quando a caixa de diálogo abre.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navegue entre componentes interativos dessa guia da caixa de diálogo pressionando <strong>Tab</strong> ou\n' +
|
||||||
|
' <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Alterne para outra guia da caixa de diálogo colocando o foco no menu da guia e pressionando a <strong>Seta</strong>\n' +
|
||||||
|
' adequada para percorrer as guias disponíveis.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.pt_PT',
|
||||||
|
'<h1>Iniciar navegação com teclado</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Foco na barra de menu</dt>\n' +
|
||||||
|
' <dd>Windows ou Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Foco na barra de ferramentas</dt>\n' +
|
||||||
|
' <dd>Windows ou Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Foco no rodapé</dt>\n' +
|
||||||
|
' <dd>Windows ou Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Focar a notificação</dt>\n' +
|
||||||
|
' <dd>Windows ou Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Foco numa barra de ferramentas contextual</dt>\n' +
|
||||||
|
' <dd>Windows, Linux ou macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>A navegação começará no primeiro item de IU, que estará realçado ou sublinhado, no caso do primeiro item no\n' +
|
||||||
|
' caminho do elemento do rodapé.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navegar entre secções de IU</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Para se mover de uma secção de IU para a seguinte, prima <strong>Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Para se mover de uma secção de IU para a anterior, prima <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>A ordem de <strong>tabulação</strong> destas secções de IU é:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Barra de menu</li>\n' +
|
||||||
|
' <li>Cada grupo da barra de ferramentas</li>\n' +
|
||||||
|
' <li>Barra lateral</li>\n' +
|
||||||
|
' <li>Caminho do elemento no rodapé</li>\n' +
|
||||||
|
' <li>Botão de alternar da contagem de palavras no rodapé</li>\n' +
|
||||||
|
' <li>Ligação da marca no rodapé</li>\n' +
|
||||||
|
' <li>Alça de redimensionamento do editor no rodapé</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Se uma secção de IU não estiver presente, é ignorada.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Se o rodapé tiver foco de navegação com teclado e não existir uma barra lateral visível, premir <strong>Shift+Tab</strong>\n' +
|
||||||
|
' move o foco para o primeiro grupo da barra de ferramentas e não para o último.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navegar nas secções de IU</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Para se mover de um elemento de IU para o seguinte, prima a tecla de <strong>seta</strong> adequada.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>As teclas de seta <strong>Para a esquerda</strong> e <strong>Para a direita</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>movem-se entre menus na barra de menu.</li>\n' +
|
||||||
|
' <li>abrem um submenu num menu.</li>\n' +
|
||||||
|
' <li>movem-se entre botões num grupo da barra de ferramentas.</li>\n' +
|
||||||
|
' <li>movem-se entre itens no caminho do elemento do rodapé.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>As teclas de seta <strong>Para cima</strong> e <strong>Para baixo</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>movem-se entre itens de menu num menu.</li>\n' +
|
||||||
|
' <li>movem-se entre itens num menu de pop-up da barra de ferramentas.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>As teclas de <strong>seta</strong> deslocam-se ciclicamente na secção de IU em foco.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Para fechar um menu aberto, um submenu aberto ou um menu de pop-up aberto, prima a tecla <strong>Esc</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Se o foco atual estiver no "topo" de determinada secção de IU, premir a tecla <strong>Esc</strong> também fecha\n' +
|
||||||
|
' completamente a navegação com teclado.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Executar um item de menu ou botão da barra de ferramentas</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Quando o item de menu ou o botão da barra de ferramentas pretendido estiver realçado, prima <strong>Retrocesso</strong>, <strong>Enter</strong>\n' +
|
||||||
|
' ou a <strong>Barra de espaço</strong> para executar o item.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navegar em diálogos sem separadores</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Nos diálogos sem separadores, o primeiro componente interativo fica em foco quando o diálogo abre.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navegue entre componentes interativos do diálogo, premindo <strong>Tab</strong> ou <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navegar em diálogos com separadores</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Nos diálogos com separadores, o primeiro botão no menu do separador fica em foco quando o diálogo abre.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navegue entre os componentes interativos deste separador do diálogo, premindo <strong>Tab</strong> ou\n' +
|
||||||
|
' <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Mude para outro separador do diálogo colocando o menu do separador em foco e, em seguida, premindo a tecla de <strong>seta</strong>\n' +
|
||||||
|
' adequada para se deslocar ciclicamente pelos separadores disponíveis.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.ro',
|
||||||
|
'<h1>Începeți navigarea de la tastatură</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Focalizare pe bara de meniu</dt>\n' +
|
||||||
|
' <dd>Windows sau Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Focalizare pe bara de instrumente</dt>\n' +
|
||||||
|
' <dd>Windows sau Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Focalizare pe subsol</dt>\n' +
|
||||||
|
' <dd>Windows sau Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Focalizare pe notificare</dt>\n' +
|
||||||
|
' <dd>Windows sau Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Focalizare pe o bară de instrumente contextuală</dt>\n' +
|
||||||
|
' <dd>Windows, Linux sau macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navigarea va începe de la primul element al interfeței cu utilizatorul, care va fi evidențiat sau subliniat în cazul primului element din\n' +
|
||||||
|
' calea elementului Subsol.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigați între secțiunile interfeței cu utilizatorul</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Pentru a trece de la o secțiune a interfeței cu utilizatorul la alta, apăsați <strong>Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Pentru a trece de la o secțiune a interfeței cu utilizatorul la cea anterioară, apăsați <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Ordinea cu <strong>Tab</strong> a acestor secțiuni ale interfeței cu utilizatorul este următoarea:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Bara de meniu</li>\n' +
|
||||||
|
' <li>Fiecare grup de bare de instrumente</li>\n' +
|
||||||
|
' <li>Bara laterală</li>\n' +
|
||||||
|
' <li>Calea elementului în subsol</li>\n' +
|
||||||
|
' <li>Buton de comutare a numărului de cuvinte în subsol</li>\n' +
|
||||||
|
' <li>Link de branding în subsol</li>\n' +
|
||||||
|
' <li>Mâner de redimensionare a editorului în subsol</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>În cazul în care o secțiune a interfeței cu utilizatorul nu este prezentă, aceasta este omisă.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>În cazul în care subsolul are focalizarea navigației asupra tastaturii și nu există o bară laterală vizibilă, apăsarea butonului <strong>Shift+Tab</strong>\n' +
|
||||||
|
' mută focalizarea pe primul grup de bare de instrumente, nu pe ultimul.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigați în secțiunile interfeței cu utilizatorul</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Pentru a trece de la un element de interfață cu utilizatorul la următorul, apăsați tasta cu <strong>săgeata</strong> corespunzătoare.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Tastele cu săgeți către <strong>stânga</strong> și <strong>dreapta</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>navighează între meniurile din bara de meniuri.</li>\n' +
|
||||||
|
' <li>deschid un sub-meniu dintr-un meniu.</li>\n' +
|
||||||
|
' <li>navighează între butoanele dintr-un grup de bare de instrumente.</li>\n' +
|
||||||
|
' <li>navighează între elementele din calea elementelor subsolului.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Tastele cu săgeți în <strong>sus</strong> și în <strong>jos</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>navighează între elementele de meniu dintr-un meniu.</li>\n' +
|
||||||
|
' <li>navighează între elementele unui meniu pop-up din bara de instrumente.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Tastele cu <strong>săgeți</strong> navighează în cadrul secțiunii interfeței cu utilizatorul asupra căreia se focalizează.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Pentru a închide un meniu deschis, un sub-meniu deschis sau un meniu pop-up deschis, apăsați tasta <strong>Esc</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Dacă focalizarea curentă este asupra „părții superioare” a unei anumite secțiuni a interfeței cu utilizatorul, prin apăsarea tastei <strong>Esc</strong> se iese, de asemenea,\n' +
|
||||||
|
' în întregime din navigarea de la tastatură.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Executarea unui element de meniu sau a unui buton din bara de instrumente</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Atunci când elementul de meniu dorit sau butonul dorit din bara de instrumente este evidențiat, apăsați <strong>Return</strong>, <strong>Enter</strong>,\n' +
|
||||||
|
' sau <strong>bara de spațiu</strong> pentru a executa elementul.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigarea de dialoguri fără file</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>În dialogurile fără file, prima componentă interactivă beneficiază de focalizare la deschiderea dialogului.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navigați între componentele dialogului interactiv apăsând <strong>Tab</strong> sau <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigarea de dialoguri cu file</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>În dialogurile cu file, primul buton din meniul cu file beneficiază de focalizare la deschiderea dialogului.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navigați între componentele interactive ale acestei file de dialog apăsând <strong>Tab</strong> sau\n' +
|
||||||
|
' <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Treceți la o altă filă de dialog focalizând asupra meniului cu file și apoi apăsând <strong>săgeata</strong> corespunzătoare\n' +
|
||||||
|
' pentru a parcurge filele disponibile.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.ru',
|
||||||
|
'<h1>Начните управление с помощью клавиатуры</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Фокус на панели меню</dt>\n' +
|
||||||
|
' <dd>Windows или Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Фокус на панели инструментов</dt>\n' +
|
||||||
|
' <dd>Windows или Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Фокус на нижнем колонтитуле</dt>\n' +
|
||||||
|
' <dd>Windows или Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Фокус на уведомлении</dt>\n' +
|
||||||
|
' <dd>Windows или Linux: Alt+12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Фокус на контекстной панели инструментов</dt>\n' +
|
||||||
|
' <dd>Windows, Linux или macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Первый доступный для управления элемент интерфейса будет выделен цветом или подчеркнут (если он находится\n' +
|
||||||
|
' в пути элементов нижнего колонтитула).</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Переход между разделами пользовательского интерфейса</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Чтобы перейти из текущего раздела интерфейса в следующий, нажмите <strong>Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Чтобы перейти из текущего раздела интерфейса в предыдущий, нажмите <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p><strong>Вкладки</strong> разделов интерфейса расположены в следующем порядке:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Панель меню</li>\n' +
|
||||||
|
' <li>Группы панели инструментов</li>\n' +
|
||||||
|
' <li>Боковая панель</li>\n' +
|
||||||
|
' <li>Путь элементов нижнего колонтитула</li>\n' +
|
||||||
|
' <li>Подсчет слов/символов в нижнем колонтитуле</li>\n' +
|
||||||
|
' <li>Брендовая ссылка в нижнем колонтитуле</li>\n' +
|
||||||
|
' <li>Угол для изменения размера окна редактора</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Если раздел интерфейса отсутствует, он пропускается.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Если при управлении с клавиатуры фокус находится на нижнем колонтитуле, а видимая боковая панель отсутствует, то при нажатии сочетания клавиш <strong>Shift+Tab</strong>\n' +
|
||||||
|
' фокус переносится на первую группу панели инструментов, а не на последнюю.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Переход между элементами внутри разделов пользовательского интерфейса</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Чтобы перейти от текущего элемента интерфейса к следующему, нажмите соответствующую <strong>клавишу со стрелкой</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Клавиши со стрелками <strong>влево</strong> и <strong>вправо</strong> позволяют</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>перемещаться между разными меню в панели меню.</li>\n' +
|
||||||
|
' <li>открывать разделы меню.</li>\n' +
|
||||||
|
' <li>перемещаться между кнопками в группе панели инструментов.</li>\n' +
|
||||||
|
' <li>перемещаться между элементами в пути элементов нижнего колонтитула.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Клавиши со стрелками <strong>вниз</strong> и <strong>вверх</strong> позволяют</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>перемещаться между элементами одного меню.</li>\n' +
|
||||||
|
' <li>перемещаться между элементами всплывающего меню в панели инструментов.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>При использовании <strong>клавиш со стрелками</strong> вы будете циклически перемещаться по элементам в пределах выбранного раздела интерфейса.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Чтобы закрыть открытое меню, его раздел или всплывающее меню, нажмите клавишу <strong>Esc</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Если фокус находится наверху какого-либо раздела интерфейса, нажатие клавиши <strong>Esc</strong> также приведет\n' +
|
||||||
|
' к выходу из режима управления с помощью клавиатуры.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Использование элемента меню или кнопки на панели инструментов</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Когда элемент меню или кнопка панели инструментов будут выделены, нажмите <strong>Return</strong>, <strong>Enter</strong>\n' +
|
||||||
|
' или <strong>Space</strong>, чтобы их активировать.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Управление в диалоговом окне без вкладок</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>При открытии диалогового окна без вкладок фокус переносится на первый интерактивный компонент.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Для перехода между интерактивными компонентами диалогового окна нажимайте <strong>Tab</strong> или <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Управление в диалоговом окне с вкладками</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>При открытии диалогового окна с вкладками фокус переносится на первую кнопку в меню вкладок.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Для перехода между интерактивными компонентами этой вкладки диалогового окна нажимайте <strong>Tab</strong> или\n' +
|
||||||
|
' <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Для перехода на другую вкладку диалогового окна переместите фокус на меню вкладок, а затем используйте <strong>клавиши со стрелками</strong>\n' +
|
||||||
|
' для циклического переключения между доступными вкладками.</p>\n');
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
tinymce.Resource.add('tinymce.html-i18n.help-keynav.sk',
|
||||||
|
'<h1>Začíname s navigáciou pomocou klávesnice</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<dl>\n' +
|
||||||
|
' <dt>Prejsť na panel s ponukami</dt>\n' +
|
||||||
|
' <dd>Windows alebo Linux: Alt+F9</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F9</dd>\n' +
|
||||||
|
' <dt>Prejsť na panel nástrojov</dt>\n' +
|
||||||
|
' <dd>Windows alebo Linux: Alt+F10</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F10</dd>\n' +
|
||||||
|
' <dt>Prejsť na pätičku</dt>\n' +
|
||||||
|
' <dd>Windows alebo Linux: Alt+F11</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F11</dd>\n' +
|
||||||
|
' <dt>Zaostriť na oznámenie</dt>\n' +
|
||||||
|
' <dd>Windows alebo Linux: Alt+F12</dd>\n' +
|
||||||
|
' <dd>macOS: ⌥F12</dd>\n' +
|
||||||
|
' <dt>Prejsť na kontextový panel nástrojov</dt>\n' +
|
||||||
|
' <dd>Windows, Linux alebo macOS: Ctrl+F9</dd>\n' +
|
||||||
|
'</dl>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Navigácia začne pri prvej položke používateľského rozhrania, ktorá bude zvýraznená alebo v prípade prvej položky\n' +
|
||||||
|
' cesty k pätičke podčiarknutá.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigácia medzi časťami používateľského rozhrania</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Ak sa chcete posunúť z jednej časti používateľského rozhrania do druhej, stlačte tlačidlo <strong>Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Ak sa chcete posunúť z jednej časti používateľského rozhrania do predchádzajúcej, stlačte tlačidlá <strong>Shift + Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Poradie prepínania medzi týmito časťami používateľského rozhrania pri stláčaní tlačidla <strong>Tab</strong>:</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ol>\n' +
|
||||||
|
' <li>Panel s ponukou</li>\n' +
|
||||||
|
' <li>Každá skupina panela nástrojov</li>\n' +
|
||||||
|
' <li>Bočný panel</li>\n' +
|
||||||
|
' <li>Cesta k prvku v pätičke</li>\n' +
|
||||||
|
' <li>Prepínač počtu slov v pätičke</li>\n' +
|
||||||
|
' <li>Odkaz na informácie o značke v pätičke</li>\n' +
|
||||||
|
' <li>Úchyt na zmenu veľkosti editora v pätičke</li>\n' +
|
||||||
|
'</ol>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Ak nejaká časť používateľského rozhrania nie je prítomná, preskočí sa.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Ak je pätička vybratá na navigáciu pomocou klávesnice a nie je viditeľný bočný panel, stlačením klávesov <strong>Shift+Tab</strong>\n' +
|
||||||
|
' prejdete na prvú skupinu panela nástrojov, nie na poslednú.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigácia v rámci častí používateľského rozhrania</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Ak sa chcete posunúť z jedného prvku používateľského rozhrania na ďalší, stlačte príslušný kláves so <strong>šípkou</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Klávesy so šípkami <strong>doľava</strong> a <strong>doprava</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>umožňujú presun medzi ponukami na paneli ponúk,</li>\n' +
|
||||||
|
' <li>otvárajú podponuku v rámci ponuky,</li>\n' +
|
||||||
|
' <li>umožňujú presun medzi tlačidlami v skupine panelov nástrojov,</li>\n' +
|
||||||
|
' <li>umožňujú presun medzi položkami cesty prvku v pätičke.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Klávesy so šípkami <strong>dole</strong> a <strong>hore</strong></p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<ul>\n' +
|
||||||
|
' <li>umožňujú presun medzi položkami ponuky,</li>\n' +
|
||||||
|
' <li>umožňujú presun medzi položkami v kontextovej ponuke panela nástrojov.</li>\n' +
|
||||||
|
'</ul>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Klávesy so <strong>šípkami</strong> vykonávajú prepínanie v rámci vybranej časti používateľského rozhrania.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Ak chcete zatvoriť otvorenú ponuku, otvorenú podponuku alebo otvorenú kontextovú ponuku, stlačte kláves <strong>Esc</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Ak je aktuálne vybratá horná časť konkrétneho používateľského rozhrania, stlačením klávesu <strong>Esc</strong> úplne ukončíte tiež\n' +
|
||||||
|
' navigáciu pomocou klávesnice.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Vykonanie príkazu položky ponuky alebo tlačidla panela nástrojov</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Keď je zvýraznená požadovaná položka ponuky alebo tlačidlo panela nástrojov, stlačením klávesov <strong>Return</strong>, <strong>Enter</strong>\n' +
|
||||||
|
' alebo <strong>medzerníka</strong> vykonáte príslušný príkaz položky.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigácia v dialógových oknách bez záložiek</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Pri otvorení dialógových okien bez záložiek prejdete na prvý interaktívny komponent.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Medzi interaktívnymi dialógovými komponentmi môžete prechádzať stlačením klávesov <strong>Tab</strong> alebo <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<h1>Navigácia v dialógových oknách so záložkami</h1>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Pri otvorení dialógových okien so záložkami prejdete na prvé tlačidlo v ponuke záložiek.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Medzi interaktívnymi komponentmi tejto dialógovej záložky môžete prechádzať stlačením klávesov <strong>Tab</strong> alebo\n' +
|
||||||
|
' <strong>Shift+Tab</strong>.</p>\n' +
|
||||||
|
'\n' +
|
||||||
|
'<p>Ak chcete prepnúť na ďalšiu záložku dialógového okna, prejdite do ponuky záložiek a potom môžete stlačením príslušného klávesu so <strong>šípkou</strong>\n' +
|
||||||
|
' prepínať medzi dostupnými záložkami.</p>\n');
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user