dbm 1.1.19 → 1.1.20

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.
@@ -59,7 +59,9 @@ export const fullSetup = function() {
59
59
  {
60
60
  let name = "urlRequest";
61
61
  let currentDecoder = new Dbm.graphapi.webclient.decode.DecodeBaseObject();
62
- currentDecoder.item.setValue("copyFields", ["meta/description", "seo/noIndex", "seo/noFollow"]);
62
+ currentDecoder.item.setValue("copyFields", ["meta/description", "seo/noIndex", "seo/noFollow", "publishDate"]);
63
+ currentDecoder.item.setValue("copyLink", ["category"]);
64
+ currentDecoder.item.setValue("copyLinks", ["categories"]);
63
65
  currentDecoder.item.setValue("encodingType", name);
64
66
  currentDecoder.item.register(decodePrefix + name);
65
67
  }
@@ -174,4 +176,13 @@ export const fullSetup = function() {
174
176
  currentDecoder.item.setValue("encodingType", name);
175
177
  currentDecoder.item.register(decodePrefix + name);
176
178
  }
179
+
180
+ {
181
+ let name = "admin_user";
182
+ let currentDecoder = new Dbm.graphapi.webclient.decode.DecodeBaseObject();
183
+ currentDecoder.item.setValue("copyFields", ["name", "username"]);
184
+ currentDecoder.item.setValue("copyLinks", ["roles"]);
185
+ currentDecoder.item.setValue("encodingType", name);
186
+ currentDecoder.item.register(decodePrefix + name);
187
+ }
177
188
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dbm",
3
- "version": "1.1.19",
3
+ "version": "1.1.20",
4
4
  "main": "index.js",
5
5
  "type": "module",
6
6
  "scripts": {},
@@ -6,6 +6,9 @@ export default class CreatePage extends Dbm.react.BaseObject {
6
6
  super._construct();
7
7
 
8
8
  this.item.requireProperty("title", "");
9
+ this.item.requireProperty("parent", 0);
10
+ Dbm.flow.addUpdateCommand(this.item.properties.parent, Dbm.commands.callFunction(this._parentSelected.bind(this)));
11
+ this.item.requireProperty("parentUrl", "");
9
12
  this.item.requireProperty("url", "");
10
13
  this.item.requireProperty("freeUrl", "");
11
14
  this.item.requireProperty("updateSlugFromTitle", true);
@@ -22,7 +25,7 @@ export default class CreatePage extends Dbm.react.BaseObject {
22
25
  console.log(this.item.updateSlugFromTitle);
23
26
 
24
27
  if(this.item.updateSlugFromTitle) {
25
- this.item.url = Dbm.utils.StringFunctions.createNiceFilePath(this.item.title);
28
+ this.item.url = this.item.parentUrl + Dbm.utils.StringFunctions.createNiceFilePath(this.item.title);
26
29
  }
27
30
 
28
31
  }
@@ -49,10 +52,12 @@ export default class CreatePage extends Dbm.react.BaseObject {
49
52
 
50
53
  _freeUrlStatusChanged(aUrl, aRequest) {
51
54
  console.log("_freeUrlStatusChanged");
55
+ console.log(aUrl, aRequest);
56
+
52
57
  if(aRequest.status === 1) {
53
58
  let currentUrl = this.item.url;
54
59
  if(!currentUrl) {
55
- currentUrl = Dbm.utils.StringFunctions.createNiceFilePath(this.item.title);
60
+ currentUrl = this.item.parentUrl + Dbm.utils.StringFunctions.createNiceFilePath(this.item.title);
56
61
  this.item.url = currentUrl;
57
62
  }
58
63
  if(currentUrl === aUrl) {
@@ -65,13 +70,34 @@ export default class CreatePage extends Dbm.react.BaseObject {
65
70
  this.item.updateSlugFromTitle = false;
66
71
  }
67
72
 
73
+ _parentSelected() {
74
+ console.log("_parentSelected");
75
+ let id = this.item.parent;
76
+ console.log(id);
77
+
78
+ let parentUrl = "";
79
+
80
+ if(id) {
81
+ let item = Dbm.getInstance().repository.getItem(id);
82
+
83
+ parentUrl = item.url.substring(1);
84
+ }
85
+
86
+ this.item.parentUrl = parentUrl;
87
+
88
+ this._titleChanged();
89
+ }
90
+
68
91
  _create() {
69
92
  console.log("_create");
70
93
 
71
94
  let fullUrl = this.item.freeUrl + "/";
72
95
 
96
+ let currentDate = (new Date()).toISOString().split("T")[0];
97
+
73
98
  let changes = [
74
99
  {"type": "setField", "data": {"value": this.item.title, "field": "title"}},
100
+ {"type": "setField", "data": {"value": currentDate, "field": "publishDate"}},
75
101
  {"type": "setUrl", "data": {"value": fullUrl}}
76
102
  ]
77
103
 
@@ -96,6 +122,15 @@ export default class CreatePage extends Dbm.react.BaseObject {
96
122
  React.createElement(Dbm.react.form.FormField, {"value": this.item.properties.title, "id": this._titleFieldId, className: "standard-field standard-field-padding full-width"}),
97
123
  ),
98
124
  React.createElement("div", {className: "spacing standard"}),
125
+ React.createElement("div", {},
126
+ React.createElement("label", {className: "standard-field-label"},
127
+ "Parent page"
128
+ ),
129
+ React.createElement("div", {},
130
+ React.createElement(Dbm.react.form.GraphApiObjectSelection, {"value": this.item.properties.parent, objectType: "page", encoding: "urlRequest", nameField: "url", className: "standard-field standard-field-padding full-width"}),
131
+ )
132
+ ),
133
+ React.createElement("div", {className: "spacing standard"}),
99
134
  React.createElement("div", {},
100
135
  React.createElement("label", {className: "standard-field-label"},
101
136
  "Url"
@@ -17,6 +17,8 @@ export default class EditPage extends Dbm.react.BaseObject {
17
17
  itemEditor.addFieldEditor("title", page.title, "title");
18
18
  itemEditor.addFieldEditor("navigationName", page.navigationName); //METODO: add update encoding
19
19
  itemEditor.addFieldEditor("content", page.content, "content");
20
+ itemEditor.addFieldEditor("publishDate", page.publishDate, "urlRequest");
21
+ itemEditor.addOutgoingRelationEditor("in", "group/pageCategory", page.category ? page.category.id : 0, "urlRequest");
20
22
  itemEditor.addEditor("url", page.url, Dbm.graphapi.webclient.admin.SaveFunctions.setUrl, "url");
21
23
 
22
24
  let descriptionEditor = itemEditor.addFieldEditor("meta/description", page["meta/description"], "meta/description");
@@ -26,6 +28,7 @@ export default class EditPage extends Dbm.react.BaseObject {
26
28
  itemEditor.addFieldEditor("seo/noIndex", page["seo/noIndex"], "seo/noIndex");
27
29
  itemEditor.addFieldEditor("seo/noFollow", page["seo/noFollow"], "seo/noFollow");
28
30
 
31
+ this.item.requireProperty("importExportOpen", "");
29
32
  this.item.requireProperty("importText", "");
30
33
  }
31
34
 
@@ -146,6 +149,12 @@ export default class EditPage extends Dbm.react.BaseObject {
146
149
  console.log(aRequest, titles);
147
150
  }
148
151
 
152
+ _toggleImportExport() {
153
+ console.log("_toggleImportExport");
154
+
155
+ this.item.importExportOpen = !this.item.importExportOpen;
156
+ }
157
+
149
158
  _renderMainElement() {
150
159
 
151
160
  let page = this.context.page;
@@ -176,6 +185,20 @@ export default class EditPage extends Dbm.react.BaseObject {
176
185
  ),
177
186
  React.createElement(Dbm.react.form.FormField, {"value": itemEditor.getEditor("url").item.editValue.value, className: "standard-field standard-field-padding full-width", placeholder: "Url"}),
178
187
  ),
188
+ React.createElement("div", {className: "spacing standard"}),
189
+ React.createElement("div", {},
190
+ React.createElement("label", {className: "standard-field-label"},
191
+ "Publish date"
192
+ ),
193
+ React.createElement(Dbm.react.form.FormField, {"value": itemEditor.getEditor("publishDate").item.editValue.value, className: "standard-field standard-field-padding full-width", placeholder: "YYYY-MM-DD", "type": "date"}),
194
+ ),
195
+ React.createElement("div", {className: "spacing standard"}),
196
+ React.createElement("div", {},
197
+ React.createElement("label", {className: "standard-field-label"},
198
+ "Category"
199
+ ),
200
+ React.createElement(Dbm.react.form.GraphApiObjectSelection, {"value": itemEditor.getEditor("relation_out_in_group/pageCategory").item.editValue.value, objectType: "group/pageCategory", className: "standard-field standard-field-padding full-width"}),
201
+ ),
179
202
  ),
180
203
  React.createElement("div", {className: "spacing standard"}),
181
204
  React.createElement("div", {"className": "dbm-admin-box dbm-admin-box-padding"},
@@ -219,18 +242,39 @@ export default class EditPage extends Dbm.react.BaseObject {
219
242
  ),
220
243
  React.createElement("div", {},
221
244
  React.createElement(Dbm.react.admin.editor.Editor, {"value": itemEditor.getEditor("content").item.editValue.value, "ref": this.createRef("editor")}),
245
+ )
246
+ ),
247
+ React.createElement("div", {className: "spacing standard"}),
248
+ React.createElement("div", {"className": "dbm-admin-box dbm-admin-box-padding"},
249
+ React.createElement("label", {className: "standard-field-label", "onClick": () => {this._toggleImportExport()}},
250
+ "Import/export"
222
251
  ),
223
- React.createElement("div", {className: "spacing small"}),
224
- React.createElement("div", {"className": "standard-button standard-button-padding", "onClick": () => {this._export()}},
225
- "Export"
226
- ),
227
- React.createElement(Dbm.react.form.FormField, {value: this.item.properties.importText}),
228
- React.createElement("div", {"className": "standard-button standard-button-padding", "onClick": () => {this._import()}},
229
- "Import"
230
- ),
231
- React.createElement("div", {className: "flex-row-item"},
232
- React.createElement("div", {onClick: () => {this._generateHelpSectionSuggestions()}, className: "action-button action-button-padding"}, "Dev: Help sections"),
233
- ),
252
+ React.createElement(Dbm.react.area.OpenCloseExpandableArea, {open: this.item.properties.importExportOpen},
253
+ React.createElement("div", {},
254
+ React.createElement("div", {className: "flex-row small-item-spacing"},
255
+ React.createElement("div", {className: "flex-row-item"},
256
+ React.createElement("div", {"className": "standard-button standard-button-padding", "onClick": () => {this._export()}},
257
+ "Export"
258
+ )
259
+ )
260
+ ),
261
+ React.createElement("div", {className: "spacing standard"}),
262
+ React.createElement(Dbm.react.form.TextArea, {value: this.item.properties.importText, className: "standard-field standard-field-padding full-width"}),
263
+ React.createElement("div", {className: "flex-row small-item-spacing"},
264
+ React.createElement("div", {className: "flex-row-item"},
265
+ React.createElement("div", {"className": "standard-button standard-button-padding", "onClick": () => {this._import()}},
266
+ "Import"
267
+ )
268
+ )
269
+ )
270
+ /*
271
+ React.createElement("div", {className: "flex-row-item"},
272
+ React.createElement("div", {onClick: () => {this._generateHelpSectionSuggestions()}, className: "action-button action-button-padding"}, "Dev: Help sections"),
273
+ ),
274
+ */
275
+ )
276
+ )
277
+
234
278
  ),
235
279
  React.createElement("div", {className: "spacing standard"}),
236
280
  React.createElement("div", {className: "save-all-position"},
@@ -45,11 +45,19 @@ export default class RunObjectCommands extends Dbm.react.BaseObject {
45
45
  let id = this.getPropValue("id");
46
46
 
47
47
  return React.createElement("div", {},
48
- React.createElement(Dbm.react.form.FormField, {value: this.getDynamicProp("id")}),
49
- React.createElement(Dbm.react.form.TextArea, {value: this.item.properties.changes}),
50
- React.createElement("div", {"className": "standard-button standard-button-padding", "onClick": () => {this._runCommand()}},
51
- "Run"
52
- )
48
+ React.createElement(Dbm.react.form.LabelledArea, {"label": "Item id"}),
49
+ React.createElement(Dbm.react.form.FormField, {value: this.getDynamicProp("id"), "className": "standard-field standard-field-padding full-width"}),
50
+ React.createElement("div", {className: "spacing small"}),
51
+ React.createElement(Dbm.react.form.LabelledArea, {"label": "Command"}),
52
+ React.createElement(Dbm.react.form.TextArea, {value: this.item.properties.changes, "className": "standard-field standard-field-padding full-width"}),
53
+ React.createElement("div", {className: "spacing small"}),
54
+ React.createElement("div", {className: "flex-row"},
55
+ React.createElement("div", {className: "flex-row-item"},
56
+ React.createElement("div", {"className": "standard-button standard-button-padding", "onClick": () => {this._runCommand()}},
57
+ "Run"
58
+ )
59
+ )
60
+ )
53
61
  )
54
62
  }
55
63
  }
@@ -0,0 +1,123 @@
1
+ import React from "react";
2
+ import Dbm from "../../../index.js";
3
+
4
+ export default class UserList extends Dbm.react.BaseObject {
5
+ _construct() {
6
+ super._construct();
7
+
8
+ this.item.requireProperty("username", "");
9
+ this.item.requireProperty("password", "");
10
+ this.item.requireProperty("role", null);
11
+
12
+ let graphApi = Dbm.getInstance().repository.getItem("graphApi").controller;
13
+
14
+ this.item.requireProperty("items", []);
15
+
16
+ let encodings = ["admin_user"];
17
+
18
+ let allLoaded = Dbm.flow.updatefunctions.logic.allAtValue(Dbm.loading.LoadingStatus.LOADED);
19
+ this.item.requireProperty("loaded", false);
20
+
21
+ {
22
+ let request = graphApi.requestRange(
23
+ [
24
+ {"type": "includePrivate"},
25
+ {"type": "includeDraft"},
26
+ {"type": "byObjectType", "objectType": "user"},
27
+ ],
28
+ encodings
29
+ );
30
+ Dbm.flow.addUpdateCommandWhenMatched(request.properties.status, Dbm.loading.LoadingStatus.LOADED, Dbm.commands.callFunction(this._loaded.bind(this), [request]));
31
+ allLoaded.addCheck(request.properties.status);
32
+ }
33
+
34
+ this.item.properties.loaded.connectInput(allLoaded.output.properties.value);
35
+ }
36
+
37
+ _loaded(aRequest) {
38
+ console.log("_loaded");
39
+
40
+ let currentArray = [].concat(aRequest.items);
41
+
42
+ let nameField = this.getPropValueWithDefault("nameField", "name");
43
+ Dbm.utils.ArrayFunctions.sortOnField(currentArray, nameField);
44
+
45
+ this.item.items = currentArray;
46
+ }
47
+
48
+ _create() {
49
+ console.log("_create");
50
+
51
+ let data = {
52
+ username: this.item.username,
53
+ password: this.item.password,
54
+ role: this.item.role,
55
+ };
56
+
57
+ let request = Dbm.getInstance().repository.getItem("graphApi").controller.performAction("admin/addUser", data);
58
+
59
+ Dbm.flow.addUpdateCommand(request.properties.status, Dbm.commands.callFunction(this._created.bind(this), [request]));
60
+ }
61
+
62
+ _created(aRequest) {
63
+ console.log("_created");
64
+ console.log(aRequest);
65
+
66
+ if(aRequest.data.id) {
67
+ if(!aRequest.data.created) {
68
+ alert("User already exists. No changes made.");
69
+ }
70
+ Dbm.getInstance().repository.getItem("siteNavigation").controller.navigate("/admin/users/user/?id=" + aRequest.data.id);
71
+ }
72
+ else {
73
+ alert("An error occured");
74
+ }
75
+ }
76
+
77
+ _renderMainElement() {
78
+
79
+ let id = Dbm.react.source.contextVariable("item.id");
80
+ let text = Dbm.react.source.contextVariable("item.username");
81
+
82
+ return React.createElement("div", {"className": "standard-alternating-rows"},
83
+ React.createElement(Dbm.react.area.List, {items: this.item.properties.items},
84
+ React.createElement(Dbm.react.admin.objects.UserListRow, {"id": id, "text": text})
85
+ ),
86
+ React.createElement("div", {"className": "spacing standard"}),
87
+ React.createElement("h2", {"className": "no-margins"},
88
+ "New user"
89
+ ),
90
+ React.createElement("div", {"className": "spacing small"}),
91
+ React.createElement(Dbm.react.form.LabelledArea, {"label": "Username"}),
92
+ React.createElement(Dbm.react.form.FormField, {"className": "standard-field standard-field-padding full-width",
93
+ value: this.item.properties.username,
94
+ type: "email",
95
+ name: "username",
96
+ autoComplete: "username"
97
+ }),
98
+ React.createElement("div", {"className": "spacing small"}),
99
+ React.createElement(Dbm.react.form.LabelledArea, {"label": "Password"}),
100
+ React.createElement(Dbm.react.form.FormField, {"className": "standard-field standard-field-padding full-width",
101
+ value: this.item.properties.password,
102
+ type: "password",
103
+ name: "new-password",
104
+ autoComplete: "new-password"}),
105
+ React.createElement("div", {"className": "spacing small"}),
106
+ React.createElement(Dbm.react.form.LabelledArea, {"label": "Role"}),
107
+ React.createElement(Dbm.react.form.Selection, {"className": "standard-field standard-field-padding full-width", value: this.item.properties.role},
108
+ React.createElement("option", {"value": null}, "None"),
109
+ React.createElement("option", {"value": "editor"}, "Editor"),
110
+ React.createElement("option", {"value": "admin"}, "Admin"),
111
+ ),
112
+ React.createElement("div", {"className": "spacing standard"}),
113
+ React.createElement("div", {"className": "flex-row"},
114
+ React.createElement("div", {"className": "flex-row-item"},
115
+ React.createElement(Dbm.react.interaction.CommandButton, {"command": Dbm.commands.callFunction(this._create.bind(this))},
116
+ React.createElement("div", {"className": "standard-button standard-button-padding"}, "Create")
117
+ )
118
+ )
119
+ )
120
+
121
+ )
122
+ }
123
+ }
@@ -0,0 +1,35 @@
1
+ import React from "react";
2
+ import Dbm from "../../../index.js";
3
+
4
+ export default class UserListRow extends Dbm.react.BaseObject {
5
+ _construct() {
6
+ super._construct();
7
+ }
8
+
9
+ _renderMainElement() {
10
+
11
+ let id = this.getPropValue("id");
12
+ let text = this.getPropValue("text");
13
+
14
+ let baseUrl = "/admin/users/user/?id={id}";
15
+ let url = baseUrl.split("{id}").join(id);
16
+
17
+ return React.createElement("div", {"className": "standard-row"},
18
+ React.createElement(Dbm.react.text.Link, {"href": url, "className": "custom-styled-link hover-row"},
19
+ React.createElement("div", {"className": "standard-row-padding"},
20
+ React.createElement("div", {"className": "flex-row small-item-spacing"},
21
+ React.createElement("div", {"className": "flex-row-item flex-no-resize"},
22
+ Dbm.react.text.text(id),
23
+ ),
24
+ React.createElement("div", {"className": "flex-row-item flex-resize"},
25
+ Dbm.react.text.text(text)
26
+ ),
27
+ React.createElement("div", {"className": "flex-row-item flex-no-resize"},
28
+ ">"
29
+ ),
30
+ )
31
+ )
32
+ )
33
+ );
34
+ }
35
+ }
@@ -3,5 +3,7 @@ export {default as ObjectListRow} from "./ObjectListRow.js";
3
3
  export {default as EditObject} from "./EditObject.js";
4
4
  export {default as InjectObjectTypeEditor} from "./InjectObjectTypeEditor.js";
5
5
  export {default as RunObjectCommands} from "./RunObjectCommands.js";
6
+ export {default as UserList} from "./UserList.js";
7
+ export {default as UserListRow} from "./UserListRow.js";
6
8
 
7
9
  export * as itemeditors from "./itemeditors/index.js";
@@ -36,7 +36,7 @@ export default class MainImage extends Dbm.react.BaseObject {
36
36
  React.createElement(Dbm.react.area.HasData, {check: this.item.properties.loaded},
37
37
  React.createElement(Dbm.react.form.LabelledArea, {label: "Main image"},
38
38
  React.createElement(Dbm.react.admin.editorsgroup.EditRelation, {"direction": "in", "relationType": "isMainImageFor", "objectType": "image"},
39
- React.createElement(Dbm.react.form.GraphApiImage, {value: Dbm.react.source.contextVariable("valueEditor.editValue.value"), "objectType": "page", "encoding": "title", nameField: "title", className: "standard-field standard-field-padding full-width"})
39
+ React.createElement(Dbm.react.form.GraphApiImage, {value: Dbm.react.source.contextVariable("valueEditor.editValue.value"), "encoding": "title", nameField: "title", className: "standard-field standard-field-padding full-width"})
40
40
  )
41
41
  )
42
42
  )
@@ -19,7 +19,7 @@ export default class RichDescription extends Dbm.react.BaseObject {
19
19
  {"type": "includeDraft"},
20
20
  {"type": "idSelection", "ids": [id]},
21
21
  ],
22
- ["adbmi_fields"]
22
+ ["admin_fields"]
23
23
  );
24
24
  allLoaded.addCheck(request.properties.status);
25
25
  }
@@ -0,0 +1,52 @@
1
+ import React from "react";
2
+ import Dbm from "../../../../index.js";
3
+
4
+ export default class SingleRelation extends Dbm.react.BaseObject {
5
+ _construct() {
6
+ super._construct();
7
+
8
+ let graphApi = Dbm.getInstance().repository.getItem("graphApi").controller;
9
+
10
+ let id = this.context.item.id;
11
+
12
+ let allLoaded = Dbm.flow.updatefunctions.logic.allAtValue(Dbm.loading.LoadingStatus.LOADED);
13
+ this.item.requireProperty("loaded", false);
14
+
15
+ {
16
+ let request = graphApi.requestRange(
17
+ [
18
+ {"type": "includePrivate"},
19
+ {"type": "includeDraft"},
20
+ {"type": "idSelection", "ids": [id]},
21
+ ],
22
+ ["admin_fields", "relations"]
23
+ );
24
+ allLoaded.addCheck(request.properties.status);
25
+ }
26
+
27
+ this.item.properties.loaded.connectInput(allLoaded.output.properties.value);
28
+ }
29
+
30
+ _renderMainElement() {
31
+
32
+ let id = this.context.item.id;
33
+
34
+ let label = this.getPropValue("label");
35
+ let direction = this.getPropValue("direction");
36
+ let relationType = this.getPropValue("relationType");
37
+ let objectType = this.getPropValue("objectType");
38
+ let encoding = this.getPropValueWithDefault("encoding", "name");
39
+ let nameField = this.getPropValueWithDefault("nameField", "name");
40
+
41
+ return React.createElement("div", {},
42
+
43
+ React.createElement(Dbm.react.area.HasData, {check: this.item.properties.loaded},
44
+ React.createElement(Dbm.react.form.LabelledArea, {label: label}),
45
+ React.createElement(Dbm.react.admin.editorsgroup.EditRelation, {"direction": direction, "relationType": relationType, "objectType": objectType},
46
+ React.createElement(Dbm.react.form.GraphApiObjectSelection, {value: Dbm.react.source.contextVariable("valueEditor.editValue.value"), "objectType": objectType, "encoding": encoding, nameField: nameField, className: "standard-field standard-field-padding full-width"})
47
+ )
48
+ )
49
+
50
+ )
51
+ }
52
+ }
@@ -8,4 +8,5 @@ export {default as Question} from "./Question.js";
8
8
  export {default as RichDescription} from "./RichDescription.js";
9
9
  export {default as PageRepresentation} from "./PageRepresentation.js";
10
10
  export {default as MainImage} from "./MainImage.js";
11
- export {default as Identifier} from "./Identifier.js";
11
+ export {default as Identifier} from "./Identifier.js";
12
+ export {default as SingleRelation} from "./SingleRelation.js";
@@ -8,6 +8,8 @@ export default class Edit extends Dbm.react.BaseObject {
8
8
  let editorGroup = new Dbm.graphapi.webclient.admin.EditorGroup();
9
9
  this.item.setValue("editorGroup", editorGroup);
10
10
  this.item.requireProperty("changed", false).connectInput(editorGroup.item.properties.changed);
11
+
12
+ this.item.requireProperty("open", false);
11
13
  }
12
14
 
13
15
  _save() {
@@ -20,13 +22,28 @@ export default class Edit extends Dbm.react.BaseObject {
20
22
  saveData.save();
21
23
  }
22
24
 
25
+ _toggleOpen() {
26
+ console.log("_toggleOpen");
27
+
28
+ this.item.open = !this.item.open;
29
+ }
30
+
23
31
  _renderMainElement() {
24
32
 
25
33
  let url = new URL(document.location.href);
26
34
  let id = url.searchParams.get("id");
27
35
 
28
36
  return React.createElement("div", {className: "content-narrow"},
29
- React.createElement(Dbm.react.admin.objects.RunObjectCommands, {id: id})
37
+ React.createElement("div", {className: "flex-row small-item-spacing"},
38
+ React.createElement("div", {className: "flex-row-item"},
39
+ React.createElement("div", {className: "action-button action-button-padding", "onClick": () => {this._toggleOpen()}},
40
+ "Run commands"
41
+ )
42
+ )
43
+ ),
44
+ React.createElement(Dbm.react.area.HasData, {check: this.item.properties.open},
45
+ React.createElement(Dbm.react.admin.objects.RunObjectCommands, {id: id})
46
+ )
30
47
  );
31
48
  }
32
49
  }
@@ -0,0 +1,47 @@
1
+ import React from "react";
2
+ import Dbm from "../../../../index.js";
3
+
4
+ export default class User extends Dbm.react.BaseObject {
5
+ _construct() {
6
+ super._construct();
7
+
8
+ let editorGroup = new Dbm.graphapi.webclient.admin.EditorGroup();
9
+ this.item.setValue("editorGroup", editorGroup);
10
+ this.item.requireProperty("changed", false).connectInput(editorGroup.item.properties.changed);
11
+ }
12
+
13
+ _save() {
14
+ console.log("_save");
15
+
16
+ let editorGroup = this.item.editorGroup;
17
+
18
+ let saveData = editorGroup.getSaveData();
19
+
20
+ saveData.save();
21
+ }
22
+
23
+ _renderMainElement() {
24
+
25
+ let url = new URL(document.location.href);
26
+ let id = url.searchParams.get("id");
27
+
28
+ return React.createElement("div", {className: "content-narrow"},
29
+ React.createElement(Dbm.react.context.AddContextVariables, {values: {"editorGroup": this.item.editorGroup}},
30
+ React.createElement("h2", {className: "no-margins"}, "Edit details"),
31
+ React.createElement("div", {className: "spacing small"}),
32
+ React.createElement(Dbm.react.admin.objects.EditObject, {id: id}),
33
+ React.createElement("div", {className: "spacing standard"}),
34
+ React.createElement("div", {className: "save-all-position"},
35
+ React.createElement(Dbm.react.area.OpenCloseExpandableArea, {open: this.item.properties.changed},
36
+ React.createElement("div", {"className": "standard-button standard-button-padding", "onClick": () => {this._save()}},
37
+ "Save all changes"
38
+ )
39
+ )
40
+ ),
41
+ React.createElement("h2", {className: "no-margins"}, "New password"),
42
+ React.createElement("div", {className: "spacing small"}),
43
+ "[Insert password field]"
44
+ )
45
+ );
46
+ }
47
+ }
@@ -0,0 +1,15 @@
1
+ import React from "react";
2
+ import Dbm from "../../../../index.js";
3
+
4
+ export default class Users extends Dbm.react.BaseObject {
5
+ _construct() {
6
+ super._construct();
7
+ }
8
+
9
+ _renderMainElement() {
10
+
11
+ return React.createElement("div", {className: "content-narrow"},
12
+ React.createElement(Dbm.react.admin.objects.UserList, {})
13
+ );
14
+ }
15
+ }
@@ -1,3 +1,5 @@
1
1
  export {default as List} from "./List.js";
2
2
  export {default as Edit} from "./Edit.js";
3
- export {default as RunObjectCommands} from "./RunObjectCommands.js";
3
+ export {default as RunObjectCommands} from "./RunObjectCommands.js";
4
+ export {default as Users} from "./Users.js";
5
+ export {default as User} from "./User.js";
@@ -142,6 +142,8 @@ export let registerAllBlocks = function() {
142
142
 
143
143
  registerBlock("admin/objects/edit", "Admin / Edit object", createElement(Dbm.react.blocks.admin.objects.Edit));
144
144
  registerBlock("admin/objects/apiCommands", "Admin / Object API commands", createElement(Dbm.react.blocks.admin.objects.RunObjectCommands));
145
+ registerBlock("admin/users", "Admin / Users", createElement(Dbm.react.blocks.admin.objects.Users));
146
+ registerBlock("admin/users/user", "Admin / User", createElement(Dbm.react.blocks.admin.objects.User));
145
147
 
146
148
  {
147
149
  let editor = createElement(Dbm.react.admin.editor.EditorBlockName, {},
@@ -275,6 +277,18 @@ export let registerAllBlocks = function() {
275
277
  let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/mainImage");
276
278
  itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.MainImage, {}));
277
279
  }
280
+
281
+ {
282
+ let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/user/role");
283
+ itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.SingleRelation, {
284
+ "label": "Role",
285
+ "direction": "in",
286
+ "relationType": "for",
287
+ "objectType": "type/userRole",
288
+ encoding: "identifier",
289
+ nameField: "identifier"
290
+ }));
291
+ }
278
292
 
279
293
  {
280
294
  let objectTypeEditor = Dbm.getInstance().repository.getItem("admin/objectTypeEditors/page");
@@ -330,4 +344,19 @@ export let registerAllBlocks = function() {
330
344
 
331
345
  objectTypeEditor.editors = newArray;
332
346
  }
347
+
348
+ {
349
+ let objectTypeEditor = Dbm.getInstance().repository.getItem("admin/objectTypeEditors/user");
350
+ if(!objectTypeEditor.editors) {
351
+ objectTypeEditor.setValue("editors", []);
352
+ }
353
+
354
+ let newArray = [].concat(objectTypeEditor.editors);
355
+ newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/name"));
356
+ newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/user/role"));
357
+ newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/pageRepresentation"));
358
+ newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/mainImage"));
359
+
360
+ objectTypeEditor.editors = newArray;
361
+ }
333
362
  }