| @@ -23,7 +23,7 @@ | |||||
| * Fix 版本库中附件下载400(#51625) | * Fix 版本库中附件下载400(#51625) | ||||
| * Fix loading页面优化(#51588) | * Fix loading页面优化(#51588) | ||||
| * Fix 提交详情页面优化(#51577) | * Fix 提交详情页面优化(#51577) | ||||
| * Fix 修复易修复制功能(#51569) | |||||
| * Fix 修复疑修复制功能(#51569) | |||||
| * Fix 修复新建发行版用户信息显示错误的问题(#51665) | * Fix 修复新建发行版用户信息显示错误的问题(#51665) | ||||
| * Fix 修复查看文件详细信息报错的问题(#51561) | * Fix 修复查看文件详细信息报错的问题(#51561) | ||||
| * Fix 修复提交记录中时间显示格式问题(#51526) | * Fix 修复提交记录中时间显示格式问题(#51526) | ||||
| @@ -62,7 +62,7 @@ | |||||
| ## [v3.0.3](https://forgeplus.trustie.net/projects/jasder/forgeplus/releases) - 2021-05-08 | ## [v3.0.3](https://forgeplus.trustie.net/projects/jasder/forgeplus/releases) - 2021-05-08 | ||||
| * BUGFIXES | * BUGFIXES | ||||
| * Fix 解决易修标题过长导致的排版问题(45469) | |||||
| * Fix 解决疑修标题过长导致的排版问题(45469) | |||||
| * Fix 解决合并请求详情页面排版错误的问题(45457) | * Fix 解决合并请求详情页面排版错误的问题(45457) | ||||
| * FIX 解决转移仓库界面专有名词描述错误的问题(45455) | * FIX 解决转移仓库界面专有名词描述错误的问题(45455) | ||||
| * Fix 解决markdown格式文件自动生成数字排序的问题(45454) | * Fix 解决markdown格式文件自动生成数字排序的问题(45454) | ||||
| @@ -0,0 +1,852 @@ | |||||
| # Projects | |||||
| ## 申请加入项目 | |||||
| 申请加入项目 | |||||
| > 示例: | |||||
| ```shell | |||||
| curl -X POST http://localhost:3000/api/applied_projects.json | |||||
| ``` | |||||
| ```javascript | |||||
| await octokit.request('POST /api/appliedr_projects.json') | |||||
| ``` | |||||
| ### HTTP 请求 | |||||
| `POST /api/applied_projects.json` | |||||
| ### 请求参数 | |||||
| 参数 | 必选 | 默认 | 类型 | 字段说明 | |||||
| --------- | ------- | ------- | -------- | ---------- | |||||
| |applied_project.code |是| |string |邀请码 | | |||||
| |applied_project.role |否| |string |项目权限,reporter: 报告者, developer: 开发者,manager:管理员 | | |||||
| > 请求的JSON示例 | |||||
| ```json | |||||
| { | |||||
| "applied_project": { | |||||
| "code": "1una34", | |||||
| "role": "developer" | |||||
| } | |||||
| } | |||||
| ``` | |||||
| ### 返回字段说明 | |||||
| 参数 | 类型 | 字段说明 | |||||
| --------- | ----------- | ----------- | |||||
| |id |int |申请id | | |||||
| |status |string |申请状态,canceled:取消,common:正在申请, accept:已接受,refuse:已拒绝| | |||||
| |time_ago |string |项目申请创建的时间 | | |||||
| |project.id |int |申请项目的id | | |||||
| |project.identifier |string |申请项目的标识 | | |||||
| |project.name |string |申请项目的名称 | | |||||
| |project.description |string |申请项目的描述 | | |||||
| |project.is_public |bool |申请项目是否公开 | | |||||
| |project.owner.id |bool |申请项目拥有者id | | |||||
| |project.owner.type |string |申请项目拥有者类型 | | |||||
| |project.owner.name |string |申请项目拥有者昵称 | | |||||
| |project.owner.login |string |申请项目拥有者标识 | | |||||
| |project.owner.image_url |string |申请项目拥有者头像 | | |||||
| |user.id |int |申请创建者的id | | |||||
| |user.type |string |申请创建者的类型 | | |||||
| |user.name |string |申请创建者的名称 | | |||||
| |user.login |string |申请创建者的标识 | | |||||
| |user.image_url |string |申请创建者头像 | | |||||
| > 返回的JSON示例: | |||||
| ```json | |||||
| { | |||||
| "project": { | |||||
| "id": 74, | |||||
| "identifier": "hehuisssjssjjsjs", | |||||
| "name": "hehuisssjssjjsjs", | |||||
| "description": "wwww", | |||||
| "is_public": false, | |||||
| "owner": { | |||||
| "id": 10, | |||||
| "type": "User", | |||||
| "name": "testforge1", | |||||
| "login": "testforge1", | |||||
| "image_url": "system/lets/letter_avatars/2/T/19_237_174/120.png" | |||||
| } | |||||
| }, | |||||
| "user": { | |||||
| "id": 6, | |||||
| "type": "User", | |||||
| "name": "何慧", | |||||
| "login": "yystopf", | |||||
| "image_url": "images/avatars/User/6?t=1622513134" | |||||
| }, | |||||
| "id": 7, | |||||
| "status": "common", | |||||
| "created_at": "2021-06-09 16:41", | |||||
| "time_ago": "1分钟前" | |||||
| } | |||||
| ``` | |||||
| ## 获取项目列表 | |||||
| 获取项目列表,也可以更加相关条件过滤搜素 | |||||
| > 示例: | |||||
| ```shell | |||||
| curl -X GET \ | |||||
| -d "page=1" \ | |||||
| -d "limit=5" \ | |||||
| http://localhost:3000/api/projects | jq | |||||
| ``` | |||||
| ```javascript | |||||
| await octokit.request('GET /api/projects') | |||||
| ``` | |||||
| ### HTTP 请求 | |||||
| `GET api/projects` | |||||
| ### 请求参数 | |||||
| 参数 | 必选 | 默认 | 类型 | 字段说明 | |||||
| --------- | ------- | ------- | -------- | ---------- | |||||
| page | false | 1 | string | 页数,第几页 | |||||
| limit | false | 15 | string | 每页多少条数据,默认15条 | |||||
| sort_by | false | | string | 排序类型, 取值:updated_on、created_on、forked_count、praises_count; updated_on: 更新时间排序,created_on: 创建时间排序,forked_count: fork数据排序,praises_count: 点赞数量排序,默认为updated_on更新时间排序 | |||||
| sort_direction| false | | string | 排序方式,取值为: desc、asc; desc: 降序排序, asc: 升序排序, 默认为:desc | |||||
| search | false | | string | 按照项目名称搜索 | |||||
| category_id | false | | int | 项目类别id | |||||
| language_id | false | | int | 项目语言id | |||||
| project_type | false | | string | 项目类型, 取值为:common、mirror; common:开源托管项目, mirror:开源镜像项目 | |||||
| ### 返回字段说明 | |||||
| 参数 | 类型 | 字段说明 | |||||
| --------- | ----------- | ----------- | |||||
| total_count | int | 项目总条数 | |||||
| id | string | 项目id | |||||
| name | string | 项目名称 | |||||
| description | string | 项目简介 | |||||
| visits | int | 流量数 | |||||
| forked_count | int | 被fork的数量 | |||||
| praises_count | int | star数量 | |||||
| is_public | boolean | 是否公开, true:公开,false:未公开 | |||||
| mirror_url | string | 镜像url | |||||
| last_update_time| int | 最后更新时间,为UNIX格式的时间戳 | |||||
| author | object | 项目创建者 | |||||
| -- name | string | 用户名,也是用户标识 | |||||
| category | object | 项目类别 | |||||
| -- id | int | 项目类型id | |||||
| -- name | string | 项目类型名称 | |||||
| language | object | 项目语言 | |||||
| -- id | int | 项目语言id | |||||
| -- name | string | 项目语言名称 | |||||
| > 返回的JSON示例: | |||||
| ```json | |||||
| { | |||||
| "total_count": 3096, | |||||
| "projects": [ | |||||
| { | |||||
| "id": 1400794, | |||||
| "repo_id": 1402452, | |||||
| "identifier": "cscw_2021_sponsor", | |||||
| "name": "Sponsor机制下的开源贡献", | |||||
| "description": "CSCW 2021 sponsor机制研究", | |||||
| "visits": 5, | |||||
| "praises_count": 0, | |||||
| "forked_count": 0, | |||||
| "is_public": true, | |||||
| "mirror_url": null, | |||||
| "type": 0, | |||||
| "last_update_time": 1611971671, | |||||
| "time_ago": "2天前", | |||||
| "forked_from_project_id": null, | |||||
| "open_devops": false, | |||||
| "platform": "forge", | |||||
| "author": { | |||||
| "name": "张迅晖", | |||||
| "login": "Nigel", | |||||
| "image_url": "images/avatars/User/3675?t=1611832880" | |||||
| }, | |||||
| "category": { | |||||
| "id": 13, | |||||
| "name": "云计算和大数据" | |||||
| }, | |||||
| "language": { | |||||
| "id": 34, | |||||
| "name": "Python3.6" | |||||
| } | |||||
| } | |||||
| ] | |||||
| } | |||||
| ``` | |||||
| <aside class="success"> | |||||
| Remember — a happy kitten is an authenticated kitten! | |||||
| </aside> | |||||
| ## 推荐项目 | |||||
| 获取推荐项目列表 | |||||
| > 示例: | |||||
| ```shell | |||||
| curl -X GET \ | |||||
| http://localhost:3000/api/projects/recommend | jq | |||||
| ``` | |||||
| ```javascript | |||||
| await octokit.request('GET /api/projects/recommend.json') | |||||
| ``` | |||||
| ### HTTP 请求 | |||||
| `GET api/projects/recommend` | |||||
| ### 返回字段说明 | |||||
| 参数 | 类型 | 字段说明 | |||||
| --------- | ----------- | ----------- | |||||
| total_count |int |项目总条数 | |||||
| id |string |项目id | |||||
| name |string|项目名称 | |||||
| description |string|项目简介 | |||||
| visits |int|流量数 | |||||
| forked_count |int|被fork的数量 | |||||
| praises_count |int|star数量 | |||||
| is_public |boolean|是否公开, true:公开,false:未公开 | |||||
| mirror_url |string|镜像url | |||||
| last_update_time|int|最后更新时间,为UNIX格式的时间戳 | |||||
| author |object|项目创建者 | |||||
| -- name |string|用户名,也是用户标识 | |||||
| category |object|项目类别 | |||||
| -- id |int|项目类型id | |||||
| -- name |string|项目类型名称 | |||||
| language |object|项目语言 | |||||
| -- id |int|项目语言id | |||||
| -- name |string|项目语言名称 | |||||
| > 返回的JSON示例: | |||||
| ```json | |||||
| [ | |||||
| { | |||||
| "id": 20, | |||||
| "repo_id": 2, | |||||
| "identifier": "PNAekinmH", | |||||
| "name": "FNILL", | |||||
| "visits": 13567, | |||||
| "author": { | |||||
| "name": "王一达", | |||||
| "login": "wangyida", | |||||
| "image_url": "avatars/User/b" | |||||
| }, | |||||
| "category": { | |||||
| "id": 8, | |||||
| "name": "其他" | |||||
| } | |||||
| } | |||||
| ] | |||||
| ``` | |||||
| <aside class="success"> | |||||
| Remember — a happy kitten is an authenticated kitten! | |||||
| </aside> | |||||
| ## 项目导航 | |||||
| 获取项目导航信息 | |||||
| > 示例: | |||||
| ```shell | |||||
| curl -X GET \ | |||||
| http://localhost:3000/api/yystopf/ceshi/menu_list | jq | |||||
| ``` | |||||
| ```javascript | |||||
| await octokit.request('GET /api/yystopf/ceshi/menu_list') | |||||
| ``` | |||||
| ### HTTP 请求 | |||||
| `GET api/:owner/:repo/menu_list` | |||||
| ### 请求参数 | |||||
| 参数 | 必选 | 默认 | 类型 | 字段说明 | |||||
| --------- | ------- | ------- | -------- | ---------- | |||||
| owner |是| |string |用户登录名 | |||||
| repo |是| |string |项目标识identifier | |||||
| ### 返回字段说明 | |||||
| 参数 | 类型 | 字段说明 | |||||
| --------- | ----------- | ----------- | |||||
| menu_name |string|导航名称, home:主页,code:代码库,issues:疑修,pulls:合并请求,devops:工作流,versions:里程碑,activity:动态,setting:仓库设置 | |||||
| > 返回的JSON示例: | |||||
| ```json | |||||
| [ | |||||
| { | |||||
| "menu_name": "home" | |||||
| }, | |||||
| { | |||||
| "menu_name": "code" | |||||
| }, | |||||
| { | |||||
| "menu_name": "pulls" | |||||
| }, | |||||
| { | |||||
| "menu_name": "activity" | |||||
| } | |||||
| ] | |||||
| ``` | |||||
| ## 项目主页 | |||||
| 获取项目主页信息 | |||||
| > 示例: | |||||
| ```shell | |||||
| curl -X GET \ | |||||
| http://localhost:3000/api/jasder/forgeplus/about | jq | |||||
| ``` | |||||
| ```javascript | |||||
| await octokit.request('GET /api/jasder/forgeplus/about') | |||||
| ``` | |||||
| ### HTTP 请求 | |||||
| `GET api/:owner/:repo/about` | |||||
| ### 请求参数 | |||||
| 参数 | 必选 | 默认 | 类型 | 字段说明 | |||||
| --------- | ------- | ------- | -------- | ---------- | |||||
| owner |是| |string |用户登录名 | |||||
| repo |是| |string |项目标识identifier | |||||
| ### 返回字段说明 | |||||
| 参数 | 类型 | 字段说明 | |||||
| --------- | ----------- | ----------- | |||||
| identifier |string|project's identifier | |||||
| content |string|主页内容 | |||||
| attachments |array|附件 | |||||
| > 返回的JSON示例: | |||||
| ```json | |||||
| { | |||||
| "content": "", | |||||
| "identifier": "forgeplus", | |||||
| attachments: [] | |||||
| } | |||||
| ``` | |||||
| <aside class="success"> | |||||
| Remember — a happy kitten is an authenticated kitten! | |||||
| </aside> | |||||
| ## 项目模块信息 | |||||
| 项目模块信息 | |||||
| > 示例: | |||||
| ```shell | |||||
| curl -X GET \ | |||||
| http://localhost:3000/api/yystopf/ceshi/project_units.json | |||||
| ``` | |||||
| ```javascript | |||||
| await octokit.request('GET /api/yystopf/ceshi/project_units') | |||||
| ``` | |||||
| ### HTTP 请求 | |||||
| `GET /api/yystopf/ceshi/project_units` | |||||
| ### 返回字段说明: | |||||
| 参数 | 类型 | 字段说明 | |||||
| --------- | ----------- | ----------- | |||||
| |type |string|模块名称 | | |||||
| > 返回的JSON示例: | |||||
| ```json | |||||
| [ | |||||
| { | |||||
| "type": "code" | |||||
| }, | |||||
| { | |||||
| "type": "pulls" | |||||
| }, | |||||
| { | |||||
| "type": "issues" | |||||
| } | |||||
| ] | |||||
| ``` | |||||
| ## 更改项目模块展示 | |||||
| 更改项目模块展示 | |||||
| > 示例: | |||||
| ```shell | |||||
| curl -X POST \ | |||||
| -H "accept: application/json" \ | |||||
| -H "Content-Type: application/json" \ | |||||
| -d "{ \"unit_typs\": [\"code\", \"pulls\"]}" \ | |||||
| http://localhost:3000/api/yystopf/ceshi/project_units.json | |||||
| ``` | |||||
| ```javascript | |||||
| await octokit.request('POST /api/yystopf/ceshi/project_units') | |||||
| ``` | |||||
| ### HTTP 请求 | |||||
| `POST /api/yystopf/ceshi/project_units` | |||||
| ### 请求参数 | |||||
| 参数 | 必选 | 默认 | 类型 | 字段说明 | |||||
| --------- | ------- | ------- | -------- | ---------- | |||||
| |unit_types |是| |array | 项目模块内容, 支持以下参数:code:代码库,issues:疑修,pulls:合并请求,devops:工作流,versions:里程碑 | | |||||
| ### 返回字段说明: | |||||
| 参数 | 类型 | 字段说明 | |||||
| --------- | ----------- | ----------- | |||||
| |status |int|返回状态, 0: 表示操作成功 | | |||||
| |message |string|返回信息说明| | |||||
| > 返回的JSON示例: | |||||
| ```json | |||||
| { | |||||
| "status": 0, | |||||
| "message": "success" | |||||
| } | |||||
| ``` | |||||
| ## 创建项目 | |||||
| 创建项目 | |||||
| > 示例: | |||||
| ```shell | |||||
| curl -X POST \ | |||||
| -d "user_id=36401" \ | |||||
| -d "name=hnfl_demo" \ | |||||
| -d "description=my first project" \ | |||||
| -d "repository_name=hnfl_demo" \ | |||||
| -d "project_category_id=1" \ | |||||
| -d "project_language_id=2" \ | |||||
| -d "ignore_id=2" \ | |||||
| -d "license_id=1" \ | |||||
| http://localhost:3000/api/projects.json | |||||
| ``` | |||||
| ```javascript | |||||
| await octokit.request('GET /api/projects.json') | |||||
| ``` | |||||
| ### HTTP 请求 | |||||
| `POST api/projects` | |||||
| ### 请求参数 | |||||
| 参数 | 必选 | 默认 | 类型 | 字段说明 | |||||
| --------- | ------- | ------- | -------- | ---------- | |||||
| |user_id |是| |int |用户id或者组织id | | |||||
| |name |是| |string |项目名称 | | |||||
| |description |是| |string |项目描述 | | |||||
| |repository_name |是| |string |仓库名称, 只含有数字、字母、下划线不能以下划线开头和结尾,且唯一 | | |||||
| |project_category_id|是| |int |项目类别id | | |||||
| |project_language_id|是| |int |项目语言id | | |||||
| |ignore_id |否| |int |gitignore相关id | | |||||
| |license_id |否| |int |开源许可证id | | |||||
| |private |否| |boolean|项目是否私有, true:为私有,false: 公开,默认为公开 | | |||||
| ### 返回字段说明 | |||||
| 参数 | 类型 | 字段说明 | |||||
| --------- | ----------- | ----------- | |||||
| |id |int |id | | |||||
| |name |string|项目名称| | |||||
| > 返回的JSON示例: | |||||
| ```json | |||||
| { | |||||
| "id": 3240, | |||||
| "name": "好项目" | |||||
| } | |||||
| ``` | |||||
| ## 创建镜像项目 | |||||
| 创建镜像项目 | |||||
| > 示例: | |||||
| ```shell | |||||
| curl -X POST \ | |||||
| -d "user_id=36408" \ | |||||
| -d "clone_addr=https://gitea.com/mx8090alex/golden.git" \ | |||||
| -d "name=golden_mirror1" \ | |||||
| -d "description=golden_mirror" \ | |||||
| -d "project_category_id=1" \ | |||||
| -d "project_language_id=2" \ | |||||
| http://localhost:3000/api/projects/migrate.json | |||||
| ``` | |||||
| ```javascript | |||||
| await octokit.request('GET /api/projects/migrate.json') | |||||
| ``` | |||||
| ### HTTP 请求 | |||||
| `POST api/projects/migrate.json` | |||||
| ### 请求参数 | |||||
| 参数 | 必选 | 默认 | 类型 | 字段说明 | |||||
| --------- | ------- | ------- | -------- | ---------- | |||||
| |user_id |是| |int |用户id或者组织id | | |||||
| |name |是| |string |项目名称 | | |||||
| |clone_addr |是| |string |镜像项目clone地址 | | |||||
| |description |否| |string |项目描述 | | |||||
| |repository_name |是| |string |仓库名称, 只含有数字、字母、下划线不能以下划线开头和结尾,且唯一 | | |||||
| |project_category_id|是| |int |项目类别id | | |||||
| |project_language_id|是| |int |项目语言id | | |||||
| |is_mirror |否| |boolean|是否设置为镜像, true:是, false:否,默认为否 | | |||||
| |auth_username |否| |string|镜像源仓库的登录用户名 | | |||||
| |auth_password |否| |string|镜像源仓库的登录秘密 | | |||||
| |private |否| |boolean|项目是否私有, true:为私有,false: 非私有,默认为公开 | | |||||
| ### 返回字段说明 | |||||
| 参数 | 类型 | 字段说明 | |||||
| --------- | ----------- | ----------- | |||||
| |id |int |id | | |||||
| |name |string|项目名称| | |||||
| > 返回的JSON示例: | |||||
| ```json | |||||
| { | |||||
| "id": 3241, | |||||
| "name": "这是一个镜像项目" | |||||
| } | |||||
| ``` | |||||
| ## 同步镜像 | |||||
| 手动同步镜像 | |||||
| > 示例: | |||||
| ```shell | |||||
| curl -X POST http://localhost:3000/api/repositories/1244/sync_mirror.json | |||||
| ``` | |||||
| ```javascript | |||||
| await octokit.request('POST /api/repositories/1244/sync_mirror.json') | |||||
| ``` | |||||
| ### HTTP 请求 | |||||
| `POST api/repositories/:id/sync_mirror.json` | |||||
| ### 请求参数 | |||||
| 参数 | 必选 | 默认 | 类型 | 字段说明 | |||||
| --------- | ------- | ------- | -------- | ---------- | |||||
| |id |是| |int |仓库id | | |||||
| ### 返回字段说明 | |||||
| 参数 | 类型 | 字段说明 | |||||
| --------- | ----------- | ----------- | |||||
| |status |int |状态码, 0:标识请求成功 | | |||||
| |message |string|服务端返回的信息说明| | |||||
| > 返回的JSON示例: | |||||
| ```json | |||||
| { | |||||
| "status": 0, | |||||
| "message": "success" | |||||
| } | |||||
| ``` | |||||
| ## Fork项目 | |||||
| fork项目 | |||||
| > 示例: | |||||
| ```shell | |||||
| curl -X POST http://localhost:3000/api/jasder/forgeplus/forks.json | |||||
| ``` | |||||
| ```javascript | |||||
| await octokit.request('POST /api/jaser/jasder_test/forks.json') | |||||
| ``` | |||||
| ### HTTP 请求 | |||||
| `POST api/:owner/:repo/forks.json` | |||||
| ### 请求参数 | |||||
| 参数 | 必选 | 默认 | 类型 | 字段说明 | |||||
| --------- | ------- | ------- | -------- | ---------- | |||||
| |owner |是| |string |用户登录名 | | |||||
| |repo |是| |string |项目标识identifier | | |||||
| ### 返回字段说明 | |||||
| 参数 | 类型 | 字段说明 | |||||
| --------- | ----------- | ----------- | |||||
| |id |int |项目id | | |||||
| |identifier |string|项目标识| | |||||
| > 返回的JSON示例: | |||||
| ```json | |||||
| { | |||||
| "id": 3290, | |||||
| "identifier": "newadm" | |||||
| } | |||||
| ``` | |||||
| ## 用户管理的组织列表 | |||||
| 用户管理的组织列表 | |||||
| > 示例: | |||||
| ```shell | |||||
| curl -X GET \ | |||||
| http://localhost:3000/api/ceshi1/ceshi_repo1/applied_transfer_projects/organizations.json | jq | |||||
| ``` | |||||
| ```javascript | |||||
| await octokit.request('GET /api/:owner/:repo/applied_transfer_projects/organizations') | |||||
| ``` | |||||
| ### HTTP 请求 | |||||
| `GET api/:owner/:repo/applied_transfer_projects/organizations` | |||||
| ### 请求参数 | |||||
| 参数 | 必选 | 默认 | 类型 | 字段说明 | |||||
| --------- | ------- | ------- | -------- | ---------- | |||||
| owner |是| |string |用户登录名 | |||||
| repo |是| |string |项目标识identifier | |||||
| ### 返回字段说明 | |||||
| 参数 | 类型 | 字段说明 | |||||
| --------- | ----------- | ----------- | |||||
| name |string|组织标识 | |||||
| nickname |string|组织名称 | |||||
| description|string|组织描述 | |||||
| avatar_url|string|组织头像 | |||||
| > 返回的JSON示例: | |||||
| ```json | |||||
| { | |||||
| "total_count": 3, | |||||
| "organizations": [ | |||||
| { | |||||
| "id": 9, | |||||
| "name": "ceshi_org", | |||||
| "nickname": "测试组织", | |||||
| "description": "测试组织", | |||||
| "avatar_url": "images/avatars/Organization/9?t=1612706073" | |||||
| }, | |||||
| { | |||||
| "id": 51, | |||||
| "name": "ceshi", | |||||
| "nickname": "测试组织哈哈哈", | |||||
| "description": "23212312", | |||||
| "avatar_url": "images/avatars/Organization/51?t=1618800723" | |||||
| }, | |||||
| { | |||||
| "id": 52, | |||||
| "name": "ceshi1", | |||||
| "nickname": "身份卡手动阀", | |||||
| "description": "1231手动阀是的", | |||||
| "avatar_url": "images/avatars/Organization/52?t=1618805056" | |||||
| } | |||||
| ] | |||||
| } | |||||
| ``` | |||||
| ## 迁移项目 | |||||
| 迁移项目,edit接口is_transfering为true表示正在迁移 | |||||
| > 示例: | |||||
| ```shell | |||||
| curl -X POST http://localhost:3000/api/ceshi1/ceshi_repo1/applied_transfer_projects.json | |||||
| ``` | |||||
| ```javascript | |||||
| await octokit.request('POST /api/:owner/:repo/applied_transfer_projects.json') | |||||
| ``` | |||||
| ### HTTP 请求 | |||||
| `POST /api/:owner/:repo/applied_transfer_projects.json` | |||||
| ### 请求参数 | |||||
| 参数 | 必选 | 默认 | 类型 | 字段说明 | |||||
| --------- | ------- | ------- | -------- | ---------- | |||||
| |owner |是| |string |用户登录名 | | |||||
| |repo |是| |string |项目标识identifier | | |||||
| |owner_name|是| |string |迁移对象标识 | | |||||
| ### 返回字段说明 | |||||
| 参数 | 类型 | 字段说明 | |||||
| --------- | ----------- | ----------- | |||||
| |id |int |项目id | | |||||
| |status |string |项目迁移状态,canceled:取消,common:正在迁移, accept:已接受,refuse:已拒绝| | |||||
| |time_ago |string |项目迁移创建的时间 | | |||||
| |project.id |int |迁移项目的id | | |||||
| |project.identifier |string |迁移项目的标识 | | |||||
| |project.name |string |迁移项目的名称 | | |||||
| |project.description |string |迁移项目的描述 | | |||||
| |project.is_public |bool |迁移项目是否公开 | | |||||
| |project.owner.id |bool |迁移项目拥有者id | | |||||
| |project.owner.type |string |迁移项目拥有者类型 | | |||||
| |project.owner.name |string |迁移项目拥有者昵称 | | |||||
| |project.owner.login |string |迁移项目拥有者标识 | | |||||
| |project.owner.image_url |string |迁移项目拥有者头像 | | |||||
| |user.id |int |迁移创建者的id | | |||||
| |user.type |string |迁移创建者的类型 | | |||||
| |user.name |string |迁移创建者的名称 | | |||||
| |user.login |string |迁移创建者的标识 | | |||||
| |user.image_url |string |迁移创建者头像 | | |||||
| |owner.id |int |迁移接受者的id | | |||||
| |owner.type |string |迁移接受者的类型 | | |||||
| |owner.name |string |迁移接受者的名称 | | |||||
| |owner.login |string |迁移接受者的标识 | | |||||
| |owner.image_url |string |迁移接受者头像 | | |||||
| > 返回的JSON示例: | |||||
| ```json | |||||
| { | |||||
| "project": { | |||||
| "id": 86, | |||||
| "identifier": "ceshi_repo1", | |||||
| "name": "测试项目啊1", | |||||
| "description": "二十多", | |||||
| "is_public": true, | |||||
| "owner": { | |||||
| "id": 52, | |||||
| "type": "Organization", | |||||
| "name": "身份卡手动阀", | |||||
| "login": "ceshi1", | |||||
| "image_url": "images/avatars/Organization/52?t=1618805056" | |||||
| } | |||||
| }, | |||||
| "user": { | |||||
| "id": 6, | |||||
| "type": "User", | |||||
| "name": "yystopf", | |||||
| "login": "yystopf", | |||||
| "image_url": "system/lets/letter_avatars/2/Y/241_125_89/120.png" | |||||
| }, | |||||
| "owner": { | |||||
| "id": 9, | |||||
| "type": "Organization", | |||||
| "name": "测试组织", | |||||
| "login": "ceshi_org", | |||||
| "image_url": "images/avatars/Organization/9?t=1612706073" | |||||
| }, | |||||
| "id": 4, | |||||
| "status": "common", | |||||
| "created_at": "2021-04-26 09:54", | |||||
| "time_ago": "1分钟前" | |||||
| } | |||||
| ``` | |||||
| ## 取消迁移项目 | |||||
| 迁移项目,edit接口is_transfering为true表示正在迁移 | |||||
| > 示例: | |||||
| ```shell | |||||
| curl -X POST http://localhost:3000/api/ceshi1/ceshi_repo1/applied_transfer_projects/cancel.json | |||||
| ``` | |||||
| ```javascript | |||||
| await octokit.request('POST /api/:owner/:repo/applied_transfer_projects/cancel.json') | |||||
| ``` | |||||
| ### HTTP 请求 | |||||
| `POST /api/:owner/:repo/applied_transfer_projects/cancel.json` | |||||
| ### 请求参数 | |||||
| 参数 | 必选 | 默认 | 类型 | 字段说明 | |||||
| --------- | ------- | ------- | -------- | ---------- | |||||
| |owner |是| |string |用户登录名 | | |||||
| |repo |是| |string |项目标识identifier | | |||||
| ### 返回字段说明 | |||||
| 参数 | 类型 | 字段说明 | |||||
| --------- | ----------- | ----------- | |||||
| |id |int |迁移id | | |||||
| |status |string |迁移状态,canceled:取消,common:正在迁移, accept:已接受,refuse:已拒绝| | |||||
| |time_ago |string |迁移创建的时间 | | |||||
| |project.id |int |迁移项目的id | | |||||
| |project.identifier |string |迁移项目的标识 | | |||||
| |project.name |string |迁移项目的名称 | | |||||
| |project.description |string |迁移项目的描述 | | |||||
| |project.is_public |bool |迁移项目是否公开 | | |||||
| |project.owner.id |bool |迁移项目拥有者id | | |||||
| |project.owner.type |string |迁移项目拥有者类型 | | |||||
| |project.owner.name |string |迁移项目拥有者昵称 | | |||||
| |project.owner.login |string |迁移项目拥有者标识 | | |||||
| |project.owner.image_url |string |迁移项目拥有者头像 | | |||||
| |user.id |int |迁移创建者的id | | |||||
| |user.type |string |迁移创建者的类型 | | |||||
| |user.name |string |迁移创建者的名称 | | |||||
| |user.login |string |迁移创建者的标识 | | |||||
| |user.image_url |string |迁移创建者头像 | | |||||
| |owner.id |int |迁移接受者的id | | |||||
| |owner.type |string |迁移接受者的类型 | | |||||
| |owner.name |string |迁移接受者的名称 | | |||||
| |owner.login |string |迁移接受者的标识 | | |||||
| |owner.image_url |string |迁移接受者头像 | | |||||
| > 返回的JSON示例: | |||||
| ```json | |||||
| { | |||||
| "project": { | |||||
| "id": 86, | |||||
| "identifier": "ceshi_repo1", | |||||
| "name": "测试项目啊1", | |||||
| "description": "二十多", | |||||
| "is_public": true, | |||||
| "owner": { | |||||
| "id": 52, | |||||
| "type": "Organization", | |||||
| "name": "身份卡手动阀", | |||||
| "login": "ceshi1", | |||||
| "image_url": "images/avatars/Organization/52?t=1618805056" | |||||
| } | |||||
| }, | |||||
| "user": { | |||||
| "id": 6, | |||||
| "type": "User", | |||||
| "name": "yystopf", | |||||
| "login": "yystopf", | |||||
| "image_url": "system/lets/letter_avatars/2/Y/241_125_89/120.png" | |||||
| }, | |||||
| "owner": { | |||||
| "id": 9, | |||||
| "type": "Organization", | |||||
| "name": "测试组织", | |||||
| "login": "ceshi_org", | |||||
| "image_url": "images/avatars/Organization/9?t=1612706073" | |||||
| }, | |||||
| "id": 4, | |||||
| "status": "common", | |||||
| "created_at": "2021-04-26 09:54", | |||||
| "time_ago": "1分钟前" | |||||
| } | |||||
| ``` | |||||
| @@ -1240,11 +1240,11 @@ await octokit.request('GET /api/yystopf/ceshi/webhooks/3/edit.json') | |||||
| |delete|分支或标签删除| | |delete|分支或标签删除| | ||||
| |fork|仓库被fork| | |fork|仓库被fork| | ||||
| |push|git仓库推送| | |push|git仓库推送| | ||||
| |issue|易修已打开、已关闭、已重新打开或编辑| | |||||
| |issue_assign|易修被指派| | |||||
| |issue_label|易修标签被更新或删除| | |||||
| |issue_milestone|易修被收入里程碑| | |||||
| |issue_comment|易修评论| | |||||
| |issue|疑修已打开、已关闭、已重新打开或编辑| | |||||
| |issue_assign|疑修被指派| | |||||
| |issue_label|疑修标签被更新或删除| | |||||
| |issue_milestone|疑修被收入里程碑| | |||||
| |issue_comment|疑修评论| | |||||
| |pull_request|合并请求| | |pull_request|合并请求| | ||||
| |pull_request_assign|合并请求被指派| | |pull_request_assign|合并请求被指派| | ||||
| |pull_request_label|合并请求被贴上标签| | |pull_request_label|合并请求被贴上标签| | ||||
| @@ -1337,11 +1337,11 @@ await octokit.request('POST /api/yystopf/ceshi/webhooks.json') | |||||
| |delete|分支或标签删除| | |delete|分支或标签删除| | ||||
| |fork|仓库被fork| | |fork|仓库被fork| | ||||
| |push|git仓库推送| | |push|git仓库推送| | ||||
| |issue|易修已打开、已关闭、已重新打开或编辑| | |||||
| |issue_assign|易修被指派| | |||||
| |issue_label|易修标签被更新或删除| | |||||
| |issue_milestone|易修被收入里程碑| | |||||
| |issue_comment|易修评论| | |||||
| |issue|疑修已打开、已关闭、已重新打开或编辑| | |||||
| |issue_assign|疑修被指派| | |||||
| |issue_label|疑修标签被更新或删除| | |||||
| |issue_milestone|疑修被收入里程碑| | |||||
| |issue_comment|疑修评论| | |||||
| |pull_request|合并请求| | |pull_request|合并请求| | ||||
| |pull_request_assign|合并请求被指派| | |pull_request_assign|合并请求被指派| | ||||
| |pull_request_label|合并请求被贴上标签| | |pull_request_label|合并请求被贴上标签| | ||||
| @@ -1440,11 +1440,11 @@ await octokit.request('PATCH /api/yystopf/ceshi/webhooks/7.json') | |||||
| |delete|分支或标签删除| | |delete|分支或标签删除| | ||||
| |fork|仓库被fork| | |fork|仓库被fork| | ||||
| |push|git仓库推送| | |push|git仓库推送| | ||||
| |issue|易修已打开、已关闭、已重新打开或编辑| | |||||
| |issue_assign|易修被指派| | |||||
| |issue_label|易修标签被更新或删除| | |||||
| |issue_milestone|易修被收入里程碑| | |||||
| |issue_comment|易修评论| | |||||
| |issue|疑修已打开、已关闭、已重新打开或编辑| | |||||
| |issue_assign|疑修被指派| | |||||
| |issue_label|疑修标签被更新或删除| | |||||
| |issue_milestone|疑修被收入里程碑| | |||||
| |issue_comment|疑修评论| | |||||
| |pull_request|合并请求| | |pull_request|合并请求| | ||||
| |pull_request_assign|合并请求被指派| | |pull_request_assign|合并请求被指派| | ||||
| |pull_request_label|合并请求被贴上标签| | |pull_request_label|合并请求被贴上标签| | ||||
| @@ -90,13 +90,13 @@ await octokit.request('GET /api/users/:login/messages.json') | |||||
| #### 消息来源source字段说明 | #### 消息来源source字段说明 | ||||
| 类型|说明 | 类型|说明 | ||||
| --------- | ----------- | --------- | ----------- | ||||
| |IssueAssigned | 有新指派给我的易修 | | |||||
| |IssueAssignerExpire | 我负责的易修截止日期到达最后一天 | | |||||
| |IssueAtme | 在易修中@我 | | |||||
| |IssueChanged | 我创建或负责的易修状态变更 | | |||||
| |IssueCreatorExpire | 我创建的易修截止日期到达最后一天 | | |||||
| |IssueDeleted | 我创建或负责的易修删除 | | |||||
| |IssueJournal | 我创建或负责的易修有新的评论 | | |||||
| |IssueAssigned | 有新指派给我的疑修 | | |||||
| |IssueAssignerExpire | 我负责的疑修截止日期到达最后一天 | | |||||
| |IssueAtme | 在疑修中@我 | | |||||
| |IssueChanged | 我创建或负责的疑修状态变更 | | |||||
| |IssueCreatorExpire | 我创建的疑修截止日期到达最后一天 | | |||||
| |IssueDeleted | 我创建或负责的疑修删除 | | |||||
| |IssueJournal | 我创建或负责的疑修有新的评论 | | |||||
| |LoginIpTip | 登录异常提示 | | |LoginIpTip | 登录异常提示 | | ||||
| |OrganizationJoined | 账号被拉入组织 | | |OrganizationJoined | 账号被拉入组织 | | ||||
| |OrganizationLeft | 账号被移出组织 | | |OrganizationLeft | 账号被移出组织 | | ||||
| @@ -104,7 +104,7 @@ await octokit.request('GET /api/users/:login/messages.json') | |||||
| |ProjectDeleted | 我关注的仓库被删除 | | |ProjectDeleted | 我关注的仓库被删除 | | ||||
| |ProjectFollowed | 我管理的仓库被关注 | | |ProjectFollowed | 我管理的仓库被关注 | | ||||
| |ProjectForked | 我管理的仓库被复刻 | | |ProjectForked | 我管理的仓库被复刻 | | ||||
| |ProjectIssue | 我管理/关注的仓库有新的易修 | | |||||
| |ProjectIssue | 我管理/关注的仓库有新的疑修 | | |||||
| |ProjectJoined | 账号被拉入项目 | | |ProjectJoined | 账号被拉入项目 | | ||||
| |ProjectLeft | 账号被移出项目 | | |ProjectLeft | 账号被移出项目 | | ||||
| |ProjectMemberJoined | 我管理的仓库有成员加入 | | |ProjectMemberJoined | 我管理的仓库有成员加入 | | ||||
| @@ -250,7 +250,7 @@ await octokit.request('POST /api/users/:login/messages.json') | |||||
| --------- | ----------- | ----------- | --------- | ----------- | ----------- | ||||
| |type | string | 消息类型 | | |type | string | 消息类型 | | ||||
| |receivers_login | array | 需要发送消息的用户名数组| | |receivers_login | array | 需要发送消息的用户名数组| | ||||
| |atmeable_type | string | atme消息对象,是从哪里@我的,比如评论:Journal、易修:Issue、合并请求:PullRequest | | |||||
| |atmeable_type | string | atme消息对象,是从哪里@我的,比如评论:Journal、疑修:Issue、合并请求:PullRequest | | |||||
| |atmeable_id | integer | atme消息对象id | | |atmeable_id | integer | atme消息对象id | | ||||
| > 请求的JSON示例: | > 请求的JSON示例: | ||||
| @@ -469,7 +469,7 @@ await octokit.request('GET /api/template_message_settings.json') | |||||
| "total_settings_count": 4, | "total_settings_count": 4, | ||||
| "settings": [ | "settings": [ | ||||
| { | { | ||||
| "name": "易修被指派", | |||||
| "name": "疑修被指派", | |||||
| "key": "IssueAssigned", | "key": "IssueAssigned", | ||||
| "notification_disabled": true, | "notification_disabled": true, | ||||
| "email_disabled": false | "email_disabled": false | ||||
| @@ -488,7 +488,7 @@ await octokit.request('GET /api/template_message_settings.json') | |||||
| "total_settings_count": 4, | "total_settings_count": 4, | ||||
| "settings": [ | "settings": [ | ||||
| { | { | ||||
| "name": "有新的易修", | |||||
| "name": "有新的疑修", | |||||
| "key": "Issue", | "key": "Issue", | ||||
| "notification_disabled": true, | "notification_disabled": true, | ||||
| "email_disabled": false | "email_disabled": false | ||||
| @@ -875,7 +875,7 @@ await octokit.request('GET /api/users/:login/statistics/activity.json') | |||||
| 参数 | 类型 | 字段说明 | 参数 | 类型 | 字段说明 | ||||
| --------- | ----------- | ----------- | --------- | ----------- | ----------- | ||||
| |dates |array |时间 | | |dates |array |时间 | | ||||
| |issues_count |array |易修数量| | |||||
| |issues_count |array |疑修数量| | |||||
| |pull_requests_count |array |合并请求数量| | |pull_requests_count |array |合并请求数量| | ||||
| |commtis_count |array |贡献数量| | |commtis_count |array |贡献数量| | ||||
| @@ -1084,7 +1084,7 @@ await octokit.request('GET /api/users/:login/project_trends.json') | |||||
| 参数 | 类型 | 字段说明 | 参数 | 类型 | 字段说明 | ||||
| --------- | ----------- | ----------- | --------- | ----------- | ----------- | ||||
| |total_count |int |所选时间内的总动态数 | | |total_count |int |所选时间内的总动态数 | | ||||
| |project_trends.trend_type |string|动态类型,Issue:易修,VersionRelease:版本发布,PullRequest:合并请求| | |||||
| |project_trends.trend_type |string|动态类型,Issue:疑修,VersionRelease:版本发布,PullRequest:合并请求| | |||||
| |project_trends.action_type |string|操作类型| | |project_trends.action_type |string|操作类型| | ||||
| |project_trends.trend_id |integer|动态id| | |project_trends.trend_id |integer|动态id| | ||||
| |project_trends.user_name |string|用户名称| | |project_trends.user_name |string|用户名称| | ||||
| @@ -17,15 +17,15 @@ class MessageTemplate < ApplicationRecord | |||||
| def self.build_init_data | def self.build_init_data | ||||
| self.create(type: 'MessageTemplate::FollowedTip', sys_notice: '<b>{nickname}</b> 关注了你', notification_url: '{baseurl}/{login}') | self.create(type: 'MessageTemplate::FollowedTip', sys_notice: '<b>{nickname}</b> 关注了你', notification_url: '{baseurl}/{login}') | ||||
| email_html = File.read("#{email_template_html_dir}/issue_assigned.html") | email_html = File.read("#{email_template_html_dir}/issue_assigned.html") | ||||
| self.create(type: 'MessageTemplate::IssueAssigned', sys_notice: '{nickname1}在 <b>{nickname2}/{repository}</b> 指派给你一个易修:<b>{title}</b>', notification_url: '{baseurl}/{owner}/{identifier}/issues/{id}', email: email_html, email_title: 'GitLink: {nickname1} 在 {nickname2}/{repository} 指派给你一个易修') | |||||
| self.create(type: 'MessageTemplate::IssueAssignerExpire', sys_notice: '您负责的易修 <b>{title}</b> 已临近截止日期,请尽快处理', notification_url: '{baseurl}/{owner}/{identifier}/issues/{id}') | |||||
| self.create(type: 'MessageTemplate::IssueAtme', sys_notice: '<b>{nickname}</b> 在易修 <b>{title}</b> 中@我', notification_url: '{baseurl}/{owner}/{identifier}/issues/{id}') | |||||
| self.create(type: 'MessageTemplate::IssueAssigned', sys_notice: '{nickname1}在 <b>{nickname2}/{repository}</b> 指派给你一个疑修:<b>{title}</b>', notification_url: '{baseurl}/{owner}/{identifier}/issues/{id}', email: email_html, email_title: 'GitLink: {nickname1} 在 {nickname2}/{repository} 指派给你一个疑修') | |||||
| self.create(type: 'MessageTemplate::IssueAssignerExpire', sys_notice: '您负责的疑修 <b>{title}</b> 已临近截止日期,请尽快处理', notification_url: '{baseurl}/{owner}/{identifier}/issues/{id}') | |||||
| self.create(type: 'MessageTemplate::IssueAtme', sys_notice: '<b>{nickname}</b> 在疑修 <b>{title}</b> 中@我', notification_url: '{baseurl}/{owner}/{identifier}/issues/{id}') | |||||
| email_html = File.read("#{email_template_html_dir}/issue_changed.html") | email_html = File.read("#{email_template_html_dir}/issue_changed.html") | ||||
| self.create(type: 'MessageTemplate::IssueChanged', sys_notice: '在项目 <b>{nickname2}/{repository}</b> 的易修 <b>{title}</b> 中:{ifassigner}{nickname1}将负责人从 <b>{assigner1}</b> 修改为 <b>{assigner2}</b> {endassigner}{ifstatus}{nickname1}将状态从 <b>{status1}</b> 修改为 <b>{status2}</b> {endstatus}{iftracker}{nickname1}将类型从 <b>{tracker1}</b> 修改为 <b>{tracker2}</b> {endtracker}{ifpriority}{nickname1}将优先级从 <b>{priority1}</b> 修改为 <b>{priority2}</b> {endpriority}{ifmilestone}{nickname1}将里程碑从 <b>{milestone1}</b> 修改为 <b>{milestone2}</b> {endmilestone}{iftag}{nickname1}将标记从 <b>{tag1}</b> 修改为 <b>{tag2}</b> {endtag}{ifdoneratio}{nickname1}将完成度从 <b>{doneratio1}</b> 修改为 <b>{doneratio2}</b> {enddoneratio}{ifbranch}{nickname1}将指定分支从 <b>{branch1}</b> 修改为 <b>{branch2}</b> {endbranch}{ifstartdate}{nickname1}将开始日期从 <b>{startdate1}</b> 修改为 <b>{startdate2}</b> {endstartdate}{ifduedate}{nickname1}将结束日期从 <b>{duedate1}</b> 修改为 <b>{duedate2}</b> {endduedate}', email: email_html, email_title: 'GitLink: 易修 {title} 有状态变更', notification_url: '{baseurl}/{owner}/{identifier}/issues/{id}') | |||||
| self.create(type: 'MessageTemplate::IssueCreatorExpire', sys_notice: '您发布的易修 <b>{title}</b> 已临近截止日期,请尽快处理', notification_url: '{baseurl}/{owner}/{identifier}/issues/{id}') | |||||
| self.create(type: 'MessageTemplate::IssueChanged', sys_notice: '在项目 <b>{nickname2}/{repository}</b> 的疑修 <b>{title}</b> 中:{ifassigner}{nickname1}将负责人从 <b>{assigner1}</b> 修改为 <b>{assigner2}</b> {endassigner}{ifstatus}{nickname1}将状态从 <b>{status1}</b> 修改为 <b>{status2}</b> {endstatus}{iftracker}{nickname1}将类型从 <b>{tracker1}</b> 修改为 <b>{tracker2}</b> {endtracker}{ifpriority}{nickname1}将优先级从 <b>{priority1}</b> 修改为 <b>{priority2}</b> {endpriority}{ifmilestone}{nickname1}将里程碑从 <b>{milestone1}</b> 修改为 <b>{milestone2}</b> {endmilestone}{iftag}{nickname1}将标记从 <b>{tag1}</b> 修改为 <b>{tag2}</b> {endtag}{ifdoneratio}{nickname1}将完成度从 <b>{doneratio1}</b> 修改为 <b>{doneratio2}</b> {enddoneratio}{ifbranch}{nickname1}将指定分支从 <b>{branch1}</b> 修改为 <b>{branch2}</b> {endbranch}{ifstartdate}{nickname1}将开始日期从 <b>{startdate1}</b> 修改为 <b>{startdate2}</b> {endstartdate}{ifduedate}{nickname1}将结束日期从 <b>{duedate1}</b> 修改为 <b>{duedate2}</b> {endduedate}', email: email_html, email_title: 'GitLink: 疑修 {title} 有状态变更', notification_url: '{baseurl}/{owner}/{identifier}/issues/{id}') | |||||
| self.create(type: 'MessageTemplate::IssueCreatorExpire', sys_notice: '您发布的疑修 <b>{title}</b> 已临近截止日期,请尽快处理', notification_url: '{baseurl}/{owner}/{identifier}/issues/{id}') | |||||
| email_html = File.read("#{email_template_html_dir}/issue_deleted.html") | email_html = File.read("#{email_template_html_dir}/issue_deleted.html") | ||||
| self.create(type: 'MessageTemplate::IssueDeleted', sys_notice: '{nickname}已将易修 <b>{title}</b> 删除', email: email_html, email_title: 'GitLink: 易修 {title} 有状态变更', notification_url: '') | |||||
| self.create(type: 'MessageTemplate::IssueJournal', sys_notice: '{nickname}评论易修{title}:<b>{notes}</b>', notification_url: '{baseurl}/{owner}/{identifier}/issues/{id}') | |||||
| self.create(type: 'MessageTemplate::IssueDeleted', sys_notice: '{nickname}已将疑修 <b>{title}</b> 删除', email: email_html, email_title: 'GitLink: 疑修 {title} 有状态变更', notification_url: '') | |||||
| self.create(type: 'MessageTemplate::IssueJournal', sys_notice: '{nickname}评论疑修{title}:<b>{notes}</b>', notification_url: '{baseurl}/{owner}/{identifier}/issues/{id}') | |||||
| self.create(type: 'MessageTemplate::LoginIpTip', sys_notice: '您的账号{nickname}于{login_time)在非常用的IP地址{ip}登录,如非本人操作,请立即修改密码', notification_url: '') | self.create(type: 'MessageTemplate::LoginIpTip', sys_notice: '您的账号{nickname}于{login_time)在非常用的IP地址{ip}登录,如非本人操作,请立即修改密码', notification_url: '') | ||||
| email_html = File.read("#{email_template_html_dir}/organization_joined.html") | email_html = File.read("#{email_template_html_dir}/organization_joined.html") | ||||
| self.create(type: 'MessageTemplate::OrganizationJoined', sys_notice: '你已加入 <b>{organization}</b> 组织', notification_url: '{baseurl}/{login}', email: email_html, email_title: 'GitLink: 你已加入 {organization} 组织') | self.create(type: 'MessageTemplate::OrganizationJoined', sys_notice: '你已加入 <b>{organization}</b> 组织', notification_url: '{baseurl}/{login}', email: email_html, email_title: 'GitLink: 你已加入 {organization} 组织') | ||||
| @@ -37,7 +37,7 @@ class MessageTemplate < ApplicationRecord | |||||
| self.create(type: 'MessageTemplate::ProjectFollowed', sys_notice: '<b>{nickname}</b> 关注了你管理的仓库', notification_url: '{baseurl}/{login}') | self.create(type: 'MessageTemplate::ProjectFollowed', sys_notice: '<b>{nickname}</b> 关注了你管理的仓库', notification_url: '{baseurl}/{login}') | ||||
| self.create(type: 'MessageTemplate::ProjectForked', sys_notice: '<b>{nickname1}</b> 复刻了你管理的仓库{nickname1}/{repository1}到{nickname2}/{repository2}', notification_url: '{baseurl}/{owner}/{identifier}') | self.create(type: 'MessageTemplate::ProjectForked', sys_notice: '<b>{nickname1}</b> 复刻了你管理的仓库{nickname1}/{repository1}到{nickname2}/{repository2}', notification_url: '{baseurl}/{owner}/{identifier}') | ||||
| email_html = File.read("#{email_template_html_dir}/project_issue.html") | email_html = File.read("#{email_template_html_dir}/project_issue.html") | ||||
| self.create(type: 'MessageTemplate::ProjectIssue', sys_notice: '{nickname1}在 <b>{nickname2}/{repository}</b> 新建易修:<b>{title}</b>', notification_url: '{baseurl}/{owner}/{identifier}/issues/{id}', email: email_html, email_title: 'GitLink: {nickname1} 在 {nickname2}/{repository} 新建了一个易修') | |||||
| self.create(type: 'MessageTemplate::ProjectIssue', sys_notice: '{nickname1}在 <b>{nickname2}/{repository}</b> 新建疑修:<b>{title}</b>', notification_url: '{baseurl}/{owner}/{identifier}/issues/{id}', email: email_html, email_title: 'GitLink: {nickname1} 在 {nickname2}/{repository} 新建了一个疑修') | |||||
| email_html = File.read("#{email_template_html_dir}/project_joined.html") | email_html = File.read("#{email_template_html_dir}/project_joined.html") | ||||
| self.create(type: 'MessageTemplate::ProjectJoined', sys_notice: '你已加入 <b>{repository}</b> 项目', notification_url: '{baseurl}/{owner}/{identifier}', email: email_html, email_title: 'GitLink: 你已加入 {repository} 项目') | self.create(type: 'MessageTemplate::ProjectJoined', sys_notice: '你已加入 <b>{repository}</b> 项目', notification_url: '{baseurl}/{owner}/{identifier}', email: email_html, email_title: 'GitLink: 你已加入 {repository} 项目') | ||||
| email_html = File.read("#{email_template_html_dir}/project_left.html") | email_html = File.read("#{email_template_html_dir}/project_left.html") | ||||
| @@ -12,7 +12,7 @@ | |||||
| # email_title :string(255) | # email_title :string(255) | ||||
| # | # | ||||
| # 有新指派给我的易修 | |||||
| # 有新指派给我的疑修 | |||||
| class MessageTemplate::IssueAssigned < MessageTemplate | class MessageTemplate::IssueAssigned < MessageTemplate | ||||
| # MessageTemplate::IssueAssigned.get_message_content(User.where(login: 'yystopf'), User.last, Issue.last) | # MessageTemplate::IssueAssigned.get_message_content(User.where(login: 'yystopf'), User.last, Issue.last) | ||||
| @@ -12,7 +12,7 @@ | |||||
| # email_title :string(255) | # email_title :string(255) | ||||
| # | # | ||||
| # 我负责的易修截止日期到达最后一天 | |||||
| # 我负责的疑修截止日期到达最后一天 | |||||
| class MessageTemplate::IssueAssignerExpire < MessageTemplate | class MessageTemplate::IssueAssignerExpire < MessageTemplate | ||||
| # MessageTemplate::IssueAssignerExpire.get_message_content(User.where(login: 'yystopf'), Issue.last) | # MessageTemplate::IssueAssignerExpire.get_message_content(User.where(login: 'yystopf'), Issue.last) | ||||
| @@ -12,7 +12,7 @@ | |||||
| # email_title :string(255) | # email_title :string(255) | ||||
| # | # | ||||
| # 在易修中@我 | |||||
| # 在疑修中@我 | |||||
| class MessageTemplate::IssueAtme < MessageTemplate | class MessageTemplate::IssueAtme < MessageTemplate | ||||
| # MessageTemplate::IssueAtme.get_message_content(User.where(login: 'yystopf'), User.last, Issue.last) | # MessageTemplate::IssueAtme.get_message_content(User.where(login: 'yystopf'), User.last, Issue.last) | ||||
| @@ -12,7 +12,7 @@ | |||||
| # email_title :string(255) | # email_title :string(255) | ||||
| # | # | ||||
| # 我创建或负责的易修状态变更 | |||||
| # 我创建或负责的疑修状态变更 | |||||
| class MessageTemplate::IssueChanged < MessageTemplate | class MessageTemplate::IssueChanged < MessageTemplate | ||||
| # MessageTemplate::IssueChanged.get_message_content(User.where(login: 'yystopf'), User.last, Issue.last, {status_id: [1, 2], assigned_to_id: [nil, 203], tracker_id: [4, 3], priority_id: [2, 4], fixed_version_id: [nil, 5], due_date: ['', '2021-09-11'], done_ratio: [0, 40], issue_tags_value: ["", "7"], branch_name: ["", "master"]}) | # MessageTemplate::IssueChanged.get_message_content(User.where(login: 'yystopf'), User.last, Issue.last, {status_id: [1, 2], assigned_to_id: [nil, 203], tracker_id: [4, 3], priority_id: [2, 4], fixed_version_id: [nil, 5], due_date: ['', '2021-09-11'], done_ratio: [0, 40], issue_tags_value: ["", "7"], branch_name: ["", "master"]}) | ||||
| @@ -29,7 +29,7 @@ class MessageTemplate::IssueChanged < MessageTemplate | |||||
| content = MessageTemplate::IssueChanged.sys_notice.gsub('{nickname1}', operator&.real_name).gsub('{nickname2}', owner&.real_name).gsub('{repository}', project&.name).gsub('{title}', issue&.subject) | content = MessageTemplate::IssueChanged.sys_notice.gsub('{nickname1}', operator&.real_name).gsub('{nickname2}', owner&.real_name).gsub('{repository}', project&.name).gsub('{title}', issue&.subject) | ||||
| url = notification_url.gsub('{owner}', owner&.login).gsub('{identifier}', project&.identifier).gsub('{id}', issue&.id.to_s) | url = notification_url.gsub('{owner}', owner&.login).gsub('{identifier}', project&.identifier).gsub('{id}', issue&.id.to_s) | ||||
| change_count = change_params.keys.size | change_count = change_params.keys.size | ||||
| # 易修负责人修改 | |||||
| # 疑修负责人修改 | |||||
| if change_params[:assigned_to_id].present? | if change_params[:assigned_to_id].present? | ||||
| assigner1 = User.find_by_id(change_params[:assigned_to_id][0]) | assigner1 = User.find_by_id(change_params[:assigned_to_id][0]) | ||||
| assigner2 = User.find_by_id(change_params[:assigned_to_id][1]) | assigner2 = User.find_by_id(change_params[:assigned_to_id][1]) | ||||
| @@ -44,7 +44,7 @@ class MessageTemplate::IssueChanged < MessageTemplate | |||||
| else | else | ||||
| content.gsub!(/({ifassigner})(.*)({endassigner})/, '') | content.gsub!(/({ifassigner})(.*)({endassigner})/, '') | ||||
| end | end | ||||
| # 易修状态修改 | |||||
| # 疑修状态修改 | |||||
| if change_params[:status_id].present? | if change_params[:status_id].present? | ||||
| status1 = IssueStatus.find_by_id(change_params[:status_id][0]) | status1 = IssueStatus.find_by_id(change_params[:status_id][0]) | ||||
| status2 = IssueStatus.find_by_id(change_params[:status_id][1]) | status2 = IssueStatus.find_by_id(change_params[:status_id][1]) | ||||
| @@ -59,7 +59,7 @@ class MessageTemplate::IssueChanged < MessageTemplate | |||||
| else | else | ||||
| content.gsub!(/({ifstatus})(.*)({endstatus})/, '') | content.gsub!(/({ifstatus})(.*)({endstatus})/, '') | ||||
| end | end | ||||
| # 易修类型修改 | |||||
| # 疑修类型修改 | |||||
| if change_params[:tracker_id].present? | if change_params[:tracker_id].present? | ||||
| tracker1 = Tracker.find_by_id(change_params[:tracker_id][0]) | tracker1 = Tracker.find_by_id(change_params[:tracker_id][0]) | ||||
| tracker2 = Tracker.find_by_id(change_params[:tracker_id][1]) | tracker2 = Tracker.find_by_id(change_params[:tracker_id][1]) | ||||
| @@ -74,7 +74,7 @@ class MessageTemplate::IssueChanged < MessageTemplate | |||||
| else | else | ||||
| content.gsub!(/({iftracker})(.*)({endtracker})/, '') | content.gsub!(/({iftracker})(.*)({endtracker})/, '') | ||||
| end | end | ||||
| # 易修里程碑修改 | |||||
| # 疑修里程碑修改 | |||||
| if change_params[:fixed_version_id].present? | if change_params[:fixed_version_id].present? | ||||
| fix_version1 = Version.find_by_id(change_params[:fixed_version_id][0]) | fix_version1 = Version.find_by_id(change_params[:fixed_version_id][0]) | ||||
| fix_version2 = Version.find_by_id(change_params[:fixed_version_id][1]) | fix_version2 = Version.find_by_id(change_params[:fixed_version_id][1]) | ||||
| @@ -89,7 +89,7 @@ class MessageTemplate::IssueChanged < MessageTemplate | |||||
| else | else | ||||
| content.gsub!(/({ifmilestone})(.*)({endmilestone})/, '') | content.gsub!(/({ifmilestone})(.*)({endmilestone})/, '') | ||||
| end | end | ||||
| # 易修标记修改 | |||||
| # 疑修标记修改 | |||||
| if change_params[:issue_tags_value].present? | if change_params[:issue_tags_value].present? | ||||
| issue_tags1 = IssueTag.where(id: change_params[:issue_tags_value][0]).distinct | issue_tags1 = IssueTag.where(id: change_params[:issue_tags_value][0]).distinct | ||||
| issue_tags2 = IssueTag.where(id: change_params[:issue_tags_value][1]).distinct | issue_tags2 = IssueTag.where(id: change_params[:issue_tags_value][1]).distinct | ||||
| @@ -106,7 +106,7 @@ class MessageTemplate::IssueChanged < MessageTemplate | |||||
| else | else | ||||
| content.gsub!(/({iftag})(.*)({endtag})()/, '') | content.gsub!(/({iftag})(.*)({endtag})()/, '') | ||||
| end | end | ||||
| # 易修优先级修改 | |||||
| # 疑修优先级修改 | |||||
| if change_params[:priority_id].present? | if change_params[:priority_id].present? | ||||
| priority1 = IssuePriority.find_by_id(change_params[:priority_id][0]) | priority1 = IssuePriority.find_by_id(change_params[:priority_id][0]) | ||||
| priority2 = IssuePriority.find_by_id(change_params[:priority_id][1]) | priority2 = IssuePriority.find_by_id(change_params[:priority_id][1]) | ||||
| @@ -121,7 +121,7 @@ class MessageTemplate::IssueChanged < MessageTemplate | |||||
| else | else | ||||
| content.gsub!(/({ifpriority})(.*)({endpriority})/, '') | content.gsub!(/({ifpriority})(.*)({endpriority})/, '') | ||||
| end | end | ||||
| # 易修完成度修改 | |||||
| # 疑修完成度修改 | |||||
| if change_params[:done_ratio].present? | if change_params[:done_ratio].present? | ||||
| doneratio1 = change_params[:done_ratio][0] | doneratio1 = change_params[:done_ratio][0] | ||||
| doneratio2 = change_params[:done_ratio][1] | doneratio2 = change_params[:done_ratio][1] | ||||
| @@ -136,7 +136,7 @@ class MessageTemplate::IssueChanged < MessageTemplate | |||||
| else | else | ||||
| content.gsub!(/({ifdoneratio})(.*)({enddoneratio})/, '') | content.gsub!(/({ifdoneratio})(.*)({enddoneratio})/, '') | ||||
| end | end | ||||
| # 易修指定分支修改 | |||||
| # 疑修指定分支修改 | |||||
| if change_params[:branch_name].present? | if change_params[:branch_name].present? | ||||
| branch1 = change_params[:branch_name][0].blank? ? '分支未指定' : change_params[:branch_name][0] | branch1 = change_params[:branch_name][0].blank? ? '分支未指定' : change_params[:branch_name][0] | ||||
| branch2 = change_params[:branch_name][1].blank? ? '分支未指定' : change_params[:branch_name][1] | branch2 = change_params[:branch_name][1].blank? ? '分支未指定' : change_params[:branch_name][1] | ||||
| @@ -151,7 +151,7 @@ class MessageTemplate::IssueChanged < MessageTemplate | |||||
| else | else | ||||
| content.gsub!(/({ifbranch})(.*)({endbranch})/, '') | content.gsub!(/({ifbranch})(.*)({endbranch})/, '') | ||||
| end | end | ||||
| # 易修开始日期修改 | |||||
| # 疑修开始日期修改 | |||||
| if change_params[:start_date].present? | if change_params[:start_date].present? | ||||
| startdate1 = change_params[:start_date][0].blank? ? "未选择开始日期" : change_params[:start_date][0] | startdate1 = change_params[:start_date][0].blank? ? "未选择开始日期" : change_params[:start_date][0] | ||||
| startdate2 = change_params[:start_date][1].blank? ? "未选择开始日期" : change_params[:start_date][1] | startdate2 = change_params[:start_date][1].blank? ? "未选择开始日期" : change_params[:start_date][1] | ||||
| @@ -166,7 +166,7 @@ class MessageTemplate::IssueChanged < MessageTemplate | |||||
| else | else | ||||
| content.gsub!(/({ifstartdate})(.*)({endstartdate})/, '') | content.gsub!(/({ifstartdate})(.*)({endstartdate})/, '') | ||||
| end | end | ||||
| # 易修结束日期修改 | |||||
| # 疑修结束日期修改 | |||||
| if change_params[:due_date].present? | if change_params[:due_date].present? | ||||
| duedate1 = change_params[:due_date][0].blank? ? '未选择结束日期' : change_params[:due_date][0] | duedate1 = change_params[:due_date][0].blank? ? '未选择结束日期' : change_params[:due_date][0] | ||||
| duedate2 = change_params[:due_date][1].blank? ? '未选择结束日期' : change_params[:due_date][1] | duedate2 = change_params[:due_date][1].blank? ? '未选择结束日期' : change_params[:due_date][1] | ||||
| @@ -207,7 +207,7 @@ class MessageTemplate::IssueChanged < MessageTemplate | |||||
| content.gsub!('{title}', issue&.subject) | content.gsub!('{title}', issue&.subject) | ||||
| content.gsub!('{id}', issue&.id.to_s) | content.gsub!('{id}', issue&.id.to_s) | ||||
| change_count = change_params.keys.size | change_count = change_params.keys.size | ||||
| # 易修负责人修改 | |||||
| # 疑修负责人修改 | |||||
| if change_params[:assigned_to_id].present? | if change_params[:assigned_to_id].present? | ||||
| assigner1 = User.find_by_id(change_params[:assigned_to_id][0]) | assigner1 = User.find_by_id(change_params[:assigned_to_id][0]) | ||||
| assigner2 = User.find_by_id(change_params[:assigned_to_id][1]) | assigner2 = User.find_by_id(change_params[:assigned_to_id][1]) | ||||
| @@ -222,7 +222,7 @@ class MessageTemplate::IssueChanged < MessageTemplate | |||||
| else | else | ||||
| content.gsub!(/({ifassigner})(.*)({endassigner})/, '') | content.gsub!(/({ifassigner})(.*)({endassigner})/, '') | ||||
| end | end | ||||
| # 易修状态修改 | |||||
| # 疑修状态修改 | |||||
| if change_params[:status_id].present? | if change_params[:status_id].present? | ||||
| status1 = IssueStatus.find_by_id(change_params[:status_id][0]) | status1 = IssueStatus.find_by_id(change_params[:status_id][0]) | ||||
| status2 = IssueStatus.find_by_id(change_params[:status_id][1]) | status2 = IssueStatus.find_by_id(change_params[:status_id][1]) | ||||
| @@ -237,7 +237,7 @@ class MessageTemplate::IssueChanged < MessageTemplate | |||||
| else | else | ||||
| content.gsub!(/({ifstatus})(.*)({endstatus})/, '') | content.gsub!(/({ifstatus})(.*)({endstatus})/, '') | ||||
| end | end | ||||
| # 易修类型修改 | |||||
| # 疑修类型修改 | |||||
| if change_params[:tracker_id].present? | if change_params[:tracker_id].present? | ||||
| tracker1 = Tracker.find_by_id(change_params[:tracker_id][0]) | tracker1 = Tracker.find_by_id(change_params[:tracker_id][0]) | ||||
| tracker2 = Tracker.find_by_id(change_params[:tracker_id][1]) | tracker2 = Tracker.find_by_id(change_params[:tracker_id][1]) | ||||
| @@ -252,7 +252,7 @@ class MessageTemplate::IssueChanged < MessageTemplate | |||||
| else | else | ||||
| content.gsub!(/({iftracker})(.*)({endtracker})/, '') | content.gsub!(/({iftracker})(.*)({endtracker})/, '') | ||||
| end | end | ||||
| # 易修里程碑修改 | |||||
| # 疑修里程碑修改 | |||||
| if change_params[:fixed_version_id].present? | if change_params[:fixed_version_id].present? | ||||
| fix_version1 = Version.find_by_id(change_params[:fixed_version_id][0]) | fix_version1 = Version.find_by_id(change_params[:fixed_version_id][0]) | ||||
| fix_version2 = Version.find_by_id(change_params[:fixed_version_id][1]) | fix_version2 = Version.find_by_id(change_params[:fixed_version_id][1]) | ||||
| @@ -267,7 +267,7 @@ class MessageTemplate::IssueChanged < MessageTemplate | |||||
| else | else | ||||
| content.gsub!(/({ifmilestone})(.*)({endmilestone})/, '') | content.gsub!(/({ifmilestone})(.*)({endmilestone})/, '') | ||||
| end | end | ||||
| # 易修标记修改 | |||||
| # 疑修标记修改 | |||||
| if change_params[:issue_tags_value].present? | if change_params[:issue_tags_value].present? | ||||
| issue_tags1 = IssueTag.where(id: change_params[:issue_tags_value][0]).distinct | issue_tags1 = IssueTag.where(id: change_params[:issue_tags_value][0]).distinct | ||||
| issue_tags2 = IssueTag.where(id: change_params[:issue_tags_value][1]).distinct | issue_tags2 = IssueTag.where(id: change_params[:issue_tags_value][1]).distinct | ||||
| @@ -284,7 +284,7 @@ class MessageTemplate::IssueChanged < MessageTemplate | |||||
| else | else | ||||
| content.gsub!(/({iftag})(.*)({endtag})()/, '') | content.gsub!(/({iftag})(.*)({endtag})()/, '') | ||||
| end | end | ||||
| # 易修优先级修改 | |||||
| # 疑修优先级修改 | |||||
| if change_params[:priority_id].present? | if change_params[:priority_id].present? | ||||
| priority1 = IssuePriority.find_by_id(change_params[:priority_id][0]) | priority1 = IssuePriority.find_by_id(change_params[:priority_id][0]) | ||||
| priority2 = IssuePriority.find_by_id(change_params[:priority_id][1]) | priority2 = IssuePriority.find_by_id(change_params[:priority_id][1]) | ||||
| @@ -299,7 +299,7 @@ class MessageTemplate::IssueChanged < MessageTemplate | |||||
| else | else | ||||
| content.gsub!(/({ifpriority})(.*)({endpriority})/, '') | content.gsub!(/({ifpriority})(.*)({endpriority})/, '') | ||||
| end | end | ||||
| # 易修完成度修改 | |||||
| # 疑修完成度修改 | |||||
| if change_params[:done_ratio].present? | if change_params[:done_ratio].present? | ||||
| doneratio1 = change_params[:done_ratio][0] | doneratio1 = change_params[:done_ratio][0] | ||||
| doneratio2 = change_params[:done_ratio][1] | doneratio2 = change_params[:done_ratio][1] | ||||
| @@ -314,7 +314,7 @@ class MessageTemplate::IssueChanged < MessageTemplate | |||||
| else | else | ||||
| content.gsub!(/({ifdoneratio})(.*)({enddoneratio})/, '') | content.gsub!(/({ifdoneratio})(.*)({enddoneratio})/, '') | ||||
| end | end | ||||
| # 易修指定分支修改 | |||||
| # 疑修指定分支修改 | |||||
| if change_params[:branch_name].present? | if change_params[:branch_name].present? | ||||
| branch1 = change_params[:branch_name][0].blank? ? '分支未指定' : change_params[:branch_name][0] | branch1 = change_params[:branch_name][0].blank? ? '分支未指定' : change_params[:branch_name][0] | ||||
| branch2 = change_params[:branch_name][1].blank? ? '分支未指定' : change_params[:branch_name][1] | branch2 = change_params[:branch_name][1].blank? ? '分支未指定' : change_params[:branch_name][1] | ||||
| @@ -329,7 +329,7 @@ class MessageTemplate::IssueChanged < MessageTemplate | |||||
| else | else | ||||
| content.gsub!(/({ifbranch})(.*)({endbranch})/, '') | content.gsub!(/({ifbranch})(.*)({endbranch})/, '') | ||||
| end | end | ||||
| # 易修开始日期修改 | |||||
| # 疑修开始日期修改 | |||||
| if change_params[:start_date].present? | if change_params[:start_date].present? | ||||
| startdate1 = change_params[:start_date][0].blank? ? "未选择开始日期" : change_params[:start_date][0] | startdate1 = change_params[:start_date][0].blank? ? "未选择开始日期" : change_params[:start_date][0] | ||||
| startdate2 = change_params[:start_date][1].blank? ? "未选择开始日期" : change_params[:start_date][1] | startdate2 = change_params[:start_date][1].blank? ? "未选择开始日期" : change_params[:start_date][1] | ||||
| @@ -344,7 +344,7 @@ class MessageTemplate::IssueChanged < MessageTemplate | |||||
| else | else | ||||
| content.gsub!(/({ifstartdate})(.*)({endstartdate})/, '') | content.gsub!(/({ifstartdate})(.*)({endstartdate})/, '') | ||||
| end | end | ||||
| # 易修结束日期修改 | |||||
| # 疑修结束日期修改 | |||||
| if change_params[:due_date].present? | if change_params[:due_date].present? | ||||
| duedate1 = change_params[:due_date][0].blank? ? '未选择结束日期' : change_params[:due_date][0] | duedate1 = change_params[:due_date][0].blank? ? '未选择结束日期' : change_params[:due_date][0] | ||||
| duedate2 = change_params[:due_date][1].blank? ? '未选择结束日期' : change_params[:due_date][1] | duedate2 = change_params[:due_date][1].blank? ? '未选择结束日期' : change_params[:due_date][1] | ||||
| @@ -12,7 +12,7 @@ | |||||
| # email_title :string(255) | # email_title :string(255) | ||||
| # | # | ||||
| # 我创建的易修截止日期到达最后一天 | |||||
| # 我创建的疑修截止日期到达最后一天 | |||||
| class MessageTemplate::IssueCreatorExpire < MessageTemplate | class MessageTemplate::IssueCreatorExpire < MessageTemplate | ||||
| # MessageTemplate::IssueCreatorExpire.get_message_content(User.where(login: 'yystopf'), Issue.last) | # MessageTemplate::IssueCreatorExpire.get_message_content(User.where(login: 'yystopf'), Issue.last) | ||||
| @@ -12,7 +12,7 @@ | |||||
| # email_title :string(255) | # email_title :string(255) | ||||
| # | # | ||||
| # 我创建或负责的易修删除 | |||||
| # 我创建或负责的疑修删除 | |||||
| class MessageTemplate::IssueDeleted < MessageTemplate | class MessageTemplate::IssueDeleted < MessageTemplate | ||||
| # MessageTemplate::IssueDeleted.get_message_content(User.where(login: 'yystopf'), User.last, "hahah") | # MessageTemplate::IssueDeleted.get_message_content(User.where(login: 'yystopf'), User.last, "hahah") | ||||
| @@ -12,7 +12,7 @@ | |||||
| # email_title :string(255) | # email_title :string(255) | ||||
| # | # | ||||
| # TODO 我创建或负责的易修有新的评论 | |||||
| # TODO 我创建或负责的疑修有新的评论 | |||||
| class MessageTemplate::IssueJournal < MessageTemplate | class MessageTemplate::IssueJournal < MessageTemplate | ||||
| # MessageTemplate::IssueJournal.get_message_content(User.where(login: 'yystopf')) | # MessageTemplate::IssueJournal.get_message_content(User.where(login: 'yystopf')) | ||||
| @@ -12,7 +12,7 @@ | |||||
| # email_title :string(255) | # email_title :string(255) | ||||
| # | # | ||||
| # TODO 我管理/关注的仓库有新的易修 | |||||
| # TODO 我管理/关注的仓库有新的疑修 | |||||
| class MessageTemplate::ProjectIssue < MessageTemplate | class MessageTemplate::ProjectIssue < MessageTemplate | ||||
| # MessageTemplate::ProjectIssue.get_message_content(User.where(login: 'yystopf'), User.where(login: 'forgetest1'), User.last, Issue.last) | # MessageTemplate::ProjectIssue.get_message_content(User.where(login: 'yystopf'), User.where(login: 'forgetest1'), User.last, Issue.last) | ||||
| @@ -15,7 +15,7 @@ | |||||
| # 我管理的仓库项目设置被更改 | # 我管理的仓库项目设置被更改 | ||||
| class MessageTemplate::ProjectSettingChanged < MessageTemplate | class MessageTemplate::ProjectSettingChanged < MessageTemplate | ||||
| # MessageTemplate::ProjectSettingChanged.get_message_content(User.where(login: 'yystopf'), User.last, Project.last, {description: '测试修改项目简介', category: '大数据', language: 'Ruby', permission: '公有', navbar: '易修, 合并请求'}) | |||||
| # MessageTemplate::ProjectSettingChanged.get_message_content(User.where(login: 'yystopf'), User.last, Project.last, {description: '测试修改项目简介', category: '大数据', language: 'Ruby', permission: '公有', navbar: '疑修, 合并请求'}) | |||||
| def self.get_message_content(receivers, operator, project, change_params) | def self.get_message_content(receivers, operator, project, change_params) | ||||
| receivers.each do |receiver| | receivers.each do |receiver| | ||||
| if receiver.user_template_message_setting.present? | if receiver.user_template_message_setting.present? | ||||
| @@ -135,7 +135,7 @@ class MessageTemplate::ProjectSettingChanged < MessageTemplate | |||||
| unit_types.unshift('主页') | unit_types.unshift('主页') | ||||
| unit_types.append('动态') | unit_types.append('动态') | ||||
| navbar = unit_types.join(',') | navbar = unit_types.join(',') | ||||
| navbar.gsub!('issues', '易修') | |||||
| navbar.gsub!('issues', '疑修') | |||||
| navbar.gsub!('pulls', '合并请求') | navbar.gsub!('pulls', '合并请求') | ||||
| navbar.gsub!('wiki', 'Wiki') | navbar.gsub!('wiki', 'Wiki') | ||||
| navbar.gsub!('devops', '工作流') | navbar.gsub!('devops', '工作流') | ||||
| @@ -284,7 +284,7 @@ class MessageTemplate::ProjectSettingChanged < MessageTemplate | |||||
| unit_types.unshift('主页') | unit_types.unshift('主页') | ||||
| unit_types.append('动态') | unit_types.append('动态') | ||||
| navbar = unit_types.join(',') | navbar = unit_types.join(',') | ||||
| navbar.gsub!('issues', '易修') | |||||
| navbar.gsub!('issues', '疑修') | |||||
| navbar.gsub!('pulls', '合并请求') | navbar.gsub!('pulls', '合并请求') | ||||
| navbar.gsub!('wiki', 'Wiki') | navbar.gsub!('wiki', 'Wiki') | ||||
| navbar.gsub!('devops', '工作流') | navbar.gsub!('devops', '工作流') | ||||
| @@ -25,7 +25,7 @@ class TemplateMessageSetting::CreateOrAssign < TemplateMessageSetting | |||||
| end | end | ||||
| def self.build_init_data | def self.build_init_data | ||||
| self.find_or_create_by(name: "易修状态变更", key: "IssueChanged") | |||||
| self.find_or_create_by(name: "疑修状态变更", key: "IssueChanged") | |||||
| self.find_or_create_by(name: "合并请求状态变更", key: "PullRequestChanged") | self.find_or_create_by(name: "合并请求状态变更", key: "PullRequestChanged") | ||||
| end | end | ||||
| end | end | ||||
| @@ -25,7 +25,7 @@ class TemplateMessageSetting::ManageProject < TemplateMessageSetting | |||||
| end | end | ||||
| def self.build_init_data | def self.build_init_data | ||||
| self.find_or_create_by(name: "有新的易修", key: "Issue") | |||||
| self.find_or_create_by(name: "有新的疑修", key: "Issue") | |||||
| self.find_or_create_by(name: "有新的合并请求", key: "PullRequest") | self.find_or_create_by(name: "有新的合并请求", key: "PullRequest") | ||||
| self.find_or_create_by(name: "有成员变动", key: "Member") | self.find_or_create_by(name: "有成员变动", key: "Member") | ||||
| self.find_or_create_by(name: "仓库设置被更改", key: "SettingChanged") | self.find_or_create_by(name: "仓库设置被更改", key: "SettingChanged") | ||||
| @@ -27,7 +27,7 @@ class TemplateMessageSetting::Normal < TemplateMessageSetting | |||||
| self.find_or_create_by(name: "账号有权限变更", key: "Permission") | self.find_or_create_by(name: "账号有权限变更", key: "Permission") | ||||
| self.find_or_create_by(name: "被拉入或移出组织", key: "Organization") | self.find_or_create_by(name: "被拉入或移出组织", key: "Organization") | ||||
| self.find_or_create_by(name: "被拉入或移出项目", key: "Project") | self.find_or_create_by(name: "被拉入或移出项目", key: "Project") | ||||
| self.find_or_create_by(name: "有新的易修指派给我", key: "IssueAssigned") | |||||
| self.find_or_create_by(name: "有新的疑修指派给我", key: "IssueAssigned") | |||||
| self.find_or_create_by(name: "有新的合并请求指派给我", key: "PullRequestAssigned") | self.find_or_create_by(name: "有新的合并请求指派给我", key: "PullRequestAssigned") | ||||
| end | end | ||||
| end | end | ||||
| @@ -15,7 +15,7 @@ zh-CN: | |||||
| 'refused': '已拒绝' | 'refused': '已拒绝' | ||||
| 'agreed': '已同意' | 'agreed': '已同意' | ||||
| trend: | trend: | ||||
| Issue: 易修(Issue) | |||||
| Issue: 疑修(Issue) | |||||
| PullRequest: 合并请求(PR) | PullRequest: 合并请求(PR) | ||||
| VersionRelease: 版本发布 | VersionRelease: 版本发布 | ||||
| create: 创建了 | create: 创建了 | ||||
| @@ -87,7 +87,7 @@ forgeplus | |||||
| │ │ │ │ └── tags(标签) | │ │ │ │ └── tags(标签) | ||||
| │ │ │ ├── user(用户) | │ │ │ ├── user(用户) | ||||
| │ │ │ └── versions(发行版) | │ │ │ └── versions(发行版) | ||||
| │ │ ├── issues(易修) | |||||
| │ │ ├── issues(疑修) | |||||
| │ │ ├── libraries | │ │ ├── libraries | ||||
| │ │ ├── oauth | │ │ ├── oauth | ||||
| │ │ ├── organizations(组织) | │ │ ├── organizations(组织) | ||||
| @@ -1138,31 +1138,31 @@ Success — a happy kitten is an authenticated kitten! | |||||
| </thead><tbody> | </thead><tbody> | ||||
| <tr> | <tr> | ||||
| <td>IssueAssigned</td> | <td>IssueAssigned</td> | ||||
| <td>有新指派给我的易修</td> | |||||
| <td>有新指派给我的疑修</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>IssueAssignerExpire</td> | <td>IssueAssignerExpire</td> | ||||
| <td>我负责的易修截止日期到达最后一天</td> | |||||
| <td>我负责的疑修截止日期到达最后一天</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>IssueAtme</td> | <td>IssueAtme</td> | ||||
| <td>在易修中@我</td> | |||||
| <td>在疑修中@我</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>IssueChanged</td> | <td>IssueChanged</td> | ||||
| <td>我创建或负责的易修状态变更</td> | |||||
| <td>我创建或负责的疑修状态变更</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>IssueCreatorExpire</td> | <td>IssueCreatorExpire</td> | ||||
| <td>我创建的易修截止日期到达最后一天</td> | |||||
| <td>我创建的疑修截止日期到达最后一天</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>IssueDeleted</td> | <td>IssueDeleted</td> | ||||
| <td>我创建或负责的易修删除</td> | |||||
| <td>我创建或负责的疑修删除</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>IssueJournal</td> | <td>IssueJournal</td> | ||||
| <td>我创建或负责的易修有新的评论</td> | |||||
| <td>我创建或负责的疑修有新的评论</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>LoginIpTip</td> | <td>LoginIpTip</td> | ||||
| @@ -1194,7 +1194,7 @@ Success — a happy kitten is an authenticated kitten! | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>ProjectIssue</td> | <td>ProjectIssue</td> | ||||
| <td>我管理/关注的仓库有新的易修</td> | |||||
| <td>我管理/关注的仓库有新的疑修</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>ProjectJoined</td> | <td>ProjectJoined</td> | ||||
| @@ -1403,7 +1403,7 @@ Success — a happy kitten is an authenticated kitten! | |||||
| <tr> | <tr> | ||||
| <td>atmeable_type</td> | <td>atmeable_type</td> | ||||
| <td>string</td> | <td>string</td> | ||||
| <td>atme消息对象,是从哪里@我的,比如评论:Journal、易修:Issue、合并请求:PullRequest</td> | |||||
| <td>atme消息对象,是从哪里@我的,比如评论:Journal、疑修:Issue、合并请求:PullRequest</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>atmeable_id</td> | <td>atmeable_id</td> | ||||
| @@ -1706,7 +1706,7 @@ Success — a happy kitten is an authenticated kitten! | |||||
| </span><span class="nl">"total_settings_count"</span><span class="p">:</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> | </span><span class="nl">"total_settings_count"</span><span class="p">:</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> | ||||
| </span><span class="nl">"settings"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | </span><span class="nl">"settings"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | ||||
| </span><span class="p">{</span><span class="w"> | </span><span class="p">{</span><span class="w"> | ||||
| </span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"易修被指派"</span><span class="p">,</span><span class="w"> | |||||
| </span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"疑修被指派"</span><span class="p">,</span><span class="w"> | |||||
| </span><span class="nl">"key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"IssueAssigned"</span><span class="p">,</span><span class="w"> | </span><span class="nl">"key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"IssueAssigned"</span><span class="p">,</span><span class="w"> | ||||
| </span><span class="nl">"notification_disabled"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"> | </span><span class="nl">"notification_disabled"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"> | ||||
| </span><span class="nl">"email_disabled"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w"> | </span><span class="nl">"email_disabled"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w"> | ||||
| @@ -1725,7 +1725,7 @@ Success — a happy kitten is an authenticated kitten! | |||||
| </span><span class="nl">"total_settings_count"</span><span class="p">:</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> | </span><span class="nl">"total_settings_count"</span><span class="p">:</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> | ||||
| </span><span class="nl">"settings"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | </span><span class="nl">"settings"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | ||||
| </span><span class="p">{</span><span class="w"> | </span><span class="p">{</span><span class="w"> | ||||
| </span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"有新的易修"</span><span class="p">,</span><span class="w"> | |||||
| </span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"有新的疑修"</span><span class="p">,</span><span class="w"> | |||||
| </span><span class="nl">"key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Issue"</span><span class="p">,</span><span class="w"> | </span><span class="nl">"key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Issue"</span><span class="p">,</span><span class="w"> | ||||
| </span><span class="nl">"notification_disabled"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"> | </span><span class="nl">"notification_disabled"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"> | ||||
| </span><span class="nl">"email_disabled"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w"> | </span><span class="nl">"email_disabled"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w"> | ||||
| @@ -2245,7 +2245,7 @@ Success — a happy kitten is an authenticated kitten! | |||||
| <tr> | <tr> | ||||
| <td>issues_count</td> | <td>issues_count</td> | ||||
| <td>array</td> | <td>array</td> | ||||
| <td>易修数量</td> | |||||
| <td>疑修数量</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>pull_requests_count</td> | <td>pull_requests_count</td> | ||||
| @@ -2493,7 +2493,7 @@ Success — a happy kitten is an authenticated kitten! | |||||
| <tr> | <tr> | ||||
| <td>project_trends.trend_type</td> | <td>project_trends.trend_type</td> | ||||
| <td>string</td> | <td>string</td> | ||||
| <td>动态类型,Issue:易修,VersionRelease:版本发布,PullRequest:合并请求</td> | |||||
| <td>动态类型,Issue:疑修,VersionRelease:版本发布,PullRequest:合并请求</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>project_trends.action_type</td> | <td>project_trends.action_type</td> | ||||
| @@ -4968,7 +4968,7 @@ http://localhost:3000/api/yystopf/ceshi/menu_list | jq | |||||
| <tr> | <tr> | ||||
| <td>menu_name</td> | <td>menu_name</td> | ||||
| <td>string</td> | <td>string</td> | ||||
| <td>导航名称, home:主页,code:代码库,issues:易修,pulls:合并请求,devops:工作流,versions:里程碑,activity:动态,setting:仓库设置</td> | |||||
| <td>导航名称, home:主页,code:代码库,issues:疑修,pulls:合并请求,devops:工作流,versions:里程碑,activity:动态,setting:仓库设置</td> | |||||
| </tr> | </tr> | ||||
| </tbody></table> | </tbody></table> | ||||
| @@ -5131,7 +5131,7 @@ http://localhost:3000/api/yystopf/ceshi/project_units.json | |||||
| <td>是</td> | <td>是</td> | ||||
| <td></td> | <td></td> | ||||
| <td>array</td> | <td>array</td> | ||||
| <td>项目模块内容, 支持以下参数:code:代码库,issues:易修,pulls:合并请求,devops:工作流,versions:里程碑</td> | |||||
| <td>项目模块内容, 支持以下参数:code:代码库,issues:疑修,pulls:合并请求,devops:工作流,versions:里程碑</td> | |||||
| </tr> | </tr> | ||||
| </tbody></table> | </tbody></table> | ||||
| <h3 id='7447e4874e-2'>返回字段说明:</h3> | <h3 id='7447e4874e-2'>返回字段说明:</h3> | ||||
| @@ -8346,23 +8346,23 @@ http://localhost:3000/api/yystopf/ceshi/webhooks/3/edit.json | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>issue</td> | <td>issue</td> | ||||
| <td>易修已打开、已关闭、已重新打开或编辑</td> | |||||
| <td>疑修已打开、已关闭、已重新打开或编辑</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>issue_assign</td> | <td>issue_assign</td> | ||||
| <td>易修被指派</td> | |||||
| <td>疑修被指派</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>issue_label</td> | <td>issue_label</td> | ||||
| <td>易修标签被更新或删除</td> | |||||
| <td>疑修标签被更新或删除</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>issue_milestone</td> | <td>issue_milestone</td> | ||||
| <td>易修被收入里程碑</td> | |||||
| <td>疑修被收入里程碑</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>issue_comment</td> | <td>issue_comment</td> | ||||
| <td>易修评论</td> | |||||
| <td>疑修评论</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>pull_request</td> | <td>pull_request</td> | ||||
| @@ -8568,23 +8568,23 @@ http://localhost:3000/api/yystopf/ceshi/webhooks.json | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>issue</td> | <td>issue</td> | ||||
| <td>易修已打开、已关闭、已重新打开或编辑</td> | |||||
| <td>疑修已打开、已关闭、已重新打开或编辑</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>issue_assign</td> | <td>issue_assign</td> | ||||
| <td>易修被指派</td> | |||||
| <td>疑修被指派</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>issue_label</td> | <td>issue_label</td> | ||||
| <td>易修标签被更新或删除</td> | |||||
| <td>疑修标签被更新或删除</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>issue_milestone</td> | <td>issue_milestone</td> | ||||
| <td>易修被收入里程碑</td> | |||||
| <td>疑修被收入里程碑</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>issue_comment</td> | <td>issue_comment</td> | ||||
| <td>易修评论</td> | |||||
| <td>疑修评论</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>pull_request</td> | <td>pull_request</td> | ||||
| @@ -8833,23 +8833,23 @@ http://localhost:3000/api/yystopf/ceshi/webhooks/7.json | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>issue</td> | <td>issue</td> | ||||
| <td>易修已打开、已关闭、已重新打开或编辑</td> | |||||
| <td>疑修已打开、已关闭、已重新打开或编辑</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>issue_assign</td> | <td>issue_assign</td> | ||||
| <td>易修被指派</td> | |||||
| <td>疑修被指派</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>issue_label</td> | <td>issue_label</td> | ||||
| <td>易修标签被更新或删除</td> | |||||
| <td>疑修标签被更新或删除</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>issue_milestone</td> | <td>issue_milestone</td> | ||||
| <td>易修被收入里程碑</td> | |||||
| <td>疑修被收入里程碑</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>issue_comment</td> | <td>issue_comment</td> | ||||
| <td>易修评论</td> | |||||
| <td>疑修评论</td> | |||||
| </tr> | </tr> | ||||
| <tr> | <tr> | ||||
| <td>pull_request</td> | <td>pull_request</td> | ||||
| @@ -1,6 +1,6 @@ | |||||
| <html> | <html> | ||||
| <head> | <head> | ||||
| <title>有新的易修指派给我</title> | |||||
| <title>有新的疑修指派给我</title> | |||||
| <style type="text/css"> | <style type="text/css"> | ||||
| body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td{ margin:0; padding:0;} | body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td{ margin:0; padding:0;} | ||||
| body,table,input,textarea,select,button { font-family: "微软雅黑","宋体"; font-size:12px;line-height:1.5; background:#eaebec;} | body,table,input,textarea,select,button { font-family: "微软雅黑","宋体"; font-size:12px;line-height:1.5; background:#eaebec;} | ||||
| @@ -31,7 +31,7 @@ | |||||
| <div style="width: 558px; border-left:1px solid #ddd;border-right:1px solid #ddd; background:#fff; padding:20px; color:#333; line-height: 1.9;"> | <div style="width: 558px; border-left:1px solid #ddd;border-right:1px solid #ddd; background:#fff; padding:20px; color:#333; line-height: 1.9;"> | ||||
| <p style="font-size: 14px; color:#333;"> | <p style="font-size: 14px; color:#333;"> | ||||
| {receiver},您好!<br/> | {receiver},您好!<br/> | ||||
| <a href="{baseurl}/{login1}" style="font-weight:bold;color:#3b94d6;">{nickname1}</a>在 {nickname2}/{repository} 指派给你一个易修:<a href="{baseurl}/{login2}/{identifier}/issues/{id}" style="font-weight:bold;color:#3b94d6;">{title}</a><br/> | |||||
| <a href="{baseurl}/{login1}" style="font-weight:bold;color:#3b94d6;">{nickname1}</a>在 {nickname2}/{repository} 指派给你一个疑修:<a href="{baseurl}/{login2}/{identifier}/issues/{id}" style="font-weight:bold;color:#3b94d6;">{title}</a><br/> | |||||
| </p> | </p> | ||||
| <div style="width: 100%; border-top: 1px solid #ddd; margin:10px 0;"></div> | <div style="width: 100%; border-top: 1px solid #ddd; margin:10px 0;"></div> | ||||
| </div> | </div> | ||||
| @@ -1,6 +1,6 @@ | |||||
| <html> | <html> | ||||
| <head> | <head> | ||||
| <title>有新的易修指派给我</title> | |||||
| <title>有新的疑修指派给我</title> | |||||
| <style type="text/css"> | <style type="text/css"> | ||||
| body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td{ margin:0; padding:0;} | body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td{ margin:0; padding:0;} | ||||
| body,table,input,textarea,select,button { font-family: "微软雅黑","宋体"; font-size:12px;line-height:1.5; background:#eaebec;} | body,table,input,textarea,select,button { font-family: "微软雅黑","宋体"; font-size:12px;line-height:1.5; background:#eaebec;} | ||||
| @@ -31,7 +31,7 @@ | |||||
| <div style="width: 558px; border-left:1px solid #ddd;border-right:1px solid #ddd; background:#fff; padding:20px; color:#333; line-height: 1.9;"> | <div style="width: 558px; border-left:1px solid #ddd;border-right:1px solid #ddd; background:#fff; padding:20px; color:#333; line-height: 1.9;"> | ||||
| <p style="font-size: 14px; color:#333;"> | <p style="font-size: 14px; color:#333;"> | ||||
| {receiver},您好!<br/> | {receiver},您好!<br/> | ||||
| 在项目 <a href="{baseurl}/{login2}/{identifier}" style="font-weight:bold;color:#3b94d6;">{nickname2}/{repository}</a> 的易修 <a href="{baseurl}/{login2}/{identifier}/issues/{id}" style="font-weight:bold;color:#3b94d6;">{title}</a> 中: | |||||
| 在项目 <a href="{baseurl}/{login2}/{identifier}" style="font-weight:bold;color:#3b94d6;">{nickname2}/{repository}</a> 的疑修 <a href="{baseurl}/{login2}/{identifier}/issues/{id}" style="font-weight:bold;color:#3b94d6;">{title}</a> 中: | |||||
| {ifassigner}<a href="{baseurl}/{login1}" style="font-weight:bold;color:#3b94d6;">{nickname1}</a>将负责人从 {assigner1} 修改为 {assigner2}{endassigner} | {ifassigner}<a href="{baseurl}/{login1}" style="font-weight:bold;color:#3b94d6;">{nickname1}</a>将负责人从 {assigner1} 修改为 {assigner2}{endassigner} | ||||
| {ifstatus}<a href="{baseurl}/{login1}" style="font-weight:bold;color:#3b94d6;">{nickname1}</a>将状态从 {status1} 修改为 {status2}{endstatus} | {ifstatus}<a href="{baseurl}/{login1}" style="font-weight:bold;color:#3b94d6;">{nickname1}</a>将状态从 {status1} 修改为 {status2}{endstatus} | ||||
| {iftracker}<a href="{baseurl}/{login1}" style="font-weight:bold;color:#3b94d6;">{nickname1}</a>将类型从 {tracker1} 修改为 {tracker2}{endtracker} | {iftracker}<a href="{baseurl}/{login1}" style="font-weight:bold;color:#3b94d6;">{nickname1}</a>将类型从 {tracker1} 修改为 {tracker2}{endtracker} | ||||
| @@ -1,6 +1,6 @@ | |||||
| <html> | <html> | ||||
| <head> | <head> | ||||
| <title>易修状态改变</title> | |||||
| <title>疑修状态改变</title> | |||||
| <style type="text/css"> | <style type="text/css"> | ||||
| body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td{ margin:0; padding:0;} | body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td{ margin:0; padding:0;} | ||||
| body,table,input,textarea,select,button { font-family: "微软雅黑","宋体"; font-size:12px;line-height:1.5; background:#eaebec;} | body,table,input,textarea,select,button { font-family: "微软雅黑","宋体"; font-size:12px;line-height:1.5; background:#eaebec;} | ||||
| @@ -31,7 +31,7 @@ | |||||
| <div style="width: 558px; border-left:1px solid #ddd;border-right:1px solid #ddd; background:#fff; padding:20px; color:#333; line-height: 1.9;"> | <div style="width: 558px; border-left:1px solid #ddd;border-right:1px solid #ddd; background:#fff; padding:20px; color:#333; line-height: 1.9;"> | ||||
| <p style="font-size: 14px; color:#333;"> | <p style="font-size: 14px; color:#333;"> | ||||
| {receiver},您好!<br/> | {receiver},您好!<br/> | ||||
| <a href="{baseurl}/{login}" style="font-weight:bold;color:#3b94d6;">{nickname}</a>已将易修 {title} 删除 | |||||
| <a href="{baseurl}/{login}" style="font-weight:bold;color:#3b94d6;">{nickname}</a>已将疑修 {title} 删除 | |||||
| </p> | </p> | ||||
| <div style="width: 100%; border-top: 1px solid #ddd; margin:10px 0;"></div> | <div style="width: 100%; border-top: 1px solid #ddd; margin:10px 0;"></div> | ||||
| </div> | </div> | ||||
| @@ -1,6 +1,6 @@ | |||||
| <html> | <html> | ||||
| <head> | <head> | ||||
| <title>管理的仓库有新的易修</title> | |||||
| <title>管理的仓库有新的疑修</title> | |||||
| <style type="text/css"> | <style type="text/css"> | ||||
| body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td{ margin:0; padding:0;} | body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td{ margin:0; padding:0;} | ||||
| body,table,input,textarea,select,button { font-family: "微软雅黑","宋体"; font-size:12px;line-height:1.5; background:#eaebec;} | body,table,input,textarea,select,button { font-family: "微软雅黑","宋体"; font-size:12px;line-height:1.5; background:#eaebec;} | ||||
| @@ -31,7 +31,7 @@ | |||||
| <div style="width: 558px; border-left:1px solid #ddd;border-right:1px solid #ddd; background:#fff; padding:20px; color:#333; line-height: 1.9;"> | <div style="width: 558px; border-left:1px solid #ddd;border-right:1px solid #ddd; background:#fff; padding:20px; color:#333; line-height: 1.9;"> | ||||
| <p style="font-size: 14px; color:#333;"> | <p style="font-size: 14px; color:#333;"> | ||||
| {receiver},您好!<br/> | {receiver},您好!<br/> | ||||
| <a href="{baseurl}/{login1}" style="font-weight:bold;color:#3b94d6;">{nickname1}</a>在 {nickname2}/{repository} 新建了一个易修:<a href="{baseurl}/{login2}/{identifier}/issues/{id}" style="font-weight:bold;color:#3b94d6;">{title}</a><br/> | |||||
| <a href="{baseurl}/{login1}" style="font-weight:bold;color:#3b94d6;">{nickname1}</a>在 {nickname2}/{repository} 新建了一个疑修:<a href="{baseurl}/{login2}/{identifier}/issues/{id}" style="font-weight:bold;color:#3b94d6;">{title}</a><br/> | |||||
| </p> | </p> | ||||
| <div style="width: 100%; border-top: 1px solid #ddd; margin:10px 0;"></div> | <div style="width: 100%; border-top: 1px solid #ddd; margin:10px 0;"></div> | ||||
| </div> | </div> | ||||