This commit is contained in:
devezhao 2021-05-28 12:44:14 +08:00
parent 85b89b7a8f
commit 36719ac042
17 changed files with 145 additions and 27 deletions

2
@rbv

@ -1 +1 @@
Subproject commit 5cd0278ad08b49508bf278654c8ab4825b868870
Subproject commit eea4cf588a86801837737d4907ca96b8edc67874

View file

@ -207,6 +207,7 @@ public class EntityHelper {
public static final int SmsendLog = 35;
public static final int Language = 36;
public static final int TransformConfig = 37;
public static final int FrontjsCode = 38;
// 动态

View file

@ -75,8 +75,9 @@ public class RebuildWebInterceptor implements AsyncHandlerInterceptor, InstallSt
request.setAttribute(WebConstants.LOCALE, requestEntry.getLocale());
request.setAttribute(WebConstants.$BUNDLE, Application.getLanguage().getBundle(requestEntry.getLocale()));
request.setAttribute(WebConstants.USE_THEME,
!requestEntry.getRequestUri().contains("/admin/") && License.isCommercial());
boolean adminPage = requestEntry.getRequestUri().contains("/admin/")
|| requestEntry.getRequestUri().contains("/admin-");
request.setAttribute(WebConstants.USE_THEME, !adminPage && License.isCommercial());
}
final String requestUri = requestEntry.getRequestUri();
@ -98,8 +99,7 @@ public class RebuildWebInterceptor implements AsyncHandlerInterceptor, InstallSt
else if (!requestUri.contains("/setup/")) {
sendRedirect(response, "/setup/install", null);
return false;
}
else {
} else {
return true;
}
}

View file

@ -97,6 +97,14 @@ public class MetaEntityController extends BaseController {
return mv;
}
@GetMapping("entity/{entity}/frontjs")
public ModelAndView pageFrontJs(@PathVariable String entity, HttpServletRequest request) {
ModelAndView mv = createModelAndView("/admin/metadata/frontjs");
mv.getModel().put("isSuperAdmin", UserHelper.isSuperAdmin(getRequestUser(request)));
setEntityBase(mv, entity);
return mv;
}
@ResponseBody
@RequestMapping("entity/entity-list")
public Object listEntity(HttpServletRequest request) {

View file

@ -369,6 +369,14 @@
<field name="isDisabled" type="bool" default-value="F" description="是否禁用"/>
</entity>
<entity name="FrontjsCode" type-code="038" description="FrontJS" queryable="false">
<field name="codeId" type="primary"/>
<field name="belongEntity" type="string" max-length="100" nullable="false" updatable="false" description="所属实体"/>
<field name="applyPath" type="string" max-length="200" description="应用路径"/>
<field name="code" type="text" description="代码"/>
<field name="es5Code" type="text" description="ES5 代码"/>
</entity>
<!-- 动态不涉及审计 -->
<entity name="Feeds" type-code="040" description="动态" name-field="content" extra-attrs="{icon:'chart-donut'}">
<field name="feedsId" type="primary"/>

View file

@ -724,6 +724,19 @@ create table if not exists `extform_config` (
primary key (`CONFIG_ID`)
)Engine=InnoDB;
-- ************ Entity [FrontjsCode] DDL ************
create table if not exists `frontjs_code` (
`CODE_ID` char(20) not null,
`BELONG_ENTITY` varchar(100) not null comment '所属实体',
`APPLY_PATH` varchar(200) comment '应用路径',
`CODE` text(21845) comment '代码',
`ES5_CODE` text(21845) comment 'ES5 代码',
`MODIFIED_ON` timestamp not null default current_timestamp comment '修改时间',
`MODIFIED_BY` char(20) not null comment '修改人',
`CREATED_BY` char(20) not null comment '创建人',
`CREATED_ON` timestamp not null default current_timestamp comment '创建时间',
primary key (`CODE_ID`)
)Engine=InnoDB;
-- #3 datas
@ -777,4 +790,4 @@ insert into `project_plan_config` (`CONFIG_ID`, `PROJECT_ID`, `PLAN_NAME`, `SEQ`
-- DB Version (see `db-upgrade.sql`)
insert into `system_config` (`CONFIG_ID`, `ITEM`, `VALUE`)
values ('021-9000000000000001', 'DBVer', 35);
values ('021-9000000000000001', 'DBVer', 36);

View file

@ -1,6 +1,21 @@
-- Database upgrade scripts for rebuild 1.x and 2.x
-- Each upgraded starts with `-- #VERSION`
-- #36 (v2.4)
-- ************ Entity [FrontjsCode] DDL ************
create table if not exists `frontjs_code` (
`CODE_ID` char(20) not null,
`BELONG_ENTITY` varchar(100) not null comment '所属实体',
`APPLY_PATH` varchar(200) comment '应用路径',
`CODE` text(21845) comment '代码',
`ES5_CODE` text(21845) comment 'ES5 代码',
`MODIFIED_ON` timestamp not null default current_timestamp comment '修改时间',
`MODIFIED_BY` char(20) not null comment '修改人',
`CREATED_BY` char(20) not null comment '创建人',
`CREATED_ON` timestamp not null default current_timestamp comment '创建时间',
primary key (`CODE_ID`)
)Engine=InnoDB;
-- #35 (v2.3)
alter table `project_task`
add column `RELATED_RECORD` char(20) comment '相关业务记录',

View file

@ -7,7 +7,7 @@
<title>[[${bundle.L('表单回填')}]]</title>
<style type="text/css">
.dataTables_wrapper .rb-datatable-header {
position: static
position: static;
}
span.badge {
font-size: 1rem;
@ -49,6 +49,7 @@
<li><a href="../../form-design">[[${bundle.L('表单设计')}]]</a></li>
<li class="active"><a href="../../fields">[[${bundle.L('字段管理')}]]</a></li>
<li><a href="../../advanced">[[${bundle.L('高级配置')}]]</a></li>
<li><a href="../../frontjs">FrontJS</a></li>
</ul>
</div>
</div>

View file

@ -4,24 +4,6 @@
<th:block th:replace="~{/_include/header}" />
<meta name="page-help" content="https://getrebuild.com/docs/admin/meta-entity" />
<title>[[${bundle.L('高级配置')}]]</title>
<style type="text/css">
a#entityIcon {
display: inline-block;
width: 36px;
height: 36px;
background-color: #e3e3e3;
text-align: center;
border-radius: 2px;
}
a#entityIcon .icon {
font-size: 26px;
color: #555;
line-height: 36px;
}
a#entityIcon:hover {
opacity: 0.8;
}
</style>
</head>
<body>
<div class="rb-wrapper rb-fixed-sidebar rb-collapsible-sidebar rb-collapsible-sidebar-hide-logo rb-aside rb-color-header" th:classappend="${sideCollapsedClazz}">
@ -44,6 +26,7 @@
<li><a href="form-design">[[${bundle.L('表单设计')}]]</a></li>
<li><a href="fields">[[${bundle.L('字段管理')}]]</a></li>
<li class="active"><a href="advanced">[[${bundle.L('高级配置')}]]</a></li>
<li><a href="frontjs">FrontJS</a></li>
</ul>
</div>
</div>

