@steedos/service-pages 2.2.4 → 2.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/docs//350/207/252/345/256/232/344/271/211form/347/273/204/344/273/266.md +39 -0
  2. package/main/default/client/builder.client.js +11 -10
  3. package/main/default/client/onWindowMessage.client.js +39 -0
  4. package/main/default/client/page.render.client.js +101 -58
  5. package/main/default/objects/page_assignments/fields/app.field.yml +2 -0
  6. package/main/default/objects/page_assignments/fields/desktop.field.yml +1 -1
  7. package/main/default/objects/page_assignments/fields/mobile.field.yml +1 -1
  8. package/main/default/objects/page_assignments/permissions/user.permission.yml +2 -2
  9. package/main/default/objects/page_versions/buttons/standard_delete.button.js +5 -0
  10. package/main/default/objects/page_versions/buttons/standard_delete.button.yml +4 -0
  11. package/main/default/objects/page_versions/buttons/standard_delete_many.button.js +5 -0
  12. package/main/default/objects/page_versions/buttons/standard_delete_many.button.yml +4 -0
  13. package/main/default/objects/page_versions/buttons/standard_new.button.js +5 -0
  14. package/main/default/objects/page_versions/buttons/standard_new.button.yml +5 -0
  15. package/main/default/objects/page_versions/fields/is_active.field.yml +4 -0
  16. package/main/default/objects/page_versions/fields/page.field.yml +2 -1
  17. package/main/default/objects/page_versions/fields/schema.field.yml +2 -2
  18. package/main/default/objects/page_versions/fields/version.field.yml +2 -1
  19. package/main/default/objects/page_versions/listviews/all.listview.yml +1 -1
  20. package/main/default/objects/page_versions/listviews/recent.listview.yml +1 -1
  21. package/main/default/objects/page_versions/permissions/admin.permission.yml +1 -1
  22. package/main/default/objects/page_versions/permissions/user.permission.yml +2 -2
  23. package/main/default/objects/pages/fields/is_active.field.yml +5 -0
  24. package/main/default/objects/pages/fields/is_archived.field.yml +2 -2
  25. package/main/default/objects/pages/fields/type.field.yml +2 -2
  26. package/main/default/objects/pages/listviews/all.listview.yml +1 -0
  27. package/main/default/objects/pages/listviews/recent.listview.yml +1 -0
  28. package/main/default/objects/pages/pages.object.yml +5 -2
  29. package/main/default/objects/pages/permissions/user.permission.yml +2 -2
  30. package/main/default/routes/design.html +10 -1
  31. package/main/default/routes/page_design.router.js +10 -1
  32. package/main/default/routes/page_schema.router.js +2 -1
  33. package/main/default/services/page.service.js +32 -15
  34. package/main/default/triggers/page_assignments_check.trigger.js +23 -0
  35. package/main/default/triggers/page_versions_check.trigger.js +21 -0
  36. package/main/default/triggers/pages_check.trigger.js +30 -0
  37. package/package.json +2 -2
  38. package/docs/amis.md +0 -53
  39. package/main/default/objects/page_versions/fields/is_archived.field.yml +0 -4
  40. package/public/builder.io/react/dist/builder-react.browser.js +0 -21
