1
This commit is contained in:
8
.idea/.gitignore
generated
vendored
Normal file
8
.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
# 默认忽略的文件
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# 基于编辑器的 HTTP 客户端请求
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
12
.idea/guilixu-admin.iml
generated
Normal file
12
.idea/guilixu-admin.iml
generated
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="WEB_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/temp" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/tmp" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
7
.idea/misc.xml
generated
Normal file
7
.idea/misc.xml
generated
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="KubernetesApiPersistence">{}</component>
|
||||
<component name="KubernetesApiProvider">{
|
||||
"isMigrated": true
|
||||
}</component>
|
||||
</project>
|
||||
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/guilixu-admin.iml" filepath="$PROJECT_DIR$/.idea/guilixu-admin.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
236
README-QR-LOGIN.md
Normal file
236
README-QR-LOGIN.md
Normal file
@@ -0,0 +1,236 @@
|
||||
# 二维码登录功能
|
||||
|
||||
## 概述
|
||||
|
||||
基于Vue 3 + TypeScript开发的二维码登录功能,支持APP端和小程序端扫码登录到Web管理后台。
|
||||
|
||||
## 功能特点
|
||||
|
||||
- ✅ **便捷登录**:扫码即可登录,无需输入账号密码
|
||||
- ✅ **实时状态**:支持实时状态更新和用户反馈
|
||||
- ✅ **安全可靠**:二维码具有时效性,支持一次性使用
|
||||
- ✅ **跨平台支持**:兼容APP和小程序扫码
|
||||
- ✅ **响应式设计**:适配各种屏幕尺寸
|
||||
- ✅ **TypeScript支持**:完整的类型定义
|
||||
|
||||
## 文件结构
|
||||
|
||||
```
|
||||
src/
|
||||
├── components/QrLogin/
|
||||
│ ├── index.vue # 二维码登录主组件
|
||||
│ └── demo.vue # 演示组件
|
||||
├── views/passport/
|
||||
│ ├── login/index.vue # 登录页面(已集成二维码登录)
|
||||
│ └── qrConfirm/index.vue # 移动端确认页面
|
||||
├── api/passport/
|
||||
│ └── qrLogin/index.ts # 二维码登录API
|
||||
└── router/routes.ts # 路由配置
|
||||
|
||||
docs/
|
||||
├── qr-login-api.md # API接口文档
|
||||
└── qr-login-usage.md # 使用说明文档
|
||||
```
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 1. 查看演示
|
||||
|
||||
访问演示页面查看功能效果:
|
||||
```
|
||||
http://localhost:3000/qr-demo
|
||||
```
|
||||
|
||||
### 2. 在登录页面使用
|
||||
|
||||
登录页面已经集成了二维码登录功能:
|
||||
```
|
||||
http://localhost:3000/login
|
||||
```
|
||||
点击右上角的二维码图标即可切换到扫码登录模式。
|
||||
|
||||
### 3. 移动端确认页面
|
||||
|
||||
扫码后会跳转到确认页面:
|
||||
```
|
||||
http://localhost:3000/qr-confirm?qrCodeKey=xxx
|
||||
```
|
||||
|
||||
## 组件使用
|
||||
|
||||
### 基本用法
|
||||
|
||||
```vue
|
||||
<template>
|
||||
<QrLogin
|
||||
@loginSuccess="handleLoginSuccess"
|
||||
@loginError="handleLoginError"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import QrLogin from '@/components/QrLogin/index.vue';
|
||||
|
||||
const handleLoginSuccess = (token) => {
|
||||
console.log('登录成功,token:', token);
|
||||
// 处理登录成功逻辑
|
||||
};
|
||||
|
||||
const handleLoginError = (error) => {
|
||||
console.error('登录失败:', error);
|
||||
// 处理登录失败逻辑
|
||||
};
|
||||
</script>
|
||||
```
|
||||
|
||||
### 事件说明
|
||||
|
||||
| 事件名 | 参数 | 说明 |
|
||||
|--------|------|------|
|
||||
| loginSuccess | token: string | 登录成功时触发,返回登录token |
|
||||
| loginError | error: string | 登录失败时触发,返回错误信息 |
|
||||
|
||||
## API接口
|
||||
|
||||
### 需要实现的后端接口
|
||||
|
||||
1. **生成二维码**: `POST /api/qr-login/generate`
|
||||
2. **检查状态**: `GET /api/qr-login/status`
|
||||
3. **扫码标记**: `POST /api/qr-login/scan`
|
||||
4. **确认登录**: `POST /api/qr-login/confirm`
|
||||
5. **取消登录**: `POST /api/qr-login/cancel`
|
||||
|
||||
详细的API文档请查看:[docs/qr-login-api.md](docs/qr-login-api.md)
|
||||
|
||||
## 状态流转
|
||||
|
||||
```
|
||||
loading → active → scanned → confirmed ✅
|
||||
↓ ↓ ↓
|
||||
error expired cancelled
|
||||
```
|
||||
|
||||
- **loading**: 正在生成二维码
|
||||
- **active**: 二维码有效,等待扫码
|
||||
- **scanned**: 已扫码,等待用户确认
|
||||
- **confirmed**: 用户确认,登录成功
|
||||
- **expired**: 二维码过期
|
||||
- **error**: 生成失败
|
||||
- **cancelled**: 用户取消登录
|
||||
|
||||
## 安全机制
|
||||
|
||||
1. **时效控制**:二维码默认5分钟过期
|
||||
2. **一次性使用**:每个二维码只能使用一次
|
||||
3. **状态验证**:严格的状态流转控制
|
||||
4. **用户验证**:移动端需要用户登录状态
|
||||
5. **HTTPS传输**:敏感数据加密传输
|
||||
|
||||
## 自定义配置
|
||||
|
||||
### 样式自定义
|
||||
|
||||
```less
|
||||
.qr-login-container {
|
||||
// 自定义容器样式
|
||||
padding: 20px;
|
||||
|
||||
.qr-code-wrapper {
|
||||
// 自定义二维码区域样式
|
||||
min-height: 250px;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 参数配置
|
||||
|
||||
```typescript
|
||||
// 二维码大小
|
||||
const QR_CODE_SIZE = 200;
|
||||
|
||||
// 过期时间(秒)
|
||||
const EXPIRE_TIME = 300;
|
||||
|
||||
// 状态检查间隔(毫秒)
|
||||
const CHECK_INTERVAL = 2000;
|
||||
```
|
||||
|
||||
## 开发调试
|
||||
|
||||
### 启用调试模式
|
||||
|
||||
```javascript
|
||||
// 在浏览器控制台执行
|
||||
localStorage.setItem('debug', 'qr-login');
|
||||
```
|
||||
|
||||
### 查看网络请求
|
||||
|
||||
使用浏览器开发者工具的Network面板监控API请求。
|
||||
|
||||
### 模拟测试
|
||||
|
||||
访问演示页面 `/qr-demo` 可以模拟各种状态和场景。
|
||||
|
||||
## 部署注意事项
|
||||
|
||||
1. **HTTPS要求**:生产环境必须使用HTTPS
|
||||
2. **跨域配置**:确保API接口支持跨域请求
|
||||
3. **移动端适配**:确保移动端页面正常显示
|
||||
4. **性能优化**:合理设置轮询间隔和缓存策略
|
||||
|
||||
## 故障排除
|
||||
|
||||
### 常见问题
|
||||
|
||||
1. **二维码不显示**
|
||||
- 检查网络连接
|
||||
- 确认API接口正常
|
||||
- 查看控制台错误信息
|
||||
|
||||
2. **扫码无响应**
|
||||
- 检查二维码是否过期
|
||||
- 确认移动端网络正常
|
||||
- 验证用户登录状态
|
||||
|
||||
3. **登录失败**
|
||||
- 检查token有效性
|
||||
- 确认用户权限
|
||||
- 查看后端日志
|
||||
|
||||
### 调试步骤
|
||||
|
||||
1. 打开浏览器开发者工具
|
||||
2. 查看Console面板的错误信息
|
||||
3. 监控Network面板的API请求
|
||||
4. 检查Application面板的本地存储
|
||||
|
||||
## 更新日志
|
||||
|
||||
### v1.0.0 (2024-01-XX)
|
||||
- ✅ 完成基础二维码登录功能
|
||||
- ✅ 支持实时状态更新
|
||||
- ✅ 集成到登录页面
|
||||
- ✅ 创建移动端确认页面
|
||||
- ✅ 完善文档和演示
|
||||
|
||||
## 技术栈
|
||||
|
||||
- **前端框架**: Vue 3 + TypeScript
|
||||
- **UI组件库**: Ant Design Vue
|
||||
- **二维码生成**: qrcode + ele-admin-pro
|
||||
- **状态管理**: Pinia
|
||||
- **路由管理**: Vue Router
|
||||
- **HTTP客户端**: Axios
|
||||
|
||||
## 贡献指南
|
||||
|
||||
1. Fork 项目
|
||||
2. 创建功能分支
|
||||
3. 提交代码变更
|
||||
4. 推送到分支
|
||||
5. 创建 Pull Request
|
||||
|
||||
## 许可证
|
||||
|
||||
MIT License
|
||||
186
README.md
Normal file
186
README.md
Normal file
@@ -0,0 +1,186 @@
|
||||
<div align="center">
|
||||
<h1>🌐 WebSoftAdmin</h1>
|
||||
<p><strong>基于 Vue 3 + Ant Design Vue 的企业级后台管理系统</strong></p>
|
||||
|
||||
<p>
|
||||
<img src="https://img.shields.io/badge/Vue-3.x-4FC08D" alt="Vue">
|
||||
<img src="https://img.shields.io/badge/Ant%20Design%20Vue-3.x-1890FF" alt="Ant Design Vue">
|
||||
<img src="https://img.shields.io/badge/TypeScript-4.x-3178C6" alt="TypeScript">
|
||||
<img src="https://img.shields.io/badge/Vite-4.x-646CFF" alt="Vite">
|
||||
<img src="https://img.shields.io/badge/License-MIT-blue" alt="License">
|
||||
</p>
|
||||
</div>
|
||||
|
||||
## 📖 项目简介
|
||||
|
||||
WebSoftAdmin 是一个基于 **Vue 3 + Ant Design Vue** 构建的现代化企业级后台管理系统,采用最新的前端技术栈:
|
||||
|
||||
- **前端框架**:Vue 3 + TypeScript + Vite
|
||||
- **UI 组件库**:Ant Design Vue 3.x
|
||||
- **富文本编辑器**:TinyMCE(支持图片/视频上传、一键排版)
|
||||
- **图表库**:ECharts + G2
|
||||
- **工具库**:Lodash、Day.js、CryptoJS
|
||||
|
||||
|
||||
|
||||
## 项目演示
|
||||
| 后台管理系统 | https://mp.websoft.top |
|
||||
|--------|-------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| 账号密码 | [立即注册](https://mp.websoft.top/register/?inviteCode=github) |
|
||||
| 关注公众号 |  |
|
||||
|
||||
|
||||
|
||||
|
||||
## 🛠️ 技术栈
|
||||
|
||||
### 核心技术
|
||||
| 技术 | 版本 | 说明 |
|
||||
|------|------|------|
|
||||
| Vue | 3.x | 渐进式 JavaScript 框架 |
|
||||
| TypeScript | 4.x | JavaScript 的超集 |
|
||||
| Vite | 4.x | 下一代前端构建工具 |
|
||||
| Ant Design Vue | 3.2.11 | 企业级 UI 设计语言 |
|
||||
| EleAdmin Pro | 1.10.1 | 企业级组件库 |
|
||||
|
||||
### 功能组件
|
||||
- **TinyMCE** - 富文本编辑器,支持图片/视频上传
|
||||
- **ECharts** - 数据可视化图表库
|
||||
- **CropperJS** - 图片裁剪组件
|
||||
- **ExcelJS** - Excel 文件处理
|
||||
- **Ali OSS** - 阿里云对象存储
|
||||
|
||||
## 📋 环境要求
|
||||
|
||||
### 基础环境
|
||||
- 🟢 **Node.js 16+**
|
||||
- 📦 **npm 8+ / yarn 1.22+**
|
||||
- 🌐 **现代浏览器**(Chrome 63+、Firefox、Safari、Edge)
|
||||
|
||||
### 开发工具
|
||||
- **推荐**:VS Code / WebStorm
|
||||
- **插件**:Vetur / Volar(Vue 3 支持)
|
||||
|
||||
## 🚀 快速开始
|
||||
|
||||
### 1. 克隆项目
|
||||
```bash
|
||||
git clone https://github.com/websoft-top/paopao-vue.git
|
||||
cd paopao-vue
|
||||
```
|
||||
|
||||
### 2. 安装依赖
|
||||
```bash
|
||||
# 使用 npm
|
||||
npm install
|
||||
|
||||
# 或使用 yarn
|
||||
yarn install
|
||||
```
|
||||
|
||||
### 3. 配置环境变量
|
||||
```bash
|
||||
# 复制环境变量示例文件
|
||||
cp .env.example .env
|
||||
|
||||
# 编辑 .env 文件,填入您的配置信息
|
||||
# 注意:请不要将 .env 文件提交到版本控制系统
|
||||
```
|
||||
|
||||
### 4. 启动开发服务器
|
||||
```bash
|
||||
# 开发模式
|
||||
npm run dev
|
||||
|
||||
# 或
|
||||
yarn dev
|
||||
```
|
||||
|
||||
访问 `http://localhost:3000` 即可看到管理后台。
|
||||
|
||||
### 5. 构建生产版本
|
||||
```bash
|
||||
# 生产构建
|
||||
npm run build
|
||||
|
||||
# 预览构建结果
|
||||
npm run serve
|
||||
```
|
||||
|
||||
## ⚙️ 环境变量配置
|
||||
|
||||
项目使用环境变量来管理敏感信息和配置。请按照以下步骤配置:
|
||||
|
||||
### 必需配置
|
||||
```bash
|
||||
# API 配置
|
||||
VITE_API_URL=https://your-api.com/api # 后端 API 地址
|
||||
VITE_SERVER_API_URL=https://your-server.com/api # 服务端 API 地址
|
||||
VITE_FILE_SERVER=https://your-file-server.com # 文件服务器地址
|
||||
|
||||
# 应用配置
|
||||
VITE_APP_SECRET=your_app_secret # 应用密钥
|
||||
VITE_TENANT_ID=your_tenant_id # 租户 ID
|
||||
```
|
||||
|
||||
### 可选配置
|
||||
```bash
|
||||
# 高德地图 (如需使用地图功能)
|
||||
VITE_MAP_KEY=your_map_key # 高德地图 Key
|
||||
VITE_MAP_CODE=your_map_security_code # 高德地图安全密钥
|
||||
|
||||
# WebSoftAdmin 授权 (商业版功能)
|
||||
VITE_LICENSE_CODE=your_license_code # 授权码
|
||||
```
|
||||
|
||||
### 获取配置信息
|
||||
- **高德地图密钥**:访问 [高德开放平台](https://lbs.amap.com/) 申请
|
||||
- **WebSoftAdmin 授权码**:联系 [官方网站](https://websoft.top/) 获取
|
||||
- **其他 API 配置**:根据您的后端服务配置
|
||||
|
||||
## 🎯 核心功能
|
||||
|
||||
### 📝 内容管理系统
|
||||
- **文章管理**:支持富文本编辑、图片/视频上传
|
||||
- **一键排版**:智能文章格式优化,包含10种专业排版样式
|
||||
- **媒体库**:图片/视频文件管理,支持分组和搜索
|
||||
- **首行缩进**:中文段落格式智能切换
|
||||
|
||||
### 🛒 商城管理
|
||||
- **商品管理**:商品信息编辑、规格设置
|
||||
- **订单管理**:订单流程跟踪
|
||||
- **库存管理**:商品库存监控
|
||||
|
||||
### 👥 用户权限
|
||||
- **用户管理**:用户信息维护
|
||||
- **角色权限**:基于角色的访问控制
|
||||
- **菜单管理**:动态菜单配置
|
||||
|
||||
## 🎨 富文本编辑器特色功能
|
||||
|
||||
### 📸 媒体上传
|
||||
- **图片上传**:支持拖拽、粘贴、文件选择
|
||||
- **视频上传**:支持多种视频格式
|
||||
- **媒体库**:统一的媒体文件管理
|
||||
- **OSS 存储**:阿里云对象存储集成
|
||||
|
||||
### ✨ 智能排版
|
||||
- **一键排版**:10种专业排版优化
|
||||
- **首行缩进**:中文段落格式切换
|
||||
- **样式优化**:标题、段落、列表、表格等元素美化
|
||||
- **响应式**:适配不同屏幕尺寸
|
||||
|
||||
## 🏗️ 项目结构
|
||||
|
||||
```
|
||||
src/
|
||||
├── components/ # 公共组件
|
||||
├── views/ # 页面组件
|
||||
│ ├── cms/ # 内容管理
|
||||
│ ├── shop/ # 商城管理
|
||||
│ └── system/ # 系统管理
|
||||
├── router/ # 路由配置
|
||||
├── store/ # 状态管理
|
||||
├── utils/ # 工具函数
|
||||
└── assets/ # 静态资源
|
||||
```
|
||||
2
components.d.ts
vendored
Normal file
2
components.d.ts
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
import 'ant-design-vue/typings/global';
|
||||
import 'ele-admin-pro/typings/global';
|
||||
232
docs/coupon-backend-upgrade.md
Normal file
232
docs/coupon-backend-upgrade.md
Normal file
@@ -0,0 +1,232 @@
|
||||
# 优惠券模块后端改造方案
|
||||
|
||||
> 前端 Vue 改造已完成(paopao-vue),本文档为后端 Java 端对应的改动清单。
|
||||
|
||||
---
|
||||
|
||||
## 一、DDL — shop_coupon 表新增字段
|
||||
|
||||
```sql
|
||||
-- ============================================================
|
||||
-- 优惠券模块升级:新增发放对象控制 + 场地使用券支持
|
||||
-- 执行前请先备份表数据!
|
||||
-- ============================================================
|
||||
|
||||
ALTER TABLE `shop_coupon`
|
||||
-- 发放对象(0全部用户 1仅会员 2仅非会员 3指定用户)
|
||||
ADD COLUMN `receive_target` TINYINT NOT NULL DEFAULT 0 COMMENT '发放对象(0全部用户 1仅会员 2仅非会员 3指定用户)' AFTER `enabled`,
|
||||
-- 指定用户ID列表(JSON数组),receive_target=3 时使用
|
||||
ADD COLUMN `receive_user_ids` VARCHAR(1000) DEFAULT NULL COMMENT '指定用户ID列表(JSON数组格式),receiveTarget=3时使用' AFTER `receive_target`,
|
||||
-- 场地使用券相关字段 (type=50 时使用)
|
||||
ADD COLUMN `venue_type` TINYINT DEFAULT NULL COMMENT '场地使用券-场地类型' AFTER `receive_user_ids`,
|
||||
ADD COLUMN `venue_id` INT DEFAULT NULL COMMENT '场地使用券-指定场地ID' AFTER `venue_type`,
|
||||
ADD COLUMN `use_count` INT NOT NULL DEFAULT -1 COMMENT '场地使用券-可用次数(-1无限制)' AFTER `venue_id`,
|
||||
ADD COLUMN `use_duration` INT DEFAULT NULL COMMENT '场地使用券-使用时长(分钟)' AFTER `use_count`;
|
||||
```
|
||||
|
||||
### 字段说明
|
||||
|
||||
| 字段 | 类型 | 默认值 | 说明 |
|
||||
|------|------|--------|------|
|
||||
| `receive_target` | TINYINT | `0` | 0=全部, 1=仅会员, 2=仅非会员, 3=指定用户 |
|
||||
| `receive_user_ids` | VARCHAR(1000) | NULL | JSON 数组如 `[101,202,303]`, receiveTarget=3 时有值 |
|
||||
| `venue_type` | TINYINT | NULL | 场地类型,type=50 时填写 |
|
||||
| `venue_id` | INT | NULL | 具体场地 ID,type=50 时填写 |
|
||||
| `use_count` | INT | `-1` | 可用次数,-1=不限制 |
|
||||
| `use_duration` | INT | NULL | 使用时长(分钟) |
|
||||
|
||||
---
|
||||
|
||||
## 二、Java Entity — ShopCoupon.java 新增字段
|
||||
|
||||
在实体类中新增以下字段(与前端 model/index.ts 对齐):
|
||||
|
||||
```java
|
||||
// ========== 以下是新增字段 ==========
|
||||
|
||||
/**
|
||||
* 发放对象(0全部用户 1仅会员 2仅非会员 3指定用户)
|
||||
*/
|
||||
@TableField("receive_target")
|
||||
private Integer receiveTarget;
|
||||
|
||||
/**
|
||||
* 指定用户ID列表(JSON数组格式),receiveTarget=3时使用
|
||||
* 存储格式: ["101","202","303"] 或 [101,202,303]
|
||||
*/
|
||||
@TableField("receive_user_ids")
|
||||
private String receiveUserIds;
|
||||
|
||||
/**
|
||||
* 场地使用券-场地类型 (type=50时使用)
|
||||
*/
|
||||
@TableField("venue_type")
|
||||
private Integer venueType;
|
||||
|
||||
/**
|
||||
* 场地使用券-指定场地ID (type=50时使用)
|
||||
*/
|
||||
@TableField("venue_id")
|
||||
private Integer venueId;
|
||||
|
||||
/**
|
||||
* 场地使用券-可用次数(-1表示无限制)
|
||||
*/
|
||||
@TableField("use_count")
|
||||
private Integer useCount;
|
||||
|
||||
/**
|
||||
* 场地使用券-使用时长(分钟)
|
||||
*/
|
||||
@TableField("use_duration")
|
||||
private Integer useDuration;
|
||||
```
|
||||
|
||||
> 注意:如果项目使用了 Lombok `@Data` 或手动 getter/setter,确保新字段也有对应的访问方法。
|
||||
|
||||
---
|
||||
|
||||
## 三、领券/用券校验逻辑
|
||||
|
||||
### 3.1 领券接口校验(用户领取优惠券时)
|
||||
|
||||
在领券 Controller 或 Service 中增加校验:
|
||||
|
||||
```java
|
||||
/**
|
||||
* 校验用户是否有资格领取该优惠券
|
||||
*
|
||||
* @param coupon 优惠券信息
|
||||
* @param userId 当前用户ID
|
||||
* @param userGradeId 用户会员等级ID (0=非会员, >0=会员)
|
||||
* @throws BusinessException 校验不通过时抛出业务异常
|
||||
*/
|
||||
public void validateCouponReceiveTarget(ShopCoupon coupon, Long userId, Integer userGradeId) {
|
||||
Integer target = coupon.getReceiveTarget();
|
||||
|
||||
// target=0 全部用户可领,直接通过
|
||||
if (target == null || target == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// target=1 仅会员可领
|
||||
if (target == 1) {
|
||||
if (userGradeId == null || userGradeId <= 0) {
|
||||
throw new BusinessException("该优惠券仅限会员领取");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// target=2 仅非会员可领
|
||||
if (target == 2) {
|
||||
if (userGradeId != null && userGradeId > 0) {
|
||||
throw new BusinessException("该优惠券仅限非会员领取");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// target=3 指定用户可领
|
||||
if (target == 3) {
|
||||
String receiveUserIds = coupon.getReceiveUserIds();
|
||||
if (StringUtils.isBlank(receiveUserIds)) {
|
||||
throw new BusinessException("该优惠券未设置指定用户");
|
||||
}
|
||||
// 解析 JSON 数组
|
||||
List<Long> allowedUserIds = JsonUtils.parseArray(receiveUserIds, Long.class);
|
||||
if (allowedUserIds == null || !allowedUserIds.contains(userId)) {
|
||||
throw new BusinessException("您不在该优惠券的发放范围内");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// 未知的 target 值,默认放行(向后兼容)
|
||||
}
|
||||
```
|
||||
|
||||
### 3.2 调用位置建议
|
||||
|
||||
```
|
||||
用户点击"领取优惠券"
|
||||
│
|
||||
▼
|
||||
┌──────────────────────┐
|
||||
│ 1. 检查优惠券是否启用 │
|
||||
│ 2. 检查是否已过期 │
|
||||
│ 3. 检查发放数量是否已完 │
|
||||
│ 4. 检查每人限领数量 │ ◄── 在此步骤之后、实际发券之前插入
|
||||
│ ★5. 校验发放对象 ★ │ validateCouponReceiveTarget()
|
||||
│ 6. 创建用户优惠券记录 │
|
||||
└──────────────────────┘
|
||||
```
|
||||
|
||||
### 3.3 用券/下单时的校验(可选增强)
|
||||
|
||||
下单抵扣时除了常规的金额/时间/商品范围校验外,可追加:
|
||||
|
||||
```java
|
||||
/**
|
||||
* 下单使用优惠券时的额外校验
|
||||
*/
|
||||
public void validateCouponForOrder(ShopCoupon coupon, ShopUser user, OrderContext ctx) {
|
||||
// ... 已有的金额/有效期/适用范围校验 ...
|
||||
|
||||
// 场地使用券(type=50)特殊校验
|
||||
if (coupon.getType() != null && coupon.getType() == 50) {
|
||||
// 验证订单是否包含场地服务
|
||||
if (!ctx.hasVenueItem()) {
|
||||
throw new BusinessException("该券仅可用于场地预订");
|
||||
}
|
||||
// 如果指定了场地类型/ID,校验是否匹配
|
||||
if (coupon.getVenueType() != null && !coupon.getVenueType().equals(ctx.getVenueType())) {
|
||||
throw new BusinessException("场地类型不匹配");
|
||||
}
|
||||
if (coupon.getVenueId() != null && !coupon.getVenueId().equals(ctx.getVenueId())) {
|
||||
throw new BusinessException("指定场地不匹配");
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 四、JSON 工具方法说明
|
||||
|
||||
`receive_user_ids` 字段的读写需要 JSON 序列化/反序列化:
|
||||
|
||||
**写入(保存优惠券时):**
|
||||
```java
|
||||
// 前端传来的是 JSON 字符串 "[101,202,303]",直接存即可
|
||||
coupon.setReceiveUserIds(receiveUserIdsJsonString);
|
||||
```
|
||||
|
||||
**读取(校验时解析):**
|
||||
```java
|
||||
// 推荐使用 Jackson / Fastjson / Gson (项目已有的 JSON 库)
|
||||
// 示例(Jackson):
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
List<Long> userIds = mapper.readValue(coupon.getReceiveUserIds(),
|
||||
new TypeReference<List<Long>>() {});
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 五、前端-后端字段对照表
|
||||
|
||||
| 前端字段 (TypeScript) | 后端字段 (Java/DB) | 类型 |
|
||||
|------------------------|--------------------|------|
|
||||
| `receiveTarget` | `receive_target` | Integer/TINYINT |
|
||||
| `receiveUserIds` | `receive_user_ids` | String/VARCHAR |
|
||||
| `venueType` | `venue_type` | Integer/TINYINT |
|
||||
| `venueId` | `venue_id` | Integer/INT |
|
||||
| `useCount` | `use_count` | Integer/INT |
|
||||
| `useDuration` | `use_duration` | Integer/INT |
|
||||
|
||||
---
|
||||
|
||||
## 六、注意事项
|
||||
|
||||
1. **向后兼容**:`receive_target` 默认值 `0` 表示全部用户,不影响已有优惠券的领用行为
|
||||
2. **JSON 格式一致性**:前端提交时已序列化为 JSON 字符串,后端直接存储;读取时按 JSON 解析
|
||||
3. **场地使用券 (type=50)** 是独立于普通商品券的类型,下单系统需单独适配其核销逻辑
|
||||
4. **`gradeId` 判断会员**:依赖 `shop_user.grade_id` 字段,`grade_id > 0` 为会员,`=0` 或 `NULL` 为非会员
|
||||
5. **建议先在测试环境执行 DDL 并验证完整流程后再上生产**
|
||||
70
index.html
Normal file
70
index.html
Normal file
@@ -0,0 +1,70 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>桂礼序</title>
|
||||
<!-- TinyMCE 通过本地文件加载,避免 Rolldown 打包 UMD 模块的问题 -->
|
||||
<script src="/tinymce/tinymce.min.js"></script>
|
||||
<style>
|
||||
.ele-admin-loading {
|
||||
width: 36px;
|
||||
font-size: 0;
|
||||
display: inline-block;
|
||||
transform: rotate(45deg);
|
||||
animation: loadingRotate 1.2s infinite linear;
|
||||
position: relative;
|
||||
top: calc(50% - 18px);
|
||||
left: calc(50% - 18px);
|
||||
|
||||
}
|
||||
|
||||
.ele-admin-loading span {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
margin: 4px;
|
||||
border-radius: 50%;
|
||||
background: #1890ff;
|
||||
display: inline-block;
|
||||
opacity: 0.9;
|
||||
}
|
||||
.ele-admin-logo-auto.ele-admin-layout .ele-admin-logo{
|
||||
padding: 0 12px 0 12px !important;
|
||||
}
|
||||
|
||||
.ele-admin-loading span:nth-child(2) {
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.ele-admin-loading span:nth-child(3) {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.ele-admin-loading span:nth-child(4) {
|
||||
opacity: 0.3;
|
||||
}
|
||||
|
||||
@keyframes loadingRotate {
|
||||
to {
|
||||
transform: rotate(405deg);
|
||||
}
|
||||
}
|
||||
|
||||
#app > .ele-admin-loading {
|
||||
position: fixed;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app">
|
||||
<div class="ele-admin-loading">
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
</div>
|
||||
</div>
|
||||
<script type="module" src="/src/main.ts"></script>
|
||||
</body>
|
||||
</html>
|
||||
106
package.json
Normal file
106
package.json
Normal file
@@ -0,0 +1,106 @@
|
||||
{
|
||||
"name": "paopao-template",
|
||||
"version": "1.10.1",
|
||||
"private": true,
|
||||
"pnpm": {
|
||||
"onlyBuiltDependencies": [
|
||||
"core-js",
|
||||
"es5-ext",
|
||||
"vue-demi"
|
||||
],
|
||||
"patchedDependencies": {
|
||||
"ele-admin-pro": "patches/ele-admin-pro.patch"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"postinstall": "bash scripts/fix-ele-admin-pro.sh",
|
||||
"dev": "vite",
|
||||
"dev:test": "vite --mode test",
|
||||
"build": "vite build",
|
||||
"build:test": "vite build --mode test",
|
||||
"serve": "vite build && vite preview",
|
||||
"lint:eslint": "eslint --cache --max-warnings 0 \"src/**/*.{vue,ts}\" --fix",
|
||||
"clean:cache": "rimraf node_modules/.cache/ && rimraf node_modules/.vite/",
|
||||
"clean:lib": "rimraf node_modules",
|
||||
"build-css": "tailwindcss -o ./dist/tailwind.css --minify"
|
||||
},
|
||||
"dependencies": {
|
||||
"@amap/amap-jsapi-loader": "^1.0.1",
|
||||
"@ant-design/colors": "^6.0.0",
|
||||
"@ant-design/icons-vue": "^7.0.1",
|
||||
"@antv/g2": "^5.1.22",
|
||||
"@bytemd/plugin-gfm": "^1.17.2",
|
||||
"@bytemd/plugin-highlight": "^1.17.4",
|
||||
"@bytemd/plugin-highlight-ssr": "^1.20.2",
|
||||
"@wecom/jssdk": "^1.3.1",
|
||||
"ali-oss": "^6.18.0",
|
||||
"ant-design-vue": "^4.2.6",
|
||||
"axios": "^1.16.0",
|
||||
"bytemd": "^1.17.2",
|
||||
"countup.js": "^2.3.2",
|
||||
"cropperjs": "^1.5.12",
|
||||
"crypto-js": "^4.2.0",
|
||||
"dayjs": "^1.11.5",
|
||||
"docx": "^9.5.0",
|
||||
"dompurify": "^3.4.5",
|
||||
"echarts": "^6.0.0",
|
||||
"echarts-wordcloud": "^2.1.0",
|
||||
"ele-admin-pro": "^1.11.1",
|
||||
"exceljs": "^4.3.0",
|
||||
"file-saver": "^2.0.5",
|
||||
"github-markdown-css": "^5.1.0",
|
||||
"js-cookie": "^3.0.5",
|
||||
"js-md5": "^0.7.3",
|
||||
"jsbarcode": "^3.11.5",
|
||||
"lodash-es": "^4.17.21",
|
||||
"md-editor-v3": "^5.2.3",
|
||||
"mitt": "^3.0.1",
|
||||
"nprogress": "^0.2.0",
|
||||
"pinia": "^2.3.1",
|
||||
"qrcode": "^1.5.4",
|
||||
"socket.io-client": "^4.7.1",
|
||||
"sortablejs": "^1.15.0",
|
||||
"tinymce": "^6.8.6",
|
||||
"vue": "3.5.3",
|
||||
"vue-echarts": "^8.0.1",
|
||||
"vue-i18n": "9.2.2",
|
||||
"vue-router": "^4.1.5",
|
||||
"vuedraggable": "^4.1.0",
|
||||
"xgplayer": "^2.31.7",
|
||||
"xlsx": "^0.18.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/dompurify": "^3.2.0",
|
||||
"@types/file-saver": "^2.0.7",
|
||||
"@types/lodash-es": "^4.17.6",
|
||||
"@types/node": "^22.15.0",
|
||||
"@types/nprogress": "^0.2.0",
|
||||
"@types/qrcode": "^1.5.5",
|
||||
"@types/sortablejs": "^1.13.0",
|
||||
"@typescript-eslint/eslint-plugin": "^8.59.0",
|
||||
"@typescript-eslint/parser": "^8.59.0",
|
||||
"@vitejs/plugin-legacy": "^8.0.1",
|
||||
"@vitejs/plugin-vue": "^6.0.6",
|
||||
"@vue/compiler-sfc": "^3.5.34",
|
||||
"autoprefixer": "^10.4.19",
|
||||
"eslint": "^8.23.0",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"eslint-define-config": "^1.7.0",
|
||||
"eslint-plugin-prettier": "^4.2.1",
|
||||
"eslint-plugin-vue": "^9.4.0",
|
||||
"less": "^4.1.3",
|
||||
"playwright": "^1.60.0",
|
||||
"postcss": "^8.4.39",
|
||||
"prettier": "^2.7.1",
|
||||
"rimraf": "^3.0.2",
|
||||
"rollup-plugin-visualizer": "^5.9.2",
|
||||
"tailwindcss": "^3.4.6",
|
||||
"terser": "^5.15.0",
|
||||
"typescript": "^5.8.3",
|
||||
"unplugin-vue-components": "^28.8.0",
|
||||
"vite": "^8.0.11",
|
||||
"vite-plugin-compression": "^0.5.1",
|
||||
"vue-eslint-parser": "^9.0.3",
|
||||
"vue-tsc": "^3.2.8"
|
||||
}
|
||||
}
|
||||
55
patches/ele-admin-pro.patch
Normal file
55
patches/ele-admin-pro.patch
Normal file
@@ -0,0 +1,55 @@
|
||||
diff --git a/es/style/common.less b/es/style/common.less
|
||||
index be21ac3829dd2e32d9e928a4a68400dfa00ba5e3..c5eb5285a9e454282f8cdb5356d93914db2f46a1 100644
|
||||
--- a/es/style/common.less
|
||||
+++ b/es/style/common.less
|
||||
@@ -80,7 +80,7 @@ body {
|
||||
a.ele-text-secondary,
|
||||
a.ele-text-placeholder {
|
||||
&:hover {
|
||||
- color: ~`colorPalette('@{primary-color}', 5) `;
|
||||
+ color: #4096ff;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,11 +94,11 @@ body {
|
||||
}
|
||||
|
||||
a.ele-text-success:hover {
|
||||
- color: ~`colorPalette('@{success-color}', 5) `;
|
||||
+ color: #73d13d;
|
||||
}
|
||||
|
||||
a.ele-text-success:active {
|
||||
- color: ~`colorPalette('@{success-color}', 7) `;
|
||||
+ color: #389e0d;
|
||||
}
|
||||
|
||||
.ele-text-warning,
|
||||
@@ -107,11 +107,11 @@ body {
|
||||
}
|
||||
|
||||
a.ele-text-warning:hover {
|
||||
- color: ~`colorPalette('@{warning-color}', 5) `;
|
||||
+ color: #ffc53d;
|
||||
}
|
||||
|
||||
a.ele-text-warning:active {
|
||||
- color: ~`colorPalette('@{warning-color}', 7) `;
|
||||
+ color: #d48806;
|
||||
}
|
||||
|
||||
.ele-text-danger,
|
||||
@@ -120,11 +120,11 @@ body {
|
||||
}
|
||||
|
||||
a.ele-text-danger:hover {
|
||||
- color: ~`colorPalette('@{error-color}', 5) `;
|
||||
+ color: #ff4d4f;
|
||||
}
|
||||
|
||||
a.ele-text-danger:active {
|
||||
- color: ~`colorPalette('@{error-color}', 7) `;
|
||||
+ color: #cf1322;
|
||||
}
|
||||
|
||||
.ele-text-info,
|
||||
9416
pnpm-lock.yaml
generated
Normal file
9416
pnpm-lock.yaml
generated
Normal file
File diff suppressed because it is too large
Load Diff
6
postcss.config.js
Normal file
6
postcss.config.js
Normal file
@@ -0,0 +1,6 @@
|
||||
module.exports = {
|
||||
plugins: {
|
||||
tailwindcss: {},
|
||||
autoprefixer: {}
|
||||
}
|
||||
};
|
||||
19
prettier.config.js
Normal file
19
prettier.config.js
Normal file
@@ -0,0 +1,19 @@
|
||||
module.exports = {
|
||||
printWidth: 80,
|
||||
tabWidth: 2,
|
||||
useTabs: false,
|
||||
semi: true,
|
||||
singleQuote: true,
|
||||
quoteProps: 'as-needed',
|
||||
jsxSingleQuote: false,
|
||||
trailingComma: 'none',
|
||||
bracketSpacing: true,
|
||||
bracketSameLine: false,
|
||||
arrowParens: 'always',
|
||||
requirePragma: false,
|
||||
insertPragma: false,
|
||||
proseWrap: 'never',
|
||||
htmlWhitespaceSensitivity: 'strict',
|
||||
vueIndentScriptAndStyle: true,
|
||||
endOfLine: 'lf'
|
||||
};
|
||||
@@ -0,0 +1 @@
|
||||
<svg width="70" height="70" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><linearGradient x1="17.621%" y1="50%" x2="100%" y2="50%" id="a"><stop stop-color="#FFE2B8" offset="0%"/><stop stop-color="#FFCA7C" offset="100%"/></linearGradient><filter x="-10.7%" y="-10.7%" width="121.4%" height="121.4%" filterUnits="objectBoundingBox" id="c"><feGaussianBlur stdDeviation="6" in="SourceAlpha" result="shadowBlurInner1"/><feOffset dx="3" in="shadowBlurInner1" result="shadowOffsetInner1"/><feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0" in="shadowInnerInner1"/></filter><path id="b" d="m1291 377 70 70v-70z"/></defs><g transform="translate(-1291 -377)" fill="none" fill-rule="evenodd"><use fill="url(#a)" xlink:href="#b"/><use fill="#000" filter="url(#c)" xlink:href="#b"/></g></svg>
|
||||
|
After Width: | Height: | Size: 953 B |
BIN
public/assets/bg-2.jpeg
Normal file
BIN
public/assets/bg-2.jpeg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 398 KiB |
15
public/assets/logo.svg
Normal file
15
public/assets/logo.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 30 KiB |
BIN
public/favicon.ico
Normal file
BIN
public/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 303 B |
1
public/json/china-provinces.geo.json
Normal file
1
public/json/china-provinces.geo.json
Normal file
File diff suppressed because one or more lines are too long
1
public/json/industry-data.json
Normal file
1
public/json/industry-data.json
Normal file
File diff suppressed because one or more lines are too long
1
public/json/regions-data.json
Normal file
1
public/json/regions-data.json
Normal file
File diff suppressed because one or more lines are too long
BIN
public/logo.png
Normal file
BIN
public/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.1 KiB |
1
public/logo.svg
Normal file
1
public/logo.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1676704848873" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13249" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M102.4 896a409.6 51.2 0 1 0 819.2 0 409.6 51.2 0 1 0-819.2 0Z" fill="#dbdbdb" opacity=".1" p-id="13250"></path><path d="M709.12 139.264v5.632l42.496 39.424 163.84-79.36L767.488 199.68v46.592l23.552-23.04v-0.512l0.512 0.512 23.552 23.04L942.08 91.136v-5.12z" fill="#dbdbdb" opacity=".2" p-id="13251"></path><path d="M121.856 806.912c0 8.704 6.656 15.36 15.36 15.36s15.36-6.656 15.36-15.36-6.656-15.36-15.36-15.36c-8.192 0-15.36 7.168-15.36 15.36zM926.72 847.872c-15.36 4.096-18.944 7.168-23.04 23.04-4.096-15.36-7.168-18.944-23.04-23.04 15.36-4.096 18.944-7.68 23.04-23.04 4.096 15.36 7.168 18.944 23.04 23.04zM903.68 788.992c-25.088 6.656-30.208 11.776-36.864 36.864-6.656-25.088-11.776-30.208-36.864-36.864 25.088-6.656 30.208-12.288 36.864-36.864 6.144 25.088 11.776 30.208 36.864 36.864zM207.36 275.968c-15.36 4.096-18.432 7.168-22.528 22.528-4.096-15.36-7.168-18.432-22.528-22.528 15.36-4.096 18.432-7.168 22.528-22.528 3.584 15.36 7.168 18.432 22.528 22.528zM268.288 197.12c-39.936 10.24-48.128 18.944-58.88 58.88-10.24-39.936-18.944-48.128-58.88-58.88 39.936-10.24 48.128-18.944 58.88-58.88 10.24 39.424 18.944 48.128 58.88 58.88zM512 517.632c-2.56 0-5.12-0.512-7.68-2.048l-260.096-148.48c-4.608-2.56-7.68-7.68-7.68-13.312s3.072-10.752 7.68-13.312l260.096-148.48c4.608-2.56 10.752-2.56 15.36 0l260.096 148.48c4.608 2.56 7.68 7.68 7.68 13.312s-3.072 10.752-7.68 13.312l-260.096 148.48c-2.56 1.536-5.12 2.048-7.68 2.048zM282.624 353.28L512 484.352 741.376 353.28 512 222.72 282.624 353.28zM473.088 886.784c-2.56 0-5.12-0.512-7.68-2.048l-259.072-151.04c-4.608-2.56-7.68-7.68-7.68-13.312l-1.536-299.52c0-5.632 3.072-10.752 7.68-13.312s10.752-2.56 15.36 0l259.072 151.04c4.608 2.56 7.68 7.68 7.68 13.312l1.536 299.52c0 5.632-3.072 10.752-7.68 13.312-2.56 1.536-5.12 2.048-7.68 2.048zM229.376 711.68l228.352 133.12-1.024-264.192-228.352-133.12 1.024 264.192zM550.912 886.784c-2.56 0-5.12-0.512-7.68-2.048-4.608-2.56-7.68-7.68-7.68-13.312l1.536-299.52c0-5.632 3.072-10.24 7.68-13.312L803.84 407.552c4.608-2.56 10.752-2.56 15.36 0 4.608 2.56 7.68 7.68 7.68 13.312l-1.536 299.52c0 5.632-3.072 10.24-7.68 13.312l-259.072 151.04c-2.56 1.536-5.12 2.048-7.68 2.048z m16.384-306.176l-1.024 264.192 228.352-133.12 1.024-264.192-228.352 133.12z" fill="#dbdbdb" opacity=".5" p-id="13252"></path><path d="M269.824 688.64l-1.024-170.496L416.256 604.16l0.512 169.984zM607.744 604.16l147.456-86.016-1.024 170.496-146.944 85.504zM364.032 353.28L512 268.8 659.968 353.28 512 437.76z" fill="#dbdbdb" opacity=".2" p-id="13253"></path></svg>
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
462
public/tinymce/langs/zh_CN.js
Normal file
462
public/tinymce/langs/zh_CN.js
Normal file
@@ -0,0 +1,462 @@
|
||||
tinymce.addI18n('zh_CN',{
|
||||
"Redo": "\u91cd\u505a",
|
||||
"Undo": "\u64a4\u9500",
|
||||
"Cut": "\u526a\u5207",
|
||||
"Copy": "\u590d\u5236",
|
||||
"Paste": "\u7c98\u8d34",
|
||||
"Select all": "\u5168\u9009",
|
||||
"New document": "\u65b0\u6587\u4ef6",
|
||||
"Ok": "\u786e\u5b9a",
|
||||
"Cancel": "\u53d6\u6d88",
|
||||
"Visual aids": "\u7f51\u683c\u7ebf",
|
||||
"Bold": "\u7c97\u4f53",
|
||||
"Italic": "\u659c\u4f53",
|
||||
"Underline": "\u4e0b\u5212\u7ebf",
|
||||
"Strikethrough": "\u5220\u9664\u7ebf",
|
||||
"Superscript": "\u4e0a\u6807",
|
||||
"Subscript": "\u4e0b\u6807",
|
||||
"Clear formatting": "\u6e05\u9664\u683c\u5f0f",
|
||||
"Align left": "\u5de6\u8fb9\u5bf9\u9f50",
|
||||
"Align center": "\u4e2d\u95f4\u5bf9\u9f50",
|
||||
"Align right": "\u53f3\u8fb9\u5bf9\u9f50",
|
||||
"Justify": "\u4e24\u7aef\u5bf9\u9f50",
|
||||
"Bullet list": "\u9879\u76ee\u7b26\u53f7",
|
||||
"Numbered list": "\u7f16\u53f7\u5217\u8868",
|
||||
"Decrease indent": "\u51cf\u5c11\u7f29\u8fdb",
|
||||
"Increase indent": "\u589e\u52a0\u7f29\u8fdb",
|
||||
"Close": "\u5173\u95ed",
|
||||
"Formats": "\u683c\u5f0f",
|
||||
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u6253\u5f00\u526a\u8d34\u677f\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u7b49\u5feb\u6377\u952e\u3002",
|
||||
"Headers": "\u6807\u9898",
|
||||
"Header 1": "\u6807\u98981",
|
||||
"Header 2": "\u6807\u98982",
|
||||
"Header 3": "\u6807\u98983",
|
||||
"Header 4": "\u6807\u98984",
|
||||
"Header 5": "\u6807\u98985",
|
||||
"Header 6": "\u6807\u98986",
|
||||
"Headings": "\u6807\u9898",
|
||||
"Heading 1": "\u6807\u98981",
|
||||
"Heading 2": "\u6807\u98982",
|
||||
"Heading 3": "\u6807\u98983",
|
||||
"Heading 4": "\u6807\u98984",
|
||||
"Heading 5": "\u6807\u98985",
|
||||
"Heading 6": "\u6807\u98986",
|
||||
"Preformatted": "\u9884\u5148\u683c\u5f0f\u5316\u7684",
|
||||
"Div": "Div",
|
||||
"Pre": "Pre",
|
||||
"Code": "\u4ee3\u7801",
|
||||
"Paragraph": "\u6bb5\u843d",
|
||||
"Blockquote": "\u5f15\u6587\u533a\u5757",
|
||||
"Inline": "\u6587\u672c",
|
||||
"Blocks": "\u57fa\u5757",
|
||||
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002",
|
||||
"Fonts": "\u5b57\u4f53",
|
||||
"Font Sizes": "\u5b57\u53f7",
|
||||
"Class": "\u7c7b\u578b",
|
||||
"Browse for an image": "\u6d4f\u89c8\u56fe\u50cf",
|
||||
"OR": "\u6216",
|
||||
"Drop an image here": "\u62d6\u653e\u4e00\u5f20\u56fe\u50cf\u81f3\u6b64",
|
||||
"Upload": "\u4e0a\u4f20",
|
||||
"Block": "\u5757",
|
||||
"Align": "\u5bf9\u9f50",
|
||||
"Default": "\u9ed8\u8ba4",
|
||||
"Circle": "\u7a7a\u5fc3\u5706",
|
||||
"Disc": "\u5b9e\u5fc3\u5706",
|
||||
"Square": "\u65b9\u5757",
|
||||
"Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd",
|
||||
"Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd",
|
||||
"Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd",
|
||||
"Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd",
|
||||
"Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd",
|
||||
"Anchor...": "\u951a\u70b9...",
|
||||
"Name": "\u540d\u79f0",
|
||||
"Id": "\u6807\u8bc6\u7b26",
|
||||
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u6807\u8bc6\u7b26\u5e94\u8be5\u4ee5\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u8ddf\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002",
|
||||
"You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f",
|
||||
"Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f",
|
||||
"Special character...": "\u7279\u6b8a\u5b57\u7b26...",
|
||||
"Source code": "\u6e90\u4ee3\u7801",
|
||||
"Insert\/Edit code sample": "\u63d2\u5165\/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b",
|
||||
"Language": "\u8bed\u8a00",
|
||||
"Code sample...": "\u793a\u4f8b\u4ee3\u7801...",
|
||||
"Color Picker": "\u9009\u8272\u5668",
|
||||
"R": "R",
|
||||
"G": "G",
|
||||
"B": "B",
|
||||
"Left to right": "\u4ece\u5de6\u5230\u53f3",
|
||||
"Right to left": "\u4ece\u53f3\u5230\u5de6",
|
||||
"Emoticons": "\u8868\u60c5",
|
||||
"Emoticons...": "\u8868\u60c5\u7b26\u53f7...",
|
||||
"Metadata and Document Properties": "\u5143\u6570\u636e\u548c\u6587\u6863\u5c5e\u6027",
|
||||
"Title": "\u6807\u9898",
|
||||
"Keywords": "\u5173\u952e\u8bcd",
|
||||
"Description": "\u63cf\u8ff0",
|
||||
"Robots": "\u673a\u5668\u4eba",
|
||||
"Author": "\u4f5c\u8005",
|
||||
"Encoding": "\u7f16\u7801",
|
||||
"Fullscreen": "\u5168\u5c4f",
|
||||
"Action": "\u64cd\u4f5c",
|
||||
"Shortcut": "\u5feb\u6377\u952e",
|
||||
"Help": "\u5e2e\u52a9",
|
||||
"Address": "\u5730\u5740",
|
||||
"Focus to menubar": "\u79fb\u52a8\u7126\u70b9\u5230\u83dc\u5355\u680f",
|
||||
"Focus to toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u5de5\u5177\u680f",
|
||||
"Focus to element path": "\u79fb\u52a8\u7126\u70b9\u5230\u5143\u7d20\u8def\u5f84",
|
||||
"Focus to contextual toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u4e0a\u4e0b\u6587\u83dc\u5355",
|
||||
"Insert link (if link plugin activated)": "\u63d2\u5165\u94fe\u63a5 (\u5982\u679c\u94fe\u63a5\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
|
||||
"Save (if save plugin activated)": "\u4fdd\u5b58(\u5982\u679c\u4fdd\u5b58\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
|
||||
"Find (if searchreplace plugin activated)": "\u67e5\u627e(\u5982\u679c\u67e5\u627e\u66ff\u6362\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
|
||||
"Plugins installed ({0}):": "\u5df2\u5b89\u88c5\u63d2\u4ef6 ({0}):",
|
||||
"Premium plugins:": "\u4f18\u79c0\u63d2\u4ef6\uff1a",
|
||||
"Learn more...": "\u4e86\u89e3\u66f4\u591a...",
|
||||
"You are using {0}": "\u4f60\u6b63\u5728\u4f7f\u7528 {0}",
|
||||
"Plugins": "\u63d2\u4ef6",
|
||||
"Handy Shortcuts": "\u5feb\u6377\u952e",
|
||||
"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf",
|
||||
"Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247",
|
||||
"Alternative description": "\u66ff\u4ee3\u63cf\u8ff0",
|
||||
"Accessibility": "\u8f85\u52a9\u529f\u80fd",
|
||||
"Image is decorative": "\u56fe\u50cf\u662f\u88c5\u9970\u6027\u7684",
|
||||
"Source": "\u5730\u5740",
|
||||
"Dimensions": "\u5927\u5c0f",
|
||||
"Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4",
|
||||
"General": "\u666e\u901a",
|
||||
"Advanced": "\u9ad8\u7ea7",
|
||||
"Style": "\u6837\u5f0f",
|
||||
"Vertical space": "\u5782\u76f4\u8fb9\u8ddd",
|
||||
"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd",
|
||||
"Border": "\u8fb9\u6846",
|
||||
"Insert image": "\u63d2\u5165\u56fe\u7247",
|
||||
"Image...": "\u56fe\u7247...",
|
||||
"Image list": "\u56fe\u7247\u5217\u8868",
|
||||
"Rotate counterclockwise": "\u9006\u65f6\u9488\u65cb\u8f6c",
|
||||
"Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c",
|
||||
"Flip vertically": "\u5782\u76f4\u7ffb\u8f6c",
|
||||
"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c",
|
||||
"Edit image": "\u7f16\u8f91\u56fe\u7247",
|
||||
"Image options": "\u56fe\u7247\u9009\u9879",
|
||||
"Zoom in": "\u653e\u5927",
|
||||
"Zoom out": "\u7f29\u5c0f",
|
||||
"Crop": "\u88c1\u526a",
|
||||
"Resize": "\u8c03\u6574\u5927\u5c0f",
|
||||
"Orientation": "\u65b9\u5411",
|
||||
"Brightness": "\u4eae\u5ea6",
|
||||
"Sharpen": "\u9510\u5316",
|
||||
"Contrast": "\u5bf9\u6bd4\u5ea6",
|
||||
"Color levels": "\u989c\u8272\u5c42\u6b21",
|
||||
"Gamma": "\u4f3d\u9a6c\u503c",
|
||||
"Invert": "\u53cd\u8f6c",
|
||||
"Apply": "\u5e94\u7528",
|
||||
"Back": "\u540e\u9000",
|
||||
"Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4",
|
||||
"Date\/time": "\u65e5\u671f\/\u65f6\u95f4",
|
||||
"Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5",
|
||||
"Text to display": "\u663e\u793a\u6587\u5b57",
|
||||
"Url": "\u5730\u5740",
|
||||
"Open link in...": "\u94fe\u63a5\u6253\u5f00\u4f4d\u7f6e...",
|
||||
"Current window": "\u5f53\u524d\u7a97\u53e3",
|
||||
"None": "\u65e0",
|
||||
"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00",
|
||||
"Open link": "\u6253\u5f00\u94fe\u63a5",
|
||||
"Remove link": "\u5220\u9664\u94fe\u63a5",
|
||||
"Anchors": "\u951a\u70b9",
|
||||
"Link...": "\u94fe\u63a5...",
|
||||
"Paste or type a link": "\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5",
|
||||
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f",
|
||||
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f",
|
||||
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "\u60a8\u8f93\u5165\u7684 URL \u4f3c\u4e4e\u662f\u4e00\u4e2a\u5916\u90e8\u94fe\u63a5\u3002\u60a8\u60f3\u6dfb\u52a0\u6240\u9700\u7684 https:\/\/ \u524d\u7f00\u5417\uff1f",
|
||||
"Link list": "\u94fe\u63a5\u5217\u8868",
|
||||
"Insert video": "\u63d2\u5165\u89c6\u9891",
|
||||
"Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891",
|
||||
"Insert\/edit media": "\u63d2\u5165\/\u7f16\u8f91\u5a92\u4f53",
|
||||
"Alternative source": "\u955c\u50cf",
|
||||
"Alternative source URL": "\u66ff\u4ee3\u6765\u6e90\u7f51\u5740",
|
||||
"Media poster (Image URL)": "\u5c01\u9762(\u56fe\u7247\u5730\u5740)",
|
||||
"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:",
|
||||
"Embed": "\u5185\u5d4c",
|
||||
"Media...": "\u591a\u5a92\u4f53...",
|
||||
"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c",
|
||||
"Page break": "\u5206\u9875\u7b26",
|
||||
"Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c",
|
||||
"Preview": "\u9884\u89c8",
|
||||
"Print...": "\u6253\u5370...",
|
||||
"Save": "\u4fdd\u5b58",
|
||||
"Find": "\u67e5\u627e",
|
||||
"Replace with": "\u66ff\u6362\u4e3a",
|
||||
"Replace": "\u66ff\u6362",
|
||||
"Replace all": "\u5168\u90e8\u66ff\u6362",
|
||||
"Previous": "\u4e0a\u4e00\u4e2a",
|
||||
"Next": "\u4e0b\u4e00\u4e2a",
|
||||
"Find and Replace": "\u67e5\u627e\u548c\u66ff\u6362",
|
||||
"Find and replace...": "\u67e5\u627e\u5e76\u66ff\u6362...",
|
||||
"Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.",
|
||||
"Match case": "\u533a\u5206\u5927\u5c0f\u5199",
|
||||
"Find whole words only": "\u5168\u5b57\u5339\u914d",
|
||||
"Find in selection": "\u5728\u9009\u533a\u4e2d\u67e5\u627e",
|
||||
"Spellcheck": "\u62fc\u5199\u68c0\u67e5",
|
||||
"Spellcheck Language": "\u62fc\u5199\u68c0\u67e5\u8bed\u8a00",
|
||||
"No misspellings found.": "\u6ca1\u6709\u53d1\u73b0\u62fc\u5199\u9519\u8bef",
|
||||
"Ignore": "\u5ffd\u7565",
|
||||
"Ignore all": "\u5168\u90e8\u5ffd\u7565",
|
||||
"Finish": "\u5b8c\u6210",
|
||||
"Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178",
|
||||
"Insert table": "\u63d2\u5165\u8868\u683c",
|
||||
"Table properties": "\u8868\u683c\u5c5e\u6027",
|
||||
"Delete table": "\u5220\u9664\u8868\u683c",
|
||||
"Cell": "\u5355\u5143\u683c",
|
||||
"Row": "\u884c",
|
||||
"Column": "\u5217",
|
||||
"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027",
|
||||
"Merge cells": "\u5408\u5e76\u5355\u5143\u683c",
|
||||
"Split cell": "\u62c6\u5206\u5355\u5143\u683c",
|
||||
"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165",
|
||||
"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165",
|
||||
"Delete row": "\u5220\u9664\u884c",
|
||||
"Row properties": "\u884c\u5c5e\u6027",
|
||||
"Cut row": "\u526a\u5207\u884c",
|
||||
"Copy row": "\u590d\u5236\u884c",
|
||||
"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9",
|
||||
"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9",
|
||||
"Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165",
|
||||
"Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165",
|
||||
"Delete column": "\u5220\u9664\u5217",
|
||||
"Cols": "\u5217",
|
||||
"Rows": "\u884c",
|
||||
"Width": "\u5bbd",
|
||||
"Height": "\u9ad8",
|
||||
"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd",
|
||||
"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd",
|
||||
"Caption": "\u6807\u9898",
|
||||
"Show caption": "\u663e\u793a\u6807\u9898",
|
||||
"Left": "\u5de6\u5bf9\u9f50",
|
||||
"Center": "\u5c45\u4e2d",
|
||||
"Right": "\u53f3\u5bf9\u9f50",
|
||||
"Cell type": "\u5355\u5143\u683c\u7c7b\u578b",
|
||||
"Scope": "\u8303\u56f4",
|
||||
"Alignment": "\u5bf9\u9f50\u65b9\u5f0f",
|
||||
"H Align": "\u6c34\u5e73\u5bf9\u9f50",
|
||||
"V Align": "\u5782\u76f4\u5bf9\u9f50",
|
||||
"Top": "\u9876\u90e8\u5bf9\u9f50",
|
||||
"Middle": "\u5782\u76f4\u5c45\u4e2d",
|
||||
"Bottom": "\u5e95\u90e8\u5bf9\u9f50",
|
||||
"Header cell": "\u8868\u5934\u5355\u5143\u683c",
|
||||
"Row group": "\u884c\u7ec4",
|
||||
"Column group": "\u5217\u7ec4",
|
||||
"Row type": "\u884c\u7c7b\u578b",
|
||||
"Header": "\u8868\u5934",
|
||||
"Body": "\u8868\u4f53",
|
||||
"Footer": "\u8868\u5c3e",
|
||||
"Border color": "\u8fb9\u6846\u989c\u8272",
|
||||
"Insert template...": "\u63d2\u5165\u6a21\u677f...",
|
||||
"Templates": "\u6a21\u677f",
|
||||
"Template": "\u6a21\u677f",
|
||||
"Text color": "\u6587\u5b57\u989c\u8272",
|
||||
"Background color": "\u80cc\u666f\u8272",
|
||||
"Custom...": "\u81ea\u5b9a\u4e49...",
|
||||
"Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272",
|
||||
"No color": "\u65e0",
|
||||
"Remove color": "\u79fb\u9664\u989c\u8272",
|
||||
"Table of Contents": "\u5185\u5bb9\u5217\u8868",
|
||||
"Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846",
|
||||
"Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26",
|
||||
"Word count": "\u5b57\u6570",
|
||||
"Count": "\u8ba1\u6570",
|
||||
"Document": "\u6587\u6863",
|
||||
"Selection": "\u9009\u62e9",
|
||||
"Words": "\u5355\u8bcd",
|
||||
"Words: {0}": "\u5b57\u6570\uff1a{0}",
|
||||
"{0} words": "{0} \u5b57",
|
||||
"File": "\u6587\u4ef6",
|
||||
"Edit": "\u7f16\u8f91",
|
||||
"Insert": "\u63d2\u5165",
|
||||
"View": "\u89c6\u56fe",
|
||||
"Format": "\u683c\u5f0f",
|
||||
"Table": "\u8868\u683c",
|
||||
"Tools": "\u5de5\u5177",
|
||||
"Powered by {0}": "\u7531{0}\u9a71\u52a8",
|
||||
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9",
|
||||
"Image title": "\u56fe\u7247\u6807\u9898",
|
||||
"Border width": "\u8fb9\u6846\u5bbd\u5ea6",
|
||||
"Border style": "\u8fb9\u6846\u6837\u5f0f",
|
||||
"Error": "\u9519\u8bef",
|
||||
"Warn": "\u8b66\u544a",
|
||||
"Valid": "\u6709\u6548",
|
||||
"To open the popup, press Shift+Enter": "\u6309Shitf+Enter\u952e\u6253\u5f00\u5bf9\u8bdd\u6846",
|
||||
"Rich Text Area. Press ALT-0 for help.": "\u7f16\u8f91\u533a\u3002\u6309Alt+0\u952e\u6253\u5f00\u5e2e\u52a9\u3002",
|
||||
"System Font": "\u7cfb\u7edf\u5b57\u4f53",
|
||||
"Failed to upload image: {0}": "\u56fe\u7247\u4e0a\u4f20\u5931\u8d25: {0}",
|
||||
"Failed to load plugin: {0} from url {1}": "\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25: {0} \u6765\u81ea\u94fe\u63a5 {1}",
|
||||
"Failed to load plugin url: {0}": "\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25 \u94fe\u63a5: {0}",
|
||||
"Failed to initialize plugin: {0}": "\u63d2\u4ef6\u521d\u59cb\u5316\u5931\u8d25: {0}",
|
||||
"example": "\u793a\u4f8b",
|
||||
"Search": "\u641c\u7d22",
|
||||
"All": "\u5168\u90e8",
|
||||
"Currency": "\u8d27\u5e01",
|
||||
"Text": "\u6587\u5b57",
|
||||
"Quotations": "\u5f15\u7528",
|
||||
"Mathematical": "\u6570\u5b66",
|
||||
"Extended Latin": "\u62c9\u4e01\u8bed\u6269\u5145",
|
||||
"Symbols": "\u7b26\u53f7",
|
||||
"Arrows": "\u7bad\u5934",
|
||||
"User Defined": "\u81ea\u5b9a\u4e49",
|
||||
"dollar sign": "\u7f8e\u5143\u7b26\u53f7",
|
||||
"currency sign": "\u8d27\u5e01\u7b26\u53f7",
|
||||
"euro-currency sign": "\u6b27\u5143\u7b26\u53f7",
|
||||
"colon sign": "\u5192\u53f7",
|
||||
"cruzeiro sign": "\u514b\u9c81\u8d5b\u7f57\u5e01\u7b26\u53f7",
|
||||
"french franc sign": "\u6cd5\u90ce\u7b26\u53f7",
|
||||
"lira sign": "\u91cc\u62c9\u7b26\u53f7",
|
||||
"mill sign": "\u5bc6\u5c14\u7b26\u53f7",
|
||||
"naira sign": "\u5948\u62c9\u7b26\u53f7",
|
||||
"peseta sign": "\u6bd4\u585e\u5854\u7b26\u53f7",
|
||||
"rupee sign": "\u5362\u6bd4\u7b26\u53f7",
|
||||
"won sign": "\u97e9\u5143\u7b26\u53f7",
|
||||
"new sheqel sign": "\u65b0\u8c22\u514b\u5c14\u7b26\u53f7",
|
||||
"dong sign": "\u8d8a\u5357\u76fe\u7b26\u53f7",
|
||||
"kip sign": "\u8001\u631d\u57fa\u666e\u7b26\u53f7",
|
||||
"tugrik sign": "\u56fe\u683c\u91cc\u514b\u7b26\u53f7",
|
||||
"drachma sign": "\u5fb7\u62c9\u514b\u9a6c\u7b26\u53f7",
|
||||
"german penny symbol": "\u5fb7\u56fd\u4fbf\u58eb\u7b26\u53f7",
|
||||
"peso sign": "\u6bd4\u7d22\u7b26\u53f7",
|
||||
"guarani sign": "\u74dc\u62c9\u5c3c\u7b26\u53f7",
|
||||
"austral sign": "\u6fb3\u5143\u7b26\u53f7",
|
||||
"hryvnia sign": "\u683c\u91cc\u592b\u5c3c\u4e9a\u7b26\u53f7",
|
||||
"cedi sign": "\u585e\u5730\u7b26\u53f7",
|
||||
"livre tournois sign": "\u91cc\u5f17\u5f17\u5c14\u7b26\u53f7",
|
||||
"spesmilo sign": "spesmilo\u7b26\u53f7",
|
||||
"tenge sign": "\u575a\u6208\u7b26\u53f7",
|
||||
"indian rupee sign": "\u5370\u5ea6\u5362\u6bd4",
|
||||
"turkish lira sign": "\u571f\u8033\u5176\u91cc\u62c9",
|
||||
"nordic mark sign": "\u5317\u6b27\u9a6c\u514b",
|
||||
"manat sign": "\u9a6c\u7eb3\u7279\u7b26\u53f7",
|
||||
"ruble sign": "\u5362\u5e03\u7b26\u53f7",
|
||||
"yen character": "\u65e5\u5143\u5b57\u6837",
|
||||
"yuan character": "\u4eba\u6c11\u5e01\u5143\u5b57\u6837",
|
||||
"yuan character, in hong kong and taiwan": "\u5143\u5b57\u6837\uff08\u6e2f\u53f0\u5730\u533a\uff09",
|
||||
"yen\/yuan character variant one": "\u5143\u5b57\u6837\uff08\u5927\u5199\uff09",
|
||||
"Loading emoticons...": "\u52a0\u8f7d\u8868\u60c5\u7b26\u53f7...",
|
||||
"Could not load emoticons": "\u4e0d\u80fd\u52a0\u8f7d\u8868\u60c5\u7b26\u53f7",
|
||||
"People": "\u4eba\u7c7b",
|
||||
"Animals and Nature": "\u52a8\u7269\u548c\u81ea\u7136",
|
||||
"Food and Drink": "\u98df\u7269\u548c\u996e\u54c1",
|
||||
"Activity": "\u6d3b\u52a8",
|
||||
"Travel and Places": "\u65c5\u6e38\u548c\u5730\u70b9",
|
||||
"Objects": "\u7269\u4ef6",
|
||||
"Flags": "\u65d7\u5e1c",
|
||||
"Characters": "\u5b57\u7b26",
|
||||
"Characters (no spaces)": "\u5b57\u7b26(\u65e0\u7a7a\u683c)",
|
||||
"{0} characters": "{0} \u4e2a\u5b57\u7b26",
|
||||
"Error: Form submit field collision.": "\u9519\u8bef: \u8868\u5355\u63d0\u4ea4\u5b57\u6bb5\u51b2\u7a81\u3002",
|
||||
"Error: No form element found.": "\u9519\u8bef: \u6ca1\u6709\u8868\u5355\u63a7\u4ef6\u3002",
|
||||
"Update": "\u66f4\u65b0",
|
||||
"Color swatch": "\u989c\u8272\u6837\u672c",
|
||||
"Turquoise": "\u9752\u7eff\u8272",
|
||||
"Green": "\u7eff\u8272",
|
||||
"Blue": "\u84dd\u8272",
|
||||
"Purple": "\u7d2b\u8272",
|
||||
"Navy Blue": "\u6d77\u519b\u84dd",
|
||||
"Dark Turquoise": "\u6df1\u84dd\u7eff\u8272",
|
||||
"Dark Green": "\u6df1\u7eff\u8272",
|
||||
"Medium Blue": "\u4e2d\u84dd\u8272",
|
||||
"Medium Purple": "\u4e2d\u7d2b\u8272",
|
||||
"Midnight Blue": "\u6df1\u84dd\u8272",
|
||||
"Yellow": "\u9ec4\u8272",
|
||||
"Orange": "\u6a59\u8272",
|
||||
"Red": "\u7ea2\u8272",
|
||||
"Light Gray": "\u6d45\u7070\u8272",
|
||||
"Gray": "\u7070\u8272",
|
||||
"Dark Yellow": "\u6697\u9ec4\u8272",
|
||||
"Dark Orange": "\u6df1\u6a59\u8272",
|
||||
"Dark Red": "\u6df1\u7ea2\u8272",
|
||||
"Medium Gray": "\u4e2d\u7070\u8272",
|
||||
"Dark Gray": "\u6df1\u7070\u8272",
|
||||
"Light Green": "\u6d45\u7eff\u8272",
|
||||
"Light Yellow": "\u6d45\u9ec4\u8272",
|
||||
"Light Red": "\u6d45\u7ea2\u8272",
|
||||
"Light Purple": "\u6d45\u7d2b\u8272",
|
||||
"Light Blue": "\u6d45\u84dd\u8272",
|
||||
"Dark Purple": "\u6df1\u7d2b\u8272",
|
||||
"Dark Blue": "\u6df1\u84dd\u8272",
|
||||
"Black": "\u9ed1\u8272",
|
||||
"White": "\u767d\u8272",
|
||||
"Switch to or from fullscreen mode": "\u5207\u6362\u5168\u5c4f\u6a21\u5f0f",
|
||||
"Open help dialog": "\u6253\u5f00\u5e2e\u52a9\u5bf9\u8bdd\u6846",
|
||||
"history": "\u5386\u53f2",
|
||||
"styles": "\u6837\u5f0f",
|
||||
"formatting": "\u683c\u5f0f\u5316",
|
||||
"alignment": "\u5bf9\u9f50",
|
||||
"indentation": "\u7f29\u8fdb",
|
||||
"Font": "\u5b57\u4f53",
|
||||
"Size": "\u5b57\u53f7",
|
||||
"More...": "\u66f4\u591a...",
|
||||
"Select...": "\u9009\u62e9...",
|
||||
"Preferences": "\u9996\u9009\u9879",
|
||||
"Yes": "\u662f",
|
||||
"No": "\u5426",
|
||||
"Keyboard Navigation": "\u952e\u76d8\u6307\u5f15",
|
||||
"Version": "\u7248\u672c",
|
||||
"Code view": "\u4ee3\u7801\u89c6\u56fe",
|
||||
"Open popup menu for split buttons": "\u6253\u5f00\u5f39\u51fa\u5f0f\u83dc\u5355\uff0c\u7528\u4e8e\u62c6\u5206\u6309\u94ae",
|
||||
"List Properties": "\u5217\u8868\u5c5e\u6027",
|
||||
"List properties...": "\u6807\u9898\u5b57\u4f53\u5c5e\u6027",
|
||||
"Start list at number": "\u4ee5\u6570\u5b57\u5f00\u59cb\u5217\u8868",
|
||||
"Line height": "\u884c\u9ad8",
|
||||
"comments": "\u5907\u6ce8",
|
||||
"Format Painter": "\u683c\u5f0f\u5237",
|
||||
"Insert\/edit iframe": "\u63d2\u5165\/\u7f16\u8f91\u6846\u67b6",
|
||||
"Capitalization": "\u5927\u5199",
|
||||
"lowercase": "\u5c0f\u5199",
|
||||
"UPPERCASE": "\u5927\u5199",
|
||||
"Title Case": "\u9996\u5b57\u6bcd\u5927\u5199",
|
||||
"permanent pen": "\u8bb0\u53f7\u7b14",
|
||||
"Permanent Pen Properties": "\u6c38\u4e45\u7b14\u5c5e\u6027",
|
||||
"Permanent pen properties...": "\u6c38\u4e45\u7b14\u5c5e\u6027...",
|
||||
"case change": "\u6848\u4f8b\u66f4\u6539",
|
||||
"page embed": "\u9875\u9762\u5d4c\u5165",
|
||||
"Advanced sort...": "\u9ad8\u7ea7\u6392\u5e8f...",
|
||||
"Advanced Sort": "\u9ad8\u7ea7\u6392\u5e8f",
|
||||
"Sort table by column ascending": "\u6309\u5217\u5347\u5e8f\u8868",
|
||||
"Sort table by column descending": "\u6309\u5217\u964d\u5e8f\u8868",
|
||||
"Sort": "\u6392\u5e8f",
|
||||
"Order": "\u6392\u5e8f",
|
||||
"Sort by": "\u6392\u5e8f\u65b9\u5f0f",
|
||||
"Ascending": "\u5347\u5e8f",
|
||||
"Descending": "\u964d\u5e8f",
|
||||
"Column {0}": "\u5217{0}",
|
||||
"Row {0}": "\u884c{0}",
|
||||
"Spellcheck...": "\u62fc\u5199\u68c0\u67e5...",
|
||||
"Misspelled word": "\u62fc\u5199\u9519\u8bef\u7684\u5355\u8bcd",
|
||||
"Suggestions": "\u5efa\u8bae",
|
||||
"Change": "\u66f4\u6539",
|
||||
"Finding word suggestions": "\u67e5\u627e\u5355\u8bcd\u5efa\u8bae",
|
||||
"Success": "\u6210\u529f",
|
||||
"Repair": "\u4fee\u590d",
|
||||
"Issue {0} of {1}": "\u5171\u8ba1{1}\u95ee\u9898{0}",
|
||||
"Images must be marked as decorative or have an alternative text description": "\u56fe\u50cf\u5fc5\u987b\u6807\u8bb0\u4e3a\u88c5\u9970\u6027\u6216\u5177\u6709\u66ff\u4ee3\u6587\u672c\u63cf\u8ff0",
|
||||
"Images must have an alternative text description. Decorative images are not allowed.": "\u56fe\u50cf\u5fc5\u987b\u5177\u6709\u66ff\u4ee3\u6587\u672c\u63cf\u8ff0\u3002\u4e0d\u5141\u8bb8\u4f7f\u7528\u88c5\u9970\u56fe\u50cf\u3002",
|
||||
"Or provide alternative text:": "\u6216\u63d0\u4f9b\u5907\u9009\u6587\u672c\uff1a",
|
||||
"Make image decorative:": "\u4f7f\u56fe\u50cf\u88c5\u9970\uff1a",
|
||||
"ID attribute must be unique": "ID \u5c5e\u6027\u5fc5\u987b\u662f\u552f\u4e00\u7684",
|
||||
"Make ID unique": "\u4f7f ID \u72ec\u4e00\u65e0\u4e8c",
|
||||
"Keep this ID and remove all others": "\u4fdd\u7559\u6b64 ID \u5e76\u5220\u9664\u6240\u6709\u5176\u4ed6",
|
||||
"Remove this ID": "\u5220\u9664\u6b64 ID",
|
||||
"Remove all IDs": "\u6e05\u9664\u5168\u90e8IDs",
|
||||
"Checklist": "\u6e05\u5355",
|
||||
"Anchor": "\u951a\u70b9",
|
||||
"Special character": "\u7279\u6b8a\u7b26\u53f7",
|
||||
"Code sample": "\u4ee3\u7801\u793a\u4f8b",
|
||||
"Color": "\u989c\u8272",
|
||||
"Document properties": "\u6587\u6863\u5c5e\u6027",
|
||||
"Image description": "\u56fe\u7247\u63cf\u8ff0",
|
||||
"Image": "\u56fe\u7247",
|
||||
"Insert link": "\u63d2\u5165\u94fe\u63a5",
|
||||
"Target": "\u6253\u5f00\u65b9\u5f0f",
|
||||
"Link": "\u94fe\u63a5",
|
||||
"Poster": "\u5c01\u9762",
|
||||
"Media": "\u5a92\u4f53",
|
||||
"Print": "\u6253\u5370",
|
||||
"Prev": "\u4e0a\u4e00\u4e2a",
|
||||
"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362",
|
||||
"Whole words": "\u5168\u5b57\u5339\u914d",
|
||||
"Insert template": "\u63d2\u5165\u6a21\u677f"
|
||||
});
|
||||
419
public/tinymce/langs/zh_TW.js
Normal file
419
public/tinymce/langs/zh_TW.js
Normal file
@@ -0,0 +1,419 @@
|
||||
tinymce.addI18n('zh_TW',{
|
||||
"Redo": "\u91cd\u505a",
|
||||
"Undo": "\u64a4\u92b7",
|
||||
"Cut": "\u526a\u4e0b",
|
||||
"Copy": "\u8907\u88fd",
|
||||
"Paste": "\u8cbc\u4e0a",
|
||||
"Select all": "\u5168\u9078",
|
||||
"New document": "\u65b0\u6587\u4ef6",
|
||||
"Ok": "\u78ba\u5b9a",
|
||||
"Cancel": "\u53d6\u6d88",
|
||||
"Visual aids": "\u5c0f\u5e6b\u624b",
|
||||
"Bold": "\u7c97\u9ad4",
|
||||
"Italic": "\u659c\u9ad4",
|
||||
"Underline": "\u4e0b\u5283\u7dda",
|
||||
"Strikethrough": "\u522a\u9664\u7dda",
|
||||
"Superscript": "\u4e0a\u6a19",
|
||||
"Subscript": "\u4e0b\u6a19",
|
||||
"Clear formatting": "\u6e05\u9664\u683c\u5f0f",
|
||||
"Align left": "\u5de6\u908a\u5c0d\u9f4a",
|
||||
"Align center": "\u4e2d\u9593\u5c0d\u9f4a",
|
||||
"Align right": "\u53f3\u908a\u5c0d\u9f4a",
|
||||
"Justify": "\u5de6\u53f3\u5c0d\u9f4a",
|
||||
"Bullet list": "\u9805\u76ee\u6e05\u55ae",
|
||||
"Numbered list": "\u6578\u5b57\u6e05\u55ae",
|
||||
"Decrease indent": "\u6e1b\u5c11\u7e2e\u6392",
|
||||
"Increase indent": "\u589e\u52a0\u7e2e\u6392",
|
||||
"Close": "\u95dc\u9589",
|
||||
"Formats": "\u683c\u5f0f",
|
||||
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u60a8\u7684\u700f\u89bd\u5668\u4e0d\u652f\u63f4\u5b58\u53d6\u526a\u8cbc\u7c3f\uff0c\u53ef\u4ee5\u4f7f\u7528\u5feb\u901f\u9375 Ctrl + X\/C\/V \u4ee3\u66ff\u526a\u4e0b\u3001\u8907\u88fd\u8207\u8cbc\u4e0a\u3002",
|
||||
"Headers": "\u6a19\u984c",
|
||||
"Header 1": "\u6a19\u984c 1",
|
||||
"Header 2": "\u6a19\u984c 2",
|
||||
"Header 3": "\u6a19\u984c 3",
|
||||
"Header 4": "\u6a19\u984c 4",
|
||||
"Header 5": "\u6a19\u984c 5",
|
||||
"Header 6": "\u6a19\u984c 6",
|
||||
"Headings": "\u6a19\u984c",
|
||||
"Heading 1": "\u6a19\u984c1",
|
||||
"Heading 2": "\u6a19\u984c2",
|
||||
"Heading 3": "\u6a19\u984c3",
|
||||
"Heading 4": "\u6a19\u984c4",
|
||||
"Heading 5": "\u6a19\u984c5",
|
||||
"Heading 6": "\u6a19\u984c6",
|
||||
"Preformatted": "\u9810\u5148\u683c\u5f0f\u5316\u7684",
|
||||
"Div": "Div",
|
||||
"Pre": "Pre",
|
||||
"Code": "\u4ee3\u78bc",
|
||||
"Paragraph": "\u6bb5\u843d",
|
||||
"Blockquote": "\u5f15\u6587\u5340\u584a",
|
||||
"Inline": "\u5167\u806f",
|
||||
"Blocks": "\u57fa\u584a",
|
||||
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u76ee\u524d\u5c07\u4ee5\u7d14\u6587\u5b57\u7684\u6a21\u5f0f\u8cbc\u4e0a\uff0c\u60a8\u53ef\u4ee5\u518d\u9ede\u9078\u4e00\u6b21\u53d6\u6d88\u3002",
|
||||
"Fonts": "\u5b57\u578b",
|
||||
"Font Sizes": "\u5b57\u578b\u5927\u5c0f",
|
||||
"Class": "\u985e\u578b",
|
||||
"Browse for an image": "\u5f9e\u5716\u7247\u4e2d\u700f\u89bd",
|
||||
"OR": "\u6216",
|
||||
"Drop an image here": "\u62d6\u66f3\u5716\u7247\u81f3\u6b64",
|
||||
"Upload": "\u4e0a\u50b3",
|
||||
"Block": "\u5340\u584a",
|
||||
"Align": "\u5c0d\u9f4a",
|
||||
"Default": "\u9810\u8a2d",
|
||||
"Circle": "\u7a7a\u5fc3\u5713",
|
||||
"Disc": "\u5be6\u5fc3\u5713",
|
||||
"Square": "\u6b63\u65b9\u5f62",
|
||||
"Lower Alpha": "\u5c0f\u5beb\u82f1\u6587\u5b57\u6bcd",
|
||||
"Lower Greek": "\u5e0c\u81d8\u5b57\u6bcd",
|
||||
"Lower Roman": "\u5c0f\u5beb\u7f85\u99ac\u6578\u5b57",
|
||||
"Upper Alpha": "\u5927\u5beb\u82f1\u6587\u5b57\u6bcd",
|
||||
"Upper Roman": "\u5927\u5beb\u7f85\u99ac\u6578\u5b57",
|
||||
"Anchor...": "\u9328\u9ede...",
|
||||
"Name": "\u540d\u7a31",
|
||||
"Id": "Id",
|
||||
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id\u61c9\u4ee5\u5b57\u6bcd\u958b\u982d\uff0c\u5f8c\u9762\u63a5\u8457\u5b57\u6bcd\uff0c\u6578\u5b57\uff0c\u7834\u6298\u865f\uff0c\u9ede\u6578\uff0c\u5192\u865f\u6216\u4e0b\u5283\u7dda\u3002",
|
||||
"You have unsaved changes are you sure you want to navigate away?": "\u7de8\u8f2f\u5c1a\u672a\u88ab\u5132\u5b58\uff0c\u4f60\u78ba\u5b9a\u8981\u96e2\u958b\uff1f",
|
||||
"Restore last draft": "\u8f09\u5165\u4e0a\u4e00\u6b21\u7de8\u8f2f\u7684\u8349\u7a3f",
|
||||
"Special character...": "\u7279\u6b8a\u5b57\u5143......",
|
||||
"Source code": "\u539f\u59cb\u78bc",
|
||||
"Insert\/Edit code sample": "\u63d2\u5165\/\u7de8\u8f2f \u7a0b\u5f0f\u78bc\u7bc4\u4f8b",
|
||||
"Language": "\u8a9e\u8a00",
|
||||
"Code sample...": "\u7a0b\u5f0f\u78bc\u7bc4\u4f8b...",
|
||||
"Color Picker": "\u9078\u8272\u5668",
|
||||
"R": "\u7d05",
|
||||
"G": "\u7da0",
|
||||
"B": "\u85cd",
|
||||
"Left to right": "\u5f9e\u5de6\u5230\u53f3",
|
||||
"Right to left": "\u5f9e\u53f3\u5230\u5de6",
|
||||
"Emoticons...": "\u8868\u60c5\u7b26\u865f\u2026",
|
||||
"Metadata and Document Properties": "\u5f8c\u8a2d\u8cc7\u6599\u8207\u6587\u4ef6\u5c6c\u6027",
|
||||
"Title": "\u6a19\u984c",
|
||||
"Keywords": "\u95dc\u9375\u5b57",
|
||||
"Description": "\u63cf\u8ff0",
|
||||
"Robots": "\u6a5f\u5668\u4eba",
|
||||
"Author": "\u4f5c\u8005",
|
||||
"Encoding": "\u7de8\u78bc",
|
||||
"Fullscreen": "\u5168\u87a2\u5e55",
|
||||
"Action": "\u52d5\u4f5c",
|
||||
"Shortcut": "\u5feb\u901f\u9375",
|
||||
"Help": "\u5e6b\u52a9",
|
||||
"Address": "\u5730\u5740",
|
||||
"Focus to menubar": "\u8df3\u81f3\u9078\u55ae\u5217",
|
||||
"Focus to toolbar": "\u8df3\u81f3\u5de5\u5177\u5217",
|
||||
"Focus to element path": "\u8df3\u81f3HTML\u5143\u7d20\u5217",
|
||||
"Focus to contextual toolbar": "\u8df3\u81f3\u5feb\u6377\u9078\u55ae",
|
||||
"Insert link (if link plugin activated)": "\u65b0\u589e\u6377\u5f91 (\u6377\u5f91\u5916\u639b\u555f\u7528\u6642)",
|
||||
"Save (if save plugin activated)": "\u5132\u5b58 (\u5132\u5b58\u5916\u639b\u555f\u7528\u6642)",
|
||||
"Find (if searchreplace plugin activated)": "\u5c0b\u627e (\u5c0b\u627e\u53d6\u4ee3\u5916\u639b\u555f\u7528\u6642)",
|
||||
"Plugins installed ({0}):": "({0}) \u500b\u5916\u639b\u5df2\u5b89\u88dd\uff1a",
|
||||
"Premium plugins:": "\u52a0\u503c\u5916\u639b\uff1a",
|
||||
"Learn more...": "\u4e86\u89e3\u66f4\u591a...",
|
||||
"You are using {0}": "\u60a8\u6b63\u5728\u4f7f\u7528 {0}",
|
||||
"Plugins": "\u5916\u639b",
|
||||
"Handy Shortcuts": "\u5feb\u901f\u9375",
|
||||
"Horizontal line": "\u6c34\u5e73\u7dda",
|
||||
"Insert\/edit image": "\u63d2\u5165\/\u7de8\u8f2f \u5716\u7247",
|
||||
"Image description": "\u5716\u7247\u63cf\u8ff0",
|
||||
"Source": "\u5716\u7247\u7db2\u5740",
|
||||
"Dimensions": "\u5c3a\u5bf8",
|
||||
"Constrain proportions": "\u7b49\u6bd4\u4f8b\u7e2e\u653e",
|
||||
"General": "\u4e00\u822c",
|
||||
"Advanced": "\u9032\u968e",
|
||||
"Style": "\u6a23\u5f0f",
|
||||
"Vertical space": "\u9ad8\u5ea6",
|
||||
"Horizontal space": "\u5bec\u5ea6",
|
||||
"Border": "\u908a\u6846",
|
||||
"Insert image": "\u63d2\u5165\u5716\u7247",
|
||||
"Image...": "\u5716\u7247......",
|
||||
"Image list": "\u5716\u7247\u6e05\u55ae",
|
||||
"Rotate counterclockwise": "\u9006\u6642\u91dd\u65cb\u8f49",
|
||||
"Rotate clockwise": "\u9806\u6642\u91dd\u65cb\u8f49",
|
||||
"Flip vertically": "\u5782\u76f4\u7ffb\u8f49",
|
||||
"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f49",
|
||||
"Edit image": "\u7de8\u8f2f\u5716\u7247",
|
||||
"Image options": "\u5716\u7247\u9078\u9805",
|
||||
"Zoom in": "\u653e\u5927",
|
||||
"Zoom out": "\u7e2e\u5c0f",
|
||||
"Crop": "\u88c1\u526a",
|
||||
"Resize": "\u8abf\u6574\u5927\u5c0f",
|
||||
"Orientation": "\u65b9\u5411",
|
||||
"Brightness": "\u4eae\u5ea6",
|
||||
"Sharpen": "\u92b3\u5316",
|
||||
"Contrast": "\u5c0d\u6bd4",
|
||||
"Color levels": "\u984f\u8272\u5c64\u6b21",
|
||||
"Gamma": "\u4f3d\u99ac\u503c",
|
||||
"Invert": "\u53cd\u8f49",
|
||||
"Apply": "\u61c9\u7528",
|
||||
"Back": "\u5f8c\u9000",
|
||||
"Insert date\/time": "\u63d2\u5165 \u65e5\u671f\/\u6642\u9593",
|
||||
"Date\/time": "\u65e5\u671f\/\u6642\u9593",
|
||||
"Insert\/Edit Link": "\u63d2\u5165\/\u7de8\u8f2f\u9023\u7d50",
|
||||
"Insert\/edit link": "\u63d2\u5165\/\u7de8\u8f2f\u9023\u7d50",
|
||||
"Text to display": "\u986f\u793a\u6587\u5b57",
|
||||
"Url": "\u7db2\u5740",
|
||||
"Open link in...": "\u958b\u555f\u9023\u7d50\u65bc...",
|
||||
"Current window": "\u76ee\u524d\u8996\u7a97",
|
||||
"None": "\u7121",
|
||||
"New window": "\u53e6\u958b\u8996\u7a97",
|
||||
"Remove link": "\u79fb\u9664\u9023\u7d50",
|
||||
"Anchors": "\u52a0\u5165\u9328\u9ede",
|
||||
"Link...": "\u9023\u7d50...",
|
||||
"Paste or type a link": "\u8cbc\u4e0a\u6216\u8f38\u5165\u9023\u7d50",
|
||||
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5beb\u7684URL\u70ba\u96fb\u5b50\u90f5\u4ef6\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7db4\u55ce\uff1f",
|
||||
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5beb\u7684URL\u5c6c\u65bc\u5916\u90e8\u93c8\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7db4\u55ce\uff1f",
|
||||
"Link list": "\u9023\u7d50\u6e05\u55ae",
|
||||
"Insert video": "\u63d2\u5165\u5f71\u97f3",
|
||||
"Insert\/edit video": "\u63d2\u4ef6\/\u7de8\u8f2f \u5f71\u97f3",
|
||||
"Insert\/edit media": "\u63d2\u5165\/\u7de8\u8f2f \u5a92\u9ad4",
|
||||
"Alternative source": "\u66ff\u4ee3\u5f71\u97f3",
|
||||
"Alternative source URL": "\u66ff\u4ee3\u4f86\u6e90URL",
|
||||
"Media poster (Image URL)": "\u5a92\u9ad4\u6d77\u5831\uff08\u5f71\u50cfImage URL\uff09",
|
||||
"Paste your embed code below:": "\u8acb\u5c07\u60a8\u7684\u5d4c\u5165\u5f0f\u7a0b\u5f0f\u78bc\u8cbc\u5728\u4e0b\u9762:",
|
||||
"Embed": "\u5d4c\u5165\u78bc",
|
||||
"Media...": "\u5a92\u9ad4...",
|
||||
"Nonbreaking space": "\u4e0d\u5206\u884c\u7684\u7a7a\u683c",
|
||||
"Page break": "\u5206\u9801",
|
||||
"Paste as text": "\u4ee5\u7d14\u6587\u5b57\u8cbc\u4e0a",
|
||||
"Preview": "\u9810\u89bd",
|
||||
"Print...": "\u5217\u5370...",
|
||||
"Save": "\u5132\u5b58",
|
||||
"Find": "\u641c\u5c0b",
|
||||
"Replace with": "\u66f4\u63db",
|
||||
"Replace": "\u66ff\u63db",
|
||||
"Replace all": "\u66ff\u63db\u5168\u90e8",
|
||||
"Previous": "\u4e0a\u4e00\u500b",
|
||||
"Next": "\u4e0b\u4e00\u500b",
|
||||
"Find and replace...": "\u5c0b\u627e\u53ca\u53d6\u4ee3...",
|
||||
"Could not find the specified string.": "\u7121\u6cd5\u67e5\u8a62\u5230\u6b64\u7279\u5b9a\u5b57\u4e32",
|
||||
"Match case": "\u76f8\u5339\u914d\u6848\u4ef6",
|
||||
"Find whole words only": "\u50c5\u627e\u51fa\u5b8c\u6574\u5b57\u532f",
|
||||
"Spell check": "\u62fc\u5beb\u6aa2\u67e5",
|
||||
"Ignore": "\u5ffd\u7565",
|
||||
"Ignore all": "\u5ffd\u7565\u6240\u6709",
|
||||
"Finish": "\u5b8c\u6210",
|
||||
"Add to Dictionary": "\u52a0\u5165\u5b57\u5178\u4e2d",
|
||||
"Insert table": "\u63d2\u5165\u8868\u683c",
|
||||
"Table properties": "\u8868\u683c\u5c6c\u6027",
|
||||
"Delete table": "\u522a\u9664\u8868\u683c",
|
||||
"Cell": "\u5132\u5b58\u683c",
|
||||
"Row": "\u5217",
|
||||
"Column": "\u884c",
|
||||
"Cell properties": "\u5132\u5b58\u683c\u5c6c\u6027",
|
||||
"Merge cells": "\u5408\u4f75\u5132\u5b58\u683c",
|
||||
"Split cell": "\u5206\u5272\u5132\u5b58\u683c",
|
||||
"Insert row before": "\u63d2\u5165\u5217\u5728...\u4e4b\u524d",
|
||||
"Insert row after": "\u63d2\u5165\u5217\u5728...\u4e4b\u5f8c",
|
||||
"Delete row": "\u522a\u9664\u5217",
|
||||
"Row properties": "\u5217\u5c6c\u6027",
|
||||
"Cut row": "\u526a\u4e0b\u5217",
|
||||
"Copy row": "\u8907\u88fd\u5217",
|
||||
"Paste row before": "\u8cbc\u4e0a\u5217\u5728...\u4e4b\u524d",
|
||||
"Paste row after": "\u8cbc\u4e0a\u5217\u5728...\u4e4b\u5f8c",
|
||||
"Insert column before": "\u63d2\u5165\u6b04\u4f4d\u5728...\u4e4b\u524d",
|
||||
"Insert column after": "\u63d2\u5165\u6b04\u4f4d\u5728...\u4e4b\u5f8c",
|
||||
"Delete column": "\u522a\u9664\u884c",
|
||||
"Cols": "\u6b04\u4f4d\u6bb5",
|
||||
"Rows": "\u5217",
|
||||
"Width": "\u5bec\u5ea6",
|
||||
"Height": "\u9ad8\u5ea6",
|
||||
"Cell spacing": "\u5132\u5b58\u683c\u5f97\u9593\u8ddd",
|
||||
"Cell padding": "\u5132\u5b58\u683c\u7684\u908a\u8ddd",
|
||||
"Show caption": "\u986f\u793a\u6a19\u984c",
|
||||
"Left": "\u5de6\u908a",
|
||||
"Center": "\u4e2d\u9593",
|
||||
"Right": "\u53f3\u908a",
|
||||
"Cell type": "\u5132\u5b58\u683c\u7684\u985e\u578b",
|
||||
"Scope": "\u7bc4\u570d",
|
||||
"Alignment": "\u5c0d\u9f4a",
|
||||
"H Align": "\u6c34\u5e73\u4f4d\u7f6e",
|
||||
"V Align": "\u5782\u76f4\u4f4d\u7f6e",
|
||||
"Top": "\u7f6e\u9802",
|
||||
"Middle": "\u7f6e\u4e2d",
|
||||
"Bottom": "\u7f6e\u5e95",
|
||||
"Header cell": "\u6a19\u982d\u5132\u5b58\u683c",
|
||||
"Row group": "\u5217\u7fa4\u7d44",
|
||||
"Column group": "\u6b04\u4f4d\u7fa4\u7d44",
|
||||
"Row type": "\u884c\u7684\u985e\u578b",
|
||||
"Header": "\u6a19\u982d",
|
||||
"Body": "\u4e3b\u9ad4",
|
||||
"Footer": "\u9801\u5c3e",
|
||||
"Border color": "\u908a\u6846\u984f\u8272",
|
||||
"Insert template...": "\u63d2\u5165\u6a23\u7248...",
|
||||
"Templates": "\u6a23\u7248",
|
||||
"Template": "\u6a23\u677f",
|
||||
"Text color": "\u6587\u5b57\u984f\u8272",
|
||||
"Background color": "\u80cc\u666f\u984f\u8272",
|
||||
"Custom...": "\u81ea\u8a02",
|
||||
"Custom color": "\u81ea\u8a02\u984f\u8272",
|
||||
"No color": "No color",
|
||||
"Remove color": "\u79fb\u9664\u984f\u8272",
|
||||
"Table of Contents": "\u76ee\u9304",
|
||||
"Show blocks": "\u986f\u793a\u5340\u584a\u8cc7\u8a0a",
|
||||
"Show invisible characters": "\u986f\u793a\u96b1\u85cf\u5b57\u5143",
|
||||
"Word count": "\u8a08\u7b97\u5b57\u6578",
|
||||
"Count": "\u8a08\u7b97",
|
||||
"Document": "\u6587\u4ef6",
|
||||
"Selection": "\u9078\u9805",
|
||||
"Words": "\u5b57\u6578",
|
||||
"Words: {0}": "\u5b57\u6578\uff1a{0}",
|
||||
"{0} words": "{0} \u5b57\u5143",
|
||||
"File": "\u6a94\u6848",
|
||||
"Edit": "\u7de8\u8f2f",
|
||||
"Insert": "\u63d2\u5165",
|
||||
"View": "\u6aa2\u8996",
|
||||
"Format": "\u683c\u5f0f",
|
||||
"Table": "\u8868\u683c",
|
||||
"Tools": "\u5de5\u5177",
|
||||
"Powered by {0}": "\u7531 {0} \u63d0\u4f9b",
|
||||
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u8c50\u5bcc\u7684\u6587\u672c\u5340\u57df\u3002\u6309ALT-F9\u524d\u5f80\u4e3b\u9078\u55ae\u3002\u6309ALT-F10\u547c\u53eb\u5de5\u5177\u6b04\u3002\u6309ALT-0\u5c0b\u6c42\u5e6b\u52a9",
|
||||
"Image title": "\u5716\u7247\u6a19\u984c",
|
||||
"Border width": "\u6846\u7dda\u5bec\u5ea6",
|
||||
"Border style": "\u6846\u7dda\u6a23\u5f0f",
|
||||
"Error": "\u932f\u8aa4",
|
||||
"Warn": "\u8b66\u544a",
|
||||
"Valid": "\u6709\u6548",
|
||||
"To open the popup, press Shift+Enter": "\u8981\u958b\u555f\u5f48\u51fa\u8996\u7a97\uff0c\u8acb\u6309Shift+Enter",
|
||||
"Rich Text Area. Press ALT-0 for help.": "\u5bcc\u6587\u672c\u5340\u57df\u3002\u8acb\u6309ALT-0\u5c0b\u6c42\u5354\u52a9\u3002",
|
||||
"System Font": "\u7cfb\u7d71\u5b57\u578b",
|
||||
"Failed to upload image: {0}": "\u7121\u6cd5\u4e0a\u50b3\u5f71\u50cf\uff1a{0}",
|
||||
"Failed to load plugin: {0} from url {1}": "\u7121\u6cd5\u4e0a\u50b3\u63d2\u4ef6\uff1a{0}\u81eaurl{1}",
|
||||
"Failed to load plugin url: {0}": "\u7121\u6cd5\u4e0a\u50b3\u63d2\u4ef6\uff1a{0}",
|
||||
"Failed to initialize plugin: {0}": "\u7121\u6cd5\u555f\u52d5\u63d2\u4ef6\uff1a{0}",
|
||||
"example": "\u7bc4\u4f8b",
|
||||
"Search": "\u641c\u7d22",
|
||||
"All": "\u5168\u90e8",
|
||||
"Currency": "\u8ca8\u5e63",
|
||||
"Text": "\u6587\u672c",
|
||||
"Quotations": "\u5f15\u7528",
|
||||
"Mathematical": "\u6578\u5b78",
|
||||
"Extended Latin": "\u62c9\u4e01\u5b57\u6bcd\u64f4\u5145",
|
||||
"Symbols": "\u7b26\u865f",
|
||||
"Arrows": "\u7bad\u982d",
|
||||
"User Defined": "\u4f7f\u7528\u8005\u5df2\u5b9a\u7fa9",
|
||||
"dollar sign": "\u7f8e\u5143\u7b26\u865f",
|
||||
"currency sign": "\u8ca8\u5e63\u7b26\u865f",
|
||||
"euro-currency sign": "\u6b50\u5143\u7b26\u865f",
|
||||
"colon sign": "\u79d1\u6717\u7b26\u865f",
|
||||
"cruzeiro sign": "\u514b\u9b6f\u8cfd\u7f85\u7b26\u865f",
|
||||
"french franc sign": "\u6cd5\u6717\u7b26\u865f",
|
||||
"lira sign": "\u91cc\u62c9\u7b26\u865f",
|
||||
"mill sign": "\u6587\u7b26\u865f",
|
||||
"naira sign": "\u5948\u62c9\u7b26\u865f",
|
||||
"peseta sign": "\u6bd4\u585e\u5854\u7b26\u865f",
|
||||
"rupee sign": "\u76e7\u6bd4\u7b26\u865f",
|
||||
"won sign": "\u97d3\u571c\u7b26\u865f",
|
||||
"new sheqel sign": "\u65b0\u8b1d\u514b\u723e\u7b26\u865f",
|
||||
"dong sign": "\u8d8a\u5357\u76fe\u7b26\u865f",
|
||||
"kip sign": "\u8001\u64be\u5e63\u7b26\u865f",
|
||||
"tugrik sign": "\u8499\u53e4\u5e63\u7b26\u865f",
|
||||
"drachma sign": "\u5fb7\u514b\u62c9\u99ac\u7b26\u865f",
|
||||
"german penny symbol": "\u5fb7\u570b\u5206\u7b26\u865f",
|
||||
"peso sign": "\u62ab\u7d22\u7b26\u865f",
|
||||
"guarani sign": "\u5df4\u62c9\u572d\u5e63\u7b26\u865f",
|
||||
"austral sign": "\u963f\u6839\u5ef7\u5e63\u7b26\u865f",
|
||||
"hryvnia sign": "\u70cf\u514b\u862d\u5e63\u7b26\u865f",
|
||||
"cedi sign": "\u8fe6\u7d0d\u5e63\u7b26\u865f",
|
||||
"livre tournois sign": "\u91cc\u5f17\u723e\u7b26\u865f",
|
||||
"spesmilo sign": "\u570b\u969b\u5e63\u7b26\u865f",
|
||||
"tenge sign": "\u54c8\u85a9\u514b\u5e63\u7b26\u865f",
|
||||
"indian rupee sign": "\u5370\u5ea6\u76e7\u6bd4\u7b26\u865f",
|
||||
"turkish lira sign": "\u571f\u8033\u5176\u91cc\u62c9\u7b26\u865f",
|
||||
"nordic mark sign": "\u5317\u6b50\u99ac\u514b\u7b26\u865f",
|
||||
"manat sign": "\u4e9e\u585e\u62dc\u7136\u5e63\u7b26\u865f",
|
||||
"ruble sign": "\u76e7\u5e03\u7b26\u865f",
|
||||
"yen character": "\u65e5\u5713\u7b26\u865f",
|
||||
"yuan character": "\u4eba\u6c11\u5e63\u7b26\u865f",
|
||||
"yuan character, in hong kong and taiwan": "\u6e2f\u5143\u8207\u53f0\u5e63\u7b26\u865f",
|
||||
"yen\/yuan character variant one": "\u65e5\u5713\/\u4eba\u6c11\u5e63\u7b26\u865f\u8b8a\u5316\u578b",
|
||||
"Loading emoticons...": "\u8f09\u5165\u8868\u60c5\u7b26\u865f\u2026",
|
||||
"Could not load emoticons": "\u7121\u6cd5\u8f09\u5165\u8868\u60c5\u7b26\u865f",
|
||||
"People": "\u4eba",
|
||||
"Animals and Nature": "\u52d5\u7269\u8207\u81ea\u7136",
|
||||
"Food and Drink": "\u98f2\u98df",
|
||||
"Activity": "\u6d3b\u52d5",
|
||||
"Travel and Places": "\u65c5\u884c\u8207\u5730\u9ede",
|
||||
"Objects": "\u7269\u4ef6",
|
||||
"Flags": "\u65d7\u6a19",
|
||||
"Characters": "\u5b57\u5143",
|
||||
"Characters (no spaces)": "\u5b57\u5143\uff08\u7121\u7a7a\u683c\uff09",
|
||||
"{0} characters": "{0}\u5b57\u5143",
|
||||
"Error: Form submit field collision.": "\u932f\u8aa4\uff1a\u8868\u683c\u905e\u4ea4\u6b04\u4f4d\u885d\u7a81\u3002",
|
||||
"Error: No form element found.": "\u932f\u8aa4\uff1a\u627e\u4e0d\u5230\u8868\u683c\u5143\u7d20\u3002",
|
||||
"Update": "\u66f4\u65b0",
|
||||
"Color swatch": "\u8272\u5f69\u6a23\u672c",
|
||||
"Turquoise": "\u571f\u8033\u5176\u85cd",
|
||||
"Green": "\u7da0\u8272",
|
||||
"Blue": "\u85cd\u8272",
|
||||
"Purple": "\u7d2b\u8272",
|
||||
"Navy Blue": "\u6df1\u85cd\u8272",
|
||||
"Dark Turquoise": "\u6df1\u571f\u8033\u5176\u85cd",
|
||||
"Dark Green": "\u6df1\u7da0\u8272",
|
||||
"Medium Blue": "\u4e2d\u85cd\u8272",
|
||||
"Medium Purple": "\u4e2d\u7d2b\u8272",
|
||||
"Midnight Blue": "\u9ed1\u85cd\u8272",
|
||||
"Yellow": "\u9ec3\u8272",
|
||||
"Orange": "\u6a59\u8272",
|
||||
"Red": "\u7d05\u8272",
|
||||
"Light Gray": "\u6dfa\u7070\u8272",
|
||||
"Gray": "\u7070\u8272",
|
||||
"Dark Yellow": "\u6df1\u9ec3\u8272",
|
||||
"Dark Orange": "\u6df1\u6a59\u8272",
|
||||
"Dark Red": "\u6697\u7d05\u8272",
|
||||
"Medium Gray": "\u4e2d\u7070\u8272",
|
||||
"Dark Gray": "\u6df1\u7070\u8272",
|
||||
"Light Green": "\u6de1\u7da0\u8272",
|
||||
"Light Yellow": "\u6dfa\u9ec3\u8272",
|
||||
"Light Red": "\u6dfa\u7d05\u8272",
|
||||
"Light Purple": "\u6dfa\u7d2b\u8272",
|
||||
"Light Blue": "\u6dfa\u85cd\u8272",
|
||||
"Dark Purple": "\u6df1\u7d2b\u8272",
|
||||
"Dark Blue": "\u6df1\u85cd\u8272",
|
||||
"Black": "\u9ed1\u8272",
|
||||
"White": "\u767d\u8272",
|
||||
"Switch to or from fullscreen mode": "\u8f49\u63db\u81ea\/\u81f3\u5168\u87a2\u5e55\u6a21\u5f0f",
|
||||
"Open help dialog": "\u958b\u555f\u5354\u52a9\u5c0d\u8a71",
|
||||
"history": "\u6b77\u53f2",
|
||||
"styles": "\u6a23\u5f0f",
|
||||
"formatting": "\u683c\u5f0f",
|
||||
"alignment": "\u5c0d\u9f4a",
|
||||
"indentation": "\u7e2e\u6392",
|
||||
"permanent pen": "\u6c38\u4e45\u6027\u7b46",
|
||||
"comments": "\u8a3b\u89e3",
|
||||
"Format Painter": "\u8907\u88fd\u683c\u5f0f",
|
||||
"Insert\/edit iframe": "\u63d2\u5165\/\u7de8\u8f2fiframe",
|
||||
"Capitalization": "\u5927\u5beb",
|
||||
"lowercase": "\u5c0f\u5beb",
|
||||
"UPPERCASE": "\u5927\u5beb",
|
||||
"Title Case": "\u5b57\u9996\u5927\u5beb",
|
||||
"Permanent Pen Properties": "\u6c38\u4e45\u6a19\u8a18\u5c6c\u6027",
|
||||
"Permanent pen properties...": "\u6c38\u4e45\u6a19\u8a18\u5c6c\u6027......",
|
||||
"Font": "\u5b57\u578b",
|
||||
"Size": "\u5b57\u5f62\u5927\u5c0f",
|
||||
"More...": "\u66f4\u591a\u8cc7\u8a0a......",
|
||||
"Spellcheck Language": "\u62fc\u5beb\u8a9e\u8a00",
|
||||
"Select...": "\u9078\u64c7......",
|
||||
"Preferences": "\u9996\u9078\u9805",
|
||||
"Yes": "\u662f",
|
||||
"No": "\u5426",
|
||||
"Keyboard Navigation": "\u9375\u76e4\u5c0e\u822a",
|
||||
"Version": "\u7248\u672c",
|
||||
"Anchor": "\u52a0\u5165\u9328\u9ede",
|
||||
"Special character": "\u7279\u6b8a\u5b57\u5143",
|
||||
"Code sample": "\u7a0b\u5f0f\u78bc\u7bc4\u4f8b",
|
||||
"Color": "\u984f\u8272",
|
||||
"Emoticons": "\u8868\u60c5",
|
||||
"Document properties": "\u6587\u4ef6\u7684\u5c6c\u6027",
|
||||
"Image": "\u5716\u7247",
|
||||
"Insert link": "\u63d2\u5165\u9023\u7d50",
|
||||
"Target": "\u958b\u555f\u65b9\u5f0f",
|
||||
"Link": "\u9023\u7d50",
|
||||
"Poster": "\u9810\u89bd\u5716\u7247",
|
||||
"Media": "\u5a92\u9ad4",
|
||||
"Print": "\u5217\u5370",
|
||||
"Prev": "\u4e0a\u4e00\u500b",
|
||||
"Find and replace": "\u5c0b\u627e\u53ca\u53d6\u4ee3",
|
||||
"Whole words": "\u6574\u500b\u55ae\u5b57",
|
||||
"Spellcheck": "\u62fc\u5b57\u6aa2\u67e5",
|
||||
"Caption": "\u8868\u683c\u6a19\u984c",
|
||||
"Insert template": "\u63d2\u5165\u6a23\u7248"
|
||||
});
|
||||
7
public/tinymce/plugins/accordion/index.js
Normal file
7
public/tinymce/plugins/accordion/index.js
Normal file
@@ -0,0 +1,7 @@
|
||||
// Exports the "accordion" plugin for usage with module loaders
|
||||
// Usage:
|
||||
// CommonJS:
|
||||
// require('tinymce/plugins/accordion')
|
||||
// ES2015:
|
||||
// import 'tinymce/plugins/accordion'
|
||||
require('./plugin.js');
|
||||
1054
public/tinymce/plugins/accordion/plugin.js
Normal file
1054
public/tinymce/plugins/accordion/plugin.js
Normal file
File diff suppressed because it is too large
Load Diff
5
public/tinymce/plugins/accordion/plugin.min.js
vendored
Normal file
5
public/tinymce/plugins/accordion/plugin.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
7
public/tinymce/plugins/advlist/index.js
Normal file
7
public/tinymce/plugins/advlist/index.js
Normal file
@@ -0,0 +1,7 @@
|
||||
// Exports the "advlist" plugin for usage with module loaders
|
||||
// Usage:
|
||||
// CommonJS:
|
||||
// require('tinymce/plugins/advlist')
|
||||
// ES2015:
|
||||
// import 'tinymce/plugins/advlist'
|
||||
require('./plugin.js');
|
||||
259
public/tinymce/plugins/advlist/plugin.js
Normal file
259
public/tinymce/plugins/advlist/plugin.js
Normal file
@@ -0,0 +1,259 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.6 (TBD)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager');
|
||||
|
||||
const applyListFormat = (editor, listName, styleValue) => {
|
||||
const cmd = listName === 'UL' ? 'InsertUnorderedList' : 'InsertOrderedList';
|
||||
editor.execCommand(cmd, false, styleValue === false ? null : { 'list-style-type': styleValue });
|
||||
};
|
||||
|
||||
const register$2 = editor => {
|
||||
editor.addCommand('ApplyUnorderedListStyle', (ui, value) => {
|
||||
applyListFormat(editor, 'UL', value['list-style-type']);
|
||||
});
|
||||
editor.addCommand('ApplyOrderedListStyle', (ui, value) => {
|
||||
applyListFormat(editor, 'OL', value['list-style-type']);
|
||||
});
|
||||
};
|
||||
|
||||
const option = name => editor => editor.options.get(name);
|
||||
const register$1 = editor => {
|
||||
const registerOption = editor.options.register;
|
||||
registerOption('advlist_number_styles', {
|
||||
processor: 'string[]',
|
||||
default: 'default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman'.split(',')
|
||||
});
|
||||
registerOption('advlist_bullet_styles', {
|
||||
processor: 'string[]',
|
||||
default: 'default,circle,square'.split(',')
|
||||
});
|
||||
};
|
||||
const getNumberStyles = option('advlist_number_styles');
|
||||
const getBulletStyles = option('advlist_bullet_styles');
|
||||
|
||||
const isNullable = a => a === null || a === undefined;
|
||||
const isNonNullable = a => !isNullable(a);
|
||||
|
||||
var global = tinymce.util.Tools.resolve('tinymce.util.Tools');
|
||||
|
||||
class Optional {
|
||||
constructor(tag, value) {
|
||||
this.tag = tag;
|
||||
this.value = value;
|
||||
}
|
||||
static some(value) {
|
||||
return new Optional(true, value);
|
||||
}
|
||||
static none() {
|
||||
return Optional.singletonNone;
|
||||
}
|
||||
fold(onNone, onSome) {
|
||||
if (this.tag) {
|
||||
return onSome(this.value);
|
||||
} else {
|
||||
return onNone();
|
||||
}
|
||||
}
|
||||
isSome() {
|
||||
return this.tag;
|
||||
}
|
||||
isNone() {
|
||||
return !this.tag;
|
||||
}
|
||||
map(mapper) {
|
||||
if (this.tag) {
|
||||
return Optional.some(mapper(this.value));
|
||||
} else {
|
||||
return Optional.none();
|
||||
}
|
||||
}
|
||||
bind(binder) {
|
||||
if (this.tag) {
|
||||
return binder(this.value);
|
||||
} else {
|
||||
return Optional.none();
|
||||
}
|
||||
}
|
||||
exists(predicate) {
|
||||
return this.tag && predicate(this.value);
|
||||
}
|
||||
forall(predicate) {
|
||||
return !this.tag || predicate(this.value);
|
||||
}
|
||||
filter(predicate) {
|
||||
if (!this.tag || predicate(this.value)) {
|
||||
return this;
|
||||
} else {
|
||||
return Optional.none();
|
||||
}
|
||||
}
|
||||
getOr(replacement) {
|
||||
return this.tag ? this.value : replacement;
|
||||
}
|
||||
or(replacement) {
|
||||
return this.tag ? this : replacement;
|
||||
}
|
||||
getOrThunk(thunk) {
|
||||
return this.tag ? this.value : thunk();
|
||||
}
|
||||
orThunk(thunk) {
|
||||
return this.tag ? this : thunk();
|
||||
}
|
||||
getOrDie(message) {
|
||||
if (!this.tag) {
|
||||
throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');
|
||||
} else {
|
||||
return this.value;
|
||||
}
|
||||
}
|
||||
static from(value) {
|
||||
return isNonNullable(value) ? Optional.some(value) : Optional.none();
|
||||
}
|
||||
getOrNull() {
|
||||
return this.tag ? this.value : null;
|
||||
}
|
||||
getOrUndefined() {
|
||||
return this.value;
|
||||
}
|
||||
each(worker) {
|
||||
if (this.tag) {
|
||||
worker(this.value);
|
||||
}
|
||||
}
|
||||
toArray() {
|
||||
return this.tag ? [this.value] : [];
|
||||
}
|
||||
toString() {
|
||||
return this.tag ? `some(${ this.value })` : 'none()';
|
||||
}
|
||||
}
|
||||
Optional.singletonNone = new Optional(false);
|
||||
|
||||
const findUntil = (xs, pred, until) => {
|
||||
for (let i = 0, len = xs.length; i < len; i++) {
|
||||
const x = xs[i];
|
||||
if (pred(x, i)) {
|
||||
return Optional.some(x);
|
||||
} else if (until(x, i)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return Optional.none();
|
||||
};
|
||||
|
||||
const isCustomList = list => /\btox\-/.test(list.className);
|
||||
const isChildOfBody = (editor, elm) => {
|
||||
return editor.dom.isChildOf(elm, editor.getBody());
|
||||
};
|
||||
const matchNodeNames = regex => node => isNonNullable(node) && regex.test(node.nodeName);
|
||||
const isListNode = matchNodeNames(/^(OL|UL|DL)$/);
|
||||
const isTableCellNode = matchNodeNames(/^(TH|TD)$/);
|
||||
const inList = (editor, parents, nodeName) => findUntil(parents, parent => isListNode(parent) && !isCustomList(parent), isTableCellNode).exists(list => list.nodeName === nodeName && isChildOfBody(editor, list));
|
||||
const getSelectedStyleType = editor => {
|
||||
const listElm = editor.dom.getParent(editor.selection.getNode(), 'ol,ul');
|
||||
const style = editor.dom.getStyle(listElm, 'listStyleType');
|
||||
return Optional.from(style);
|
||||
};
|
||||
const isWithinNonEditable = (editor, element) => element !== null && !editor.dom.isEditable(element);
|
||||
const isWithinNonEditableList = (editor, element) => {
|
||||
const parentList = editor.dom.getParent(element, 'ol,ul,dl');
|
||||
return isWithinNonEditable(editor, parentList) && editor.selection.isEditable();
|
||||
};
|
||||
const setNodeChangeHandler = (editor, nodeChangeHandler) => {
|
||||
const initialNode = editor.selection.getNode();
|
||||
nodeChangeHandler({
|
||||
parents: editor.dom.getParents(initialNode),
|
||||
element: initialNode
|
||||
});
|
||||
editor.on('NodeChange', nodeChangeHandler);
|
||||
return () => editor.off('NodeChange', nodeChangeHandler);
|
||||
};
|
||||
|
||||
const styleValueToText = styleValue => {
|
||||
return styleValue.replace(/\-/g, ' ').replace(/\b\w/g, chr => {
|
||||
return chr.toUpperCase();
|
||||
});
|
||||
};
|
||||
const normalizeStyleValue = styleValue => isNullable(styleValue) || styleValue === 'default' ? '' : styleValue;
|
||||
const makeSetupHandler = (editor, nodeName) => api => {
|
||||
const updateButtonState = (editor, parents) => {
|
||||
const element = editor.selection.getStart(true);
|
||||
api.setActive(inList(editor, parents, nodeName));
|
||||
api.setEnabled(!isWithinNonEditableList(editor, element) && editor.selection.isEditable());
|
||||
};
|
||||
const nodeChangeHandler = e => updateButtonState(editor, e.parents);
|
||||
return setNodeChangeHandler(editor, nodeChangeHandler);
|
||||
};
|
||||
const addSplitButton = (editor, id, tooltip, cmd, nodeName, styles) => {
|
||||
editor.ui.registry.addSplitButton(id, {
|
||||
tooltip,
|
||||
icon: nodeName === 'OL' ? 'ordered-list' : 'unordered-list',
|
||||
presets: 'listpreview',
|
||||
columns: 3,
|
||||
fetch: callback => {
|
||||
const items = global.map(styles, styleValue => {
|
||||
const iconStyle = nodeName === 'OL' ? 'num' : 'bull';
|
||||
const iconName = styleValue === 'disc' || styleValue === 'decimal' ? 'default' : styleValue;
|
||||
const itemValue = normalizeStyleValue(styleValue);
|
||||
const displayText = styleValueToText(styleValue);
|
||||
return {
|
||||
type: 'choiceitem',
|
||||
value: itemValue,
|
||||
icon: 'list-' + iconStyle + '-' + iconName,
|
||||
text: displayText
|
||||
};
|
||||
});
|
||||
callback(items);
|
||||
},
|
||||
onAction: () => editor.execCommand(cmd),
|
||||
onItemAction: (_splitButtonApi, value) => {
|
||||
applyListFormat(editor, nodeName, value);
|
||||
},
|
||||
select: value => {
|
||||
const listStyleType = getSelectedStyleType(editor);
|
||||
return listStyleType.map(listStyle => value === listStyle).getOr(false);
|
||||
},
|
||||
onSetup: makeSetupHandler(editor, nodeName)
|
||||
});
|
||||
};
|
||||
const addButton = (editor, id, tooltip, cmd, nodeName, styleValue) => {
|
||||
editor.ui.registry.addToggleButton(id, {
|
||||
active: false,
|
||||
tooltip,
|
||||
icon: nodeName === 'OL' ? 'ordered-list' : 'unordered-list',
|
||||
onSetup: makeSetupHandler(editor, nodeName),
|
||||
onAction: () => editor.queryCommandState(cmd) || styleValue === '' ? editor.execCommand(cmd) : applyListFormat(editor, nodeName, styleValue)
|
||||
});
|
||||
};
|
||||
const addControl = (editor, id, tooltip, cmd, nodeName, styles) => {
|
||||
if (styles.length > 1) {
|
||||
addSplitButton(editor, id, tooltip, cmd, nodeName, styles);
|
||||
} else {
|
||||
addButton(editor, id, tooltip, cmd, nodeName, normalizeStyleValue(styles[0]));
|
||||
}
|
||||
};
|
||||
const register = editor => {
|
||||
addControl(editor, 'numlist', 'Numbered list', 'InsertOrderedList', 'OL', getNumberStyles(editor));
|
||||
addControl(editor, 'bullist', 'Bullet list', 'InsertUnorderedList', 'UL', getBulletStyles(editor));
|
||||
};
|
||||
|
||||
var Plugin = () => {
|
||||
global$1.add('advlist', editor => {
|
||||
if (editor.hasPlugin('lists')) {
|
||||
register$1(editor);
|
||||
register(editor);
|
||||
register$2(editor);
|
||||
} else {
|
||||
console.error('Please use the Lists plugin together with the Advanced List plugin.');
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Plugin();
|
||||
|
||||
})();
|
||||
5
public/tinymce/plugins/advlist/plugin.min.js
vendored
Normal file
5
public/tinymce/plugins/advlist/plugin.min.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.6 (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"),i=t=>null==t,l=t=>!i(t);var o=tinymce.util.Tools.resolve("tinymce.util.Tools");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 l(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=>l(e)&&t.test(e.nodeName),d=u(/^(OL|UL|DL)$/),g=u(/^(TH|TD)$/),c=t=>i(t)||"default"===t?"":t,h=(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(d(r=n)&&!/\btox\-/.test(r.className))return a.some(n);if(s(n,e))break}var r;return a.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.selection.isEditable())})(t,r.parents))),m=(t,s,r,n,i,l)=>{l.length>1?((t,s,r,n,i,l)=>{t.ui.registry.addSplitButton(s,{tooltip:r,icon:"OL"===i?"ordered-list":"unordered-list",presets:"listpreview",columns:3,fetch:t=>{t(o.map(l,(t=>{const e="OL"===i?"num":"bull",s="disc"===t||"decimal"===t?"default":t,r=c(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,i,r)},select:e=>{const s=(t=>{const e=t.dom.getParent(t.selection.getNode(),"ol,ul"),s=t.dom.getStyle(e,"listStyleType");return a.from(s)})(t);return s.map((t=>e===t)).getOr(!1)},onSetup:h(t,i)})})(t,s,r,n,i,l):((t,s,r,n,i,l)=>{t.ui.registry.addToggleButton(s,{active:!1,tooltip:r,icon:"OL"===i?"ordered-list":"unordered-list",onSetup:h(t,i),onAction:()=>t.queryCommandState(n)||""===l?t.execCommand(n):e(t,i,l)})})(t,s,r,n,i,c(l[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=>{m(t,"numlist","Numbered list","InsertOrderedList","OL",r(t)),m(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 Advanced List plugin.")}))}();
|
||||
7
public/tinymce/plugins/anchor/index.js
Normal file
7
public/tinymce/plugins/anchor/index.js
Normal file
@@ -0,0 +1,7 @@
|
||||
// Exports the "anchor" plugin for usage with module loaders
|
||||
// Usage:
|
||||
// CommonJS:
|
||||
// require('tinymce/plugins/anchor')
|
||||
// ES2015:
|
||||
// import 'tinymce/plugins/anchor'
|
||||
require('./plugin.js');
|
||||
214
public/tinymce/plugins/anchor/plugin.js
Normal file
214
public/tinymce/plugins/anchor/plugin.js
Normal file
@@ -0,0 +1,214 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.6 (TBD)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
var global$2 = tinymce.util.Tools.resolve('tinymce.PluginManager');
|
||||
|
||||
var global$1 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');
|
||||
|
||||
var global = tinymce.util.Tools.resolve('tinymce.util.Tools');
|
||||
|
||||
const option = name => editor => editor.options.get(name);
|
||||
const register$2 = editor => {
|
||||
const registerOption = editor.options.register;
|
||||
registerOption('allow_html_in_named_anchor', {
|
||||
processor: 'boolean',
|
||||
default: false
|
||||
});
|
||||
};
|
||||
const allowHtmlInNamedAnchor = option('allow_html_in_named_anchor');
|
||||
|
||||
const namedAnchorSelector = 'a:not([href])';
|
||||
const isEmptyString = str => !str;
|
||||
const getIdFromAnchor = elm => {
|
||||
const id = elm.getAttribute('id') || elm.getAttribute('name');
|
||||
return id || '';
|
||||
};
|
||||
const isAnchor = elm => elm.nodeName.toLowerCase() === 'a';
|
||||
const isNamedAnchor = elm => isAnchor(elm) && !elm.getAttribute('href') && getIdFromAnchor(elm) !== '';
|
||||
const isEmptyNamedAnchor = elm => isNamedAnchor(elm) && !elm.firstChild;
|
||||
|
||||
const removeEmptyNamedAnchorsInSelection = editor => {
|
||||
const dom = editor.dom;
|
||||
global$1(dom).walk(editor.selection.getRng(), nodes => {
|
||||
global.each(nodes, node => {
|
||||
if (isEmptyNamedAnchor(node)) {
|
||||
dom.remove(node, false);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
const isValidId = id => /^[A-Za-z][A-Za-z0-9\-:._]*$/.test(id);
|
||||
const getNamedAnchor = editor => editor.dom.getParent(editor.selection.getStart(), namedAnchorSelector);
|
||||
const getId = editor => {
|
||||
const anchor = getNamedAnchor(editor);
|
||||
if (anchor) {
|
||||
return getIdFromAnchor(anchor);
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
};
|
||||
const createAnchor = (editor, id) => {
|
||||
editor.undoManager.transact(() => {
|
||||
if (!allowHtmlInNamedAnchor(editor)) {
|
||||
editor.selection.collapse(true);
|
||||
}
|
||||
if (editor.selection.isCollapsed()) {
|
||||
editor.insertContent(editor.dom.createHTML('a', { id }));
|
||||
} else {
|
||||
removeEmptyNamedAnchorsInSelection(editor);
|
||||
editor.formatter.remove('namedAnchor', undefined, undefined, true);
|
||||
editor.formatter.apply('namedAnchor', { value: id });
|
||||
editor.addVisual();
|
||||
}
|
||||
});
|
||||
};
|
||||
const updateAnchor = (editor, id, anchorElement) => {
|
||||
anchorElement.removeAttribute('name');
|
||||
anchorElement.id = id;
|
||||
editor.addVisual();
|
||||
editor.undoManager.add();
|
||||
};
|
||||
const insert = (editor, id) => {
|
||||
const anchor = getNamedAnchor(editor);
|
||||
if (anchor) {
|
||||
updateAnchor(editor, id, anchor);
|
||||
} else {
|
||||
createAnchor(editor, id);
|
||||
}
|
||||
editor.focus();
|
||||
};
|
||||
|
||||
const insertAnchor = (editor, newId) => {
|
||||
if (!isValidId(newId)) {
|
||||
editor.windowManager.alert('ID should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.');
|
||||
return false;
|
||||
} else {
|
||||
insert(editor, newId);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
const open = editor => {
|
||||
const currentId = getId(editor);
|
||||
editor.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: true
|
||||
}
|
||||
],
|
||||
initialData: { id: currentId },
|
||||
onSubmit: api => {
|
||||
if (insertAnchor(editor, api.getData().id)) {
|
||||
api.close();
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const register$1 = editor => {
|
||||
editor.addCommand('mceAnchor', () => {
|
||||
open(editor);
|
||||
});
|
||||
};
|
||||
|
||||
const isNamedAnchorNode = node => isEmptyString(node.attr('href')) && !isEmptyString(node.attr('id') || node.attr('name'));
|
||||
const isEmptyNamedAnchorNode = node => isNamedAnchorNode(node) && !node.firstChild;
|
||||
const setContentEditable = state => nodes => {
|
||||
for (let i = 0; i < nodes.length; i++) {
|
||||
const node = nodes[i];
|
||||
if (isEmptyNamedAnchorNode(node)) {
|
||||
node.attr('contenteditable', state);
|
||||
}
|
||||
}
|
||||
};
|
||||
const setup = editor => {
|
||||
editor.on('PreInit', () => {
|
||||
editor.parser.addNodeFilter('a', setContentEditable('false'));
|
||||
editor.serializer.addNodeFilter('a', setContentEditable(null));
|
||||
});
|
||||
};
|
||||
|
||||
const registerFormats = editor => {
|
||||
editor.formatter.register('namedAnchor', {
|
||||
inline: 'a',
|
||||
selector: namedAnchorSelector,
|
||||
remove: 'all',
|
||||
split: true,
|
||||
deep: true,
|
||||
attributes: { id: '%value' },
|
||||
onmatch: (node, _fmt, _itemName) => {
|
||||
return isNamedAnchor(node);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const onSetupEditable = editor => api => {
|
||||
const nodeChanged = () => {
|
||||
api.setEnabled(editor.selection.isEditable());
|
||||
};
|
||||
editor.on('NodeChange', nodeChanged);
|
||||
nodeChanged();
|
||||
return () => {
|
||||
editor.off('NodeChange', nodeChanged);
|
||||
};
|
||||
};
|
||||
const register = editor => {
|
||||
const onAction = () => editor.execCommand('mceAnchor');
|
||||
editor.ui.registry.addToggleButton('anchor', {
|
||||
icon: 'bookmark',
|
||||
tooltip: 'Anchor',
|
||||
onAction,
|
||||
onSetup: buttonApi => {
|
||||
const unbindSelectorChanged = editor.selection.selectorChangedWithUnbind('a:not([href])', buttonApi.setActive).unbind;
|
||||
const unbindEditableChanged = onSetupEditable(editor)(buttonApi);
|
||||
return () => {
|
||||
unbindSelectorChanged();
|
||||
unbindEditableChanged();
|
||||
};
|
||||
}
|
||||
});
|
||||
editor.ui.registry.addMenuItem('anchor', {
|
||||
icon: 'bookmark',
|
||||
text: 'Anchor...',
|
||||
onAction,
|
||||
onSetup: onSetupEditable(editor)
|
||||
});
|
||||
};
|
||||
|
||||
var Plugin = () => {
|
||||
global$2.add('anchor', editor => {
|
||||
register$2(editor);
|
||||
setup(editor);
|
||||
register$1(editor);
|
||||
register(editor);
|
||||
editor.on('PreInit', () => {
|
||||
registerFormats(editor);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
Plugin();
|
||||
|
||||
})();
|
||||
5
public/tinymce/plugins/anchor/plugin.min.js
vendored
Normal file
5
public/tinymce/plugins/anchor/plugin.min.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.6 (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=("allow_html_in_named_anchor",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)}))}))}();
|
||||
7
public/tinymce/plugins/autolink/index.js
Normal file
7
public/tinymce/plugins/autolink/index.js
Normal file
@@ -0,0 +1,7 @@
|
||||
// Exports the "autolink" plugin for usage with module loaders
|
||||
// Usage:
|
||||
// CommonJS:
|
||||
// require('tinymce/plugins/autolink')
|
||||
// ES2015:
|
||||
// import 'tinymce/plugins/autolink'
|
||||
require('./plugin.js');
|
||||
228
public/tinymce/plugins/autolink/plugin.js
Normal file
228
public/tinymce/plugins/autolink/plugin.js
Normal file
@@ -0,0 +1,228 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.6 (TBD)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager');
|
||||
|
||||
const link = () => /(?:[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;
|
||||
|
||||
const option = name => editor => editor.options.get(name);
|
||||
const register = editor => {
|
||||
const registerOption = editor.options.register;
|
||||
registerOption('autolink_pattern', {
|
||||
processor: 'regexp',
|
||||
default: new RegExp('^' + link().source + '$', 'i')
|
||||
});
|
||||
registerOption('link_default_target', { processor: 'string' });
|
||||
registerOption('link_default_protocol', {
|
||||
processor: 'string',
|
||||
default: 'https'
|
||||
});
|
||||
};
|
||||
const getAutoLinkPattern = option('autolink_pattern');
|
||||
const getDefaultLinkTarget = option('link_default_target');
|
||||
const getDefaultLinkProtocol = option('link_default_protocol');
|
||||
const allowUnsafeLinkTarget = option('allow_unsafe_link_target');
|
||||
|
||||
const hasProto = (v, constructor, predicate) => {
|
||||
var _a;
|
||||
if (predicate(v, constructor.prototype)) {
|
||||
return true;
|
||||
} else {
|
||||
return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;
|
||||
}
|
||||
};
|
||||
const typeOf = x => {
|
||||
const t = typeof x;
|
||||
if (x === null) {
|
||||
return 'null';
|
||||
} else if (t === 'object' && Array.isArray(x)) {
|
||||
return 'array';
|
||||
} else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {
|
||||
return 'string';
|
||||
} else {
|
||||
return t;
|
||||
}
|
||||
};
|
||||
const isType = type => value => typeOf(value) === type;
|
||||
const eq = t => a => t === a;
|
||||
const isString = isType('string');
|
||||
const isUndefined = eq(undefined);
|
||||
const isNullable = a => a === null || a === undefined;
|
||||
const isNonNullable = a => !isNullable(a);
|
||||
|
||||
const not = f => t => !f(t);
|
||||
|
||||
const hasOwnProperty = Object.hasOwnProperty;
|
||||
const has = (obj, key) => hasOwnProperty.call(obj, key);
|
||||
|
||||
const checkRange = (str, substr, start) => substr === '' || str.length >= substr.length && str.substr(start, start + substr.length) === substr;
|
||||
const contains = (str, substr, start = 0, end) => {
|
||||
const idx = str.indexOf(substr, start);
|
||||
if (idx !== -1) {
|
||||
return isUndefined(end) ? true : idx + substr.length <= end;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
const startsWith = (str, prefix) => {
|
||||
return checkRange(str, prefix, 0);
|
||||
};
|
||||
|
||||
const zeroWidth = '\uFEFF';
|
||||
const isZwsp = char => char === zeroWidth;
|
||||
const removeZwsp = s => s.replace(/\uFEFF/g, '');
|
||||
|
||||
var global = tinymce.util.Tools.resolve('tinymce.dom.TextSeeker');
|
||||
|
||||
const isTextNode = node => node.nodeType === 3;
|
||||
const isElement = node => node.nodeType === 1;
|
||||
const isBracketOrSpace = char => /^[(\[{ \u00a0]$/.test(char);
|
||||
const hasProtocol = url => /^([A-Za-z][A-Za-z\d.+-]*:\/\/)|mailto:/.test(url);
|
||||
const isPunctuation = char => /[?!,.;:]/.test(char);
|
||||
const findChar = (text, index, predicate) => {
|
||||
for (let i = index - 1; i >= 0; i--) {
|
||||
const char = text.charAt(i);
|
||||
if (!isZwsp(char) && predicate(char)) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
};
|
||||
const freefallRtl = (container, offset) => {
|
||||
let tempNode = container;
|
||||
let tempOffset = offset;
|
||||
while (isElement(tempNode) && tempNode.childNodes[tempOffset]) {
|
||||
tempNode = tempNode.childNodes[tempOffset];
|
||||
tempOffset = isTextNode(tempNode) ? tempNode.data.length : tempNode.childNodes.length;
|
||||
}
|
||||
return {
|
||||
container: tempNode,
|
||||
offset: tempOffset
|
||||
};
|
||||
};
|
||||
|
||||
const parseCurrentLine = (editor, offset) => {
|
||||
var _a;
|
||||
const voidElements = editor.schema.getVoidElements();
|
||||
const autoLinkPattern = getAutoLinkPattern(editor);
|
||||
const {dom, selection} = editor;
|
||||
if (dom.getParent(selection.getNode(), 'a[href]') !== null) {
|
||||
return null;
|
||||
}
|
||||
const rng = selection.getRng();
|
||||
const textSeeker = global(dom, node => {
|
||||
return dom.isBlock(node) || has(voidElements, node.nodeName.toLowerCase()) || dom.getContentEditable(node) === 'false';
|
||||
});
|
||||
const {
|
||||
container: endContainer,
|
||||
offset: endOffset
|
||||
} = freefallRtl(rng.endContainer, rng.endOffset);
|
||||
const root = (_a = dom.getParent(endContainer, dom.isBlock)) !== null && _a !== void 0 ? _a : dom.getRoot();
|
||||
const endSpot = textSeeker.backwards(endContainer, endOffset + offset, (node, offset) => {
|
||||
const text = node.data;
|
||||
const idx = findChar(text, offset, not(isBracketOrSpace));
|
||||
return idx === -1 || isPunctuation(text[idx]) ? idx : idx + 1;
|
||||
}, root);
|
||||
if (!endSpot) {
|
||||
return null;
|
||||
}
|
||||
let lastTextNode = endSpot.container;
|
||||
const startSpot = textSeeker.backwards(endSpot.container, endSpot.offset, (node, offset) => {
|
||||
lastTextNode = node;
|
||||
const idx = findChar(node.data, offset, isBracketOrSpace);
|
||||
return idx === -1 ? idx : idx + 1;
|
||||
}, root);
|
||||
const newRng = dom.createRng();
|
||||
if (!startSpot) {
|
||||
newRng.setStart(lastTextNode, 0);
|
||||
} else {
|
||||
newRng.setStart(startSpot.container, startSpot.offset);
|
||||
}
|
||||
newRng.setEnd(endSpot.container, endSpot.offset);
|
||||
const rngText = removeZwsp(newRng.toString());
|
||||
const matches = rngText.match(autoLinkPattern);
|
||||
if (matches) {
|
||||
let url = matches[0];
|
||||
if (startsWith(url, 'www.')) {
|
||||
const protocol = getDefaultLinkProtocol(editor);
|
||||
url = protocol + '://' + url;
|
||||
} else if (contains(url, '@') && !hasProtocol(url)) {
|
||||
url = 'mailto:' + url;
|
||||
}
|
||||
return {
|
||||
rng: newRng,
|
||||
url
|
||||
};
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
const convertToLink = (editor, result) => {
|
||||
const {dom, selection} = editor;
|
||||
const {rng, url} = result;
|
||||
const bookmark = selection.getBookmark();
|
||||
selection.setRng(rng);
|
||||
const command = 'createlink';
|
||||
const args = {
|
||||
command,
|
||||
ui: false,
|
||||
value: url
|
||||
};
|
||||
const beforeExecEvent = editor.dispatch('BeforeExecCommand', args);
|
||||
if (!beforeExecEvent.isDefaultPrevented()) {
|
||||
editor.getDoc().execCommand(command, false, url);
|
||||
editor.dispatch('ExecCommand', args);
|
||||
const defaultLinkTarget = getDefaultLinkTarget(editor);
|
||||
if (isString(defaultLinkTarget)) {
|
||||
const anchor = selection.getNode();
|
||||
dom.setAttrib(anchor, 'target', defaultLinkTarget);
|
||||
if (defaultLinkTarget === '_blank' && !allowUnsafeLinkTarget(editor)) {
|
||||
dom.setAttrib(anchor, 'rel', 'noopener');
|
||||
}
|
||||
}
|
||||
}
|
||||
selection.moveToBookmark(bookmark);
|
||||
editor.nodeChanged();
|
||||
};
|
||||
const handleSpacebar = editor => {
|
||||
const result = parseCurrentLine(editor, -1);
|
||||
if (isNonNullable(result)) {
|
||||
convertToLink(editor, result);
|
||||
}
|
||||
};
|
||||
const handleBracket = handleSpacebar;
|
||||
const handleEnter = editor => {
|
||||
const result = parseCurrentLine(editor, 0);
|
||||
if (isNonNullable(result)) {
|
||||
convertToLink(editor, result);
|
||||
}
|
||||
};
|
||||
const setup = editor => {
|
||||
editor.on('keydown', e => {
|
||||
if (e.keyCode === 13 && !e.isDefaultPrevented()) {
|
||||
handleEnter(editor);
|
||||
}
|
||||
});
|
||||
editor.on('keyup', e => {
|
||||
if (e.keyCode === 32) {
|
||||
handleSpacebar(editor);
|
||||
} else if (e.keyCode === 48 && e.shiftKey || e.keyCode === 221) {
|
||||
handleBracket(editor);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
var Plugin = () => {
|
||||
global$1.add('autolink', editor => {
|
||||
register(editor);
|
||||
setup(editor);
|
||||
});
|
||||
};
|
||||
|
||||
Plugin();
|
||||
|
||||
})();
|
||||
5
public/tinymce/plugins/autolink/plugin.min.js
vendored
Normal file
5
public/tinymce/plugins/autolink/plugin.min.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.6 (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=("string",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=(void 0,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]"))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)}))}();
|
||||
7
public/tinymce/plugins/autoresize/index.js
Normal file
7
public/tinymce/plugins/autoresize/index.js
Normal file
@@ -0,0 +1,7 @@
|
||||
// Exports the "autoresize" plugin for usage with module loaders
|
||||
// Usage:
|
||||
// CommonJS:
|
||||
// require('tinymce/plugins/autoresize')
|
||||
// ES2015:
|
||||
// import 'tinymce/plugins/autoresize'
|
||||
require('./plugin.js');
|
||||
192
public/tinymce/plugins/autoresize/plugin.js
Normal file
192
public/tinymce/plugins/autoresize/plugin.js
Normal file
@@ -0,0 +1,192 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.6 (TBD)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
const Cell = initial => {
|
||||
let value = initial;
|
||||
const get = () => {
|
||||
return value;
|
||||
};
|
||||
const set = v => {
|
||||
value = v;
|
||||
};
|
||||
return {
|
||||
get,
|
||||
set
|
||||
};
|
||||
};
|
||||
|
||||
var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager');
|
||||
|
||||
const constant = value => {
|
||||
return () => {
|
||||
return value;
|
||||
};
|
||||
};
|
||||
|
||||
var global = tinymce.util.Tools.resolve('tinymce.Env');
|
||||
|
||||
const fireResizeEditor = editor => editor.dispatch('ResizeEditor');
|
||||
|
||||
const option = name => editor => editor.options.get(name);
|
||||
const register$1 = editor => {
|
||||
const registerOption = editor.options.register;
|
||||
registerOption('autoresize_overflow_padding', {
|
||||
processor: 'number',
|
||||
default: 1
|
||||
});
|
||||
registerOption('autoresize_bottom_margin', {
|
||||
processor: 'number',
|
||||
default: 50
|
||||
});
|
||||
};
|
||||
const getMinHeight = option('min_height');
|
||||
const getMaxHeight = option('max_height');
|
||||
const getAutoResizeOverflowPadding = option('autoresize_overflow_padding');
|
||||
const getAutoResizeBottomMargin = option('autoresize_bottom_margin');
|
||||
|
||||
const isFullscreen = editor => editor.plugins.fullscreen && editor.plugins.fullscreen.isFullscreen();
|
||||
const toggleScrolling = (editor, state) => {
|
||||
const body = editor.getBody();
|
||||
if (body) {
|
||||
body.style.overflowY = state ? '' : 'hidden';
|
||||
if (!state) {
|
||||
body.scrollTop = 0;
|
||||
}
|
||||
}
|
||||
};
|
||||
const parseCssValueToInt = (dom, elm, name, computed) => {
|
||||
var _a;
|
||||
const value = parseInt((_a = dom.getStyle(elm, name, computed)) !== null && _a !== void 0 ? _a : '', 10);
|
||||
return isNaN(value) ? 0 : value;
|
||||
};
|
||||
const shouldScrollIntoView = trigger => {
|
||||
if ((trigger === null || trigger === void 0 ? void 0 : trigger.type.toLowerCase()) === 'setcontent') {
|
||||
const setContentEvent = trigger;
|
||||
return setContentEvent.selection === true || setContentEvent.paste === true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
const resize = (editor, oldSize, trigger, getExtraMarginBottom) => {
|
||||
var _a;
|
||||
const dom = editor.dom;
|
||||
const doc = editor.getDoc();
|
||||
if (!doc) {
|
||||
return;
|
||||
}
|
||||
if (isFullscreen(editor)) {
|
||||
toggleScrolling(editor, true);
|
||||
return;
|
||||
}
|
||||
const docEle = doc.documentElement;
|
||||
const resizeBottomMargin = getExtraMarginBottom ? getExtraMarginBottom() : getAutoResizeOverflowPadding(editor);
|
||||
const minHeight = (_a = getMinHeight(editor)) !== null && _a !== void 0 ? _a : editor.getElement().offsetHeight;
|
||||
let resizeHeight = minHeight;
|
||||
const marginTop = parseCssValueToInt(dom, docEle, 'margin-top', true);
|
||||
const marginBottom = parseCssValueToInt(dom, docEle, 'margin-bottom', true);
|
||||
let contentHeight = docEle.offsetHeight + marginTop + marginBottom + resizeBottomMargin;
|
||||
if (contentHeight < 0) {
|
||||
contentHeight = 0;
|
||||
}
|
||||
const containerHeight = editor.getContainer().offsetHeight;
|
||||
const contentAreaHeight = editor.getContentAreaContainer().offsetHeight;
|
||||
const chromeHeight = containerHeight - contentAreaHeight;
|
||||
if (contentHeight + chromeHeight > minHeight) {
|
||||
resizeHeight = contentHeight + chromeHeight;
|
||||
}
|
||||
const maxHeight = getMaxHeight(editor);
|
||||
if (maxHeight && resizeHeight > maxHeight) {
|
||||
resizeHeight = maxHeight;
|
||||
toggleScrolling(editor, true);
|
||||
} else {
|
||||
toggleScrolling(editor, false);
|
||||
}
|
||||
if (resizeHeight !== oldSize.get()) {
|
||||
const deltaSize = resizeHeight - oldSize.get();
|
||||
dom.setStyle(editor.getContainer(), 'height', resizeHeight + 'px');
|
||||
oldSize.set(resizeHeight);
|
||||
fireResizeEditor(editor);
|
||||
if (global.browser.isSafari() && (global.os.isMacOS() || global.os.isiOS())) {
|
||||
const win = editor.getWin();
|
||||
win.scrollTo(win.pageXOffset, win.pageYOffset);
|
||||
}
|
||||
if (editor.hasFocus() && shouldScrollIntoView(trigger)) {
|
||||
editor.selection.scrollIntoView();
|
||||
}
|
||||
if ((global.browser.isSafari() || global.browser.isChromium()) && deltaSize < 0) {
|
||||
resize(editor, oldSize, trigger, getExtraMarginBottom);
|
||||
}
|
||||
}
|
||||
};
|
||||
const setup = (editor, oldSize) => {
|
||||
let getExtraMarginBottom = () => getAutoResizeBottomMargin(editor);
|
||||
let resizeCounter;
|
||||
let sizeAfterFirstResize;
|
||||
editor.on('init', e => {
|
||||
resizeCounter = 0;
|
||||
const overflowPadding = getAutoResizeOverflowPadding(editor);
|
||||
const dom = editor.dom;
|
||||
dom.setStyles(editor.getDoc().documentElement, { height: 'auto' });
|
||||
if (global.browser.isEdge() || global.browser.isIE()) {
|
||||
dom.setStyles(editor.getBody(), {
|
||||
'paddingLeft': overflowPadding,
|
||||
'paddingRight': overflowPadding,
|
||||
'min-height': 0
|
||||
});
|
||||
} else {
|
||||
dom.setStyles(editor.getBody(), {
|
||||
paddingLeft: overflowPadding,
|
||||
paddingRight: overflowPadding
|
||||
});
|
||||
}
|
||||
resize(editor, oldSize, e, getExtraMarginBottom);
|
||||
resizeCounter += 1;
|
||||
});
|
||||
editor.on('NodeChange SetContent keyup FullscreenStateChanged ResizeContent', e => {
|
||||
if (resizeCounter === 1) {
|
||||
sizeAfterFirstResize = editor.getContainer().offsetHeight;
|
||||
resize(editor, oldSize, e, getExtraMarginBottom);
|
||||
resizeCounter += 1;
|
||||
} else if (resizeCounter === 2) {
|
||||
const isLooping = sizeAfterFirstResize < editor.getContainer().offsetHeight;
|
||||
if (isLooping) {
|
||||
const dom = editor.dom;
|
||||
const doc = editor.getDoc();
|
||||
dom.setStyles(doc.documentElement, { 'min-height': 0 });
|
||||
dom.setStyles(editor.getBody(), { 'min-height': 'inherit' });
|
||||
}
|
||||
getExtraMarginBottom = isLooping ? constant(0) : getExtraMarginBottom;
|
||||
resizeCounter += 1;
|
||||
} else {
|
||||
resize(editor, oldSize, e, getExtraMarginBottom);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const register = (editor, oldSize) => {
|
||||
editor.addCommand('mceAutoResize', () => {
|
||||
resize(editor, oldSize);
|
||||
});
|
||||
};
|
||||
|
||||
var Plugin = () => {
|
||||
global$1.add('autoresize', editor => {
|
||||
register$1(editor);
|
||||
if (!editor.options.isSet('resize')) {
|
||||
editor.options.set('resize', false);
|
||||
}
|
||||
if (!editor.inline) {
|
||||
const oldSize = Cell(0);
|
||||
register(editor, oldSize);
|
||||
setup(editor, oldSize);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Plugin();
|
||||
|
||||
})();
|
||||
5
public/tinymce/plugins/autoresize/plugin.min.js
vendored
Normal file
5
public/tinymce/plugins/autoresize/plugin.min.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.6 (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),s=o("min_height"),i=o("max_height"),n=o("autoresize_overflow_padding"),r=o("autoresize_bottom_margin"),l=(e,t)=>{const o=e.getBody();o&&(o.style.overflowY=t?"":"hidden",t||(o.scrollTop=0))},g=(e,t,o,s)=>{var i;const n=parseInt(null!==(i=e.getStyle(t,o,s))&&void 0!==i?i:"",10);return isNaN(n)?0:n},a=(e,o,r,c)=>{var d;const f=e.dom,u=e.getDoc();if(!u)return;if((e=>e.plugins.fullscreen&&e.plugins.fullscreen.isFullscreen())(e))return void l(e,!0);const m=u.documentElement,h=c?c():n(e),p=null!==(d=s(e))&&void 0!==d?d:e.getElement().offsetHeight;let y=p;const S=g(f,m,"margin-top",!0),v=g(f,m,"margin-bottom",!0);let C=m.offsetHeight+S+v+h;C<0&&(C=0);const b=e.getContainer().offsetHeight-e.getContentAreaContainer().offsetHeight;C+b>p&&(y=C+b);const w=i(e);if(w&&y>w?(y=w,l(e,!0)):l(e,!1),y!==o.get()){const s=y-o.get();if(f.setStyle(e.getContainer(),"height",y+"px"),o.set(y),(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())&&s<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=(e=>{let t=0;return{get:()=>t,set:e=>{t=e}}})();((e,t)=>{e.addCommand("mceAutoResize",(()=>{a(e,t)}))})(e,o),((e,o)=>{let s,i,l=()=>r(e);e.on("init",(i=>{s=0;const r=n(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,i,l),s+=1})),e.on("NodeChange SetContent keyup FullscreenStateChanged ResizeContent",(t=>{if(1===s)i=e.getContainer().offsetHeight,a(e,o,t,l),s+=1;else if(2===s){const t=i<e.getContainer().offsetHeight;if(t){const t=e.dom,o=e.getDoc();t.setStyles(o.documentElement,{"min-height":0}),t.setStyles(e.getBody(),{"min-height":"inherit"})}l=t?(0,()=>0):l,s+=1}else a(e,o,t,l)}))})(e,o)}}))}();
|
||||
7
public/tinymce/plugins/autosave/index.js
Normal file
7
public/tinymce/plugins/autosave/index.js
Normal file
@@ -0,0 +1,7 @@
|
||||
// Exports the "autosave" plugin for usage with module loaders
|
||||
// Usage:
|
||||
// CommonJS:
|
||||
// require('tinymce/plugins/autosave')
|
||||
// ES2015:
|
||||
// import 'tinymce/plugins/autosave'
|
||||
require('./plugin.js');
|
||||
233
public/tinymce/plugins/autosave/plugin.js
Normal file
233
public/tinymce/plugins/autosave/plugin.js
Normal file
@@ -0,0 +1,233 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.6 (TBD)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
var global$4 = tinymce.util.Tools.resolve('tinymce.PluginManager');
|
||||
|
||||
const hasProto = (v, constructor, predicate) => {
|
||||
var _a;
|
||||
if (predicate(v, constructor.prototype)) {
|
||||
return true;
|
||||
} else {
|
||||
return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;
|
||||
}
|
||||
};
|
||||
const typeOf = x => {
|
||||
const t = typeof x;
|
||||
if (x === null) {
|
||||
return 'null';
|
||||
} else if (t === 'object' && Array.isArray(x)) {
|
||||
return 'array';
|
||||
} else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {
|
||||
return 'string';
|
||||
} else {
|
||||
return t;
|
||||
}
|
||||
};
|
||||
const isType = type => value => typeOf(value) === type;
|
||||
const eq = t => a => t === a;
|
||||
const isString = isType('string');
|
||||
const isUndefined = eq(undefined);
|
||||
|
||||
var global$3 = tinymce.util.Tools.resolve('tinymce.util.Delay');
|
||||
|
||||
var global$2 = tinymce.util.Tools.resolve('tinymce.util.LocalStorage');
|
||||
|
||||
var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools');
|
||||
|
||||
const fireRestoreDraft = editor => editor.dispatch('RestoreDraft');
|
||||
const fireStoreDraft = editor => editor.dispatch('StoreDraft');
|
||||
const fireRemoveDraft = editor => editor.dispatch('RemoveDraft');
|
||||
|
||||
const parse = timeString => {
|
||||
const multiples = {
|
||||
s: 1000,
|
||||
m: 60000
|
||||
};
|
||||
const parsedTime = /^(\d+)([ms]?)$/.exec(timeString);
|
||||
return (parsedTime && parsedTime[2] ? multiples[parsedTime[2]] : 1) * parseInt(timeString, 10);
|
||||
};
|
||||
|
||||
const option = name => editor => editor.options.get(name);
|
||||
const register$1 = editor => {
|
||||
const registerOption = editor.options.register;
|
||||
const timeProcessor = value => {
|
||||
const valid = isString(value);
|
||||
if (valid) {
|
||||
return {
|
||||
value: parse(value),
|
||||
valid
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
valid: false,
|
||||
message: 'Must be a string.'
|
||||
};
|
||||
}
|
||||
};
|
||||
registerOption('autosave_ask_before_unload', {
|
||||
processor: 'boolean',
|
||||
default: true
|
||||
});
|
||||
registerOption('autosave_prefix', {
|
||||
processor: 'string',
|
||||
default: 'tinymce-autosave-{path}{query}{hash}-{id}-'
|
||||
});
|
||||
registerOption('autosave_restore_when_empty', {
|
||||
processor: 'boolean',
|
||||
default: false
|
||||
});
|
||||
registerOption('autosave_interval', {
|
||||
processor: timeProcessor,
|
||||
default: '30s'
|
||||
});
|
||||
registerOption('autosave_retention', {
|
||||
processor: timeProcessor,
|
||||
default: '20m'
|
||||
});
|
||||
};
|
||||
const shouldAskBeforeUnload = option('autosave_ask_before_unload');
|
||||
const shouldRestoreWhenEmpty = option('autosave_restore_when_empty');
|
||||
const getAutoSaveInterval = option('autosave_interval');
|
||||
const getAutoSaveRetention = option('autosave_retention');
|
||||
const getAutoSavePrefix = editor => {
|
||||
const location = document.location;
|
||||
return editor.options.get('autosave_prefix').replace(/{path}/g, location.pathname).replace(/{query}/g, location.search).replace(/{hash}/g, location.hash).replace(/{id}/g, editor.id);
|
||||
};
|
||||
|
||||
const isEmpty = (editor, html) => {
|
||||
if (isUndefined(html)) {
|
||||
return editor.dom.isEmpty(editor.getBody());
|
||||
} else {
|
||||
const trimmedHtml = global$1.trim(html);
|
||||
if (trimmedHtml === '') {
|
||||
return true;
|
||||
} else {
|
||||
const fragment = new DOMParser().parseFromString(trimmedHtml, 'text/html');
|
||||
return editor.dom.isEmpty(fragment);
|
||||
}
|
||||
}
|
||||
};
|
||||
const hasDraft = editor => {
|
||||
var _a;
|
||||
const time = parseInt((_a = global$2.getItem(getAutoSavePrefix(editor) + 'time')) !== null && _a !== void 0 ? _a : '0', 10) || 0;
|
||||
if (new Date().getTime() - time > getAutoSaveRetention(editor)) {
|
||||
removeDraft(editor, false);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
const removeDraft = (editor, fire) => {
|
||||
const prefix = getAutoSavePrefix(editor);
|
||||
global$2.removeItem(prefix + 'draft');
|
||||
global$2.removeItem(prefix + 'time');
|
||||
if (fire !== false) {
|
||||
fireRemoveDraft(editor);
|
||||
}
|
||||
};
|
||||
const storeDraft = editor => {
|
||||
const prefix = getAutoSavePrefix(editor);
|
||||
if (!isEmpty(editor) && editor.isDirty()) {
|
||||
global$2.setItem(prefix + 'draft', editor.getContent({
|
||||
format: 'raw',
|
||||
no_events: true
|
||||
}));
|
||||
global$2.setItem(prefix + 'time', new Date().getTime().toString());
|
||||
fireStoreDraft(editor);
|
||||
}
|
||||
};
|
||||
const restoreDraft = editor => {
|
||||
var _a;
|
||||
const prefix = getAutoSavePrefix(editor);
|
||||
if (hasDraft(editor)) {
|
||||
editor.setContent((_a = global$2.getItem(prefix + 'draft')) !== null && _a !== void 0 ? _a : '', { format: 'raw' });
|
||||
fireRestoreDraft(editor);
|
||||
}
|
||||
};
|
||||
const startStoreDraft = editor => {
|
||||
const interval = getAutoSaveInterval(editor);
|
||||
global$3.setEditorInterval(editor, () => {
|
||||
storeDraft(editor);
|
||||
}, interval);
|
||||
};
|
||||
const restoreLastDraft = editor => {
|
||||
editor.undoManager.transact(() => {
|
||||
restoreDraft(editor);
|
||||
removeDraft(editor);
|
||||
});
|
||||
editor.focus();
|
||||
};
|
||||
|
||||
const get = editor => ({
|
||||
hasDraft: () => hasDraft(editor),
|
||||
storeDraft: () => storeDraft(editor),
|
||||
restoreDraft: () => restoreDraft(editor),
|
||||
removeDraft: fire => removeDraft(editor, fire),
|
||||
isEmpty: html => isEmpty(editor, html)
|
||||
});
|
||||
|
||||
var global = tinymce.util.Tools.resolve('tinymce.EditorManager');
|
||||
|
||||
const setup = editor => {
|
||||
editor.editorManager.on('BeforeUnload', e => {
|
||||
let msg;
|
||||
global$1.each(global.get(), editor => {
|
||||
if (editor.plugins.autosave) {
|
||||
editor.plugins.autosave.storeDraft();
|
||||
}
|
||||
if (!msg && editor.isDirty() && shouldAskBeforeUnload(editor)) {
|
||||
msg = editor.translate('You have unsaved changes are you sure you want to navigate away?');
|
||||
}
|
||||
});
|
||||
if (msg) {
|
||||
e.preventDefault();
|
||||
e.returnValue = msg;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const makeSetupHandler = editor => api => {
|
||||
api.setEnabled(hasDraft(editor));
|
||||
const editorEventCallback = () => api.setEnabled(hasDraft(editor));
|
||||
editor.on('StoreDraft RestoreDraft RemoveDraft', editorEventCallback);
|
||||
return () => editor.off('StoreDraft RestoreDraft RemoveDraft', editorEventCallback);
|
||||
};
|
||||
const register = editor => {
|
||||
startStoreDraft(editor);
|
||||
const onAction = () => {
|
||||
restoreLastDraft(editor);
|
||||
};
|
||||
editor.ui.registry.addButton('restoredraft', {
|
||||
tooltip: 'Restore last draft',
|
||||
icon: 'restore-draft',
|
||||
onAction,
|
||||
onSetup: makeSetupHandler(editor)
|
||||
});
|
||||
editor.ui.registry.addMenuItem('restoredraft', {
|
||||
text: 'Restore last draft',
|
||||
icon: 'restore-draft',
|
||||
onAction,
|
||||
onSetup: makeSetupHandler(editor)
|
||||
});
|
||||
};
|
||||
|
||||
var Plugin = () => {
|
||||
global$4.add('autosave', editor => {
|
||||
register$1(editor);
|
||||
setup(editor);
|
||||
register(editor);
|
||||
editor.on('init', () => {
|
||||
if (shouldRestoreWhenEmpty(editor) && editor.dom.isEmpty(editor.getBody())) {
|
||||
restoreDraft(editor);
|
||||
}
|
||||
});
|
||||
return get(editor);
|
||||
});
|
||||
};
|
||||
|
||||
Plugin();
|
||||
|
||||
})();
|
||||
5
public/tinymce/plugins/autosave/plugin.min.js
vendored
Normal file
5
public/tinymce/plugins/autosave/plugin.min.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.6 (TBD)
|
||||
*/
|
||||
|
||||
!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager");const e=("string",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=(void 0,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)},g=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))},y=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=>{e.setEnabled(f(t));const r=()=>e.setEnabled(f(t));return t.on("StoreDraft RestoreDraft RemoveDraft",r),()=>t.off("StoreDraft RestoreDraft RemoveDraft",r)};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,(()=>{g(t)}),e)})(t);const e=()=>{(t=>{t.undoManager.transact((()=>{y(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())&&y(t)})),(t=>({hasDraft:()=>f(t),storeDraft:()=>g(t),restoreDraft:()=>y(t),removeDraft:e=>p(t,e),isEmpty:e=>v(t,e)}))(t))))}();
|
||||
7
public/tinymce/plugins/charmap/index.js
Normal file
7
public/tinymce/plugins/charmap/index.js
Normal file
@@ -0,0 +1,7 @@
|
||||
// Exports the "charmap" plugin for usage with module loaders
|
||||
// Usage:
|
||||
// CommonJS:
|
||||
// require('tinymce/plugins/charmap')
|
||||
// ES2015:
|
||||
// import 'tinymce/plugins/charmap'
|
||||
require('./plugin.js');
|
||||
1658
public/tinymce/plugins/charmap/plugin.js
Normal file
1658
public/tinymce/plugins/charmap/plugin.js
Normal file
File diff suppressed because it is too large
Load Diff
5
public/tinymce/plugins/charmap/plugin.min.js
vendored
Normal file
5
public/tinymce/plugins/charmap/plugin.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
7
public/tinymce/plugins/code/index.js
Normal file
7
public/tinymce/plugins/code/index.js
Normal file
@@ -0,0 +1,7 @@
|
||||
// Exports the "code" plugin for usage with module loaders
|
||||
// Usage:
|
||||
// CommonJS:
|
||||
// require('tinymce/plugins/code')
|
||||
// ES2015:
|
||||
// import 'tinymce/plugins/code'
|
||||
require('./plugin.js');
|
||||
85
public/tinymce/plugins/code/plugin.js
Normal file
85
public/tinymce/plugins/code/plugin.js
Normal file
@@ -0,0 +1,85 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.6 (TBD)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
|
||||
|
||||
const setContent = (editor, html) => {
|
||||
editor.focus();
|
||||
editor.undoManager.transact(() => {
|
||||
editor.setContent(html);
|
||||
});
|
||||
editor.selection.setCursorLocation();
|
||||
editor.nodeChanged();
|
||||
};
|
||||
const getContent = editor => {
|
||||
return editor.getContent({ source_view: true });
|
||||
};
|
||||
|
||||
const open = editor => {
|
||||
const editorContent = getContent(editor);
|
||||
editor.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: true
|
||||
}
|
||||
],
|
||||
initialData: { code: editorContent },
|
||||
onSubmit: api => {
|
||||
setContent(editor, api.getData().code);
|
||||
api.close();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const register$1 = editor => {
|
||||
editor.addCommand('mceCodeEditor', () => {
|
||||
open(editor);
|
||||
});
|
||||
};
|
||||
|
||||
const register = editor => {
|
||||
const onAction = () => editor.execCommand('mceCodeEditor');
|
||||
editor.ui.registry.addButton('code', {
|
||||
icon: 'sourcecode',
|
||||
tooltip: 'Source code',
|
||||
onAction
|
||||
});
|
||||
editor.ui.registry.addMenuItem('code', {
|
||||
icon: 'sourcecode',
|
||||
text: 'Source code',
|
||||
onAction
|
||||
});
|
||||
};
|
||||
|
||||
var Plugin = () => {
|
||||
global.add('code', editor => {
|
||||
register$1(editor);
|
||||
register(editor);
|
||||
return {};
|
||||
});
|
||||
};
|
||||
|
||||
Plugin();
|
||||
|
||||
})();
|
||||
5
public/tinymce/plugins/code/plugin.min.js
vendored
Normal file
5
public/tinymce/plugins/code/plugin.min.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.6 (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),{})))}();
|
||||
7
public/tinymce/plugins/codesample/index.js
Normal file
7
public/tinymce/plugins/codesample/index.js
Normal file
@@ -0,0 +1,7 @@
|
||||
// Exports the "codesample" plugin for usage with module loaders
|
||||
// Usage:
|
||||
// CommonJS:
|
||||
// require('tinymce/plugins/codesample')
|
||||
// ES2015:
|
||||
// import 'tinymce/plugins/codesample'
|
||||
require('./plugin.js');
|
||||
2471
public/tinymce/plugins/codesample/plugin.js
Normal file
2471
public/tinymce/plugins/codesample/plugin.js
Normal file
File diff suppressed because it is too large
Load Diff
13
public/tinymce/plugins/codesample/plugin.min.js
vendored
Normal file
13
public/tinymce/plugins/codesample/plugin.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
7
public/tinymce/plugins/directionality/index.js
Normal file
7
public/tinymce/plugins/directionality/index.js
Normal file
@@ -0,0 +1,7 @@
|
||||
// Exports the "directionality" plugin for usage with module loaders
|
||||
// Usage:
|
||||
// CommonJS:
|
||||
// require('tinymce/plugins/directionality')
|
||||
// ES2015:
|
||||
// import 'tinymce/plugins/directionality'
|
||||
require('./plugin.js');
|
||||
395
public/tinymce/plugins/directionality/plugin.js
Normal file
395
public/tinymce/plugins/directionality/plugin.js
Normal file
@@ -0,0 +1,395 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.6 (TBD)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
|
||||
|
||||
const hasProto = (v, constructor, predicate) => {
|
||||
var _a;
|
||||
if (predicate(v, constructor.prototype)) {
|
||||
return true;
|
||||
} else {
|
||||
return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;
|
||||
}
|
||||
};
|
||||
const typeOf = x => {
|
||||
const t = typeof x;
|
||||
if (x === null) {
|
||||
return 'null';
|
||||
} else if (t === 'object' && Array.isArray(x)) {
|
||||
return 'array';
|
||||
} else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {
|
||||
return 'string';
|
||||
} else {
|
||||
return t;
|
||||
}
|
||||
};
|
||||
const isType$1 = type => value => typeOf(value) === type;
|
||||
const isSimpleType = type => value => typeof value === type;
|
||||
const isString = isType$1('string');
|
||||
const isBoolean = isSimpleType('boolean');
|
||||
const isNullable = a => a === null || a === undefined;
|
||||
const isNonNullable = a => !isNullable(a);
|
||||
const isFunction = isSimpleType('function');
|
||||
const isNumber = isSimpleType('number');
|
||||
|
||||
const compose1 = (fbc, fab) => a => fbc(fab(a));
|
||||
const constant = value => {
|
||||
return () => {
|
||||
return value;
|
||||
};
|
||||
};
|
||||
const never = constant(false);
|
||||
|
||||
class Optional {
|
||||
constructor(tag, value) {
|
||||
this.tag = tag;
|
||||
this.value = value;
|
||||
}
|
||||
static some(value) {
|
||||
return new Optional(true, value);
|
||||
}
|
||||
static none() {
|
||||
return Optional.singletonNone;
|
||||
}
|
||||
fold(onNone, onSome) {
|
||||
if (this.tag) {
|
||||
return onSome(this.value);
|
||||
} else {
|
||||
return onNone();
|
||||
}
|
||||
}
|
||||
isSome() {
|
||||
return this.tag;
|
||||
}
|
||||
isNone() {
|
||||
return !this.tag;
|
||||
}
|
||||
map(mapper) {
|
||||
if (this.tag) {
|
||||
return Optional.some(mapper(this.value));
|
||||
} else {
|
||||
return Optional.none();
|
||||
}
|
||||
}
|
||||
bind(binder) {
|
||||
if (this.tag) {
|
||||
return binder(this.value);
|
||||
} else {
|
||||
return Optional.none();
|
||||
}
|
||||
}
|
||||
exists(predicate) {
|
||||
return this.tag && predicate(this.value);
|
||||
}
|
||||
forall(predicate) {
|
||||
return !this.tag || predicate(this.value);
|
||||
}
|
||||
filter(predicate) {
|
||||
if (!this.tag || predicate(this.value)) {
|
||||
return this;
|
||||
} else {
|
||||
return Optional.none();
|
||||
}
|
||||
}
|
||||
getOr(replacement) {
|
||||
return this.tag ? this.value : replacement;
|
||||
}
|
||||
or(replacement) {
|
||||
return this.tag ? this : replacement;
|
||||
}
|
||||
getOrThunk(thunk) {
|
||||
return this.tag ? this.value : thunk();
|
||||
}
|
||||
orThunk(thunk) {
|
||||
return this.tag ? this : thunk();
|
||||
}
|
||||
getOrDie(message) {
|
||||
if (!this.tag) {
|
||||
throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');
|
||||
} else {
|
||||
return this.value;
|
||||
}
|
||||
}
|
||||
static from(value) {
|
||||
return isNonNullable(value) ? Optional.some(value) : Optional.none();
|
||||
}
|
||||
getOrNull() {
|
||||
return this.tag ? this.value : null;
|
||||
}
|
||||
getOrUndefined() {
|
||||
return this.value;
|
||||
}
|
||||
each(worker) {
|
||||
if (this.tag) {
|
||||
worker(this.value);
|
||||
}
|
||||
}
|
||||
toArray() {
|
||||
return this.tag ? [this.value] : [];
|
||||
}
|
||||
toString() {
|
||||
return this.tag ? `some(${ this.value })` : 'none()';
|
||||
}
|
||||
}
|
||||
Optional.singletonNone = new Optional(false);
|
||||
|
||||
const map = (xs, f) => {
|
||||
const len = xs.length;
|
||||
const r = new Array(len);
|
||||
for (let i = 0; i < len; i++) {
|
||||
const x = xs[i];
|
||||
r[i] = f(x, i);
|
||||
}
|
||||
return r;
|
||||
};
|
||||
const each = (xs, f) => {
|
||||
for (let i = 0, len = xs.length; i < len; i++) {
|
||||
const x = xs[i];
|
||||
f(x, i);
|
||||
}
|
||||
};
|
||||
const filter = (xs, pred) => {
|
||||
const r = [];
|
||||
for (let i = 0, len = xs.length; i < len; i++) {
|
||||
const x = xs[i];
|
||||
if (pred(x, i)) {
|
||||
r.push(x);
|
||||
}
|
||||
}
|
||||
return r;
|
||||
};
|
||||
|
||||
const DOCUMENT = 9;
|
||||
const DOCUMENT_FRAGMENT = 11;
|
||||
const ELEMENT = 1;
|
||||
const TEXT = 3;
|
||||
|
||||
const fromHtml = (html, scope) => {
|
||||
const doc = scope || document;
|
||||
const div = doc.createElement('div');
|
||||
div.innerHTML = html;
|
||||
if (!div.hasChildNodes() || div.childNodes.length > 1) {
|
||||
const message = 'HTML does not have a single root node';
|
||||
console.error(message, html);
|
||||
throw new Error(message);
|
||||
}
|
||||
return fromDom(div.childNodes[0]);
|
||||
};
|
||||
const fromTag = (tag, scope) => {
|
||||
const doc = scope || document;
|
||||
const node = doc.createElement(tag);
|
||||
return fromDom(node);
|
||||
};
|
||||
const fromText = (text, scope) => {
|
||||
const doc = scope || document;
|
||||
const node = doc.createTextNode(text);
|
||||
return fromDom(node);
|
||||
};
|
||||
const fromDom = node => {
|
||||
if (node === null || node === undefined) {
|
||||
throw new Error('Node cannot be null or undefined');
|
||||
}
|
||||
return { dom: node };
|
||||
};
|
||||
const fromPoint = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom);
|
||||
const SugarElement = {
|
||||
fromHtml,
|
||||
fromTag,
|
||||
fromText,
|
||||
fromDom,
|
||||
fromPoint
|
||||
};
|
||||
|
||||
const is = (element, selector) => {
|
||||
const dom = element.dom;
|
||||
if (dom.nodeType !== ELEMENT) {
|
||||
return false;
|
||||
} else {
|
||||
const elem = dom;
|
||||
if (elem.matches !== undefined) {
|
||||
return elem.matches(selector);
|
||||
} else if (elem.msMatchesSelector !== undefined) {
|
||||
return elem.msMatchesSelector(selector);
|
||||
} else if (elem.webkitMatchesSelector !== undefined) {
|
||||
return elem.webkitMatchesSelector(selector);
|
||||
} else if (elem.mozMatchesSelector !== undefined) {
|
||||
return elem.mozMatchesSelector(selector);
|
||||
} else {
|
||||
throw new Error('Browser lacks native selectors');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
typeof window !== 'undefined' ? window : Function('return this;')();
|
||||
|
||||
const name = element => {
|
||||
const r = element.dom.nodeName;
|
||||
return r.toLowerCase();
|
||||
};
|
||||
const type = element => element.dom.nodeType;
|
||||
const isType = t => element => type(element) === t;
|
||||
const isElement = isType(ELEMENT);
|
||||
const isText = isType(TEXT);
|
||||
const isDocument = isType(DOCUMENT);
|
||||
const isDocumentFragment = isType(DOCUMENT_FRAGMENT);
|
||||
const isTag = tag => e => isElement(e) && name(e) === tag;
|
||||
|
||||
const owner = element => SugarElement.fromDom(element.dom.ownerDocument);
|
||||
const documentOrOwner = dos => isDocument(dos) ? dos : owner(dos);
|
||||
const parent = element => Optional.from(element.dom.parentNode).map(SugarElement.fromDom);
|
||||
const children$2 = element => map(element.dom.childNodes, SugarElement.fromDom);
|
||||
|
||||
const rawSet = (dom, key, value) => {
|
||||
if (isString(value) || isBoolean(value) || isNumber(value)) {
|
||||
dom.setAttribute(key, value + '');
|
||||
} else {
|
||||
console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom);
|
||||
throw new Error('Attribute value was not simple');
|
||||
}
|
||||
};
|
||||
const set = (element, key, value) => {
|
||||
rawSet(element.dom, key, value);
|
||||
};
|
||||
const remove = (element, key) => {
|
||||
element.dom.removeAttribute(key);
|
||||
};
|
||||
|
||||
const isShadowRoot = dos => isDocumentFragment(dos) && isNonNullable(dos.dom.host);
|
||||
const supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode);
|
||||
const getRootNode = supported ? e => SugarElement.fromDom(e.dom.getRootNode()) : documentOrOwner;
|
||||
const getShadowRoot = e => {
|
||||
const r = getRootNode(e);
|
||||
return isShadowRoot(r) ? Optional.some(r) : Optional.none();
|
||||
};
|
||||
const getShadowHost = e => SugarElement.fromDom(e.dom.host);
|
||||
|
||||
const inBody = element => {
|
||||
const dom = isText(element) ? element.dom.parentNode : element.dom;
|
||||
if (dom === undefined || dom === null || dom.ownerDocument === null) {
|
||||
return false;
|
||||
}
|
||||
const doc = dom.ownerDocument;
|
||||
return getShadowRoot(SugarElement.fromDom(dom)).fold(() => doc.body.contains(dom), compose1(inBody, getShadowHost));
|
||||
};
|
||||
|
||||
const ancestor$1 = (scope, predicate, isRoot) => {
|
||||
let element = scope.dom;
|
||||
const stop = isFunction(isRoot) ? isRoot : never;
|
||||
while (element.parentNode) {
|
||||
element = element.parentNode;
|
||||
const el = SugarElement.fromDom(element);
|
||||
if (predicate(el)) {
|
||||
return Optional.some(el);
|
||||
} else if (stop(el)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return Optional.none();
|
||||
};
|
||||
|
||||
const ancestor = (scope, selector, isRoot) => ancestor$1(scope, e => is(e, selector), isRoot);
|
||||
|
||||
const isSupported = dom => dom.style !== undefined && isFunction(dom.style.getPropertyValue);
|
||||
|
||||
const get = (element, property) => {
|
||||
const dom = element.dom;
|
||||
const styles = window.getComputedStyle(dom);
|
||||
const r = styles.getPropertyValue(property);
|
||||
return r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r;
|
||||
};
|
||||
const getUnsafeProperty = (dom, property) => isSupported(dom) ? dom.style.getPropertyValue(property) : '';
|
||||
|
||||
const getDirection = element => get(element, 'direction') === 'rtl' ? 'rtl' : 'ltr';
|
||||
|
||||
const children$1 = (scope, predicate) => filter(children$2(scope), predicate);
|
||||
|
||||
const children = (scope, selector) => children$1(scope, e => is(e, selector));
|
||||
|
||||
const getParentElement = element => parent(element).filter(isElement);
|
||||
const getNormalizedBlock = (element, isListItem) => {
|
||||
const normalizedElement = isListItem ? ancestor(element, 'ol,ul') : Optional.some(element);
|
||||
return normalizedElement.getOr(element);
|
||||
};
|
||||
const isListItem = isTag('li');
|
||||
const setDirOnElements = (dom, blocks, dir) => {
|
||||
each(blocks, block => {
|
||||
const blockElement = SugarElement.fromDom(block);
|
||||
const isBlockElementListItem = isListItem(blockElement);
|
||||
const normalizedBlock = getNormalizedBlock(blockElement, isBlockElementListItem);
|
||||
const normalizedBlockParent = getParentElement(normalizedBlock);
|
||||
normalizedBlockParent.each(parent => {
|
||||
dom.setStyle(normalizedBlock.dom, 'direction', null);
|
||||
const parentDirection = getDirection(parent);
|
||||
if (parentDirection === dir) {
|
||||
remove(normalizedBlock, 'dir');
|
||||
} else {
|
||||
set(normalizedBlock, 'dir', dir);
|
||||
}
|
||||
if (getDirection(normalizedBlock) !== dir) {
|
||||
dom.setStyle(normalizedBlock.dom, 'direction', dir);
|
||||
}
|
||||
if (isBlockElementListItem) {
|
||||
const listItems = children(normalizedBlock, 'li[dir],li[style]');
|
||||
each(listItems, listItem => {
|
||||
remove(listItem, 'dir');
|
||||
dom.setStyle(listItem.dom, 'direction', null);
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
const setDir = (editor, dir) => {
|
||||
if (editor.selection.isEditable()) {
|
||||
setDirOnElements(editor.dom, editor.selection.getSelectedBlocks(), dir);
|
||||
editor.nodeChanged();
|
||||
}
|
||||
};
|
||||
|
||||
const register$1 = editor => {
|
||||
editor.addCommand('mceDirectionLTR', () => {
|
||||
setDir(editor, 'ltr');
|
||||
});
|
||||
editor.addCommand('mceDirectionRTL', () => {
|
||||
setDir(editor, 'rtl');
|
||||
});
|
||||
};
|
||||
|
||||
const getNodeChangeHandler = (editor, dir) => api => {
|
||||
const nodeChangeHandler = e => {
|
||||
const element = SugarElement.fromDom(e.element);
|
||||
api.setActive(getDirection(element) === dir);
|
||||
api.setEnabled(editor.selection.isEditable());
|
||||
};
|
||||
editor.on('NodeChange', nodeChangeHandler);
|
||||
api.setEnabled(editor.selection.isEditable());
|
||||
return () => editor.off('NodeChange', nodeChangeHandler);
|
||||
};
|
||||
const register = editor => {
|
||||
editor.ui.registry.addToggleButton('ltr', {
|
||||
tooltip: 'Left to right',
|
||||
icon: 'ltr',
|
||||
onAction: () => editor.execCommand('mceDirectionLTR'),
|
||||
onSetup: getNodeChangeHandler(editor, 'ltr')
|
||||
});
|
||||
editor.ui.registry.addToggleButton('rtl', {
|
||||
tooltip: 'Right to left',
|
||||
icon: 'rtl',
|
||||
onAction: () => editor.execCommand('mceDirectionRTL'),
|
||||
onSetup: getNodeChangeHandler(editor, 'rtl')
|
||||
});
|
||||
};
|
||||
|
||||
var Plugin = () => {
|
||||
global.add('directionality', editor => {
|
||||
register$1(editor);
|
||||
register(editor);
|
||||
});
|
||||
};
|
||||
|
||||
Plugin();
|
||||
|
||||
})();
|
||||
5
public/tinymce/plugins/directionality/plugin.min.js
vendored
Normal file
5
public/tinymce/plugins/directionality/plugin.min.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.6 (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=(!1,()=>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(9),y=m(11),p=(t,e)=>{t.dom.removeAttribute(e)},w=i(Element.prototype.attachShadow)&&i(Node.prototype.getRootNode)?t=>d(t.dom.getRootNode()):t=>v(t)?t:d(t.dom.ownerDocument),b=t=>d(t.dom.host),N=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=w(t);return y(o=e)&&n(o.dom.host)?a.some(e):a.none();var o})(d(e)).fold((()=>o.body.contains(e)),(r=N,i=b,t=>r(i(t))));var r,i},S=t=>"rtl"===((t,e)=>{const o=t.dom,r=window.getComputedStyle(o).getPropertyValue(e);return""!==r||N(t)?r:((t,e)=>(t=>void 0!==t.style&&i(t.style.getPropertyValue))(t)?t.style.getPropertyValue(e):"")(o,e)})(t,"direction")?"rtl":"ltr",A=(t,e)=>((t,o)=>((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),E=("li",t=>g(t)&&"li"===t.dom.nodeName.toLowerCase());const T=(t,e,n)=>{u(e,(e=>{const c=d(e),m=E(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),S(e)===n?p(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),S(f)!==n&&t.setStyle(f.dom,"direction",n),m){const e=A(f,"li[dir],li[style]");u(e,(e=>{p(e,"dir"),t.setStyle(e.dom,"direction",null)}))}}))}))},C=(t,e)=>{t.selection.isEditable()&&(T(t.dom,t.selection.getSelectedBlocks(),e),t.nodeChanged())},D=(t,e)=>o=>{const r=r=>{const n=d(r.element);o.setActive(S(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",(()=>{C(t,"ltr")})),t.addCommand("mceDirectionRTL",(()=>{C(t,"rtl")}))})(t),(t=>{t.ui.registry.addToggleButton("ltr",{tooltip:"Left to right",icon:"ltr",onAction:()=>t.execCommand("mceDirectionLTR"),onSetup:D(t,"ltr")}),t.ui.registry.addToggleButton("rtl",{tooltip:"Right to left",icon:"rtl",onAction:()=>t.execCommand("mceDirectionRTL"),onSetup:D(t,"rtl")})})(t)}))}();
|
||||
7
public/tinymce/plugins/emoticons/index.js
Normal file
7
public/tinymce/plugins/emoticons/index.js
Normal file
@@ -0,0 +1,7 @@
|
||||
// Exports the "emoticons" plugin for usage with module loaders
|
||||
// Usage:
|
||||
// CommonJS:
|
||||
// require('tinymce/plugins/emoticons')
|
||||
// ES2015:
|
||||
// import 'tinymce/plugins/emoticons'
|
||||
require('./plugin.js');
|
||||
1
public/tinymce/plugins/emoticons/js/emojiimages.js
Normal file
1
public/tinymce/plugins/emoticons/js/emojiimages.js
Normal file
File diff suppressed because one or more lines are too long
1
public/tinymce/plugins/emoticons/js/emojiimages.min.js
vendored
Normal file
1
public/tinymce/plugins/emoticons/js/emojiimages.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/tinymce/plugins/emoticons/js/emojis.js
Normal file
1
public/tinymce/plugins/emoticons/js/emojis.js
Normal file
File diff suppressed because one or more lines are too long
1
public/tinymce/plugins/emoticons/js/emojis.min.js
vendored
Normal file
1
public/tinymce/plugins/emoticons/js/emojis.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
595
public/tinymce/plugins/emoticons/plugin.js
Normal file
595
public/tinymce/plugins/emoticons/plugin.js
Normal file
@@ -0,0 +1,595 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.6 (TBD)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager');
|
||||
|
||||
const eq = t => a => t === a;
|
||||
const isNull = eq(null);
|
||||
const isUndefined = eq(undefined);
|
||||
const isNullable = a => a === null || a === undefined;
|
||||
const isNonNullable = a => !isNullable(a);
|
||||
|
||||
const noop = () => {
|
||||
};
|
||||
const constant = value => {
|
||||
return () => {
|
||||
return value;
|
||||
};
|
||||
};
|
||||
const never = constant(false);
|
||||
|
||||
class Optional {
|
||||
constructor(tag, value) {
|
||||
this.tag = tag;
|
||||
this.value = value;
|
||||
}
|
||||
static some(value) {
|
||||
return new Optional(true, value);
|
||||
}
|
||||
static none() {
|
||||
return Optional.singletonNone;
|
||||
}
|
||||
fold(onNone, onSome) {
|
||||
if (this.tag) {
|
||||
return onSome(this.value);
|
||||
} else {
|
||||
return onNone();
|
||||
}
|
||||
}
|
||||
isSome() {
|
||||
return this.tag;
|
||||
}
|
||||
isNone() {
|
||||
return !this.tag;
|
||||
}
|
||||
map(mapper) {
|
||||
if (this.tag) {
|
||||
return Optional.some(mapper(this.value));
|
||||
} else {
|
||||
return Optional.none();
|
||||
}
|
||||
}
|
||||
bind(binder) {
|
||||
if (this.tag) {
|
||||
return binder(this.value);
|
||||
} else {
|
||||
return Optional.none();
|
||||
}
|
||||
}
|
||||
exists(predicate) {
|
||||
return this.tag && predicate(this.value);
|
||||
}
|
||||
forall(predicate) {
|
||||
return !this.tag || predicate(this.value);
|
||||
}
|
||||
filter(predicate) {
|
||||
if (!this.tag || predicate(this.value)) {
|
||||
return this;
|
||||
} else {
|
||||
return Optional.none();
|
||||
}
|
||||
}
|
||||
getOr(replacement) {
|
||||
return this.tag ? this.value : replacement;
|
||||
}
|
||||
or(replacement) {
|
||||
return this.tag ? this : replacement;
|
||||
}
|
||||
getOrThunk(thunk) {
|
||||
return this.tag ? this.value : thunk();
|
||||
}
|
||||
orThunk(thunk) {
|
||||
return this.tag ? this : thunk();
|
||||
}
|
||||
getOrDie(message) {
|
||||
if (!this.tag) {
|
||||
throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');
|
||||
} else {
|
||||
return this.value;
|
||||
}
|
||||
}
|
||||
static from(value) {
|
||||
return isNonNullable(value) ? Optional.some(value) : Optional.none();
|
||||
}
|
||||
getOrNull() {
|
||||
return this.tag ? this.value : null;
|
||||
}
|
||||
getOrUndefined() {
|
||||
return this.value;
|
||||
}
|
||||
each(worker) {
|
||||
if (this.tag) {
|
||||
worker(this.value);
|
||||
}
|
||||
}
|
||||
toArray() {
|
||||
return this.tag ? [this.value] : [];
|
||||
}
|
||||
toString() {
|
||||
return this.tag ? `some(${ this.value })` : 'none()';
|
||||
}
|
||||
}
|
||||
Optional.singletonNone = new Optional(false);
|
||||
|
||||
const exists = (xs, pred) => {
|
||||
for (let i = 0, len = xs.length; i < len; i++) {
|
||||
const x = xs[i];
|
||||
if (pred(x, i)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
const map$1 = (xs, f) => {
|
||||
const len = xs.length;
|
||||
const r = new Array(len);
|
||||
for (let i = 0; i < len; i++) {
|
||||
const x = xs[i];
|
||||
r[i] = f(x, i);
|
||||
}
|
||||
return r;
|
||||
};
|
||||
const each$1 = (xs, f) => {
|
||||
for (let i = 0, len = xs.length; i < len; i++) {
|
||||
const x = xs[i];
|
||||
f(x, i);
|
||||
}
|
||||
};
|
||||
|
||||
const Cell = initial => {
|
||||
let value = initial;
|
||||
const get = () => {
|
||||
return value;
|
||||
};
|
||||
const set = v => {
|
||||
value = v;
|
||||
};
|
||||
return {
|
||||
get,
|
||||
set
|
||||
};
|
||||
};
|
||||
|
||||
const last = (fn, rate) => {
|
||||
let timer = null;
|
||||
const cancel = () => {
|
||||
if (!isNull(timer)) {
|
||||
clearTimeout(timer);
|
||||
timer = null;
|
||||
}
|
||||
};
|
||||
const throttle = (...args) => {
|
||||
cancel();
|
||||
timer = setTimeout(() => {
|
||||
timer = null;
|
||||
fn.apply(null, args);
|
||||
}, rate);
|
||||
};
|
||||
return {
|
||||
cancel,
|
||||
throttle
|
||||
};
|
||||
};
|
||||
|
||||
const insertEmoticon = (editor, ch) => {
|
||||
editor.insertContent(ch);
|
||||
};
|
||||
|
||||
const keys = Object.keys;
|
||||
const hasOwnProperty = Object.hasOwnProperty;
|
||||
const each = (obj, f) => {
|
||||
const props = keys(obj);
|
||||
for (let k = 0, len = props.length; k < len; k++) {
|
||||
const i = props[k];
|
||||
const x = obj[i];
|
||||
f(x, i);
|
||||
}
|
||||
};
|
||||
const map = (obj, f) => {
|
||||
return tupleMap(obj, (x, i) => ({
|
||||
k: i,
|
||||
v: f(x, i)
|
||||
}));
|
||||
};
|
||||
const tupleMap = (obj, f) => {
|
||||
const r = {};
|
||||
each(obj, (x, i) => {
|
||||
const tuple = f(x, i);
|
||||
r[tuple.k] = tuple.v;
|
||||
});
|
||||
return r;
|
||||
};
|
||||
const has = (obj, key) => hasOwnProperty.call(obj, key);
|
||||
|
||||
const shallow = (old, nu) => {
|
||||
return nu;
|
||||
};
|
||||
const baseMerge = merger => {
|
||||
return (...objects) => {
|
||||
if (objects.length === 0) {
|
||||
throw new Error(`Can't merge zero objects`);
|
||||
}
|
||||
const ret = {};
|
||||
for (let j = 0; j < objects.length; j++) {
|
||||
const curObject = objects[j];
|
||||
for (const key in curObject) {
|
||||
if (has(curObject, key)) {
|
||||
ret[key] = merger(ret[key], curObject[key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
};
|
||||
};
|
||||
const merge = baseMerge(shallow);
|
||||
|
||||
const singleton = doRevoke => {
|
||||
const subject = Cell(Optional.none());
|
||||
const revoke = () => subject.get().each(doRevoke);
|
||||
const clear = () => {
|
||||
revoke();
|
||||
subject.set(Optional.none());
|
||||
};
|
||||
const isSet = () => subject.get().isSome();
|
||||
const get = () => subject.get();
|
||||
const set = s => {
|
||||
revoke();
|
||||
subject.set(Optional.some(s));
|
||||
};
|
||||
return {
|
||||
clear,
|
||||
isSet,
|
||||
get,
|
||||
set
|
||||
};
|
||||
};
|
||||
const value = () => {
|
||||
const subject = singleton(noop);
|
||||
const on = f => subject.get().each(f);
|
||||
return {
|
||||
...subject,
|
||||
on
|
||||
};
|
||||
};
|
||||
|
||||
const checkRange = (str, substr, start) => substr === '' || str.length >= substr.length && str.substr(start, start + substr.length) === substr;
|
||||
const contains = (str, substr, start = 0, end) => {
|
||||
const idx = str.indexOf(substr, start);
|
||||
if (idx !== -1) {
|
||||
return isUndefined(end) ? true : idx + substr.length <= end;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
const startsWith = (str, prefix) => {
|
||||
return checkRange(str, prefix, 0);
|
||||
};
|
||||
|
||||
var global = tinymce.util.Tools.resolve('tinymce.Resource');
|
||||
|
||||
const DEFAULT_ID = 'tinymce.plugins.emoticons';
|
||||
const option = name => editor => editor.options.get(name);
|
||||
const register$2 = (editor, pluginUrl) => {
|
||||
const registerOption = editor.options.register;
|
||||
registerOption('emoticons_database', {
|
||||
processor: 'string',
|
||||
default: 'emojis'
|
||||
});
|
||||
registerOption('emoticons_database_url', {
|
||||
processor: 'string',
|
||||
default: `${ pluginUrl }/js/${ getEmojiDatabase(editor) }${ editor.suffix }.js`
|
||||
});
|
||||
registerOption('emoticons_database_id', {
|
||||
processor: 'string',
|
||||
default: DEFAULT_ID
|
||||
});
|
||||
registerOption('emoticons_append', {
|
||||
processor: 'object',
|
||||
default: {}
|
||||
});
|
||||
registerOption('emoticons_images_url', {
|
||||
processor: 'string',
|
||||
default: 'https://twemoji.maxcdn.com/v/13.0.1/72x72/'
|
||||
});
|
||||
};
|
||||
const getEmojiDatabase = option('emoticons_database');
|
||||
const getEmojiDatabaseUrl = option('emoticons_database_url');
|
||||
const getEmojiDatabaseId = option('emoticons_database_id');
|
||||
const getAppendedEmoji = option('emoticons_append');
|
||||
const getEmojiImageUrl = option('emoticons_images_url');
|
||||
|
||||
const ALL_CATEGORY = 'All';
|
||||
const categoryNameMap = {
|
||||
symbols: 'Symbols',
|
||||
people: 'People',
|
||||
animals_and_nature: 'Animals and Nature',
|
||||
food_and_drink: 'Food and Drink',
|
||||
activity: 'Activity',
|
||||
travel_and_places: 'Travel and Places',
|
||||
objects: 'Objects',
|
||||
flags: 'Flags',
|
||||
user: 'User Defined'
|
||||
};
|
||||
const translateCategory = (categories, name) => has(categories, name) ? categories[name] : name;
|
||||
const getUserDefinedEmoji = editor => {
|
||||
const userDefinedEmoticons = getAppendedEmoji(editor);
|
||||
return map(userDefinedEmoticons, value => ({
|
||||
keywords: [],
|
||||
category: 'user',
|
||||
...value
|
||||
}));
|
||||
};
|
||||
const initDatabase = (editor, databaseUrl, databaseId) => {
|
||||
const categories = value();
|
||||
const all = value();
|
||||
const emojiImagesUrl = getEmojiImageUrl(editor);
|
||||
const getEmoji = lib => {
|
||||
if (startsWith(lib.char, '<img')) {
|
||||
return lib.char.replace(/src="([^"]+)"/, (match, url) => `src="${ emojiImagesUrl }${ url }"`);
|
||||
} else {
|
||||
return lib.char;
|
||||
}
|
||||
};
|
||||
const processEmojis = emojis => {
|
||||
const cats = {};
|
||||
const everything = [];
|
||||
each(emojis, (lib, title) => {
|
||||
const entry = {
|
||||
title,
|
||||
keywords: lib.keywords,
|
||||
char: getEmoji(lib),
|
||||
category: translateCategory(categoryNameMap, lib.category)
|
||||
};
|
||||
const current = cats[entry.category] !== undefined ? cats[entry.category] : [];
|
||||
cats[entry.category] = current.concat([entry]);
|
||||
everything.push(entry);
|
||||
});
|
||||
categories.set(cats);
|
||||
all.set(everything);
|
||||
};
|
||||
editor.on('init', () => {
|
||||
global.load(databaseId, databaseUrl).then(emojis => {
|
||||
const userEmojis = getUserDefinedEmoji(editor);
|
||||
processEmojis(merge(emojis, userEmojis));
|
||||
}, err => {
|
||||
console.log(`Failed to load emojis: ${ err }`);
|
||||
categories.set({});
|
||||
all.set([]);
|
||||
});
|
||||
});
|
||||
const listCategory = category => {
|
||||
if (category === ALL_CATEGORY) {
|
||||
return listAll();
|
||||
}
|
||||
return categories.get().bind(cats => Optional.from(cats[category])).getOr([]);
|
||||
};
|
||||
const listAll = () => all.get().getOr([]);
|
||||
const listCategories = () => [ALL_CATEGORY].concat(keys(categories.get().getOr({})));
|
||||
const waitForLoad = () => {
|
||||
if (hasLoaded()) {
|
||||
return Promise.resolve(true);
|
||||
} else {
|
||||
return new Promise((resolve, reject) => {
|
||||
let numRetries = 15;
|
||||
const interval = setInterval(() => {
|
||||
if (hasLoaded()) {
|
||||
clearInterval(interval);
|
||||
resolve(true);
|
||||
} else {
|
||||
numRetries--;
|
||||
if (numRetries < 0) {
|
||||
console.log('Could not load emojis from url: ' + databaseUrl);
|
||||
clearInterval(interval);
|
||||
reject(false);
|
||||
}
|
||||
}
|
||||
}, 100);
|
||||
});
|
||||
}
|
||||
};
|
||||
const hasLoaded = () => categories.isSet() && all.isSet();
|
||||
return {
|
||||
listCategories,
|
||||
hasLoaded,
|
||||
waitForLoad,
|
||||
listAll,
|
||||
listCategory
|
||||
};
|
||||
};
|
||||
|
||||
const emojiMatches = (emoji, lowerCasePattern) => contains(emoji.title.toLowerCase(), lowerCasePattern) || exists(emoji.keywords, k => contains(k.toLowerCase(), lowerCasePattern));
|
||||
const emojisFrom = (list, pattern, maxResults) => {
|
||||
const matches = [];
|
||||
const lowerCasePattern = pattern.toLowerCase();
|
||||
const reachedLimit = maxResults.fold(() => never, max => size => size >= max);
|
||||
for (let i = 0; i < list.length; i++) {
|
||||
if (pattern.length === 0 || emojiMatches(list[i], lowerCasePattern)) {
|
||||
matches.push({
|
||||
value: list[i].char,
|
||||
text: list[i].title,
|
||||
icon: list[i].char
|
||||
});
|
||||
if (reachedLimit(matches.length)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return matches;
|
||||
};
|
||||
|
||||
const patternName = 'pattern';
|
||||
const open = (editor, database) => {
|
||||
const initialState = {
|
||||
pattern: '',
|
||||
results: emojisFrom(database.listAll(), '', Optional.some(300))
|
||||
};
|
||||
const currentTab = Cell(ALL_CATEGORY);
|
||||
const scan = dialogApi => {
|
||||
const dialogData = dialogApi.getData();
|
||||
const category = currentTab.get();
|
||||
const candidates = database.listCategory(category);
|
||||
const results = emojisFrom(candidates, dialogData[patternName], category === ALL_CATEGORY ? Optional.some(300) : Optional.none());
|
||||
dialogApi.setData({ results });
|
||||
};
|
||||
const updateFilter = last(dialogApi => {
|
||||
scan(dialogApi);
|
||||
}, 200);
|
||||
const searchField = {
|
||||
label: 'Search',
|
||||
type: 'input',
|
||||
name: patternName
|
||||
};
|
||||
const resultsField = {
|
||||
type: 'collection',
|
||||
name: 'results'
|
||||
};
|
||||
const getInitialState = () => {
|
||||
const body = {
|
||||
type: 'tabpanel',
|
||||
tabs: map$1(database.listCategories(), cat => ({
|
||||
title: cat,
|
||||
name: cat,
|
||||
items: [
|
||||
searchField,
|
||||
resultsField
|
||||
]
|
||||
}))
|
||||
};
|
||||
return {
|
||||
title: 'Emojis',
|
||||
size: 'normal',
|
||||
body,
|
||||
initialData: initialState,
|
||||
onTabChange: (dialogApi, details) => {
|
||||
currentTab.set(details.newTabName);
|
||||
updateFilter.throttle(dialogApi);
|
||||
},
|
||||
onChange: updateFilter.throttle,
|
||||
onAction: (dialogApi, actionData) => {
|
||||
if (actionData.name === 'results') {
|
||||
insertEmoticon(editor, actionData.value);
|
||||
dialogApi.close();
|
||||
}
|
||||
},
|
||||
buttons: [{
|
||||
type: 'cancel',
|
||||
text: 'Close',
|
||||
primary: true
|
||||
}]
|
||||
};
|
||||
};
|
||||
const dialogApi = editor.windowManager.open(getInitialState());
|
||||
dialogApi.focus(patternName);
|
||||
if (!database.hasLoaded()) {
|
||||
dialogApi.block('Loading emojis...');
|
||||
database.waitForLoad().then(() => {
|
||||
dialogApi.redial(getInitialState());
|
||||
updateFilter.throttle(dialogApi);
|
||||
dialogApi.focus(patternName);
|
||||
dialogApi.unblock();
|
||||
}).catch(_err => {
|
||||
dialogApi.redial({
|
||||
title: 'Emojis',
|
||||
body: {
|
||||
type: 'panel',
|
||||
items: [{
|
||||
type: 'alertbanner',
|
||||
level: 'error',
|
||||
icon: 'warning',
|
||||
text: 'Could not load emojis'
|
||||
}]
|
||||
},
|
||||
buttons: [{
|
||||
type: 'cancel',
|
||||
text: 'Close',
|
||||
primary: true
|
||||
}],
|
||||
initialData: {
|
||||
pattern: '',
|
||||
results: []
|
||||
}
|
||||
});
|
||||
dialogApi.focus(patternName);
|
||||
dialogApi.unblock();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const register$1 = (editor, database) => {
|
||||
editor.addCommand('mceEmoticons', () => open(editor, database));
|
||||
};
|
||||
|
||||
const setup = editor => {
|
||||
editor.on('PreInit', () => {
|
||||
editor.parser.addAttributeFilter('data-emoticon', nodes => {
|
||||
each$1(nodes, node => {
|
||||
node.attr('data-mce-resize', 'false');
|
||||
node.attr('data-mce-placeholder', '1');
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
const init = (editor, database) => {
|
||||
editor.ui.registry.addAutocompleter('emoticons', {
|
||||
trigger: ':',
|
||||
columns: 'auto',
|
||||
minChars: 2,
|
||||
fetch: (pattern, maxResults) => database.waitForLoad().then(() => {
|
||||
const candidates = database.listAll();
|
||||
return emojisFrom(candidates, pattern, Optional.some(maxResults));
|
||||
}),
|
||||
onAction: (autocompleteApi, rng, value) => {
|
||||
editor.selection.setRng(rng);
|
||||
editor.insertContent(value);
|
||||
autocompleteApi.hide();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const onSetupEditable = editor => api => {
|
||||
const nodeChanged = () => {
|
||||
api.setEnabled(editor.selection.isEditable());
|
||||
};
|
||||
editor.on('NodeChange', nodeChanged);
|
||||
nodeChanged();
|
||||
return () => {
|
||||
editor.off('NodeChange', nodeChanged);
|
||||
};
|
||||
};
|
||||
const register = editor => {
|
||||
const onAction = () => editor.execCommand('mceEmoticons');
|
||||
editor.ui.registry.addButton('emoticons', {
|
||||
tooltip: 'Emojis',
|
||||
icon: 'emoji',
|
||||
onAction,
|
||||
onSetup: onSetupEditable(editor)
|
||||
});
|
||||
editor.ui.registry.addMenuItem('emoticons', {
|
||||
text: 'Emojis...',
|
||||
icon: 'emoji',
|
||||
onAction,
|
||||
onSetup: onSetupEditable(editor)
|
||||
});
|
||||
};
|
||||
|
||||
var Plugin = () => {
|
||||
global$1.add('emoticons', (editor, pluginUrl) => {
|
||||
register$2(editor, pluginUrl);
|
||||
const databaseUrl = getEmojiDatabaseUrl(editor);
|
||||
const databaseId = getEmojiDatabaseId(editor);
|
||||
const database = initDatabase(editor, databaseUrl, databaseId);
|
||||
register$1(editor, database);
|
||||
register(editor);
|
||||
init(editor, database);
|
||||
setup(editor);
|
||||
});
|
||||
};
|
||||
|
||||
Plugin();
|
||||
|
||||
})();
|
||||
5
public/tinymce/plugins/emoticons/plugin.min.js
vendored
Normal file
5
public/tinymce/plugins/emoticons/plugin.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
7
public/tinymce/plugins/fullscreen/index.js
Normal file
7
public/tinymce/plugins/fullscreen/index.js
Normal file
@@ -0,0 +1,7 @@
|
||||
// Exports the "fullscreen" plugin for usage with module loaders
|
||||
// Usage:
|
||||
// CommonJS:
|
||||
// require('tinymce/plugins/fullscreen')
|
||||
// ES2015:
|
||||
// import 'tinymce/plugins/fullscreen'
|
||||
require('./plugin.js');
|
||||
1249
public/tinymce/plugins/fullscreen/plugin.js
Normal file
1249
public/tinymce/plugins/fullscreen/plugin.js
Normal file
File diff suppressed because it is too large
Load Diff
5
public/tinymce/plugins/fullscreen/plugin.min.js
vendored
Normal file
5
public/tinymce/plugins/fullscreen/plugin.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
7
public/tinymce/plugins/help/index.js
Normal file
7
public/tinymce/plugins/help/index.js
Normal file
@@ -0,0 +1,7 @@
|
||||
// Exports the "help" plugin for usage with module loaders
|
||||
// Usage:
|
||||
// CommonJS:
|
||||
// require('tinymce/plugins/help')
|
||||
// ES2015:
|
||||
// import 'tinymce/plugins/help'
|
||||
require('./plugin.js');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/ar.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/ar.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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 أو macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/bg_BG.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/bg_BG.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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 или macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/ca.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/ca.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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 una barra d'eines contextual</dt>\n" +
|
||||
' <dd>Windows, Linux o macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/cs.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/cs.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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 kontextový panel nástrojů</dt>\n' +
|
||||
' <dd>Windows, Linux nebo macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/da.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/da.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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å kontekstuel værktøjslinje</dt>\n' +
|
||||
' <dd>Windows, Linux eller macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/de.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/de.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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>Fokus auf kontextbezogene Symbolleiste</dt>\n' +
|
||||
' <dd>Windows, Linux oder macOS: STRG+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/el.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/el.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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 ή macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/en.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/en.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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 a contextual toolbar</dt>\n' +
|
||||
' <dd>Windows, Linux or macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/es.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/es.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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 una barra de herramientas contextual</dt>\n' +
|
||||
' <dd>Windows, Linux o macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/eu.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/eu.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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 testuinguruaren tresna-barra</dt>\n' +
|
||||
' <dd>Windows, Linux edo macOS: Ktrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/fa.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/fa.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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>Windows ،Linux یا macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/fi.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/fi.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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>Siirrä kohdistus kontekstuaaliseen työkalupalkkiin</dt>\n' +
|
||||
' <dd>Windows, Linux tai macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/fr_FR.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/fr_FR.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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 une barre d'outils contextuelle</dt>\n" +
|
||||
' <dd>Windows, Linux ou macOS : Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/he_IL.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/he_IL.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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 או macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/hi.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/hi.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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 या macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/hr.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/hr.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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 kontekstne alatne trake</dt>\n' +
|
||||
' <dd>Windows, Linux ili macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/hu_HU.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/hu_HU.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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>Fókusz egy környezetfüggő eszköztárra</dt>\n' +
|
||||
' <dd>Windows, Linux és macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/id.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/id.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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>Fokus pada bilah alat kontekstual</dt>\n' +
|
||||
' <dd>Windows, Linux, atau macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/it.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/it.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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>Impostare lo stato attivo per la barra degli strumenti contestuale</dt>\n' +
|
||||
' <dd>Windows, Linux o macOS: CTRL+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/ja.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/ja.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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 または macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/kk.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/kk.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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 немесе macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/ko_KR.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/ko_KR.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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 또는 macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/ms.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/ms.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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>Fokus bar alat kontekstual</dt>\n' +
|
||||
' <dd>Windows, Linux atau macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/nb_NO.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/nb_NO.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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>Utheve en kontekstuell verktøylinje</dt>\n' +
|
||||
' <dd>Windows, Linux eller macOS: Ctrl + F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/nl.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/nl.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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 een contextuele werkbalk instellen</dt>\n' +
|
||||
' <dd>Windows, Linux of macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/pl.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/pl.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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>Ustaw fokus na kontekstowy pasek narzędzi</dt>\n' +
|
||||
' <dd>Windows, Linux lub macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/pt_BR.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/pt_BR.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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 barra de ferramentas contextual</dt>\n' +
|
||||
' <dd>Windows, Linux ou macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/pt_PT.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/pt_PT.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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>Foco numa barra de ferramentas contextual</dt>\n' +
|
||||
' <dd>Windows, Linux ou macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/ro.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/ro.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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 o bară de instrumente contextuală</dt>\n' +
|
||||
' <dd>Windows, Linux sau macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/ru.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/ru.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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 или macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/sk.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/sk.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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>Prejsť na kontextový panel nástrojov</dt>\n' +
|
||||
' <dd>Windows, Linux alebo macOS: Ctrl+F9\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');
|
||||
90
public/tinymce/plugins/help/js/i18n/keynav/sl_SI.js
Normal file
90
public/tinymce/plugins/help/js/i18n/keynav/sl_SI.js
Normal file
@@ -0,0 +1,90 @@
|
||||
tinymce.Resource.add('tinymce.html-i18n.help-keynav.sl_SI',
|
||||
'<h1>Začetek krmarjenja s tipkovnico</h1>\n' +
|
||||
'\n' +
|
||||
'<dl>\n' +
|
||||
' <dt>Fokus na menijsko vrstico</dt>\n' +
|
||||
' <dd>Windows ali Linux: Alt + F9</dd>\n' +
|
||||
' <dd>macOS: ⌥F9</dd>\n' +
|
||||
' <dt>Fokus na orodno vrstico</dt>\n' +
|
||||
' <dd>Windows ali Linux: Alt + F10</dd>\n' +
|
||||
' <dd>macOS: ⌥F10</dd>\n' +
|
||||
' <dt>Fokus na nogo</dt>\n' +
|
||||
' <dd>Windows ali Linux: Alt + F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Fokus na kontekstualno orodno vrstico</dt>\n' +
|
||||
' <dd>Windows, Linux ali macOS: Ctrl + F9\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Krmarjenje se bo začelo s prvim elementom uporabniškega vmesnika, ki bo izpostavljena ali podčrtan, če gre za prvi element na\n' +
|
||||
' poti do elementa noge.</p>\n' +
|
||||
'\n' +
|
||||
'<h1>Krmarjenje med razdelki uporabniškega vmesnika</h1>\n' +
|
||||
'\n' +
|
||||
'<p>Če se želite pomakniti z enega dela uporabniškega vmesnika na naslednjega, pritisnite <strong>tabulatorko</strong>.</p>\n' +
|
||||
'\n' +
|
||||
'<p>Če se želite pomakniti z enega dela uporabniškega vmesnika na prejšnjega, pritisnite <strong>shift + tabulatorko</strong>.</p>\n' +
|
||||
'\n' +
|
||||
'<p>Zaporedje teh razdelkov uporabniškega vmesnika, ko pritiskate <strong>tabulatorko</strong>, je:</p>\n' +
|
||||
'\n' +
|
||||
'<ol>\n' +
|
||||
' <li>Menijska vrstica</li>\n' +
|
||||
' <li>Posamezne skupine orodne vrstice</li>\n' +
|
||||
' <li>Stranska vrstica</li>\n' +
|
||||
' <li>Pod do elementa v nogi</li>\n' +
|
||||
' <li>Gumb za preklop štetja besed v nogi</li>\n' +
|
||||
' <li>Povezava do blagovne znamke v nogi</li>\n' +
|
||||
' <li>Ročaj za spreminjanje velikosti urejevalnika v nogi</li>\n' +
|
||||
'</ol>\n' +
|
||||
'\n' +
|
||||
'<p>Če razdelek uporabniškega vmesnika ni prisoten, je preskočen.</p>\n' +
|
||||
'\n' +
|
||||
'<p>Če ima noga fokus za krmarjenje s tipkovnico in ni vidne stranske vrstice, s pritiskom na <strong>shift + tabulatorko</strong>\n' +
|
||||
' fokus premaknete na prvo skupino orodne vrstice, ne zadnjo</p>.\n' +
|
||||
'\n' +
|
||||
'<h1>Krmarjenje v razdelkih uporabniškega vmesnika</h1>\n' +
|
||||
'\n' +
|
||||
'<p>Če se želite premakniti z enega elementa uporabniškega vmesnika na naslednjega, pritisnite ustrezno <strong>puščično</strong> tipko.</p>\n' +
|
||||
'\n' +
|
||||
'<p><strong>Leva</strong> in <strong>desna</strong> puščična tipka</p>\n' +
|
||||
'\n' +
|
||||
'<ul>\n' +
|
||||
' <li>omogočata premikanje med meniji v menijski vrstici.</li>\n' +
|
||||
' <li>odpreta podmeni v meniju.</li>\n' +
|
||||
' <li>omogočata premikanje med gumbi v skupini orodne vrstice.</li>\n' +
|
||||
' <li>omogočata premikanje med elementi na poti do elementov noge.</li>\n' +
|
||||
'</ul>\n' +
|
||||
'\n' +
|
||||
'<p><strong>Spodnja</strong> in <strong>zgornja</strong> puščična tipka</p>\n' +
|
||||
'\n' +
|
||||
'<ul>\n' +
|
||||
' <li>omogočata premikanje med elementi menija.</li>\n' +
|
||||
' <li>omogočata premikanje med elementi v pojavnem meniju orodne vrstice.</li>\n' +
|
||||
'</ul>\n' +
|
||||
'\n' +
|
||||
'<p><strong>Puščične</strong> tipke omogočajo kroženje znotraj razdelka uporabniškega vmesnika, na katerem je fokus.</p>\n' +
|
||||
'\n' +
|
||||
'<p>Če želite zapreti odprt meni, podmeni ali pojavni meni, pritisnite tipko <strong>Esc</strong>.</p>\n' +
|
||||
'\n' +
|
||||
'<p>Če je trenutni fokus na »vrhu« določenega razdelka uporabniškega vmesnika, s pritiskom tipke <strong>Esc</strong> zaprete\n' +
|
||||
' tudi celotno krmarjenje s tipkovnico.</p>\n' +
|
||||
'\n' +
|
||||
'<h1>Izvajanje menijskega elementa ali gumba orodne vrstice</h1>\n' +
|
||||
'\n' +
|
||||
'<p>Ko je označen želeni menijski element ali orodja vrstica, pritisnite <strong>vračalko</strong>, <strong>Enter</strong>\n' +
|
||||
' ali <strong>preslednico</strong>, da izvedete element.</p>\n' +
|
||||
'\n' +
|
||||
'<h1>Krmarjenje po pogovornih oknih brez zavihkov</h1>\n' +
|
||||
'\n' +
|
||||
'<p>Ko odprete pogovorno okno brez zavihkov, ima fokus prva interaktivna komponenta.</p>\n' +
|
||||
'\n' +
|
||||
'<p>Med interaktivnimi komponentami pogovornega okna se premikate s pritiskom <strong>tabulatorke</strong> ali kombinacije tipke <strong>shift + tabulatorke</strong>.</p>\n' +
|
||||
'\n' +
|
||||
'<h1>Krmarjenje po pogovornih oknih z zavihki</h1>\n' +
|
||||
'\n' +
|
||||
'<p>Ko odprete pogovorno okno z zavihki, ima fokus prvi gumb v meniju zavihka.</p>\n' +
|
||||
'\n' +
|
||||
'<p>Med interaktivnimi komponentami tega zavihka pogovornega okna se premikate s pritiskom <strong>tabulatorke</strong> ali\n' +
|
||||
' kombinacije tipke <strong>shift + tabulatorke</strong>.</p>\n' +
|
||||
'\n' +
|
||||
'<p>Na drug zavihek pogovornega okna preklopite tako, da fokus prestavite na meni zavihka in nato pritisnete ustrezno <strong>puščično</strong>\n' +
|
||||
' tipko, da se pomaknete med razpoložljivimi zavihki.</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