This commit is contained in:
devezhao 2021-01-20 20:45:52 +08:00
parent 70209f0d86
commit f46ca90eb3
11 changed files with 62 additions and 28 deletions

View file

@ -4,18 +4,18 @@
[![License GPLv3](https://img.shields.io/github/license/getrebuild/rebuild.svg)](LICENSE) [![License GPLv3](https://img.shields.io/github/license/getrebuild/rebuild.svg)](LICENSE)
[![License COMMERCIAL](https://img.shields.io/badge/license-COMMERCIAL-orange.svg)](COMMERCIAL) [![License COMMERCIAL](https://img.shields.io/badge/license-COMMERCIAL-orange.svg)](COMMERCIAL)
## REBUILD 2.1 新特性 ## REBUILD 2.2 新特性
本次更新为你带来众多新功能与优化。 本次更新为你带来众多新功能与优化。
1. [新增] 繁体中文支持 1. [新增] 外部表单
2. [新增] 记录转换映射 2. [新增] 界面主题选择
3. [新增] 多引用字段 3. [新增] 数字型字段计算公式
4. [新增] 支持批量导入用户 4. [新增] 多行文本字段富文本编辑器
5. [优化] 所有字段均提供默认值支持 5. [新增] 高级表单控制
6. ... 6. ...
更多新特性请移步 [CHANGLOG](https://getrebuild.com/docs/dev/changelog) 更多新特性请移步 [CHANGLOG](https://getrebuild.com/docs/dev/changelog?v=2.2)
## 在线体验 ## 在线体验

View file

@ -10,7 +10,7 @@
</parent> </parent>
<groupId>com.rebuild</groupId> <groupId>com.rebuild</groupId>
<artifactId>rebuild</artifactId> <artifactId>rebuild</artifactId>
<version>2.2.0-dev</version> <version>2.2.0-beta1</version>
<name>rebuild</name> <name>rebuild</name>
<description>RB V2 use SpringBoot</description> <description>RB V2 use SpringBoot</description>
<!-- UNCOMMENT USE TOMCAT --> <!-- UNCOMMENT USE TOMCAT -->

View file

@ -63,7 +63,7 @@ public class Application implements ApplicationListener<ApplicationStartedEvent>
/** /**
* Rebuild Version * Rebuild Version
*/ */
public static final String VER = "2.2.0-dev"; public static final String VER = "2.2.0-beta1";
/** /**
* Rebuild Build * Rebuild Build
*/ */

View file

@ -25,6 +25,12 @@ public class CheckDangers {
private static final String CKEY_DANGERS = "_DANGERS"; private static final String CKEY_DANGERS = "_DANGERS";
// 检查项
private static final String HasUpdate = "HasUpdate";
private static final String AdminMsg = "AdminMsg";
private static final String UsersMsg = "UsersMsg";
private static final String CommercialNoRbv = "CommercialNoRbv";
/** /**
*/ */
public void checks() { public void checks() {
@ -38,27 +44,24 @@ public class CheckDangers {
JSONObject checkBuild = License.siteApi("api/authority/check-build", true); JSONObject checkBuild = License.siteApi("api/authority/check-build", true);
if (checkBuild != null && checkBuild.getIntValue("build") > Application.BUILD) { if (checkBuild != null && checkBuild.getIntValue("build") > Application.BUILD) {
String hasUpdate = Language.LF( dangers.put(HasUpdate, checkBuild.getString("version") + "$$$$" + checkBuild.getString("releaseUrl"));
"NewVersion", checkBuild.getString("version"), checkBuild.getString("releaseUrl"));
hasUpdate = hasUpdate.replace("<a ", "<a target='_blank' class='link' ");
dangers.put("HasUpdate", hasUpdate);
} else { } else {
dangers.remove("HasUpdate"); dangers.remove(HasUpdate);
} }
JSONObject echoValidity = License.siteApi("api/authority/echo?once=" + ServerStatus.STARTUP_ONCE, false); JSONObject echoValidity = License.siteApi("api/authority/echo?once=" + ServerStatus.STARTUP_ONCE, false);
if (echoValidity != null && !echoValidity.isEmpty()) { if (echoValidity != null && !echoValidity.isEmpty()) {
String adminMsg = echoValidity.getString("adminMsg"); String adminMsg = echoValidity.getString("adminMsg");
if (adminMsg == null) dangers.remove("AdminMsg"); if (adminMsg == null) dangers.remove(AdminMsg);
else dangers.put("AdminMsg", adminMsg); else dangers.put(AdminMsg, adminMsg);
String usersMsg = echoValidity.getString("usersMsg"); String usersMsg = echoValidity.getString("usersMsg");
if (usersMsg == null) dangers.remove("UsersMsg"); if (usersMsg == null) dangers.remove(UsersMsg);
else dangers.put("UsersMsg", usersMsg); else dangers.put(UsersMsg, usersMsg);
} else { } else {
dangers.remove("AdminMsg"); dangers.remove(AdminMsg);
dangers.remove("UsersMsg"); dangers.remove(UsersMsg);
} }
// 放入缓存 // 放入缓存
@ -70,25 +73,40 @@ public class CheckDangers {
/** /**
* @return * @return
*/ */
public static Collection<String> getAdminDangers() { public static Collection<String> getAdminDanger() {
LinkedHashMap<String, String> dangers = (LinkedHashMap<String, String>) Application.getCommonsCache().getx(CKEY_DANGERS); LinkedHashMap<String, String> dangers = (LinkedHashMap<String, String>) Application.getCommonsCache().getx(CKEY_DANGERS);
if (License.isCommercial() && !License.isRbvAttached()) {
if (dangers == null) dangers = new LinkedHashMap<>();
dangers.put(CommercialNoRbv, Language.L("CommercialNoRbvTip"));
}
if (dangers == null || dangers.isEmpty()) { if (dangers == null || dangers.isEmpty()) {
return null; return null;
} }
dangers = (LinkedHashMap<String, String>) dangers.clone(); dangers = (LinkedHashMap<String, String>) dangers.clone();
dangers.remove("UsersMsg"); dangers.remove(UsersMsg);
String hasUpdate = dangers.get(HasUpdate);
if (hasUpdate != null && hasUpdate.contains("$$$$")) {
String[] ss = hasUpdate.split("\\$\\$\\$\\$");
hasUpdate = Language.LF("NewVersion", ss[0], ss[1]);
hasUpdate = hasUpdate.replace("<a ", "<a target=\"_blank\" ");
dangers.put(HasUpdate, hasUpdate);
}
return dangers.values(); return dangers.values();
} }
/** /**
* @return * @return
*/ */
public static String getUserDanger() { public static String getUsersDanger() {
LinkedHashMap<String, String> dangers = (LinkedHashMap<String, String>) Application.getCommonsCache().getx(CKEY_DANGERS); LinkedHashMap<String, String> dangers = (LinkedHashMap<String, String>) Application.getCommonsCache().getx(CKEY_DANGERS);
if (dangers == null || dangers.isEmpty()) { if (dangers == null || dangers.isEmpty()) {
return null; return null;
} }
return dangers.get("UsersMsg"); return dangers.get(UsersMsg);
} }
} }

View file

@ -79,7 +79,7 @@ public class AdminVerfiyController extends BaseController {
@RequestMapping("/user/admin-dangers") @RequestMapping("/user/admin-dangers")
public RespBody adminDangers() { public RespBody adminDangers() {
return RespBody.ok(CheckDangers.getAdminDangers()); return RespBody.ok(CheckDangers.getAdminDanger());
} }
// -- CLI // -- CLI

View file

@ -130,7 +130,7 @@ public class LoginController extends BaseController {
ServletUtils.setSessionAttribute(request, SK_NEED_VCODE, true); ServletUtils.setSessionAttribute(request, SK_NEED_VCODE, true);
} }
mv.getModelMap().put("UsersMsg", CheckDangers.getUserDanger()); mv.getModelMap().put("UsersMsg", CheckDangers.getUsersDanger());
return mv; return mv;
} }

View file

@ -1315,6 +1315,7 @@
"LoginCaptchaPolicy2": "Always display", "LoginCaptchaPolicy2": "Always display",
"DBBackupsKeepingDays": "Backup retention time", "DBBackupsKeepingDays": "Backup retention time",
"RebuildPowered": "Powered by [REBUILD](https://getrebuild.com/)", "RebuildPowered": "Powered by [REBUILD](https://getrebuild.com/)",
"CommercialNoRbvTip": "System has detected the commercial feature package is not installed, and the relevant commercial feature may not be available. Please contact the REBUILD to obtain it",
"s.__": "STATE", "s.__": "STATE",
"s.ApprovalState.DRAFT": "Draft", "s.ApprovalState.DRAFT": "Draft",

View file

@ -1315,6 +1315,7 @@
"LoginCaptchaPolicy2": "总是显示", "LoginCaptchaPolicy2": "总是显示",
"DBBackupsKeepingDays": "备份保留时间", "DBBackupsKeepingDays": "备份保留时间",
"RebuildPowered": "[REBUILD](https://getrebuild.com/) 强力驱动", "RebuildPowered": "[REBUILD](https://getrebuild.com/) 强力驱动",
"CommercialNoRbvTip": "系统检测到增值功能包未安装,相关增值功能可能无法使用。请联系 REBUILD 服务人员获取",
"s.__": "状态", "s.__": "状态",
"s.ApprovalState.DRAFT": "草稿", "s.ApprovalState.DRAFT": "草稿",

View file

@ -1315,6 +1315,7 @@
"LoginCaptchaPolicy2": "總是顯示", "LoginCaptchaPolicy2": "總是顯示",
"DBBackupsKeepingDays": "備份保留時間", "DBBackupsKeepingDays": "備份保留時間",
"RebuildPowered": "[REBUILD](https://getrebuild.com/) 強力驅動", "RebuildPowered": "[REBUILD](https://getrebuild.com/) 強力驅動",
"CommercialNoRbvTip": "系統檢測到增值功能包未安裝,相關增值功能可能無法使用。請聯繫 REBUILD 服務人員獲取",
"s.__": "狀態", "s.__": "狀態",
"s.ApprovalState.DRAFT": "草稿", "s.ApprovalState.DRAFT": "草稿",

View file

@ -3841,3 +3841,15 @@ a.select-lang:hover {
background-color: #eee; background-color: #eee;
cursor: default; cursor: default;
} }
.popover {
max-width: 300px;
}
.admin-danger-list > div {
padding: 12px 0;
}
.admin-danger-list > div + div {
border-top: 1px solid #eee;
}

View file

@ -96,10 +96,11 @@ $(function () {
$.get('/user/admin-dangers', function (res) { $.get('/user/admin-dangers', function (res) {
if ((res.data || []).length > 0) { if ((res.data || []).length > 0) {
$('.admin-danger').removeClass('hide') $('.admin-danger').removeClass('hide')
var dd = [] var dd = ['<div class="admin-danger-list">']
$(res.data).each(function () { $(res.data).each(function () {
dd.push('<div class="p-1">' + this + '</div>') dd.push('<div>' + this + '</div>')
}) })
dd.push('</div>')
topPopover($('.admin-danger a'), dd.join('')) topPopover($('.admin-danger a'), dd.join(''))
} }
}) })