adminizer 4.3.0-build.104 → 4.3.0-build.106
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 +1 -1
- package/controllers/edit.js +2 -2
- package/controllers/form.js +2 -3
- package/controllers/media-manager/ThumbController.js +1 -1
- package/controllers/media-manager/mediaManagerApi.js +1 -2
- package/controllers/view.js +1 -1
- package/helpers/inertiaAddHelper.js +1 -2
- package/helpers/inertiaFromHelper.js +1 -2
- package/lib/Adminizer.d.ts +2 -0
- package/lib/Adminizer.js +3 -0
- package/lib/media-manager/DefaultMediaManager.js +2 -2
- package/lib/media-manager/MediaManagerHandler.d.ts +3 -3
- package/lib/media-manager/MediaManagerHandler.js +3 -3
- package/lib/media-manager/Thumb.d.ts +2 -1
- package/lib/media-manager/Thumb.js +2 -3
- package/lib/media-manager/helpers/MediaManagerHelper.d.ts +4 -2
- package/lib/media-manager/helpers/MediaManagerHelper.js +7 -6
- package/package.json +1 -1
- package/system/bindMediaManager.js +1 -2
package/controllers/add.js
CHANGED
|
@@ -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
|
-
await saveRelationsMediaManager(fields, rawReqData, entity.model.identity, record.id);
|
|
91
|
+
await saveRelationsMediaManager(req.adminizer, 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
|
@@ -112,7 +112,7 @@ export default async function edit(req, res) {
|
|
|
112
112
|
}
|
|
113
113
|
try {
|
|
114
114
|
let newRecord = await entity.model.update(params, reqData, dataAccessor);
|
|
115
|
-
await saveRelationsMediaManager(fields, rawReqData, entity.model.
|
|
115
|
+
await saveRelationsMediaManager(req.adminizer, fields, rawReqData, entity.model.modelname, newRecord[0].id);
|
|
116
116
|
Adminizer.log.debug(`Record was updated: `, newRecord);
|
|
117
117
|
if (req.body.jsonPopupCatalog) {
|
|
118
118
|
return res.json({ record: newRecord });
|
|
@@ -142,7 +142,7 @@ export default async function edit(req, res) {
|
|
|
142
142
|
for (const field of Object.keys(fields)) {
|
|
143
143
|
let fieldConfigConfig = fields[field].config;
|
|
144
144
|
if (fieldConfigConfig.type === 'mediamanager') {
|
|
145
|
-
record[field] = await getRelationsMediaManager({
|
|
145
|
+
record[field] = await getRelationsMediaManager(req.adminizer, {
|
|
146
146
|
mediaManagerId: fieldConfigConfig.options?.id ?? "default",
|
|
147
147
|
model: entity.model.modelname,
|
|
148
148
|
widgetName: field,
|
package/controllers/form.js
CHANGED
|
@@ -2,7 +2,6 @@ import { FormHelper } from "../helpers/formHelper";
|
|
|
2
2
|
import { Adminizer } from "../lib/Adminizer";
|
|
3
3
|
import inertiaFormHelper from "../helpers/inertiaFromHelper";
|
|
4
4
|
import { getRelationsMediaManager } from "../lib/media-manager/helpers/MediaManagerHelper";
|
|
5
|
-
import { MediaManagerHandler } from "../lib/media-manager/MediaManagerHandler";
|
|
6
5
|
export default async function form(req, res) {
|
|
7
6
|
let slug = req.params.slug;
|
|
8
7
|
// Check slug
|
|
@@ -45,7 +44,7 @@ export default async function form(req, res) {
|
|
|
45
44
|
}
|
|
46
45
|
if (form[key].type === "mediamanager") {
|
|
47
46
|
let options = form[key].options;
|
|
48
|
-
let mediaManager =
|
|
47
|
+
let mediaManager = req.adminizer.mediaManagerHandler.get(options?.id ?? "default");
|
|
49
48
|
if (req.body[key])
|
|
50
49
|
await mediaManager.setRelations(req.body[key], `${slug}_${key}`, 0, key);
|
|
51
50
|
}
|
|
@@ -63,7 +62,7 @@ export default async function form(req, res) {
|
|
|
63
62
|
for (let key of Object.keys(form)) {
|
|
64
63
|
try {
|
|
65
64
|
if (form[key].type === 'mediamanager') {
|
|
66
|
-
form[key].value = await getRelationsMediaManager({
|
|
65
|
+
form[key].value = await getRelationsMediaManager(req.adminizer, {
|
|
67
66
|
mediaManagerId: form[key].options?.id ?? "default",
|
|
68
67
|
model: `${slug}_${key}`,
|
|
69
68
|
widgetName: key,
|
|
@@ -5,6 +5,6 @@ export async function thumbController(req, res) {
|
|
|
5
5
|
const managerId = req.query.managerId;
|
|
6
6
|
if (method === 'GET') {
|
|
7
7
|
res.setHeader('Content-Type', 'image/webp');
|
|
8
|
-
res.send(await MediaManagerThumb.getThumb(id, managerId));
|
|
8
|
+
res.send(await MediaManagerThumb.getThumb(id, managerId, req.adminizer));
|
|
9
9
|
}
|
|
10
10
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { MediaManagerHandler } from "../../lib/media-manager/MediaManagerHandler";
|
|
2
1
|
import { MediaManagerAdapter } from "./mediaManagerAdapter";
|
|
3
2
|
export async function mediaManagerController(req, res) {
|
|
4
3
|
const method = req.method.toUpperCase();
|
|
@@ -16,7 +15,7 @@ export async function mediaManagerController(req, res) {
|
|
|
16
15
|
if (!id) {
|
|
17
16
|
return res.sendStatus(404);
|
|
18
17
|
}
|
|
19
|
-
const _manager =
|
|
18
|
+
const _manager = req.adminizer.mediaManagerHandler.get(id);
|
|
20
19
|
const manager = new MediaManagerAdapter(_manager);
|
|
21
20
|
if (method === 'GET') {
|
|
22
21
|
if (req.query._method === 'getLocales') {
|
package/controllers/view.js
CHANGED
|
@@ -86,7 +86,7 @@ export default async function view(req, res) {
|
|
|
86
86
|
for (const field of Object.keys(fields)) {
|
|
87
87
|
let fieldConfigConfig = fields[field].config;
|
|
88
88
|
if (fieldConfigConfig.type === 'mediamanager') {
|
|
89
|
-
record[field] = await getRelationsMediaManager({
|
|
89
|
+
record[field] = await getRelationsMediaManager(req.adminizer, {
|
|
90
90
|
mediaManagerId: fieldConfigConfig.options?.id ?? "default",
|
|
91
91
|
model: entity.model.modelname,
|
|
92
92
|
widgetName: field,
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import inertiaActionsHelper from "./inertiaActionsHelper";
|
|
2
2
|
import chalk from "chalk";
|
|
3
3
|
import { isObject } from "./JsUtils";
|
|
4
|
-
import { MediaManagerHandler } from "../lib/media-manager/MediaManagerHandler";
|
|
5
4
|
export default function inertiaAddHelper(req, entity, fields, record, view = false) {
|
|
6
5
|
const actionType = 'add';
|
|
7
6
|
let props = {
|
|
@@ -107,7 +106,7 @@ export default function inertiaAddHelper(req, entity, fields, record, view = fal
|
|
|
107
106
|
if (type === 'mediamanager') {
|
|
108
107
|
const mConfig = field.config;
|
|
109
108
|
const mOptions = mConfig?.options;
|
|
110
|
-
const mediaManager =
|
|
109
|
+
const mediaManager = req.adminizer.mediaManagerHandler.get(mOptions.id || 'default');
|
|
111
110
|
if (!mediaManager) {
|
|
112
111
|
options = {};
|
|
113
112
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { inputText, setSelectMany, getControlsOptions } from "./inertiaAddHelper";
|
|
2
|
-
import { MediaManagerHandler } from "../lib/media-manager/MediaManagerHandler";
|
|
3
2
|
export default function inertiaFormHelper(req, postLink, formData) {
|
|
4
3
|
let props = {
|
|
5
4
|
fields: [],
|
|
@@ -74,7 +73,7 @@ export default function inertiaFormHelper(req, postLink, formData) {
|
|
|
74
73
|
}
|
|
75
74
|
if (type === 'mediamanager') {
|
|
76
75
|
const mOptions = field.options;
|
|
77
|
-
const mediaManager =
|
|
76
|
+
const mediaManager = req.adminizer.mediaManagerHandler.get(mOptions.id || 'default');
|
|
78
77
|
if (!mediaManager) {
|
|
79
78
|
options = {};
|
|
80
79
|
}
|
package/lib/Adminizer.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ import { ControlsHandler } from "./controls/ControlsHandler";
|
|
|
14
14
|
import { CatalogHandler } from "./catalog/CatalogHandler";
|
|
15
15
|
import { NotificationHandler } from './notifications/NotificationHandler';
|
|
16
16
|
import { INotification } from "../interfaces/types";
|
|
17
|
+
import { MediaManagerHandler } from "./media-manager/MediaManagerHandler";
|
|
17
18
|
export declare class Adminizer {
|
|
18
19
|
/**
|
|
19
20
|
* If you convey this default Middleware, it will add it to the very top of the router,
|
|
@@ -34,6 +35,7 @@ export declare class Adminizer {
|
|
|
34
35
|
vite: ViteDevServer;
|
|
35
36
|
controlsHandler: ControlsHandler;
|
|
36
37
|
catalogHandler: CatalogHandler;
|
|
38
|
+
mediaManagerHandler: MediaManagerHandler;
|
|
37
39
|
jwtSecret: string;
|
|
38
40
|
static logger: winston.Logger;
|
|
39
41
|
constructor(ormAdapters: AbstractAdapter[]);
|
package/lib/Adminizer.js
CHANGED
|
@@ -30,6 +30,7 @@ import { ControlsHandler } from "./controls/ControlsHandler";
|
|
|
30
30
|
import { CatalogHandler } from "./catalog/CatalogHandler";
|
|
31
31
|
import { v4 as uuid } from "uuid";
|
|
32
32
|
import { bindNotifications } from "../system/bindNotifications";
|
|
33
|
+
import { MediaManagerHandler } from "./media-manager/MediaManagerHandler";
|
|
33
34
|
export class Adminizer {
|
|
34
35
|
// Preconfigures
|
|
35
36
|
/**
|
|
@@ -52,6 +53,7 @@ export class Adminizer {
|
|
|
52
53
|
vite;
|
|
53
54
|
controlsHandler;
|
|
54
55
|
catalogHandler;
|
|
56
|
+
mediaManagerHandler;
|
|
55
57
|
// Constants
|
|
56
58
|
jwtSecret = process.env.JWT_SECRET ?? uuid();
|
|
57
59
|
static logger = winston.createLogger({
|
|
@@ -195,6 +197,7 @@ export class Adminizer {
|
|
|
195
197
|
this.menuHelper = new MenuHelper(this.config);
|
|
196
198
|
this.widgetHandler = new WidgetHandler(this);
|
|
197
199
|
this.catalogHandler = new CatalogHandler();
|
|
200
|
+
this.mediaManagerHandler = new MediaManagerHandler();
|
|
198
201
|
bindExpressUtils(this.app);
|
|
199
202
|
bindReqFunctions(this);
|
|
200
203
|
// Bind assets
|
|
@@ -57,7 +57,7 @@ export class DefaultMediaManager extends AbstractMediaManager {
|
|
|
57
57
|
}
|
|
58
58
|
async setRelations(data, model, modelId, widgetName) {
|
|
59
59
|
let modelAssociations = await this.adminizer.modelHandler.model.get(this.modelAssoc)["_find"]({
|
|
60
|
-
where: { modelId: modelId, model: model.toLowerCase(), widgetName: widgetName },
|
|
60
|
+
where: { modelId: +modelId, model: model.toLowerCase(), widgetName: widgetName },
|
|
61
61
|
});
|
|
62
62
|
for (const modelAssociation of modelAssociations) {
|
|
63
63
|
const q = {};
|
|
@@ -70,7 +70,7 @@ export class DefaultMediaManager extends AbstractMediaManager {
|
|
|
70
70
|
await this.adminizer.modelHandler.model.get(this.modelAssoc)["_create"]({
|
|
71
71
|
mediaManagerId: this.id,
|
|
72
72
|
model: model.toLowerCase(),
|
|
73
|
-
modelId: modelId,
|
|
73
|
+
modelId: +modelId,
|
|
74
74
|
[fieldName]: widgetItem.id,
|
|
75
75
|
widgetName: widgetName,
|
|
76
76
|
sortOrder: key + 1,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AbstractMediaManager } from "./AbstractMediaManager";
|
|
2
2
|
export declare class MediaManagerHandler {
|
|
3
|
-
private
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
private managers;
|
|
4
|
+
add(manager: AbstractMediaManager): void;
|
|
5
|
+
get(id: string): AbstractMediaManager;
|
|
6
6
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Adminizer } from "../Adminizer";
|
|
2
2
|
export class MediaManagerHandler {
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
managers = [];
|
|
4
|
+
add(manager) {
|
|
5
5
|
this.managers.push(manager);
|
|
6
6
|
}
|
|
7
|
-
|
|
7
|
+
get(id) {
|
|
8
8
|
let instance = this.managers.find(e => e.id === id);
|
|
9
9
|
/**
|
|
10
10
|
* ✨ We magically get one
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Adminizer } from "../Adminizer";
|
|
1
2
|
export declare class MediaManagerThumb {
|
|
2
|
-
static getThumb(id: string, managerId: string): Promise<Buffer<ArrayBufferLike>>;
|
|
3
|
+
static getThumb(id: string, managerId: string, adminizer: Adminizer): Promise<Buffer<ArrayBufferLike>>;
|
|
3
4
|
}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import sharp from "sharp";
|
|
2
2
|
import { promises as fs } from 'fs';
|
|
3
|
-
import { MediaManagerHandler } from "./MediaManagerHandler";
|
|
4
3
|
export class MediaManagerThumb {
|
|
5
|
-
static async getThumb(id, managerId) {
|
|
4
|
+
static async getThumb(id, managerId, adminizer) {
|
|
6
5
|
const fileExists = async (path) => !!(await fs.stat(path).catch(e => false));
|
|
7
|
-
const manager =
|
|
6
|
+
const manager = adminizer.mediaManagerHandler.get(managerId);
|
|
8
7
|
const path = await manager.getOrigin(id);
|
|
9
8
|
const baseThumbPath = `${process.cwd()}/.tmp/thumbs`;
|
|
10
9
|
await fs.mkdir(baseThumbPath, { recursive: true });
|
|
@@ -11,19 +11,21 @@ type PostParams = Record<string, string | number | boolean | object | string[] |
|
|
|
11
11
|
export declare function randomFileName(filenameOrig: string, type: string, prefix: boolean): string;
|
|
12
12
|
/**
|
|
13
13
|
* Save media manager relations to database.
|
|
14
|
+
* @param adminizer
|
|
14
15
|
* @param fields
|
|
15
16
|
* @param reqData
|
|
16
17
|
* @param model
|
|
17
18
|
* @param recordId
|
|
18
19
|
*/
|
|
19
|
-
export declare function saveRelationsMediaManager(fields: Fields, reqData: PostParams, model: string, recordId: number): Promise<void>;
|
|
20
|
+
export declare function saveRelationsMediaManager(adminizer: Adminizer, fields: Fields, reqData: PostParams, model: string, recordId: number): Promise<void>;
|
|
20
21
|
/**
|
|
21
22
|
* Get realtions
|
|
23
|
+
* @param adminizer
|
|
22
24
|
* @param data
|
|
23
25
|
* @param model
|
|
24
26
|
* @param widgetName
|
|
25
27
|
*/
|
|
26
|
-
export declare function getRelationsMediaManager(data: MediaManagerWidgetJSON): Promise<import("../AbstractMediaManager").MediaManagerWidgetClientItem[]>;
|
|
28
|
+
export declare function getRelationsMediaManager(adminizer: Adminizer, data: MediaManagerWidgetJSON): Promise<import("../AbstractMediaManager").MediaManagerWidgetClientItem[]>;
|
|
27
29
|
/**
|
|
28
30
|
* Delate Ralations
|
|
29
31
|
* @param adminizer
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { MediaManagerHandler } from "../MediaManagerHandler";
|
|
2
1
|
/**
|
|
3
2
|
* Create a random file name with prefix and type. If prefix is true, the file name will be prefixed with a random string.
|
|
4
3
|
* @param filenameOrig
|
|
@@ -13,30 +12,32 @@ export function randomFileName(filenameOrig, type, prefix) {
|
|
|
13
12
|
}
|
|
14
13
|
/**
|
|
15
14
|
* Save media manager relations to database.
|
|
15
|
+
* @param adminizer
|
|
16
16
|
* @param fields
|
|
17
17
|
* @param reqData
|
|
18
18
|
* @param model
|
|
19
19
|
* @param recordId
|
|
20
20
|
*/
|
|
21
|
-
export async function saveRelationsMediaManager(fields, reqData, model, recordId) {
|
|
21
|
+
export async function saveRelationsMediaManager(adminizer, fields, reqData, model, recordId) {
|
|
22
22
|
for (let prop in reqData) {
|
|
23
23
|
let fieldConfigConfig = fields[prop].config;
|
|
24
24
|
let options = fieldConfigConfig.options;
|
|
25
25
|
if (fieldConfigConfig.type === 'mediamanager') {
|
|
26
26
|
let data = reqData[prop];
|
|
27
|
-
let mediaManager =
|
|
27
|
+
let mediaManager = adminizer.mediaManagerHandler.get(options?.id ?? 'default');
|
|
28
28
|
await mediaManager.setRelations(data, model, recordId, prop);
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
33
|
* Get realtions
|
|
34
|
+
* @param adminizer
|
|
34
35
|
* @param data
|
|
35
36
|
* @param model
|
|
36
37
|
* @param widgetName
|
|
37
38
|
*/
|
|
38
|
-
export async function getRelationsMediaManager(data) {
|
|
39
|
-
let mediaManager =
|
|
39
|
+
export async function getRelationsMediaManager(adminizer, data) {
|
|
40
|
+
let mediaManager = adminizer.mediaManagerHandler.get(data.mediaManagerId);
|
|
40
41
|
return await mediaManager.getRelations(data.model, data.widgetName, data.modelId);
|
|
41
42
|
}
|
|
42
43
|
/**
|
|
@@ -51,7 +52,7 @@ export async function deleteRelationsMediaManager(adminizer, model, record) {
|
|
|
51
52
|
let field = config.fields[key];
|
|
52
53
|
if (field && field.type === 'mediamanager') {
|
|
53
54
|
const option = field.options;
|
|
54
|
-
let mediaManager =
|
|
55
|
+
let mediaManager = adminizer.mediaManagerHandler.get(option?.id ?? 'default');
|
|
55
56
|
let emptyData = [];
|
|
56
57
|
await mediaManager.setRelations(emptyData, model, +record[0].id, key);
|
|
57
58
|
}
|
package/package.json
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { DefaultMediaManager } from "../lib/media-manager/DefaultMediaManager";
|
|
2
|
-
import { MediaManagerHandler } from "../lib/media-manager/MediaManagerHandler";
|
|
3
2
|
import serveStatic from "serve-static";
|
|
4
3
|
import path from "path";
|
|
5
4
|
export default function bindMediaManager(adminizer) {
|
|
@@ -8,7 +7,7 @@ export default function bindMediaManager(adminizer) {
|
|
|
8
7
|
adminizer.emitter.on("adminizer:loaded", async () => {
|
|
9
8
|
try {
|
|
10
9
|
let mediaManager = new DefaultMediaManager(adminizer, 'default', 'media-manager', adminizer.config.mediamanager.fileStoragePath);
|
|
11
|
-
|
|
10
|
+
adminizer.mediaManagerHandler.add(mediaManager);
|
|
12
11
|
}
|
|
13
12
|
catch (e) {
|
|
14
13
|
console.log(e);
|