@@ -0,0 +1,39 @@
1
+ ## 自定义Form组件(新增、编辑)
2
+
3
+ - Form 组件需要自带弹出层
4
+ - Form 组件内部处理数据接口问题
5
+
6
+ ### 渲染Form组件时, 传入的data为
7
+ ```
8
+ data: {
9
+ appId: appId,
10
+ objectName: objectName,
11
+ recordId: record._id // 新增时为null
12
+ title: title,
13
+ initialValues: initialValues,
14
+
15
+ context: {
16
+ rootUrl: ROOT URL,
17
+ tenantId: 魔方Id,
18
+ userId: 用户Id,
19
+ authToken: 用户认证authToken
20
+ }
21
+ }
22
+ ```
23
+
24
+ ### Form组件数据处理完后,需要发出消息:
25
+
26
+ - 新增记录事件
27
+ ```
28
+ window.postMessage(Object.assign({type: "record.created"}, data, {record: record}), "*")
29
+ ```
30
+
31
+ - 编辑记录事件
32
+ ```
33
+ window.postMessage(Object.assign({type: "record.edited"}, data, {record: record}), "*")
34
+ ```
35
+ ### Platform 消费record.created、record.edited 消息
36
+
37
+ - record.created: 新建的对象名称等于当前对象名称, 则进入详细页面, 否则更新当前route
38
+
39
+ - record.edited: 更新当前页面
@@ -1,10 +1,11 @@
1
- // ;(function() {
2
- // Builder.registryChange.subscribe(function(registry){
3
- // _.each(registry, function(value, key){
4
- // _.each(value, function(item){
5
- // const {component, ...options} = item
6
- // Builder.registerComponent(component, options)
7
- // })
8
- // })
9
- // })
10
- // })();
1
+ ;(function() {
2
+ try {
3
+ var hm = document.createElement("script");
4
+ hm.src = "/requirejs/require.js";
5
+ var s = document.getElementsByTagName("script")[0];
6
+ s.parentNode.insertBefore(hm, s);
7
+ } catch (error) {
8
+ console.log(error);
9
+ }
10
+ })();
11
+ Builder.set({rootUrl: __meteor_runtime_config__.ROOT_URL})
@@ -0,0 +1,39 @@
1
+ /*
2
+ * @Author: steedos
3
+ * @Date: 2022-03-24 14:39:44
4
+ * @Description: 监听window message , 主要处理新增、编辑记录后的路由处理.
5
+ */
6
+
7
+ const listenerMessageType = ['record.created', 'record.edited'];
8
+
9
+ window.addEventListener('message', function (event) {
10
+ const { data } = event;
11
+ if (data && listenerMessageType.includes(data.type)) {
12
+ const {objectName, record} = data;
13
+ const {app_id: appId, object_name: routeObjectName} = FlowRouter.current().params;
14
+
15
+ switch (data.type) {
16
+ case 'record.created':
17
+ if(objectName === routeObjectName){
18
+ var url = `/app/${appId}/${objectName}/view/${record._id}`
19
+ FlowRouter.go(url)
20
+ }else{
21
+ FlowRouter.current()
22
+ }
23
+ break;
24
+ case 'record.edited':
25
+ if (FlowRouter.current().route.path.endsWith("/:record_id")) {
26
+ FlowRouter.reload()
27
+ // ObjectForm有缓存,修改子表记录可能会有主表记录的汇总字段变更,需要刷新表单数据
28
+ SteedosUI.reloadRecord(objectName, record._id)
29
+ } else {
30
+ window.refreshDxSchedulerInstance()
31
+ window.refreshGrid();
32
+ }
33
+ break;
34
+ default:
35
+ break;
36
+ }
37
+
38
+ }
39
+ });
@@ -1,36 +1,52 @@
1
+ /*
2
+ * @Author: steedos
3
+ * @Date: 2022-03-22 19:13:57
4
+ * @Description: 提供自定义page渲染能力, 供内部使用, 内容会迭代调整, 不对用户开放.
5
+ */
6
+
1
7
  Steedos.Page = {
2
8
  App: {},
3
9
  Record: {},
4
10
  Listview: {},
5
11
  RelatedListview: {},
6
- Form:{
12
+ Form: {
7
13
  StandardNew: {},
8
14
  StandardEdit: {}
9
15
  }
10
16
  };
11
17
 
12
18
  function upperFirst(str) {
13
- return str.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase());
19
+ return str.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase());
14
20
  };
15
21
 