View file

@ -26,6 +26,7 @@
<li><a href="form-design">[[${bundle.L('表单设计')}]]</a></li>
<li><a href="fields">[[${bundle.L('字段管理')}]]</a></li>
<li><a href="advanced">[[${bundle.L('高级配置')}]]</a></li>
<li><a href="frontjs">FrontJS</a></li>
</ul>
</div>
</div>

View file

@ -27,6 +27,7 @@
<li><a href="../form-design">[[${bundle.L('表单设计')}]]</a></li>
<li class="active"><a href="../fields">[[${bundle.L('字段管理')}]]</a></li>
<li><a href="../advanced">[[${bundle.L('高级配置')}]]</a></li>
<li><a href="frontjs">FrontJS</a></li>
</ul>
</div>
</div>

View file

@ -26,6 +26,7 @@
<li><a href="form-design">[[${bundle.L('表单设计')}]]</a></li>
<li class="active"><a href="fields">[[${bundle.L('字段管理')}]]</a></li>
<li><a href="advanced">[[${bundle.L('高级配置')}]]</a></li>
<li><a href="frontjs">FrontJS</a></li>
</ul>
</div>
</div>

View file

@ -27,6 +27,7 @@
<li class="active"><a href="form-design">[[${bundle.L('表单设计')}]]</a></li>
<li><a href="fields">[[${bundle.L('字段管理')}]]</a></li>
<li><a href="advanced">[[${bundle.L('高级配置')}]]</a></li>
<li><a href="frontjs">FrontJS</a></li>
</ul>
</div>
</div>

View file

