adminizer 4.3.0-build.89 → 4.3.0-build.91
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.
- package/controllers/add.js +2 -2
- package/controllers/edit.js +2 -4
- package/controllers/form.js +1 -1
- package/controllers/remove.js +2 -1
- package/lib/media-manager/AbstractMediaManager.d.ts +16 -0
- package/lib/media-manager/DefaultMediaManager.d.ts +3 -1
- package/lib/media-manager/DefaultMediaManager.js +22 -24
- package/lib/media-manager/helpers/MediaManagerHelper.d.ts +13 -1
- package/lib/media-manager/helpers/MediaManagerHelper.js +28 -30
- package/package.json +1 -1
package/controllers/add.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ControllerHelper } from "../helpers/controllerHelper";
|
|
2
2
|
import { RequestProcessor } from "../lib/requestProcessor";
|
|
3
3
|
import { FieldsHelper } from "../helpers/fieldsHelper";
|
|
4
|
-
|
|
4
|
+
import { saveRelationsMediaManager } from "../lib/media-manager/helpers/MediaManagerHelper";
|
|
5
5
|
import { DataAccessor } from "../lib/DataAccessor";
|
|
6
6
|
import { Adminizer } from "../lib/Adminizer";
|
|
7
7
|
import inertiaAddHelper from "../helpers/inertiaAddHelper";
|
|
@@ -88,7 +88,7 @@ export default async function add(req, res) {
|
|
|
88
88
|
try {
|
|
89
89
|
let record = await entity.model.create(reqData, dataAccessor);
|
|
90
90
|
// save associations media to json
|
|
91
|
-
|
|
91
|
+
await saveRelationsMediaManager(fields, rawReqData, entity.model.identity, record.id);
|
|
92
92
|
Adminizer.log.debug(`A new record was created: `, record);
|
|
93
93
|
if (req.body.jsonPopupCatalog) {
|
|
94
94
|
dataAccessor = new DataAccessor(req.adminizer, req.user, entity, "edit");
|
package/controllers/edit.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { ControllerHelper } from "../helpers/controllerHelper";
|
|
2
2
|
import { RequestProcessor } from "../lib/requestProcessor";
|
|
3
3
|
import { FieldsHelper } from "../helpers/fieldsHelper";
|
|
4
|
-
import { getRelationsMediaManager,
|
|
5
|
-
// saveRelationsMediaManager
|
|
6
|
-
} from "../lib/media-manager/helpers/MediaManagerHelper";
|
|
4
|
+
import { getRelationsMediaManager, saveRelationsMediaManager } from "../lib/media-manager/helpers/MediaManagerHelper";
|
|
7
5
|
import { DataAccessor } from "../lib/DataAccessor";
|
|
8
6
|
import { Adminizer } from "../lib/Adminizer";
|
|
9
7
|
import inertiaAddHelper from "../helpers/inertiaAddHelper";
|
|
@@ -114,7 +112,7 @@ export default async function edit(req, res) {
|
|
|
114
112
|
}
|
|
115
113
|
try {
|
|
116
114
|
let newRecord = await entity.model.update(params, reqData, dataAccessor);
|
|
117
|
-
|
|
115
|
+
await saveRelationsMediaManager(fields, rawReqData, entity.model.identity, newRecord[0].id);
|
|
118
116
|
Adminizer.log.debug(`Record was updated: `, newRecord);
|
|
119
117
|
if (req.body.jsonPopupCatalog) {
|
|
120
118
|
return res.json({ record: newRecord });
|
package/controllers/form.js
CHANGED
|
@@ -55,7 +55,7 @@ export default async function form(req, res) {
|
|
|
55
55
|
}
|
|
56
56
|
for (let key of Object.keys(form)) {
|
|
57
57
|
try {
|
|
58
|
-
if (key === 'mediamanager') {
|
|
58
|
+
if (form[key].type === 'mediamanager') {
|
|
59
59
|
form[key].value = await getRelationsMediaManager({
|
|
60
60
|
list: await req.adminizer.config.forms.get(slug, key),
|
|
61
61
|
mediaManagerId: form[key].options?.id ?? "default"
|
package/controllers/remove.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ControllerHelper } from "../helpers/controllerHelper";
|
|
2
|
+
import { deleteRelationsMediaManager } from "../lib/media-manager/helpers/MediaManagerHelper";
|
|
2
3
|
import { DataAccessor } from "../lib/DataAccessor";
|
|
3
4
|
import { Adminizer } from "../lib/Adminizer";
|
|
4
5
|
export default async function remove(req, res) {
|
|
@@ -61,7 +62,7 @@ export default async function remove(req, res) {
|
|
|
61
62
|
destroyedRecord = await entity.model.destroy(q, dataAccessor);
|
|
62
63
|
console.log(destroyedRecord[0]);
|
|
63
64
|
// delete relations media manager
|
|
64
|
-
|
|
65
|
+
await deleteRelationsMediaManager(req.adminizer, entity.name, destroyedRecord);
|
|
65
66
|
}
|
|
66
67
|
catch (e) {
|
|
67
68
|
Adminizer.log.error('adminpanel > error', e);
|
|
@@ -192,6 +192,22 @@ export declare abstract class AbstractMediaManager {
|
|
|
192
192
|
data: MediaManagerItem[];
|
|
193
193
|
next: boolean;
|
|
194
194
|
}>;
|
|
195
|
+
/**
|
|
196
|
+
* Save Relations.
|
|
197
|
+
* @param data
|
|
198
|
+
* @param model model in which a mediafile connection was added
|
|
199
|
+
* @param modelId Id in the model in which the mediafile was added
|
|
200
|
+
* @param widgetName
|
|
201
|
+
*/
|
|
202
|
+
abstract setRelations(data: MediaManagerWidgetData[],
|
|
203
|
+
/**
|
|
204
|
+
* widget model in which a mediafile connection was added
|
|
205
|
+
*/
|
|
206
|
+
model: string,
|
|
207
|
+
/**
|
|
208
|
+
* widget Id in the model in which the mediafile was added
|
|
209
|
+
*/
|
|
210
|
+
modelId: string, widgetName: string): Promise<void>;
|
|
195
211
|
abstract getItemsList(items: MediaManagerWidgetItem[]): Promise<MediaManagerWidgetClientItem[]>;
|
|
196
212
|
/**
|
|
197
213
|
* Search all items.
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { AbstractMediaManager, MediaManagerItem, File, MediaManagerWidgetItem, MediaManagerWidgetClientItem, SortCriteria } from "./AbstractMediaManager";
|
|
1
|
+
import { AbstractMediaManager, MediaManagerItem, File, MediaManagerWidgetItem, MediaManagerWidgetData, MediaManagerWidgetClientItem, SortCriteria } from "./AbstractMediaManager";
|
|
2
2
|
import { Adminizer } from "../Adminizer";
|
|
3
3
|
export declare class DefaultMediaManager extends AbstractMediaManager {
|
|
4
4
|
readonly itemTypes: File<MediaManagerItem>[];
|
|
5
5
|
model: string;
|
|
6
|
+
modelAssoc: string;
|
|
6
7
|
id: string;
|
|
7
8
|
protected readonly adminizer: Adminizer;
|
|
8
9
|
constructor(adminizer: Adminizer, id: string, urlPathPrefix: string, fileStoragePath: string);
|
|
@@ -11,5 +12,6 @@ export declare class DefaultMediaManager extends AbstractMediaManager {
|
|
|
11
12
|
next: boolean;
|
|
12
13
|
}>;
|
|
13
14
|
searchAll(s: string, group: string): Promise<MediaManagerItem[]>;
|
|
15
|
+
setRelations(data: MediaManagerWidgetData[], model: string, modelId: string, widgetName: string): Promise<void>;
|
|
14
16
|
getItemsList(items: MediaManagerWidgetItem[]): Promise<MediaManagerWidgetClientItem[]>;
|
|
15
17
|
}
|
|
@@ -4,7 +4,7 @@ import { ApplicationItem, ImageItem, TextItem, VideoItem } from "./Items";
|
|
|
4
4
|
export class DefaultMediaManager extends AbstractMediaManager {
|
|
5
5
|
itemTypes = [];
|
|
6
6
|
model = "mediamanagerap";
|
|
7
|
-
|
|
7
|
+
modelAssoc = "mediamanagerassociationsap";
|
|
8
8
|
id;
|
|
9
9
|
adminizer;
|
|
10
10
|
constructor(adminizer, id, urlPathPrefix, fileStoragePath) {
|
|
@@ -55,29 +55,27 @@ export class DefaultMediaManager extends AbstractMediaManager {
|
|
|
55
55
|
}
|
|
56
56
|
return data;
|
|
57
57
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
// }
|
|
80
|
-
// }
|
|
58
|
+
async setRelations(data, model, modelId, widgetName) {
|
|
59
|
+
let modelAssociations = await this.adminizer.modelHandler.model.get(this.modelAssoc)["_find"]({
|
|
60
|
+
where: { modelId: modelId, model: model, widgetName: widgetName },
|
|
61
|
+
});
|
|
62
|
+
for (const modelAssociation of modelAssociations) {
|
|
63
|
+
const q = {};
|
|
64
|
+
const pk = this.adminizer.modelHandler.model.get(this.modelAssoc).primaryKey;
|
|
65
|
+
q[pk] = modelAssociation.id;
|
|
66
|
+
await this.adminizer.modelHandler.model.get(this.modelAssoc)["_destroy"](q);
|
|
67
|
+
}
|
|
68
|
+
for (const [key, widgetItem] of data.entries()) {
|
|
69
|
+
await this.adminizer.modelHandler.model.get(this.modelAssoc)["_create"]({
|
|
70
|
+
mediaManagerId: this.id,
|
|
71
|
+
model: model,
|
|
72
|
+
modelId: modelId,
|
|
73
|
+
file: widgetItem.id,
|
|
74
|
+
widgetName: widgetName,
|
|
75
|
+
sortOrder: key + 1,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
81
79
|
async getItemsList(items) {
|
|
82
80
|
let widgetItems = [];
|
|
83
81
|
for (const item of items) {
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fields } from "../../../helpers/fieldsHelper";
|
|
2
|
+
import { MediaManagerItem, MediaManagerWidgetItem, MediaManagerWidgetJSON } from "../AbstractMediaManager";
|
|
2
3
|
import { Adminizer } from "../../Adminizer";
|
|
4
|
+
type PostParams = Record<string, string | number | boolean | object | string[] | number[] | null>;
|
|
3
5
|
/**
|
|
4
6
|
* Create a random file name with prefix and type. If prefix is true, the file name will be prefixed with a random string.
|
|
5
7
|
* @param filenameOrig
|
|
@@ -14,14 +16,24 @@ export declare function randomFileName(filenameOrig: string, type: string, prefi
|
|
|
14
16
|
* @param model
|
|
15
17
|
* @param recordId
|
|
16
18
|
*/
|
|
19
|
+
export declare function saveRelationsMediaManager(fields: Fields, reqData: PostParams, model: string, recordId: string): Promise<void>;
|
|
17
20
|
/**
|
|
18
21
|
* Get realtions
|
|
19
22
|
* @param data
|
|
20
23
|
*/
|
|
21
24
|
export declare function getRelationsMediaManager(data: MediaManagerWidgetJSON): Promise<import("../AbstractMediaManager").MediaManagerWidgetClientItem[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Delate Ralations
|
|
27
|
+
* @param model
|
|
28
|
+
* @param record
|
|
29
|
+
*/
|
|
30
|
+
export declare function deleteRelationsMediaManager(adminizer: Adminizer, model: string, record: {
|
|
31
|
+
[p: string]: string | MediaManagerWidgetItem[];
|
|
32
|
+
}[]): Promise<void>;
|
|
22
33
|
/**
|
|
23
34
|
* @param adminizer
|
|
24
35
|
* @param variants
|
|
25
36
|
* @param model
|
|
26
37
|
*/
|
|
27
38
|
export declare function populateVariants(adminizer: Adminizer, variants: MediaManagerItem[], model: string): Promise<MediaManagerItem[]>;
|
|
39
|
+
export {};
|
|
@@ -18,17 +18,17 @@ export function randomFileName(filenameOrig, type, prefix) {
|
|
|
18
18
|
* @param model
|
|
19
19
|
* @param recordId
|
|
20
20
|
*/
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
21
|
+
export async function saveRelationsMediaManager(fields, reqData, model, recordId) {
|
|
22
|
+
for (let prop in reqData) {
|
|
23
|
+
let fieldConfigConfig = fields[prop].config;
|
|
24
|
+
let options = fieldConfigConfig.options;
|
|
25
|
+
if (fieldConfigConfig.type === 'mediamanager') {
|
|
26
|
+
let data = reqData[prop];
|
|
27
|
+
let mediaManager = MediaManagerHandler.get(options?.id ?? 'default');
|
|
28
|
+
await mediaManager.setRelations(data, model, recordId, prop);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
32
|
/**
|
|
33
33
|
* Get realtions
|
|
34
34
|
* @param data
|
|
@@ -37,25 +37,23 @@ export async function getRelationsMediaManager(data) {
|
|
|
37
37
|
let mediaManager = MediaManagerHandler.get(data.mediaManagerId);
|
|
38
38
|
return await mediaManager.getItemsList(data.list ?? []);
|
|
39
39
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
// }
|
|
58
|
-
// }
|
|
40
|
+
/**
|
|
41
|
+
* Delate Ralations
|
|
42
|
+
* @param model
|
|
43
|
+
* @param record
|
|
44
|
+
*/
|
|
45
|
+
export async function deleteRelationsMediaManager(adminizer, model, record) {
|
|
46
|
+
let config = adminizer.config.models[model];
|
|
47
|
+
for (const key of Object.keys(record[0])) {
|
|
48
|
+
let field = config.fields[key];
|
|
49
|
+
if (field && field.type === 'mediamanager') {
|
|
50
|
+
const option = field.options;
|
|
51
|
+
let mediaManager = MediaManagerHandler.get(option?.id ?? 'default');
|
|
52
|
+
let emptyData = [];
|
|
53
|
+
await mediaManager.setRelations(emptyData, model, record[0].id, key);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
59
57
|
/**
|
|
60
58
|
* @param adminizer
|
|
61
59
|
* @param variants
|