16
- Steedos.Page.getPage = function(type, appId, objectApiName, recordId){
17
- if(objectApiName){
18
- const objectInfo = Creator.getObject(Session.get("object_name"));
19
- if(objectInfo.version < 2){
20
- return ;
22
+ function getModalElement(name){
23
+ let modalRoot = document.getElementById(`steedos-page-modal-root-${name}`);
24
+ if (!modalRoot) {
25
+ modalRoot = document.createElement('div');
26
+ modalRoot.setAttribute('id', `steedos-page-modal-root-${name}`);
27
+ document.body.appendChild(modalRoot)
28
+ }
29
+ return modalRoot;
30
+ }
31
+
32
+
33
+ Steedos.Page.getPage = function (type, appId, objectApiName, recordId, pageId) {
34
+ if (type != 'list' && objectApiName) {
35
+ const objectInfo = Creator.getObject(objectApiName);
36
+ if (objectInfo && objectInfo.version < 2) {
37
+ return;
21
38
  }
22
39
  }
23
40
  const formFactor = Steedos.isMobile() ? "SMALL" : "LARGE";
24
- const page = Steedos.authRequest(`/api/pageSchema/${type}?app=${appId}&objectApiName=${objectApiName}&recordId=${recordId}&formFactor=${formFactor}`, {async:false});
25
- if(page && page.schema){
41
+ const page = Steedos.authRequest(`/api/pageSchema/${type}?app=${appId}&objectApiName=${objectApiName}&recordId=${recordId}&pageId=${pageId}&formFactor=${formFactor}`, { async: false });
42
+ if (page && page.schema) {
26
43
  return page;
27
44
  }
28
45
  }
29
46
 
30
47
  Steedos.Page.render = function (root, page, data) {
31
- console.log(`render======>data`, data)
32
48
  if (page.render_engine && page.render_engine != 'redash') {
33
- return SteedosUI.render(BuilderComponent, {
49
+ const options = {
34
50
  model: "page", content: {
35
51
  "data": {
36
52
  "blocks": [
@@ -42,10 +58,14 @@ Steedos.Page.render = function (root, page, data) {
42
58
  "name": upperFirst(page.render_engine),
43
59
  "options": {
44
60
  "schema": typeof page.schema === 'string' ? JSON.parse(page.schema) : page.schema,
45
- "data": Object.assign({}, data,{
61
+ "data": Object.assign({}, data, {
62
+ context: {
46
63
  rootUrl: __meteor_runtime_config__.ROOT_URL,
47
- userSession: Creator.USER_CONTEXT.user
48
- })
64
+ tenantId: Creator.USER_CONTEXT.spaceId,
65
+ userId: Creator.USER_CONTEXT.userId,
66
+ authToken: Creator.USER_CONTEXT.user.authToken
67
+ }
68
+ })
49
69
  }
50
70
  },
51
71
  }
@@ -54,13 +74,15 @@ Steedos.Page.render = function (root, page, data) {
54
74
  ]
55
75
  }
56
76
  }
57
- }, root);
77
+ };
78
+ console.debug('render data', options)
79
+ return SteedosUI.render(BuilderComponent, options, root);
58
80
  }
59
81
  };
60
82
 
61
83
  Steedos.Page.App.render = function (template, pageName, app_id) {
62
- if(!pageName){
63
- return ;
84
+ if (!pageName) {
85
+ return;
64
86
  }
65
87
  var rootId = "steedosPageRoot";
66
88
  var modalRoot = document.getElementById(rootId);
@@ -73,9 +95,9 @@ Steedos.Page.App.render = function (template, pageName, app_id) {
73
95
  $(".page-template-root")[0].appendChild(modalRoot);
74
96
  }
75
97
 
76
- const page = Steedos.Page.getPage('app', app_id);
77
- if(page){
78
- if(page.render_engine && page.render_engine != 'redash'){
98
+ const page = Steedos.Page.getPage('app', app_id, null, null, pageName);
99
+ if (page) {
100
+ if (page.render_engine && page.render_engine != 'redash') {
79
101
  return Steedos.Page.render($("#" + rootId)[0], page, {
80
102
  appId: app_id
81
103
  });
@@ -87,12 +109,12 @@ Steedos.Page.App.render = function (template, pageName, app_id) {
87
109
  }, $("#" + rootId)[0]);
88
110
  };
89
111
 
90
- Steedos.Page.Listview.render = function(template, objectApiName){
112
+ Steedos.Page.Listview.render = function (template, objectApiName) {
91
113
  try {
92
- if(!template.data.regions || !objectApiName){
93
- return ;
114
+ if (!template.data.regions || !objectApiName) {
115
+ return;
94
116
  }
95
- const page = template.data.regions().page;
117
+ const { page, ...data } = template.data.regions();
96
118
 
97
119
  var rootId = "steedosPageRecordRoot";
98
120
  var modalRoot = document.getElementById(rootId);
@@ -105,22 +127,20 @@ Steedos.Page.Listview.render = function(template, objectApiName){
105
127
  $(".page-list-view-root")[0].appendChild(modalRoot);
106
128
  }
107
129
 
108
- if(page.render_engine && page.render_engine != 'redash'){
109
- return Steedos.Page.render($("#" + rootId)[0], page, template.data.regions());
130
+ if (page.render_engine && page.render_engine != 'redash') {
131
+ return Steedos.Page.render($("#" + rootId)[0], page, data);
110
132
  }
111
133
  } catch (error) {
112
-
134
+
113
135
  }
114
136
  };
115
137
 
116
- Steedos.Page.Record.render = function(template, objectApiName, recordId){
138
+ Steedos.Page.Record.render = function (template, objectApiName, recordId) {
117
139
  try {
118
- if(!template.data.regions || !objectApiName || !recordId){
119
- return ;
140
+ if (!template.data.regions || !objectApiName || !recordId) {
141
+ return;
120
142
  }
121
- console.log(`Steedos.Page.Record.render...`, template.data.regions(), objectApiName, recordId);
122
- const page = template.data.regions().page;
123
-
143
+ const { page, ...data } = template.data.regions();
124
144
  var rootId = "steedosPageRecordRoot";
125
145
  var modalRoot = document.getElementById(rootId);
126
146
  // if(modalRoot){
@@ -132,20 +152,20 @@ Steedos.Page.Record.render = function(template, objectApiName, recordId){
132
152
  $(".page-record-view-root")[0].appendChild(modalRoot);
133
153
  }
134
154
 
135
- if(page.render_engine && page.render_engine != 'redash'){
136
- return Steedos.Page.render($("#" + rootId)[0], page, template.data.regions());
155
+ if (page.render_engine && page.render_engine != 'redash') {
156
+ return Steedos.Page.render($("#" + rootId)[0], page, data);
137
157
  }
138
158
  } catch (error) {
139
-
159
+
140
160
  }
141
161
  };
142
162
 
143
- Steedos.Page.RelatedListview.render = function(template, objectApiName){
163
+ Steedos.Page.RelatedListview.render = function (template, objectApiName) {
144
164
  try {
145
- if(!template.data.regions || !objectApiName){
146
- return ;
165
+ if (!template.data.regions || !objectApiName) {
166
+ return;
147
167
  }
148
- const page = template.data.regions().page;
168
+ const { page, ...data } = template.data.regions();
149
169
 
150
170
  var rootId = "steedosPageRecordRoot";
151
171
  var modalRoot = document.getElementById(rootId);
@@ -158,54 +178,77 @@ Steedos.Page.RelatedListview.render = function(template, objectApiName){
158
178
  $(".page-related-list-view-root")[0].appendChild(modalRoot);
159
179
  }
160
180
 
161
- if(page.render_engine && page.render_engine != 'redash'){
162
- return Steedos.Page.render($("#" + rootId)[0], page, template.data.regions());
181
+ if (page.render_engine && page.render_engine != 'redash') {
182
+ return Steedos.Page.render($("#" + rootId)[0], page, data);
163
183
  }
164
184
  } catch (error) {
165
-
185
+
166
186
  }
167
187
  };
168
188
 
169
- Steedos.Page.Form.StandardNew.render = function(appId, objectApiName, tilte, initialValues){
189
+ Steedos.Page.Form.StandardNew.render = function (appId, objectApiName, title, initialValues) {
190
+ const page = Steedos.Page.getPage('form', appId, objectApiName);
191
+ if (page && page.schema) {
192
+ const elementId = getModalElement(`${objectApiName}-standard_new`);
193
+ return Steedos.Page.render(elementId, page, {
194
+ appId: appId,
195
+ objectName: objectApiName,
196
+ title: title,
197
+ initialValues: initialValues
198
+ });
199
+ }
200
+
170
201
  SteedosUI.showModal(stores.ComponentRegistry.components.ObjectForm, {
171
202
  name: `${objectApiName}_standard_new_form`,
172
203
  objectApiName: objectApiName,
173
- title: tilte,
204
+ title: title,
174
205
  initialValues: initialValues,
175
- afterInsert: function(result){
176
- if(result.length > 0){
206
+ afterInsert: function (result) {
207
+ if (result.length > 0) {
177
208
  var record = result[0];
178
- setTimeout(function(){
209
+ setTimeout(function () {
179
210
  var url = `/app/${appId}/${objectApiName}/view/${record._id}`
180
211
  FlowRouter.go(url)
181
212
  }
182
- , 1);
213
+ , 1);
183
214
  return true;
184
215
  }
185
216
  }
186
- }, null, {iconPath: '/assets/icons'});
217
+ }, null, { iconPath: '/assets/icons' });
187
218
  };
188
219
 
189
- Steedos.Page.Form.StandardEdit.render = function(appId, objectApiName, tilte, recordId){
220
+ Steedos.Page.Form.StandardEdit.render = function (appId, objectApiName, title, recordId) {
221
+
222
+ const page = Steedos.Page.getPage('form', appId, objectApiName, recordId);
223
+ if (page && page.schema) {
224
+ const elementId = getModalElement(`${objectApiName}-standard_edit`);
225
+ return Steedos.Page.render(elementId, page, {
226
+ appId: appId,
227
+ objectName: objectApiName,
228
+ title: title,
229
+ recordId: recordId
230
+ });
231
+ }
232
+
190
233
  return SteedosUI.showModal(stores.ComponentRegistry.components.ObjectForm, {
191
234
  name: `${objectApiName}_standard_edit_form`,
192
235
  objectApiName: objectApiName,
193
236
  recordId: recordId,
194
- title: tilte,
195
- afterUpdate: function(){
196
- setTimeout(function(){
197
- if(FlowRouter.current().route.path.endsWith("/:record_id")){
237
+ title: title,
238
+ afterUpdate: function () {
239
+ setTimeout(function () {
240
+ if (FlowRouter.current().route.path.endsWith("/:record_id")) {
198
241
  FlowRouter.reload()
199
242
  // ObjectForm有缓存,修改子表记录可能会有主表记录的汇总字段变更,需要刷新表单数据
200
243
  SteedosUI.reloadRecord(objectApiName, recordId)
201
- }else{
244
+ } else {
202
245
  window.refreshDxSchedulerInstance()
203
246
  window.refreshGrid();
204
247
  }
205
- }, 1);
248
+ }, 1);
206
249
  return true;
207
250
  }
208
- }, null, {iconPath: '/assets/icons'})
251
+ }, null, { iconPath: '/assets/icons' })
209
252
  };
210
253
 
211
254
  // Steedos.Page.Form.StandardDelete.render = function(){
@@ -3,4 +3,6 @@ label: 应用
3
3
  type: lookup
4
4
  reference_to: apps
5
5
  reference_to_field: code
6
+ filters:
7
+ - ['code','!=','admin']
6
8
  sort_no: 120
@@ -1,5 +1,5 @@
1
1
  name: desktop
2
2
  type: boolean
3
- label: 台式机
3
+ label: 桌面端
4
4
  sort_no: 130
5
5
  defaultValue: true
@@ -1,5 +1,5 @@
1
1
  name: mobile
2
2
  type: boolean
3
- label: 手机
3
+ label: 移动端
4
4
  sort_no: 140
5
5
  defaultValue: true
@@ -6,5 +6,5 @@ allowRead: true
6
6
  modifyAllRecords: false
7
7
  modifyCompanyRecords: false
8
8
  permission_set_id: user
9
- viewAllRecords: true
10
- viewCompanyRecords: true
9
+ viewAllRecords: false
10
+ viewCompanyRecords: false
@@ -0,0 +1,5 @@
1
+ module.exports = {
2
+ standard_deleteVisible: function () {
3
+ return false
4
+ }
5
+ }
@@ -0,0 +1,4 @@
1
+ name: standard_delete
2
+ is_enable: true
3
+ label: standard_delete
4
+ visible: false
@@ -0,0 +1,5 @@
1
+ module.exports = {
2
+ standard_delete_manyVisible: function () {
3
+ return false
4
+ }
5
+ }
@@ -0,0 +1,4 @@
1
+ name: standard_delete_many
2
+ is_enable: true
3
+ label: standard_delete_many
4
+ visible: false
@@ -0,0 +1,5 @@
1
+ module.exports = {
2
+ standard_newVisible: function () {
3
+ return false
4
+ }
5
+ }
@@ -0,0 +1,5 @@
1
+ name: standard_new
2
+ is_enable: true
3
+ label: standard_new
4
+ 'on': record_only
5
+ visible: false
@@ -0,0 +1,4 @@
1
+ name: is_active
2
+ label: 已发布
3
+ sort_no: 130
4
+ type: toggle
@@ -1,4 +1,5 @@
1
1
  name: page
2
2
  label: 页面
3
3
  type: master_detail
4
- reference_to: pages
4
+ reference_to: pages
5
+ readonly: true
@@ -3,5 +3,5 @@ type: code
3
3
  language: json
4
4
  is_wide: true
5
5
  sort_no: 300
6
- omit: true
7
- hidden: true
6
+ omit: false
7
+ hidden: false
@@ -2,4 +2,5 @@ name: version
2
2
  type: number
3
3
  label: 版本号
4
4
  scale: 0
5
- omit: true
5
+ omit: true
6
+ readonly: true
@@ -2,7 +2,7 @@ name: all
2
2
  columns:
3
3
  - field: page
4
4
  - field: version
5
- - field: is_archived
5
+ - field: is_active
6
6
  - field: created
7
7
  - field: modified
8
8
  - field: is_system
@@ -2,7 +2,7 @@ name: recent
2
2
  columns:
3
3
  - field: page
4
4
  - field: version
5
- - field: is_archived
5
+ - field: is_active
6
6
  - field: created
7
7
  - field: modified
8
8
  - field: is_system
@@ -1,6 +1,6 @@
1
1
  name: 管理员
2
2
  allowCreate: true
3
- allowDelete: true
3
+ allowDelete: false
4
4
  allowEdit: true
5
5
  allowRead: true
6
6
  modifyAllRecords: true
@@ -6,5 +6,5 @@ allowRead: true
6
6
  modifyAllRecords: false
7
7
  modifyCompanyRecords: false
8
8
  permission_set_id: user
9
- viewAllRecords: true
10
- viewCompanyRecords: true
9
+ viewAllRecords: false
10
+ viewCompanyRecords: false
@@ -0,0 +1,5 @@
1
+ name: is_active
2
+ label: 启用
3
+ sort_no: 130
4
+ type: toggle
5
+ visible_on: "{{'redash' != formData.render_engine ? true: false}}"
@@ -1,5 +1,5 @@
1
1
  name: is_archived
2
- label: 启用
2
+ label: 已归档
3
3
  sort_no: 130
4
4
  type: toggle
5
- visible_on: "{{'redash' != formData.render_engine ? true: false}}"
5
+ hidden: true
@@ -4,9 +4,9 @@ type: select
4
4
  defaultValue: app
5
5
  required: true
6
6
  options:
7
- - label: 自定义应用
7
+ - label: 应用程序页面
8
8
  value: app
9
- - label: 详细页面
9
+ - label: 记录页面
10
10
  value: record
11
11
  - label: 列表页面
12
12
  value: list
@@ -2,6 +2,7 @@ name: all
2
2
  columns:
3
3
  - field: name
4
4
  - field: label
5
+ - field: render_engine
5
6
  - field: type
6
7
  - field: is_system
7
8
  wrap: false
@@ -3,6 +3,7 @@ columns:
3
3
  - field: name
4
4
  - field: label
5
5
  - field: type
6
+ - field: render_engine
6
7
  - field: is_system
7
8
  wrap: false
8
9
  filter_scope: space
@@ -21,8 +21,11 @@ version: 2
21
21
  form:
22
22
  afterView: !!js/function |
23
23
  function(){
24
- console.log(`afterView`, this.doc)
25
24
  if(this.doc.name && (this.doc.render_engine === 'redash' || !this.doc.render_engine)){
26
- SteedosUI.render(stores.ComponentRegistry.components.Page, { pageId: this.doc.name }, $(".slds-template__container")[0])
25
+ return SteedosUI.render(stores.ComponentRegistry.components.Page, { pageId: this.doc.name }, $(".slds-template__container")[0])
27
26
  }
27
+ if(this.doc.type === 'app'){
28
+ $('[data-object-name="page_assignments"]').hide()
29
+ }
30
+ $('[data-object-name="page_versions"]').hide()
28
31
  }
@@ -6,5 +6,5 @@ allowRead: true
6
6
  modifyAllRecords: false
7
7
  modifyCompanyRecords: false
8
8
  permission_set_id: user
9
- viewAllRecords: true
10
- viewCompanyRecords: true
9
+ viewAllRecords: false
10
+ viewCompanyRecords: false
@@ -7,7 +7,7 @@
7
7
 
8
8
  <body style="margin: 0;padding: 0;">
9
9
 
10
- <builder-fiddle host="https://builder.steedos.com/amis"></builder-fiddle>
10
+ <builder-fiddle host="SteedosBuilderHost"></builder-fiddle>
11
11
 
12
12
  <script>
13
13
  let comp = document.querySelector('builder-fiddle')
@@ -45,6 +45,15 @@
45
45
  },
46
46
  '*'
47
47
  );
48
+
49
+ try {
50
+ //保存时, 刷新父页面
51
+ if(window.opener){
52
+ window.opener.postMessage(Object.assign({type: "record.edited"}, {objectName: 'pages'}, {record: {}}), "*")
53
+ }
54
+ } catch (error) {
55
+ console.error(error)
56
+ }
48
57
  }).catch(function (error) {
49
58
  // handle error
50
59
  console.log(error);
@@ -1,9 +1,18 @@
1
1
  const express = require("express");
2
2
  const router = express.Router();
3
+ const core = require('@steedos/core');
4
+ const fs = require('fs');
3
5
 
4
- router.get('/api/pageDesign', async function (req, res) {
6
+ router.get('/api/pageDesign', core.requireAuthentication, async function (req, res) {
5
7
  try {
6
8
  res.set('Content-Type', 'text/html');
9
+ const userSession = req.user;
10
+ const steedosBuilderHost = `https://builder.steedos.com/amis?assetUrl=https://unpkg.com/@steedos-ui/builder-widgets/dist/assets.js&rootUrl=${__meteor_runtime_config__.ROOT_URL}&authToken=${userSession.authToken}&userId=${userSession.userId}&tenantId=${userSession.spaceId}&__q=`;
11
+
12
+ let data = fs.readFileSync(__dirname+'/design.html', 'utf8');
13
+ res.send(data.replace('SteedosBuilderHost',steedosBuilderHost));
14
+
15
+
7
16
  res.sendFile(__dirname+'/design.html')
8
17
  } catch (error) {
9
18
  res.status(500).send({ message: error.message });