@ -0,0 +1,82 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<th:block th:replace="~{/_include/header}" />
<meta name="page-help" content="https://getrebuild.com/docs/dev/how-use-front-api" />
<title>FrontJS</title>
<style type="text/css">
.CodeMirror {
padding: 0;
}
.cm-s-material-darker {
font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif !important;
}
.CodeMirror-hints.material-darker {
font-family: Menlo, Monaco, Consolas, 'Courier New', monospace !important;
}
</style>
</head>
<body>
<div class="rb-wrapper rb-fixed-sidebar rb-collapsible-sidebar rb-collapsible-sidebar-hide-logo rb-aside rb-color-header" th:classappend="${sideCollapsedClazz}">
<th:block th:replace="~{/_include/nav-top}" />
<th:block th:replace="~{/_include/nav-left-admin(active='entities')}" />
<div class="rb-content">
<aside class="page-aside">
<div class="rb-scroller-aside rb-scroller">
<div class="aside-content">
<div class="content">
<div class="aside-header">
<button class="navbar-toggle collapsed" type="button"><span class="icon zmdi zmdi-caret-down"></span></button>
<span class="title">[[${entityLabel}]]</span>
<p class="description">[[${comments}]]</p>
</div>
</div>
<div class="aside-nav collapse">
<ul class="nav">
<li><a href="base">[[${bundle.L('基本信息')}]]</a></li>
<li><a href="form-design">[[${bundle.L('表单设计')}]]</a></li>
<li><a href="fields">[[${bundle.L('字段管理')}]]</a></li>
<li><a href="advanced">[[${bundle.L('高级配置')}]]</a></li>
<li class="active"><a href="frontjs">FrontJS</a></li>
</ul>
</div>
</div>
</div>
</aside>
<div class="main-content container-fluid">
<div class="code-toolbar row">
<div class="col">
<input class="form-control form-control-sm" id="applyPath" th:placeholder="${bundle.L('应用路径')}" />
</div>
<div class="col text-right">
<div class="btn-group J_save_group">
<button class="btn btn-primary J_save" type="button" data-spinner="grow">[[${bundle.L('保存')}]]</button>
<button class="btn btn-primary dropdown-toggle auto" type="button" data-toggle="dropdown"><span class="icon zmdi zmdi-chevron-down"></span></button>
<div class="dropdown-menu dropdown-menu-primary dropdown-menu-right">
<a class="dropdown-item J_draft">[[${bundle.L('保存草稿')}]]</a>
</div>
</div>
</div>
</div>
<div class="mt-2">
<textarea id="codeeditor" class="hide"></textarea>
</div>
</div>
</div>
</div>
<th:block th:replace="~{/_include/footer}" />
<script>
window.__PageConfig = {
id: '[[${entityMetaId}]]',
entity: '[[${entityName}]]',
isSuperAdmin: '[[${isSuperAdmin}]]' === 'true',
}
</script>
<link rel="stylesheet" type="text/css" th:href="@{/assets/lib/codemirror/codemirror.css}" />
<link rel="stylesheet" type="text/css" th:href="@{/assets/lib/codemirror/theme/material-darker.css}" />
<script th:src="@{/assets/lib/codemirror/codemirror.js}"></script>
<script th:src="@{/assets/lib/codemirror/mode/javascript/javascript.js}"></script>
<script th:src="@{/assets/lib/codemirror/mode/jsx/jsx.js}"></script>
<script th:src="@{/assets/js/frontjs/frontjs.js}" type="text/babel"></script>
</body>
</html>

View file

@ -128,5 +128,6 @@
<script th:src="@{/assets/js/rb-assignshare.js}" type="text/babel"></script>
<script th:src="@{/assets/js/rb-approval.js}" type="text/babel"></script>
<script th:src="@{/assets/js/settings-share2.js}" type="text/babel"></script>
<script th:if="${commercial > 0}" th:src="@{/commons/frontjs/use-frontjs}"></script>
</body>
</html>

View file

@ -126,5 +126,6 @@
<script th:src="@{/assets/js/rb-view.append.js}" type="text/babel"></script>
<script th:src="@{/assets/js/rb-assignshare.js}" type="text/babel"></script>
<script th:src="@{/assets/js/rb-approval.js}" type="text/babel"></script>
<script th:if="${commercial > 0}" th:src="@{/commons/frontjs/use-frontjs}"></script>
</body>
</html>

View file

@ -13,6 +13,7 @@ import cn.devezhao.persist4j.metadata.impl.ConfigurationMetadataFactory;
import cn.devezhao.persist4j.util.support.Table;
import com.rebuild.core.Application;
import com.rebuild.core.BootApplication;
import com.rebuild.core.metadata.EntityHelper;
import com.rebuild.core.metadata.easymeta.EasyMetaFactory;
import org.dom4j.Element;
@ -34,8 +35,8 @@ public class SchemaGenerator {
PMF = Application.getPersistManagerFactory();
// !!! COMMENT DynamicMetadataFactory#appendConfig4Db
generate();
// generate(EntityHelper.ExtformConfig);
// generate();
generate(EntityHelper.FrontjsCode);
System.exit(0);
}