Compare commits

...

1690 Commits

Author SHA1 Message Date
xxqfamous 09e674f0c1 竞赛用户关联优化 2023-05-30 11:12:21 +08:00
xxq250 6b68de130c fixed 提交者匹配用户email 2023-05-18 09:17:27 +08:00
yystopf 67d7d11c62 修复:&to? 2023-04-21 14:22:38 +08:00
yystopf 6c26450924 修复:readme图片不展示 2023-04-21 14:08:59 +08:00
yystopf c91b986bec 新增:用户签署cla字段 2023-04-20 11:39:42 +08:00
yystopf 881acd2480 新增:用户签署cla字段 2023-04-20 11:31:34 +08:00
yystopf e815b0a8ac 更改:检查用户id的路由 2023-04-19 18:11:11 +08:00
yystopf a578b7277a 更改:检查用户id不需要登录 2023-04-19 17:32:27 +08:00
yystopf 421a64e8ca 移除:project_topics接口的includes 2023-04-19 16:56:09 +08:00
yystopf a38ebeaca2 新增:检查用户id的接口 2023-04-19 16:45:10 +08:00
yystopf 71862ba6d6 修复 2023-04-19 10:26:07 +08:00
yystopf 82ba843d7d 新增:发送邮件及短信次数控制 2023-04-19 10:15:07 +08:00
yystopf 031f276983 更改:校验scope新增project_id 2023-04-18 10:08:17 +08:00
yystopf f078c59cf4 新增:项目标记已存在validate 2023-04-18 09:44:34 +08:00
yystopf 578acd7845 新增:贡献者代码行接口 2023-04-17 11:35:28 +08:00
yystopf 348f7b71ba Merge pull request 'webhook自定义事件' (#43) from feature_custom_webhook into develop 2023-04-14 11:39:47 +08:00
yystopf 71bf2137ac 更改:项目标记不能清空 2023-04-14 11:19:23 +08:00
yystopf 8ac7b6a7e7 更改:webhook历史记录部分字段编码级 2023-04-13 20:17:47 +08:00
yystopf 16dbb87526 修复:部分issue 2023-04-13 19:56:43 +08:00
yystopf 2c3b7c6fa2 Merge pull request '修复webhook中tags与assigners为空的问题' (#44) from KingChan/forgeplus:chenjing into feature_custom_webhook 2023-04-13 17:24:50 +08:00
chenjing 1e7cffd716 fix issue webhook error 2023-04-13 17:21:09 +08:00
yystopf 6eea21821f 修复 2023-04-13 11:17:46 +08:00
yystopf 64f34cc868 更改:项目标识提示语 2023-04-13 11:12:27 +08:00
yystopf e7598642fd 更改:项目标识不能以.结尾 2023-04-13 11:06:58 +08:00
yystopf a69e4e5014 新增:webhook client里数据reload 2023-04-13 09:42:12 +08:00
yystopf 1e3ad9e988 更改:异常处理 2023-04-13 09:30:00 +08:00
yystopf 4bd60d458e 更改:webhook更新返回结构体 2023-04-12 18:34:49 +08:00
yystopf 3769e13c1c 新增:select字段增加created_on 2023-04-12 16:12:52 +08:00
yystopf 0830850518 更改:下载文件以及查看文件逻辑 2023-04-12 14:51:27 +08:00
yystopf ccede16716 更改:events返回数据处理 2023-04-11 14:41:12 +08:00
yystopf f64afb8f55 新增:创建数据延迟5秒触发webhook 2023-04-11 14:11:17 +08:00
yystopf 8663efc73b 新增:创建数据延迟5秒触发webhook 2023-04-11 14:10:24 +08:00
yystopf ef10155387 更改:events回到原来版本 2023-04-11 13:58:42 +08:00
yystopf bea2831149 修复:更改issue评论事件触发逻辑 2023-04-11 13:55:25 +08:00
yystopf afa1cdf842 新增:评论丰富更新删除操作,issue事件粒度更细 2023-04-11 11:52:03 +08:00
yystopf 7f0989f69d 更改:payload中过滤emoji 2023-04-11 10:16:38 +08:00
yystopf 1a3a7967fd 更改:payload中过滤emoji 2023-04-11 10:16:38 +08:00
yystopf ee20824639 修复:未传当前用户id 2023-04-11 10:16:38 +08:00
chenjing 661d1c2c06 update touch webhook 2023-04-11 10:16:38 +08:00
chenjing 39c2166c12 update pr model and webhook 2023-04-11 10:16:38 +08:00
yystopf cd489d3b97 修改:自定义事件 2023-04-11 10:16:38 +08:00
chenjing 769c8a0194 webhook for issue 2023-04-11 10:16:38 +08:00
yystopf 91dfc94a7b 修复:无法正常显示response_content 2023-04-11 10:16:38 +08:00
yystopf b4672929dc 新增:触发webhook的job 2023-04-11 10:16:38 +08:00
yystopf 17279c56f4 新增:webhook service 2023-04-11 10:16:38 +08:00
yystopf d59e99feca 修复:合并请求更新失败 2023-04-11 10:12:24 +08:00
yystopf f81772064d 更改:项目列表使用topic_id查询时应返回对应的总数 2023-04-10 15:35:47 +08:00
yystopf 3c70bfe267 Merge pull request '项目搜索标签相关' (#42) from yystopf/forgeplus:hh_project_topic into develop 2023-04-07 17:22:54 +08:00
yystopf 60b0ee6b28 更改:项目标识提示语 2023-04-07 11:27:19 +08:00
yystopf d8eba81afd 更改:webhook返回数据特殊处理 2023-04-07 11:13:17 +08:00
yystopf eabf404682 更改:查询项目排除.json 2023-04-07 10:57:13 +08:00
yystopf 39a851b74b 更改 2023-04-07 10:35:44 +08:00
yystopf 4329236237 修改:router匹配.json 2023-04-07 10:32:57 +08:00
yystopf 63196e018a 更改:创建项目标识正则规则以及带.仓库无法正常显示的问题 2023-04-06 16:47:23 +08:00
yystopf 7a6d549fa0 新增:项目搜索标签删除逻辑 2023-04-06 15:40:01 +08:00
yystopf 08f89fd113 更改:详情新增项目搜索标签返回 2023-04-06 14:31:59 +08:00
yystopf 1f7a1ce73d 新增:项目搜索标签可在项目设置接口更改 2023-04-06 14:31:59 +08:00
yystopf b336a1f334 新增:项目搜索标签功能 2023-04-06 14:31:59 +08:00
yystopf 7fdbc3dad1 更改:api文档官网地址 2023-04-04 16:57:54 +08:00
yystopf b9998ecf4b 修复:提示使用tip_exception 2023-04-04 16:13:31 +08:00
yystopf 1e3fd4dfbc fix 2023-04-04 14:02:50 +08:00
yystopf 844d121c7f 更改:登录成功之后清除失败次数 2023-04-04 14:00:09 +08:00
yystopf 05b3317152 新增:文件变更路径使用base64 2023-04-03 17:13:38 +08:00
yystopf adce0c9627 更改:readme获取使用owner token 2023-04-03 09:39:41 +08:00
yystopf 6f0595616d 修复:更新邮箱失败 2023-03-31 17:23:58 +08:00
yystopf 5226196f4e 更改:用户管理的项目需包括admin团队下的 2023-03-31 14:58:00 +08:00
yystopf 56790f8558 更改:贡献度读取数据规则 2023-03-31 11:18:58 +08:00
yystopf 53458dab8f 修复:分支返回更改为数组 2023-03-31 10:31:10 +08:00
yystopf c78badf091 修复:创建发行版403 2023-03-31 10:11:30 +08:00
yystopf b1ebee31a3 Merge pull request 'gitea服务更新为gitea_hat' (#35) from feature_gitea_upgrade into develop 2023-03-30 14:21:15 +08:00
yystopf e1b17d1dfa 新增:webhook类型softbot 2023-03-30 11:44:39 +08:00
yystopf 4bf14974df 新增:项目是否创建了pr参数 2023-03-28 15:51:51 +08:00
yystopf 1e75c8c079 修复:自动更改项目语言触发回调 2023-03-28 14:22:39 +08:00
yystopf a9ecb5e47e 更改:更改发行版权限降至开发者 2023-03-27 15:11:21 +08:00
yystopf 67fb6fce94 修复:读取仓库数据使用拥有者token 2023-03-27 14:16:06 +08:00
yystopf f5db3273cd 修复:读取仓库数据使用拥有者token 2023-03-27 13:55:12 +08:00
yystopf 01467a3d2a 新增:个人项目分页limit使用9999 2023-03-24 14:37:42 +08:00
yystopf b37ff07bcf 新增:个人项目分页limit使用9999 2023-03-24 14:34:42 +08:00
yystopf 2683b03a69 更改: 查询数据使用owner的token 2023-03-24 14:23:11 +08:00
yystopf d6888a03e3 更改:下载使用owner的gitea_token 2023-03-24 14:10:33 +08:00
yystopf 0fc705fcde 新增:个人主页项目新增admin查询我管理的仓库 2023-03-24 10:56:17 +08:00
yystopf b127323589 更改:关注、点赞、fork项目更新时间,以及issue列表返回里程碑ID 2023-03-23 10:41:52 +08:00
yystopf a1cec48c81 Merge branch 'hh_gitea_upgrade' into feature_gitea_upgrade 2023-03-22 18:06:26 +08:00
yystopf a02a15ac12 修复:heatmap无法获取 2023-03-22 18:04:35 +08:00
yystopf 33606c8cd2 Merge branch 'hh_gitea_upgrade' into feature_gitea_upgrade 2023-03-21 18:40:32 +08:00
yystopf 132eb79b9f 修复:achive文件下载 2023-03-21 18:36:40 +08:00
yystopf 50696de804 修复:heatmap无法正常显示 2023-03-21 17:48:02 +08:00
yystopf 26ea240303 修复 2023-03-21 15:59:19 +08:00
yystopf 565dc5f837 Merge pull request '新增重置用户gitea token' (#34) from KingChan/forgeplus:chenjing into feature_gitea_upgrade 2023-03-20 16:15:09 +08:00
yystopf 230ab8e937 Merge branch 'hh_gitea_upgrade' into feature_gitea_upgrade 2023-03-20 16:14:43 +08:00
yystopf 1ce55b27f4 修复:疑修列表切换关闭status count不变 2023-03-20 16:13:29 +08:00
chenjing 7da1c7e13b add admin user view button for gitea token reset 2023-03-20 15:25:47 +08:00
chenjing 0a7c41d97c user fresh gitea token method 2023-03-20 14:47:48 +08:00
yystopf a630753485 修复:批量修改文件查询分支Hash to Array 2023-03-20 10:11:20 +08:00
chenjing ac49edc8e8 remove user list th 2023-03-17 08:44:48 +08:00
yystopf ed712b0dc8 Merge branch 'hh_gitea_upgrade' into feature_gitea_upgrade 2023-03-16 17:45:48 +08:00
yystopf c02ea218b3 更改:贡献者返回信息 2023-03-16 17:44:11 +08:00
yystopf cd25e0183d Merge pull request '【后台管理】完善用户管理模块-未用到字段移除' (#33) from KingChan/forgeplus:chenjing into feature_gitea_upgrade 2023-03-16 17:18:16 +08:00
chenjing bd110bac00 remove identity for admins user 2023-03-16 16:48:00 +08:00
yystopf c65896c11d Merge pull request 'gitea升级为gitea_hat相关修改' (#32) from yystopf/forgeplus:hh_gitea_upgrade into feature_gitea_upgrade 2023-03-16 16:26:46 +08:00
yystopf 24fe22398e 修复 2023-03-16 16:09:42 +08:00
yystopf 9c1b21f246 修复 2023-03-16 15:46:56 +08:00
yystopf 2c9d2746ba 修复:readme 修复 2023-03-16 15:39:49 +08:00
yystopf 5a2e642579 修复:readme 修复 2023-03-16 11:33:39 +08:00
yystopf b551f97c54 Merge pull request '疑修升级后续优化' (#31) from yystopf/forgeplus:hh_notice_claim into develop 2023-03-16 10:18:17 +08:00
yystopf 77b3c20e15 更新:gitea client版本 2023-03-16 09:47:11 +08:00
yystopf 5207d90174 新增:返回疑修序号 2023-03-16 09:42:12 +08:00
yystopf 7bda0fd126 更改:声明消息用户 2023-03-15 10:30:02 +08:00
yystopf 13e266aa28 修复:合并请求指派人员无法正常更新 2023-03-14 17:34:59 +08:00
yystopf d9b2e98110 新增:webhook http_method修复 2023-03-14 17:34:59 +08:00
yystopf 222de17437 修复 2023-03-14 17:34:58 +08:00
yystopf 36dbf76d80 修复 2023-03-14 17:34:58 +08:00
yystopf de1e931c2f 更改:贡献者获取规则以及分支列表同步旧版 2023-03-14 17:34:58 +08:00
yystopf 54b7cef1bd 同步develop最新代码后更改client 2023-03-14 17:34:58 +08:00
yystopf 8463518ade 修复:tags列表commiter更改为committer 2023-03-14 17:34:58 +08:00
yystopf 718457888d 更新:client调用以及gitea_client日志文件设置 2023-03-14 17:34:58 +08:00
yystopf ad9c5fe0fb 更新:readme中gitea配置 2023-03-14 17:34:58 +08:00
yystopf 2326bde96d 更改:gemfile回退 2023-03-14 17:34:57 +08:00
yystopf 8e9c2232b0 新增:新版gitea路由请求地址 2023-03-14 17:34:57 +08:00
yystopf fca06c9816 修复:操作日志用户显示为real_name 2023-03-14 14:02:39 +08:00
yystopf 4318293c1f 更改:时间范围需包括临界值 2023-03-14 13:52:46 +08:00
yystopf d3f10d0814 新增:疑修创建时间范围查询 2023-03-13 15:41:07 +08:00
yystopf b33c040874 更改:标记默认文案 2023-03-13 14:41:54 +08:00
yystopf 2b63d48ecb 新增:声明感知消息 2023-03-13 14:36:32 +08:00
yystopf 9c5d1e2900 修复:操作日志兼容旧数据负责人指派 2023-03-10 18:09:17 +08:00
xxq250 6f7b40ec24 fixed 搜索用户项目时过虑表情字符 2023-03-09 16:22:48 +08:00
xxq250 d993df7df4 fixed 搜索用户时过虑表情字符 2023-03-09 16:07:38 +08:00
yystopf 917bae4321 新增:创建疑修消息修复 2023-03-09 11:09:04 +08:00
yystopf 4b618d1a61 修复:消息通知issue跳转使用index 2023-03-09 10:33:00 +08:00
yystopf 620ed26e45 更改:评论列表分页数量限制变大 2023-03-06 17:49:28 +08:00
yystopf 5580a96fe7 修复 2023-03-06 10:42:12 +08:00
yystopf 2827e28b07 新增:评论/操作记录总数返回 2023-03-06 10:33:26 +08:00
yystopf b5383bfa5a 修复:消息内容修复 2023-03-03 18:43:18 +08:00
yystopf bc862f8d98 修复:部分用户无法收到消息 2023-03-03 18:01:46 +08:00
yystopf 5216e61479 更改:移除操作日志中标记的色值 2023-03-01 16:34:27 +08:00
yystopf ce70378fc3 Merge branch 'develop' into standalone_develop 2023-03-01 16:29:45 +08:00
yystopf cbb0a639b2 Merge pull request '平台issue模块升级相关' (#24) from yystopf/forgeplus:hh_issue_upgrade into develop 2023-03-01 16:29:19 +08:00
yystopf a654a08e0c Merge branch 'develop' into standalone_develop 2023-03-01 14:40:26 +08:00
yystopf b8724c02f7 修复:组织权限关于操作权限部分 2023-03-01 14:40:11 +08:00
yystopf e59e4e4bd5 修复 2023-02-28 17:05:38 +08:00
yystopf ec44376e4d 修复:issue 评论中@无参与记录 2023-02-28 16:57:44 +08:00
xxq250 a80b4d954e dockerfile可预览 2023-02-28 16:03:33 +08:00
xxq250 2842df87c6 群智熵分析报表接口调整到项目动态接口 2023-02-28 15:01:23 +08:00
xxq250 6f9d902e70 群智熵分析报表接口调整到项目动态接口 2023-02-28 14:59:06 +08:00
yystopf 4091872091 更改:默认标记任务色值 2023-02-28 14:40:27 +08:00
xxq250 5a7aaff112 群智熵分析报表接口调整到项目动态接口 2023-02-28 09:37:18 +08:00
xxq250 558d720203 群智熵分析报表接口调整到项目动态接口 2023-02-28 09:26:45 +08:00
xxq250 46da5a0d84 群智熵分析报表接口调整 2023-02-27 16:41:40 +08:00
xxq250 f59ab5bcf1 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2023-02-27 16:02:13 +08:00
xxq250 f8350c4043 群智熵分析报表接口 2023-02-27 16:02:08 +08:00
yystopf ed7f5a08bb 修复:rake任务 2023-02-27 15:17:10 +08:00
yystopf acaa28cd02 修复:last index 获取方式 2023-02-27 15:13:35 +08:00
yystopf ddb5010e6d 修复:issue 查询需排除pr下issue 2023-02-27 15:04:18 +08:00
yystopf f05cf0c000 修复 2023-02-27 14:12:25 +08:00
yystopf ff025e07dd 新增:里程碑列表支持id查询 2023-02-27 11:25:37 +08:00
yystopf 4c26085e58 修复 2023-02-27 11:07:09 +08:00
yystopf a30a3c56b6 修复 2023-02-27 10:55:53 +08:00
yystopf 2e0b32f86b 修复:atme和issue category 无法正常搜索 2023-02-27 10:46:56 +08:00
yystopf dab636d122 修复 2023-02-24 15:26:40 +08:00
yystopf b616c971db 修复 2023-02-24 14:32:21 +08:00
yystopf 35bb8fbc11 修复 2023-02-24 10:24:57 +08:00
yystopf 267279df2d 修复 2023-02-24 09:04:29 +08:00
yystopf e53d6cd763 修复 2023-02-23 21:03:40 +08:00
yystopf 3fd04109d6 修复 2023-02-23 20:54:48 +08:00
yystopf 8487c67bab 修复:issue_classify 使用小写 2023-02-23 17:32:55 +08:00
yystopf dc01d7fc3e 修复 2023-02-23 16:18:09 +08:00
yystopf 7cb2321c02 修复 2023-02-23 15:31:03 +08:00
yystopf c589fcc6a4 修复 2023-02-23 15:27:26 +08:00
yystopf 1fcdbe9dce 修复 2023-02-23 15:26:30 +08:00
yystopf dc9ca7d0ca 更改:疑修param为index以及新增统计标签下合并请求数量 2023-02-23 15:24:30 +08:00
yystopf edc00d28a7 新增:标记列表返回合并请求数量 2023-02-22 16:25:40 +08:00
yystopf 317ff3c76b 修复 2023-02-22 16:05:24 +08:00
yystopf c781ca0da1 更改:部分细节问题 2023-02-22 15:56:44 +08:00
yystopf a07da79e89 修复:重复初始化标签问题 2023-02-22 14:42:52 +08:00
yystopf 54a85a60fa 更改:疑修列表开启、关闭数量规则以及排序规则 2023-02-22 13:56:12 +08:00
xxq250 895cd8f737 Merge pull request '修复bug' (#26) from KingChan/forgeplus:chenjing into standalone_develop 2023-02-22 10:55:39 +08:00
chenjing 54b7f2c726 fix api/users/:login/headmaps.json bug 2023-02-22 10:48:23 +08:00
chenjing e440ee8483 api/users/{{user}}/messages add check auth 2023-02-22 10:38:40 +08:00
yystopf ed5d12654e 修复 2023-02-22 09:57:39 +08:00
yystopf 8239f13eaa 新增:要求登录接口处理 2023-02-22 09:55:05 +08:00
xxq250 6c1f9cabda fixed 左侧菜单组织列表 2023-02-22 09:38:32 +08:00
xxq250 5f3d51027e fixed 左侧菜单组织列表 2023-02-22 09:36:13 +08:00
xxq250 84029bf49a Merge pull request '用户版块增加组织列表' (#25) from KingChan/forgeplus:chenjing into standalone_develop 2023-02-22 09:29:39 +08:00
chenjing ee77be7c8a fix 2023-02-22 09:25:49 +08:00
chenjing 05f103b0c4 team count and delete orgs 2023-02-22 09:24:11 +08:00
chenjing ac8372d7e1 orgs search 2023-02-22 09:24:11 +08:00
chenjing b9e2a3736c admins org list 2023-02-22 09:24:11 +08:00
yystopf 311776a004 修复:标签列表无id返回 2023-02-21 18:30:29 +08:00
xxq250 12eaec0319 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2023-02-21 16:43:53 +08:00
xxq250 47a5fe24c8 调整Bot授权接口,fixed注册信息手机号 2023-02-21 16:43:28 +08:00
yystopf 4a3d1e5a69 Merge branch 'develop' into standalone_develop 2023-02-21 15:40:08 +08:00
yystopf 3a5d8e75df 修改:后台管理sidebar冲突 2023-02-21 15:39:52 +08:00
yystopf 23a65798df Merge branch 'develop' into standalone_develop 2023-02-21 15:31:58 +08:00
yystopf cab5466ae4 更改:项目排行榜项目需显示全称 2023-02-21 15:31:00 +08:00
yystopf b18051ec31 新增:里程碑相关数量返回 2023-02-21 13:55:40 +08:00
yystopf 02526878fe 修复:更新无法设置空值 2023-02-20 18:22:14 +08:00
yystopf 4657618753 新增:修复数据rake任务 2023-02-20 17:25:07 +08:00
yystopf cb3bb23e79 新增:操作权限 2023-02-20 16:47:19 +08:00
yystopf 656d5b69b6 新增:接口附件内容返回 2023-02-20 13:54:00 +08:00
yystopf 121fa2bff4 新增:里程碑相关接口 2023-02-20 11:42:22 +08:00
yystopf c63a86a797 新增:评论相关接口补足 2023-02-18 23:23:33 +08:00
yystopf 15d71bfd24 修复:创建数据无法创建负责人 2023-02-17 17:40:09 +08:00
xxq250 df38df45d5 fixed 向jianmu推送时项目不存在时处理 2023-02-17 17:24:27 +08:00
yystopf b85913e485 新增:疑修操作记录、评论列表接口以及更新疑修无法产生操作记录修复 2023-02-17 16:11:39 +08:00
xxq250 3427fa6768 新增时向grimoirelab推送事件,修正 2023-02-16 16:11:40 +08:00
xxq250 e92b288f41 新增时向grimoirelab推送事件,异常处理,log 2023-02-16 16:07:51 +08:00
xxq250 0725ef74de 新增时向grimoirelab推送事件,异常处理 2023-02-16 15:54:43 +08:00
xxq250 00bb1e82af 新增时向grimoirelab推送事件,异常处理 2023-02-16 15:51:06 +08:00
xxq250 f93e665239 新增时向grimoirelab推送事件 2023-02-16 15:46:15 +08:00
xxq250 d578c5c8df 新增时向grimoirelab推送事件 2023-02-16 15:44:42 +08:00
xxq250 c872f50685 新增时向grimoirelab推送事件 2023-02-16 15:42:15 +08:00
xxq250 368be1849c 新增时向grimoirelab推送事件 2023-02-16 15:41:20 +08:00
xxq250 7d3d95c406 新增时向grimoirelab推送事件 2023-02-16 15:37:01 +08:00
xxq250 5c3c47d13b 调整Bot授权接口 2023-02-16 14:37:16 +08:00
xxq250 676d2ddce1 调整Bot授权接口 2023-02-16 13:52:38 +08:00
xxq250 3d0fa0d50c 调整Bot授权接口 2023-02-16 11:01:21 +08:00
xxq250 3c51d69555 调整Bot授权接口 2023-02-16 09:57:25 +08:00
xxq250 1d9df770b5 调整Bot授权接口 2023-02-16 09:41:39 +08:00
xxq250 c0fcf3445a 调整Bot授权接口 2023-02-16 09:40:08 +08:00
xxq250 6fe16c7c82 调整Bot授权接口 2023-02-16 09:19:37 +08:00
xxq250 5e7fe0f28c Merge branch 'standalone_develop' of https://gitlink.org.cn/Trustie/forgeplus into standalone_develop 2023-02-15 18:38:24 +08:00
xxq250 1cd43de75b 增加Bot授权相关 2023-02-15 18:37:36 +08:00
yystopf 2a8e0d2be8 新增:标记管理接口,以及列表下拉框搜索参数 2023-02-15 17:24:36 +08:00
yystopf c38a4e4e08 Merge branch 'standalone_develop' of https://gitlink.org.cn/Trustie/forgeplus into standalone_develop 2023-02-15 11:31:02 +08:00
yystopf 202be8246b Merge branch 'develop' into standalone_develop 2023-02-15 11:30:54 +08:00
yystopf 774210206e 修复:支持以.开头文件的代码预览 2023-02-15 11:30:33 +08:00
yystopf 2899f3b18e 修复:删除、更改逻辑测试修改 2023-02-15 11:25:42 +08:00
yystopf 404a6a00e7 新增:issue编辑删除接口 2023-02-14 23:19:17 +08:00
xxq250 f0c1e9e319 项目搜索结果同步es结果 2023-02-13 11:27:44 +08:00
xxq250 7d17b654f6 更新gems源 2023-02-13 10:22:36 +08:00
yystopf db2d398d94 更改:participants创建规则 2023-02-13 09:43:26 +08:00
xxq250 c0271707a1 fixed merge 2023-02-10 21:46:24 +08:00
xxq250 0af87a67ec fixed merge 2023-02-10 17:54:12 +08:00
yystopf 7bce320113 修复:冲突代码回归 2023-02-10 16:23:06 +08:00
yystopf 4a8e3324af 修复 2023-02-10 15:39:09 +08:00
yystopf 3a14aa10ce Merge branch 'develop' into standalone_develop 2023-02-10 13:44:43 +08:00
yystopf b799780637 Merge pull request '分支标签页面改版' (#23) from yystopf/forgeplus:hh_branch_tag into develop 2023-02-10 13:43:57 +08:00
yystopf 53c2ffffb3 新增:疑修创建以及详情接口 2023-02-10 11:38:51 +08:00
yystopf 934b42f1a1 新增:优先级和所有仓库成员接口 2023-02-09 16:20:16 +08:00
yystopf c1d791741c 修复:无法正常查询关联数据 2023-02-09 10:15:59 +08:00
yystopf 1aeed8236d 更改:部分接口传参以及路由修复 2023-02-09 09:29:02 +08:00
yystopf f0750333f9 修复 2023-02-08 16:57:42 +08:00
yystopf 4085da7837 新增:issue和里程碑列表接口 2023-02-08 16:56:01 +08:00
yystopf ade03c5e2f 新增:issue参与记录 2023-02-08 16:55:20 +08:00
yystopf fe972f1141 新增:项目标记接口 2023-02-08 10:15:29 +08:00
yystopf af67d984b4 新增:里程碑接口 2023-02-08 09:49:02 +08:00
yystopf 241bbc06ca 新增:issue负责人变更为一对多 2023-02-07 17:47:28 +08:00
yystopf 587facfb3d 新增:发布人和状态接口 2023-02-07 17:12:43 +08:00
yystopf 8210404f4a Merge branch 'develop' into standalone_develop 2023-02-07 15:56:52 +08:00
yystopf 128c5c48e6 修复 2023-02-07 15:56:35 +08:00
yystopf 99be556d5b Merge branch 'develop' into standalone_develop 2023-02-07 14:24:26 +08:00
yystopf 353449c53c 修复 2023-02-07 14:23:24 +08:00
yystopf c983df57ee merge from develop 2023-02-07 14:21:32 +08:00
yystopf 39ae14bce7 新增:entry新增submodule url 2023-02-07 14:18:57 +08:00
yystopf 8c8925f3ae 修复 2023-02-07 10:39:25 +08:00
yystopf 6cfb5dfbe2 新增:删除保护分支和删除发行版提示 2023-02-07 10:33:46 +08:00
yystopf 0eb17aa90f 更改:分支列表搜索参数 2023-02-06 10:07:15 +08:00
yystopf 7c911f5b86 新增:路由匹配特殊符号 2023-02-06 09:49:36 +08:00
yystopf 0800f9e6e0 修复 2023-02-03 18:24:07 +08:00
yystopf 726453ea99 修复:tags detail 无法获取commit_user 2023-02-03 18:23:16 +08:00
yystopf bef1350933 新增:load_project新增repository 2023-02-03 18:20:00 +08:00
yystopf 2772b97e32 新增:标签列表和删除接口 2023-02-03 18:03:57 +08:00
xxq250 f2a456c6ed Merge remote-tracking branch 'origin/develop' into standalone_develop
# Conflicts:
#	app/queries/projects/list_query.rb
2023-02-03 15:52:28 +08:00
xxq250 4bc945028b fixed 项目搜索用户名失败修正 2023-02-03 15:50:33 +08:00
yystopf 8b90164247 新增:删除分支接口 2023-02-03 15:03:59 +08:00
yystopf f2cdba29ea 新增:更改默认分支接口 2023-02-03 13:45:32 +08:00
yystopf 3f78899c58 新增:branch列表接口 2023-02-03 10:53:24 +08:00
yystopf 5fc433d130 Merge branch 'develop' into standalone_develop 2023-02-02 18:30:33 +08:00
yystopf bfe14352c0 更改:codestats回退 2023-02-02 18:30:07 +08:00
yystopf a746e791b0 Merge branch 'develop' into standalone_develop 2023-02-02 18:13:19 +08:00
yystopf 87412643cd 修复 2023-02-02 18:13:02 +08:00
yystopf e4b5427725 Merge branch 'develop' into standalone_develop 2023-02-02 18:11:31 +08:00
yystopf 9fe3b5ae3e 新增:code_stats分页 2023-02-02 18:10:26 +08:00
xxq250 a03d1efcb0 fixed 如果有搜索关键字根据ES搜索结果排序 2023-02-02 14:05:40 +08:00
xxq250 2668630f2a 项目fored_count更新时updated_on同时更新 2023-02-01 17:23:48 +08:00
xxq250 785ae13649 创建仓库开通建木DevOps job延迟5秒 2023-02-01 17:03:16 +08:00
yystopf c4b93f2bd3 Merge branch 'develop' into standalone_develop 2023-02-01 15:47:43 +08:00
yystopf 913eb62923 新增:排行榜每日统计数据设置一个过期时间 2023-02-01 15:44:40 +08:00
yystopf 112ee39efd 修复:排行榜数据不展示已删除数据 2023-02-01 14:50:12 +08:00
yystopf 08d8abd163 Merge branch 'develop' into standalone_develop 2023-02-01 14:26:52 +08:00
yystopf 0229d99e74 新增:后台管理排行榜数据 2023-02-01 14:25:55 +08:00
yystopf 40873fe95d Merge branch 'develop' into standalone_develop 2023-01-09 15:40:12 +08:00
yystopf dfe56d9f75 修复 2023-01-09 15:39:49 +08:00
yystopf 5f46d205a9 Merge branch 'develop' into standalone_develop 2023-01-09 15:15:32 +08:00
yystopf fdb713b76d 更改:更改用户邮箱移除旧的cache 2023-01-09 15:14:51 +08:00
xxq250 3677bf1bbc Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2023-01-06 11:17:38 +08:00
xxq250 56d9a4f46b fixed 代码贡献者email 2023-01-06 11:17:19 +08:00
xxq250 7c80f74e26 fixed 代码贡献者email 2023-01-06 11:16:50 +08:00
yystopf e1c600a2f5 更改:分页大小最高限制为50 2023-01-05 15:40:03 +08:00
yystopf ead5753f65 Merge branch 'develop' into standalone_develop 2023-01-04 11:38:41 +08:00
yystopf a274fa913d 更改:项目排行榜缓存键加入时间参数 2023-01-04 11:38:07 +08:00
yystopf dd979eb1d0 Merge branch 'develop' into standalone_develop 2023-01-04 09:43:27 +08:00
yystopf 6b9adefde2 修复:action使用正确 2023-01-04 09:43:18 +08:00
yystopf 872a2b334b Merge branch 'develop' into standalone_develop 2023-01-04 09:19:55 +08:00
yystopf cec764127e 更改:项目排行榜规则及个数 2023-01-04 09:19:42 +08:00
xxq250 b8af22e3bc fixed 授权登录绑定账号 2022-12-30 10:33:11 +08:00
xxq250 18ad80c51c fixed 授权登录绑定账号 2022-12-30 10:26:59 +08:00
xxq250 05933c9eff fixed 项目列表增加私有组织中项目过滤 2022-12-28 09:32:53 +08:00
xxq250 6047d6a91b fixed 创建仓库开通建木DevOps url修正 2022-12-27 15:40:19 +08:00
xxq250 a04cad32cf fixed 授权登录绑定账号返回用户信息 2022-12-26 16:24:27 +08:00
xxq250 346ca9eb27 fixed 授权登录绑定账号返回用户信息 2022-12-26 16:15:18 +08:00
xxq250 0a44e84540 fixed 授权登录绑定账号返回用户信息 2022-12-26 16:09:43 +08:00
xxq250 87ee19e882 fixed 授权登录绑定账号返回用户信息 2022-12-26 11:19:58 +08:00
xxq250 3459054349 fixed 授权登录绑定账号 2022-12-22 17:04:50 +08:00
xxq250 d821006cb5 fixed 邮件发送模板 2022-12-16 12:03:51 +08:00
xxq250 aba1dad1ea fixed 创建仓库开通建木DevOps log 2022-12-15 17:54:52 +08:00
xxq250 859d72f7d7 fixed 创建仓库开通建木DevOps通知传递用户 2022-12-15 16:45:28 +08:00
xxq250 b2310fb98b fixed 创建仓库开通建木DevOps log 2022-12-15 16:33:00 +08:00
xxq250 672107412b fixed 创建仓库开通建木DevOps job 2022-12-15 15:06:02 +08:00
xxq250 454baf8010 fixed 创建仓库开通建木DevOps 404 2022-12-15 14:25:42 +08:00
xxq250 1de784e9c7 fixed 创建仓库开通建木DevOps 2022-12-15 14:02:47 +08:00
xxq250 46f388999d fixed 创建仓库开通建木DevOps 2022-12-15 13:53:34 +08:00
xxq250 1a0390bf55 fixed 创建仓库开通建木DevOps 2022-12-15 11:47:11 +08:00
xxq250 2f9a514837 fixed 创建仓库开通建木DevOps 2022-12-15 11:41:11 +08:00
xxq250 311852234f fixed 创建仓库开通建木DevOps 2022-12-15 11:38:03 +08:00
yystopf 0f8d2e6a5d 更改:gitea-client 版本更新 2022-12-12 14:25:02 +08:00
xxq250 309ba151be fixed qq认证密钥读取错误 2022-12-09 17:54:34 +08:00
xxq250 69065d1e5a 项目列表增加私有组织中项目过滤 2022-12-09 15:42:47 +08:00
xxq250 45aa49f27d 项目列表增加私有组织中项目过滤 2022-12-09 15:39:33 +08:00
xxq250 d9833ef1bf 更改组织可见性为私有,则需将该组织下的所有仓库同步更改为私有仓库 2022-12-09 14:18:19 +08:00
xxq250 68c05c8df1 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-12-09 14:03:46 +08:00
xxq250 f796d1be42 更改组织可见性为私有,则需将该组织下的所有仓库同步更改为私有仓库 2022-12-09 14:03:41 +08:00
yystopf a15d0827b7 merge from develop 2022-12-09 11:49:26 +08:00
yystopf 204554b34c Merge branch 'develop' of https://gitlink.org.cn/Trustie/forgeplus into develop 2022-12-09 11:45:36 +08:00
yystopf bc2992cc3d 新增:后台管理更改用户信息邮箱需同步至gitea 2022-12-09 11:45:31 +08:00
xxq250 a631d423c6 fixed 项目跳转链接修正 2022-12-09 11:07:00 +08:00
xxq250 edd1d27b0a fixed 用户项目跳转链接修正 2022-12-09 11:04:24 +08:00
xxq250 3edac3656a fixed 下载文件类增加xlsx,Makefile可显示 2022-12-08 18:14:43 +08:00
xxq250 487630ad1c fixed 下载文件类增加xlsx,Makefile可显示 2022-12-08 17:28:31 +08:00
xxq250 3db761e2ae fixed 下载文件类增加xlsx,Makefile可显示 2022-12-08 17:25:54 +08:00
xxq250 988ebf3fc3 fixed 下载文件类增加xlsx,Makefile可显示 2022-12-08 17:19:03 +08:00
xxq250 6350d2e5a9 fixed 下载文件类增加xlsx,Makefile可显示 2022-12-08 17:19:02 +08:00
xxq250 d0b638cbc0 fixed 下载文件类增加xlsx,Makefile可显示 2022-12-08 17:16:21 +08:00
xxq250 1c16b74f1b fixed 下载文件类增加xlsx,Makefile可显示 2022-12-08 17:15:33 +08:00
xxq250 1aab51104f fixed 第三方授权登录配置支持Get方法 2022-12-08 14:35:46 +08:00
yystopf 983f488177 fixed 第三方授权登录配置支持Get方法 2022-12-08 14:31:20 +08:00
yystopf a01c98164a Merge branch 'develop' into standalone_develop 2022-12-08 11:52:38 +08:00
yystopf dfa0f1161d Merge branch 'develop' of https://gitlink.org.cn/Trustie/forgeplus into develop 2022-12-08 11:52:06 +08:00
yystopf bc6f5cec4d 新增:仓库贡献者行数查询接口 2022-12-08 11:51:59 +08:00
xxq250 7b724cfeca fixed 用户简介支持表情 2022-12-07 15:36:33 +08:00
xxq250 2238c8fcbb fixed qq命名调整,方便封装 2022-12-06 10:27:04 +08:00
xxq250 ee27c90205 fixed qq命名调整,方便封装 2022-12-06 10:24:48 +08:00
xxq250 73d89a89e2 fixed 第三方授权登录配置url 2022-12-06 10:12:41 +08:00
xxq250 534ee80523 Merge remote-tracking branch 'origin/develop' into develop 2022-12-05 17:46:25 +08:00
xxq250 daf7514afe fixed 第三方授权登录配置 2022-12-05 17:46:21 +08:00
xxq250 e41adbc4a8 fixed 第三方授权gitee登录 2022-12-05 15:50:57 +08:00
xxq250 ed7c5b0a2d fixed 第三方授权gitee登录 2022-12-05 15:49:59 +08:00
xxq250 ea187a59a0 fixed 随机密码防止溢出 2022-12-02 15:38:56 +08:00
xxq250 77087345c8 fixed 异常日志 2022-12-02 15:30:43 +08:00
xxq250 05702872b3 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-12-02 15:18:01 +08:00
xxq250 1fc79535ad fixed 错误对象 2022-12-02 15:17:57 +08:00
yystopf af8183485e merge from develop 2022-12-02 14:04:23 +08:00
yystopf 4b1f1c697e 更改:下载excel文件不走跳转 2022-12-02 13:59:41 +08:00
yystopf 77c7acd582 Merge branch 'develop' of https://gitlink.org.cn/Trustie/forgeplus into develop 2022-12-02 12:11:30 +08:00
yystopf 025a6a53e9 修复:图片无法下载的问题 2022-12-02 12:11:24 +08:00
xxq250 0747fc6849 fixed 用户名称统一nickname 2022-12-02 11:16:13 +08:00
xxq250 cbe10b4b89 fixed 第三方授权登录(github,gitee,qq,wechat),输出URL到前端 2022-12-01 18:03:06 +08:00
xxq250 5717d0c69f Merge remote-tracking branch 'origin/develop' into standalone_develop 2022-12-01 17:52:27 +08:00
xxq250 6b846b10bb fixed 第三方授权登录(github,gitee,qq,wechat) 2022-12-01 17:51:54 +08:00
xxq250 feb8c66e4b Merge remote-tracking branch 'origin/develop' into standalone_develop
# Conflicts:
#	app/controllers/concerns/register_helper.rb
#	app/controllers/oauth/base_controller.rb
2022-12-01 17:48:11 +08:00
xxq250 763d7b499e fixed 第三方授权登录(github,gitee,qq,wechat) 2022-12-01 17:22:22 +08:00
yystopf 4683b20b3d Merge branch 'develop' into standalone_develop 2022-11-29 17:09:00 +08:00
yystopf 9b39446dfb 修复:提交文件内容格式由前端决定 2022-11-29 17:08:26 +08:00
yystopf c6e77ac7ee 修复:提交文件未创建新分支时为空判断 2022-11-29 17:02:10 +08:00
yystopf f5cdb6f02d 新增:旧统计接口移除处理 2022-11-29 14:31:14 +08:00
xxq250 ed335375bb Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-11-28 16:56:51 +08:00
xxq250 f818a3ac91 fixed 用户名称统一用昵称 2022-11-28 16:56:46 +08:00
yystopf 520ed80224 更改:gitlink特殊表更改 2022-11-28 11:43:37 +08:00
yystopf 90ef8f2f2e Merge branch 'develop' into standalone_develop 2022-11-28 11:42:33 +08:00
yystopf f7ca03db81 修复:通用分支移除projects_activity表修改 2022-11-28 11:41:36 +08:00
xxq250 66a1be944a fixed 组织用户不存在 2022-11-28 11:20:44 +08:00
xxq250 8da8b021f6 Merge remote-tracking branch 'origin/develop' into develop 2022-11-28 11:20:01 +08:00
xxq250 70ba78a9b5 fixed 组织用户不存在 2022-11-28 11:19:56 +08:00
yystopf 6191ddd233 修复:通用分支移除声明表修改 2022-11-28 10:57:05 +08:00
xxq250 ee0f09c8fa Merge branch 'develop' into standalone_develop 2022-11-25 14:19:20 +08:00
xxq250 35cf298f5d fixed 增加emoji表情支持表字段,长度限制 2022-11-25 14:19:05 +08:00
xxq250 04814bafbb Merge branch 'develop' into standalone_develop 2022-11-25 14:16:01 +08:00
xxq250 ee5d959404 fixed 增加emoji表情支持表字段,长度限制 2022-11-25 14:15:47 +08:00
xxq250 15cbb9ee72 Merge branch 'develop' into standalone_develop 2022-11-25 14:11:05 +08:00
xxq250 7f47cd8d46 fixed 增加emoji表情支持表字段 2022-11-25 14:09:26 +08:00
xxq250 b68ab63eba fixed 验证码校验匹配规则修正 2022-11-24 17:41:18 +08:00
xxq250 5da6330f57 增加手机验证码校验 2022-11-24 14:30:10 +08:00
xxq250 4e244bed3a 增加手机验证码校验 2022-11-24 14:28:49 +08:00
xxq250 fd2b20ed87 个人资料修改手机号 2022-11-24 11:09:58 +08:00
xxq250 aeff21f7df Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-11-23 18:15:31 +08:00
xxq250 29d2ca63ed 取消lastname同步nickname 2022-11-23 18:15:27 +08:00
xxq250 06c0ac65bf Merge remote-tracking branch 'origin/develop' into develop 2022-11-23 17:58:56 +08:00
xxq250 8f8dab10c3 fixed 增加emoji表情支持 2022-11-23 17:58:51 +08:00
yystopf ae63f735dc merge from develop 2022-11-23 17:47:27 +08:00
yystopf a6923bf7ed 新增:get_user_info电话号码展示 2022-11-23 17:44:37 +08:00
“xxq250” 1c71eab72e fixed 增加emoji表情支持 2022-11-23 17:11:27 +08:00
“xxq250” 667dca0553 Merge remote-tracking branch 'origin/develop' into develop 2022-11-23 17:07:59 +08:00
“xxq250” f23f02cb80 fixed 增加emoji表情支持 2022-11-23 17:07:54 +08:00
“xxq250” a01831e416 fixed banner增加url跳转 2022-11-17 15:04:23 +08:00
“xxq250” 98f30b4a3e fixed banner增加url跳转 2022-11-17 15:00:49 +08:00
“xxq250” 19d32799a9 fixed banner url 2022-11-17 14:59:19 +08:00
“xxq250” 4e6e654e1f banner配置增加跳转URL 2022-11-17 14:58:51 +08:00
yystopf 8b85fc11c2 Merge branch 'develop' into standalone_develop 2022-11-16 15:28:44 +08:00
yystopf 6d3c7ddac4 修复:合并请求查询关闭类型须根据合并请求类型查询 2022-11-16 15:28:36 +08:00
yystopf 38a8191b74 Merge branch 'develop' of https://gitlink.org.cn/Trustie/forgeplus into develop 2022-11-16 15:27:54 +08:00
yystopf e183f48c02 修复:合并请求查询关闭类型须根据合并请求类型查询 2022-11-16 15:27:49 +08:00
“xxq250” 0d9accfb35 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-11-15 17:14:46 +08:00
“xxq250” 8ff5ee1eec fixed 附件下载权限 2022-11-15 17:14:12 +08:00
“xxq250” a1731f91a9 fixed 附件下载权限 2022-11-15 17:12:10 +08:00
yystopf ea7cf1cd1f 修复:排序字段 2022-11-15 15:17:06 +08:00
yystopf 9f74651a2b Merge branch 'develop' into standalone_develop 2022-11-15 14:42:07 +08:00
yystopf 255b615327 更改:项目首页分类后数量更改 2022-11-15 14:41:08 +08:00
“xxq250” 0cb6f233f3 项目搜索增加组织和用户信息搜索 2022-11-15 14:40:37 +08:00
“xxq250” 134a395ffa fixed 区分找回密码邮件标题 2022-11-15 14:31:18 +08:00
yystopf 64c6f69f56 新增:统计项目分类下私有项目的数量 2022-11-15 14:25:35 +08:00
“xxq250” 62a9941e22 fixed 项目列表查询排序优化 2022-11-15 14:00:31 +08:00
“xxq250” b05e08a1c5 项目搜索增加用户信息搜索 2022-11-15 10:47:14 +08:00
“xxq250” 64fdfd3b01 项目搜索增加用户信息搜索 2022-11-15 10:33:41 +08:00
“xxq250” 005687442e 项目搜索增加用户信息搜索 2022-11-15 10:27:19 +08:00
“xxq250” d4762d2900 项目搜索增加用户信息搜索 2022-11-15 10:25:17 +08:00
“xxq250” 518f373b88 增加ucloud短信发送通道 2022-11-15 10:03:01 +08:00
“xxq250” e0588b7863 fixed 增加邮箱发送者名称 2022-11-11 15:57:15 +08:00
“xxq250” 69037beee2 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-11-11 14:55:00 +08:00
“xxq250” babcb16c41 fixed 埋点记录 2022-11-11 14:54:54 +08:00
yystopf 6e46b683e1 Merge branch 'develop' into standalone_develop 2022-11-11 14:13:56 +08:00
yystopf 49abadfa3f 新增:合并请求合并之后挂载的issue设置为关闭 2022-11-11 14:13:38 +08:00
yystopf 4cde7c374e 更改:反馈意见编辑器隐藏上传按钮 2022-11-11 14:04:36 +08:00
yystopf 84bfdf749f Merge branch 'develop' into standalone_develop 2022-11-11 12:25:46 +08:00
yystopf b56930b9ab 修复:反馈意见发送邮件失败错误返回 2022-11-11 12:25:25 +08:00
yystopf 4a7dcf8a91 Merge branch 'develop' into standalone_develop 2022-11-11 11:50:26 +08:00
yystopf f98886b3a0 修复 2022-11-11 11:50:07 +08:00
yystopf 30572aa41c 修复:重复代码移除 2022-11-11 11:11:34 +08:00
yystopf 7492662f7d Merge branch 'develop' into standalone_develop 2022-11-10 16:22:40 +08:00
yystopf ef83697cb8 修复:tooltip闪烁问题 2022-11-10 16:21:43 +08:00
yystopf 6dc06fc088 Merge branch 'develop' into standalone_develop 2022-11-10 11:03:08 +08:00
yystopf 570f664c27 修复:标记issue数量问题 2022-11-10 11:02:50 +08:00
yystopf e92588cf6d Merge branch 'develop' into standalone_develop 2022-11-09 14:56:43 +08:00
yystopf e24921bba3 修复 2022-11-09 14:56:27 +08:00
yystopf f75e05bb84 Merge branch 'develop' into standalone_develop 2022-11-09 14:55:06 +08:00
yystopf e4d62c5335 新增:字符串截取展示 2022-11-09 14:54:43 +08:00
yystopf c3703a7f69 merge from develop 2022-11-09 14:42:40 +08:00
yystopf 6d9cf8aad2 修复 2022-11-09 14:41:17 +08:00
yystopf 33a3d7f48c merge from develop 2022-11-09 14:37:27 +08:00
yystopf e3179dfd6e 新增:新增反馈意见邮件回复功能 2022-11-09 14:35:11 +08:00
yystopf 7817487ab7 Merge branch 'develop' of https://gitlink.org.cn/Trustie/forgeplus into develop 2022-11-09 11:37:18 +08:00
yystopf 83b46fcb50 新增:用户反馈意见后台管理逻辑 2022-11-09 11:37:12 +08:00
“xxq250” 8ce3fac96d fixed 项目列表查询排序优化 2022-11-08 17:26:39 +08:00
“xxq250” 1f2af50091 fixed 项目列表查询count优化 2022-11-08 17:20:29 +08:00
“xxq250” 7cc9d207b6 fixed 项目列表查询count优化 2022-11-08 17:18:04 +08:00
“xxq250” abfb62f342 fixed 项目优化排序 2022-11-08 17:16:25 +08:00
“xxq250” f4794f6489 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-11-08 15:33:54 +08:00
“xxq250” 575dbb0544 fixed 项目优化排序 2022-11-08 15:33:38 +08:00
“xxq250” ccbbab0741 fixed 项目优化排序 2022-11-08 15:33:12 +08:00
yystopf 2b2a44831e Merge branch 'develop' into standalone_develop 2022-11-08 13:41:00 +08:00
yystopf 3e5c1da2c5 新增:反馈意见模型及接口 2022-11-08 13:27:46 +08:00
viletyy 0a06b2098b Merge branch 'develop' into standalone_develop 2022-11-02 14:22:14 +08:00
yystopf 07aefa79eb 更改:项目后台管理移除精选设置 2022-11-02 14:21:49 +08:00
“xxq250” 79d46231ba fixed 项目搜索仅公开项目,platform=forge 2022-11-01 18:14:08 +08:00
“xxq250” 2618dc5798 fixed 项目搜索仅公开项目 2022-11-01 17:51:46 +08:00
“xxq250” 2bd723fc64 fixed 项目搜索先es search服务容错 2022-11-01 17:37:25 +08:00
“xxq250” 79dae01a69 fixed 项目搜索先es search 中文 2022-11-01 17:31:33 +08:00
“xxq250” 63ea4808c9 fixed 项目搜索先es search 中文 2022-11-01 17:30:01 +08:00
“xxq250” c7a6d78c15 fixed 项目搜索先es search 2022-11-01 17:27:31 +08:00
“xxq250” 3ff3502bbc fixed 项目搜索先es search 2022-11-01 17:25:28 +08:00
viletyy 7f91ebb509 Merge branch 'develop' into standalone_develop 2022-11-01 15:29:30 +08:00
yystopf 423d5a9316 修复:同步项目权限到组织时需预先判断是否存在于团队中 2022-11-01 15:29:07 +08:00
viletyy 2548b0e9c0 Merge branch 'develop' into standalone_develop 2022-10-27 17:58:27 +08:00
yystopf 9664ca001e 新增: 邮箱验证码重新发送后之前的验证码需设置为无效 2022-10-27 17:57:55 +08:00
viletyy d665d0edb1 Merge branch 'develop' into standalone_develop 2022-10-27 10:49:05 +08:00
yystopf e15809c186 修复:无法正常转移的问题 2022-10-27 10:48:24 +08:00
viletyy 4235c3ee63 Merge branch 'develop' into standalone_develop 2022-10-27 09:56:14 +08:00
yystopf 7d4c0df691 修复 2022-10-27 09:55:55 +08:00
viletyy 761c311a88 Merge branch 'develop' into standalone_develop 2022-10-27 09:30:09 +08:00
yystopf e72dfa4973 修复:项目迁移设置权限在更改拥有者之后 2022-10-27 09:28:52 +08:00
viletyy b29b297f7e Merge branch 'develop' into standalone_develop 2022-10-26 15:16:27 +08:00
yystopf 84a8339a04 修复 2022-10-26 15:16:06 +08:00
viletyy 893f6c04a5 Merge branch 'develop' into standalone_develop 2022-10-26 14:58:25 +08:00
yystopf 3d5b2e76d7 修复:update_column无法触发count_cache 2022-10-26 14:58:04 +08:00
viletyy 6e9962e0da Merge branch 'develop' into standalone_develop 2022-10-26 14:50:23 +08:00
yystopf 8b14ee3c72 修复:更改组织下项目权限同时更改组织下权限同步至gitea 2022-10-26 14:49:40 +08:00
“xxq250” a4c892ec0a fixed cloudIDE saas定制api 2022-10-25 11:19:59 +08:00
“xxq250” 2945570a51 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-10-21 17:44:06 +08:00
“xxq250” 969cbcfe60 fixed users/me返回email,用于三方登录 2022-10-21 17:44:02 +08:00
viletyy 4d61127e49 Merge branch 'develop' into standalone_develop 2022-10-21 15:29:20 +08:00
yystopf 3f7366fbcd 修复:更改用户通知邮箱只能自己改自己的 2022-10-21 15:28:48 +08:00
viletyy 97a661cd95 Merge branch 'develop' into standalone_develop 2022-10-21 15:07:48 +08:00
yystopf cfdbc5a682 修复 2022-10-21 15:07:31 +08:00
viletyy f557994f8a Merge branch 'develop' into standalone_develop 2022-10-21 15:04:52 +08:00
yystopf 9b880e3209 修复 2022-10-21 15:04:26 +08:00
“xxq250” 47aba3528d Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-10-21 14:48:37 +08:00
“xxq250” b80b89e81d fixed 支持refresh_token 2022-10-21 14:48:33 +08:00
viletyy 04642497df Merge branch 'develop' into standalone_develop 2022-10-21 14:43:08 +08:00
yystopf c2ef23b746 修复 2022-10-21 14:42:51 +08:00
viletyy 292167b47e Merge branch 'develop' into standalone_develop 2022-10-21 14:41:09 +08:00
yystopf 8a33ea6707 修复 2022-10-21 14:40:43 +08:00
viletyy 2da84146eb Merge branch 'develop' into standalone_develop 2022-10-21 14:32:03 +08:00
yystopf 9ee4c85b7c 更改:验证返回status以及万能验证码 2022-10-21 14:31:32 +08:00
“xxq250” 4cc4ed5864 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-10-21 09:42:27 +08:00
“xxq250” 0a5dd2f1ee ssh公钥允许token请求 2022-10-21 09:42:21 +08:00
yystopf e9b23d6577 更改:合并请求代码冲突提示语更改 2022-10-19 16:17:44 +08:00
yystopf 64d9c334ce 修复:项目语言验证信息统一 2022-10-19 15:18:15 +08:00
yystopf cad7e24299 修复:项目列表表头样式 2022-10-18 15:53:37 +08:00
yystopf 3b15dd84fc 新增:标签列表返回总数 2022-10-18 14:52:15 +08:00
yystopf 58a43a8b80 更改:合并请求和issue仅加载开启中的里程碑 2022-10-18 13:43:16 +08:00
yystopf e25231738a 新增:标签名字列表 2022-10-18 13:32:57 +08:00
yystopf 35965f542a 新增:标签名字列表 2022-10-18 13:31:12 +08:00
yystopf fa48e3f5ca 修复:许可证和忽略文件内容为空表单提示 2022-10-18 11:14:35 +08:00
yystopf 13e2738fb5 新增:列表页新增only_watched参数 2022-10-17 17:37:03 +08:00
viletyy a494a905fa Merge branch 'develop' into standalone_develop 2022-10-17 13:16:49 +08:00
yystopf 30437d828c 新增:项目git忽略文件新增验证 2022-10-17 13:16:22 +08:00
yystopf dcc7ab6738 更改:项目分类去掉图片上传 2022-10-17 13:01:08 +08:00
yystopf 57a7a17f73 Merge branch 'develop' of https://gitlink.org.cn/Trustie/forgeplus into develop 2022-10-17 12:57:32 +08:00
yystopf 5196f33f24 新增:项目许可证新增验证 2022-10-17 12:57:24 +08:00
“xxq250” b3cbed2963 Merge remote-tracking branch 'origin/develop' into develop
# Conflicts:
#	app/controllers/members_controller.rb
2022-10-17 11:09:48 +08:00
“xxq250” dd1af6712c fixed 项目成员提示修改 2022-10-17 11:08:54 +08:00
yystopf 8807be6e4d 新增:项目语言新增唯一性验证 2022-10-17 10:52:57 +08:00
yystopf 8d41c27044 更改:项目成员添加提示 2022-10-17 10:42:40 +08:00
viletyy 77ec7e5a69 Merge branch 'develop' into standalone_develop 2022-10-17 10:25:47 +08:00
yystopf 53fe554d1e 更改:后台管理表头样式 2022-10-17 10:25:17 +08:00
“xxq250” 4e02dbe06b Merge remote-tracking branch 'origin/develop' into develop
# Conflicts:
#	app/controllers/attachments_controller.rb
2022-10-17 10:14:13 +08:00
“xxq250” 620ddff9bb fixed issue评论附件权限 2022-10-17 10:13:30 +08:00
viletyy 732d1a1adb Merge branch 'develop' into standalone_develop 2022-10-15 11:29:58 +08:00
yystopf 630a7aadeb 新增:组织数据修复任务 2022-10-15 11:29:23 +08:00
viletyy 2cdcd5f117 Merge branch 'develop' into standalone_develop 2022-10-14 15:31:39 +08:00
yystopf 6383384287 更改:后台管理用户真实姓名改为昵称 2022-10-14 15:31:20 +08:00
viletyy 6b6c0791cd Merge branch 'standalone_develop' of https://gitlink.org.cn/Trustie/forgeplus into standalone_develop 2022-10-14 15:02:59 +08:00
viletyy 2df259c927 Merge branch 'develop' into standalone_develop 2022-10-14 15:02:53 +08:00
yystopf 83f1263f85 修复:更改查询项目判断条件 2022-10-14 14:52:25 +08:00
“xxq250” 4b0609931a 更换发送邮箱 2022-10-14 11:59:48 +08:00
“xxq250” c2742f0ae7 cloudIDE saas定制api 2022-10-12 16:46:15 +08:00
“xxq250” 483c8d5410 cloudIDE saas定制api 2022-10-12 16:42:45 +08:00
“xxq250” c2673bd48d cloudIDE saas定制api 2022-10-12 16:37:54 +08:00
“xxq250” f031cd4720 cloudIDE saas定制api 2022-10-12 16:34:44 +08:00
“xxq250” bf1e722084 cloudIDE saas定制api 2022-10-12 16:04:27 +08:00
“xxq250” 8b1f06f010 cloudIDE saas定制api 2022-10-12 15:58:46 +08:00
“xxq250” 6d2a6e0331 cloudIDE saas定制api 2022-10-12 15:44:46 +08:00
“xxq250” c668fd3530 cloudIDE saas定制api 2022-10-12 15:38:40 +08:00
“xxq250” e7bbe252de cloudIDE saas定制api 2022-10-12 15:37:22 +08:00
yystopf 9c11cd79e8 修复:消息模版无法查询子类的问题 2022-10-10 19:06:47 +08:00
viletyy a516363763 Merge branch 'develop' into standalone_develop 2022-10-08 18:44:28 +08:00
yystopf a7384bc1c3 修复:代码详情页报错 2022-10-08 18:44:04 +08:00
viletyy 3d475fdedd Merge branch 'develop' into standalone_develop 2022-09-29 13:59:04 +08:00
yystopf 55170c7693 新增:更改邮箱相关接口文档 2022-09-29 13:58:14 +08:00
yystopf 2cde13eabb 新增:接口测试以及功能测试 2022-09-29 12:05:57 +08:00
yystopf d68e7f38a3 新增:更改邮箱service逻辑 2022-09-29 09:30:33 +08:00
yystopf 649d9c4ea6 新增:更改邮箱控制器方法 2022-09-28 16:09:10 +08:00
“xxq250” e33448db4d fixed nps统计 2022-09-26 16:53:55 +08:00
“xxq250” 628d815a5c Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-09-26 16:12:25 +08:00
“xxq250” c08868b26a fixed 用户活跃数 2022-09-26 16:12:12 +08:00
“xxq250” fce8166ba7 fixed 用户活跃数 2022-09-26 16:11:34 +08:00
“xxq250” ae0efc1115 Merge remote-tracking branch 'origin/develop' into develop 2022-09-26 10:38:32 +08:00
“xxq250” dfc2edd62d fixed注册gitea错误信息 2022-09-26 10:38:28 +08:00
yystopf a030a01050 Merge branch 'develop' into standalone_develop 2022-09-23 17:56:58 +08:00
yystopf d7f3a21add 修复:周统计数据需加入年份 2022-09-23 17:56:39 +08:00
yystopf d9eb335b2a Merge branch 'develop' into standalone_develop 2022-09-23 10:28:19 +08:00
yystopf ef9592ef30 更改:活跃度算法更新 2022-09-23 10:28:12 +08:00
yystopf af7a779af6 merge from develop 2022-09-23 10:09:51 +08:00
yystopf cc42683316 新增:活跃度计算访问量限制 2022-09-23 10:07:52 +08:00
“xxq250” 28656ad6cd rake更新用户邮箱和手机号 2022-09-21 17:50:05 +08:00
“xxq250” b832a8ecc6 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-09-21 16:00:19 +08:00
“xxq250” 5c123fba17 头歌接口更换密钥 2022-09-21 16:00:13 +08:00
yystopf b7193aa768 Merge branch 'develop' into standalone_develop 2022-09-21 10:06:39 +08:00
yystopf 70f1e6827f 更改:项目已设置语言,则不重新设置语言 2022-09-21 10:06:29 +08:00
yystopf b4e0cc6dc1 Merge branch 'develop' into standalone_develop 2022-09-21 09:55:05 +08:00
yystopf b5188e3272 Merge branch 'develop' of https://gitlink.org.cn/Trustie/forgeplus into develop 2022-09-21 09:54:53 +08:00
yystopf ff881732d2 更改:项目已设置语言,则不重新设置语言 2022-09-21 09:54:49 +08:00
“xxq250” 2adf87a289 fixed nps数据统计 2022-09-20 09:52:40 +08:00
“xxq250” b3afa15d2e fixed nps数据统计 2022-09-20 09:52:14 +08:00
“xxq250” b40f48f87e Merge branch 'develop' into standalone_develop 2022-09-20 09:48:10 +08:00
“xxq250” 6954a860af fixed nps数据统计 2022-09-20 09:47:29 +08:00
“xxq250” b07e5d6993 Merge remote-tracking branch 'origin/develop' into standalone_develop 2022-09-20 09:43:20 +08:00
“xxq250” bb8e6aeaf8 nps数据统计 2022-09-20 09:41:27 +08:00
“xxq250” ac8959f36f fixed 修改密码接口 2022-09-19 15:51:59 +08:00
“xxq250” 6d7b7dd058 fixed 修改密码接口 2022-09-19 10:06:49 +08:00
yystopf dfc2c68225 新增:管理后台新增类型筛选 2022-09-15 10:21:39 +08:00
yystopf 6a2cfc5fde Merge branch 'develop' into standalone_develop 2022-09-15 10:00:09 +08:00
yystopf 007b90c284 修复:删除旧的逻辑 2022-09-15 10:00:00 +08:00
yystopf 4994179a33 Merge branch 'develop' into standalone_develop 2022-09-15 09:57:34 +08:00
yystopf 481d1b7db0 修复:commit log统计触发规则 2022-09-15 09:57:28 +08:00
yystopf a1b2bdd048 Merge branch 'develop' into standalone_develop 2022-09-15 09:49:51 +08:00
yystopf 733f64eaec 新增:项目排行榜新增提交数算法 2022-09-15 09:44:12 +08:00
yystopf 383660c778 更改:组织缓存信息方式改在控制器里面 2022-09-15 09:38:28 +08:00
“xxq250” 2c2c45476d oauth2认证登录logo 2022-09-09 17:55:44 +08:00
yystopf ecd43dbd12 Merge branch 'develop' into standalone_develop 2022-09-08 14:19:16 +08:00
yystopf 4bd77a870b 更改:webhook创建数量限制为50个 2022-09-08 14:19:08 +08:00
yystopf 9022fdcb80 Merge branch 'develop' into standalone_develop 2022-09-08 10:41:02 +08:00
yystopf b1f460d760 更改:webhook创建数量限制为50个 2022-09-08 10:40:52 +08:00
“xxq250” dd35a053cf logo调整 2022-09-07 11:27:13 +08:00
“xxq250” 4a08c9be88 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-09-07 11:13:00 +08:00
“xxq250” 200d5e0d69 logo透明图 2022-09-07 11:12:56 +08:00
yystopf a0413be4b9 Merge branch 'develop' into standalone_develop 2022-09-06 14:58:02 +08:00
yystopf a438ab6f3e 新增:提示语locale配置 2022-09-06 14:57:54 +08:00
“xxq250” 3a34d8682c Merge remote-tracking branch 'origin/develop' into develop 2022-09-06 10:30:15 +08:00
“xxq250” 60894f00b1 nps已打分区分 2022-09-06 10:29:51 +08:00
“xxq250” 925b05e004 nps已打分区分 2022-09-06 10:29:49 +08:00
yystopf ce432d9ad3 Merge branch 'develop' into standalone_develop 2022-09-06 09:04:54 +08:00
yystopf 4878d66620 修复 2022-09-06 09:04:46 +08:00
yystopf d240d4f4fa Merge branch 'develop' into standalone_develop 2022-09-06 09:02:37 +08:00
yystopf 632ade9d25 修复 2022-09-06 09:02:30 +08:00
yystopf 36443a54d8 Merge branch 'develop' into standalone_develop 2022-09-06 09:00:24 +08:00
yystopf 5acd45bf85 修复 2022-09-06 09:00:05 +08:00
yystopf d03b45eecf 新增:创建文件对分支长度进行验证 2022-09-06 08:59:24 +08:00
“xxq250” f2b55977c9 nps已打分区分 2022-09-05 13:44:26 +08:00
“xxq250” fd66a3149d nps已打分区分 2022-09-05 13:44:23 +08:00
“xxq250” 4a6e94a98f 调整nps用户调研接口,30天 2022-09-02 15:50:15 +08:00
“xxq250” c60e80da98 调整nps用户调研接口,测试30分钟 2022-09-01 15:13:49 +08:00
“xxq250” eb1a3f8e23 调整nps用户调研接口,需要登录 2022-08-31 10:40:25 +08:00
“xxq250” a7c24dea64 调整nps用户调研接口 2022-08-31 10:40:24 +08:00
“xxq250” 32a9d762d8 调整nps用户调研接口,需要登录 2022-08-31 10:39:52 +08:00
“xxq250” 0a79950046 调整nps用户调研接口 2022-08-31 10:38:21 +08:00
“xxq250” d51bb7030f Merge remote-tracking branch 'origin/develop' into standalone_develop
# Conflicts:
#	app/views/users/get_user_info.json.jbuilder
2022-08-30 18:14:17 +08:00
“xxq250” 4b7c58b13f Merge remote-tracking branch 'origin/develop' into develop 2022-08-30 18:10:33 +08:00
“xxq250” 7148957368 nps用户调研 2022-08-30 18:10:27 +08:00
yystopf 1613cf7376 Merge branch 'develop' into standalone_develop 2022-08-30 10:40:37 +08:00
yystopf aa50c50254 修复 2022-08-30 10:40:27 +08:00
yystopf 43a41399ac 新增:添加全部或者移除全部团队项目 2022-08-30 10:35:43 +08:00
yystopf 60b3c7925d 新增:添加全部或者移除全部团队项目[文档] 2022-08-30 10:34:37 +08:00
yystopf 0f41cabe71 新增:添加全部或者移除全部团队项目 2022-08-30 10:23:35 +08:00
“xxq250” 8f4cb2667f fixed 组织成员列表查询优化 2022-08-29 10:08:25 +08:00
“xxq250” d04ed7e008 fixed 组织成员列表查询优化 2022-08-29 10:05:56 +08:00
yystopf 5c5b4b5d92 新增:分页数量限制修改 2022-08-24 10:30:23 +08:00
yystopf 43e07ade99 Merge branch 'develop' into standalone_develop 2022-08-22 10:48:13 +08:00
yystopf 6168256897 修复: diff filepath为空报错 2022-08-22 10:48:05 +08:00
yystopf 7a7a1efc46 Merge branch 'develop' into standalone_develop 2022-08-17 18:39:08 +08:00
yystopf 4b167dacbb 修复: trace user 手机号为空 2022-08-17 18:39:01 +08:00
yystopf 98446220a1 Merge branch 'develop' into standalone_develop 2022-08-17 18:05:22 +08:00
yystopf 911c47df8d 新增:文件blame 上个版本的行号 2022-08-17 18:05:15 +08:00
yystopf 1e4aed71fe Merge branch 'develop' into standalone_develop 2022-08-17 15:29:16 +08:00
yystopf a37d7b9840 修复: 手机号默认不传 2022-08-17 15:28:58 +08:00
“xxq250” c7e098d507 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-08-16 15:33:59 +08:00
“xxq250” dbdb860bb7 fixed commit日志同时更新项目时间 2022-08-16 15:33:46 +08:00
“xxq250” 217ab920a9 fixed commit日志同时更新项目时间 2022-08-16 15:33:15 +08:00
“xxq250” 98ae62d181 Merge branch 'develop' of https://gitlink.org.cn/Trustie/forgeplus into develop 2022-08-16 14:28:52 +08:00
“xxq250” 98f1723411 fixed 发行版git删除时,不同步处理 2022-08-16 14:28:40 +08:00
yystopf 144fbac843 Merge branch 'develop' into standalone_develop 2022-08-16 14:07:49 +08:00
yystopf 68a38e75bc 修复: 消息返回接口时间 2022-08-16 14:07:37 +08:00
“xxq250” 81b64c18b6 fixed 发行版git删除时,不同步处理log 2022-08-16 14:03:05 +08:00
“xxq250” 0c10f3ff10 fixed 发行版git删除时,不同步处理log 2022-08-16 11:50:09 +08:00
“xxq250” c6034ed33f fixed 发行版git删除时,不同步处理test 2022-08-16 11:48:39 +08:00
“xxq250” 4618f4effa fixed 发行版git删除时,不同步处理 2022-08-16 11:46:58 +08:00
“xxq250” b2af43ee2a 增加建木devops地址配置 2022-08-16 11:34:20 +08:00
“xxq250” f211fbaec3 增加建木devops地址配置URI.encode 2022-08-16 11:31:43 +08:00
“xxq250” 14c1be1bea 增加建木devops地址配置 2022-08-16 11:29:33 +08:00
yystopf 63cdaed3ac 更改:代码溯源status改为code 2022-08-15 15:56:07 +08:00
yystopf ee29c6be5c Merge branch 'develop' of https://gitlink.org.cn/Trustie/forgeplus into develop 2022-08-15 15:55:37 +08:00
yystopf c0ee0a694c 更改:代码溯源status改为code 2022-08-15 15:55:33 +08:00
“xxq250” 12cc870dc7 fixed time ago优化 2022-08-15 15:47:30 +08:00
“xxq250” e5989b219f fixed reposyncer job任务增加分页 2022-08-15 14:04:06 +08:00
“xxq250” 25fa6f427b Merge remote-tracking branch 'origin/develop' into develop 2022-08-15 14:03:32 +08:00
“xxq250” 467d722d25 fixed reposyncer job任务增加分页 2022-08-15 14:03:27 +08:00
yystopf 04cd427c5f 新增:代码溯源需提前获取服务器是否在维护 2022-08-12 18:15:59 +08:00
yystopf 9992a78161 Merge branch 'develop' into standalone_develop 2022-08-12 17:24:15 +08:00
yystopf 3e352d3c7c 新增:获取代码溯源系统维护信息接口 2022-08-12 17:23:19 +08:00
viletyy 6bb1dcf718 Merge remote-tracking branch 'origin/develop' into standalone_develop 2022-08-11 15:21:37 +08:00
yystopf 13472b2311 新增: 合并请求评论查询is_full 2022-08-11 15:21:11 +08:00
viletyy 71b42e462e merge from develop 2022-08-11 09:52:43 +08:00
“xxq250” bdddd655bf Merge remote-tracking branch 'origin/develop' into develop 2022-08-11 09:31:49 +08:00
“xxq250” 6ec7a13293 fixed reposyncer 分支组合已配置,不能重复 2022-08-11 09:31:40 +08:00
“xxq250” 716b29c25f fixed 消息模板配置type 2022-08-11 09:29:37 +08:00
“xxq250” 5c4930a362 fixed 消息模板配置type 2022-08-11 09:29:36 +08:00
“xxq250” ad8fed9440 fixed 消息模板配置type 2022-08-11 09:29:35 +08:00
“xxq250” 964bef7896 fixed 消息模板配置type 2022-08-11 09:29:34 +08:00
“xxq250” 7e48e5e8b8 fixed 消息模板配置 2022-08-11 09:29:34 +08:00
“xxq250” 48846a7e31 fixed 已读未读标记优化 2022-08-11 09:29:33 +08:00
yystopf 32db15aad5 新增: commit找不到返回404 2022-08-11 09:29:12 +08:00
“xxq250” 8ec3e4bbaa fixed Gitea::PullRequest::FilesService增加参数 2022-08-11 09:28:12 +08:00
“xxq250” c167c39050 fixed 消息模板配置type 2022-08-10 17:43:27 +08:00
“xxq250” 58368277c0 fixed 消息模板配置type 2022-08-10 17:25:55 +08:00
“xxq250” 4918fda2e1 fixed 消息模板配置type 2022-08-10 17:23:27 +08:00
“xxq250” 9ce7cdf0c3 fixed 消息模板配置type 2022-08-10 17:20:29 +08:00
“xxq250” e46c934b2c fixed 消息模板配置 2022-08-10 16:54:00 +08:00
“xxq250” b949ee260d fixed 已读未读标记优化 2022-08-10 16:07:20 +08:00
“xxq250” c60572e31f fixed Gitea::PullRequest::FilesService增加参数 2022-08-10 16:06:11 +08:00
“xxq250” 1efff8a97a Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-08-09 10:23:01 +08:00
“xxq250” 4199f4097c fixed reposyncer gitlink地址配置文件取 2022-08-09 10:22:55 +08:00
yystopf a0dcc289c8 Merge branch 'develop' into standalone_develop 2022-08-09 09:48:14 +08:00
yystopf 4b05838498 新增:合并请求评论新增path参数筛选以及去掉分页最多返回200数据 2022-08-09 09:48:02 +08:00
yystopf 0699c768a5 新增:fork仓库不支持代码溯源 2022-08-08 14:17:45 +08:00
“xxq250” e7aa05b535 fixed reposyncer 删除job任务 2022-08-05 13:48:40 +08:00
“xxq250” 99ba523084 fixed reposyncer job_logs 2022-08-05 11:45:46 +08:00
“xxq250” 14f4b290cb fixed reposyncer job_logs 2022-08-05 11:42:40 +08:00
“xxq250” 5ffc603f61 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-08-05 11:41:18 +08:00
“xxq250” eac06382fe fixed reposyncer logs routes 2022-08-05 11:41:13 +08:00
yystopf 65e1cd2c01 Merge branch 'develop' into standalone_develop 2022-08-05 11:05:37 +08:00
yystopf b8be0c23cb 修复 2022-08-05 11:05:29 +08:00
yystopf d4405b8827 Merge branch 'develop' into standalone_develop 2022-08-05 10:50:52 +08:00
yystopf d20a7b1318 修复:项目协作者添加组织成员问题 2022-08-05 10:50:41 +08:00
yystopf 0993e5a3ae Merge branch 'develop' into standalone_develop 2022-08-04 17:28:29 +08:00
yystopf f8268accc0 新增: 组织下项目协作者添加当前用户 2022-08-04 17:28:14 +08:00
“xxq250” 690ddcb4a7 fixed reposyncer 分支组合已配置,不能重复 2022-08-04 17:20:24 +08:00
“xxq250” 72a4549fe9 fixed reposyncer jobs 分组 2022-08-04 17:02:25 +08:00
“xxq250” 4fb2003f64 fixed reposyncer 分支组合已配置,不能重复 2022-08-04 16:50:01 +08:00
“xxq250” 5c361207f5 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-08-04 16:24:25 +08:00
“xxq250” 4941e08684 fixed reposyncer job_type 2022-08-04 16:24:19 +08:00
yystopf 7e711cfdab Merge branch 'develop' into standalone_develop 2022-08-04 15:46:32 +08:00
yystopf a9811768d4 修复: 合并请求评论类型允许为空 2022-08-04 15:46:19 +08:00
“xxq250” ebe8df8221 fixed reposyncer delete 2022-08-04 11:24:15 +08:00
“xxq250” 1b3a4bc146 fixed reposyncer gitlink地址 2022-08-04 10:37:28 +08:00
“xxq250” 7332e4a58b Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-08-04 10:03:34 +08:00
“xxq250” 1a2352c535 fixed reposyncer gitlink地址 2022-08-04 10:03:29 +08:00
yystopf 958ee42fa2 Merge branch 'develop' into standalone_develop 2022-08-03 17:13:53 +08:00
yystopf 024bc289de 修改: 合并请求评论必选参数以及审查列表去掉分页 2022-08-03 17:13:45 +08:00
yystopf 90a621ed8e Merge branch 'develop' into standalone_develop 2022-08-03 15:31:14 +08:00
yystopf 96d34d0237 修改:合并请求审查权限 2022-08-03 15:31:04 +08:00
yystopf 64e608ffd7 Merge branch 'develop' into standalone_develop 2022-08-03 14:20:39 +08:00
yystopf fea11bdc2e 新增:webhook type类型 2022-08-03 14:20:25 +08:00
yystopf 0be06c8282 Merge branch 'develop' into standalone_develop 2022-08-02 19:04:04 +08:00
yystopf ab5d273f98 新增:版本diff新增diff信息 2022-08-02 19:03:54 +08:00
“xxq250” 8bf4e9b8d2 fixed Repository.url 2022-08-02 18:10:01 +08:00
“xxq250” bf6a11dadd Merge branch 'standalone_develop' of https://gitlink.org.cn/Trustie/forgeplus into standalone_develop 2022-08-02 15:27:31 +08:00
“xxq250” 9d385845a6 fixed 评审标记为已读和未读 2022-08-02 15:27:16 +08:00
yystopf d4d8153003 Merge branch 'develop' into standalone_develop 2022-08-01 17:14:41 +08:00
yystopf 096b0b954d 新增: fork仓库协作者可以提交文件至仓库 2022-08-01 17:14:32 +08:00
yystopf b06e29260a 修复: return error status默认为-1 2022-08-01 14:28:44 +08:00
yystopf 29bfeabb20 merge from develop 2022-07-29 17:29:52 +08:00
yystopf df57312056 修复 2022-07-29 17:29:25 +08:00
“xxq250” 7597f1fd8f fixed 建木认证code,项目成员可见 2022-07-29 16:30:56 +08:00
“xxq250” 8dba81bfca fixed 建木认证code加密生成,key=Client Secret 2022-07-29 15:37:24 +08:00
“xxq250” 531747024d fixed 建木认证code加密生成,key=Client Secret 2022-07-29 15:35:12 +08:00
“xxq250” a560a5034c fixed 建木认证code加密生成 2022-07-29 14:20:56 +08:00
“xxq250” 34504ddc39 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-07-29 14:18:58 +08:00
“xxq250” 29342e11fb 建木认证code加密生成 2022-07-29 14:18:53 +08:00
yystopf adb55c0910 Merge branch 'standalone_develop' of https://gitlink.org.cn/Trustie/forgeplus into standalone_develop 2022-07-28 18:14:05 +08:00
yystopf 902c66d490 更改: oauth2授权页面增加错误提示 2022-07-28 18:14:00 +08:00
“xxq250” 8a187df5f4 fixed CloudIDEA文件标记已读未读列表 2022-07-28 17:59:20 +08:00
“xxq250” 93fd9333ec fixed CloudIDEA文件标记已读未读列表 2022-07-28 17:56:44 +08:00
“xxq250” 487c6dc21a fixed CloudIDEA文件标记已读未读列表 2022-07-28 17:55:31 +08:00
“xxq250” 0936bbd1c8 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-07-28 17:53:48 +08:00
“xxq250” 2b31b683dd fixed CloudIDEA文件标记已读未读列表 2022-07-28 17:53:43 +08:00
“xxq250” 27fae8d27b fixed 精选项目不包含私有仓库 2022-07-28 17:31:07 +08:00
“xxq250” f12cfabee3 fixed 精选项目不包含私有仓库 2022-07-28 17:30:09 +08:00
“xxq250” b22909a654 fixed 语言接口token参数错误 2022-07-28 17:20:22 +08:00
“xxq250” 579b45dfa4 fixed 精选项目不包含私有仓库 2022-07-28 17:19:39 +08:00
“xxq250” 99850e45ad fixed 语言接口token参数错误 2022-07-28 17:15:34 +08:00
“xxq250” 0908e61f59 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-07-28 16:46:54 +08:00
“xxq250” 321f367e3e Merge remote-tracking branch 'origin/develop' into standalone_develop 2022-07-28 16:46:27 +08:00
“xxq250” fbc1f95cd1 Merge remote-tracking branch 'origin/develop' into develop 2022-07-28 16:42:29 +08:00
“xxq250” 4ccf8ea5ff CloudIDEA文件标记已读未读 2022-07-28 16:42:21 +08:00
yystopf bc580e1bac Merge branch 'develop' into standalone_develop 2022-07-28 15:19:43 +08:00
yystopf d5c141f892 修复:pulls文件夹load 2022-07-28 15:19:31 +08:00
yystopf 2d0f1ab94c Merge branch 'develop' into standalone_develop 2022-07-28 14:25:43 +08:00
yystopf 35c6cb98db 新增:批量提交文件支持参数选填 2022-07-28 14:25:33 +08:00
yystopf c93c4ad657 Merge branch 'develop' into standalone_develop 2022-07-28 14:02:45 +08:00
yystopf f417e42864 修复: 提示修改 2022-07-28 14:02:37 +08:00
yystopf bc0222ac21 Merge branch 'develop' into standalone_develop 2022-07-28 13:56:43 +08:00
yystopf 6e54203ebb 修复:批量提交文件参数缺失以及数据为空处理 2022-07-28 13:56:31 +08:00
“xxq250” 79a6841bbc Merge remote-tracking branch 'origin/develop' into develop 2022-07-28 09:31:19 +08:00
“xxq250” b3d78741a3 fixed reposyncer同步仓库接口增加gitlink 2022-07-28 09:31:14 +08:00
yystopf 445ae6fbc3 merge from develop 2022-07-27 16:12:12 +08:00
yystopf 935f3ddf7f Merge pull request '合并请求评论相关接口及文档' (#20) from yystopf/forgeplus:develop into develop 2022-07-27 16:11:17 +08:00
yystopf a2549f7ff1 新增: 评论及审查相关接口文档 2022-07-27 16:07:15 +08:00
yystopf d6b5dc326a 新增: 评论相关api根据需求重写 2022-07-27 14:52:49 +08:00
“xxq250” d6c6ac9a0a fixed reposyncer同步仓库接口增加gitlink 2022-07-26 18:13:29 +08:00
“xxq250” f3233b145b fixed reposyncer同步仓库接口 2022-07-26 18:11:09 +08:00
“xxq250” d8d841d800 fixed reposyncer同步仓库接口 2022-07-26 18:10:35 +08:00
“xxq250” bcea5bc669 fixed 邮箱验证正则优化 2022-07-26 17:11:46 +08:00
“xxq250” 003bfe7884 Merge remote-tracking branch 'origin/develop' into develop 2022-07-26 17:08:10 +08:00
“xxq250” df5efa0dc6 fixed 邮箱验证正则优化 2022-07-26 17:08:05 +08:00
yystopf a35db9fe80 新增:reviewers修改入口 2022-07-26 16:45:53 +08:00
“xxq250” 5be93d5de8 关闭rack-mini-profiler 2022-07-26 16:32:53 +08:00
“xxq250” 99d9e13edc Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-07-26 15:44:11 +08:00
“xxq250” 4686b5241e fixed 同步仓库增加gitlink-url 2022-07-26 15:44:04 +08:00
yystopf 5025bf6961 Merge branch 'develop' into standalone_develop 2022-07-26 14:38:50 +08:00
yystopf 6183f1f76d 修复: 缺少title和body 2022-07-26 14:38:41 +08:00
yystopf 034170372e Merge branch 'develop' into standalone_develop 2022-07-26 14:29:21 +08:00
yystopf e72273f3b2 修复: 合并请求详情中review需要最新的一个 2022-07-26 14:29:12 +08:00
yystopf 70220638fd merge from develop 2022-07-26 14:22:18 +08:00
yystopf cc09f724cc Merge branch 'develop' of https://gitlink.org.cn/Trustie/forgeplus into develop 2022-07-26 14:14:33 +08:00
yystopf 7a54c5f536 新增: 接口文档更新 2022-07-26 14:14:25 +08:00
“xxq250” b1809909db fixed reposyncer同步仓库接口 2022-07-26 11:41:21 +08:00
“xxq250” bb3f5cec76 fixed reposyncer同步仓库接口 2022-07-26 11:40:49 +08:00
“xxq250” 19ffd9fea1 fixed PullRequest 统一关联关系字段gitea_id 2022-07-26 10:55:42 +08:00
“xxq250” 6f9db6b314 Merge remote-tracking branch 'origin/develop' into standalone_develop
# Conflicts:
#	app/models/pull_request.rb
2022-07-26 10:49:49 +08:00
“xxq250” 5877474f59 Merge remote-tracking branch 'origin/develop' into develop 2022-07-26 10:44:21 +08:00
“xxq250” 1bbde165c2 reposyncer同步仓库接口 2022-07-26 10:44:12 +08:00
yystopf 3f5754a3a5 新增:合并请求详情接口 2022-07-25 18:23:06 +08:00
yystopf 5463c22518 新增: 合并请求创建审查接口 2022-07-25 17:28:38 +08:00
yystopf 5db43bf768 新增:新合并请求列表接口 2022-07-25 16:21:03 +08:00
yystopf 1feb166fd5 修复:合并请求评审模型修改 2022-07-25 16:20:42 +08:00
yystopf db4e98ec37 修复:代码溯源跳转地址修改 2022-07-25 11:00:07 +08:00
yystopf 56b1110e4d Merge branch 'develop' into standalone_develop 2022-07-22 18:10:09 +08:00
yystopf 0df1e5fdd0 新增:合并请求版本列表和diff接口文档 2022-07-22 18:08:16 +08:00
yystopf 8ba70a33be 新增: pr版本列表和diff接口 2022-07-22 17:33:08 +08:00
yystopf 3a12b7b16c 新增:代码溯源展示页面url返回 2022-07-22 13:44:07 +08:00
yystopf 4aebba2f25 修复:代码溯源cookie domain配置 2022-07-22 11:16:04 +08:00
yystopf 95cf55993d Merge branch 'standalone_develop' of https://gitlink.org.cn/Trustie/forgeplus into standalone_develop 2022-07-22 10:22:28 +08:00
yystopf 81b684e469 修复:代码溯源cookie domain 2022-07-22 10:22:22 +08:00
“xxq250” 0b167026f8 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-07-22 10:12:19 +08:00
“xxq250” 913057658e fixed 代码提交日志根据提交commit记录多次 2022-07-22 10:12:13 +08:00
“xxq250” b21f44b59e fixed 代码提交日志根据提交commit记录多次 2022-07-22 10:11:21 +08:00
yystopf 8645642612 新增:代码溯源设置cookie用于访问 2022-07-22 09:35:47 +08:00
yystopf abac8b9c46 修复: 代码溯源pdf只需下载一次 2022-07-21 10:52:21 +08:00
yystopf 88fb11ea92 修复:代码溯源pdf下载 2022-07-21 10:41:24 +08:00
yystopf 545ec28561 Merge branch 'develop' into standalone_develop 2022-07-19 16:47:19 +08:00
yystopf 7793eacf75 Merge branch 'develop' of https://gitlink.org.cn/Trustie/forgeplus into develop 2022-07-19 16:47:06 +08:00
yystopf 25afedcdfd 新增: 批量更改文件 2022-07-19 16:47:01 +08:00
“xxq250” c41c4f5813 fixed 2022-07-19 15:04:17 +08:00
“xxq250” d95a689815 Merge branch 'develop' of https://gitlink.org.cn/Trustie/forgeplus into develop 2022-07-19 14:58:29 +08:00
xiaoxiaoqiong b386dc51e4 fixed 后台统计优化,7天时间精确 2022-07-19 14:56:02 +08:00
yystopf 1882120df3 新增: 获取单文件blame信息 2022-07-19 11:14:50 +08:00
yystopf 274cd81655 新增:获取commit列表 2022-07-19 10:41:25 +08:00
xiaoxiaoqiong 52bd568789 fixed 后台统计优化,7天时间精确 2022-07-19 09:43:03 +08:00
xiaoxiaoqiong d9b78acb8e Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-07-19 09:32:15 +08:00
xiaoxiaoqiong bfd2c1d5c7 fixed 后台统计优化,issue当成活跃项目指标 2022-07-19 09:31:51 +08:00
yystopf 92be882e54 Merge branch 'develop' into standalone_develop 2022-07-18 15:40:42 +08:00
yystopf 6273349334 新增: 获取比较blame、token以及异常捕获处理 2022-07-18 15:39:51 +08:00
yystopf 7638cd00fb Merge branch 'develop' into standalone_develop 2022-07-18 11:20:32 +08:00
yystopf e8deb83004 fix: gemfile 2022-07-18 11:20:24 +08:00
yystopf f161349bd7 Merge branch 'develop' into standalone_develop 2022-07-18 11:19:23 +08:00
yystopf 52701d1c2f Merge branch 'develop' of https://gitlink.org.cn/Trustie/forgeplus into develop 2022-07-18 11:18:35 +08:00
yystopf b248f770f1 新增:获取单个提交的blame信息接口以及文档 2022-07-18 11:18:29 +08:00
xiaoxiaoqiong 04b9e43382 fixed 后台统计优化,新增项目数 2022-07-18 11:14:45 +08:00
xiaoxiaoqiong 07518f0d00 fixed 后台统计优化,新增项目数 2022-07-18 11:11:15 +08:00
xiaoxiaoqiong e71d28736d Merge branch 'develop' into standalone_develop 2022-07-18 11:05:11 +08:00
xiaoxiaoqiong 3580a8653d fixed 后台统计优化,新增项目数 2022-07-18 11:04:57 +08:00
xiaoxiaoqiong 2c799bd0a5 Merge branch 'develop' into standalone_develop 2022-07-18 11:01:05 +08:00
xiaoxiaoqiong d9653e461e fixed 后台统计优化,周存率小数计算 2022-07-18 11:00:47 +08:00
xiaoxiaoqiong 00f4e100c6 Merge branch 'develop' into standalone_develop 2022-07-18 10:57:15 +08:00
xiaoxiaoqiong d9a1d32ec8 fixed 后台统计优化,周存率 2022-07-18 10:55:41 +08:00
xiaoxiaoqiong 38c5e3487f Merge branch 'develop' into standalone_develop 2022-07-18 10:44:08 +08:00
xiaoxiaoqiong b5dfd83527 fix 提交日志提交用户信息不匹配 2022-07-18 10:43:57 +08:00
xiaoxiaoqiong e6e1b56309 后台统计优化 2022-07-18 10:42:45 +08:00
xiaoxiaoqiong df7b91a8ba gemfile.lock reset 2022-07-18 10:38:45 +08:00
xiaoxiaoqiong 8dae15225e 后台统计优化 2022-07-18 10:37:53 +08:00
xiaoxiaoqiong 5fcf789e63 fixed 提交日志记录用户信息,仓库关联 2022-07-18 09:35:19 +08:00
xiaoxiaoqiong ed0655452c 增加从webhook接收仓库日志记录 2022-07-18 09:34:56 +08:00
yystopf 6de6e34a4e Merge branch 'develop' into standalone_develop 2022-07-15 17:03:31 +08:00
yystopf 0dd062ce1c 新增: blobs和文件树接口及文档 2022-07-15 17:03:18 +08:00
yystopf c30c56f77b Merge branch 'develop' into standalone_develop 2022-07-15 14:41:12 +08:00
yystopf bd3cbf33fd fix 2022-07-15 14:41:00 +08:00
yystopf b8d4b15b40 新增: 分支接口文档 2022-07-15 14:40:35 +08:00
yystopf 63cd6bb0a4 merge from develop 2022-07-15 14:04:02 +08:00
yystopf 24d83133e7 新增: 创建分支接口 2022-07-15 14:02:48 +08:00
yystopf 4ed3a9d478 修复:cherry pick doorkeeper配置 2022-07-14 18:13:06 +08:00
xiaoxiaoqiong 3cb97ed830 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-07-14 15:21:50 +08:00
xiaoxiaoqiong a5d1058ea9 fixed 提交日志记录用户信息,仓库关联 2022-07-14 15:21:42 +08:00
yystopf 9b50b9df00 merge from develop 2022-07-14 09:38:00 +08:00
yystopf fbbacfa983 修复: apk文件为下载文件 2022-07-14 09:36:52 +08:00
xiaoxiaoqiong 07ec114e9a fixed 提交日志记录用户信息 2022-07-13 13:13:10 +08:00
xiaoxiaoqiong 25375b32c2 fixed oauth2 请求区别 2022-07-13 12:47:39 +08:00
yystopf d7a970e7d5 修复: oauth2 验证统一改为application控制器里的user_setup 2022-07-11 18:51:07 +08:00
xiaoxiaoqiong 915e689ef9 oauth2 增加client方式 2022-07-11 18:19:08 +08:00
yystopf 221c439a1d 修复: oauth2 token 私有仓库无法获取用户信息 2022-07-11 17:11:13 +08:00
xiaoxiaoqiong 4c7498a046 fixed 增加从webhook接收仓库日志记录 2022-07-11 15:57:46 +08:00
xiaoxiaoqiong e919b03e90 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-07-11 15:52:57 +08:00
xiaoxiaoqiong 4fa1a433fa 增加从webhook接收仓库日志记录 2022-07-11 15:52:38 +08:00
yystopf e4ec8e8ed5 Merge branch 'develop' into standalone_develop 2022-07-08 18:01:20 +08:00
yystopf d0988e42b4 新增: 平台接口文档更新 2022-07-08 18:01:07 +08:00
yystopf ed22ff921e merge from develop 2022-07-08 11:35:25 +08:00
yystopf d154f0aecc 修复: readme匹配修复 2022-07-08 11:31:17 +08:00
yystopf cf24e01c2a merge from develop 2022-07-07 15:03:30 +08:00
yystopf 29d9410e42 修复: readme 匹配项目 2022-07-07 15:02:25 +08:00
yystopf f8b63ff02e merge from develop 2022-07-07 13:47:47 +08:00
yystopf 3b62f09669 新增: 项目语言匹配并设置 2022-07-07 10:05:12 +08:00
yystopf 5864352049 Merge branch 'develop' of https://gitlink.org.cn/Trustie/forgeplus into develop 2022-07-07 09:24:18 +08:00
yystopf 1d6d48fc94 新增: pr 最后一次审核展示 2022-07-07 09:24:11 +08:00
xiaoxiaoqiong 8781720f31 fixed 同步gitea密码状态is_sync_pwd更新 2022-07-06 15:27:20 +08:00
xiaoxiaoqiong 484c91a581 fixed 同步gitea密码状态is_sync_pwd更新 2022-07-06 15:26:49 +08:00
xiaoxiaoqiong d1d7ae5b7f fixed oauth2 管理员配置 2022-07-06 10:35:32 +08:00
xiaoxiaoqiong eb0bda81e9 fixed oauth2 管理员配置 2022-07-06 10:30:23 +08:00
xiaoxiaoqiong c50913495e fixed oauth2 管理员配置 2022-07-06 10:27:35 +08:00
xiaoxiaoqiong 1bc7c48876 fixed oauth2 code授权方式登录default_scopes 2022-07-05 16:30:11 +08:00
xiaoxiaoqiong 14dd7a3b60 fixed oauth2 code授权方式登录 2022-07-05 15:27:10 +08:00
xiaoxiaoqiong 959191c8bb fixed oauth2 code授权方式登录 2022-07-05 15:19:30 +08:00
xiaoxiaoqiong 850d743b16 oauth2 code授权方式登录css 2022-07-05 15:04:46 +08:00
xiaoxiaoqiong f01da70e8a oauth2 code授权方式登录css 2022-07-05 15:01:12 +08:00
xiaoxiaoqiong 1a2d01df17 oauth2 code授权方式登录css 2022-07-05 14:53:42 +08:00
xiaoxiaoqiong abfefdf8eb oauth2 code授权方式登录 2022-07-05 14:38:11 +08:00
yystopf 7b91ad37e5 修复 2022-06-30 16:38:46 +08:00
yystopf 9dbb9a42d6 新增: compare 支持sha对比 2022-06-30 16:33:09 +08:00
yystopf a608803aa8 新增: 合并请求审查需审查权限 2022-06-30 11:00:18 +08:00
yystopf 76cc185a1d 新增: 合并请求审核model 2022-06-29 17:16:29 +08:00
xiaoxiaoqiong bf2e6269f9 fixed 仓库报告者角色 可以走接口新建合并请求成功#61489 2022-06-28 11:05:12 +08:00
xiaoxiaoqiong 620d2eeb51 auth token 接入验证登录接口 2022-06-28 10:09:26 +08:00
xiaoxiaoqiong d97888ad16 auth token 接入验证登录接口 2022-06-28 10:02:39 +08:00
xiaoxiaoqiong bdaca48fde Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-06-27 18:05:52 +08:00
xiaoxiaoqiong 41eedff819 auth token 接入验证登录接口 2022-06-27 18:05:46 +08:00
yystopf 3a1a7d7140 Merge branch 'develop' into standalone_develop 2022-06-26 09:06:24 +08:00
yystopf e76503ae26 fix: gitea client version 2022-06-26 09:06:11 +08:00
yystopf fb2e2d9534 merge from develop 2022-06-24 14:18:53 +08:00
yystopf 50991f503f Merge pull request '新增oauth验证接口入口以及webhooks接口' (#14) from yystopf/forgeplus:hh_new_api into develop 2022-06-24 14:16:06 +08:00
yystopf acd031ca7d 修复: gemfile.lock 2022-06-24 14:14:57 +08:00
yystopf b59b76be4a 新增: 更新文档 2022-06-24 11:04:16 +08:00
yystopf 211581cef0 新增: webhooks文档使用新api地址 2022-06-24 09:26:01 +08:00
yystopf 7cad953413 新增: 用户项目列表支持多个参数 2022-06-23 18:16:57 +08:00
yystopf fe58175ee0 新增: webhooks使用token访问的接口 2022-06-23 16:14:00 +08:00
yystopf 5d0849a148 新增: 用户项目列表以及helper方法 2022-06-23 12:19:03 +08:00
yystopf d14bf35ca1 修复: gitea module命名重复问题 2022-06-23 11:33:11 +08:00
yystopf d7dd3901b8 新增: 项目详情 2022-06-22 19:08:14 +08:00
yystopf aefd6c08dc 新增: gitea-client引入以及路由定义 2022-06-21 17:39:11 +08:00
yystopf 5c793088fa Merge branch 'develop' into standalone_develop 2022-06-21 11:38:11 +08:00
yystopf 3c2c742121 修复: 项目邀请链接生成多次返回提示 2022-06-21 11:37:41 +08:00
yystopf 430582aa3d Merge branch 'develop' into standalone_develop 2022-06-21 11:18:28 +08:00
yystopf 9221e55752 修复: 邀请链接跳转用户已加入仓库的提示以及项目申请记录只创建一条 2022-06-21 11:18:14 +08:00
yystopf d6bbc7554f Merge branch 'develop' into standalone_develop 2022-06-20 16:38:06 +08:00
yystopf ba1fa8b685 修复: 项目邀请链接私有项目无法访问的情况 2022-06-20 16:37:59 +08:00
yystopf 7ba77680ac Merge branch 'develop' into standalone_develop 2022-06-20 16:36:10 +08:00
yystopf 29e3a55a0c 修复: 项目邀请链接私有项目无法访问的情况 2022-06-20 16:36:01 +08:00
xiaoxiaoqiong c426467a68 Merge remote-tracking branch 'origin/develop' into develop 2022-06-20 15:38:48 +08:00
xiaoxiaoqiong 9fe8df3c1b auth token过期时间7天 2022-06-20 15:38:42 +08:00
yystopf 79cbeb846b Merge branch 'develop' into standalone_develop 2022-06-20 13:05:35 +08:00
yystopf 531495429c 修复: 无法正常更改token长度的问题 2022-06-20 13:05:25 +08:00
yystopf e75f5f655f Merge branch 'develop' into standalone_develop 2022-06-20 10:34:32 +08:00
yystopf bed2469014 fix: change error 2022-06-20 10:34:25 +08:00
yystopf 7e5d5e31e5 merge from develop 2022-06-20 10:21:10 +08:00
yystopf 45b7f70d9f 新增:项目邀请链接增加时间限制,以及show_link接口新增 2022-06-20 10:16:39 +08:00
yystopf 1ebb6cb561 Merge branch 'develop' of https://gitlink.org.cn/Trustie/forgeplus into develop 2022-06-20 09:34:29 +08:00
yystopf 21ccedab9c 修复: doorkeeper 无法生成jwt token 2022-06-17 18:33:37 +08:00
xiaoxiaoqiong 8f45bcf959 Merge remote-tracking branch 'origin/develop' into develop 2022-06-17 17:02:31 +08:00
xiaoxiaoqiong 1f9caeece5 auth2接入 2022-06-17 17:02:24 +08:00
yystopf f4737d88d8 Merge branch 'develop' into standalone_develop 2022-06-17 14:19:58 +08:00
yystopf 5b4e6f4902 修复: 项目存在敏感词更新forked数量使用update_column 2022-06-17 14:19:41 +08:00
yystopf c0c259a5fc Merge branch 'develop' into standalone_develop 2022-06-17 14:07:52 +08:00
yystopf 3d0e323801 fix 2022-06-17 14:07:33 +08:00
yystopf f6fb50529c 新增: 邀请项目链接接口文档 2022-06-17 14:06:59 +08:00
yystopf c42f3d5928 新增:邀请用户链接生成 2022-06-17 14:06:59 +08:00
yystopf 0fa5bb2211 Merge branch 'develop' into standalone_develop 2022-06-16 13:48:28 +08:00
yystopf 42d2b51f7f 修复: 项目敏感词判定只在创建或者更新的时候 2022-06-16 13:42:17 +08:00
xiaoxiaoqiong 66c40d4791 fixed gitea接口返回判断 2022-06-15 11:16:08 +08:00
yystopf dd03b9f147 merge from develop 2022-06-13 12:54:56 +08:00
yystopf ce467736a7 修复: readme无法正常跳转目录的问题 2022-06-13 12:53:40 +08:00
xiaoxiaoqiong f727e8f94e 用户头像访问取消权限制 2022-06-11 12:35:21 +08:00
xiaoxiaoqiong cc2c0e8e26 调整日志输出 2022-06-09 14:50:00 +08:00
xiaoxiaoqiong 43792d3100 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-06-08 20:52:07 +08:00
xiaoxiaoqiong 6f42889b06 通知邮件支持用户不存在时发送base_url 2022-06-08 20:52:01 +08:00
yystopf 7a0dbaaefb Merge branch 'develop' into standalone_develop 2022-06-08 10:47:08 +08:00
yystopf 3e4dd90e17 修复: 用户名称展示时只去掉首末的空格 2022-06-08 10:46:55 +08:00
yystopf 8a7dc75907 fix merge from develop 2022-06-08 10:38:10 +08:00
yystopf 8ae5587516 fix: search name use strip 2022-06-08 10:37:31 +08:00
xiaoxiaoqiong 15a0b85ae6 通知邮件支持用户不存在时发送base_url 2022-06-01 16:11:18 +08:00
xiaoxiaoqiong 0b543f7dda 通知邮件支持用户不存在时发送base_url 2022-06-01 16:08:20 +08:00
xiaoxiaoqiong a07204111a 通知邮件支持用户不存在时发送 2022-06-01 15:24:39 +08:00
xiaoxiaoqiong a7ce3f3728 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-06-01 15:23:14 +08:00
xiaoxiaoqiong 7290cd6495 通知邮件支持用户不存在时发送 2022-06-01 15:23:05 +08:00
yystopf e69fe13745 merge from develop 2022-06-01 10:03:29 +08:00
yystopf 038df804c0 Merge branch 'develop' of https://gitlink.org.cn/Trustie/forgeplus into develop 2022-06-01 10:01:15 +08:00
yystopf 877948b0cd 新增: 通用消息模板后台创建 2022-06-01 10:00:57 +08:00
xiaoxiaoqiong 9a17c4865f 项目名称和描述增加敏感词检测 2022-06-01 09:27:18 +08:00
xiaoxiaoqiong 4a23878185 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-06-01 09:23:21 +08:00
xiaoxiaoqiong dc787a35d4 项目名称和描述增加敏感词检测 2022-06-01 09:23:11 +08:00
yystopf b785406ab8 Merge branch 'develop' into standalone_develop 2022-05-31 16:34:20 +08:00
yystopf 9427db3e5a 新增: 通用消息模板 2022-05-31 16:34:08 +08:00
yystopf 2d52dbfc2f Merge branch 'develop' into standalone_develop 2022-05-30 14:50:48 +08:00
yystopf 81da71d478 Merge branch 'develop' of https://gitlink.org.cn/Trustie/forgeplus into develop 2022-05-30 14:50:23 +08:00
yystopf 169dc84e22 新增: 组织下项目需返回是否为公有项目字段 2022-05-30 14:50:12 +08:00
xiaoxiaoqiong f66e951f31 Merge branch 'develop' into standalone_develop 2022-05-30 11:19:13 +08:00
xiaoxiaoqiong d6fd85f536 Repository.url重写,导入项目时为空 2022-05-30 11:18:24 +08:00
xiaoxiaoqiong 331dfa4b12 Merge branch 'develop' into standalone_develop 2022-05-30 10:26:35 +08:00
xiaoxiaoqiong 6448a30e03 render_error替换成tip_exception 2022-05-30 10:25:43 +08:00
xiaoxiaoqiong 17fb43cea8 render_error替换成tip_exception 2022-05-30 10:24:39 +08:00
xiaoxiaoqiong e76822eb34 fixed ci报错200处理 2022-05-27 16:54:09 +08:00
xiaoxiaoqiong 1220223322 rake导入项目,无语言处理 2022-05-27 14:43:16 +08:00
xiaoxiaoqiong 0b35f56212 rake导入项目,无语言处理 2022-05-27 14:31:29 +08:00
xiaoxiaoqiong 95f98710d6 rake导入项目 2022-05-27 14:26:53 +08:00
xiaoxiaoqiong 40a987116f rake导入项目 2022-05-27 14:25:16 +08:00
xiaoxiaoqiong a00b1d4530 rake导入项目 2022-05-27 14:21:00 +08:00
xiaoxiaoqiong 48cf92a2cf rake导入项目 2022-05-27 14:19:57 +08:00
yystopf 2a387ad997 Merge branch 'develop' into standalone_develop 2022-05-27 10:48:38 +08:00
yystopf a6e50d2a25 修复 devops无法激活项目的问题 2022-05-27 10:48:20 +08:00
yystopf f6e8f24480 Merge branch 'develop' into standalone_develop 2022-05-26 15:09:26 +08:00
yystopf bd16ca476d 增加: 退出仓库api文档 2022-05-26 15:08:42 +08:00
yystopf 19ec81e975 Merge branch 'develop' into standalone_develop 2022-05-25 11:47:44 +08:00
yystopf 2ea78b4f20 增加: 已登录用户对用户名、邮箱、电话进行校验 2022-05-25 11:47:35 +08:00
yystopf ad9bb8e542 修复: 合并从develop 2022-05-24 18:10:20 +08:00
yystopf e36c7a4b6a 修复: 邮箱搜索不需要return 404 2022-05-24 18:09:36 +08:00
yystopf 9979c87d0c 修复: 合并从develop 2022-05-24 17:27:24 +08:00
yystopf 8e8ec821f2 新增: 根据邮箱来获取用户 2022-05-24 17:26:10 +08:00
xiaoxiaoqiong 94166a363c fixed 增加自动登录,gitea注册 2022-05-24 15:24:15 +08:00
xiaoxiaoqiong ebe5fad7dd fixed 增加自动登录,gitea注册 2022-05-24 14:33:23 +08:00
xiaoxiaoqiong 85a36ca2e7 fixed 增加自动登录,gitea注册 2022-05-24 14:14:57 +08:00
xiaoxiaoqiong 75cef14605 fixed 增加自动登录,gitea注册 2022-05-24 14:08:33 +08:00
xiaoxiaoqiong 93f8b659a1 fixed 增加自动登录,gitea注册 2022-05-24 14:00:15 +08:00
xiaoxiaoqiong b45ee11239 fixed 增加自动登录,gitea注册 2022-05-24 13:46:58 +08:00
xiaoxiaoqiong 33fa55bcb6 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-05-24 11:49:01 +08:00
xiaoxiaoqiong 643a99fdf1 fixed 增加自动登录,gitea注册 2022-05-24 11:48:56 +08:00
yystopf 38c5432c2a Merge branch 'develop' into standalone_develop 2022-05-24 11:46:26 +08:00
yystopf 5cf257c3cc Merge branch 'develop' of https://gitlink.org.cn/Trustie/forgeplus into develop 2022-05-24 11:45:53 +08:00
yystopf aa18fe0ad4 修复: 转移项目时新接受者需要移除原来的权限角色 2022-05-24 11:44:05 +08:00
yystopf 1358c23ca6 fix: trasfer project member must remove old permission 2022-05-24 11:43:47 +08:00
yystopf 183eb15c7d Merge branch 'standalone_develop' of https://gitlink.org.cn/Trustie/forgeplus into standalone_develop 2022-05-24 11:03:59 +08:00
yystopf fb43268444 fix: merge from develop 2022-05-24 11:03:54 +08:00
yystopf c27cc063e6 add: new update user info simple and sync gitea 2022-05-24 10:59:52 +08:00
xiaoxiaoqiong b673909f9e fixed 增加自动登录,手机号先记录,后续用 2022-05-24 10:47:17 +08:00
xiaoxiaoqiong ee3a14fa28 fixed 增加自动登录 2022-05-24 10:34:31 +08:00
xiaoxiaoqiong 26bfc2c0bf fixed 增加自动登录 2022-05-24 10:33:21 +08:00
xiaoxiaoqiong 56721930a2 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-05-24 10:26:06 +08:00
xiaoxiaoqiong 2959414d56 fixed 增加自动登录 2022-05-24 10:25:58 +08:00
yystopf 6223cf41e2 Merge branch 'standalone_develop' of https://gitlink.org.cn/Trustie/forgeplus into standalone_develop 2022-05-23 18:10:54 +08:00
yystopf 1d3f79e777 Merge branch 'develop' into standalone_develop 2022-05-23 18:10:47 +08:00
yystopf b0092487e6 fix: is readme use regex 2022-05-23 18:10:41 +08:00
xiaoxiaoqiong 0ae3544235 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop
# Conflicts:
#	app/controllers/users_controller.rb
#	app/helpers/application_helper.rb
2022-05-23 18:06:24 +08:00
xiaoxiaoqiong 05b3f2a2fb fixed timego时间差 2022-05-23 18:05:13 +08:00
yystopf 97fe157279 Merge branch 'develop' into standalone_develop 2022-05-23 09:27:16 +08:00
yystopf fbebd0a623 fix 2022-05-23 09:27:09 +08:00
yystopf 02681abaee Merge branch 'develop' into standalone_develop 2022-05-21 16:46:14 +08:00
yystopf fe23c2afbf fix: replace content next if blank 2022-05-21 16:45:42 +08:00
yystopf b06ad71082 Merge branch 'standalone_develop' of https://gitlink.org.cn/Trustie/forgeplus into standalone_develop 2022-05-20 17:06:10 +08:00
yystopf 3212bc4842 fix: merge from develop 2022-05-20 17:06:00 +08:00
yystopf 779c86108a fix: readme relative delay and replace_content 2022-05-20 17:00:02 +08:00
yystopf e4779926bd Merge pull request '代码溯源部分代码' (#9) from yystopf/forgeplus:standalone_develop into standalone_develop 2022-05-20 14:46:33 +08:00
yystopf 803fdfc49e fix: merge from develop 2022-05-20 11:44:56 +08:00
yystopf 83e43f0c97 add: new readme delay function 2022-05-20 11:43:22 +08:00
yystopf ccec3494bc merge from develop 2022-05-18 11:38:07 +08:00
yystopf e237fd46f7 fix: not found user return 404 2022-05-18 11:37:23 +08:00
yystopf 6dc2f0b062 Merge branch 'develop' into standalone_develop 2022-05-18 11:03:47 +08:00
yystopf ca3c564529 fix: not found user return 404 2022-05-18 11:03:39 +08:00
yystopf f79e4f8e81 Merge branch 'develop' into standalone_develop 2022-05-18 10:11:22 +08:00
yystopf 9cd18397f7 fix: import user login length required 2022-05-18 10:11:09 +08:00
yystopf bfd3298cd0 fix 2022-05-17 11:42:43 +08:00
yystopf 077926de18 fix 2022-05-17 11:39:57 +08:00
yystopf 4fade5d0b7 fix: project trace tasks name rule change 2022-05-17 11:34:08 +08:00
yystopf f51ebaad67 fix 2022-05-16 17:08:52 +08:00
yystopf 8ae6a0deb2 fix: some feature about permission 2022-05-16 17:02:38 +08:00
yystopf d9b3711e08 Merge branch 'develop' into standalone_develop 2022-05-16 16:59:36 +08:00
yystopf 77620f7735 add: download and import user template xlsx 2022-05-16 16:59:25 +08:00
yystopf acbd0d376c fix: change trace user post valid 2022-05-16 14:26:21 +08:00
yystopf 2f4ffe3d8e fix: change trace user post valid 2022-05-16 14:25:54 +08:00
yystopf a6efae8b10 fix 2022-05-16 10:48:23 +08:00
yystopf 5a728e7d4d fix: trace user exist and compact tasks create params 2022-05-16 09:58:47 +08:00
yystopf 04a733d99f fix: check user trace tasks count 2022-05-13 16:57:41 +08:00
yystopf 9e8c576ff6 fix: remove require manager operate 2022-05-13 15:38:04 +08:00
yystopf 94881dd72a add: user trace tasks record 2022-05-13 14:31:59 +08:00
yystopf 2c7bb1b5cd fix: remove project tasks_count 2022-05-13 14:00:21 +08:00
yystopf 0e4c0a46c2 fix 2022-05-13 13:56:12 +08:00
yystopf 7fcbbb7922 fix: remove project tasks_count 2022-05-13 13:53:25 +08:00
yystopf 3d9fe5bba5 add: download pdf from trace server 2022-05-12 17:52:19 +08:00
yystopf 4dccdfde97 fix 2022-05-12 17:15:19 +08:00
yystopf 00fc83235f download file use redirect 2022-05-12 17:11:16 +08:00
yystopf 498ee26f59 fix 2022-05-12 11:14:17 +08:00
yystopf 5d771c824b add: operate permission and request timeout 2022-05-12 11:12:34 +08:00
yystopf 3eccd6be64 add: user has trace user field 2022-05-12 09:45:37 +08:00
yystopf 9b3336c0a0 fix: reload task need increment tasks count 2022-05-12 09:43:55 +08:00
yystopf 12c961d70d fix 2022-05-12 09:43:55 +08:00
yystopf 7750cbe272 add: project trace tasks count 2022-05-12 09:43:55 +08:00
yystopf 1f13bba52e add: trace user tasks_count 2022-05-12 09:43:55 +08:00
yystopf 5dcee1b4dc add: traces api document 2022-05-12 09:43:55 +08:00
yystopf cf09b28f5e add: project menu services 2022-05-12 09:43:54 +08:00
yystopf f31796f344 add: branch valid for tasks 2022-05-12 09:43:52 +08:00
yystopf 2d9bde134a fix 2022-05-12 09:43:00 +08:00
yystopf 59db914bcc change route position 2022-05-12 09:42:59 +08:00
yystopf a0a7f908f4 rename namespace 2022-05-12 09:42:59 +08:00
yystopf 17ccf3d576 rename namespace 2022-05-12 09:42:59 +08:00
yystopf 72a32ed8c4 rename namespace 2022-05-12 09:42:59 +08:00
yystopf c64fa5135b fix 2022-05-12 09:42:59 +08:00
yystopf 12cc37443e add: trace controller and router 2022-05-12 09:42:59 +08:00
yystopf f5efbcfc04 Merge branch 'develop' into standalone_develop 2022-05-07 14:06:58 +08:00
yystopf 50dc5cce5d fix 2022-05-07 14:06:48 +08:00
yystopf 0afac46778 Merge branch 'develop' into standalone_develop 2022-05-07 11:58:13 +08:00
yystopf a6cee63d17 fix: change owner must fix foreign_key 2022-05-07 11:57:58 +08:00
yystopf 20af4a7d82 Merge branch 'develop' into standalone_develop 2022-05-06 17:25:52 +08:00
yystopf 000197b0d1 fix: issues and pull_request length calculate 2022-05-06 17:25:34 +08:00
yystopf 67b386d947 Merge branch 'develop' into standalone_develop 2022-05-06 14:29:15 +08:00
yystopf 6aa3321d17 fix: pr title description validate 2022-05-06 14:29:05 +08:00
yystopf 82df2fd6d8 Merge branch 'standalone_develop' of https://gitlink.org.cn/Trustie/forgeplus into standalone_develop 2022-05-06 09:57:40 +08:00
yystopf 9d8df2b4d9 Merge branch 'develop' into standalone_develop 2022-05-06 09:57:23 +08:00
yystopf d44308fc82 Merge branch 'develop' of https://gitlink.org.cn/Trustie/forgeplus into develop 2022-05-06 09:56:38 +08:00
yystopf ae7d0d1329 add: issues description and journals notes validate 2022-05-06 09:56:22 +08:00
xiaoxiaoqiong 071542bcb4 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-05-05 10:42:23 +08:00
xiaoxiaoqiong 676024b6db fork_users加入组织 2022-05-05 10:42:08 +08:00
xiaoxiaoqiong 55c74de8e4 fork_users加入组织 2022-05-05 10:41:02 +08:00
yystopf 52c94effdc Merge branch 'develop' into standalone_develop 2022-05-05 10:18:19 +08:00
yystopf 7c88ea3d67 add: quit repo 2022-05-05 10:00:02 +08:00
yystopf d799d329ff add: compare add paginate 2022-04-28 18:54:56 +08:00
yystopf f15cd44dff add: compare add paginate 2022-04-28 18:53:33 +08:00
yystopf 91ea5ca96a Merge branch 'develop' into standalone_develop 2022-04-28 11:12:35 +08:00
yystopf 3abd6037d9 fix: show super description aways desplay 2022-04-28 11:12:16 +08:00
yystopf 11724bf63f Merge branch 'develop' into standalone_develop 2022-04-28 11:04:01 +08:00
yystopf ec3a556a6f fix: default value for show super description 2022-04-28 11:03:42 +08:00
yystopf 1d7c7eba24 Merge branch 'develop' into standalone_develop 2022-04-28 10:54:02 +08:00
yystopf 793cbb372a Merge pull request '用户新增个人简介markdown编辑字段' (#8) from yystopf/forgeplus:hh_develop into develop 2022-04-28 10:53:06 +08:00
yystopf 396ac55429 add: user super description 2022-04-28 10:42:55 +08:00
yystopf e1b4622ede Merge branch 'develop' into standalone_develop 2022-04-26 17:17:05 +08:00
yystopf 088c617cc1 add: name query for branches 2022-04-26 17:15:59 +08:00
yystopf 246b484ad8 fix merge from develop 2022-04-18 14:14:48 +08:00
yystopf fc3cf01d3f add: get user image action 2022-04-18 13:49:08 +08:00
yystopf 345fd31834 Merge branch 'develop' into standalone_develop 2022-04-18 10:52:59 +08:00
yystopf 8f5bb0e2d9 fix: organization gitea_token read by associations 2022-04-18 10:52:48 +08:00
yystopf 7aea481ccf add: glcc_apply_infomations admin navbar 2022-04-18 10:24:54 +08:00
yystopf 37317f82bf Merge branch 'develop' into standalone_develop 2022-04-11 16:09:08 +08:00
yystopf 2dfd69ae21 fix: response data result 2022-04-11 16:08:50 +08:00
yystopf a132154136 Merge branch 'develop' into standalone_develop 2022-04-11 15:48:54 +08:00
yystopf 720c073f32 fix 2022-04-11 15:48:47 +08:00
yystopf 185cb308ac Merge branch 'develop' into standalone_develop 2022-04-11 15:30:44 +08:00
yystopf 0076468a15 fix: trace client request data 2022-04-11 15:30:28 +08:00
yystopf 910ae48556 fix: exception to ex 2022-04-11 10:50:18 +08:00
xiaoxiaoqiong 6e86f9d9f3 竞赛配置子赛项 2022-04-08 23:07:23 +08:00
xiaoxiaoqiong 6d280ed8f2 竞赛配置子赛项 2022-04-08 18:51:01 +08:00
xiaoxiaoqiong 3f85f88c92 竞赛配置子赛项 2022-04-08 18:46:14 +08:00
xiaoxiaoqiong f60cd409b6 竞赛配置子赛项 2022-04-08 18:40:52 +08:00
xiaoxiaoqiong 9d46f2743d 竞赛配置子赛项 2022-04-08 17:45:15 +08:00
xiaoxiaoqiong aaf2b43986 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-04-08 17:38:59 +08:00
xiaoxiaoqiong 75a9a65b9b 竞赛配置子赛项 2022-04-08 17:38:26 +08:00
yystopf 17f2436118 Merge branch 'develop' into standalone_develop 2022-04-08 15:03:52 +08:00
yystopf eac7331070 fix: settings need prefix 2022-04-08 15:03:40 +08:00
yystopf 2243697184 Merge branch 'develop' into standalone_develop 2022-04-08 14:53:06 +08:00
yystopf 551f333261 fix 2022-04-08 14:52:56 +08:00
yystopf 18cf1d3ecb Merge branch 'glcc_news_develop' into standalone_develop 2022-04-08 13:23:49 +08:00
yystopf 4cefaa7e92 Merge branch 'develop' into standalone_develop 2022-04-08 11:59:25 +08:00
yystopf dec264d169 fix: sync user pwd 2022-04-07 16:28:40 +08:00
yystopf 8aa935ad5c add: glcc news management and api data 2022-04-07 16:13:32 +08:00
xiaoxiaoqiong 4bdff8313a Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-04-06 20:32:06 +08:00
xiaoxiaoqiong c4f91fb054 搜索用户增加email和单位 2022-04-06 20:32:02 +08:00
yystopf fde01e62ef Merge branch 'develop' into standalone_develop 2022-04-06 17:04:52 +08:00
yystopf 7055974443 fix 2022-04-06 17:04:31 +08:00
xiaoxiaoqiong 1f6ac05bad 允许非登录搜索用户 2022-04-06 14:33:47 +08:00
yystopf c5dd099169 Merge branch 'develop' into standalone_develop 2022-03-31 16:18:25 +08:00
yystopf 3536918938 fix 2022-03-31 16:18:16 +08:00
yystopf d56da6d020 Merge branch 'develop' into standalone_develop 2022-03-31 16:08:43 +08:00
yystopf 56278b84f2 Merge pull request '导航增加动态用户数据获取' (#3) from hh_develop_navbar into develop 2022-03-31 16:08:36 +08:00
yystopf 882a50cf56 add: setting navbar varible 2022-03-31 16:04:48 +08:00
yystopf 234f5b900c Merge branch 'develop' into standalone_develop 2022-03-31 14:25:02 +08:00
yystopf db4031b8bf fix 2022-03-31 14:24:47 +08:00
yystopf dd3236e310 Merge branch 'develop' into standalone_develop 2022-03-31 13:18:46 +08:00
yystopf ecfc39565c fix 2022-03-31 13:18:38 +08:00
yystopf 7fd41e13e4 Merge branch 'develop' into standalone_develop 2022-03-31 13:04:02 +08:00
yystopf 9ced678f91 fix: user trace token 2022-03-31 13:03:54 +08:00
yystopf b25db9d37f fix: merge from develop 2022-03-31 13:00:36 +08:00
yystopf 7951ca28d5 Merge pull request '代码溯源service封装' (#2) from hh_develop into develop 2022-03-31 12:59:34 +08:00
yystopf 4bbb843edf add: trace users and get trace token 2022-03-31 12:54:39 +08:00
yystopf 747646cd9d add: trace client and api completed 2022-03-30 16:19:32 +08:00
yystopf a5be4a9502 fix: readme image regex error rescued 2022-03-28 11:25:13 +08:00
yystopf d0d906d04c fix: readme image regex error rescued 2022-03-28 11:05:21 +08:00
xiaoxiaoqiong 4c69c4d20f Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2022-03-24 10:25:31 +08:00
xiaoxiaoqiong 183315bbd9 万能验证码,用于测试 2022-03-24 10:25:24 +08:00
yystopf 4dc3546124 Merge branch 'standalone_develop' of https://gitlink.org.cn/Trustie/forgeplus into standalone_develop 2022-03-22 10:45:55 +08:00
yystopf d796d59557 Merge branch 'develop' into standalone_develop 2022-03-22 10:45:45 +08:00
yystopf bc639488aa fix: issues filter error 2022-03-22 10:45:14 +08:00
xiaoxiaoqiong 930805704a fixed: 文件目录加载性能优化 2022-03-18 17:32:29 +08:00
xiaoxiaoqiong 9912ad0779 fixed: 1.readme加载不正常 2022-03-18 17:09:06 +08:00
xiaoxiaoqiong d9ae4e4ba0 fixed: 1.readme加载不正常, 2.文件目录加载性能优化 2022-03-18 16:52:23 +08:00
xiaoxiaoqiong 23dc2d7fb6 目录树加载图片不需要Content 2022-03-18 14:55:42 +08:00
xiaoxiaoqiong fe5c18c019 readme.md支持图片相对路径 2022-03-18 14:24:03 +08:00
xiaoxiaoqiong fa6f015128 readme.md支持图片相对路径 2022-03-18 14:21:12 +08:00
xiaoxiaoqiong 7f1b95c7d7 readme.md支持图片相对路径 2022-03-18 14:03:59 +08:00
xiaoxiaoqiong 2346b0f848 readme.md支持图片相对路径 2022-03-18 11:41:26 +08:00
xiaoxiaoqiong c0e97409cb gitea 请求延长到20分钟 2022-03-11 14:07:39 +08:00
xiaoxiaoqiong 99fbecc834 gitea 请求延长到20分钟 2022-03-11 14:06:12 +08:00
yystopf 4cc8dd70f4 Merge branch 'develop' into standalone_develop 2022-03-10 10:47:20 +08:00
yystopf 8d0a6d267a fix: download escape 2022-03-10 10:47:06 +08:00
yystopf 0db1820557 Merge branch 'develop' into standalone_develop 2022-03-10 09:52:12 +08:00
yystopf b1c03ed5e8 fix: activity issues must only issue 2022-03-10 09:51:46 +08:00
yystopf 1c660213a7 fix: claims is losed 2022-03-10 09:36:51 +08:00
yystopf 748f6cdd4d Merge branch 'standalone_develop' of https://gitlink.org.cn/Trustie/forgeplus into standalone_develop 2022-03-07 11:20:58 +08:00
yystopf 1fe8d1defc Merge branch 'develop' into standalone_develop 2022-03-07 11:20:23 +08:00
yystopf ef12f85687 fix: create pull request valid merge_user_login 2022-03-07 11:17:10 +08:00
yystopf e120c4dac2 add: origin repository need open pr menu 2022-03-07 10:53:07 +08:00
yystopf e1cf2fcdeb fix: owner project not allow repeat name 2022-03-07 10:25:05 +08:00
yystopf c4f380873e fix: is public project attachment allow is not member read 2022-03-07 10:20:51 +08:00
yystopf 5cb2e55f74 add: organization users insist team nickname search 2022-03-07 09:58:05 +08:00
xiaoxiaoqiong 664b806c0a routes合并 2022-03-03 15:06:56 +08:00
xiaoxiaoqiong 1dd3fbc69a fixed fork列表中存在组织时显示错误 2022-03-03 14:16:57 +08:00
xiaoxiaoqiong 94d259ea03 fixed fork列表中存在组织时显示错误 2022-03-03 14:16:05 +08:00
yystopf 3091593d14 add: standalone admin menu 2022-03-02 10:48:21 +08:00
yystopf c5d2fad913 Merge branch 'develop' into standalone_develop 2022-03-02 10:34:16 +08:00
yystopf b97c42d0ae fix: email logo 2022-03-02 10:33:35 +08:00
yystopf c76466a883 Merge branch 'pre_trustie_server' into trustie_server 2022-02-24 18:10:06 +08:00
yystopf 217e0fdd97 Merge branch 'standalone_develop' into pre_trustie_server 2022-02-24 18:09:53 +08:00
yystopf f0b8489828 Merge branch 'develop' into standalone_develop 2022-02-24 18:09:20 +08:00
yystopf a2612d8009 fix 2022-02-24 18:09:11 +08:00
yystopf 2f2655525f fix: user rank user_id must exist 2022-02-24 18:07:18 +08:00
yystopf 70ade7b27b Merge branch 'pre_trustie_server' into trustie_server 2022-02-24 16:45:12 +08:00
yystopf 57c60b2fe9 Merge branch 'standalone_develop' into pre_trustie_server 2022-02-24 16:44:58 +08:00
yystopf aa643430fa Merge branch 'develop' into standalone_develop 2022-02-24 14:27:31 +08:00
yystopf 1a93477635 fix: forked templete delay 2022-02-24 14:26:04 +08:00
yystopf 8f9aedd7d6 Merge branch 'pre_trustie_server' into trustie_server 2022-02-24 11:47:38 +08:00
yystopf ab989ed7d7 Merge branch 'standalone_develop' into pre_trustie_server 2022-02-24 11:46:44 +08:00
xiaoxiaoqiong 28d07d5c54 fixed 合并冲突 2022-02-22 17:49:14 +08:00
yystopf 53d094784b Merge branch 'develop' into standalone_develop 2022-02-22 11:03:47 +08:00
yystopf 7c664addbd fix 2022-02-22 11:03:28 +08:00
yystopf 6167834bfa Merge branch 'pre_trustie_server' into trustie_server 2022-02-22 10:40:11 +08:00
yystopf 1bb754e9d8 Merge branch 'standalone_develop' into pre_trustie_server 2022-02-22 10:39:47 +08:00
yystopf f2f2ce8252 merge from develop 2022-02-22 10:38:42 +08:00
yystopf c6b79f82bc fix: change password new version 2022-02-22 10:03:51 +08:00
xiaoxiaoqiong 4e3f9cc019 竞赛通知任务调度 2022-02-21 16:48:59 +08:00
xiaoxiaoqiong 5ed7b3e4ad 竞赛通知任务调度 2022-02-21 16:46:40 +08:00
xiaoxiaoqiong 4e2c46260c Merge remote-tracking branch 'origin/develop' into develop 2022-02-17 18:28:40 +08:00
xiaoxiaoqiong 9ba00b21c9 竞赛通知api 2022-02-17 18:28:32 +08:00
yystopf 1100309038 Merge branch 'develop' into standalone_develop 2022-02-17 11:12:58 +08:00
yystopf b11f5fd228 fix: cache rollback 2022-02-17 11:12:50 +08:00
yystopf af5f2b2fe3 Merge branch 'develop' into standalone_develop 2022-02-17 10:59:29 +08:00
yystopf 90dbe0730a fix: job not affect 2022-02-17 10:59:18 +08:00
yystopf f39e8b7668 Merge branch 'develop' into standalone_develop 2022-02-17 09:43:52 +08:00
yystopf d6633cb73a fix 2022-02-17 09:43:44 +08:00
yystopf 86ef890f8b Merge branch 'develop' into standalone_develop 2022-02-17 09:40:54 +08:00
yystopf a7a6abd22a fix: add rule for issue expire 2022-02-17 09:40:44 +08:00
yystopf 6fd47b56a5 Merge branch 'develop' into standalone_develop 2022-02-17 09:37:00 +08:00
yystopf c956667ce0 fix 2022-02-17 09:36:49 +08:00
yystopf 898453c88c Merge branch 'develop' into standalone_develop 2022-02-16 15:10:19 +08:00
yystopf 5701c818ed fix 2022-02-16 15:10:10 +08:00
yystopf 1ac2ddfaa5 fix: default setting for new template message 2022-02-16 11:46:34 +08:00
yystopf 0bd274f813 Merge branch 'develop' into standalone_develop 2022-02-16 11:17:15 +08:00
yystopf 4aac05d4e1 fix: build user template message data must fronted 2022-02-16 11:17:03 +08:00
yystopf b028a70646 Merge branch 'pre_trustie_server' into trustie_server 2022-02-16 09:35:56 +08:00
yystopf 3c7da85bee Merge branch 'standalone_develop' into pre_trustie_server 2022-02-16 09:35:42 +08:00
yystopf 9751c954df Merge branch 'develop' into standalone_develop 2022-02-16 09:35:22 +08:00
yystopf 84b56bfcb8 fix: project milestone create notice template 2022-02-16 09:34:31 +08:00
yystopf ac07c88f84 Merge branch 'develop' into standalone_develop 2022-02-15 18:30:25 +08:00
yystopf 7485564bb9 add: template message platform varible 2022-02-15 18:30:13 +08:00
yystopf 5e696ae905 Merge branch 'develop' into standalone_develop 2022-02-15 17:33:55 +08:00
yystopf b5acf2308a Merge pull request '新增站内信以及里程碑完成度修复' (#299) from yystopf/forgeplus:develop into develop 2022-02-15 17:33:30 +08:00
yystopf e3f4313c80 fix 2022-02-15 17:29:13 +08:00
yystopf b223abe229 fix: init data 2022-02-15 17:26:46 +08:00
yystopf b3bede308c add: some new message rules 2022-02-15 17:13:06 +08:00
xiaoxiaoqiong 2f170a54c6 fixed setting编辑类型下拉选中 2022-02-15 17:10:57 +08:00
yystopf 22293572ac fix: issue changed about version callback 2022-02-14 17:02:59 +08:00
xiaoxiaoqiong d262da7c65 通过配置确定github克隆方式 2022-02-14 16:56:12 +08:00
xiaoxiaoqiong 2050559077 通过配置确定github克隆方式 2022-02-14 16:54:24 +08:00
xiaoxiaoqiong 8720cab1e9 通过配置确定github克隆方式 2022-02-14 16:53:29 +08:00
yystopf 959c1e8d95 add: user profile setting message 2022-02-14 13:55:34 +08:00
yystopf 52bde548fa Merge branch 'pre_trustie_server' into trustie_server 2022-02-11 16:28:07 +08:00
yystopf ea11672fff Merge branch 'standalone_develop' into pre_trustie_server 2022-02-11 16:27:56 +08:00
yystopf 09c4f8db0e Merge branch 'develop' into standalone_develop 2022-02-11 16:27:42 +08:00
yystopf 29dc3fff39 fix: migrate use old rule 2022-02-11 16:27:22 +08:00
yystopf da863c3963 Merge branch 'pre_trustie_server' into trustie_server 2022-02-10 14:11:25 +08:00
yystopf 8d18149537 Merge branch 'standalone_develop' into pre_trustie_server 2022-02-10 14:11:06 +08:00
yystopf 8050af23fc Merge branch 'develop' into standalone_develop 2022-02-10 14:10:54 +08:00
yystopf 298abdd1b1 fix: devops organization bug 2022-02-10 14:08:14 +08:00
yystopf eb0ced39f5 Merge branch 'pre_trustie_server' into trustie_server 2022-01-26 13:47:26 +08:00
yystopf 2738d950d4 Merge branch 'standalone_develop' into pre_trustie_server 2022-01-26 13:47:14 +08:00
yystopf 3ce9b2d145 Merge branch 'develop' into standalone_develop 2022-01-25 14:26:20 +08:00
yystopf 26f87fba16 fix: edit transfer need change fork info 2022-01-25 14:26:11 +08:00
yystopf 465f38bca7 Merge branch 'develop' into standalone_develop 2022-01-25 11:39:15 +08:00
yystopf 1e9a32a93e fix: issues select count paginator 2022-01-25 11:39:06 +08:00
yystopf 04bc6d363f Merge branch 'develop' into standalone_develop 2022-01-25 10:34:33 +08:00
yystopf 2dc79052c2 fix: create project trend when status is closed 2022-01-25 10:34:20 +08:00
yystopf f6ff8ac209 Merge branch 'pre_trustie_server' into trustie_server 2022-01-24 17:27:30 +08:00
yystopf b9e2a6edf1 Merge branch 'standalone_develop' into pre_trustie_server 2022-01-24 17:27:21 +08:00
yystopf e0f5337fdd Merge branch 'develop' into standalone_develop 2022-01-24 14:26:36 +08:00
yystopf 380ca3a066 fix: projects query rule 2022-01-24 14:26:24 +08:00
yystopf 7d19849968 Merge branch 'develop' into standalone_develop 2022-01-24 10:44:59 +08:00
yystopf 237b0afb08 fix: team user build use find or create by 2022-01-24 10:44:46 +08:00
yystopf 67914201bf merge from develop 2022-01-24 10:06:20 +08:00
yystopf e14936e820 fix: issues select count 2022-01-24 10:00:44 +08:00
yystopf 655c85851f Merge branch 'develop' of https://git.trustie.net/Gitlink/forgeplus into develop 2022-01-21 18:20:40 +08:00
yystopf 1c7e414aa4 fix: owner allow nil 2022-01-21 18:19:43 +08:00
yystopf 099fc52e00 fix: contributor error rescue 2022-01-21 18:19:34 +08:00
yystopf 490957ec3b fix: contributor error rescue 2022-01-21 18:19:27 +08:00
yystopf b1884d30d5 fix: detail result delay 2022-01-21 18:19:06 +08:00
xiaoxiaoqiong 98d8ee1fb6 Merge remote-tracking branch 'origin/develop' into develop 2022-01-21 15:50:41 +08:00
xiaoxiaoqiong 2ca77732c8 fixed 注册登录类型 2022-01-21 15:50:37 +08:00
yystopf 1760b42127 Merge branch 'pre_trustie_server' into trustie_server 2022-01-14 17:38:27 +08:00
yystopf 9f7725b097 Merge branch 'standalone_develop' into pre_trustie_server 2022-01-14 17:38:16 +08:00
yystopf 612101498c Merge branch 'develop' into standalone_develop 2022-01-14 17:38:09 +08:00
yystopf 70d22f7c4f fix: create team overflow tip 2022-01-14 16:09:38 +08:00
yystopf 25d0e784bb fix: pr assignee info use array 2022-01-14 16:00:59 +08:00
yystopf 5d45b24299 fix: devops return result changed 2022-01-14 10:55:53 +08:00
yystopf b6b8befde7 fix: pr update must edit assignee login 2022-01-14 10:55:01 +08:00
yystopf f33b9559cd fix: download delay 2022-01-13 11:24:27 +08:00
yystopf ab6ac05a7d Merge branch 'pre_trustie_server' into trustie_server 2022-01-11 10:53:40 +08:00
yystopf cf69628f85 Merge branch 'standalone_develop' into pre_trustie_server 2022-01-11 10:53:29 +08:00
yystopf 4a8f8af896 Merge branch 'develop' into standalone_develop 2022-01-11 10:48:56 +08:00
yystopf f9bc2258ec fix: migrate repo github use another addr 2022-01-11 10:48:29 +08:00
yystopf f168fe3d03 Merge branch 'pre_trustie_server' into trustie_server 2022-01-07 18:05:12 +08:00
yystopf 05f5982a53 Merge branch 'standalone_develop' into pre_trustie_server 2022-01-07 18:04:55 +08:00
yystopf f76dad680a Merge pull request '上传头像、组织团队限制、文件下载问题修复、branch简化数据、webhook问题修复' (#298) from develop into standalone_develop 2022-01-07 18:03:57 +08:00
yystopf 2a09ced1ce fix: branches use branch name api 2022-01-07 15:41:50 +08:00
yystopf 7a1e6cfbad fix: issue edit and new branches only load name api 2022-01-07 15:19:10 +08:00
yystopf 47d1f727ce fix: create team count limit 2022-01-06 17:38:44 +08:00
yystopf a7665df0ea fix: download file url use cgi escape 2022-01-06 15:04:59 +08:00
yystopf 84f12adce8 fix: webhook tasks list error delay 2022-01-06 14:29:31 +08:00
yystopf 7fde1e0e12 fix: webhook field changed 2022-01-06 11:10:49 +08:00
yystopf 499734ebf9 fix: upload user image allow base64 2022-01-04 22:44:39 +08:00
yystopf f339df699e add: user upload image 2022-01-03 22:32:09 +08:00
yystopf cfd94cb3b7 fix: migrate repo username nil is excepted 2022-01-03 20:33:11 +08:00
yystopf 43e0617429 fix: webhook field changed 2021-12-30 09:47:12 +08:00
xiaoxiaoqiong 25e4a817f6 Merge branch 'pre_trustie_server' into trustie_server 2021-12-29 15:01:59 +08:00
xiaoxiaoqiong 2021cbbd5b Merge branch 'trustie_server' of https://git.trustie.net/Gitlink/forgeplus into trustie_server 2021-12-29 15:01:48 +08:00
xiaoxiaoqiong 5a43239ad9 Merge branch 'standalone_develop' into pre_trustie_server 2021-12-29 15:01:25 +08:00
xiaoxiaoqiong 650dbea38b 停止trustie同步cookie 2021-12-29 15:00:37 +08:00
xiaoxiaoqiong abde13f061 Merge remote-tracking branch 'origin/standalone_develop' into standalone_develop 2021-12-29 14:23:56 +08:00
xiaoxiaoqiong 0619c5a4d9 开启dubug 2021-12-29 14:23:51 +08:00
yystopf e26871728f Merge branch 'pre_trustie_server' into trustie_server 2021-12-29 10:05:59 +08:00
yystopf ec444f3855 Merge branch 'standalone_develop' into pre_trustie_server 2021-12-29 10:05:42 +08:00
yystopf 7beed940e9 Merge branch 'develop' into standalone_develop 2021-12-29 10:05:29 +08:00
yystopf d6b66d5324 fix 2021-12-29 09:56:49 +08:00
yystopf 0c1df3b2cb fix 2021-12-29 09:53:14 +08:00
yystopf fa86d3ea10 fix: branch delay 2021-12-29 09:50:57 +08:00
yystopf 8c99b754fb fix: create pr branch name escape 2021-12-28 18:37:44 +08:00
yystopf f3cf2c87c9 fix: create pr branch name escape 2021-12-28 18:29:58 +08:00
xiaoxiaoqiong ef55e44063 Merge branch 'trustie_server' of https://git.trustie.net/Gitlink/forgeplus into trustie_server 2021-12-28 16:24:56 +08:00
xxq250 a9df1ca75f Merge pull request '1224里程碑、1231里程碑内容同步至生产环境' (#297) from pre_trustie_server into trustie_server 2021-12-28 16:23:58 +08:00
yystopf 4f63caa86c Merge branch 'standalone_develop' into pre_trustie_server 2021-12-28 16:10:44 +08:00
yystopf 96b0f2d167 Merge branch 'develop' into standalone_develop 2021-12-28 16:10:16 +08:00
yystopf 8e4e6fc0ac Merge pull request '1224里程碑、1231里程碑内容' (#296) from yystopf/forgeplus:develop into develop 2021-12-28 16:09:45 +08:00
yystopf 75f3166ffa fix 2021-12-28 14:45:12 +08:00
yystopf 04bf423fcb fix 2021-12-28 14:42:55 +08:00
yystopf 51e8c9d908 fix: compare use url escape 2021-12-28 14:22:06 +08:00
yystopf 4304a35b80 fix 2021-12-28 11:07:40 +08:00
yystopf 076375633a fix 2021-12-27 17:55:02 +08:00
yystopf dbf5e711a5 fix 2021-12-27 17:44:08 +08:00
yystopf 4432e65683 fix: operate issue permission reset 2021-12-27 17:32:35 +08:00
yystopf dcf44a78f0 fix: unvalid branch name return error 2021-12-27 16:34:54 +08:00
yystopf 12edc620df fix: complete profile condition 2021-12-24 16:15:59 +08:00
yystopf 4ce03145df fix 2021-12-23 14:33:31 +08:00
yystopf 3e04a37ece add: team remove and joined template message 2021-12-23 14:26:40 +08:00
yystopf 78f464ccba fix: escape 2021-12-23 10:37:57 +08:00
yystopf 64423f1999 fix 2021-12-22 18:16:39 +08:00
yystopf 05c3f60dab fix 2021-12-22 18:08:10 +08:00
yystopf 0083ef33cb fix 2021-12-22 16:03:23 +08:00
yystopf 36b68df273 fix: remote register validate 2021-12-22 14:39:47 +08:00
yystopf e1a5918c22 add: project trends project info 2021-12-22 13:57:02 +08:00
xiaoxiaoqiong e9835796f6 Merge branch 'trustie_server' of https://git.trustie.net/Gitlink/forgeplus into trustie_server 2021-12-22 11:42:28 +08:00
yystopf 26ae9b35df fix: change member role and change team user team 2021-12-22 11:32:40 +08:00
yystopf 8e79b43aaf add: member bind team user 2021-12-22 11:16:27 +08:00
yystopf 056c145ff8 Merge branch 'pre_trustie_server' into trustie_server 2021-12-21 15:18:12 +08:00
yystopf c105785105 Merge branch 'standalone_develop' into pre_trustie_server 2021-12-21 15:17:44 +08:00
yystopf c2bd78d70d Merge branch 'develop' into standalone_develop 2021-12-21 15:17:08 +08:00
yystopf d28eba6423 fix: create org error 2021-12-21 15:16:38 +08:00
yystopf 688be1bb7d fix: return issue version id 2021-12-21 15:16:38 +08:00
yystopf df69dee282 fix: some error for read raw data 2021-12-21 15:14:10 +08:00
yystopf ee6404a3b3 Merge branch 'standalone_develop' into pre_trustie_server 2021-12-21 14:31:34 +08:00
yystopf fae8313df6 Merge branch 'develop' into standalone_develop 2021-12-21 14:31:24 +08:00
yystopf 45a77e5c07 fix: readme private file path use authorize 2021-12-21 14:24:27 +08:00
yystopf 7849bd0ebf fix: remove pr permission 2021-12-21 10:16:29 +08:00
yystopf 7f58b870d4 Merge branch 'pre_trustie_server' into trustie_server 2021-12-20 15:54:14 +08:00
yystopf 0c7499842f Merge branch 'standalone_develop' into pre_trustie_server 2021-12-20 15:53:54 +08:00
yystopf ab361d8009 Merge branch 'develop' into standalone_develop 2021-12-20 15:53:40 +08:00
yystopf 3649bf1fd0 fix 2021-12-20 15:53:24 +08:00
yystopf bcfb544cca Merge branch 'pre_trustie_server' into trustie_server 2021-12-20 15:42:54 +08:00
yystopf edb1114d39 Merge branch 'standalone_develop' into pre_trustie_server 2021-12-20 15:42:36 +08:00
yystopf a24d33d2ee Merge pull request '同步到测试环境' (#294) from develop into standalone_develop 2021-12-20 15:42:34 +08:00
yystopf 6ffc2938a1 fix: download file url escape 2021-12-20 15:39:33 +08:00
yystopf aa60de1dac fix: valid pr title length 2021-12-20 15:38:08 +08:00
yystopf 29f98513e2 fix: org update error 2021-12-20 15:38:08 +08:00
yystopf e35cdf39fb fix: login password validate 2021-12-20 15:34:55 +08:00
yystopf 3f98e78942 Merge branch 'pre_trustie_server' into trustie_server 2021-12-17 16:25:22 +08:00
yystopf bec98bbc9d Merge branch 'standalone_develop' into pre_trustie_server 2021-12-17 15:45:57 +08:00
yystopf af160084c4 fix: merge from develop 2021-12-17 15:45:28 +08:00
yystopf e51b86538b Merge pull request '更改易修为疑修' (#292) from yystopf/forgeplus:develop into develop 2021-12-17 15:44:20 +08:00
yystopf da4fd3a762 fix: 易修 to 疑修 2021-12-17 15:35:30 +08:00
xiaoxiaoqiong 9c1ed28627 Merge branch 'trustie_server' of https://git.trustie.net/Gitlink/forgeplus into trustie_server 2021-12-16 10:56:30 +08:00
yystopf 01e7d857c8 Merge pull request '同步到生产环境' (#291) from pre_trustie_server into trustie_server 2021-12-16 10:52:59 +08:00
xiaoxiaoqiong 06635e8bb6 Merge branch 'pre_trustie_server' into trustie_server 2021-12-16 10:35:14 +08:00
yystopf 96d1a7440d Merge branch 'standalone_develop' into pre_trustie_server 2021-12-14 10:20:54 +08:00
yystopf 8a34699acd fix: merge from develop 2021-12-14 10:20:35 +08:00
xiaoxiaoqiong efc82b9841 fix: issue is collaborators 2021-12-14 10:17:15 +08:00
yystopf e3df503dd2 fix 2021-12-14 10:13:28 +08:00
yystopf 6a2ad67386 fix 2021-12-14 09:53:54 +08:00
yystopf 3d12db3a07 fix: atme service use perform later 2021-12-14 09:39:26 +08:00
yystopf 9c5ff55b70 Merge branch 'pre_trustie_server' into trustie_server 2021-12-13 18:35:53 +08:00
yystopf 82bae9159b Merge branch 'standalone_develop' into pre_trustie_server 2021-12-13 16:40:14 +08:00
yystopf 1d13b3686b Merge branch 'develop' into standalone_develop 2021-12-13 16:39:47 +08:00
yystopf 1faaf1d7d1 fix: project menu list wiki location 2021-12-13 11:45:58 +08:00
yystopf f8a6f62342 fix: project rank include educoder 2021-12-10 09:35:03 +08:00
yystopf b816b6a449 Merge branch 'standalone_develop' into pre_trustie_server 2021-12-10 09:20:04 +08:00
yystopf d48700d200 Merge pull request '同步代码' (#288) from develop into standalone_develop 2021-12-10 09:19:42 +08:00
yystopf 66d1246a6c fix: educoder project menu return 2021-12-09 15:54:21 +08:00
yystopf f79beef3f9 fix: issues branch educoder use master 2021-12-09 14:33:46 +08:00
yystopf 81e6691632 fix: educoder entries image file type 2021-12-09 11:33:43 +08:00
yystopf 38d6519381 fix 2021-12-09 11:08:54 +08:00
yystopf 16418675ac fix 2021-12-09 11:08:10 +08:00
yystopf 102858bc8c fix: educoder entries file use hash 2021-12-09 11:06:49 +08:00
yystopf 0d64768e4b fix: educoder file visit delay 2021-12-09 09:37:28 +08:00
yystopf beccac652f fix 2021-12-08 18:25:31 +08:00
yystopf 30eb1958c1 fix 2021-12-08 18:23:29 +08:00
yystopf 33e17e8439 fix: educoder sub_entries and commit author 2021-12-08 18:18:19 +08:00
yystopf 5445206716 Merge branch 'standalone_develop' into pre_trustie_server 2021-12-08 16:26:15 +08:00
yystopf 1c19c05fd8 fix 2021-12-08 16:26:06 +08:00
yystopf 957980fc71 Merge branch 'standalone_develop' into pre_trustie_server 2021-12-08 16:23:21 +08:00
yystopf 657e2cf169 fix: merge from develop 2021-12-08 16:22:34 +08:00
yystopf e0c47c2abd fix: educoder clone url 2021-12-08 16:18:13 +08:00
xiaoxiaoqiong 9e64a4842d Merge branch 'standalone_develop' into pre_trustie_server 2021-12-08 15:32:47 +08:00
xiaoxiaoqiong ba9e74f373 fixed db:migrate 2021-12-08 15:32:28 +08:00
xxq250 93dd5b5d84 Merge pull request '易修声明功能' (#284) from starlee/forgeplus:lzx-claim-2.0 into standalone_develop 2021-12-08 15:12:15 +08:00
yystopf 422549f9e7 fix 2021-12-08 15:01:33 +08:00
yystopf 0358229b95 fix: educoder api delay 2021-12-08 14:47:15 +08:00
yystopf c4586fbb36 fix: remove detail language and contributors 2021-12-08 14:11:37 +08:00
xiaoxiaoqiong 0a5a75dc0d Merge branch 'pre_trustie_server' into trustie_server 2021-12-07 17:03:32 +08:00
xiaoxiaoqiong d4ee468435 Merge branch 'standalone_develop' into pre_trustie_server 2021-12-07 17:03:02 +08:00
xiaoxiaoqiong a26d8be0b0 fixed educode not owner 2021-12-07 17:02:35 +08:00
xiaoxiaoqiong f94006abfd fixed educode not owner 2021-12-07 16:59:04 +08:00
xiaoxiaoqiong 5618887e7a Merge branch 'pre_trustie_server' into trustie_server 2021-12-07 16:50:05 +08:00
xiaoxiaoqiong 3480e15c48 Merge branch 'standalone_develop' into pre_trustie_server 2021-12-07 16:49:21 +08:00
xiaoxiaoqiong d85a446edc Merge branch 'develop' into standalone_develop 2021-12-07 16:48:52 +08:00
xiaoxiaoqiong 4d61e7618a fixed detail 2021-12-07 16:46:06 +08:00
xiaoxiaoqiong 9a8ddffb5a Merge branch 'pre_trustie_server' into trustie_server 2021-12-07 16:40:37 +08:00
xiaoxiaoqiong 2116af759d Merge branch 'standalone_develop' into pre_trustie_server 2021-12-07 16:40:18 +08:00
xiaoxiaoqiong 38862b9843 fixed owner 2021-12-07 16:40:01 +08:00
xiaoxiaoqiong f889849b6b Merge branch 'pre_trustie_server' into trustie_server 2021-12-07 16:35:05 +08:00
xiaoxiaoqiong 3501ff6bd4 Merge branch 'standalone_develop' into pre_trustie_server 2021-12-07 16:34:29 +08:00
xiaoxiaoqiong badd950ff9 merge develop 2021-12-07 16:34:11 +08:00
xiaoxiaoqiong 8f70d4f604 Merge branch 'standalone_develop' into pre_trustie_server 2021-12-07 16:32:33 +08:00
xiaoxiaoqiong 20bfbdc06f fixed owner 404 2021-12-07 16:32:14 +08:00
xiaoxiaoqiong b7bebcd736 Merge branch 'pre_trustie_server' into trustie_server 2021-12-07 16:28:47 +08:00
xiaoxiaoqiong d4663e410d Merge branch 'standalone_develop' into pre_trustie_server 2021-12-07 16:27:52 +08:00
xiaoxiaoqiong 1b385f4377 Merge branch 'standalone_develop' of https://git.trustie.net/Gitlink/forgeplus into standalone_develop 2021-12-07 16:27:25 +08:00
xiaoxiaoqiong 5c445b9ea0 merge develop 2021-12-07 16:27:17 +08:00
xiaoxiaoqiong 36286d9003 fixed:educode项目 2021-12-07 16:20:05 +08:00
yystopf f533a6253b Merge pull request '解决冲突,合并到测试环境' (#283) from yystopf/forgeplus:standalone_develop into standalone_develop 2021-12-07 14:41:37 +08:00
yystopf 0f9d33e755 merge from develop 2021-12-07 14:39:11 +08:00
yystopf 51356da7f3 fix: owners not return 404 2021-12-07 14:34:57 +08:00
yystopf ebe893022f fix: api doc logo 2021-12-07 14:34:57 +08:00
yystopf c5f22e6c70 fix: org delete status error 2021-12-07 14:34:57 +08:00
xiaoxiaoqiong 30135ccad7 Merge branch 'pre_trustie_server' into trustie_server 2021-12-01 17:45:31 +08:00
xiaoxiaoqiong eac97c6698 关闭项目精选筛选 2021-12-01 17:45:02 +08:00
xiaoxiaoqiong 8ee52440c7 关闭项目精选 2021-12-01 17:43:43 +08:00
xiaoxiaoqiong d9925db510 Merge branch 'trustie_server' of https://git.trustie.net/Gitlink/forgeplus into trustie_server 2021-12-01 17:23:38 +08:00
xiaoxiaoqiong 34bcf9ed57 Merge branch 'standalone_develop' into pre_trustie_server 2021-12-01 17:21:54 +08:00
xiaoxiaoqiong b22c65e5c2 Merge branch 'develop' into standalone_develop 2021-12-01 17:21:23 +08:00
xiaoxiaoqiong 922561afb1 项目精选加索引 2021-12-01 17:20:52 +08:00
yystopf 6479ac8696 Merge pull request '生产环境js编译问题' (#277) from yystopf/forgeplus:hh_js_trustie_server into trustie_server 2021-12-01 16:32:12 +08:00
yystopf f4e4015a89 fix: production js compile 2021-12-01 16:29:58 +08:00
xiaoxiaoqiong cd4ba9c1d9 Merge branch 'standalone_develop' into pre_trustie_server 2021-12-01 10:05:37 +08:00
xiaoxiaoqiong f12b10fa23 merge 测试环境standalone_develop 2021-12-01 10:05:00 +08:00
yystopf 4a3275a15e Merge pull request '同步代码到预上线分支' (#276) from develop into standalone_develop 2021-12-01 10:03:26 +08:00
yystopf 6f7899d16f fix: create pr authorize tip 2021-11-30 20:23:37 +08:00
yystopf 24170fc2cb Merge pull request '同步通用代码到预上线' (#274) from develop into standalone_develop 2021-11-30 17:09:31 +08:00
yystopf 4e3c8e414c fix 2021-11-30 15:36:51 +08:00
yystopf d588a78f62 fix: locales for projects update form 2021-11-30 15:35:36 +08:00
yystopf a7d681c4dd fix: compare commit author image url 2021-11-30 15:03:55 +08:00
yystopf 7a93db9ed2 fix: labels limit and issues operate field 2021-11-30 13:58:51 +08:00
yystopf 74e5fa0e31 fix: fork project id validate 2021-11-29 17:01:39 +08:00
yystopf 80b83c5230 fix: index read api data use params only data 2021-11-29 16:40:24 +08:00
yystopf 6ffc702209 Merge pull request '提交最新代码到预上线环境' (#272) from develop into standalone_develop 2021-11-29 15:44:51 +08:00
yystopf de995c8714 fix: merge conflict 2021-11-29 15:43:47 +08:00
xiaoxiaoqiong 16f37a3729 email中logo 2021-11-29 15:35:54 +08:00
yystopf ea156cec7e fix: download type add video type 2021-11-29 15:33:09 +08:00
xiaoxiaoqiong f76df2c629 logo 2021-11-29 14:44:54 +08:00
yystopf 7499d8af89 fix: project private params to boolean 2021-11-29 14:43:29 +08:00
yystopf f8654edc3b fix: project labels return success info 2021-11-29 14:28:13 +08:00
yystopf d16f290aa6 fix: create pr validate fork_project_id 2021-11-29 14:17:27 +08:00
yystopf 9385d346f1 fix 2021-11-29 14:03:17 +08:00
yystopf 22f3371090 fix: change issues priority id default value 2021-11-29 11:05:33 +08:00
yystopf c0a4f8f4ec fix: create pull request need compare 2021-11-29 10:53:59 +08:00
yystopf 7586a0fb21 fix: change issue tag change size 2021-11-29 10:27:41 +08:00
yystopf c0e3a91a46 fix: page 500 2021-11-29 09:32:39 +08:00
xxq250 7c765817c9 Merge pull request 'merge develop to standalone_develop' (#267) from develop into standalone_develop 2021-11-26 14:21:53 +08:00
xiaoxiaoqiong 7ebd8681fa 500页面样式调整 2021-11-26 09:49:13 +08:00
xxq250 72553dec57 Merge pull request '一些功能修改以及bug修复' (#263) from yystopf/forgeplus:hh_hotfix into develop 2021-11-26 09:39:58 +08:00
yystopf dee68808b1 fix 2021-11-25 17:37:05 +08:00
yystopf 96d7917bbf fix: change 500 html 2021-11-25 17:34:21 +08:00
yystopf abca0fe432 fix: change pr path id to number 2021-11-25 15:08:59 +08:00
yystopf d7612a0921 add: create update pr need authorize 2021-11-25 14:16:45 +08:00
yystopf c54950a95f fix: compare params contain .json 2021-11-25 14:06:55 +08:00
starlee e25e2fdd77 add the claim mechanism 2021-11-25 13:33:32 +08:00
yystopf be0f68cede fix 2021-11-25 11:19:50 +08:00
yystopf 1b92b53099 fix 2021-11-25 11:00:19 +08:00
yystopf 5634413cac add: create pullrequest validate 2021-11-25 10:52:42 +08:00
xxq250 1eb1d25040 Merge pull request 'README文件中的图片显示问题' (#262) from xxq250/forgeplus:fix_issue_xxq into standalone_develop 2021-11-25 10:41:00 +08:00
xiaoxiaoqiong a4a431e9bb Merge branch 'standalone_develop' of https://git.trustie.net/Gitlink/forgeplus into fix_issue_xxq 2021-11-25 10:31:52 +08:00
xiaoxiaoqiong 515307139a README文件中的图片显示问题 2021-11-25 10:30:46 +08:00
xxq250 0a3df09089 Merge pull request '验证码过期等#53446,#50806,#50880' (#260) from xxq250/forgeplus:fix_issue_xxq into standalone_develop 2021-11-24 18:17:13 +08:00
xiaoxiaoqiong 399558550e fix 验证码过期等#53446,#50806,#50880 2021-11-24 18:13:15 +08:00
yystopf 1a9ed1425e fix: destroy decrement forked count 2021-11-23 13:48:09 +08:00
yystopf f9d4316a8e fix: change fork project status 2021-11-23 11:43:44 +08:00
yystopf 6f7f815fd4 fix: change warn image 2021-11-19 15:15:40 +08:00
yystopf ddb826733b fix: project setting permission control 2021-11-19 14:56:20 +08:00
yystopf 1f989d0a37 fix: delete organization tip 2021-11-19 14:44:25 +08:00
yystopf 72ec7bc213 fix: change email default rule 2021-11-19 10:57:25 +08:00
yystopf d63626424e Merge pull request '更改邮件默认发送规则' (#251) from yystopf/forgeplus:hh_email_fix into develop 2021-11-19 10:38:04 +08:00
yystopf 55ab694505 fix: change email default rule 2021-11-19 10:21:09 +08:00
yystopf 0885575cc4 fix: organization validate name tip 2021-11-18 17:31:22 +08:00
yystopf a188648287 fix: qq qun url 2021-11-18 17:25:50 +08:00
yystopf 8011dabaac fix: undo events 2021-11-18 17:02:09 +08:00
yystopf 88a08e73c0 fix: web icon 2021-11-18 16:13:33 +08:00
yystopf 6713f9b280 fix: pullrequest trend action name 2021-11-17 11:04:15 +08:00
jasder 651bf34cfc FIX code review and conflict 2021-11-14 20:50:22 +08:00
jasder 3a7355c73e Merge pull request 'fix 合并独立版本代码' (#242) from jasder/forgeplus:standalone_develop into standalone_develop 2021-11-08 15:12:01 +08:00
jasder 77ad959a8c Merge remote-tracking branch 'gitlink/featrue_login_and_register' into standalone_develop 2021-11-08 15:08:47 +08:00
jasder 9d05973700 FIX 解决featrue_homepage分支代码冲突 2021-11-08 15:07:35 +08:00
jasder 7ad3789fe2 FIX 解决develop分支代码冲突 2021-11-08 14:59:06 +08:00
jasder 7ebfaf915f ADD 添加react build文件 2021-11-08 14:52:45 +08:00
jasder e3588291b2 Merge pull request '首页api数据以及后台管理' (#240) from yystopf/forgeplus:hh_home_index into featrue_homepage 2021-11-08 14:35:19 +08:00
jasder 7a14949063 Merge pull request 'fix 修复验证无效的bug' (#237) from jasder/forgeplus:featrue_login_and_register into featrue_login_and_register 2021-11-05 09:04:55 +08:00
jasder 8d3b674321 FIX viri code invalid bug 2021-11-04 14:14:11 +08:00
jasder 2ece9908a6 Merge pull request 'FIX [gitea] reset pw bug' (#236) from jasder/forgeplus:featrue_login_and_register into featrue_login_and_register 2021-11-04 09:29:19 +08:00
jasder a549dc1e25 FIX reset password bug 2021-11-03 21:32:17 +08:00
jasder 6607758c25 Merge branch 'featrue_login_and_register' of https://git.trustie.net/Gitlink/forgeplus into featrue_login_and_register 2021-11-03 20:50:45 +08:00
jasder e02237a9e0 FIX code review 2021-11-03 18:25:57 +08:00
jasder 59711b54bc Merge pull request 'fix 完善重置密码功能' (#235) from jasder/forgeplus:featrue_login_and_register into featrue_login_and_register 2021-11-03 17:21:18 +08:00
jasder 538d2113f1 FIX 完善重置密码功能 2021-11-03 17:19:43 +08:00
yystopf 18cf2ca78a fix 2021-11-03 14:26:19 +08:00
yystopf 0d1fa2995a fix 2021-11-03 14:25:04 +08:00
yystopf e243a61d0c add: request api data and topic group 2021-11-03 14:21:02 +08:00
jasder 06cf52c384 ADD 注册接口添加确认密码参数 2021-11-03 13:50:38 +08:00
yystopf a3f57d3cbc fix: paginate and img width 2021-11-03 11:38:47 +08:00
yystopf 18bbbce7b3 add: home index api 2021-11-03 10:19:01 +08:00
jasder 8d60b271f7 Merge branch 'featrue_login_and_register' of https://git.trustie.net/Gitlink/forgeplus into featrue_login_and_register 2021-11-02 21:43:50 +08:00
jasder be96e7e5eb FIX render_error mentod bug 2021-11-02 21:43:10 +08:00
yystopf 35f04afe91 add: home index admins 2021-11-02 19:00:07 +08:00
yystopf 385f45ddde add: home index controllers 2021-11-02 15:59:57 +08:00
yystopf 94075717e2 add: home index models 2021-11-02 15:56:47 +08:00
jasder a033ddeeca Merge pull request 'FIX update register api' (#232) from jasder/forgeplus:featrue_login_and_register into featrue_login_and_register 2021-11-02 13:49:57 +08:00
jasder 7b5452fdcc Merge pull request 'FIX 合并测试版分支代码' (#229) from dev_trustie_server into trustie_server 2021-10-29 15:10:01 +08:00
jasder b40cbfbfbb FIX conflict 2021-10-29 15:07:01 +08:00
jasder 41022950a5 FIX 解决icon样式问题 2021-10-22 14:17:36 +08:00
jasder d9e4f26819 ADD 前端页面打包文件 2021-10-22 11:52:01 +08:00
jasder 683c00a73e Merge branch 'trustie_server' into standalone 2021-10-22 11:16:30 +08:00
jasder 74a7bc62ea FIX 合并develop分支代码并处理冲突 2021-10-22 11:16:22 +08:00
jasder a5e5dbb6bf Merge branch 'trustie_server' of https://git.trustie.net/Gitlink/forgeplus into trustie_server 2021-10-22 10:52:42 +08:00
jasder da30ba189c Merge pull request '主干分支代码并入生产分支' (#215) from dev_trustie_server into trustie_server 2021-10-21 15:06:40 +08:00
jasder b5047392a6 Merge pull request '合并主干分支代码' (#214) from jasder/forgeplus:dev_trustie_server into dev_trustie_server 2021-10-21 14:45:58 +08:00
jasder 5b19a333ef Merge branch 'develop' into dev_trustie_server 2021-10-21 14:41:43 +08:00
yystopf 62e8cf76b9 Merge pull request 'ADD 通知公告以及修复bug' (#207) from dev_trustie_server into trustie_server 2021-10-18 18:27:06 +08:00
jasder 33a5b7f4f9 FIX 合并主干分支代码并解决代码冲突 2021-10-18 18:16:12 +08:00
jasder 4567c32b97 Merge pull request 'FIX edit project identifier’s bug' (#201) from dev_trustie_server into trustie_server 2021-10-15 16:57:20 +08:00
jasder 9899a8aab6 Merge pull request 'FIX edit project identifier’s bug' (#200) from develop into dev_trustie_server 2021-10-15 16:56:43 +08:00
jasder da3625a0a8 Merge pull request 'FIX 项目动态数据修复以及 Pr项目链接错误的bug' (#198) from dev_trustie_server into trustie_server 2021-10-15 16:32:49 +08:00
jasder 6f5f42c23a Merge pull request 'FIX dev_trustie_server 远程仓库pr' (#197) from jasder/forgeplus:dev_trustie_server into dev_trustie_server 2021-10-15 16:22:02 +08:00
jasder 3c44ffe7df Merge remote-tracking branch 'gitlink/dev_trustie_server' into dev_trustie_server 2021-10-15 16:13:45 +08:00
jasder 4ebb6a5e74 Merge branch 'develop' into dev_trustie_server 2021-10-15 16:09:48 +08:00
jasder 5cbe83f9d4 Merge pull request 'FIX WIP' (#192) from dev_trustie_server into trustie_server 2021-10-14 18:13:26 +08:00
jasder 7030e0b5bc Merge pull request 'FIX some bug' (#191) from develop into dev_trustie_server 2021-10-14 18:12:36 +08:00
jasder 01377bc20a Merge pull request 'FIX 修复pr链接问题' (#189) from dev_trustie_server into trustie_server 2021-10-14 15:41:46 +08:00
jasder 976c4b26c3 Merge pull request 'FIX 修复Pr链接错误问题' (#188) from develop into dev_trustie_server 2021-10-14 15:41:06 +08:00
jasder d5e9005253 Merge branch 'trustie_server' of https://git.trustie.net/Gitlink/forgeplus into trustie_server 2021-10-12 18:40:05 +08:00
jasder f01bfe6435 Merge pull request 'Merge' (#181) from dev_trustie_server into trustie_server 2021-10-12 18:39:48 +08:00
jasder 1f451779de Merge pull request 'FIX' (#180) from develop into dev_trustie_server 2021-10-12 18:38:58 +08:00
jasder c4c3a451c8 Merge branch 'trustie_server' of https://git.trustie.net/jasder/forgeplus into trustie_server 2021-10-12 14:18:19 +08:00
jasder ac6aa7559d Merge pull request 'FIX 合并测试版分支的代码' (#177) from dev_trustie_server into trustie_server 2021-10-12 14:12:33 +08:00
jasder 829e36cfce Merge pull request 'FIX remote pr' (#176) from jasder/forgeplus:dev_trustie_server into dev_trustie_server 2021-10-12 14:09:05 +08:00
jasder fb73fa458c Merge pull request 'FIX 解决合并请求中链接地址错误的问题' (#2) from dev_trustie_server into trustie_server 2021-10-12 14:06:20 +08:00
jasder 7c8843fda7 Merge branch 'develop' into dev_trustie_server 2021-10-12 14:02:33 +08:00
jasder 40654061ce Merge pull request 'FiX 发布生产版本' (#173) from dev_trustie_server into trustie_server 2021-10-09 16:17:27 +08:00
jasder 3325ec842d Merge pull request 'FIX 代码库二级页面改版以及其他bug' (#172) from develop into dev_trustie_server 2021-10-09 16:15:12 +08:00
jasder 194a2f4e36 Merge pull request 'FIX user info bug' (#166) from dev_trustie_server into trustie_server 2021-09-29 11:43:29 +08:00
jasder bd1cd7ee13 Merge pull request 'FIX user complete bug' (#165) from develop into dev_trustie_server 2021-09-29 11:42:48 +08:00
jasder fdbc657846 Merge pull request 'add 通知系统模块功能' (#163) from dev_trustie_server into trustie_server 2021-09-28 16:44:29 +08:00
jasder 317205d185 Merge branch 'develop' into dev_trustie_server 2021-09-28 15:59:51 +08:00
jasder 14949c0bfd ADD 通知系统模块代码 2021-09-28 15:59:06 +08:00
jasder 0cbfc895ca Merge pull request 'FIX 修复修改组织信息后导致不能创建项目的bug' (#152) from dev_trustie_server into trustie_server 2021-09-10 22:52:12 +08:00
jasder 2fab120118 Merge pull request 'FIX 修复修改组织信息后导致不能创建项目的bug' (#151) from develop into dev_trustie_server 2021-09-10 22:51:18 +08:00
jasder 629729436c Merge pull request 'FIX 优化创建项目流程' (#149) from dev_trustie_server into trustie_server 2021-09-10 19:03:26 +08:00
jasder 00ed177089 Merge pull request 'FIX bug' (#148) from develop into dev_trustie_server 2021-09-10 18:32:08 +08:00
jasder 26c0d36227 Merge pull request 'FIX 优化项目流程' (#146) from develop into dev_trustie_server 2021-09-10 18:28:36 +08:00
jasder 86c98a1716 Merge pull request '发布V3.1.0版本' (#139) from dev_trustie_server into trustie_server 2021-09-03 18:16:51 +08:00
jasder 143e88593f Merge pull request 'FIX 路由优化' (#138) from develop into dev_trustie_server 2021-09-03 17:55:43 +08:00
jasder 99e3aaf780 Merge pull request 'merge dev_trustie_server' (#134) from dev_trustie_server into trustie_server 2021-09-01 19:02:51 +08:00
jasder 7d12a25088 Merge pull request 'FIX commit user info' (#133) from develop into dev_trustie_server 2021-09-01 19:01:22 +08:00
jasder 85d1aa3a85 Merge pull request 'fix release v3.2.0' (#129) from dev_trustie_server into trustie_server 2021-08-27 15:28:22 +08:00
jasder 0f57844106 Merge pull request 'FIX some bug' (#128) from develop into dev_trustie_server 2021-08-27 15:12:27 +08:00
jasder c3b9d2e0b5 ADD wiki模块功能 2021-08-24 18:17:34 +08:00
jasder 299e8534d1 Merge branch 'develop' into dev_trustie_server 2021-08-19 17:48:31 +08:00
jasder d7362925f2 Merge branch 'dev_trustie_server' into trustie_server 2021-08-06 17:24:02 +08:00
jasder 43945b00b8 Merge branch 'dev_trustie_server' of https://git.trustie.net/jasder/forgeplus into dev_trustie_server 2021-08-06 17:20:44 +08:00
jasder b11d515ec6 Merge branch 'develop' into dev_trustie_server 2021-08-06 17:20:30 +08:00
yystopf 07a38ac3f7 Merge branch 'develop' into dev_trustie_server 2021-07-30 18:12:19 +08:00
yystopf 18227c232b Merge branch 'develop' into trustie_server 2021-07-30 18:10:31 +08:00
jasder f1d79e4d9f Merge branch 'trustie_server' of https://git.trustie.net/jasder/forgeplus into trustie_server 2021-07-30 17:08:42 +08:00
jasder 20e2e22be5 Merge branch 'dev_trustie_server' into trustie_server 2021-07-30 17:08:23 +08:00
jasder 27e5febef2 Merge branch 'develop' into dev_trustie_server 2021-07-30 17:04:21 +08:00
yystopf fb23e733d6 Merge branch 'develop' into dev_trustie_server 2021-07-23 17:23:45 +08:00
yystopf 512bff426d Merge branch 'develop' into trustie_server 2021-07-23 17:23:29 +08:00
yystopf 671c2c2257 Merge branch 'develop' into trustie_server 2021-07-23 14:53:18 +08:00
yystopf c6f2021017 Merge branch 'develop' into dev_trustie_server 2021-07-23 14:53:06 +08:00
jasder 581b147b3c Merge branch 'dev_trustie_server' of https://git.trustie.net/jasder/forgeplus into dev_trustie_server 2021-07-23 14:16:43 +08:00
jasder deebfc3292 fix merge develop branch 2021-07-23 14:16:29 +08:00
yystopf 6c4d17bed8 Merge branch 'develop' into trustie_server 2021-07-22 18:31:44 +08:00
yystopf e68c13f1a2 Merge branch 'develop' into dev_trustie_server 2021-07-22 18:30:59 +08:00
yystopf 15eb1f4a17 Merge branch 'develop' into dev_trustie_server 2021-07-21 21:32:38 +08:00
yystopf a1cb9a11d6 Merge branch 'develop' into trustie_server 2021-07-21 21:32:18 +08:00
yystopf 0884a0de1b Merge branch 'develop' into dev_trustie_server 2021-07-16 16:46:28 +08:00
yystopf 900fdd2691 Merge branch 'develop' into trustie_server 2021-07-16 16:46:08 +08:00
viletyy 4520055de2 Merge branch 'dev_trustie_server' into trustie_server 2021-07-12 18:38:03 +08:00
viletyy 193d1b21df Merge branch 'develop' into dev_trustie_server 2021-07-12 18:10:50 +08:00
viletyy ed8e079595 Merge branch 'develop' into dev_trustie_server 2021-07-12 17:57:51 +08:00
viletyy 55a0bcfb82 fix 2021-07-12 17:33:10 +08:00
viletyy 8f1aa3f4b1 fix: merge from develop 2021-07-12 17:28:47 +08:00
jasder b054094798 FIX conflicts 2021-07-12 16:20:14 +08:00
jasder 2d648e516e FIX merge develop branch 2021-07-12 16:19:03 +08:00
yystopf 7c23b40661 易修权限、用户更改昵称、fork项目修改项目私有性 2021-07-09 13:55:22 +08:00
viletyy ff21916f18 fix: merge from develop 2021-07-09 13:48:48 +08:00
viletyy d9162cb3bf fix: merge from develop 2021-07-09 13:47:21 +08:00
jasder ca1fd3cd4f FIX 解决标签列表和发行版列表中下周zip包、tar包导致的404问题 2021-07-01 16:57:52 +08:00
jasder 913bc45a9f Merge branch 'dev_trustie_server' of https://git.trustie.net/jasder/forgeplus into dev_trustie_server 2021-07-01 10:09:28 +08:00
jasder 8131d8cd48 Merge branch 'sync_develop' into dev_trustie_server 2021-07-01 10:08:58 +08:00
viletyy b45ab12279 Merge branch 'dev_trustie_server' into trustie_server 2021-06-28 21:11:13 +08:00
viletyy 259090b8e3 fix 2021-06-28 21:07:10 +08:00
jasder c3bc4166d9 FIX pr bug
ADD conflict files list
2021-06-28 10:09:40 +08:00
jasder 7e474cab70 Merge branch 'feature/pull_conflict_files' into dev_trustie_server 2021-06-28 10:06:54 +08:00
jasder 01341d4389 FIX pull、 gitea pull model relation bug 2021-06-28 10:04:48 +08:00
jasder 3a475a4674 FIX get conflict files bug with create pr api 2021-06-28 09:59:47 +08:00
jasder 83b7b8cd9c Merge branch 'develop' into dev_trustie_server 2021-06-25 18:03:28 +08:00
jasder c298ff02b8 ADD pr冲突文件展示 2021-06-25 18:03:07 +08:00
jasder 16ea03dcc8 fix 修复一些bug
* 解决获取平台base url导致的https的问题
* FIX 处理版本库zip、gzip包链接为无效的问题
2021-06-22 16:49:20 +08:00
jasder 7bb4cf7391 Merge branch 'develop' into dev_trustie_server 2021-06-22 15:15:51 +08:00
jasder 23f7439a8c Merge branch 'develop' into dev_trustie_server 2021-06-22 09:51:46 +08:00
jasder 6f19093dc2 FIX merge develop flick 2021-06-18 17:23:48 +08:00
jasder fa8f1155f5 V3.1.0
* FIX 修复pulls、issues 搜索数量统计问题
* FIX 解决在线创建文件错误提示信息不准确的问题
* FIX table name bug
* FIX 解决applied_projects相关表操作的问题
* FIX 解决排序参数的判断预防SQL注入
* FIX 项目导航栏数量改为开启中的数量
* FIX 解决项目邀请码的索引查询问题
* FIX FIX get readme file bug
* FIX sql attack
* FIX projects load by invite code slowly
2021-06-18 17:03:27 +08:00
jasder 484f8a854a Merge branch 'develop' into dev_trustie_server 2021-06-18 16:45:12 +08:00
jasder 7bedac263d Merge branch 'develop' into dev_trustie_server 2021-06-18 16:21:21 +08:00
jasder f0b1c9e80b Merge branch 'develop' into dev_trustie_server 2021-06-18 11:03:41 +08:00
jasder dc23be9001 Merge branch 'develop' into dev_trustie_server 2021-06-18 10:54:29 +08:00
jasder e24269c2a7 Merge branch 'develop' into dev_trustie_server 2021-06-17 18:14:19 +08:00
jasder e31176c696 ADD 项目邀请码功能 2021-06-11 18:13:33 +08:00
jasder bf390c8366 Merge branch 'develop' into dev_trustie_server 2021-06-11 18:03:35 +08:00
jasder fc60278f9a FIX * ENHANCEMENTS
* ADD 用户活动统计图表功能
  * ADD 用户精选项目功能
  * ADD 用户贡献度统计图表功能
  * ADD 用户开发能力数据统计工
  * ADD 用户角色定位展示功能
  * ADD 用户专业定位标签展示功能
  * ADD 修改用户基本资料功能
  * ADD 更改密码功能
  * ADD 用户个人主页基本现在展示可配置功能

* BUGFIXES
  * Fix 解决一些bug
  * Fix 优化美化页面change license
2021-06-09 17:52:57 +08:00
jasder b59376d3e3 Merge branch 'master' into standalone 2021-06-09 17:49:52 +08:00
jasder c5d73b7cf8 v3.1.0
* 改版升级个人主页
* 修复bug
* 更改license
2021-06-09 09:52:57 +08:00
jasder 632a06e575 Merge branch 'develop' into dev_trustie_server 2021-06-08 18:13:16 +08:00
jasder 04c7887319 Merge branch 'sync_develop' into dev_trustie_server 2021-06-08 14:34:29 +08:00
jasder b012740195 ADD 升级改版个人中心模块功能 2021-06-04 19:10:07 +08:00
jasder d75b79670d Merge branch 'develop' into dev_trustie_server 2021-06-04 18:51:47 +08:00
jasder 0f79238f0e 解决镜像加速器失效问题 2021-06-03 17:29:37 +08:00
jasder 2c5fa8492f Merge branch 'develop' into dev_trustie_server 2021-06-03 17:26:35 +08:00
jasder fdfbf505ed ADD issue、pull、milestone钩子,自动触发项目的更新时间 2021-05-26 17:52:30 +08:00
jasder 6d845eeb3b Merge branch 'develop' into dev_trustie_server 2021-05-26 17:39:54 +08:00
jasder a7695b16a4 FIX query project members api bug 2021-05-24 17:08:03 +08:00
jasder 83e666a387 Merge branch 'develop' into dev_trustie_server 2021-05-24 17:06:54 +08:00
jasder 1a0fd38d15 发布v3.0.4版本 2021-05-24 10:18:57 +08:00
jasder 8a10a183e0 Merge branch 'develop' 2021-05-24 10:18:03 +08:00
jasder 5eaaf0070f FIX update CHANGELOG.md 2021-05-24 10:13:14 +08:00
jasder aeeaedbd7a Merge branch 'develop' into standalone 2021-05-24 10:11:02 +08:00
jasder 6d1bcabd51 Merge branch 'master' of https://git.trustie.net/jasder/forgeplus 2021-05-24 10:10:24 +08:00
jasder 72b89d4b2b Merge branch 'develop' into dev_trustie_server 2021-05-21 19:26:47 +08:00
jasder b0b224fe76 Merge branch 'trustie_server' of https://git.trustie.net/jasder/forgeplus into trustie_server 2021-05-15 10:21:03 +08:00
jasder 38f6254edc Merge branch 'develop' into dev_trustie_server 2021-05-15 10:20:14 +08:00
jasder 57d9da002e ADD 页面置顶等功能 2021-05-14 17:57:48 +08:00
jasder 8a4b0ba966 Merge branch 'develop' into dev_trustie_server 2021-05-14 17:34:36 +08:00
jasder 84927c2361 FIX 解决大赛中点击项目跳转到forge平台,保持自动登陆的bug 2021-05-13 11:47:47 +08:00
jasder b568ac4e97 ADD title 2021-05-12 17:48:05 +08:00
jasder 91bbb58d4f FIX delete input readonly 2021-05-12 17:44:45 +08:00
jasder f278b38e6c Merge branch 'trustie_server' into dev_trustie_server 2021-05-12 17:01:59 +08:00
jasder 4023b8980e FIX 完善通过大赛点击项目链接自动注册关联Educoder平台账号的功能 2021-05-12 17:01:30 +08:00
jasder 1c1be18151 Merge branch 'dev_trustie_server' into trustie_server 2021-05-10 14:39:14 +08:00
jasder e5f591e509 Merge branch 'develop' into dev_trustie_server 2021-05-10 14:38:58 +08:00
jasder 60b22b3912 Merge develop 2021-05-08 18:16:45 +08:00
jasder 86f03ffafc Merge OK 2021-05-08 17:46:22 +08:00
yystopf 27ee32054b 发布v3.0.3版本 2021-05-08 17:45:23 +08:00
jasder 3e3fd46cad Merge branch 'develop' into dev_trustie_server 2021-05-08 17:02:56 +08:00
jasder 7a752b177d Merge branch 'develop' into dev_trustie_server 2021-05-08 14:23:34 +08:00
jasder abbabfdefd Merge branch 'dev_trustie_server' into trustie_server 2021-04-30 17:13:33 +08:00
jasder edd76b9286 Merge branch 'develop' into dev_trustie_server 2021-04-30 17:13:18 +08:00
jasder a3ca94d433 Merge branch 'dev_trustie_server' into trustie_server 2021-04-29 23:23:55 +08:00
jasder 91a804caf7 Merge branch 'develop' into dev_trustie_server 2021-04-29 23:23:42 +08:00
jasder 663deae21b Merge branch 'dev_trustie_server' into trustie_server 2021-04-29 23:19:34 +08:00
jasder dae5c9690f Merge branch 'develop' into dev_trustie_server 2021-04-29 23:19:17 +08:00
jasder e65df07d79 Merge branch 'dev_trustie_server' into trustie_server 2021-04-29 19:27:55 +08:00
jasder 246b6b52ec Merge branch 'develop' into dev_trustie_server 2021-04-29 19:27:36 +08:00
jasder b9789183e3 Merge branch 'dev_trustie_server' into trustie_server 2021-04-29 19:17:03 +08:00
jasder 7cf2c6021f Merge branch 'develop' into dev_trustie_server 2021-04-29 19:13:12 +08:00
jasder e0f9a3d43d Merge branch 'develop' into dev_trustie_server 2021-04-29 18:50:11 +08:00
jasder c1ef39b262 Merge branch 'develop' into dev_trustie_server 2021-04-29 18:37:35 +08:00
jasder 51643dc02c Merge branch 'dev_trustie_server' into trustie_server 2021-04-29 10:42:12 +08:00
jasder a078c07b59 Merge branch 'develop' into dev_trustie_server 2021-04-29 10:41:59 +08:00
jasder b984790d5c Merge branch 'develop' into trustie_server 2021-04-28 21:17:43 +08:00
jasder 876591100e Merge branch 'develop' into dev_trustie_server 2021-04-28 21:17:36 +08:00
jasder ba9848ebe7 Merge branch 'develop' into dev_trustie_server 2021-04-27 18:24:41 +08:00
jasder 41c621cf55 Merge branch 'develop' into dev_trustie_server 2021-04-26 16:53:05 +08:00
jasder 09ac49dda5 Merge branch 'develop' into dev_trustie_server 2021-04-26 16:46:24 +08:00
jasder b161b66d79 Merge branch 'develop' into standalone 2021-04-23 17:55:42 +08:00
jasder 341a810afc Merge branch 'develop' into dev_trustie_server 2021-04-23 17:54:13 +08:00
jasder 2282c52efb FIX update README.md 2021-04-23 17:33:19 +08:00
jasder 34edd78ae7 Merge branch 'develop' into dev_trustie_server 2021-04-23 17:21:34 +08:00
jasder 8a536e83af FIX update CHANGELOG.md 2021-04-23 17:08:04 +08:00
jasder 016cf648da FIX merge develop 2021-04-23 17:07:46 +08:00
jasder 713e0bba18 Merge branch 'develop' into standalone 2021-04-23 16:18:31 +08:00
jasder 36fb5a118c Merge branch 'develop' into dev_trustie_server 2021-04-23 14:40:41 +08:00
jasder b756be1d6a Merge branch 'develop' into dev_trustie_server 2021-04-22 18:10:32 +08:00
jasder 348c2244f7 Merge branch 'develop' into dev_trustie_server 2021-04-22 16:45:40 +08:00
jasder 31738fc227 Merge branch 'develop' into dev_trustie_server 2021-04-22 16:43:04 +08:00
jasder a93c98fb7c Merge branch 'trustie_server' into dev_trustie_server 2021-04-22 16:39:03 +08:00
jasder 39193324e9 Merge branch 'develop' into dev_trustie_server 2021-04-22 16:38:58 +08:00
jasder 81743ce3bc Merge branch 'develop' into trustie_server 2021-04-20 19:07:56 +08:00
jasder e9ae536f04 Merge branch 'develop' into trustie_server 2021-04-20 19:06:40 +08:00
jasder 186955fe4a Merge branch 'develop' into trustie_server 2021-04-20 18:58:24 +08:00
jasder 8ce7fd95cb Merge branch 'develop' into trustie_server 2021-04-20 18:37:55 +08:00
jasder 0867e5130f Merge branch 'dev_trustie_server' into trustie_server 2021-04-20 11:37:25 +08:00
jasder db476a1a9b Merge branch 'develop' into dev_trustie_server 2021-04-20 11:37:08 +08:00
jasder fa1fd8a4ba Merge branch 'develop' into trustie_server 2021-04-19 20:39:29 +08:00
jasder 0d7a11f3ab Merge branch 'develop' into dev_trustie_server 2021-04-19 18:41:18 +08:00
jasder 879e45e106 Merge branch 'develop' into trustie_server 2021-04-13 16:40:23 +08:00
jasder b3b0f75e9b Merge branch 'develop' into trustie_server 2021-04-13 10:18:52 +08:00
jasder 3af75e1a1c FIX merge develop branch 2021-04-13 10:18:35 +08:00
jasder 5c8e561bd8 Merge branch 'develop' into trustie_server 2021-04-08 18:36:27 +08:00
jasder 2b0c987558 Merge branch 'develop' into trustie_server 2021-04-07 11:35:09 +08:00
jasder 6796805b21 Merge branch 'develop' into trustie_server 2021-04-02 18:58:08 +08:00
jasder 5752f19b2f FIX gug 2021-04-02 18:56:44 +08:00
jasder eb52f05417 集成educoder登陆 2021-04-02 18:46:15 +08:00
vilet.yy 786629dbff fix 2021-04-02 18:41:48 +08:00
vilet.yy 7a00541375 Merge branch 'develop' into hh_develop 2021-04-02 18:41:37 +08:00
vilet.yy 1d832a1723 fix 2021-04-02 18:38:08 +08:00
vilet.yy 80ce40e492 fix 2021-04-02 18:33:31 +08:00
vilet.yy 91f6dae56a fix 2021-04-02 18:24:20 +08:00
vilet.yy 8c5a834b14 Merge branch 'develop' into hh_develop 2021-04-02 18:22:32 +08:00
vilet.yy 57f420848e Merge branch 'develop' into hh_develop 2021-04-02 18:20:41 +08:00
vilet.yy fba58800a7 fix 2021-04-02 18:08:36 +08:00
vilet.yy c4a43c4392 add: need edit user password 2021-04-02 16:44:36 +08:00
vilet.yy 1153bd5ab6 fix: set redirect_uri 2021-04-02 09:43:18 +08:00
vilet.yy f732b0374c fix: ceshi 2021-04-02 09:23:11 +08:00
jasder 0852d0ac61 Merge branch 'standalone' of https://git.trustie.net/jasder/forgeplus into standalone 2021-04-01 20:33:42 +08:00
jasder ee5090de96 Merge branch 'develop' into standalone 2021-04-01 20:33:26 +08:00
vilet.yy 0d97d7d4f0 add: educoder third party 2021-04-01 18:01:51 +08:00
jasder 37005342ab ADD friste register user set admin role 2021-03-31 15:28:23 +08:00
jasder 9591c0a82a Merge branch 'develop' into standalone 2021-03-31 15:02:26 +08:00
jasder ffee782591 Merge branch 'develop' into standalone 2021-03-31 13:35:59 +08:00
jasder c55c04b137 Merge branch 'standalone' of https://git.trustie.net/jasder/forgeplus into standalone 2021-03-31 12:45:09 +08:00
jasder 049e5a6d5f Merge branch 'develop' into standalone 2021-03-31 12:44:52 +08:00
jasder be6bb690d2 FIX models schema 2021-03-31 11:21:36 +08:00
jasder 7c2aa2209d delete helps sidebar 2021-03-31 11:21:09 +08:00
jasder a56ee23224 update db structrue 2021-03-31 11:20:42 +08:00
jasder fc95fe9b82 Merge branch 'develop' into standalone 2021-03-31 10:30:57 +08:00
jasder 838fd8b4c9 Merge branch 'develop' into standalone 2021-03-31 10:08:53 +08:00
jasder 8ca1311626 FIX delete generate api doc 2021-03-30 15:20:23 +08:00
jasder 869750e774 FIX delete readme for create gitea repo 2021-03-30 14:19:42 +08:00
1731 changed files with 138396 additions and 24666 deletions

3
.gitignore vendored
View File

@ -37,13 +37,11 @@ public/react/yarn.lock
# Ignore react node_modules
public/system/*
public/react/*
/public/react/.cache
/public/react/node_modules/
/public/react/config/stats.json
/public/react/stats.json
/public/react/.idea/*
/public/react/build/*
/public/h5build
/public/npm-debug.log
@ -87,3 +85,4 @@ Dockerfile
dump.rdb
.tags*
ceshi_user.xlsx
public/trace_task_results

View File

@ -23,7 +23,7 @@
* Fix 版本库中附件下载400(#51625)
* Fix loading页面优化(#51588)
* Fix 提交详情页面优化(#51577)
* Fix 修复修复制功能(#51569)
* Fix 修复修复制功能(#51569)
* Fix 修复新建发行版用户信息显示错误的问题(#51665)
* Fix 修复查看文件详细信息报错的问题(#51561)
* Fix 修复提交记录中时间显示格式问题(#51526)
@ -62,7 +62,7 @@
## [v3.0.3](https://forgeplus.trustie.net/projects/jasder/forgeplus/releases) - 2021-05-08
* BUGFIXES
* Fix 解决修标题过长导致的排版问题(45469)
* Fix 解决修标题过长导致的排版问题(45469)
* Fix 解决合并请求详情页面排版错误的问题(45457)
* FIX 解决转移仓库界面专有名词描述错误的问题(45455)
* Fix 解决markdown格式文件自动生成数字排序的问题(45454)

18
Gemfile
View File

@ -1,4 +1,5 @@
source 'https://gems.ruby-china.com'
#source 'https://gems.ruby-china.com'
source 'https://mirrors.cloud.tencent.com/rubygems/'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
gem 'rails', '~> 5.2.0'
@ -69,6 +70,9 @@ group :development do
gem 'web-console', '>= 3.3.0'
gem 'listen', '>= 3.0.5', '< 3.2'
gem 'spring'
gem 'pry-rails'
gem 'pry-remote'
gem 'byebug', platforms: [:mri,:mingw,:x64_mingw]
gem 'spring-watcher-listen', '~> 2.0.0'
gem "annotate", "~> 2.6.0"
end
@ -118,6 +122,10 @@ gem 'deep_cloneable', '~> 3.0.0'
# oauth2
gem 'omniauth', '~> 1.9.0'
gem 'omniauth-oauth2', '~> 1.6.0'
gem "omniauth-github"
gem "omniauth-rails_csrf_protection"
gem 'omniauth-gitee', '~> 1.0.0'
gem "omniauth-wechat-oauth2"
# global var
gem 'request_store'
@ -128,3 +136,11 @@ gem 'harmonious_dictionary', '~> 0.0.1'
gem 'parallel', '~> 1.19', '>= 1.19.1'
gem 'letter_avatar'
gem 'jwt'
gem 'doorkeeper'
gem 'doorkeeper-jwt'
gem 'gitea-client', '~> 1.4.2'

View File

@ -1,5 +1,5 @@
GEM
remote: https://gems.ruby-china.com/
remote: https://mirrors.cloud.tencent.com/rubygems/
specs:
aasm (5.0.6)
concurrent-ruby (~> 1.0)
@ -84,6 +84,7 @@ GEM
builder (3.2.4)
bulk_insert (1.7.0)
activerecord (>= 3.2.0)
byebug (11.1.3)
capybara (3.15.1)
addressable
mini_mime (>= 0.1.3)
@ -99,6 +100,7 @@ GEM
archive-zip (~> 0.10)
nokogiri (~> 1.8)
chunky_png (1.3.11)
coderay (1.1.3)
concurrent-ruby (1.1.6)
connection_pool (2.2.2)
crass (1.0.6)
@ -106,6 +108,12 @@ GEM
activerecord (>= 3.1.0, < 7)
diff-lcs (1.3)
diffy (3.3.0)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
doorkeeper (5.5.1)
railties (>= 5)
doorkeeper-jwt (0.4.1)
jwt (>= 2.1)
e2mmap (0.1.0)
elasticsearch (7.5.0)
elasticsearch-api (= 7.5.0)
@ -129,6 +137,8 @@ GEM
fugit (1.4.1)
et-orbi (~> 1.1, >= 1.1.8)
raabro (~> 1.4)
gitea-client (1.4.1)
rest-client (~> 2.1.0)
globalid (0.4.2)
activesupport (>= 4.2.0)
grape-entity (0.7.1)
@ -139,6 +149,9 @@ GEM
harmonious_dictionary (0.0.1)
hashie (3.6.0)
htmlentities (4.3.4)
http-accept (1.7.0)
http-cookie (1.0.5)
domain_name (~> 0.5)
i18n (1.8.2)
concurrent-ruby (~> 1.0)
io-like (0.3.1)
@ -176,6 +189,9 @@ GEM
mimemagic (~> 0.3.2)
maruku (0.7.3)
method_source (0.9.2)
mime-types (3.4.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2023.0218.1)
mimemagic (0.3.10)
nokogiri (~> 1)
rake
@ -189,6 +205,7 @@ GEM
mustermann (1.1.1)
ruby2_keywords (~> 0.0.1)
mysql2 (0.5.3)
netrc (0.11.0)
nio4r (2.5.2)
nokogiri (1.10.8)
mini_portile2 (~> 2.4.0)
@ -205,9 +222,21 @@ GEM
addressable (~> 2.3)
nokogiri (~> 1.5)
omniauth (~> 1.2)
omniauth-gitee (1.0.0)
omniauth (>= 1.5, < 3.0)
omniauth-oauth2 (>= 1.4.0, < 2.0)
omniauth-github (1.4.0)
omniauth (~> 1.5)
omniauth-oauth2 (>= 1.4.0, < 2.0)
omniauth-oauth2 (1.6.0)
oauth2 (~> 1.1)
omniauth (~> 1.9)
omniauth-rails_csrf_protection (0.1.2)
actionpack (>= 4.2)
omniauth (>= 1.3.1)
omniauth-wechat-oauth2 (0.2.2)
omniauth (>= 1.3.2)
omniauth-oauth2 (>= 1.1.1)
parallel (1.19.1)
parser (2.7.1.1)
ast (~> 2.4.0)
@ -217,6 +246,14 @@ GEM
popper_js (1.16.0)
powerpack (0.1.2)
prettier (0.18.2)
pry (0.12.2)
coderay (~> 1.1.0)
method_source (~> 0.9.0)
pry-rails (0.3.9)
pry (>= 0.10.4)
pry-remote (0.1.8)
pry (~> 0.9)
slop (~> 3.0)
public_suffix (4.0.3)
puma (3.12.2)
raabro (1.4.0)
@ -288,6 +325,11 @@ GEM
regexp_parser (1.7.0)
request_store (1.5.0)
rack (>= 1.4)
rest-client (2.1.0)
http-accept (>= 1.7.0, < 2.0)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 4.0)
netrc (~> 0.8)
reverse_markdown (1.4.0)
nokogiri
roo (2.8.3)
@ -376,6 +418,7 @@ GEM
rack (~> 2.0)
rack-protection (= 2.0.8.1)
tilt (~> 2.0)
slop (3.6.0)
solargraph (0.38.6)
backport (~> 1.1)
benchmark
@ -414,6 +457,9 @@ GEM
thread_safe (~> 0.1)
uglifier (4.2.0)
execjs (>= 0.3.0, < 3)
unf (0.1.4)
unf_ext
unf_ext (0.0.8.2)
unicode-display_width (1.6.1)
web-console (3.7.0)
actionview (>= 5.0)
@ -444,20 +490,25 @@ DEPENDENCIES
bootsnap (>= 1.1.0)
bootstrap (~> 4.3.1)
bulk_insert
byebug
capybara (>= 2.15, < 4.0)
chartkick
chinese_pinyin
chromedriver-helper
deep_cloneable (~> 3.0.0)
diffy
doorkeeper
doorkeeper-jwt
enumerize
faraday (~> 0.15.4)
font-awesome-sass (= 4.7.0)
gitea-client (~> 1.4.1)
grape-entity (~> 0.7.1)
groupdate (~> 4.1.0)
harmonious_dictionary (~> 0.0.1)
jbuilder (~> 2.5)
jquery-rails
jwt
kaminari (~> 1.1, >= 1.1.1)
letter_avatar
listen (>= 3.0.5, < 3.2)
@ -465,10 +516,16 @@ DEPENDENCIES
oauth2
omniauth (~> 1.9.0)
omniauth-cas
omniauth-gitee (~> 1.0.0)
omniauth-github
omniauth-oauth2 (~> 1.6.0)
omniauth-rails_csrf_protection
omniauth-wechat-oauth2
parallel (~> 1.19, >= 1.19.1)
pdfkit
prettier
pry-rails
pry-remote
puma (~> 3.11)
rack-cors
rack-mini-profiler

View File

@ -75,6 +75,7 @@ gitea:
access_key_secret: 'password'
domain: 'http://www.gitea.example.com'
base_url: '/api/v1'
hat_base_url: '/api/hat'
```
#### 6. 安装redis环境

View File

@ -14,6 +14,7 @@
//= require bootstrap-datepicker
//= require bootstrap-datetimepicker
//= require bootstrap.viewer
//= require bootstrap/bootstrap-toggle
//= require jquery.mloading
//= require jquery-confirm.min
//= require common

View File

@ -0,0 +1,2 @@
// Place all the behaviors and hooks related to the matching controller here.
// All this logic will automatically be available in application.js.

View File

@ -94,6 +94,20 @@ $(document).on('turbolinks:load', function(){
}
});
});
// reset user login times
$('.users-list-container').on('click', '.fresh-gitea-token-action', function(){
var $action = $(this);
var userId = $action.data('id');
$.ajax({
url: '/admins/users/' + userId + '/fresh_gitea_token',
method: 'POST',
dataType: 'json',
success: function() {
showSuccessNotify();
}
});
});
// ***************** reward grade modal *****************
var $rewardGradeModal = $('.admin-users-reward-grade-modal');

View File

@ -0,0 +1,180 @@
/*! ========================================================================
* Bootstrap Toggle: bootstrap-toggle.js v2.2.0
* http://www.bootstraptoggle.com
* ========================================================================
* Copyright 2014 Min Hur, The New York Times Company
* Licensed under MIT
* ======================================================================== */
+function ($) {
'use strict';
// TOGGLE PUBLIC CLASS DEFINITION
// ==============================
var Toggle = function (element, options) {
this.$element = $(element)
this.options = $.extend({}, this.defaults(), options)
this.render()
}
Toggle.VERSION = '2.2.0'
Toggle.DEFAULTS = {
on: 'On',
off: 'Off',
onstyle: 'primary',
offstyle: 'default',
size: 'normal',
style: '',
width: null,
height: null
}
Toggle.prototype.defaults = function() {
return {
on: this.$element.attr('data-on') || Toggle.DEFAULTS.on,
off: this.$element.attr('data-off') || Toggle.DEFAULTS.off,
onstyle: this.$element.attr('data-onstyle') || Toggle.DEFAULTS.onstyle,
offstyle: this.$element.attr('data-offstyle') || Toggle.DEFAULTS.offstyle,
size: this.$element.attr('data-size') || Toggle.DEFAULTS.size,
style: this.$element.attr('data-style') || Toggle.DEFAULTS.style,
width: this.$element.attr('data-width') || Toggle.DEFAULTS.width,
height: this.$element.attr('data-height') || Toggle.DEFAULTS.height
}
}
Toggle.prototype.render = function () {
this._onstyle = 'btn-' + this.options.onstyle
this._offstyle = 'btn-' + this.options.offstyle
var size = this.options.size === 'large' ? 'btn-lg'
: this.options.size === 'small' ? 'btn-sm'
: this.options.size === 'mini' ? 'btn-xs'
: ''
var $toggleOn = $('<label class="btn">').html(this.options.on)
.addClass(this._onstyle + ' ' + size)
var $toggleOff = $('<label class="btn">').html(this.options.off)
.addClass(this._offstyle + ' ' + size + ' active')
var $toggleHandle = $('<span class="toggle-handle btn btn-default">')
.addClass(size)
var $toggleGroup = $('<div class="toggle-group">')
.append($toggleOn, $toggleOff, $toggleHandle)
var $toggle = $('<div class="toggle btn" data-toggle="toggle">')
.addClass( this.$element.prop('checked') ? this._onstyle : this._offstyle+' off' )
.addClass(size).addClass(this.options.style)
this.$element.wrap($toggle)
$.extend(this, {
$toggle: this.$element.parent(),
$toggleOn: $toggleOn,
$toggleOff: $toggleOff,
$toggleGroup: $toggleGroup
})
this.$toggle.append($toggleGroup)
var width = this.options.width || Math.max($toggleOn.outerWidth(), $toggleOff.outerWidth())+($toggleHandle.outerWidth()/2)
var height = this.options.height || Math.max($toggleOn.outerHeight(), $toggleOff.outerHeight())
$toggleOn.addClass('toggle-on')
$toggleOff.addClass('toggle-off')
this.$toggle.css({ width: width, height: height })
if (this.options.height) {
$toggleOn.css('line-height', $toggleOn.height() + 'px')
$toggleOff.css('line-height', $toggleOff.height() + 'px')
}
this.update(true)
this.trigger(true)
}
Toggle.prototype.toggle = function () {
if (this.$element.prop('checked')) this.off()
else this.on()
}
Toggle.prototype.on = function (silent) {
if (this.$element.prop('disabled')) return false
this.$toggle.removeClass(this._offstyle + ' off').addClass(this._onstyle)
this.$element.prop('checked', true)
if (!silent) this.trigger()
}
Toggle.prototype.off = function (silent) {
if (this.$element.prop('disabled')) return false
this.$toggle.removeClass(this._onstyle).addClass(this._offstyle + ' off')
this.$element.prop('checked', false)
if (!silent) this.trigger()
}
Toggle.prototype.enable = function () {
this.$toggle.removeAttr('disabled')
this.$element.prop('disabled', false)
}
Toggle.prototype.disable = function () {
this.$toggle.attr('disabled', 'disabled')
this.$element.prop('disabled', true)
}
Toggle.prototype.update = function (silent) {
if (this.$element.prop('disabled')) this.disable()
else this.enable()
if (this.$element.prop('checked')) this.on(silent)
else this.off(silent)
}
Toggle.prototype.trigger = function (silent) {
this.$element.off('change.bs.toggle')
if (!silent) this.$element.change()
this.$element.on('change.bs.toggle', $.proxy(function() {
this.update()
}, this))
}
Toggle.prototype.destroy = function() {
this.$element.off('change.bs.toggle')
this.$toggleGroup.remove()
this.$element.removeData('bs.toggle')
this.$element.unwrap()
}
// TOGGLE PLUGIN DEFINITION
// ========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.toggle')
var options = typeof option == 'object' && option
if (!data) $this.data('bs.toggle', (data = new Toggle(this, options)))
if (typeof option == 'string' && data[option]) data[option]()
})
}
var old = $.fn.bootstrapToggle
$.fn.bootstrapToggle = Plugin
$.fn.bootstrapToggle.Constructor = Toggle
// TOGGLE NO CONFLICT
// ==================
$.fn.toggle.noConflict = function () {
$.fn.bootstrapToggle = old
return this
}
// TOGGLE DATA-API
// ===============
$(function() {
$('input[type=checkbox][data-toggle^=toggle]').bootstrapToggle()
})
$(document).on('click.bs.toggle', 'div[data-toggle^=toggle]', function(e) {
var $checkbox = $(this).find('input[type=checkbox]')
$checkbox.bootstrapToggle('toggle')
e.preventDefault()
})
}(jQuery);

View File

@ -0,0 +1,9 @@
/*! ========================================================================
* Bootstrap Toggle: bootstrap-toggle.js v2.2.0
* http://www.bootstraptoggle.com
* ========================================================================
* Copyright 2014 Min Hur, The New York Times Company
* Licensed under MIT
* ======================================================================== */
+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.toggle"),f="object"==typeof b&&b;e||d.data("bs.toggle",e=new c(this,f)),"string"==typeof b&&e[b]&&e[b]()})}var c=function(b,c){this.$element=a(b),this.options=a.extend({},this.defaults(),c),this.render()};c.VERSION="2.2.0",c.DEFAULTS={on:"On",off:"Off",onstyle:"primary",offstyle:"default",size:"normal",style:"",width:null,height:null},c.prototype.defaults=function(){return{on:this.$element.attr("data-on")||c.DEFAULTS.on,off:this.$element.attr("data-off")||c.DEFAULTS.off,onstyle:this.$element.attr("data-onstyle")||c.DEFAULTS.onstyle,offstyle:this.$element.attr("data-offstyle")||c.DEFAULTS.offstyle,size:this.$element.attr("data-size")||c.DEFAULTS.size,style:this.$element.attr("data-style")||c.DEFAULTS.style,width:this.$element.attr("data-width")||c.DEFAULTS.width,height:this.$element.attr("data-height")||c.DEFAULTS.height}},c.prototype.render=function(){this._onstyle="btn-"+this.options.onstyle,this._offstyle="btn-"+this.options.offstyle;var b="large"===this.options.size?"btn-lg":"small"===this.options.size?"btn-sm":"mini"===this.options.size?"btn-xs":"",c=a('<label class="btn">').html(this.options.on).addClass(this._onstyle+" "+b),d=a('<label class="btn">').html(this.options.off).addClass(this._offstyle+" "+b+" active"),e=a('<span class="toggle-handle btn btn-default">').addClass(b),f=a('<div class="toggle-group">').append(c,d,e),g=a('<div class="toggle btn" data-toggle="toggle">').addClass(this.$element.prop("checked")?this._onstyle:this._offstyle+" off").addClass(b).addClass(this.options.style);this.$element.wrap(g),a.extend(this,{$toggle:this.$element.parent(),$toggleOn:c,$toggleOff:d,$toggleGroup:f}),this.$toggle.append(f);var h=this.options.width||Math.max(c.outerWidth(),d.outerWidth())+e.outerWidth()/2,i=this.options.height||Math.max(c.outerHeight(),d.outerHeight());c.addClass("toggle-on"),d.addClass("toggle-off"),this.$toggle.css({width:h,height:i}),this.options.height&&(c.css("line-height",c.height()+"px"),d.css("line-height",d.height()+"px")),this.update(!0),this.trigger(!0)},c.prototype.toggle=function(){this.$element.prop("checked")?this.off():this.on()},c.prototype.on=function(a){return this.$element.prop("disabled")?!1:(this.$toggle.removeClass(this._offstyle+" off").addClass(this._onstyle),this.$element.prop("checked",!0),void(a||this.trigger()))},c.prototype.off=function(a){return this.$element.prop("disabled")?!1:(this.$toggle.removeClass(this._onstyle).addClass(this._offstyle+" off"),this.$element.prop("checked",!1),void(a||this.trigger()))},c.prototype.enable=function(){this.$toggle.removeAttr("disabled"),this.$element.prop("disabled",!1)},c.prototype.disable=function(){this.$toggle.attr("disabled","disabled"),this.$element.prop("disabled",!0)},c.prototype.update=function(a){this.$element.prop("disabled")?this.disable():this.enable(),this.$element.prop("checked")?this.on(a):this.off(a)},c.prototype.trigger=function(b){this.$element.off("change.bs.toggle"),b||this.$element.change(),this.$element.on("change.bs.toggle",a.proxy(function(){this.update()},this))},c.prototype.destroy=function(){this.$element.off("change.bs.toggle"),this.$toggleGroup.remove(),this.$element.removeData("bs.toggle"),this.$element.unwrap()};var d=a.fn.bootstrapToggle;a.fn.bootstrapToggle=b,a.fn.bootstrapToggle.Constructor=c,a.fn.toggle.noConflict=function(){return a.fn.bootstrapToggle=d,this},a(function(){a("input[type=checkbox][data-toggle^=toggle]").bootstrapToggle()}),a(document).on("click.bs.toggle","div[data-toggle^=toggle]",function(b){var c=a(this).find("input[type=checkbox]");c.bootstrapToggle("toggle"),b.preventDefault()})}(jQuery);
//# sourceMappingURL=bootstrap-toggle.min.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"bootstrap-toggle.min.js","sources":["bootstrap-toggle.js"],"names":["$","Plugin","option","this","each","$this","data","options","Toggle","element","$element","extend","defaults","render","VERSION","DEFAULTS","on","off","onstyle","offstyle","size","style","width","height","prototype","attr","_onstyle","_offstyle","$toggleOn","html","addClass","$toggleOff","$toggleHandle","$toggleGroup","append","$toggle","prop","wrap","parent","Math","max","outerWidth","outerHeight","css","update","trigger","toggle","silent","removeClass","enable","removeAttr","disable","change","proxy","destroy","remove","removeData","unwrap","old","fn","bootstrapToggle","Constructor","noConflict","document","e","$checkbox","find","preventDefault","jQuery"],"mappings":";;;;;;;CASE,SAAUA,GACV,YAoID,SAASC,GAAOC,GACf,MAAOC,MAAKC,KAAK,WAChB,GAAIC,GAAUL,EAAEG,MACZG,EAAUD,EAAMC,KAAK,aACrBC,EAA2B,gBAAVL,IAAsBA,CAEtCI,IAAMD,EAAMC,KAAK,YAAcA,EAAO,GAAIE,GAAOL,KAAMI,IACvC,gBAAVL,IAAsBI,EAAKJ,IAASI,EAAKJ,OAtItD,GAAIM,GAAS,SAAUC,EAASF,GAC/BJ,KAAKO,SAAYV,EAAES,GACnBN,KAAKI,QAAYP,EAAEW,UAAWR,KAAKS,WAAYL,GAC/CJ,KAAKU,SAGNL,GAAOM,QAAW,QAElBN,EAAOO,UACNC,GAAI,KACJC,IAAK,MACLC,QAAS,UACTC,SAAU,UACVC,KAAM,SACNC,MAAO,GACPC,MAAO,KACPC,OAAQ,MAGTf,EAAOgB,UAAUZ,SAAW,WAC3B,OACCI,GAAIb,KAAKO,SAASe,KAAK,YAAcjB,EAAOO,SAASC,GACrDC,IAAKd,KAAKO,SAASe,KAAK,aAAejB,EAAOO,SAASE,IACvDC,QAASf,KAAKO,SAASe,KAAK,iBAAmBjB,EAAOO,SAASG,QAC/DC,SAAUhB,KAAKO,SAASe,KAAK,kBAAoBjB,EAAOO,SAASI,SACjEC,KAAMjB,KAAKO,SAASe,KAAK,cAAgBjB,EAAOO,SAASK,KACzDC,MAAOlB,KAAKO,SAASe,KAAK,eAAiBjB,EAAOO,SAASM,MAC3DC,MAAOnB,KAAKO,SAASe,KAAK,eAAiBjB,EAAOO,SAASO,MAC3DC,OAAQpB,KAAKO,SAASe,KAAK,gBAAkBjB,EAAOO,SAASQ,SAI/Df,EAAOgB,UAAUX,OAAS,WACzBV,KAAKuB,SAAW,OAASvB,KAAKI,QAAQW,QACtCf,KAAKwB,UAAY,OAASxB,KAAKI,QAAQY,QACvC,IAAIC,GAA6B,UAAtBjB,KAAKI,QAAQa,KAAmB,SAClB,UAAtBjB,KAAKI,QAAQa,KAAmB,SACV,SAAtBjB,KAAKI,QAAQa,KAAkB,SAC/B,GACCQ,EAAY5B,EAAE,uBAAuB6B,KAAK1B,KAAKI,QAAQS,IACzDc,SAAS3B,KAAKuB,SAAW,IAAMN,GAC7BW,EAAa/B,EAAE,uBAAuB6B,KAAK1B,KAAKI,QAAQU,KAC1Da,SAAS3B,KAAKwB,UAAY,IAAMP,EAAO,WACrCY,EAAgBhC,EAAE,gDACpB8B,SAASV,GACPa,EAAejC,EAAE,8BACnBkC,OAAON,EAAWG,EAAYC,GAC5BG,EAAUnC,EAAE,iDACd8B,SAAU3B,KAAKO,SAAS0B,KAAK,WAAajC,KAAKuB,SAAWvB,KAAKwB,UAAU,QACzEG,SAASV,GAAMU,SAAS3B,KAAKI,QAAQc,MAEvClB,MAAKO,SAAS2B,KAAKF,GACnBnC,EAAEW,OAAOR,MACRgC,QAAShC,KAAKO,SAAS4B,SACvBV,UAAWA,EACXG,WAAYA,EACZE,aAAcA,IAEf9B,KAAKgC,QAAQD,OAAOD,EAEpB,IAAIX,GAAQnB,KAAKI,QAAQe,OAASiB,KAAKC,IAAIZ,EAAUa,aAAcV,EAAWU,cAAeT,EAAcS,aAAa,EACpHlB,EAASpB,KAAKI,QAAQgB,QAAUgB,KAAKC,IAAIZ,EAAUc,cAAeX,EAAWW,cACjFd,GAAUE,SAAS,aACnBC,EAAWD,SAAS,cACpB3B,KAAKgC,QAAQQ,KAAMrB,MAAOA,EAAOC,OAAQA,IACrCpB,KAAKI,QAAQgB,SAChBK,EAAUe,IAAI,cAAef,EAAUL,SAAW,MAClDQ,EAAWY,IAAI,cAAeZ,EAAWR,SAAW,OAErDpB,KAAKyC,QAAO,GACZzC,KAAK0C,SAAQ,IAGdrC,EAAOgB,UAAUsB,OAAS,WACrB3C,KAAKO,SAAS0B,KAAK,WAAYjC,KAAKc,MACnCd,KAAKa,MAGXR,EAAOgB,UAAUR,GAAK,SAAU+B,GAC/B,MAAI5C,MAAKO,SAAS0B,KAAK,aAAoB,GAC3CjC,KAAKgC,QAAQa,YAAY7C,KAAKwB,UAAY,QAAQG,SAAS3B,KAAKuB,UAChEvB,KAAKO,SAAS0B,KAAK,WAAW,QACzBW,GAAQ5C,KAAK0C,aAGnBrC,EAAOgB,UAAUP,IAAM,SAAU8B,GAChC,MAAI5C,MAAKO,SAAS0B,KAAK,aAAoB,GAC3CjC,KAAKgC,QAAQa,YAAY7C,KAAKuB,UAAUI,SAAS3B,KAAKwB,UAAY,QAClExB,KAAKO,SAAS0B,KAAK,WAAW,QACzBW,GAAQ5C,KAAK0C,aAGnBrC,EAAOgB,UAAUyB,OAAS,WACzB9C,KAAKgC,QAAQe,WAAW,YACxB/C,KAAKO,SAAS0B,KAAK,YAAY,IAGhC5B,EAAOgB,UAAU2B,QAAU,WAC1BhD,KAAKgC,QAAQV,KAAK,WAAY,YAC9BtB,KAAKO,SAAS0B,KAAK,YAAY,IAGhC5B,EAAOgB,UAAUoB,OAAS,SAAUG,GAC/B5C,KAAKO,SAAS0B,KAAK,YAAajC,KAAKgD,UACpChD,KAAK8C,SACN9C,KAAKO,SAAS0B,KAAK,WAAYjC,KAAKa,GAAG+B,GACtC5C,KAAKc,IAAI8B,IAGfvC,EAAOgB,UAAUqB,QAAU,SAAUE,GACpC5C,KAAKO,SAASO,IAAI,oBACb8B,GAAQ5C,KAAKO,SAAS0C,SAC3BjD,KAAKO,SAASM,GAAG,mBAAoBhB,EAAEqD,MAAM,WAC5ClD,KAAKyC,UACHzC,QAGJK,EAAOgB,UAAU8B,QAAU,WAC1BnD,KAAKO,SAASO,IAAI,oBAClBd,KAAK8B,aAAasB,SAClBpD,KAAKO,SAAS8C,WAAW,aACzBrD,KAAKO,SAAS+C,SAiBf,IAAIC,GAAM1D,EAAE2D,GAAGC,eAEf5D,GAAE2D,GAAGC,gBAA8B3D,EACnCD,EAAE2D,GAAGC,gBAAgBC,YAAcrD,EAKnCR,EAAE2D,GAAGb,OAAOgB,WAAa,WAExB,MADA9D,GAAE2D,GAAGC,gBAAkBF,EAChBvD,MAMRH,EAAE,WACDA,EAAE,6CAA6C4D,oBAGhD5D,EAAE+D,UAAU/C,GAAG,kBAAmB,2BAA4B,SAASgD,GACtE,GAAIC,GAAYjE,EAAEG,MAAM+D,KAAK,uBAC7BD,GAAUL,gBAAgB,UAC1BI,EAAEG,oBAGFC"}

View File

@ -0,0 +1,180 @@
/*! ========================================================================
* Bootstrap Toggle: bootstrap2-toggle.js v2.2.0
* http://www.bootstraptoggle.com
* ========================================================================
* Copyright 2014 Min Hur, The New York Times Company
* Licensed under MIT
* ======================================================================== */
+function ($) {
'use strict';
// TOGGLE PUBLIC CLASS DEFINITION
// ==============================
var Toggle = function (element, options) {
this.$element = $(element)
this.options = $.extend({}, this.defaults(), options)
this.render()
}
Toggle.VERSION = '2.2.0'
Toggle.DEFAULTS = {
on: 'On',
off: 'Off',
onstyle: 'primary',
offstyle: 'default',
size: 'normal',
style: '',
width: null,
height: null
}
Toggle.prototype.defaults = function() {
return {
on: this.$element.attr('data-on') || Toggle.DEFAULTS.on,
off: this.$element.attr('data-off') || Toggle.DEFAULTS.off,
onstyle: this.$element.attr('data-onstyle') || Toggle.DEFAULTS.onstyle,
offstyle: this.$element.attr('data-offstyle') || Toggle.DEFAULTS.offstyle,
size: this.$element.attr('data-size') || Toggle.DEFAULTS.size,
style: this.$element.attr('data-style') || Toggle.DEFAULTS.style,
width: this.$element.attr('data-width') || Toggle.DEFAULTS.width,
height: this.$element.attr('data-height') || Toggle.DEFAULTS.height
}
}
Toggle.prototype.render = function () {
this._onstyle = 'btn-' + this.options.onstyle
this._offstyle = 'btn-' + this.options.offstyle
var size = this.options.size === 'large' ? 'btn-large'
: this.options.size === 'small' ? 'btn-small'
: this.options.size === 'mini' ? 'btn-mini'
: ''
var $toggleOn = $('<label class="btn">').html(this.options.on)
.addClass(this._onstyle + ' ' + size)
var $toggleOff = $('<label class="btn">').html(this.options.off)
.addClass(this._offstyle + ' ' + size + ' active')
var $toggleHandle = $('<span class="toggle-handle btn btn-default">')
.addClass(size)
var $toggleGroup = $('<div class="toggle-group">')
.append($toggleOn, $toggleOff, $toggleHandle)
var $toggle = $('<div class="toggle btn" data-toggle="toggle">')
.addClass( this.$element.prop('checked') ? this._onstyle : this._offstyle+' off' )
.addClass(size).addClass(this.options.style)
this.$element.wrap($toggle)
$.extend(this, {
$toggle: this.$element.parent(),
$toggleOn: $toggleOn,
$toggleOff: $toggleOff,
$toggleGroup: $toggleGroup
})
this.$toggle.append($toggleGroup)
var width = this.options.width || Math.max($toggleOn.width(), $toggleOff.width())+($toggleHandle.outerWidth()/2)
var height = this.options.height || Math.max($toggleOn.height(), $toggleOff.height())
$toggleOn.addClass('toggle-on')
$toggleOff.addClass('toggle-off')
this.$toggle.css({ width: width, height: height })
if (this.options.height) {
$toggleOn.css('line-height', $toggleOn.height() + 'px')
$toggleOff.css('line-height', $toggleOff.height() + 'px')
}
this.update(true)
this.trigger(true)
}
Toggle.prototype.toggle = function () {
if (this.$element.prop('checked')) this.off()
else this.on()
}
Toggle.prototype.on = function (silent) {
if (this.$element.prop('disabled')) return false
this.$toggle.removeClass(this._offstyle + ' off').addClass(this._onstyle)
this.$element.prop('checked', true)
if (!silent) this.trigger()
}
Toggle.prototype.off = function (silent) {
if (this.$element.prop('disabled')) return false
this.$toggle.removeClass(this._onstyle).addClass(this._offstyle + ' off')
this.$element.prop('checked', false)
if (!silent) this.trigger()
}
Toggle.prototype.enable = function () {
this.$toggle.removeAttr('disabled')
this.$element.prop('disabled', false)
}
Toggle.prototype.disable = function () {
this.$toggle.attr('disabled', 'disabled')
this.$element.prop('disabled', true)
}
Toggle.prototype.update = function (silent) {
if (this.$element.prop('disabled')) this.disable()
else this.enable()
if (this.$element.prop('checked')) this.on(silent)
else this.off(silent)
}
Toggle.prototype.trigger = function (silent) {
this.$element.off('change.bs.toggle')
if (!silent) this.$element.change()
this.$element.on('change.bs.toggle', $.proxy(function() {
this.update()
}, this))
}
Toggle.prototype.destroy = function() {
this.$element.off('change.bs.toggle')
this.$toggleGroup.remove()
this.$element.removeData('bs.toggle')
this.$element.unwrap()
}
// TOGGLE PLUGIN DEFINITION
// ========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.toggle')
var options = typeof option == 'object' && option
if (!data) $this.data('bs.toggle', (data = new Toggle(this, options)))
if (typeof option == 'string' && data[option]) data[option]()
})
}
var old = $.fn.bootstrapToggle
$.fn.bootstrapToggle = Plugin
$.fn.bootstrapToggle.Constructor = Toggle
// TOGGLE NO CONFLICT
// ==================
$.fn.toggle.noConflict = function () {
$.fn.bootstrapToggle = old
return this
}
// TOGGLE DATA-API
// ===============
$(function() {
$('input[type=checkbox][data-toggle^=toggle]').bootstrapToggle()
})
$(document).on('click.bs.toggle', 'div[data-toggle^=toggle]', function(e) {
var $checkbox = $(this).find('input[type=checkbox]')
$checkbox.bootstrapToggle('toggle')
e.preventDefault()
})
}(jQuery);

View File

@ -0,0 +1,9 @@
/*! ========================================================================
* Bootstrap Toggle: bootstrap2-toggle.js v2.2.0
* http://www.bootstraptoggle.com
* ========================================================================
* Copyright 2014 Min Hur, The New York Times Company
* Licensed under MIT
* ======================================================================== */
+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.toggle"),f="object"==typeof b&&b;e||d.data("bs.toggle",e=new c(this,f)),"string"==typeof b&&e[b]&&e[b]()})}var c=function(b,c){this.$element=a(b),this.options=a.extend({},this.defaults(),c),this.render()};c.VERSION="2.2.0",c.DEFAULTS={on:"On",off:"Off",onstyle:"primary",offstyle:"default",size:"normal",style:"",width:null,height:null},c.prototype.defaults=function(){return{on:this.$element.attr("data-on")||c.DEFAULTS.on,off:this.$element.attr("data-off")||c.DEFAULTS.off,onstyle:this.$element.attr("data-onstyle")||c.DEFAULTS.onstyle,offstyle:this.$element.attr("data-offstyle")||c.DEFAULTS.offstyle,size:this.$element.attr("data-size")||c.DEFAULTS.size,style:this.$element.attr("data-style")||c.DEFAULTS.style,width:this.$element.attr("data-width")||c.DEFAULTS.width,height:this.$element.attr("data-height")||c.DEFAULTS.height}},c.prototype.render=function(){this._onstyle="btn-"+this.options.onstyle,this._offstyle="btn-"+this.options.offstyle;var b="large"===this.options.size?"btn-large":"small"===this.options.size?"btn-small":"mini"===this.options.size?"btn-mini":"",c=a('<label class="btn">').html(this.options.on).addClass(this._onstyle+" "+b),d=a('<label class="btn">').html(this.options.off).addClass(this._offstyle+" "+b+" active"),e=a('<span class="toggle-handle btn btn-default">').addClass(b),f=a('<div class="toggle-group">').append(c,d,e),g=a('<div class="toggle btn" data-toggle="toggle">').addClass(this.$element.prop("checked")?this._onstyle:this._offstyle+" off").addClass(b).addClass(this.options.style);this.$element.wrap(g),a.extend(this,{$toggle:this.$element.parent(),$toggleOn:c,$toggleOff:d,$toggleGroup:f}),this.$toggle.append(f);var h=this.options.width||Math.max(c.width(),d.width())+e.outerWidth()/2,i=this.options.height||Math.max(c.height(),d.height());c.addClass("toggle-on"),d.addClass("toggle-off"),this.$toggle.css({width:h,height:i}),this.options.height&&(c.css("line-height",c.height()+"px"),d.css("line-height",d.height()+"px")),this.update(!0),this.trigger(!0)},c.prototype.toggle=function(){this.$element.prop("checked")?this.off():this.on()},c.prototype.on=function(a){return this.$element.prop("disabled")?!1:(this.$toggle.removeClass(this._offstyle+" off").addClass(this._onstyle),this.$element.prop("checked",!0),void(a||this.trigger()))},c.prototype.off=function(a){return this.$element.prop("disabled")?!1:(this.$toggle.removeClass(this._onstyle).addClass(this._offstyle+" off"),this.$element.prop("checked",!1),void(a||this.trigger()))},c.prototype.enable=function(){this.$toggle.removeAttr("disabled"),this.$element.prop("disabled",!1)},c.prototype.disable=function(){this.$toggle.attr("disabled","disabled"),this.$element.prop("disabled",!0)},c.prototype.update=function(a){this.$element.prop("disabled")?this.disable():this.enable(),this.$element.prop("checked")?this.on(a):this.off(a)},c.prototype.trigger=function(b){this.$element.off("change.bs.toggle"),b||this.$element.change(),this.$element.on("change.bs.toggle",a.proxy(function(){this.update()},this))},c.prototype.destroy=function(){this.$element.off("change.bs.toggle"),this.$toggleGroup.remove(),this.$element.removeData("bs.toggle"),this.$element.unwrap()};var d=a.fn.bootstrapToggle;a.fn.bootstrapToggle=b,a.fn.bootstrapToggle.Constructor=c,a.fn.toggle.noConflict=function(){return a.fn.bootstrapToggle=d,this},a(function(){a("input[type=checkbox][data-toggle^=toggle]").bootstrapToggle()}),a(document).on("click.bs.toggle","div[data-toggle^=toggle]",function(b){var c=a(this).find("input[type=checkbox]");c.bootstrapToggle("toggle"),b.preventDefault()})}(jQuery);
//# sourceMappingURL=bootstrap2-toggle.min.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"bootstrap2-toggle.min.js","sources":["bootstrap2-toggle.js"],"names":["$","Plugin","option","this","each","$this","data","options","Toggle","element","$element","extend","defaults","render","VERSION","DEFAULTS","on","off","onstyle","offstyle","size","style","width","height","prototype","attr","_onstyle","_offstyle","$toggleOn","html","addClass","$toggleOff","$toggleHandle","$toggleGroup","append","$toggle","prop","wrap","parent","Math","max","outerWidth","css","update","trigger","toggle","silent","removeClass","enable","removeAttr","disable","change","proxy","destroy","remove","removeData","unwrap","old","fn","bootstrapToggle","Constructor","noConflict","document","e","$checkbox","find","preventDefault","jQuery"],"mappings":";;;;;;;CASE,SAAUA,GACV,YAoID,SAASC,GAAOC,GACf,MAAOC,MAAKC,KAAK,WAChB,GAAIC,GAAUL,EAAEG,MACZG,EAAUD,EAAMC,KAAK,aACrBC,EAA2B,gBAAVL,IAAsBA,CAEtCI,IAAMD,EAAMC,KAAK,YAAcA,EAAO,GAAIE,GAAOL,KAAMI,IACvC,gBAAVL,IAAsBI,EAAKJ,IAASI,EAAKJ,OAtItD,GAAIM,GAAS,SAAUC,EAASF,GAC/BJ,KAAKO,SAAYV,EAAES,GACnBN,KAAKI,QAAYP,EAAEW,UAAWR,KAAKS,WAAYL,GAC/CJ,KAAKU,SAGNL,GAAOM,QAAW,QAElBN,EAAOO,UACNC,GAAI,KACJC,IAAK,MACLC,QAAS,UACTC,SAAU,UACVC,KAAM,SACNC,MAAO,GACPC,MAAO,KACPC,OAAQ,MAGTf,EAAOgB,UAAUZ,SAAW,WAC3B,OACCI,GAAIb,KAAKO,SAASe,KAAK,YAAcjB,EAAOO,SAASC,GACrDC,IAAKd,KAAKO,SAASe,KAAK,aAAejB,EAAOO,SAASE,IACvDC,QAASf,KAAKO,SAASe,KAAK,iBAAmBjB,EAAOO,SAASG,QAC/DC,SAAUhB,KAAKO,SAASe,KAAK,kBAAoBjB,EAAOO,SAASI,SACjEC,KAAMjB,KAAKO,SAASe,KAAK,cAAgBjB,EAAOO,SAASK,KACzDC,MAAOlB,KAAKO,SAASe,KAAK,eAAiBjB,EAAOO,SAASM,MAC3DC,MAAOnB,KAAKO,SAASe,KAAK,eAAiBjB,EAAOO,SAASO,MAC3DC,OAAQpB,KAAKO,SAASe,KAAK,gBAAkBjB,EAAOO,SAASQ,SAI/Df,EAAOgB,UAAUX,OAAS,WACzBV,KAAKuB,SAAW,OAASvB,KAAKI,QAAQW,QACtCf,KAAKwB,UAAY,OAASxB,KAAKI,QAAQY,QACvC,IAAIC,GAA6B,UAAtBjB,KAAKI,QAAQa,KAAmB,YAClB,UAAtBjB,KAAKI,QAAQa,KAAmB,YACV,SAAtBjB,KAAKI,QAAQa,KAAkB,WAC/B,GACCQ,EAAY5B,EAAE,uBAAuB6B,KAAK1B,KAAKI,QAAQS,IACzDc,SAAS3B,KAAKuB,SAAW,IAAMN,GAC7BW,EAAa/B,EAAE,uBAAuB6B,KAAK1B,KAAKI,QAAQU,KAC1Da,SAAS3B,KAAKwB,UAAY,IAAMP,EAAO,WACrCY,EAAgBhC,EAAE,gDACpB8B,SAASV,GACPa,EAAejC,EAAE,8BACnBkC,OAAON,EAAWG,EAAYC,GAC5BG,EAAUnC,EAAE,iDACd8B,SAAU3B,KAAKO,SAAS0B,KAAK,WAAajC,KAAKuB,SAAWvB,KAAKwB,UAAU,QACzEG,SAASV,GAAMU,SAAS3B,KAAKI,QAAQc,MAEvClB,MAAKO,SAAS2B,KAAKF,GACnBnC,EAAEW,OAAOR,MACRgC,QAAShC,KAAKO,SAAS4B,SACvBV,UAAWA,EACXG,WAAYA,EACZE,aAAcA,IAEf9B,KAAKgC,QAAQD,OAAOD,EAEpB,IAAIX,GAAQnB,KAAKI,QAAQe,OAASiB,KAAKC,IAAIZ,EAAUN,QAASS,EAAWT,SAAUU,EAAcS,aAAa,EAC1GlB,EAASpB,KAAKI,QAAQgB,QAAUgB,KAAKC,IAAIZ,EAAUL,SAAUQ,EAAWR,SAC5EK,GAAUE,SAAS,aACnBC,EAAWD,SAAS,cACpB3B,KAAKgC,QAAQO,KAAMpB,MAAOA,EAAOC,OAAQA,IACrCpB,KAAKI,QAAQgB,SAChBK,EAAUc,IAAI,cAAed,EAAUL,SAAW,MAClDQ,EAAWW,IAAI,cAAeX,EAAWR,SAAW,OAErDpB,KAAKwC,QAAO,GACZxC,KAAKyC,SAAQ,IAGdpC,EAAOgB,UAAUqB,OAAS,WACrB1C,KAAKO,SAAS0B,KAAK,WAAYjC,KAAKc,MACnCd,KAAKa,MAGXR,EAAOgB,UAAUR,GAAK,SAAU8B,GAC/B,MAAI3C,MAAKO,SAAS0B,KAAK,aAAoB,GAC3CjC,KAAKgC,QAAQY,YAAY5C,KAAKwB,UAAY,QAAQG,SAAS3B,KAAKuB,UAChEvB,KAAKO,SAAS0B,KAAK,WAAW,QACzBU,GAAQ3C,KAAKyC,aAGnBpC,EAAOgB,UAAUP,IAAM,SAAU6B,GAChC,MAAI3C,MAAKO,SAAS0B,KAAK,aAAoB,GAC3CjC,KAAKgC,QAAQY,YAAY5C,KAAKuB,UAAUI,SAAS3B,KAAKwB,UAAY,QAClExB,KAAKO,SAAS0B,KAAK,WAAW,QACzBU,GAAQ3C,KAAKyC,aAGnBpC,EAAOgB,UAAUwB,OAAS,WACzB7C,KAAKgC,QAAQc,WAAW,YACxB9C,KAAKO,SAAS0B,KAAK,YAAY,IAGhC5B,EAAOgB,UAAU0B,QAAU,WAC1B/C,KAAKgC,QAAQV,KAAK,WAAY,YAC9BtB,KAAKO,SAAS0B,KAAK,YAAY,IAGhC5B,EAAOgB,UAAUmB,OAAS,SAAUG,GAC/B3C,KAAKO,SAAS0B,KAAK,YAAajC,KAAK+C,UACpC/C,KAAK6C,SACN7C,KAAKO,SAAS0B,KAAK,WAAYjC,KAAKa,GAAG8B,GACtC3C,KAAKc,IAAI6B,IAGftC,EAAOgB,UAAUoB,QAAU,SAAUE,GACpC3C,KAAKO,SAASO,IAAI,oBACb6B,GAAQ3C,KAAKO,SAASyC,SAC3BhD,KAAKO,SAASM,GAAG,mBAAoBhB,EAAEoD,MAAM,WAC5CjD,KAAKwC,UACHxC,QAGJK,EAAOgB,UAAU6B,QAAU,WAC1BlD,KAAKO,SAASO,IAAI,oBAClBd,KAAK8B,aAAaqB,SAClBnD,KAAKO,SAAS6C,WAAW,aACzBpD,KAAKO,SAAS8C,SAiBf,IAAIC,GAAMzD,EAAE0D,GAAGC,eAEf3D,GAAE0D,GAAGC,gBAA8B1D,EACnCD,EAAE0D,GAAGC,gBAAgBC,YAAcpD,EAKnCR,EAAE0D,GAAGb,OAAOgB,WAAa,WAExB,MADA7D,GAAE0D,GAAGC,gBAAkBF,EAChBtD,MAMRH,EAAE,WACDA,EAAE,6CAA6C2D,oBAGhD3D,EAAE8D,UAAU9C,GAAG,kBAAmB,2BAA4B,SAAS+C,GACtE,GAAIC,GAAYhE,EAAEG,MAAM8D,KAAK,uBAC7BD,GAAUL,gBAAgB,UAC1BI,EAAEG,oBAGFC"}

View File

@ -8,6 +8,7 @@
@import "jquery.mloading";
@import "jquery-confirm.min";
@import "bootstrap-datetimepicker.min";
@import "bootstrap/bootstrap-toggle.min";
@import "codemirror/lib/codemirror";
@import "editormd/css/editormd.min";
@ -204,3 +205,13 @@ input.form-control {
font-size: 1rem;
}
}
.table th, .table td {
padding: 0.75rem 0.1rem;
vertical-align: top;
border-top: 1px solid #dee2e6;
}
.table .thead-light th{
white-space: nowrap;
}

View File

@ -0,0 +1,3 @@
// Place all the styles related to the admins/organizations controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View File

@ -0,0 +1,83 @@
/*! ========================================================================
* Bootstrap Toggle: bootstrap-toggle.css v2.2.0
* http://www.bootstraptoggle.com
* ========================================================================
* Copyright 2014 Min Hur, The New York Times Company
* Licensed under MIT
* ======================================================================== */
.checkbox label .toggle,
.checkbox-inline .toggle {
margin-left: -20px;
margin-right: 5px;
}
.toggle {
position: relative;
overflow: hidden;
}
.toggle input[type="checkbox"] {
display: none;
}
.toggle-group {
position: absolute;
width: 200%;
top: 0;
bottom: 0;
left: 0;
transition: left 0.35s;
-webkit-transition: left 0.35s;
-moz-user-select: none;
-webkit-user-select: none;
}
.toggle.off .toggle-group {
left: -100%;
}
.toggle-on {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 50%;
margin: 0;
border: 0;
border-radius: 0;
}
.toggle-off {
position: absolute;
top: 0;
bottom: 0;
left: 50%;
right: 0;
margin: 0;
border: 0;
border-radius: 0;
}
.toggle-handle {
position: relative;
margin: 0 auto;
padding-top: 0px;
padding-bottom: 0px;
height: 100%;
width: 0px;
border-width: 0 1px;
}
.toggle.btn { min-width: 59px; min-height: 34px; }
.toggle-on.btn { padding-right: 24px; }
.toggle-off.btn { padding-left: 24px; }
.toggle.btn-lg { min-width: 79px; min-height: 45px; }
.toggle-on.btn-lg { padding-right: 31px; }
.toggle-off.btn-lg { padding-left: 31px; }
.toggle-handle.btn-lg { width: 40px; }
.toggle.btn-sm { min-width: 50px; min-height: 30px;}
.toggle-on.btn-sm { padding-right: 20px; }
.toggle-off.btn-sm { padding-left: 20px; }
.toggle.btn-xs { min-width: 35px; min-height: 22px;}
.toggle-on.btn-xs { padding-right: 12px; }
.toggle-off.btn-xs { padding-left: 12px; }

View File

@ -0,0 +1,28 @@
/*! ========================================================================
* Bootstrap Toggle: bootstrap-toggle.css v2.2.0
* http://www.bootstraptoggle.com
* ========================================================================
* Copyright 2014 Min Hur, The New York Times Company
* Licensed under MIT
* ======================================================================== */
.checkbox label .toggle,.checkbox-inline .toggle{margin-left:-20px;margin-right:5px}
.toggle{position:relative;overflow:hidden}
.toggle input[type=checkbox]{display:none}
.toggle-group{position:absolute;width:200%;top:0;bottom:0;left:0;transition:left .35s;-webkit-transition:left .35s;-moz-user-select:none;-webkit-user-select:none}
.toggle.off .toggle-group{left:-100%}
.toggle-on{position:absolute;top:0;bottom:0;left:0;right:50%;margin:0;border:0;border-radius:0}
.toggle-off{position:absolute;top:0;bottom:0;left:50%;right:0;margin:0;border:0;border-radius:0}
.toggle-handle{position:relative;margin:0 auto;padding-top:0;padding-bottom:0;height:100%;width:0;border-width:0 1px}
.toggle.btn{min-width:59px;min-height:34px}
.toggle-on.btn{padding-right:24px}
.toggle-off.btn{padding-left:24px}
.toggle.btn-lg{min-width:79px;min-height:45px}
.toggle-on.btn-lg{padding-right:31px}
.toggle-off.btn-lg{padding-left:31px}
.toggle-handle.btn-lg{width:40px}
.toggle.btn-sm{min-width:50px;min-height:30px}
.toggle-on.btn-sm{padding-right:20px}
.toggle-off.btn-sm{padding-left:20px}
.toggle.btn-xs{min-width:35px;min-height:22px}
.toggle-on.btn-xs{padding-right:12px}
.toggle-off.btn-xs{padding-left:12px}

View File

@ -0,0 +1,85 @@
/*! ========================================================================
* Bootstrap Toggle: bootstrap2-toggle.css v2.2.0
* http://www.bootstraptoggle.com
* ========================================================================
* Copyright 2014 Min Hur, The New York Times Company
* Licensed under MIT
* ======================================================================== */
label.checkbox .toggle,
label.checkbox.inline .toggle {
margin-left: -20px;
margin-right: 5px;
}
.toggle {
min-width: 40px;
height: 20px;
position: relative;
overflow: hidden;
}
.toggle input[type="checkbox"] {
display: none;
}
.toggle-group {
position: absolute;
width: 200%;
top: 0;
bottom: 0;
left: 0;
transition: left 0.35s;
-webkit-transition: left 0.35s;
-moz-user-select: none;
-webkit-user-select: none;
}
.toggle.off .toggle-group {
left: -100%;
}
.toggle-on {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 50%;
margin: 0;
border: 0;
border-radius: 0;
}
.toggle-off {
position: absolute;
top: 0;
bottom: 0;
left: 50%;
right: 0;
margin: 0;
border: 0;
border-radius: 0;
}
.toggle-handle {
position: relative;
margin: 0 auto;
padding-top: 0px;
padding-bottom: 0px;
height: 100%;
width: 0px;
border-width: 0 1px;
}
.toggle-handle.btn-mini {
top: -1px;
}
.toggle.btn { min-width: 30px; }
.toggle-on.btn { padding-right: 24px; }
.toggle-off.btn { padding-left: 24px; }
.toggle.btn-large { min-width: 40px; }
.toggle-on.btn-large { padding-right: 35px; }
.toggle-off.btn-large { padding-left: 35px; }
.toggle.btn-small { min-width: 25px; }
.toggle-on.btn-small { padding-right: 20px; }
.toggle-off.btn-small { padding-left: 20px; }
.toggle.btn-mini { min-width: 20px; }
.toggle-on.btn-mini { padding-right: 12px; }
.toggle-off.btn-mini { padding-left: 12px; }

View File

@ -0,0 +1,28 @@
/*! ========================================================================
* Bootstrap Toggle: bootstrap2-toggle.css v2.2.0
* http://www.bootstraptoggle.com
* ========================================================================
* Copyright 2014 Min Hur, The New York Times Company
* Licensed under MIT
* ======================================================================== */
label.checkbox .toggle,label.checkbox.inline .toggle{margin-left:-20px;margin-right:5px}
.toggle{min-width:40px;height:20px;position:relative;overflow:hidden}
.toggle input[type=checkbox]{display:none}
.toggle-group{position:absolute;width:200%;top:0;bottom:0;left:0;transition:left .35s;-webkit-transition:left .35s;-moz-user-select:none;-webkit-user-select:none}
.toggle.off .toggle-group{left:-100%}
.toggle-on{position:absolute;top:0;bottom:0;left:0;right:50%;margin:0;border:0;border-radius:0}
.toggle-off{position:absolute;top:0;bottom:0;left:50%;right:0;margin:0;border:0;border-radius:0}
.toggle-handle{position:relative;margin:0 auto;padding-top:0;padding-bottom:0;height:100%;width:0;border-width:0 1px}
.toggle-handle.btn-mini{top:-1px}
.toggle.btn{min-width:30px}
.toggle-on.btn{padding-right:24px}
.toggle-off.btn{padding-left:24px}
.toggle.btn-large{min-width:40px}
.toggle-on.btn-large{padding-right:35px}
.toggle-off.btn-large{padding-left:35px}
.toggle.btn-small{min-width:25px}
.toggle-on.btn-small{padding-right:20px}
.toggle-off.btn-small{padding-left:20px}
.toggle.btn-mini{min-width:20px}
.toggle-on.btn-mini{padding-right:12px}
.toggle-off.btn-mini{padding-left:12px}

View File

@ -1,14 +1,33 @@
class AccountsController < ApplicationController
before_action :require_login, only: [:login_check, :simple_update]
include ApplicationHelper
#skip_before_action :check_account, :only => [:logout]
def simple_update
simple_update_params.merge!(username: params[:username]&.gsub(/\s+/, ""))
simple_update_params.merge!(email: params[:email]&.gsub(/\s+/, ""))
simple_update_params.merge!(platform: (params[:platform] || 'forge')&.gsub(/\s+/, ""))
Register::RemoteForm.new(simple_update_params).validate!
ActiveRecord::Base.transaction do
result = auto_update(current_user, simple_update_params)
if result[:message].blank?
UserAction.create(:action_id => current_user.id, :action_type => "sync_educoder_user", :user_id => current_user.id, :ip => request.remote_ip) if params[:platform] == "educoder"
render_ok
else
render_error(result[:message])
end
end
end
def index
render json: session
end
# 其他平台同步注册的用户
def remote_register
Register::RemoteForm.new(remote_register_params).validate!
username = params[:username]&.gsub(/\s+/, "")
tip_exception("无法使用以下关键词:#{username},请重新命名") if ReversedKeyword.check_exists?(username)
email = params[:email]&.gsub(/\s+/, "")
@ -93,7 +112,9 @@ class AccountsController < ApplicationController
sync_params = {
password: params[:password].to_s,
email: @user.mail
email: @user.mail,
login_name: @user.login,
source_id: 0
}
interactor = Gitea::User::UpdateInteractor.call(@user.login, sync_params)
@ -121,6 +142,7 @@ class AccountsController < ApplicationController
Register::Form.new(register_params).validate!
user = Users::RegisterService.call(register_params)
user.mail = "#{user.login}@example.org" if user.mail.blank?
password = register_params[:password].strip
# gitea用户注册, email, username, password
@ -132,6 +154,10 @@ class AccountsController < ApplicationController
user.gitea_uid = gitea_user[:body]['id']
if user.save!
UserExtension.create!(user_id: user.id)
# 绑定授权账号
if ["qq", "wechat", "gitee", "github", "educoder"].include?(params[:type].to_s) && session[:unionid].present?
"OpenUsers::#{params[:type].to_s.capitalize}".constantize.create!(user: user, uid: session[:unionid])
end
successful_authentication(user)
render_ok
end
@ -139,15 +165,17 @@ class AccountsController < ApplicationController
tip_exception(-1, interactor.error)
end
rescue Register::BaseForm::EmailError => e
render_error(-2, e.message)
render_result(-2, e.message)
rescue Register::BaseForm::LoginError => e
render_error(-3, e.message)
render_result(-3, e.message)
rescue Register::BaseForm::PhoneError => e
render_error(-4, e.message)
render_result(-4, e.message)
rescue Register::BaseForm::PasswordFormatError => e
render_error(-5, e.message)
render_result(-5, e.message)
rescue Register::BaseForm::PasswordConfirmationError => e
render_result(-7, e.message)
rescue Register::BaseForm::VerifiCodeError => e
render_error(-6, e.message)
render_result(-6, e.message)
rescue Exception => e
Gitea::User::DeleteService.call(user.login) unless user.nil?
uid_logger_error(e.message)
@ -157,7 +185,7 @@ class AccountsController < ApplicationController
# 用户登录
def login
Users::LoginForm.new(account_params).validate!
Users::LoginForm.new(login_params).validate!
@user = User.try_to_login(params[:login], params[:password])
return normal_status(-2, "错误的账号或密码") if @user.blank?
@ -178,6 +206,7 @@ class AccountsController < ApplicationController
return
end
LimitForbidControl::UserLogin.new(@user).clear
successful_authentication(@user)
sync_pwd_to_gitea!(@user, {password: params[:password].to_s}) # TODO用户密码未同步
@ -191,7 +220,9 @@ class AccountsController < ApplicationController
sync_params = {
password: params[:password].to_s,
email: @user.mail
email: @user.mail,
login_name: @user.name,
source_id: 0
}
interactor = Gitea::User::UpdateInteractor.call(@user.login, sync_params)
@ -206,28 +237,27 @@ class AccountsController < ApplicationController
# 忘记密码
def reset_password
begin
code = params[:code]
login_type = phone_mail_type(params[:login].strip)
# 获取验证码
if login_type == 1
phone = params[:login]
verifi_code = VerificationCode.where(phone: phone, code: code, code_type: 2).last
user = User.find_by_phone(phone)
else
email = params[:login]
verifi_code = VerificationCode.where(email: email, code: code, code_type: 3).last
user = User.find_by_mail(email) #这里有问题应该是为email,而不是mail 6.13-hs
end
return normal_status(-2, "验证码不正确") if verifi_code.try(:code) != code.strip
return normal_status(-2, "验证码已失效") if !verifi_code&.effective?
return normal_status(-1, "8~16位密码支持字母数字和符号") unless params[:new_password] =~ CustomRegexp::PASSWORD
Accounts::ResetPasswordForm.new(reset_password_params).validate!
user.password, user.password_confirmation = params[:new_password], params[:new_password_confirmation]
ActiveRecord::Base.transaction do
user.save!
LimitForbidControl::UserLogin.new(user).clear
end
sucess_status
user = find_user
return render_error('未找到相关账号') if user.blank?
user = Accounts::ResetPasswordService.call(user, reset_password_params)
LimitForbidControl::UserLogin.new(user).clear if user.save!
render_ok
rescue Register::BaseForm::EmailError => e
render_result(-2, e.message)
rescue Register::BaseForm::PhoneError => e
render_result(-4, e.message)
rescue Register::BaseForm::PasswordFormatError => e
render_result(-5, e.message)
rescue Register::BaseForm::PasswordConfirmationError => e
render_result(-7, e.message)
rescue Register::BaseForm::VerifiCodeError => e
render_result(-6, e.message)
rescue ActiveRecord::Rollback => e
render_result(-1, "服务器异常")
rescue Exception => e
uid_logger_error(e.message)
tip_exception(e.message)
@ -251,7 +281,7 @@ class AccountsController < ApplicationController
def set_autologin_cookie(user)
token = Token.get_or_create_permanent_login_token(user, "autologin")
sync_user_token_to_trustie(user.login, token.value)
# sync_user_token_to_trustie(user.login, token.value)
cookie_options = {
:value => token.value,
@ -295,6 +325,8 @@ class AccountsController < ApplicationController
send_type = verify_type(login_type, type)
verification_code = code.sample(6).join
status, message = InfoRiskControlService.call(value, request.remote_ip)
tip_exception(420, message) if status == 0
sign = Digest::MD5.hexdigest("#{OPENKEY}#{value}")
tip_exception(501, "请求不合理") if sign != params[:smscode]
@ -314,6 +346,11 @@ class AccountsController < ApplicationController
render_ok
end
def login_check
Register::LoginCheckColumnsForm.new(check_params.merge(user: current_user)).validate!
render_ok
end
private
# type 事件类型 1用户注册 2忘记密码 3: 绑定手机 4: 绑定邮箱, 5: 验证手机号是否有效 # 如果有新的继续后面加
@ -356,7 +393,7 @@ class AccountsController < ApplicationController
params.require(:user).permit(:login, :email, :phone)
end
def account_params
def login_params
params.require(:account).permit(:login, :password)
end
@ -365,7 +402,23 @@ class AccountsController < ApplicationController
end
def register_params
params.permit(:login, :namespace, :password, :code)
params.permit(:login, :namespace, :password, :password_confirmation, :code, :type)
end
def reset_password_params
params.permit(:login, :password, :password_confirmation, :code)
end
def find_user
phone_or_mail = strip(reset_password_params[:login])
User.where("phone = :search OR mail = :search", search: phone_or_mail).last
end
def remote_register_params
params.permit(:username, :email, :password, :platform)
end
def simple_update_params
params.permit(:username, :email, :password, :platform)
end
end

View File

@ -1,10 +1,33 @@
class Admins::DashboardsController < Admins::BaseController
def index
@active_user_count = User.where(last_login_on: today).count
@weekly_active_user_count = User.where(last_login_on: current_week).count
@month_active_user_count = User.where(last_login_on: current_month).count
# 用户活跃数
day_user_ids = CommitLog.where(created_at: today).pluck(:user_id).uniq
weekly_user_ids = CommitLog.where(created_at: current_week).pluck(:user_id).uniq
month_user_ids = CommitLog.where(created_at: current_month).pluck(:user_id).uniq
@active_user_count = User.where(last_login_on: today).or(User.where(id: day_user_ids)).count
@weekly_active_user_count = User.where(last_login_on: current_week).or(User.where(id: weekly_user_ids)).count
@month_active_user_count = User.where(last_login_on: current_month).or(User.where(id: month_user_ids)).count
user_ids = User.where(created_on: pre_week).pluck(:id).uniq
weekly_keep_user_count = User.where(id: user_ids).where(last_login_on: current_week).count
@weekly_keep_rate = format("%.2f", user_ids.size > 0 ? weekly_keep_user_count.to_f / user_ids.size : 0)
@new_user_count = User.where(created_on: current_month).count
# 新用户注册数
@day_new_user_count = User.where(created_on: today).count
@weekly_new_user_count = User.where(created_on: current_week).count
@month_new_user_count = User.where(created_on: current_month).count
# 活跃项目数
day_project_ids = (CommitLog.where(created_at: today).pluck(:project_id).uniq + Issue.where(created_on: today).pluck(:project_id).uniq).uniq
weekly_project_ids = (CommitLog.where(created_at: current_week).pluck(:project_id).uniq + Issue.where(created_on: current_week).pluck(:project_id).uniq).uniq
month_project_ids = (CommitLog.where(created_at: current_month).pluck(:project_id).uniq + Issue.where(created_on: current_month).pluck(:project_id).uniq).uniq
@day_active_project_count = Project.where(updated_on: today).or(Project.where(id: day_project_ids)).count
@weekly_active_project_count = Project.where(updated_on: current_week).or(Project.where(id: weekly_project_ids)).count
@month_active_project_count = Project.where(updated_on: current_month).or(Project.where(id: month_project_ids)).count
# 新增项目数
@day_new_project_count = Project.where(created_on: today).count
@weekly_new_project_count = Project.where(created_on: current_week).count
@month_new_project_count = Project.where(created_on: current_month).count
end
def month_active_user
@ -16,7 +39,6 @@ class Admins::DashboardsController < Admins::BaseController
{ value: count['professional'].to_i, name: '专业人士' },
{ value: count[nil].to_i, name: '未选职业' },
]
render_ok(data: data)
end
@ -42,10 +64,14 @@ class Admins::DashboardsController < Admins::BaseController
end
def current_week
7.days.ago.beginning_of_day..Time.now.end_of_day
7.days.ago.end_of_day..Time.now.end_of_day
end
def current_month
30.days.ago.beginning_of_day..Time.now.end_of_day
30.days.ago.end_of_day..Time.now.end_of_day
end
def pre_week
14.days.ago.end_of_day..7.days.ago.end_of_day
end
end

View File

@ -0,0 +1,49 @@
class Admins::FeedbacksController < Admins::BaseController
before_action :get_feedback, only: [:new_history, :create_history, :destroy]
def index
sort_by = Feedback.column_names.include?(params[:sort_by]) ? params[:sort_by] : 'created_at'
sort_direction = %w(desc asc).include?(params[:sort_direction]) ? params[:sort_direction] : 'desc'
feedbacks = Feedback.order("#{sort_by} #{sort_direction}")
@feedbacks = paginate(feedbacks)
end
def destroy
if @feedback.destroy
redirect_to admins_feedbacks_path
flash[:success] = "反馈意见删除成功"
else
redirect_to admins_feedbacks_path
flash[:danger] = "反馈意见删除失败"
end
end
def new_history
@feedback_message_history = FeedbackMessageHistory.new
end
def create_history
@feedback_message_history = @feedback.feedback_message_histories.new(feedback_message_history_params)
@feedback_message_history.user = current_user
if @feedback_message_history.save
redirect_to admins_feedbacks_path
flash[:success] = "发送通知成功"
else
redirect_to admins_feedbacks_path
flash[:danger] = @feedback_message_history.errors.full_messages.join(", ")
end
end
private
def feedback_params
params.require(:feedback).permit!
end
def feedback_message_history_params
params.require(:feedback_message_history).permit(:title, :content)
end
def get_feedback
@feedback = Feedback.find_by_id(params[:id])
end
end

View File

@ -2,7 +2,7 @@ class Admins::ImportUsersController < Admins::BaseController
def create
return render_error('请上传正确的文件') if params[:file].blank? || !params[:file].is_a?(ActionDispatch::Http::UploadedFile)
result = Admins::ImportUserService.call(params[:file].to_io)
result = Admins::ImportUserFromExcelService.call(params[:file].to_io)
render_ok(result)
rescue Admins::ImportUserService::Error => ex
render_error(ex)

View File

@ -2,8 +2,24 @@ class Admins::MessageTemplatesController < Admins::BaseController
before_action :get_template, only: [:edit, :update, :destroy]
def index
message_templates = MessageTemplate.group(:type).count.keys
@message_templates = kaminari_array_paginate(message_templates)
message_templates = MessageTemplate.ransack(sys_notice_or_email_or_email_title_cont: params[:search]).result
@message_templates = kaminari_paginate(message_templates)
end
def new
@message_template = MessageTemplate.new
end
def create
@message_template = MessageTemplate::CustomTip.new(message_template_params)
@message_template.type = "MessageTemplate::CustomTip"
if @message_template.save!
redirect_to admins_message_templates_path
flash[:success] = "创建消息模板成功"
else
render :new
flash[:danger] = "创建消息模板失败"
end
end
def edit
@ -31,7 +47,9 @@ class Admins::MessageTemplatesController < Admins::BaseController
private
def message_template_params
params.require(@message_template.type.split("::").join("_").underscore.to_sym).permit!
# type = @message_template.present? ? @message_template.type : "MessageTemplate::CustomTip"
# params.require(type.split("::").join("_").underscore.to_sym).permit!
params.require(:message_template).permit!
end
def get_template

View File

@ -0,0 +1,26 @@
class Admins::NpsController < Admins::BaseController
def index
@on_off_switch = EduSetting.get("nps-on-off-switch").to_s == 'true'
@user_nps = UserNp.joins(:user).order(created_at: :desc)
keyword = params[:keyword].to_s.strip.presence
if keyword
sql = 'CONCAT(users.lastname, users.firstname) LIKE :keyword OR users.nickname LIKE :keyword OR users.login LIKE :keyword OR users.mail LIKE :keyword OR users.phone LIKE :keyword'
@user_nps = @user_nps.where(sql, keyword: "%#{keyword}%")
end
@user_nps = @user_nps.where("action_type != 'close'") if params[:done_score].present?
@min_score = @user_nps.where("action_type != 'close'").minimum("score")
@max_score = @user_nps.where("action_type != 'close'").maximum("score")
@score_total_count = UserNp.where("action_type !='close'").count
@user_nps = paginate @user_nps.includes(:user)
end
def switch_change
edu_setting = EduSetting.find_by(name: "nps-on-off-switch")
if edu_setting.blank?
edu_setting = EduSetting.new(name: "nps-on-off-switch")
end
edu_setting.value = params[:switch].to_s
edu_setting.save
render_ok
end
end

View File

@ -0,0 +1,27 @@
class Admins::OrganizationsController < Admins::BaseController
before_action :finder_org, except: [:index]
def index
params[:sort_by] = params[:sort_by].presence || 'created_on'
params[:sort_direction] = params[:sort_direction].presence || 'desc'
orgs = Admins::OrganizationQuery.call(params)
@orgs = paginate orgs
end
def show
end
def destroy
@org.destroy!
Admins::DeleteOrganizationService.call(@org.login)
render_delete_success
end
private
def finder_org
@org = Organization.find(params[:id])
end
end

View File

@ -1,6 +1,6 @@
class Admins::ProjectIgnoresController < Admins::BaseController
before_action :set_ignore, only: [:edit,:update, :destroy,:show]
before_action :validate_params, only: [:create, :update]
# before_action :validate_params, only: [:create, :update]
def index
sort_by = Ignore.column_names.include?(params[:sort_by]) ? params[:sort_by] : 'created_at'
@ -31,12 +31,12 @@ class Admins::ProjectIgnoresController < Admins::BaseController
# }
@project_ignore = Ignore.new(ignore_params)
if @project_ignore.save!
if @project_ignore.save
redirect_to admins_project_ignores_path
flash[:success] = "创建成功"
else
render :new
flash[:danger] = "创建失败"
redirect_to admins_project_ignores_path
flash[:danger] = @project_ignore.errors.full_messages.join(",")
end
end
@ -58,8 +58,8 @@ class Admins::ProjectIgnoresController < Admins::BaseController
redirect_to admins_project_ignores_path
flash[:success] = "更新成功"
else
render :edit
flash[:danger] = "更新失败"
redirect_to admins_project_ignores_path
flash[:danger] = @project_ignore.errors.full_messages.join(",")
end
end
@ -98,23 +98,23 @@ class Admins::ProjectIgnoresController < Admins::BaseController
params.require(:ignore).permit(:name,:content)
end
def validate_params
name = params[:ignore][:name]
if name.blank?
flash[:danger] = "名称不允许为空"
redirect_to admins_project_ignores_path
elsif check_ignore_present?(name) && @project_ignore.blank?
flash[:danger] = "创建失败:名称已存在"
redirect_to admins_project_ignores_path
end
end
# def validate_params
# name = params[:ignore][:name]
# if name.blank?
# flash[:danger] = "名称不允许为空"
# redirect_to admins_project_ignores_path
# elsif check_ignore_present?(name) && @project_ignore.blank?
# flash[:danger] = "创建失败:名称已存在"
# redirect_to admins_project_ignores_path
# end
# end
def check_ignore_present?(name)
return true if name.blank?
name_downcase = name.downcase
name_upcase = name.upcase
name_first_big = name.capitalize
Ignore.exists?(name: name_downcase) || Ignore.exists?(name: name_upcase) || Ignore.exists?(name: name_first_big)
end
# def check_ignore_present?(name)
# return true if name.blank?
# name_downcase = name.downcase
# name_upcase = name.upcase
# name_first_big = name.capitalize
# Ignore.exists?(name: name_downcase) || Ignore.exists?(name: name_upcase) || Ignore.exists?(name: name_first_big)
# end
end

View File

@ -27,17 +27,18 @@ class Admins::ProjectLanguagesController < Admins::BaseController
flash[:success] = '创建成功'
else
redirect_to admins_project_languages_path
flash[:danger] = '创建失败'
flash[:danger] = @project_language.errors.full_messages.join(",")
end
end
def update
if @project_language.update_attribute(:name, @name)
@project_language.attributes = {name: @name}
if @project_language.save
redirect_to admins_project_languages_path
flash[:success] = '更新成功'
else
redirect_to admins_project_languages_path
flash[:success] = '更新失败'
flash[:danger] = @project_language.errors.full_messages.join(",")
end
end

View File

@ -1,6 +1,6 @@
class Admins::ProjectLicensesController < Admins::BaseController
before_action :set_license, only: [:edit,:update, :destroy,:show]
before_action :validate_params, only: [:create, :update]
# before_action :validate_params, only: [:create, :update]
def index
sort_by = License.column_names.include?(params[:sort_by]) ? params[:sort_by] : 'created_at'
@ -30,13 +30,12 @@ class Admins::ProjectLicensesController < Admins::BaseController
# position: max_position
# }
@project_license = License.new(license_params)
if @project_license.save!
if @project_license.save
redirect_to admins_project_licenses_path
flash[:success] = "创建成功"
else
render :new
flash[:danger] = "创建失败"
redirect_to admins_project_licenses_path
flash[:danger] = @project_license.errors.full_messages.join(",")
end
end
@ -54,12 +53,13 @@ class Admins::ProjectLicensesController < Admins::BaseController
# permissions: permissions.to_s,
# limitations: limitations.to_s
# }
if @project_license.update_attributes(license_params)
@project_license.attributes = license_params
if @project_license.save
redirect_to admins_project_licenses_path
flash[:success] = "更新成功"
else
render :edit
flash[:danger] = "更新失败"
render admins_project_licenses_path
flash[:danger] = @project_license.errors.full_messages.join(",")
end
end
@ -98,23 +98,23 @@ class Admins::ProjectLicensesController < Admins::BaseController
params.require(:license).permit(:name,:content)
end
def validate_params
name = params[:license][:name]
if name.blank?
flash[:danger] = "名称不允许为空"
redirect_to admins_project_licenses_path
elsif check_license_present?(name) && @project_license.blank?
flash[:danger] = "创建失败:名称已存在"
redirect_to admins_project_licenses_path
end
end
# def validate_params
# name = params[:license][:name]
# if name.blank?
# flash[:danger] = "名称不允许为空"
# redirect_to admins_project_licenses_path
# elsif check_license_present?(name) && @project_license.blank?
# flash[:danger] = "创建失败:名称已存在"
# redirect_to admins_project_licenses_path
# end
# end
def check_license_present?(name)
return true if name.blank?
name_downcase = name.downcase
name_upcase = name.upcase
name_first_big = name.capitalize
License.exists?(name: name_downcase) || License.exists?(name: name_upcase) || License.exists?(name: name_first_big)
end
# def check_license_present?(name)
# return true if name.blank?
# name_downcase = name.downcase
# name_upcase = name.upcase
# name_first_big = name.capitalize
# License.exists?(name: name_downcase) || License.exists?(name: name_upcase) || License.exists?(name: name_first_big)
# end
end

View File

@ -0,0 +1,16 @@
class Admins::ProjectsRankController < Admins::BaseController
def index
@rank_date = rank_date
deleted_data = $redis_cache.smembers("v2-project-rank-deleted")
$redis_cache.zrem("v2-project-rank-#{rank_date}", deleted_data) unless deleted_data.blank?
@date_rank = $redis_cache.zrevrange("v2-project-rank-#{rank_date}", 0, -1, withscores: true)
end
private
def rank_date
params.fetch(:date, Date.today.to_s)
end
end

View File

@ -0,0 +1,57 @@
class Admins::Topic::ActivityForumsController < Admins::Topic::BaseController
before_action :find_activity_forum, only: [:edit, :update, :destroy]
def index
q = ::Topic::ActivityForum.ransack(title_cont: params[:search])
activity_forums = q.result(distinct: true)
@activity_forums = paginate(activity_forums)
end
def new
@activity_forum = ::Topic::ActivityForum.new
end
def create
@activity_forum = ::Topic::ActivityForum.new(activity_forum_params)
if @activity_forum.save
redirect_to admins_topic_activity_forums_path
flash[:success] = "新增平台动态成功"
else
redirect_to admins_topic_activity_forums_path
flash[:danger] = "新增平台动态失败"
end
end
def edit
end
def update
@activity_forum.attributes = activity_forum_params
if @activity_forum.save
redirect_to admins_topic_activity_forums_path
flash[:success] = "更新平台动态成功"
else
redirect_to admins_topic_activity_forums_path
flash[:danger] = "更新平台动态失败"
end
end
def destroy
if @activity_forum.destroy
redirect_to admins_topic_activity_forums_path
flash[:success] = "删除平台动态成功"
else
redirect_to admins_topic_activity_forums_path
flash[:danger] = "删除平台动态失败"
end
end
private
def find_activity_forum
@activity_forum = ::Topic::ActivityForum.find_by_id(params[:id])
end
def activity_forum_params
params.require(:topic_activity_forum).permit(:title, :uuid, :url, :order_index)
end
end

View File

@ -0,0 +1,58 @@
class Admins::Topic::BannersController < Admins::Topic::BaseController
before_action :find_banner, only: [:edit, :update, :destroy]
def index
@banners = paginate(::Topic::Banner)
@banners = paginate(::Topic::Banner.where("title like ?", "%#{params[:search]}%")) if params[:search].present?
end
def new
@banner = ::Topic::Banner.new
end
def create
@banner = ::Topic::Banner.new(banner_params)
if @banner.save
save_image_file(params[:image], @banner)
redirect_to admins_topic_banners_path
flash[:success] = "新增banner成功"
else
redirect_to admins_topic_banners_path
flash[:danger] = "新增banner失败"
end
end
def edit
end
def update
@banner.attributes = banner_params
if @banner.save
save_image_file(params[:image], @banner)
redirect_to admins_topic_banners_path
flash[:success] = "更新banner成功"
else
redirect_to admins_topic_banners_path
flash[:danger] = "更新banner失败"
end
end
def destroy
if @banner.destroy
redirect_to admins_topic_banners_path
flash[:success] = "删除banner成功"
else
redirect_to admins_topic_banners_path
flash[:danger] = "删除banner失败"
end
end
private
def find_banner
@banner = ::Topic::Banner.find_by_id(params[:id])
end
def banner_params
params.require(:topic_banner).permit(:title, :order_index, :url)
end
end

View File

@ -0,0 +1,11 @@
class Admins::Topic::BaseController < Admins::BaseController
protected
def save_image_file(file, topic)
return unless file.present? && file.is_a?(ActionDispatch::Http::UploadedFile)
file_path = Util::FileManage.source_disk_filename(topic, 'image')
File.delete(file_path) if File.exist?(file_path) # 删除之前的文件
Util.write_file(file, file_path)
end
end

View File

@ -0,0 +1,57 @@
class Admins::Topic::CardsController < Admins::Topic::BaseController
before_action :find_card, only: [:edit, :update, :destroy]
def index
q = ::Topic::Card.ransack(title_cont: params[:search])
cards = q.result(distinct: true)
@cards = paginate(cards)
end
def new
@card = ::Topic::Card.new
end
def create
@card = ::Topic::Card.new(card_params)
if @card.save
redirect_to admins_topic_cards_path
flash[:success] = "新增合作单位成功"
else
redirect_to admins_topic_cards_path
flash[:danger] = "新增合作单位失败"
end
end
def edit
end
def update
@card.attributes = card_params
if @card.save
redirect_to admins_topic_cards_path
flash[:success] = "更新合作单位成功"
else
redirect_to admins_topic_cards_path
flash[:danger] = "更新合作单位失败"
end
end
def destroy
if @card.destroy
redirect_to admins_topic_cards_path
flash[:success] = "删除合作单位成功"
else
redirect_to admins_topic_cards_path
flash[:danger] = "删除合作单位失败"
end
end
private
def find_card
@card = ::Topic::Card.find_by_id(params[:id])
end
def card_params
params.require(:topic_card).permit(:title, :url, :order_index)
end
end

View File

@ -0,0 +1,57 @@
class Admins::Topic::CooperatorsController < Admins::Topic::BaseController
before_action :find_cooperator, only: [:edit, :update, :destroy]
def index
@cooperators = paginate(::Topic::Cooperator)
end
def new
@cooperator = ::Topic::Cooperator.new
end
def create
@cooperator = ::Topic::Cooperator.new(cooperator_params)
if @cooperator.save
save_image_file(params[:image], @cooperator)
redirect_to admins_topic_cooperators_path
flash[:success] = "新增合作单位成功"
else
redirect_to admins_topic_cooperators_path
flash[:danger] = "新增合作单位失败"
end
end
def edit
end
def update
@cooperator.attributes = cooperator_params
if @cooperator.save
save_image_file(params[:image], @cooperator)
redirect_to admins_topic_cooperators_path
flash[:success] = "更新合作单位成功"
else
redirect_to admins_topic_cooperators_path
flash[:danger] = "更新合作单位失败"
end
end
def destroy
if @cooperator.destroy
redirect_to admins_topic_cooperators_path
flash[:success] = "删除合作单位成功"
else
redirect_to admins_topic_cooperators_path
flash[:danger] = "删除合作单位失败"
end
end
private
def find_cooperator
@cooperator = ::Topic::Cooperator.find_by_id(params[:id])
end
def cooperator_params
params.require(:topic_cooperator).permit(:title, :url, :order_index)
end
end

View File

@ -0,0 +1,57 @@
class Admins::Topic::ExcellentProjectsController < Admins::Topic::BaseController
before_action :find_excellent_project, only: [:edit, :update, :destroy]
def index
q = ::Topic::ExcellentProject.ransack(title_cont: params[:search])
excellent_projects = q.result(distinct: true)
@excellent_projects = paginate(excellent_projects)
end
def new
@excellent_project = ::Topic::ExcellentProject.new
end
def create
@excellent_project = ::Topic::ExcellentProject.new(excellent_project_params)
if @excellent_project.save
redirect_to admins_topic_excellent_projects_path
flash[:success] = "新增优秀仓库成功"
else
redirect_to admins_topic_excellent_projects_path
flash[:danger] = "新增优秀仓库失败"
end
end
def edit
end
def update
@excellent_project.attributes = excellent_project_params
if @excellent_project.save
redirect_to admins_topic_excellent_projects_path
flash[:success] = "更新优秀仓库成功"
else
redirect_to admins_topic_excellent_projects_path
flash[:danger] = "更新优秀仓库失败"
end
end
def destroy
if @excellent_project.destroy
redirect_to admins_topic_excellent_projects_path
flash[:success] = "删除优秀仓库成功"
else
redirect_to admins_topic_excellent_projects_path
flash[:danger] = "删除优秀仓库失败"
end
end
private
def find_excellent_project
@excellent_project = ::Topic::ExcellentProject.find_by_id(params[:id])
end
def excellent_project_params
params.require(:topic_excellent_project).permit(:title, :uuid, :url, :order_index)
end
end

View File

@ -0,0 +1,57 @@
class Admins::Topic::ExperienceForumsController < Admins::Topic::BaseController
before_action :find_experience_forum, only: [:edit, :update, :destroy]
def index
q = ::Topic::ExperienceForum.ransack(title_cont: params[:search])
experience_forums = q.result(distinct: true)
@experience_forums = paginate(experience_forums)
end
def new
@experience_forum = ::Topic::ExperienceForum.new
end
def create
@experience_forum = ::Topic::ExperienceForum.new(experience_forum_params)
if @experience_forum.save
redirect_to admins_topic_experience_forums_path
flash[:success] = "新增经验分享成功"
else
redirect_to admins_topic_experience_forums_path
flash[:danger] = "新增经验分享失败"
end
end
def edit
end
def update
@experience_forum.attributes = experience_forum_params
if @experience_forum.save
redirect_to admins_topic_experience_forums_path
flash[:success] = "更新经验分享成功"
else
redirect_to admins_topic_experience_forums_path
flash[:danger] = "更新经验分享失败"
end
end
def destroy
if @experience_forum.destroy
redirect_to admins_topic_experience_forums_path
flash[:success] = "删除经验分享成功"
else
redirect_to admins_topic_experience_forums_path
flash[:danger] = "删除经验分享失败"
end
end
private
def find_experience_forum
@experience_forum = ::Topic::ExperienceForum.find_by_id(params[:id])
end
def experience_forum_params
params.require(:topic_experience_forum).permit(:title, :uuid, :url, :order_index)
end
end

View File

@ -0,0 +1,57 @@
class Admins::Topic::GlccNewsController < Admins::Topic::BaseController
before_action :find_glcc, only: [:edit, :update, :destroy]
def index
q = ::Topic::GlccNews.ransack(title_cont: params[:search])
glcc_news = q.result(distinct: true)
@glcc_news = paginate(glcc_news)
end
def new
@glcc = ::Topic::GlccNews.new
end
def create
@glcc = ::Topic::GlccNews.new(glcc_params)
if @glcc.save
redirect_to admins_topic_glcc_news_index_path
flash[:success] = "新增新闻稿成功"
else
redirect_to admins_topic_glcc_news_index_path
flash[:danger] = "新增新闻稿失败"
end
end
def edit
end
def update
@glcc.attributes = glcc_params
if @glcc.save
redirect_to admins_topic_glcc_news_index_path
flash[:success] = "更新新闻稿成功"
else
redirect_to admins_topic_glcc_news_index_path
flash[:danger] = "更新新闻稿失败"
end
end
def destroy
if @glcc.destroy
redirect_to admins_topic_glcc_news_index_path
flash[:success] = "删除新闻稿成功"
else
redirect_to admins_topic_glcc_news_index_path
flash[:danger] = "删除新闻稿失败"
end
end
private
def find_glcc
@glcc = ::Topic::GlccNews.find_by_id(params[:id])
end
def glcc_params
params.require(:topic_glcc_news).permit(:title, :uuid, :url, :order_index)
end
end

View File

@ -0,0 +1,57 @@
class Admins::Topic::PinnedForumsController < Admins::Topic::BaseController
before_action :find_pinned_forum, only: [:edit, :update, :destroy]
def index
q = ::Topic::PinnedForum.ransack(title_cont: params[:search])
pinned_forums = q.result(distinct: true)
@pinned_forums = paginate(pinned_forums)
end
def new
@pinned_forum = ::Topic::PinnedForum.new
end
def create
@pinned_forum = ::Topic::PinnedForum.new(pinned_forum_params)
if @pinned_forum.save
redirect_to admins_topic_pinned_forums_path
flash[:success] = "新增精选文章成功"
else
redirect_to admins_topic_pinned_forums_path
flash[:danger] = "新增精选文章失败"
end
end
def edit
end
def update
@pinned_forum.attributes = pinned_forum_params
if @pinned_forum.save
redirect_to admins_topic_pinned_forums_path
flash[:success] = "更新精选文章成功"
else
redirect_to admins_topic_pinned_forums_path
flash[:danger] = "更新精选文章失败"
end
end
def destroy
if @pinned_forum.destroy
redirect_to admins_topic_pinned_forums_path
flash[:success] = "删除精选文章成功"
else
redirect_to admins_topic_pinned_forums_path
flash[:danger] = "删除精选文章失败"
end
end
private
def find_pinned_forum
@pinned_forum = ::Topic::PinnedForum.find_by_id(params[:id])
end
def pinned_forum_params
params.require(:topic_pinned_forum).permit(:title, :uuid, :url, :order_index)
end
end

View File

@ -57,6 +57,12 @@ class Admins::UsersController < Admins::BaseController
render_ok
end
def fresh_gitea_token
@user.fresh_gitea_token
render_ok
end
private
def finder_user
@ -64,8 +70,8 @@ class Admins::UsersController < Admins::BaseController
end
def update_params
params.require(:user).permit(%i[lastname nickname gender identity technical_title student_id is_shixun_marker
mail phone location location_city school_id department_id admin business is_test
password professional_certification authentication login])
params.require(:user).permit(%i[lastname nickname gender technical_title is_shixun_marker
mail phone location location_city school_id department_id admin
password login])
end
end

View File

@ -0,0 +1,15 @@
class Admins::UsersRankController < Admins::BaseController
def index
@rank_date = rank_date
@date_rank = $redis_cache.zrevrange("v2-user-rank-#{rank_date}", 0, -1, withscores: true)
end
private
def rank_date
params.fetch(:date, Date.today.to_s)
end
end

View File

@ -0,0 +1,63 @@
class Api::V1::BaseController < ApplicationController
include Api::ProjectHelper
include Api::UserHelper
include Api::PullHelper
# before_action :doorkeeper_authorize!
# skip_before_action :user_setup
protected
# def current_user
# #client方法对接需要一直带着用户标识uid
# Rails.logger.info doorkeeper_token
# if doorkeeper_token && doorkeeper_token.resource_owner_id.blank?
# # return User.anonymous if params[:uid].nil?
# # tip_exception("2222")
# # return render_error('缺少用户标识!') if params[:uid].nil?
# User.current = User.find(params[:uid])
# else
# User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token
# end
# end
def kaminary_select_paginate(relation)
limit = params[:limit] || params[:per_page]
limit = (limit.to_i.zero? || limit.to_i > 200) ? 200 : limit.to_i
page = params[:page].to_i.zero? ? 1 : params[:page].to_i
relation.page(page).per(limit)
end
def limit
params.fetch(:limit, 15)
end
def page
params.fetch(:page, 1)
end
# 具有对仓库的管理权限
def require_manager_above
@project = load_project
return render_forbidden if !current_user.admin? && !@project.manager?(current_user)
end
# 具有对仓库的操作权限
def require_operate_above
@project = load_project
return render_forbidden if !current_user.admin? && !@project.operator?(current_user)
end
# 具有仓库的操作权限或者fork仓库的操作权限
def require_operate_above_or_fork_project
@project = load_project
return render_forbidden if !current_user.admin? && !@project.operator?(current_user) && !(@project.fork_project.present? && @project.fork_project.operator?(current_user))
end
# 具有对仓库的访问权限
def require_public_and_member_above
@project = load_project
return render_forbidden if !@project.is_public && !current_user.admin? && !@project.member?(current_user)
end
end

View File

@ -0,0 +1,12 @@
class Api::V1::Issues::AssignersController < Api::V1::BaseController
before_action :require_public_and_member_above, only: [:index]
# 负责人列表
def index
@assigners = User.joins(assigned_issues: :project).where(projects: {id: @project&.id})
@assigners = @assigners.order("users.id=#{current_user.id} desc").distinct
@assigners = @assigners.ransack(login_or_nickname_cont: params[:keyword]).result if params[:keyword].present?
@assigners = kaminary_select_paginate(@assigners)
end
end

View File

@ -0,0 +1,11 @@
class Api::V1::Issues::AuthorsController < Api::V1::BaseController
before_action :require_public_and_member_above, only: [:index]
# 发布人列表
def index
@authors = User.joins(issues: :project).where(projects: {id: @project&.id})
@authors = @authors.order("users.id=#{current_user.id} desc").distinct
@authors = @authors.ransack(login_or_nickname_cont: params[:keyword]).result if params[:keyword].present?
@authors = kaminary_select_paginate(@authors)
end
end

View File

@ -0,0 +1,10 @@
class Api::V1::Issues::IssuePrioritiesController < Api::V1::BaseController
before_action :require_public_and_member_above, only: [:index]
def index
@priorities = IssuePriority.order(position: :asc)
@priorities = @priorities.ransack(name_cont: params[:keyword]).result if params[:keyword]
@priorities = kaminary_select_paginate(@priorities)
end
end

View File

@ -0,0 +1,65 @@
class Api::V1::Issues::IssueTagsController < Api::V1::BaseController
before_action :require_login, except: [:index]
before_action :require_public_and_member_above, only: [:index]
before_action :require_operate_above, only: [:create, :update, :destroy]
def index
@issue_tags = @project.issue_tags.reorder("#{sort_by} #{sort_direction}")
@issue_tags = @issue_tags.ransack(name_cont: params[:keyword]).result if params[:keyword].present?
if params[:only_name]
@issue_tags = kaminary_select_paginate(@issue_tags.select(:id, :name, :color))
else
@issue_tags = kaminari_paginate(@issue_tags.includes(:project, :user, :issue_issues, :pull_request_issues))
end
end
def create
@issue_tag = @project.issue_tags.new(issue_tag_params)
if @issue_tag.save!
render_ok
else
render_error("创建标记失败!")
end
end
before_action :load_issue_tag, only: [:update, :destroy]
def update
@issue_tag.attributes = issue_tag_params
if @issue_tag.save!
render_ok
else
render_error("更新标记失败!")
end
end
def destroy
if @issue_tag.destroy!
render_ok
else
render_error("删除标记失败!")
end
end
private
def sort_by
sort_by = params.fetch(:sort_by, "created_at")
sort_by = IssueTag.column_names.include?(sort_by) ? sort_by : "created_at"
sort_by
end
def sort_direction
sort_direction = params.fetch(:sort_direction, "desc").downcase
sort_direction = %w(desc asc).include?(sort_direction) ? sort_direction : "desc"
sort_direction
end
def issue_tag_params
params.permit(:name, :description, :color)
end
def load_issue_tag
@issue_tag = @project.issue_tags.find_by_id(params[:id])
end
end

View File

@ -0,0 +1,64 @@
class Api::V1::Issues::JournalsController < Api::V1::BaseController
before_action :require_login, except: [:index, :children_journals]
before_action :require_public_and_member_above
before_action :load_issue
before_action :load_journal, only: [:children_journals, :update, :destroy]
before_action :check_journal_operate_permission, only: [:update, :destroy]
def index
@object_result = Api::V1::Issues::Journals::ListService.call(@issue, query_params, current_user)
@total_journals_count = @object_result[:total_journals_count]
@total_operate_journals_count = @object_result[:total_operate_journals_count]
@total_comment_journals_count = @object_result[:total_comment_journals_count]
@journals = kaminary_select_paginate(@object_result[:data])
end
def create
@object_result = Api::V1::Issues::Journals::CreateService.call(@issue, journal_params, current_user)
end
def children_journals
@object_results = Api::V1::Issues::Journals::ChildrenListService.call(@issue, @journal, query_params, current_user)
@journals = kaminari_paginate(@object_results)
end
def update
@object_result = Api::V1::Issues::Journals::UpdateService.call(@issue, @journal, journal_params, current_user)
end
def destroy
TouchWebhookJob.set(wait: 5.seconds).perform_later('IssueComment', @issue&.id, current_user.id, @journal.id, 'deleted', JSON.parse(@journal.to_builder.target!))
if @journal.destroy!
render_ok
else
render_error("删除评论失败!")
end
end
private
def query_params
params.permit(:category, :keyword, :sort_by, :sort_direction)
end
def journal_params
params.permit(:notes, :parent_id, :reply_id, :attachment_ids => [], :receivers_login => [])
end
def load_issue
@issue = @project.issues.issue_issue.where(project_issues_index: params[:index]).where.not(id: params[:index]).take || Issue.find_by_id(params[:index])
if @issue.blank?
render_not_found("疑修不存在!")
end
end
def load_journal
@journal = Journal.find_by_id(params[:id])
return render_not_found("评论不存在!") unless @journal.present?
end
def check_journal_operate_permission
return render_forbidden("您没有操作权限!") unless @project.member?(current_user) || current_user.admin? || @issue.user == current_user || @journal.user == current_user || @journal.parent_journal&.user == current_user
end
end

View File

@ -0,0 +1,87 @@
class Api::V1::Issues::MilestonesController < Api::V1::BaseController
before_action :require_login, except: [:index, :show]
before_action :require_public_and_member_above, only: [:index, :show]
before_action :require_operate_above, only: [:create, :update, :destroy]
before_action :load_milestone, only: [:show, :update, :destroy]
# 里程碑列表
def index
@milestones = @project.versions
@milestones = @milestones.ransack(id_eq: params[:keyword]).result.or(@milestones.ransack(name_or_description_cont: params[:keyword]).result) if params[:keyword].present?
@closed_milestone_count = @milestones.closed.size
@opening_milestone_count = @milestones.opening.size
@milestones = params[:category] == "closed" ? @milestones.closed : @milestones.opening
@milestones = @milestones.reorder("versions.#{sort_by} #{sort_direction}")
if params[:only_name]
@milestones = @milestones.select(:id, :name)
@milestones = kaminary_select_paginate(@milestones)
else
@milestones = @milestones.includes(:issues, :closed_issues, :opened_issues)
@milestones = kaminari_paginate(@milestones)
end
end
def create
@milestone = @project.versions.new(milestone_params)
if @milestone.save!
render_ok
else
render_error(@milestone.errors.full_messages.join(","))
end
end
# 里程碑详情
def show
@object_result = Api::V1::Issues::Milestones::DetailIssuesService.call(@project, @milestone, query_params, current_user)
@total_issues_count = @object_result[:total_issues_count]
@opened_issues_count = @object_result[:opened_issues_count]
@closed_issues_count = @object_result[:closed_issues_count]
@issues = kaminari_paginate(@object_result[:data])
end
def update
@milestone.attributes = milestone_params
if @milestone.save!
render_ok
else
render_error(@milestone.errors.full_messages.join(","))
end
end
def destroy
if @milestone.destroy!
render_ok
else
render_error("删除里程碑失败!")
end
end
private
def milestone_params
params.permit(:name, :description, :effective_date)
end
def query_params
params.permit(:category, :author_id, :assigner_id, :sort_by, :sort_direction, :issue_tag_ids)
end
def load_milestone
@milestone = @project.versions.find_by_id(params[:id])
return render_not_found('里程碑不存在!') unless @milestone.present?
end
def sort_by
sort_by = params.fetch(:sort_by, "created_on")
sort_by = Version.column_names.include?(sort_by) ? sort_by : "created_on"
sort_by
end
def sort_direction
sort_direction = params.fetch(:sort_direction, "desc").downcase
sort_direction = %w(desc asc).include?(sort_direction) ? sort_direction : "desc"
sort_direction
end
end

View File

@ -0,0 +1,11 @@
class Api::V1::Issues::StatuesController < Api::V1::BaseController
before_action :require_public_and_member_above, only: [:index]
# 状态列表
def index
@statues = IssueStatus.order("position asc")
@statues = @statues.ransack(name_cont: params[:keyword]).result if params[:keyword].present?
@statues = kaminary_select_paginate(@statues)
end
end

View File

@ -0,0 +1,116 @@
class Api::V1::IssuesController < Api::V1::BaseController
before_action :require_login, except: [:index, :show]
before_action :require_public_and_member_above, only: [:index, :show, :create, :update, :destroy]
before_action :require_operate_above, only: [:batch_update, :batch_destroy]
def index
IssueTag.init_data(@project.id) unless $redis_cache.hget("project_init_issue_tags", @project.id)
@object_result = Api::V1::Issues::ListService.call(@project, query_params, current_user)
@total_issues_count = @object_result[:total_issues_count]
@opened_issues_count = @object_result[:opened_issues_count]
@closed_issues_count = @object_result[:closed_issues_count]
if params[:only_name].present?
@issues = kaminary_select_paginate(@object_result[:data].select(:id, :subject, :project_issues_index, :updated_on, :created_on))
else
@issues = kaminari_paginate(@object_result[:data])
end
end
def create
@object_result = Api::V1::Issues::CreateService.call(@project, issue_params, current_user)
end
before_action :load_issue, only: [:show, :update, :destroy]
before_action :check_issue_operate_permission, only: [:update, :destroy]
def show
@user_permission = current_user.present? && current_user.logged? && (@project.member?(current_user) || current_user.admin? || @issue.user == current_user)
end
def update
@object_result = Api::V1::Issues::UpdateService.call(@project, @issue, issue_params, current_user)
end
def destroy
@object_result = Api::V1::Issues::DeleteService.call(@project, @issue, current_user)
if @object_result
render_ok
else
render_error("删除疑修失败!")
end
end
before_action :load_issues, only: [:batch_update, :batch_destroy]
def batch_update
@object_result = Api::V1::Issues::BatchUpdateService.call(@project, @issues, batch_issue_params, current_user)
if @object_result
render_ok
else
render_error("批量更新疑修失败!")
end
end
def batch_destroy
@object_result = Api::V1::Issues::BatchDeleteService.call(@project, @issues, current_user)
if @object_result
render_ok
else
render_error("批量删除疑修失败!")
end
end
private
def load_issue
@issue = @project.issues.issue_issue.where(project_issues_index: params[:index]).where.not(id: params[:index]).take || Issue.find_by_id(params[:index])
if @issue.blank?
render_not_found("疑修不存在!")
end
end
def load_issues
return render_error("请输入正确的ID数组") unless params[:ids].is_a?(Array)
params[:ids].each do |id|
@issue = Issue.find_by_id(id)
if @issue.blank?
return render_not_found("ID为#{id}的疑修不存在!")
end
end
@issues = Issue.where(id: params[:ids])
end
def check_issue_operate_permission
return render_forbidden("您没有操作权限!") unless @project.member?(current_user) || current_user.admin? || @issue.user == current_user
end
def query_params
params.permit(
:category,
:participant_category,
:keyword, :author_id,
:milestone_id, :assigner_id,
:status_id,
:begin_date, :end_date,
:sort_by, :sort_direction,
:issue_tag_ids)
end
def issue_params
params.permit(
:status_id, :priority_id, :milestone_id,
:branch_name, :start_date, :due_date,
:subject, :description,
:issue_tag_ids => [],
:assigner_ids => [],
:attachment_ids => [],
:receivers_login => [])
end
def batch_issue_params
params.permit(
:status_id, :priority_id, :milestone_id,
:issue_tag_ids => [],
:assigner_ids => [])
end
end

View File

@ -0,0 +1,46 @@
class Api::V1::ProjectTopicsController < Api::V1::BaseController
def index
@project_topics = ProjectTopic
@project_topics = @project_topics.ransack(name_cont: params[:keyword]) if params[:keyword].present?
# @project_topics = @project_topics.includes(:projects)
@project_topics = kaminary_select_paginate(@project_topics)
end
def create
ActiveRecord::Base.transaction do
@project = Project.find_by_id(create_params[:project_id])
return render_not_found unless @project.present?
return render_error("请输入项目搜索标签名称.") unless create_params[:name].present?
@project_topic = ProjectTopic.find_or_create_by!(name: create_params[:name].downcase)
@project_topic_ralate = @project_topic.project_topic_ralates.find_or_create_by!(project_id: create_params[:project_id])
if @project_topic.present? && @project_topic_ralate.present?
render_ok
else
render_error("项目关联搜索标签失败.")
end
end
end
def destroy
ActiveRecord::Base.transaction do
@project = Project.find_by_id(create_params[:project_id])
return render_not_found unless @project.present?
@project_topic = ProjectTopic.find_by_id(params[:id])
@project_topic_ralate = @project_topic.project_topic_ralates.find_by(project_id: @project.id)
if @project_topic_ralate.destroy!
render_ok
else
render_error("项目取消关联搜索标签失败.")
end
end
end
private
def create_params
params.permit(:project_id, :name)
end
end

View File

@ -0,0 +1,42 @@
class Api::V1::Projects::BranchesController < Api::V1::BaseController
before_action :require_public_and_member_above, only: [:index, :all]
def index
@result_object = Api::V1::Projects::Branches::ListService.call(@project, {name: params[:keyword], page: page, limit: limit}, current_user&.gitea_token)
end
def all
@result_object = Api::V1::Projects::Branches::AllListService.call(@project, current_user&.gitea_token)
end
before_action :require_operate_above, only: [:create, :destroy]
def create
@result_object = Api::V1::Projects::Branches::CreateService.call(@project, branch_params, current_user&.gitea_token)
end
def destroy
@result_object = Api::V1::Projects::Branches::DeleteService.call(@project, params[:name], current_user&.gitea_token)
if @result_object
return render_ok
else
return render_error('删除分支失败!')
end
end
before_action :require_manager_above, only: [:update_default_branch]
def update_default_branch
@result_object = Api::V1::Projects::Branches::UpdateDefaultBranchService.call(@project, params[:name], current_user&.gitea_token)
if @result_object
return render_ok
else
return render_error('更新默认分支失败!')
end
end
private
def branch_params
params.require(:branch).permit(:new_branch_name, :old_branch_name)
end
end

View File

@ -0,0 +1,8 @@
class Api::V1::Projects::CodeStatsController < Api::V1::BaseController
before_action :require_public_and_member_above, only: [:index]
def index
@result_object = Api::V1::Projects::CodeStats::ListService.call(@project, {ref: params[:ref]}, current_user&.gitea_token)
# puts @result_object
end
end

View File

@ -0,0 +1,10 @@
class Api::V1::Projects::CollaboratorsController < Api::V1::BaseController
before_action :require_public_and_member_above, only: [:index]
def index
@collaborators = @project.all_collaborators.like(params[:keyword])
@collaborators = kaminary_select_paginate(@collaborators)
end
end

View File

@ -0,0 +1,12 @@
class Api::V1::Projects::CommitsController < Api::V1::BaseController
before_action :require_public_and_member_above, only: [:index, :diff]
def index
@result_object = Api::V1::Projects::Commits::ListService.call(@project, {page: page, limit: limit, sha: params[:sha]}, current_user&.gitea_token)
puts @result_object
end
def diff
@result_object = Api::V1::Projects::Commits::DiffService.call(@project, params[:sha], current_user&.gitea_token)
end
end

View File

@ -0,0 +1,17 @@
class Api::V1::Projects::ContentsController < Api::V1::BaseController
before_action :require_operate_above_or_fork_project, only: [:batch]
def batch
@batch_content_params = batch_content_params
# 处理下author和committer信息如果没传则默认为当前用户信息
@batch_content_params.merge!(author_email: current_user.mail, author_name: current_user.login) if batch_content_params[:author_email].blank? && batch_content_params[:author_name].blank?
@batch_content_params.merge!(committer_email: current_user.mail, committer_name: current_user.login) if batch_content_params[:committer_email].blank? && batch_content_params[:committer_name].blank?
@result_object = Api::V1::Projects::Contents::BatchCreateService.call(@project, @batch_content_params, @project.owner.gitea_token)
end
private
def batch_content_params
params.require(:content).permit(:author_email, :author_name, :author_timeunix, :branch, :committer_email, :committer_name, :committer_timeunix, :message, :new_branch, files: [ :action_type, :content, :encoding, :file_path])
end
end

View File

@ -0,0 +1,11 @@
class Api::V1::Projects::ContributorsController < Api::V1::BaseController
before_action :require_public_and_member_above, only: [:index, :stat]
# todo
def index
end
def stat
@result_object = Api::V1::Projects::Contributors::StatService.call(@project, {branch: params[:branch], pass_year: params[:pass_year], page: page, limit: limit}, current_user&.gitea_token)
end
end

View File

@ -0,0 +1,12 @@
class Api::V1::Projects::GitController < Api::V1::BaseController
before_action :require_public_and_member_above, only: [:trees, :blobs]
def trees
@result_object = Api::V1::Projects::Git::TreesService.call(@project, params[:sha], {recursive: params[:recursive], page: page, limit: limit}, current_user&.gitea_token)
end
def blobs
@result_object = Api::V1::Projects::Git::BlobsService.call(@project, params[:sha], current_user&.gitea_token)
end
end

View File

@ -0,0 +1,5 @@
class Api::V1::Projects::Pulls::BaseController < Api::V1::BaseController
before_action :require_public_and_member_above
before_action :load_pull_request
end

View File

@ -0,0 +1,40 @@
class Api::V1::Projects::Pulls::JournalsController < Api::V1::Projects::Pulls::BaseController
def index
@journals = Api::V1::Projects::Pulls::Journals::ListService.call(@project, @pull_request, params, current_user)
@journals = @journals.limit(200)
end
def create
@journal = Api::V1::Projects::Pulls::Journals::CreateService.call(@project, @pull_request, create_params, current_user)
end
before_action :find_journal, only: [:update, :destroy]
def update
@journal = Api::V1::Projects::Pulls::Journals::UpdateService.call(@project, @pull_request, @journal, update_params, current_user)
end
def destroy
if @journal.destroy
render_ok
else
render_error("删除评论失败!")
end
end
private
def create_params
params.permit(:parent_id, :line_code, :note, :commit_id, :path, :type, :review_id, :diff => {})
end
def update_params
params.permit(:note, :commit_id, :state)
end
def find_journal
@journal = @pull_request.journals.find_by_id(params[:id])
return render_not_found unless @journal.present?
end
end

View File

@ -0,0 +1,20 @@
class Api::V1::Projects::Pulls::PullsController < Api::V1::BaseController
before_action :require_public_and_member_above
def index
@pulls = Api::V1::Projects::Pulls::ListService.call(@project, query_params)
@pulls = kaminari_paginate(@pulls)
end
before_action :load_pull_request, only: [:show]
def show
@result_object = Api::V1::Projects::Pulls::GetService.call(@project, @pull_request, current_user&.gitea_token)
@last_review = @pull_request.reviews.order(created_at: :desc).take
end
private
def query_params
params.permit(:status, :keyword, :priority_id, :issue_tag_id, :version_id, :reviewer_id, :sort_by, :sort_direction)
end
end

View File

@ -0,0 +1,23 @@
class Api::V1::Projects::Pulls::ReviewsController < Api::V1::Projects::Pulls::BaseController
def index
@reviews = @pull_request.reviews
@reviews = @reviews.where(status: params[:status]) if params[:status].present?
# @reviews = kaminari_paginate(@reviews)
end
before_action :require_reviewer, only: [:create]
def create
@review = Api::V1::Projects::Pulls::Reviews::CreateService.call(@project, @pull_request, review_params, current_user)
end
private
def require_reviewer
return render_forbidden('您没有审查权限,请联系项目管理员') if !current_user.admin? && !@pull_request.reviewers.exists?(current_user.id) && !@project.manager?(current_user)
end
def review_params
params.require(:review).permit(:content, :commit_id, :status)
end
end

View File

@ -0,0 +1,10 @@
class Api::V1::Projects::Pulls::VersionsController < Api::V1::Projects::Pulls::BaseController
def index
@result_object = Api::V1::Projects::Pulls::Versions::ListService.call(@project, @pull_request, {page: page, limit: limit}, current_user&.gitea_token)
end
def diff
@result_object = Api::V1::Projects::Pulls::Versions::GetDiffService.call(@project, @pull_request, params[:id], {filepath: params[:filepath]}, current_user&.gitea_token)
end
end

View File

@ -0,0 +1,20 @@
class Api::V1::Projects::TagsController < Api::V1::BaseController
before_action :require_public_and_member_above, only: [:index]
def index
@release_tags = @repository.version_releases.pluck(:tag_name)
@result_object = Api::V1::Projects::Tags::ListService.call(@project, {page: page, limit: limit}, current_user&.gitea_token)
puts @result_object
end
before_action :require_operate_above, only: [:destroy]
def destroy
@result_object = Api::V1::Projects::Tags::DeleteService.call(@project, params[:name], current_user&.gitea_token)
if @result_object
return render_ok
else
return render_error('删除标签失败!')
end
end
end

View File

@ -0,0 +1,61 @@
class Api::V1::Projects::WebhooksController < Api::V1::BaseController
before_action :require_manager_above
before_action :find_webhook, only: [:show, :update, :destroy, :tests, :hooktasks]
def index
# @result_object = Api::V1::Projects::Webhooks::ListService.call(@project, current_user&.gitea_token)
@webhooks = @project.webhooks
@webhooks = @webhooks.where(type: params[:type]) if params[:type].present?
@webhooks = kaminari_paginate(@webhooks)
end
def create
return render_error("webhooks数量已到上限请删除暂不使用的webhooks以进行添加操作") if @project.webhooks.size > 49
@result_object = Api::V1::Projects::Webhooks::CreateService.call(@project, create_webhook_params, current_user&.gitea_token)
end
def show
@result_object = Api::V1::Projects::Webhooks::GetService.call(@project, params[:id], current_user&.gitea_token)
end
def update
@result_object = Api::V1::Projects::Webhooks::UpdateService.call(@project, params[:id], webhook_params, current_user&.gitea_token)
end
def destroy
@result_object = Api::V1::Projects::Webhooks::DeleteService.call(@project, params[:id], current_user&.gitea_token)
if @result_object
return render_ok
else
return render_error('删除失败!')
end
end
def tests
@result_object = Api::V1::Projects::Webhooks::TestsService.call(@project, params[:id], current_user&.gitea_token)
if @result_object
return render_ok
else
return render_error('推送失败!')
end
end
def hooktasks
@hooktasks = @webhook.tasks.where(is_delivered: true).order("delivered desc")
@hooktasks = kaminari_paginate(@hooktasks)
end
private
def create_webhook_params
params.require(:webhook).permit(:active, :branch_filter, :http_method, :url, :content_type, :secret, :type, events: [])
end
def webhook_params
params.require(:webhook).permit(:active, :branch_filter, :http_method, :url, :content_type, :secret, events: [])
end
def find_webhook
@webhook = Gitea::Webhook.find_by_id(params[:id])
return render_not_found unless @webhook.present?
end
end

View File

@ -0,0 +1,19 @@
class Api::V1::ProjectsController < Api::V1::BaseController
before_action :require_public_and_member_above, only: [:show, :compare, :blame]
def index
render_ok
end
def show
@result_object = Api::V1::Projects::GetService.call(@project, current_user.gitea_token)
end
def compare
@result_object = Api::V1::Projects::CompareService.call(@project, params[:from], params[:to], current_user&.gitea_token)
end
def blame
@result_object = Api::V1::Projects::BlameService.call(@project, params[:sha], params[:filepath], current_user&.gitea_token)
end
end

View File

@ -0,0 +1,16 @@
class Api::V1::Users::FeedbacksController < Api::V1::BaseController
before_action :load_observe_user
before_action :check_auth_for_observe_user
def create
@result = Api::V1::Users::Feedbacks::CreateService.call(@observe_user, feedback_params)
return render_error("反馈意见创建失败.") if @result.nil?
return render_ok
end
private
def feedback_params
params.permit(:content)
end
end

View File

@ -0,0 +1,13 @@
class Api::V1::Users::ProjectsController < Api::V1::BaseController
before_action :load_observe_user
def index
@object_results = Api::V1::Users::Projects::ListService.call(@observe_user, query_params, current_user)
@projects = kaminari_paginate(@object_results)
end
private
def query_params
params.permit(:category, :is_public, :project_type, :sort_by, :sort_direction, :search)
end
end

View File

@ -0,0 +1,118 @@
class Api::V1::UsersController < Api::V1::BaseController
before_action :load_observe_user, except: [:check_user_id]
before_action :check_auth_for_observe_user, except: [:check_user_id]
def check_user_id
return tip_exception(-1, "用户ID不存在") unless params[:user_id].present? && User.exists?(id: params[:user_id])
render_ok
end
def check_user_login
return tip_exception(-1, "用户标识不存在") unless params[:login].present? && User.exists?(login: params[:login])
render_ok
end
def send_email_vefify_code
code = %W(0 1 2 3 4 5 6 7 8 9)
verification_code = code.sample(6).join
mail = params[:email]
code_type = params[:code_type]
status, message = InfoRiskControlService.call(mail, request.remote_ip)
tip_exception(420, message) if status == 0
sign = Digest::MD5.hexdigest("#{OPENKEY}#{mail}")
Rails.logger.info sign
tip_exception(501, "请求不合理") if sign != params[:smscode]
# 60s内不能重复发送
# send_email_limit_cache_key = "send_email_60_second_limit:#{mail}"
# tip_exception(-2, '请勿频繁操作') if Rails.cache.exist?(send_email_limit_cache_key)
# send_email_control = LimitForbidControl::SendEmailCode.new(mail)
# tip_exception(-2, '邮件发送太频繁,请稍后再试') if send_email_control.forbid?
begin
UserMailer.update_email(mail, verification_code).deliver_now
# Rails.cache.write(send_email_limit_cache_key, 1, expires_in: 1.minute)
# send_email_control.increment!
rescue Exception => e
logger_error(e)
tip_exception(-2,"邮件发送失败,请稍后重试")
end
ver_params = {code_type: code_type, code: verification_code, email: mail}
last_code = VerificationCode.where(code_type: code_type, email: mail).last
last_code.update_attributes!({created_at: Time.current - 10.minute}) if last_code.present?
data = VerificationCode.new(ver_params)
if data.save!
render_ok
else
tip_exception(-1, "创建数据失败")
end
end
def check_password
password = params[:password]
return tip_exception(-5, "8~16位密码支持字母数字和符号") unless password =~ CustomRegexp::PASSWORD
return tip_exception(-5, "密码错误") unless @observe_user.check_password?(password)
render_ok
end
def check_email
mail = strip(params[:email])
return tip_exception(-2, "邮件格式有误") unless mail =~ CustomRegexp::EMAIL
exist_owner = Owner.find_by(mail: mail)
return tip_exception(-2, '邮箱已被使用') if exist_owner
render_ok
end
def check_email_verify_code
code = strip(params[:code])
mail = strip(params[:email])
code_type = params[:code_type]
return tip_exception(-2, "邮件格式有误") unless mail =~ CustomRegexp::EMAIL
verifi_code = VerificationCode.where(email: mail, code: code, code_type: code_type).last
return render_ok if code == "123123" && EduSetting.get("code_debug") # 万能验证码,用于测试 # TODO 万能验证码,用于测试
return tip_exception(-6, "验证码不正确") if verifi_code&.code != code
return tip_exception(-6, "验证码已失效") if !verifi_code&.effective?
render_ok
end
def check_phone_verify_code
code = strip(params[:code])
phone = strip(params[:phone])
code_type = params[:code_type]
return tip_exception(-2, "手机号格式有误") unless phone =~ CustomRegexp::PHONE
verifi_code = VerificationCode.where(phone: phone, code: code, code_type: code_type).last
return render_ok if code == "123123" && EduSetting.get("code_debug") # 万能验证码,用于测试 # TODO 万能验证码,用于测试
return tip_exception(-6, "验证码不正确") if verifi_code&.code != code
return tip_exception(-6, "验证码已失效") if !verifi_code&.effective?
render_ok
end
def update_email
@result_object = Api::V1::Users::UpdateEmailService.call(@observe_user, params, current_user.gitea_token)
if @result_object
return render_ok
else
return render_error('更改邮箱失败!')
end
end
def update_phone
@result_object = Api::V1::Users::UpdatePhoneService.call(@observe_user, params)
if @result_object
return render_ok
else
return render_error('更改手机号失败!')
end
end
end

View File

@ -1,4 +1,6 @@
require 'oauth2'
# require 'openssl'
# require 'jwt'
class ApplicationController < ActionController::Base
include CodeExample
@ -20,13 +22,14 @@ class ApplicationController < ActionController::Base
# TODO
# check sql query time
before_action do
if request.subdomain === 'testforgeplus' || request.subdomain === "profiler"
Rack::MiniProfiler.authorize_request
end
# if request.subdomain === 'testforgeplus' || request.subdomain === "profiler"
# Rack::MiniProfiler.authorize_request
# end
end
DCODES = %W(2 3 4 5 6 7 8 9 a b c f e f g h i j k l m n o p q r s t u v w x y z)
OPENKEY = "79e33abd4b6588941ab7622aed1e67e8"
OPENKEY = Rails.application.config_for(:configuration)['sign_key'] || "79e33abd4b6588941ab7622aed1e67e8"
helper_method :current_user, :base_url
@ -78,8 +81,7 @@ class ApplicationController < ActionController::Base
# 判断用户的邮箱或者手机是否可用
# params[:type] 1: 注册2忘记密码3绑定
def check_mail_and_phone_valid login, type
unless login =~ /^[a-zA-Z0-9]+([._\\]*[a-zA-Z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/ || login =~ /^1\d{10}$/ ||
login =~ /^[a-zA-Z0-9]+([._\\]*[a-zA-Z0-9])$/
unless login =~ /^[a-zA-Z0-9]+([._\\]*[a-zA-Z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/ || login =~ /^1\d{10}$/
tip_exception(-2, "请输入正确的手机号或邮箱")
end
@ -102,23 +104,30 @@ class ApplicationController < ActionController::Base
when 1, 2, 4, 9
# 手机类型的发送
sigle_para = {phone: value}
status = Gitlink::Sms.send(mobile: value, code: code)
tip_exception(-2, code_msg(status)) if status != 0
# status = Gitlink::Sms.send(mobile: value, code: code)
# tip_exception(-2, code_msg(status)) if status != 0
status = Sms::UcloudService.call(value, code, send_type)
tip_exception(-2, ucloud_code_msg(status)) if status != 0
when 8, 3, 5
# 邮箱类型的发送
sigle_para = {email: value}
# 60s内不能重复发送
send_email_limit_cache_key = "send_email_60_second_limit:#{value}"
tip_exception(-1, '请勿频繁操作') if Rails.cache.exist?(send_email_limit_cache_key)
# send_email_limit_cache_key = "send_email_60_second_limit:#{value}"
# tip_exception(-1, '请勿频繁操作') if Rails.cache.exist?(send_email_limit_cache_key)
# 短时间内不能大量发送
send_email_control = LimitForbidControl::SendEmailCode.new(value)
tip_exception(-1, '邮件发送太频繁,请稍后再试') if send_email_control.forbid?
# # 短时间内不能大量发送
# send_email_control = LimitForbidControl::SendEmailCode.new(value)
# tip_exception(-1, '邮件发送太频繁,请稍后再试') if send_email_control.forbid?
begin
UserMailer.register_email(value, code).deliver_now
Rails.cache.write(send_email_limit_cache_key, 1, expires_in: 1.minute)
send_email_control.increment!
if send_type == 3
UserMailer.find_password(value, code).deliver_now
elsif send_type == 5
UserMailer.bind_email(value, code).deliver_now
else
UserMailer.register_email(value, code).deliver_now
end
# Rails.cache.write(send_email_limit_cache_key, 1, expires_in: 1.minute)
# send_email_control.increment!
# Mailer.run.email_register(code, value)
rescue Exception => e
logger_error(e)
@ -148,6 +157,27 @@ class ApplicationController < ActionController::Base
end
end
def ucloud_code_msg status
case status
when 0
"验证码已经发送到您的手机,请注意查收"
when 171
"API签名错误"
when 18014
"无效手机号码"
when 18017
"无效模板"
when 18018
"短信模板参数与短信模板不匹配"
when 18023
"短信内容中含有运营商拦截的关键词"
when 18033
"变量内容不符合规范"
else
"错误码#{status}"
end
end
def validate_type(object_type)
normal_status(2, "参数") if params.has_key?(:sort_type) && !SORT_TYPE.include?(params[:sort_type].strip)
end
@ -169,7 +199,25 @@ class ApplicationController < ActionController::Base
# 未授权的捕捉407弹试用申请弹框
def require_login
#6.13 -hs
tip_exception(401, "请登录后再操作") unless User.current.logged?
end
def require_login_or_token
if params[:token].present?
user = User.try_to_autologin(params[:token])
User.current = user
end
tip_exception(401, "请登录后再操作") unless User.current.logged?
end
def require_login_cloud_ide_saas
if params[:sign].present? && params[:email].present?
sign = Digest::MD5.hexdigest("#{OPENKEY}#{params[:email]}")
if params[:sign].to_s == sign
user = User.find_by(mail: params[:email])
User.current = user
end
end
tip_exception(401, "请登录后再操作") unless User.current.logged?
end
@ -248,42 +296,64 @@ class ApplicationController < ActionController::Base
#return if params[:controller] == "main"
# Find the current user
#Rails.logger.info("current_laboratory is #{current_laboratory} domain is #{request.subdomain}")
User.current = find_current_user
uid_logger("user_setup: " + (User.current.logged? ? "#{User.current.try(:login)} (id=#{User.current.try(:id)})" : "anonymous"))
# 开放课程通过链接访问的用户
if !User.current.logged? && !params[:chinaoocTimestamp].blank? && !params[:websiteName].blank? && !params[:chinaoocKey].blank?
content = "#{OPENKEY}#{params[:websiteName]}#{params[:chinaoocTimestamp]}"
if Digest::MD5.hexdigest(content) == params[:chinaoocKey]
user = open_class_user
if user
start_user_session(user)
set_autologin_cookie(user)
if request.headers["Authorization"].present? && request.headers["Authorization"].start_with?('Bearer')
if !valid_doorkeeper_token?
header = request.authorization
pattern = /^Bearer /i
token = header.gsub(pattern, "")
User.current, message = Bot.decode_jwt_token(token)
tip_exception(401, message) if message.present?
else
if @doorkeeper_token.present?
# client方法对接需要一直带着用户标识uid
if @doorkeeper_token.resource_owner_id.blank?
tip_exception(-1, "缺少用户标识!") if params[:uid].nil?
User.current = User.find(params[:uid])
else
User.current = User.find_by(id: @doorkeeper_token.resource_owner_id)
end
end
end
else
User.current = find_current_user
uid_logger("user_setup: " + (User.current.logged? ? "#{User.current.try(:login)} (id=#{User.current.try(:id)})" : "anonymous"))
# 开放课程通过链接访问的用户
if !User.current.logged? && !params[:chinaoocTimestamp].blank? && !params[:websiteName].blank? && !params[:chinaoocKey].blank?
content = "#{OPENKEY}#{params[:websiteName]}#{params[:chinaoocTimestamp]}"
if Digest::MD5.hexdigest(content) == params[:chinaoocKey]
user = open_class_user
if user
start_user_session(user)
set_autologin_cookie(user)
end
User.current = user
end
end
if !User.current.logged? && Rails.env.development?
user = User.find 1
User.current = user
start_user_session(user)
end
# 测试版前端需求
logger.info("subdomain:#{request.subdomain}")
if request.subdomain != "www"
if params[:debug] == 'teacher' #todo 为了测试,记得讲debug删除
User.current = User.find 81403
elsif params[:debug] == 'student'
User.current = User.find 8686
elsif params[:debug] == 'admin'
logger.info "@@@@@@@@@@@@@@@@@@@@@@ debug mode....."
user = User.find 36480
User.current = user
cookies.signed[:user_id] = user.id
end
end
end
# if !User.current.logged? && Rails.env.development?
# User.current = User.find 1
# end
# 测试版前端需求
logger.info("subdomain:#{request.subdomain}")
# if request.subdomain != "www"
# if params[:debug] == 'teacher' #todo 为了测试,记得讲debug删除
# User.current = User.find 81403
# elsif params[:debug] == 'student'
# User.current = User.find 8686
# elsif params[:debug] == 'admin'
# logger.info "@@@@@@@@@@@@@@@@@@@@@@ debug mode....."
# user = User.find 36480
# User.current = user
# cookies.signed[:user_id] = user.id
# end
# end
# User.current = User.find 81403
end
@ -336,11 +406,6 @@ class ApplicationController < ActionController::Base
@message = message
end
# 实训等对应的仓库地址
def repo_ip_url(repo_path)
"#{edu_setting('git_address_ip')}/#{repo_path}"
end
def repo_url(repo_path)
"#{edu_setting('git_address_domain')}/#{repo_path}"
end
@ -609,7 +674,15 @@ class ApplicationController < ActionController::Base
def kaminari_paginate(relation)
limit = params[:limit] || params[:per_page]
limit = (limit.to_i.zero? || limit.to_i > 15) ? 15 : limit.to_i
limit = (limit.to_i.zero? || limit.to_i > 50) ? 50 : limit.to_i
page = params[:page].to_i.zero? ? 1 : params[:page].to_i
relation.page(page).per(limit)
end
def kaminari_unlimit_paginate(relation)
limit = params[:limit] || params[:per_page]
limit = (limit.to_i.zero? || limit.to_i > 9999) ? 9999 : limit.to_i
page = params[:page].to_i.zero? ? 1 : params[:page].to_i
relation.page(page).per(limit)
@ -617,7 +690,7 @@ class ApplicationController < ActionController::Base
def kaminari_array_paginate(relation)
limit = params[:limit] || params[:per_page]
limit = (limit.to_i.zero? || limit.to_i > 15) ? 15 : limit.to_i
limit = (limit.to_i.zero? || limit.to_i > 20) ? 20 : limit.to_i
page = params[:page].to_i.zero? ? 1 : params[:page].to_i
Kaminari.paginate_array(relation).page(page).per(limit)
@ -686,7 +759,7 @@ class ApplicationController < ActionController::Base
@project, @owner = Project.find_with_namespace(namespace, id)
if @project and current_user.can_read_project?(@project)
if @project and (current_user.can_read_project?(@project) || controller_path == "projects/project_invite_links")
logger.info "########### has project and can read project"
@project
# elsif @project && current_user.is_a?(AnonymousUser)
@ -694,9 +767,15 @@ class ApplicationController < ActionController::Base
# @project = nil if !@project.is_public?
# render_forbidden and return
else
logger.info "###########project not found"
@project = nil
render_not_found and return
if @project.present?
logger.info "########### has project and but can't read project"
@project = nil
render_forbidden and return
else
logger.info "###########project not found"
@project = nil
render_not_found and return
end
end
@project
end
@ -709,14 +788,20 @@ class ApplicationController < ActionController::Base
Rails.application.config_for(:configuration)['platform_url'] || request.base_url
end
def image_type?(str)
default_type = %w(png jpg gif tif psd svg bmp webp jpeg ico psd)
default_type.include?(str&.downcase)
end
def convert_image!
@image = params[:image]
@image = @image.nil? && params[:user].present? ? params[:user][:image] : @image
return unless @image.present?
max_size = EduSetting.get('upload_avatar_max_size') || 2 * 1024 * 1024 # 2M
if @image.class == ActionDispatch::Http::UploadedFile
render_error('请上传文件') if @image.size.zero?
render_error('文件大小超过限制') if @image.size > max_size.to_i
return render_error('请上传文件') if @image.size.zero?
return render_error('文件大小超过限制') if @image.size > max_size.to_i
return render_error('头像格式不正确!') unless image_type?(File.extname(@image.original_filename.to_s)[1..-1])
else
image = @image.to_s.strip
return render_error('请上传正确的图片') if image.blank?
@ -742,37 +827,10 @@ class ApplicationController < ActionController::Base
render json: exception.tip_json
end
def render_parameter_missing
render json: { status: -1, message: '参数缺失' }
end
def set_export_cookies
cookies[:fileDownload] = true
end
# 149课程的评审用户数据创建包含创建课堂学生
def open_class_user
user = User.find_by(login: "OpenClassUser")
unless user
ActiveRecord::Base.transaction do
user_params = {status: 1, login: "OpenClassUser", lastname: "开放课程",
nickname: "开放课程", professional_certification: 1, certification: 1, grade: 0,
password: "12345678", phone: "11122223333", profile_completed: 1}
user = User.create!(user_params)
UserExtension.create!(user_id: user.id, gender: 0, school_id: 3396, :identity => 1, :student_id => "openclassuser") # 3396
subject = Subject.find_by(id: 149)
if subject
subject.courses.each do |course|
CourseMember.create!(course_id: course.id, role: 3, user_id: user.id) if !course.course_members.exists?(user_id: user.id)
end
end
end
end
user
end
# 记录热门搜索关键字
def record_search_keyword
keyword = params[:keyword].to_s.strip

View File

@ -31,14 +31,17 @@ class AttachmentsController < ApplicationController
def get_file
normal_status(-1, "参数缺失") if params[:download_url].blank?
url = URI.encode(params[:download_url].to_s.gsub("http:", "https:"))
if url.starts_with?(base_url)
domain = Gitea.gitea_config[:domain]
api_url = Gitea.gitea_config[:base_url]
url = url.split(base_url)[1].gsub("api", "repos").gsub('?filepath=', '/').gsub('&', '?')
request_url = [domain, api_url, url, "?ref=#{params[:ref]}&access_token=#{current_user&.gitea_token}"].join
url = base_url.starts_with?("https:") ? params[:download_url].to_s.gsub("http:", "https:") : params[:download_url].to_s
if url.starts_with?(base_url) && !url.starts_with?("#{base_url}/repo")
domain = GiteaService.gitea_config[:domain]
api_url = GiteaService.gitea_config[:base_url]
url = ("/repos"+url.split(base_url + "/api")[1])
filepath, ref = url.split("/")[-1].split("?")
url.gsub!(url.split("/")[-1], '')
puts filepath
request_url = [domain, api_url, url, CGI.escape(filepath), "?ref=#{CGI.escape(ref.split('ref=')[1])}&access_token=#{User.where(admin: true).take&.gitea_token}"].join
response = Faraday.get(request_url)
filename = url.to_s.split("/").pop()
filename = filepath
else
response = Faraday.get(url)
filename = params[:download_url].to_s.split("/").pop()
@ -213,20 +216,17 @@ class AttachmentsController < ApplicationController
def attachment_candown
unless current_user.admin? || current_user.business?
candown = true
unless params[:type] == 'history'
if @file.container && current_user.logged?
if @file.container.is_a?(Issue)
course = @file.container.project
candown = course.member?(current_user)
elsif @file.container.is_a?(Journal)
course = @file.container.issue.project
candown = course.member?(current_user)
else
course = nil
end
tip_exception(403, "您没有权限进入") if course.present? && !candown
tip_exception(403, "您没有权限进入") if @file.container.is_a?(ApplyUserAuthentication)
if @file.container
if @file.container.is_a?(Issue)
project = @file.container.project
candown = project.is_public || (current_user.logged? && project.member?(current_user))
elsif @file.container.is_a?(Journal)
project = @file.container.issue.project
candown = project.is_public || (current_user.logged? && project.member?(current_user))
else
project = nil
end
tip_exception(403, "您没有权限进入") if project.present? && !candown
end
end
end

View File

@ -1,35 +1,19 @@
class BindUsersController < ApplicationController
# before_action :require_login
def create
# user = CreateBindUserService.call(create_params)
#
if params[:type] == "qq"
begin
user = CreateBindUserService.call(current_user, create_params)
successful_authentication(user) if user.id != current_user.id
Rails.logger.debug "--------------开始绑定用户------------"
Rails.logger.debug "--------------params: #{params.to_unsafe_h}"
tip_exception '系统错误' if session[:unionid].blank?
render_ok
rescue ApplicationService::Error => ex
render_error(ex.message)
end
else
begin
tip_exception '系统错误' if session[:unionid].blank?
bind_user = User.try_to_login(params[:username], params[:password])
tip_exception '用户名或者密码错误' if bind_user.blank?
tip_exception '用户名或者密码错误' unless bind_user.check_password?(params[:password].to_s)
tip_exception '参数错误' unless ["qq", "wechat", "gitee", "github", "educoder"].include?(params[:type].to_s)
tip_exception '该账号已被绑定,请更换其他账号进行绑定' if bind_user.bind_open_user?(params[:type].to_s)
bind_user = User.try_to_login(params[:username], params[:password])
tip_exception '用户名或者密码错误' if bind_user.blank?
tip_exception '用户名或者密码错误' unless bind_user.check_password?(params[:password].to_s)
tip_exception '该账号已被绑定,请更换其他账号进行绑定' if bind_user.bind_open_user?(params[:type].to_s)
OpenUsers::Wechat.create!(user: bind_user, uid: session[:unionid])
successful_authentication(bind_user)
render_ok
rescue Exception => e
render_error(e.message)
end
end
"OpenUsers::#{params[:type].to_s.capitalize}".constantize.create!(user: bind_user, uid: session[:unionid])
successful_authentication(bind_user)
@user = bind_user
end
def new_user

View File

@ -8,7 +8,7 @@ class Ci::BaseController < ApplicationController
namespace = params[:owner]
id = params[:repo] || params[:id]
@ci_user, @repo = Ci::Repo.find_with_namespace(namespace, id)
@ci_user, @repo = Ci::Repo.find_with_namespace(namespace, id, current_user.login)
end
def load_all_repo

View File

@ -14,12 +14,12 @@ class Ci::CloudAccountsController < Ci::BaseController
def create
flag, msg = check_bind_cloud_account!
return render_error(msg) if flag === true
return tip_exception(msg) if flag === true
ActiveRecord::Base.transaction do
@cloud_account = bind_account!
if @cloud_account.blank?
render_error('激活失败, 请检查你的云服务器信息是否正确.')
tip_exception('激活失败, 请检查你的云服务器信息是否正确.')
raise ActiveRecord::Rollback
else
current_user.set_drone_step!(User::DEVOPS_UNVERIFIED)
@ -27,17 +27,17 @@ class Ci::CloudAccountsController < Ci::BaseController
end
end
rescue Exception => ex
render_error(ex.message)
tip_exception(ex.message)
end
def activate
return render_error('请先认证') unless current_user.ci_certification?
return tip_exception('请先认证') unless current_user.ci_certification?
begin
@cloud_account = Ci::CloudAccount.find params[:id]
ActiveRecord::Base.transaction do
if @repo
return render_error('该项目已经激活') if @repo.repo_active?
return tip_exception('该项目已经激活') if @repo.repo_active?
@repo.activate!(@project)
else
@repo = Ci::Repo.auto_create!(@ci_user, @project)
@ -50,7 +50,7 @@ class Ci::CloudAccountsController < Ci::BaseController
end
render_ok
rescue Exception => ex
render_error(ex.message)
tip_exception(ex.message)
end
end
@ -59,39 +59,39 @@ class Ci::CloudAccountsController < Ci::BaseController
def bind
flag, msg = check_bind_cloud_account!
return render_error(msg) if flag === true
return tip_exception(msg) if flag === true
ActiveRecord::Base.transaction do
@cloud_account = bind_account!
if @cloud_account.blank?
render_error('激活失败, 请检查你的云服务器信息是否正确.')
tip_exception('激活失败, 请检查你的云服务器信息是否正确.')
raise ActiveRecord::Rollback
else
current_user.set_drone_step!(User::DEVOPS_UNVERIFIED)
end
end
rescue Exception => ex
render_error(ex.message)
tip_exception(ex.message)
end
def trustie_bind
account = params[:account].to_s
return render_error("account不能为空.") if account.blank?
return tip_exception("account不能为空.") if account.blank?
flag, msg = check_trustie_bind_cloud_account!
return render_error(msg) if flag === true
return tip_exception(msg) if flag === true
ActiveRecord::Base.transaction do
@cloud_account = trustie_bind_account!
if @cloud_account.blank?
render_error('激活失败, 请检查你的云服务器信息是否正确.')
tip_exception('激活失败, 请检查你的云服务器信息是否正确.')
raise ActiveRecord::Rollback
else
current_user.set_drone_step!(User::DEVOPS_UNVERIFIED)
end
end
rescue Exception => ex
render_error(ex.message)
tip_exception(ex.message)
end
def unbind
@ -107,18 +107,18 @@ class Ci::CloudAccountsController < Ci::BaseController
render_ok
end
rescue Exception => ex
render_error(ex.message)
tip_exception(ex.message)
end
def oauth_grant
password = params[:password].to_s
return render_error('你输入的密码不正确.') unless current_user.check_password?(password)
return tip_exception('你输入的密码不正确.') unless current_user.check_password?(password)
oauth = current_user.oauths.last
return render_error("服务器出小差了.") if oauth.blank?
return tip_exception("服务器出小差了.") if oauth.blank?
result = gitea_oauth_grant!(password, oauth)
return render_error('授权失败.') unless result === true
return tip_exception('授权失败.') unless result === true
current_user.set_drone_step!(User::DEVOPS_CERTIFICATION)
end

View File

@ -30,7 +30,7 @@ class Ci::PipelinesController < Ci::BaseController
ActiveRecord::Base.transaction do
size = Ci::Pipeline.where('branch=? and identifier=? and owner=?', params[:branch], params[:repo], params[:owner]).size
if size > 0
render_error("#{params[:branch]}分支已经存在流水线!")
tip_exception("#{params[:branch]}分支已经存在流水线!")
return
end
pipeline = Ci::Pipeline.new(pipeline_name: params[:pipeline_name], file_name: params[:file_name],owner: params[:owner],
@ -53,7 +53,7 @@ class Ci::PipelinesController < Ci::BaseController
render_ok({id: pipeline.id})
end
rescue Exception => ex
render_error(ex.message)
tip_exception(ex.message)
end
# 在代码库创建文件
@ -81,6 +81,7 @@ class Ci::PipelinesController < Ci::BaseController
repo_branch: pipeline.branch,
repo_config: pipeline.file_name
}
Rails.logger.info("########create_params===#{create_params.to_json}")
repo = Ci::Repo.create_repo(create_params)
repo
end
@ -118,7 +119,7 @@ class Ci::PipelinesController < Ci::BaseController
end
render_ok
rescue Exception => ex
render_error(ex.message)
tip_exception(ex.message)
end
def destroy
@ -132,7 +133,7 @@ class Ci::PipelinesController < Ci::BaseController
end
render_ok
rescue Exception => ex
render_error(ex.message)
tip_exception(ex.message)
end
def content
@ -182,7 +183,7 @@ class Ci::PipelinesController < Ci::BaseController
render_ok
end
rescue Exception => ex
render_error(ex.message)
tip_exception(ex.message)
end
def update_stage
@ -192,7 +193,7 @@ class Ci::PipelinesController < Ci::BaseController
end
render_ok
rescue Exception => ex
render_error(ex.message)
tip_exception(ex.message)
end
def delete_stage
@ -205,7 +206,7 @@ class Ci::PipelinesController < Ci::BaseController
render_ok
end
rescue Exception => ex
render_error(ex.message)
tip_exception(ex.message)
end
def update_stage_index(pipeline_id, show_index, diff)
@ -229,7 +230,7 @@ class Ci::PipelinesController < Ci::BaseController
unless steps.empty?
steps.each do |step|
unless step[:template_id]
render_error('请选择模板!')
tip_exception('请选择模板!')
return
end
if !step[:id]
@ -246,7 +247,7 @@ class Ci::PipelinesController < Ci::BaseController
render_ok
end
rescue Exception => ex
render_error(ex.message)
tip_exception(ex.message)
end
def create_stage_step
@ -262,7 +263,7 @@ class Ci::PipelinesController < Ci::BaseController
render_ok
end
rescue Exception => ex
render_error(ex.message)
tip_exception(ex.message)
end
def update_stage_step
@ -279,7 +280,7 @@ class Ci::PipelinesController < Ci::BaseController
render_ok
end
rescue Exception => ex
render_error(ex.message)
tip_exception(ex.message)
end
def delete_stage_step
@ -289,6 +290,6 @@ class Ci::PipelinesController < Ci::BaseController
end
render_ok
rescue Exception => ex
render_error(ex.message)
tip_exception(ex.message)
end
end

View File

@ -30,19 +30,19 @@ class Ci::ProjectsController < Ci::BaseController
@file = interactor.result
render_result(1, "更新成功")
else
render_error(interactor.error)
tip_exception(interactor.error)
end
end
def activate
return render_error('你还未认证') unless current_user.ci_certification?
return tip_exception('你还未认证') unless current_user.ci_certification?
begin
ActiveRecord::Base.transaction do
if @repo
return render_error('该项目已经激活') if @repo.repo_active?
@repo.destroy! if @repo&.repo_user_id == 0
return tip_exception('该项目已经激活') if @repo.repo_active?
@repo.activate!(@project)
return render_ok
else
@repo = Ci::Repo.auto_create!(@ci_user, @project)
@ci_user.update_column(:user_syncing, false)
@ -55,12 +55,12 @@ class Ci::ProjectsController < Ci::BaseController
end
render_ok
rescue Exception => ex
render_error(ex.message)
tip_exception(ex.message)
end
end
def deactivate
return render_error('该项目已经取消激活') if !@repo.repo_active?
return tip_exception('该项目已经取消激活') if !@repo.repo_active?
@project.update_column(:open_devops, false)
@repo.deactivate_repos!

View File

@ -20,14 +20,14 @@ class Ci::SecretsController < Ci::BaseController
if result["id"]
render_ok
else
render_error(result["message"])
tip_exception(result["message"])
end
else
result = Ci::Drone::API.new(@ci_user.user_hash, ci_drone_url, params[:owner], params[:repo], options).create_secret
if result["id"]
render_ok
else
render_error(result["message"])
tip_exception(result["message"])
end
end
end
@ -39,14 +39,14 @@ class Ci::SecretsController < Ci::BaseController
Ci::Drone::API.new(@ci_user.user_hash, ci_drone_url, params[:owner], params[:repo], {name: name}).delete_secret
render_ok
else
render_error("参数名不能为空")
tip_exception("参数名不能为空")
end
rescue Exception => ex
render_ok
end
def ci_drone_url
user = User.find_by(login: params[:owner])
user = User.find_by(login: params[:owner]) || User.find_by(login: current_user.login)
user&.ci_cloud_account.drone_url
end

View File

@ -50,7 +50,7 @@ class Ci::TemplatesController < Ci::BaseController
end
render_ok
rescue Exception => ex
render_error(ex.message)
tip_exception(ex.message)
end
def update
@ -63,7 +63,7 @@ class Ci::TemplatesController < Ci::BaseController
)
render_ok
rescue Exception => ex
render_error(ex.message)
tip_exception(ex.message)
end
def destroy
@ -73,7 +73,7 @@ class Ci::TemplatesController < Ci::BaseController
end
render_ok
rescue Exception => ex
render_error(ex.message)
tip_exception(ex.message)
end
#======流水线模板查询=====#

View File

@ -0,0 +1,139 @@
#coding=utf-8
class ClaimsController < ApplicationController
# skip_before_action :verify_authenticity_token
protect_from_forgery with: :null_session
before_action :require_login, except: [:index]
before_action :set_issue
def index
@user_claimed = 0
@claims = @issue.claims.claim_includes.order("created_at desc")
@claims.each do |claim|
if claim.user_id == current_user.id
@user_claimed = 1
break
end
end
render file: 'app/views/claims/list.json.jbuilder'
end
def create
@claim = Claim.find_by_sql(["select id from claims where issue_id=? and user_id=?",params[:issue_id], current_user.id])
if @claim.present?
return normal_status(-1,"您已经声明过该易修")
end
ActiveRecord::Base.transaction do
@claim = Claim.new(parse_issue_params(params))
if @claim.save
@claims = @issue.claims.claim_includes.order("created_at desc")
@user_claimed = 1
journal_params = {
journalized_id: params[:issue_id],
journalized_type: "Issue",
user_id: current_user.id ,
notes: "新建声明: #{params[:claim_note]}",
}
journal = Journal.new(journal_params)
if journal.save
SendTemplateMessageJob.perform_later('IssueClaim', current_user.id, @issue&.id)
render file: 'app/views/claims/list.json.jbuilder'
else
normal_status(-1,"新建声明关联评论操作失败")
end
else
normal_status(-1,"新建声明操作失败")
end
end
end
def update
@claim = Claim.find_by_id(params[:claim_id])
if @claim.blank?
return normal_status(-1,"易修不存在")
end
if @claim.user_id != current_user.id
return normal_status(-1,"你不能更新别人的声明")
end
ActiveRecord::Base.transaction do
if @claim.update_attribute(:note,params[:claim_note])
@claims = @issue.claims.claim_includes.order("created_at desc")
@user_claimed = 1
journal_params = {
journalized_id: params[:issue_id],
journalized_type: "Issue",
user_id: current_user.id ,
notes: "更新声明: #{params[:claim_note]}",
}
journal = Journal.new(journal_params)
if journal.save
render file: 'app/views/claims/list.json.jbuilder'
else
normal_status(-1,"新建声明关联评论操作失败")
end
else
normal_status(-1,"声明更新操作失败")
end
end
end
def destroy
@claim = Claim.find_by_sql(["select id from claims where issue_id=? and user_id=?",params[:issue_id], current_user.id])
if @claim.blank?
normal_status(-1,"您未曾声明过该易修")
else
@claim = @claim[0]
# 判断current user是否是claimer
ActiveRecord::Base.transaction do
if @claim.destroy
@claims = @issue.claims.claim_includes.order("created_at desc")
@user_claimed = 0
journal_params = {
journalized_id: params[:issue_id],
journalized_type: "Issue",
user_id: current_user.id ,
notes: "取消声明",
}
journal = Journal.new(journal_params)
if journal.save
render file: 'app/views/claims/list.json.jbuilder'
else
normal_status(-1,"新建声明关联评论操作失败")
end
else
normal_status(-1,"取消声明操作失败")
end
end
end
end
private
def parse_issue_params(params)
{
issue_id: params[:issue_id],
user_id: current_user.id,
note: params[:claim_note],
}
end
def set_issue
@issue = Issue.find_by_id(params[:issue_id])
unless @issue.present?
normal_status(-1, "易修不存在")
end
end
end

View File

@ -0,0 +1,30 @@
class CommitLogsController < ApplicationController
def create
tip_exception "未认证" unless params[:token].to_s == "7917908927b6f1b792f2027a08a8b24a2de42c1692c2fd45da0dee5cf90a5af5"
ref = params[:ref]
user_name = params[:pusher][:login]
user_mail = params[:pusher][:email]
user = User.find_by(mail: user_mail)
user = User.find_by(login: user_name) if user.blank?
repository_id = params[:repository][:id]
repository_name = params[:repository][:name]
repository_full_name = params[:repository][:full_name]
owner_name = repository_full_name.split("/")[0]
owner = User.find_by(login: owner_name)
project = Project.where(identifier: repository_name).where(user_id: owner&.id)&.first
project = Project.where(identifier: repository_name).where(gpid: repository_id)&.first if project.blank?
project.update_column(:updated_on, Time.now) if project.present?
params[:commits].each do |commit|
commit_id = commit[:id]
message = commit[:message]
CommitLog.create(user: user, project: project, repository_id: repository_id,
name: repository_name, full_name: repository_full_name,
ref: ref, commit_id: commit_id, message: message)
# 统计数据新增
CacheAsyncSetJob.perform_later("project_common_service", {commits: 1}, project.id)
end
end
end

View File

@ -6,9 +6,18 @@ class CompareController < ApplicationController
end
def show
load_compare_params
compare
@merge_status, @merge_message = get_merge_message
if params[:type] == "sha"
load_compare_params
@compare_result ||= gitea_compare(@base, @head)
else
load_compare_params
compare
@merge_status, @merge_message = get_merge_message
end
@page_size = page_size <= 0 ? 1 : page_size
@page_limit = page_limit <=0 ? 15 : page_limit
@page_offset = (@page_size -1) * @page_limit
Rails.logger.info("+========#{@page_size}-#{@page_limit}-#{@page_offset}")
end
private
@ -16,6 +25,7 @@ class CompareController < ApplicationController
if @base.blank? || @head.blank?
return -2, "请选择分支"
else
return -2, "目标仓库未开启合并请求PR功能" unless @project.has_menu_permission("pulls")
if @head.include?(":")
fork_project = @project.forked_projects.joins(:owner).where(users: {login: @head.to_s.split("/")[0]}).take
return -2, "请选择正确的仓库" unless fork_project.present?
@ -42,12 +52,22 @@ class CompareController < ApplicationController
end
def load_compare_params
@base = Addressable::URI.unescape(params[:base])
@head = params[:head].include?('json') ? params[:head]&.split('.json')[0] : params[:head]
# @base = Addressable::URI.unescape(params[:base])
@base = params[:base].include?(":") ? Addressable::URI.unescape(params[:base].split(":")[0]) + ':' + Base64.decode64(params[:base].split(":")[1]) : Base64.decode64(params[:base])
@head = params[:head].include?('.json') ? params[:head][0..-6] : params[:head]
# @head = Addressable::URI.unescape(@head)
@head = @head.include?(":") ? Addressable::URI.unescape(@head.split(":")[0]) + ':' + Base64.decode64(@head.split(":")[1]) : Base64.decode64(@head)
end
def gitea_compare(base, head)
Gitea::Repository::Commits::CompareService.call(@owner.login, @project.identifier, base, head, current_user.gitea_token)
Gitea::Repository::Commits::CompareService.call(@owner.login, @project.identifier, Addressable::URI.escape(base), Addressable::URI.escape(head), current_user.gitea_token)
end
def page_size
params.fetch(:page, 1).to_i
end
def page_limit
params.fetch(:limit, 15).to_i
end
end

View File

@ -18,15 +18,15 @@ module Acceleratorable
end
def accelerator_domain
Gitea.gitea_config[:accelerator]["domain"]
GiteaService.gitea_config[:accelerator]["domain"]
end
def accelerator_username
Gitea.gitea_config[:accelerator]["access_key_id"]
GiteaService.gitea_config[:accelerator]["access_key_id"]
end
def config_accelerator?
Gitea.gitea_config[:accelerator].present?
GiteaService.gitea_config[:accelerator].present?
end
def is_foreign_url?(clone_addr)

View File

@ -0,0 +1,21 @@
module Api::ProjectHelper
extend ActiveSupport::Concern
def load_project
namespace = params[:owner]
repo = params[:repo]
@project, @owner = Project.find_with_namespace(namespace, repo)
@repository = @project&.repository
if @project
logger.info "###########project founded"
@project
else
logger.info "###########project not found"
@project = nil
tip_exception(404, '您访问的页面不存在或已被删除')
end
@project
end
end

View File

@ -0,0 +1,19 @@
module Api::PullHelper
extend ActiveSupport::Concern
def load_pull_request
pull_request_id = params[:pull_id] || params[:id]
@pull_request = @project.pull_requests.where(gitea_number: pull_request_id).where.not(id: pull_request_id).take || PullRequest.find_by_id(pull_request_id)
@issue = @pull_request&.issue
if @pull_request
logger.info "###########pull_request founded"
@pull_request
else
logger.info "###########pull_request not found"
@pull_request = nil
render_not_found and return
end
@pull_request
end
end

View File

@ -0,0 +1,28 @@
module Api::UserHelper
extend ActiveSupport::Concern
def load_observe_user
username = params[:owner]
@observe_user = User.find_by(login: username)
if @observe_user
logger.info "###########observe_user not founded"
@observe_user
else
logger.info "###########observe_user not found"
@observe_user = nil
render_not_found and return
end
@observe_user
end
# 是否具有查看用户或编辑用户的权限
def check_auth_for_observe_user
return render_forbidden unless current_user.admin? || @observe_user.id == current_user.id
end
def strip(str)
str.to_s.strip.presence
end
end

View File

@ -160,9 +160,9 @@ module Ci::CloudAccountManageable
state = SecureRandom.hex(8)
# redirect_uri eg:
# https://localhost:3000/login/oauth/authorize?client_id=94976481-ad0e-4ed4-9247-7eef106007a2&redirect_uri=http%3A%2F%2F121.69.81.11%3A80%2Flogin&response_type=code&state=9cab990b9cfb1805
redirect_uri = CGI.escape("#{@cloud_account.drone_url}/login")
clientId = client_id(oauth)
grant_url = "#{Gitea.gitea_config[:domain]}/login/oauth/authorize?client_id=#{clientId}&redirect_uri=#{redirect_uri}&response_type=code&state=#{state}"
# redirect_uri = CGI.escape("#{@cloud_account.drone_url}/login")
# clientId = client_id(oauth)
grant_url = "#{@cloud_account.drone_url}/login"
logger.info "[gitea] grant_url: #{grant_url}"
conn = Faraday.new(url: grant_url) do |req|
@ -188,6 +188,7 @@ module Ci::CloudAccountManageable
response = conn.get
logger.info "[drone] response headers: #{response.headers}"
# true
response.headers['location'].include?('error') ? false : true
end

View File

@ -11,7 +11,7 @@ module LoginHelper
def set_autologin_cookie(user)
token = Token.get_or_create_permanent_login_token(user, "autologin")
sync_user_token_to_trustie(user.login, token.value)
# sync_user_token_to_trustie(user.login, token.value)
Rails.logger.info "###### def set_autologin_cookie and get_or_create_permanent_login_token result: #{token&.value}"
cookie_options = {
@ -108,10 +108,15 @@ module LoginHelper
def sync_pwd_to_gitea!(user, hash={})
return true if user.is_sync_pwd?
sync_params = { email: user.mail }
sync_params = {
login_name: user.name,
source_id: 0,
email: user.mail
}
interactor = Gitea::User::UpdateInteractor.call(user.login, sync_params.merge(hash))
if interactor.success?
Rails.logger.info "########_ login is #{user.login} sync_pwd_to_gitea success _########"
user.update_column(:is_sync_pwd, true)
true
else
Rails.logger.info "########_ login is #{user.login} sync_pwd_to_gitea fail!: #{interactor.error}"

View File

@ -1,17 +1,25 @@
module RegisterHelper
extend ActiveSupport::Concern
def autologin_register(username, email, password, platform= 'forge')
def autologin_register(username, email, password, platform = 'forge', phone = nil, nickname =nil, need_edit_info = false)
result = {message: nil, user: nil}
email = email.blank? ? "#{username}@example.org" : email
user = User.new(admin: false, login: username, mail: email, type: "User")
user.password = password
user.platform = platform
user.activate
user.phone = phone if phone.present?
user.nickname = nickname if nickname.present?
if need_edit_info
user.need_edit_info
else
user.activate
end
return unless user.valid?
interactor = Gitea::RegisterInteractor.call({username: username, email: email, password: password})
result ={}
if interactor.success?
gitea_user = interactor.result
result = Gitea::User::GenerateTokenService.call(username, password)
@ -22,9 +30,64 @@ module RegisterHelper
result[:user] = {id: user.id, token: user.gitea_token}
end
else
result[:message] = interactor.error
result[:message] = interactor.result[:message]
end
result
end
def autosync_register_trustie(username, password, email, lastname="")
config = Rails.application.config_for(:configuration).symbolize_keys!
api_host = config[:sync_url]
return if api_host.blank?
url = "#{api_host}/api/v1/users/common"
sync_json = {
"mail": email,
"password": password,
"login": username,
"lastname": lastname
}.compact
uri = URI.parse(url)
if api_host
http = Net::HTTP.new(uri.hostname, uri.port)
if api_host.include?("https://")
http.use_ssl = true
end
http.send_request('POST', uri.path, sync_json.to_json, {'Content-Type' => 'application/json'})
end
end
def auto_update(user, params={})
return if params.blank?
result = {message: nil, user: nil}
before_login = user.login
user.login = params[:username]
user.password = params[:password]
user.mail = params[:email]
if user.save!
sync_params = {
password: params[:password].to_s,
email: params[:email],
login_name: params[:username],
new_name: params[:username],
source_id: 0
}
interactor = Gitea::User::UpdateInteractor.call(before_login, sync_params)
if interactor.success?
result[:user] = user
else
result[:message] = '用户同步Gitea失败!'
end
else
result[:message] = user.errors.full_messages.join(",")
return
end
end
end

View File

@ -3,7 +3,7 @@ module RenderHelper
render json: { status: 0, message: 'success' }.merge(data)
end
def render_error(status = -1, message = '')
def render_error(message = '', status = -1)
render json: { status: status, message: message }
end
@ -28,4 +28,8 @@ module RenderHelper
def render_result(status=1, message='success')
render json: { status: status, message: message }
end
def render_parameter_missing
render json: { status: -1, message: '参数缺失' }
end
end

View File

@ -5,7 +5,17 @@ module Repository::LanguagesPercentagable
result = Gitea::Repository::Languages::ListService.call(@owner.login,
@repository.identifier, current_user&.gitea_token)
result[:status] === :success ? hash_transform_precentagable(result[:body]) : nil
@transform_language = result[:status] === :success ? hash_transform_precentagable(result[:body]) : nil
update_project_language(@transform_language) unless @transform_language.nil?
@transform_language
end
def update_project_language(language)
return if @project.project_language.present?
db_language = ProjectLanguage.find_or_create_by!(name: language.keys.first.downcase.upcase_first)
@project.update_attribute(:project_language_id, db_language.id)
rescue
return
end
# hash eq:{"JavaScript": 301681522,"Ruby": 1444004,"Roff": 578781}

View File

@ -13,7 +13,7 @@ class ForksController < ApplicationController
if current_user&.id == @project.user_id
render_result(-1, "自己不能fork自己的项目")
elsif Project.exists?(user_id: current_user.id, identifier: @project.identifier)
render_result(-1, "fork失败你已拥有了这个项目")
render_result(0, "fork失败你已拥有了这个项目")
end
# return if current_user != @project.owner
# render_result(-1, "自己不能fork自己的项目")

View File

@ -0,0 +1,67 @@
class InstallationsController < ApplicationController
include RegisterHelper
before_action :require_login
def index
@install_bots = BotInstall.where(:installer_id => current_user.id)
end
def update_secret
ActiveRecord::Base.transaction do
bot = Bot.find params[:id]
application = Doorkeeper::Application.find_by(uid: bot.client_id, secret: bot.client_secret)
bot.client_secret = Doorkeeper::OAuth::Helpers::UniqueToken.generate
bot.save!
application.secret = bot.client_secret
application.save!
render_ok
end
end
def update_private_key
bot = Bot.find params[:id]
bot.private_key = OpenSSL::PKey::RSA::generate(2048).to_s
bot.save!
render_ok
end
def auth_active
begin
@bot = Bot.find params[:id]
tip_exception("该Bot已激活") if Doorkeeper::Application.find_by(uid: @bot.client_id, secret: @bot.client_secret).present?
@bot.client_id = Doorkeeper::OAuth::Helpers::UniqueToken.generate if params[:client_id].blank?
@bot.client_secret = Doorkeeper::OAuth::Helpers::UniqueToken.generate if params[:client_secret].blank?
@bot.private_key = OpenSSL::PKey::RSA::generate(2048).to_s
@bot.owner_id = current_user.id
ActiveRecord::Base.transaction do
# 注册bot对应oauth应用
Doorkeeper::Application.create!(name: @bot.name, uid: @bot.client_id, secret: @bot.client_secret, redirect_uri: "https://gitlink.org.cn")
# 注册bot对应用户
result = autologin_register(User.generate_user_login('b'), nil, "#{SecureRandom.hex(6)}", 'bot', nil, nickname: @bot.name)
tip_exception(-1, result[:message]) if result[:message].present?
@bot.uid = result[:user][:id]
@bot.save
render_ok
end
rescue Exception => e
tip_exception(-1, e.message)
end
end
def access_tokens
@install_bot = BotInstall.find params[:id]
@bot = @install_bot.bot
@application = Doorkeeper::Application.find_by(uid: @bot.client_id, secret: @bot.client_secret)
tip_exception("该Bot未激活") if @application.blank?
# 给bot生成token因为bot是机器人操作
@access_token = Doorkeeper::AccessToken.create!({ :application_id => @application.id,
:resource_owner_id => @bot.uid,
:scopes => "public write",
:expires_in => "604800",
:use_refresh_token => true
})
render_ok(token: @access_token.token)
end
end

View File

@ -2,12 +2,12 @@ class IssueTagsController < ApplicationController
before_action :require_login, except: [:index]
before_action :load_repository
before_action :set_user
before_action :check_issue_permission, except: :index
before_action :check_issue_tags_permission
before_action :set_issue_tag, only: [:edit, :update, :destroy]
def index
issue_tags = @project.issue_tags.reorder("#{order_name} #{order_type}")
issue_tags = @project.issue_tags.includes(:issues).reorder("issue_tags.#{order_name} #{order_type}")
@user_admin_or_member = current_user.present? && (current_user.admin || @project.member?(current_user))
@page = params[:page] || 1
@limit = params[:limit] || 15
@ -17,7 +17,7 @@ class IssueTagsController < ApplicationController
def create
title = params[:name].to_s.strip.first(10)
title = params[:name].to_s.strip.first(15)
desc = params[:description].to_s.first(30)
color = params[:color] || "#ccc"
@ -29,7 +29,7 @@ class IssueTagsController < ApplicationController
if title.present?
if IssueTag.exists?(name: title, project_id: @project.id)
normal_status(-1, "标签已存在")
normal_status(-1, "项目标记已存在")
else
ActiveRecord::Base.transaction do
begin
@ -37,12 +37,12 @@ class IssueTagsController < ApplicationController
if issue_tag.save
# gitea_tag = Gitea::Labels::CreateService.new(current_user, @repository.try(:identifier), tag_params).call
# if gitea_tag && issue_tag.update_attributes(gid: gitea_tag["id"], gitea_url: gitea_tag["url"])
# normal_status(0, "标签创建成功")
normal_status(0, "项目标记创建成功!")
# else
# normal_status(-1, "标签创建失败")
# normal_status(-1, "项目标记创建失败")
# end
else
normal_status(-1, "标签创建失败")
normal_status(-1, "项目标记创建失败")
end
rescue => e
puts "create version release error: #{e.message}"
@ -51,7 +51,7 @@ class IssueTagsController < ApplicationController
end
end
else
normal_status(-1, "标签名称不能为空")
normal_status(-1, "项目标记名称不能为空")
end
end
@ -60,8 +60,8 @@ class IssueTagsController < ApplicationController
end
def update
title = params[:name]
desc = params[:description]
title = params[:name].to_s.strip.first(15)
desc = params[:description].to_s.first(30)
color = params[:color] || "#ccc"
tag_params = {
@ -71,19 +71,19 @@ class IssueTagsController < ApplicationController
}
if title.present?
if IssueTag.exists?(name: title, project_id: @project.id) && (@issue_tag.name != title)
normal_status(-1, "标签已存在")
normal_status(-1, "项目标记已存在")
else
ActiveRecord::Base.transaction do
begin
if @issue_tag.update_attributes(tag_params)
# gitea_tag = Gitea::Labels::UpdateService.new(current_user, @repository.try(:identifier),@issue_tag.try(:gid), tag_params).call
# if gitea_tag
# normal_status(0, "标签更新成功")
# normal_status(0, "项目标记更新成功")
# else
# normal_status(-1, "标签更新失败")
# normal_status(-1, "项目标记更新失败")
# end
else
normal_status(-1, "标签更新失败")
normal_status(-1, "项目标记更新失败")
end
rescue => e
puts "create version release error: #{e.message}"
@ -92,7 +92,7 @@ class IssueTagsController < ApplicationController
end
end
else
normal_status(-1, "标签名称不能为空")
normal_status(-1, "项目标记名称不能为空")
end
end
@ -102,12 +102,12 @@ class IssueTagsController < ApplicationController
if @issue_tag.destroy
# issue_tag = Gitea::Labels::DeleteService.new(@user, @repository.try(:identifier), @issue_tag.try(:gid)).call
# if issue_tag
# normal_status(0, "标签删除成功")
# normal_status(0, "项目标记删除成功")
# else
# normal_status(-1, "标签删除失败")
# normal_status(-1, "项目标记删除失败")
# end
else
normal_status(-1, "标签删除失败")
normal_status(-1, "项目标记删除失败")
end
rescue => e
puts "create version release error: #{e.message}"
@ -122,16 +122,16 @@ class IssueTagsController < ApplicationController
@user = @project.owner
end
def check_issue_permission
unless @project.member?(current_user) || current_user.admin?
normal_status(-1, "您没有权限")
def check_issue_tags_permission
unless @project.manager?(current_user) || current_user.admin?
return render_forbidden('你不是管理员,没有权限操作')
end
end
def set_issue_tag
@issue_tag = IssueTag.find_by_id(params[:id])
unless @issue_tag.present?
normal_status(-1, "标签不存在")
normal_status(-1, "项目标记不存在")
end
end

View File

@ -15,6 +15,7 @@ class IssuesController < ApplicationController
include TagChosenHelper
def index
@user_operate_issue = current_user.present? && current_user.logged? && (current_user.admin || @project.member?(current_user))
@user_admin_or_member = current_user.present? && current_user.logged? && (current_user.admin || @project.member?(current_user) || @project.is_public?)
issues = @project.issues.issue_issue.issue_index_includes
issues = issues.where(is_private: false) unless @user_admin_or_member
@ -23,13 +24,13 @@ class IssuesController < ApplicationController
@filter_issues = @all_issues
@filter_issues = @filter_issues.where.not(status_id: IssueStatus::CLOSED) if params[:status_type].to_i == IssueStatus::ADD
@filter_issues = @filter_issues.where(status_id: IssueStatus::CLOSED) if params[:status_type].to_i == IssueStatus::SOLVING
@filter_issues = @filter_issues.where("subject LIKE ? OR description LIKE ? ", "%#{params[:search]}%", "%#{params[:search]}%") if params[:search].present?
@filter_issues = @filter_issues.where("issues.subject LIKE ? OR issues.description LIKE ? ", "%#{params[:search]}%", "%#{params[:search]}%") if params[:search].present?
@open_issues = @all_issues.where.not(status_id: IssueStatus::CLOSED)
@close_issues = @all_issues.where(status_id: IssueStatus::CLOSED)
@assign_to_me = @filter_issues.where(assigned_to_id: current_user&.id)
@my_published = @filter_issues.where(author_id: current_user&.id)
scopes = Issues::ListQueryService.call(issues,params.delete_if{|k,v| v.blank?}, "Issue")
@issues_size = scopes.size
@assign_to_me = scopes.where(assigned_to_id: current_user&.id)
@my_published = scopes.where(author_id: current_user&.id)
@issues = paginate(scopes)
respond_to do |format|
@ -108,9 +109,11 @@ class IssuesController < ApplicationController
def create
issue_params = issue_send_params(params)
Issues::CreateForm.new({subject:issue_params[:subject]}).validate!
Issues::CreateForm.new({subject: issue_params[:subject], description: issue_params[:description].blank? ? issue_params[:description] : issue_params[:description].b}).validate!
@issue = Issue.new(issue_params)
@issue.project_issues_index = @project.get_last_project_issues_index + 1
if @issue.save!
@project.del_project_issue_cache_delete_count
SendTemplateMessageJob.perform_later('IssueAssigned', current_user.id, @issue&.id) if Site.has_notice_menu?
SendTemplateMessageJob.perform_later('ProjectIssue', current_user.id, @issue&.id) if Site.has_notice_menu?
if params[:attachment_ids].present?
@ -125,8 +128,14 @@ class IssuesController < ApplicationController
end
end
if params[:issue_tag_ids].present?
params[:issue_tag_ids].each do |tag|
IssueTagsRelate.create!(issue_id: @issue.id, issue_tag_id: tag)
if params[:issue_tag_ids].is_a?(Array) && params[:issue_tag_ids].size > 1
return normal_status(-1, "最多只能创建一个标记。")
elsif params[:issue_tag_ids].is_a?(Array) && params[:issue_tag_ids].size == 1
params[:issue_tag_ids].each do |tag|
IssueTagsRelate.create!(issue_id: @issue.id, issue_tag_id: tag)
end
else
return normal_status(-1, "请输入正确的标记。")
end
end
if params[:assigned_to_id].present?
@ -142,11 +151,15 @@ class IssuesController < ApplicationController
end
@issue.project_trends.create(user_id: current_user.id, project_id: @project.id, action_type: "create")
@issue.project_trends.create(user_id: current_user.id, project_id: @project.id, action_type: ProjectTrend::CLOSE) if params[:status_id].to_i == 5
Rails.logger.info "[ATME] maybe to at such users: #{@atme_receivers.pluck(:login)}"
AtmeService.call(current_user, @atme_receivers, @issue) if @atme_receivers.size > 0
# 新增时向grimoirelab推送事件
IssueWebhookJob.set(wait: 5.seconds).perform_later(@issue.id)
render json: {status: 0, message: "创建成", id: @issue.id}
render json: {status: 0, message: "创建成", id: @issue.id}
else
normal_status(-1, "创建失败")
end
@ -165,10 +178,17 @@ class IssuesController < ApplicationController
last_token = @issue.token
last_status_id = @issue.status_id
@issue&.issue_tags_relates&.destroy_all if params[:issue_tag_ids].blank?
if params[:issue_tag_ids].present? && !@issue&.issue_tags_relates.where(issue_tag_id: params[:issue_tag_ids]).exists?
@issue&.issue_tags_relates&.destroy_all
params[:issue_tag_ids].each do |tag|
IssueTagsRelate.create(issue_id: @issue.id, issue_tag_id: tag)
if params[:issue_tag_ids].present?
if params[:issue_tag_ids].is_a?(Array) && params[:issue_tag_ids].size > 1
return normal_status(-1, "最多只能创建一个标记。")
elsif params[:issue_tag_ids].is_a?(Array) && params[:issue_tag_ids].size == 1
@issue&.issue_tags_relates&.destroy_all
params[:issue_tag_ids].each do |tag|
next if tag == [""]
IssueTagsRelate.create!(issue_id: @issue.id, issue_tag_id: tag)
end
else
return normal_status(-1, "请输入正确的标记。")
end
end
@ -207,7 +227,7 @@ class IssuesController < ApplicationController
normal_status(-1, "不允许修改为关闭状态")
else
issue_params = issue_send_params(params).except(:issue_classify, :author_id, :project_id)
Issues::UpdateForm.new({subject:issue_params[:subject]}).validate!
Issues::UpdateForm.new({subject: issue_params[:subject], description: issue_params[:description].blank? ? issue_params[:description] : issue_params[:description].b}).validate!
if @issue.update_attributes(issue_params)
if @issue&.pull_request.present?
SendTemplateMessageJob.perform_later('PullRequestChanged', current_user.id, @issue&.pull_request&.id, @issue.previous_changes.slice(:assigned_to_id, :priority_id, :fixed_version_id, :issue_tags_value)) if Site.has_notice_menu?
@ -231,7 +251,7 @@ class IssuesController < ApplicationController
end
if params[:status_id].to_i == 5 #任务由非关闭状态到关闭状态时
@issue.issue_times.update_all(end_time: Time.now)
@issue.update_closed_issues_count_in_project!
# @issue.update_closed_issues_count_in_project!
if @issue.issue_type.to_s == "2" && last_status_id != 5
if @issue.assigned_to_id.present? && last_status_id == 3 #只有当用户完成100%时才给token
post_to_chain("add", @issue.token, @issue.get_assign_user.try(:login))
@ -286,6 +306,7 @@ class IssuesController < ApplicationController
login = @issue.user.try(:login)
SendTemplateMessageJob.perform_later('IssueDeleted', current_user.id, @issue&.subject, @issue.assigned_to_id, @issue.author_id) if Site.has_notice_menu?
if @issue.destroy
@project.incre_project_issue_cache_delete_count
if issue_type == "2" && status_id != 5
post_to_chain("add", token, login)
end
@ -473,7 +494,8 @@ class IssuesController < ApplicationController
end
def operate_issue_permission
return render_forbidden("您没有权限进行此操作.") unless current_user.present? && current_user.logged? && (current_user.admin? || @project.member?(current_user) || @project.is_public?)
@issue = Issue.find_by_id(params[:id]) unless @issue.present?
return render_forbidden("您没有权限进行此操作.") unless current_user.present? && current_user.logged? && (current_user.admin? || @project.member?(current_user) || (@project.is_public && @issue.nil?) || (@project.is_public && @issue.present? && @issue.author_id == current_user.id))
end
def export_issues(issues)

View File

@ -23,6 +23,7 @@ class JournalsController < ApplicationController
normal_status(-1, "评论内容不能为空")
else
ActiveRecord::Base.transaction do
Journals::CreateForm.new({notes: notes.to_s.strip.blank? ? notes.to_s.strip : notes.to_s.strip.b}).validate!
journal_params = {
journalized_id: @issue.id ,
journalized_type: "Issue",
@ -45,6 +46,7 @@ class JournalsController < ApplicationController
end
Rails.logger.info "[ATME] maybe to at such users: #{@atme_receivers.pluck(:login)}"
AtmeService.call(current_user, @atme_receivers, journal) if @atme_receivers.size > 0
TouchWebhookJob.set(wait: 5.seconds).perform_later('PullRequestComment', @issue&.id, current_user.id, journal.id, 'created', {})
# @issue.project_trends.create(user_id: current_user.id, project_id: @project.id, action_type: "journal")
render :json => { status: 0, message: "评论成功", id: journal.id}
# normal_status(0, "评论成功")
@ -53,10 +55,14 @@ class JournalsController < ApplicationController
end
end
end
rescue Exception => exception
puts exception.message
normal_status(-1, exception.message)
end
def destroy
if @journal.destroy #如果有子评论,子评论删除吗?
TouchWebhookJob.set(wait: 5.seconds).perform_later('PullRequestComment', @issue&.id, current_user.id, @journal.id, 'deleted', JSON.parse(@journal.to_builder.target!))
Journal.children_journals(@journal.id).destroy_all
normal_status(0, "评论删除成功")
else
@ -71,6 +77,7 @@ class JournalsController < ApplicationController
def update
content = params[:content]
if content.present?
Journals::UpdateForm.new({notes: notes.to_s.strip.blank? ? notes.to_s.strip : notes.to_s.strip.b}).validate!
if @journal.update_attribute(:notes, content)
normal_status(0, "更新成功")
else
@ -79,7 +86,9 @@ class JournalsController < ApplicationController
else
normal_status(-1, "评论的内容不能为空")
end
rescue Exception => exception
puts exception.message
normal_status(-1, exception.message)
end
def get_children_journals

View File

@ -0,0 +1,56 @@
class MarkFilesController < ApplicationController
before_action :require_login
before_action :load_project
before_action :load_pull_request
def index
@files_result = Gitea::PullRequest::FilesService.call(@owner.login, @project.identifier, @pull_request.gitea_number, current_user&.gitea_token, { "only-file-name": true })
@mark_files = MarkFile.where(pull_request_id: @pull_request.id)
end
def create
# unless @pull_request.mark_files.present?
# MarkFile.bulk_insert(*%i[pull_request_id, file_path_sha file_path created_at updated_at]) do |worker|
# @files_result['Files'].each do |file|
# worker.add(pull_request_id: @pull_request.id, file_path_sha: SecureRandom.uuid.gsub("-", ""), file_path: file['Name'])
# end
# end
# end
end
def mark_file_as_unread
tip_exception "参数错误" if params[:file_path_sha].blank?
file_path = Base64.strict_decode64(params[:file_path_sha].to_s)
mark_file = @pull_request.mark_files.find_or_initialize_by(file_path_sha: params[:file_path_sha])
mark_file.file_path = file_path
mark_file.user_id = current_user.id
mark_file.mark_as_read = false
mark_file.save
render_ok
rescue Exception => e
tip_exception "参数解析错误"
end
def mark_file_as_read
tip_exception "参数错误" if params[:file_path_sha].blank?
file_path = Base64.strict_decode64(params[:file_path_sha].to_s)
mark_file = @pull_request.mark_files.find_or_initialize_by(file_path_sha: params[:file_path_sha])
mark_file.file_path = file_path
mark_file.user_id = current_user.id
mark_file.mark_as_read = true
mark_file.save
render_ok
rescue Exception => e
tip_exception "参数解析错误"
end
private
def review_params
params.require(:review).permit(:content, :commit_id, :status)
end
def load_pull_request
@pull_request = @project.pull_requests.where(gitea_number: params[:id]).where.not(id: params[:id]).take || PullRequest.find_by_id(params[:id])
end
end

View File

@ -3,7 +3,7 @@ class MembersController < ApplicationController
before_action :load_project
before_action :find_user_with_id, only: %i[create remove change_role]
before_action :check_user_profile_completed, only: [:create]
before_action :operate!, except: %i[index]
before_action :operate!
before_action :check_member_exists!, only: %i[create]
before_action :check_member_not_exists!, only: %i[remove change_role]
@ -26,6 +26,9 @@ class MembersController < ApplicationController
@total_count = scope.size
@members = paginate(scope)
if @project.owner.is_a?(Organization) && (params[:page].to_i == 1 || params[:page].blank?) && !@project.members.exists?(user_id: current_user.id)
@current_user_header_team = Team.joins(:team_users, :team_projects).where(team_projects: {project_id: @project.id}, team_users: {user_id: current_user.id}).order(authorize: :desc).take
end
end
def remove
@ -61,11 +64,14 @@ class MembersController < ApplicationController
end
def check_member_exists!
return render_error("user_id为#{params[:user_id]}的用户已经是项目成员") if member_exists?
@current_user_header_team = Team.joins(:team_users, :team_projects).where(team_projects: {project_id: @project.id}, team_users: {user_id: current_user.id}).order(authorize: :desc).take
return render_error("#{@user&.nickname}已经是项目成员") if member_exists? || (params[:user_id].to_i == current_user.id && @current_user_header_team.present?)
end
def check_member_not_exists!
return render_error("user_id为#{params[:user_id]}的用户还不是项目成员") unless member_exists?
@current_user_header_team = Team.joins(:team_users, :team_projects).where(team_projects: {project_id: @project.id}, team_users: {user_id: current_user.id}).order(authorize: :desc).take
return render_error("用户为组织成员,请到组织下操作!") if (params[:user_id].to_i == current_user.id && @current_user_header_team.present?) && !member_exists?
return render_error("#{@user&.nickname}还不是项目成员") unless member_exists?
end
def check_user_profile_completed

View File

@ -0,0 +1,33 @@
class NoticesController < ApplicationController
def create
return tip_exception("参数有误") if params["source"].blank?
user_id = params[:user_id]
if params["source"] == "CompetitionBegin"
competition_id = params[:competition_id]
SendTemplateMessageJob.perform_later('CompetitionBegin', user_id, competition_id)
elsif params["source"] == "CompetitionResult"
competition_id = params[:competition_id]
SendTemplateMessageJob.perform_later('CompetitionResult', user_id, competition_id)
elsif params["source"] == "CompetitionReview"
competition_id = params[:competition_id]
SendTemplateMessageJob.perform_later('CompetitionReview', user_id, competition_id)
elsif params["source"] == "CustomTip"
users_id = params[:users_id]
props = params[:props].to_unsafe_hash
return tip_exception("参数有误") unless props.is_a?(Hash) && users_id.is_a?(Array)
template_id = params[:template_id]
SendTemplateMessageJob.perform_later('CustomTip', users_id, template_id, props)
else
tip_exception("#{params["source"]}未配置")
end
render_ok
end
private
def params_props
params.require(:notice).permit(:props)
end
end

View File

@ -0,0 +1,17 @@
class NpsController < ApplicationController
before_action :require_login
# close,关闭
# createIssue,创建issue
# createPullRequest,创建PR
# auditPullRequest,审核PR
# indexProject,项目主页
# createProject,创建项目
# createOrganization,创建组织
def create
tip_exception "缺少参数" if params[:action_id].blank? || params[:action_type].blank?
UserNp.create(:action_id => params[:action_id].to_i, :action_type => params[:action_type], :user_id => User.current.id, :score => params[:score].to_f, memo: params[:memo])
render_ok
end
end

Some files were not shown because too many files have changed in this diff Show More