adminizer 4.1.0-commit.d8a06d3 → 4.1.1
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/Readme.md +46 -0
- package/assets/{VanillaJSONEditor-D-Lx670g.js → VanillaJSONEditor-DfRefswH.js} +104 -104
- package/assets/add-CJ1-zeA1.js +1 -0
- package/assets/add-form-CbNl0wdS.js +1 -0
- package/assets/add-group-form-Bt_Dx9wm.js +1 -0
- package/assets/add-group-pIFJV5qL.js +1 -0
- package/assets/add-user-D2US8hL_.js +1 -0
- package/assets/add-user-form-Bt8Jy6S2.js +1 -0
- package/assets/{app-WTooYWC3.css → app-B6cCPfWk.css} +1 -1
- package/assets/app-layout-B86jl9bH.js +1 -0
- package/assets/app-shell-CiGyzQ0C.js +1 -0
- package/assets/app-sidebar-Bz-SRwBg.js +1 -0
- package/assets/app-sidebar-header-7CNCx7Rs.js +11 -0
- package/assets/app.js +45 -37
- package/assets/breadcrumbs-_jhtTcOi.js +1 -0
- package/assets/catalog-CON6moaA.js +16 -0
- package/assets/catalog-Cc6Mk9sX.css +1 -0
- package/assets/checkbox-CQdZw5mb.js +1 -0
- package/assets/dashboard-es9ZT8qk.js +3 -0
- package/assets/{date-picker-DI1cCO7K.js → date-picker-Dz-d-YWX.js} +2 -2
- package/assets/debounce-qdyXyOeG.js +1 -0
- package/assets/del-modal-D0mrZvki.js +11 -0
- package/assets/dialog-stack-BiMbfm58.js +1 -0
- package/assets/dropdown-menu-BSBcRiXx.js +1 -0
- package/assets/{field-renderer-DVHZF6HS.js → field-renderer-B6hFAeiU.js} +3 -3
- package/assets/form-Buslty7y.js +1 -0
- package/assets/form-aqiRmPix.js +1 -0
- package/assets/{geo-json-BjiyTtMu.js → geo-json-BKmYmu3d.js} +2 -2
- package/assets/{handsontable-4mjU_b0n.js → handsontable-B8xVeMAQ.js} +5 -5
- package/assets/home-Dr72Jk-w.js +2 -0
- package/assets/icon-B-a7xg54.js +1 -0
- package/assets/index-B68_akQe.js +1 -0
- package/assets/index-B7-xTDyy.js +1 -0
- package/assets/index-BJFFlCSo.js +1 -0
- package/assets/{index-Cw5o84pO.js → index-BOuMo_nl.js} +3 -3
- package/assets/index-BzOcGsBq.js +1 -0
- package/assets/index-CFbQ2Rv0.js +1 -0
- package/assets/{index-D5ir9iUV.js → index-Cq31rrfZ.js} +1 -1
- package/assets/{index-Cgp8OfuI.js → index-D5UDXTFs.js} +1 -1
- package/assets/index-oxIQWAdI.js +41 -0
- package/assets/init-user-5H689LP0.js +1 -0
- package/assets/input-CSJjrf2i.js +1 -0
- package/assets/input-error-CK92Shhm.js +1 -0
- package/assets/label-Muj0-Efy.js +1 -0
- package/assets/list-Cvh7zbyG.js +1 -0
- package/assets/list-table-Bs_vbQiV.js +52 -0
- package/assets/login-DliJrjMQ.js +6 -0
- package/assets/manifest.json +575 -673
- package/assets/material-icon-BRS58Qpk.js +1 -0
- package/assets/module-CjG21VCT.js +1 -0
- package/assets/{monaco-editor-CJs0_GlD.js → monaco-editor-9fDiyfuW.js} +2 -2
- package/assets/{multi-select-BvRpAW8r.js → multi-select-CMQIJ0JT.js} +2 -2
- package/assets/nav-footer-IGMn9NiE.js +1 -0
- package/assets/nav-main-DBE4rMiZ.js +1 -0
- package/assets/nav-user-CjyLRyq-.js +1 -0
- package/assets/pagination-render-DUAq2klc.js +1 -0
- package/assets/popover-C_cww-4_.js +1 -0
- package/assets/register-UzQn3J0g.js +1 -0
- package/assets/{select-BWepUw-9.js → select-DzBno-dc.js} +2 -2
- package/assets/{sidebar-CAHsHdjM.js → sidebar-Dc4iqfu-.js} +2 -2
- package/assets/skeleton-Dkmj2o2Z.js +1 -0
- package/assets/sonner-De1t71Gj.js +1 -0
- package/assets/{toast-editor-CMK7QtF1.js → toast-editor-1Pul3oMs.js} +2 -2
- package/assets/tooltip-CwPrC-HD.js +1 -0
- package/assets/use-appearance-J8J2w43p.js +1 -0
- package/assets/use-window-size-DLSEoR6e.js +1 -0
- package/assets/{user-info-DFrmpJ4y.js → user-info-8RyDk7qh.js} +2 -2
- package/assets/user-menu-content-CpxTLH56.js +6 -0
- package/assets/welcome-BYKI6yO-.js +1 -0
- package/controllers/add.js +8 -8
- package/controllers/catalog/Catalog.d.ts +1 -1
- package/controllers/catalog/Catalog.js +40 -35
- package/controllers/catalog/FrontentCatalogAdapter.d.ts +36 -26
- package/controllers/catalog/FrontentCatalogAdapter.js +71 -72
- package/controllers/edit.js +8 -11
- package/controllers/list.js +2 -2
- package/controllers/login.js +16 -7
- package/controllers/navigation/edit.js +1 -1
- package/controllers/remove.js +1 -1
- package/controllers/view.js +1 -1
- package/helpers/JsUtils.d.ts +1 -0
- package/helpers/JsUtils.js +3 -0
- package/helpers/accessRightsHelper.d.ts +3 -0
- package/helpers/accessRightsHelper.js +27 -4
- package/helpers/controllerHelper.js +39 -18
- package/helpers/fieldsHelper.d.ts +3 -2
- package/helpers/fieldsHelper.js +5 -1
- package/helpers/inertiaAddHelper.d.ts +4 -5
- package/helpers/inertiaAddHelper.js +25 -7
- package/helpers/inertiaFromHelper.js +1 -1
- package/helpers/inertiaMenuHelper.d.ts +1 -1
- package/helpers/inertiaMenuHelper.js +1 -1
- package/helpers/menuHelper.d.ts +8 -3
- package/helpers/menuHelper.js +26 -17
- package/index.d.ts +2 -6
- package/index.js +5 -6
- package/interfaces/adminpanelConfig.d.ts +35 -30
- package/interfaces/global.d.ts +5 -2
- package/interfaces/types.d.ts +1 -1
- package/lib/Adminizer.d.ts +9 -3
- package/lib/Adminizer.js +32 -16
- package/lib/media-manager/Items.js +0 -3
- package/lib/requestProcessor.js +10 -3
- package/lib/v4/DataAccessor.d.ts +3 -1
- package/lib/v4/DataAccessor.js +43 -18
- package/lib/v4/I18n.js +2 -0
- package/lib/{catalog → v4/catalog}/AbstractCatalog.d.ts +89 -60
- package/lib/{catalog → v4/catalog}/AbstractCatalog.js +59 -54
- package/lib/v4/catalog/Navigation.d.ts +43 -0
- package/lib/v4/catalog/Navigation.js +457 -0
- package/lib/{controls → v4/controls}/AbstractControls.d.ts +1 -1
- package/lib/{controls → v4/controls}/codeEditor/MonacoEditor.d.ts +1 -1
- package/lib/{controls → v4/controls}/geojsoneditor/GeoEditor.d.ts +1 -1
- package/lib/{controls → v4/controls}/jsoneditor/JsonEditor.d.ts +1 -1
- package/lib/{controls → v4/controls}/markdown/ToastUiEditor.d.ts +1 -1
- package/lib/{controls → v4/controls}/table/Handsontable.d.ts +1 -1
- package/lib/{controls → v4/controls}/wysiwyg/CKeditor.d.ts +1 -1
- package/lib/{datatable → v4/datatable}/NodeTable.d.ts +3 -3
- package/lib/{datatable → v4/datatable}/NodeTable.js +8 -5
- package/lib/v4/model/AbstractModel.d.ts +5 -1
- package/lib/v4/model/AbstractModel.js +2 -1
- package/lib/v4/model/ModelHandler.js +1 -3
- package/lib/v4/model/adapter/sequelize.d.ts +8 -0
- package/lib/v4/model/adapter/sequelize.js +274 -133
- package/lib/v4/model/adapter/waterline.js +5 -2
- package/lib/{widgets → v4/widgets}/abstractLink.d.ts +1 -1
- package/lib/{widgets → v4/widgets}/abstractWidgetBase.d.ts +1 -1
- package/lib/{widgets → v4/widgets}/widgetHandler.d.ts +11 -4
- package/lib/{widgets → v4/widgets}/widgetHandler.js +1 -1
- package/models/NavigationAP.d.ts +2 -3
- package/models/NavigationAP.js +5 -6
- package/models/UserAP.d.ts +2 -3
- package/package.json +17 -6
- package/system/Router.js +8 -11
- package/system/bindAccessRights.js +0 -4
- package/system/bindControls.js +6 -6
- package/system/bindDev.js +1 -0
- package/system/bindInertia.js +9 -4
- package/system/bindMediaManager.js +0 -1
- package/system/bindModels.js +9 -6
- package/system/bindNavigation.d.ts +2 -0
- package/system/bindNavigation.js +42 -42
- package/system/bindReqFunctions.js +0 -1
- package/system/defaults.js +13 -6
- package/translations/ar.json +70 -1
- package/translations/cn.json +70 -1
- package/translations/de.json +71 -3
- package/translations/en.json +70 -102
- package/translations/es.json +70 -1
- package/translations/fr.json +70 -1
- package/translations/hi.json +70 -1
- package/translations/jp.json +70 -1
- package/translations/ko.json +70 -1
- package/translations/pt.json +70 -1
- package/translations/ru.json +71 -103
- package/translations/ua.json +70 -1
- package/translations/uz.json +72 -0
- package/translations/vi.json +70 -1
- package/assets/add-BP_u3Tjl.js +0 -1
- package/assets/add-form-nffmiYTh.js +0 -1
- package/assets/add-group-D4vcHlm-.js +0 -1
- package/assets/add-group-form-gNJW11-q.js +0 -1
- package/assets/add-user-DWh3Nas0.js +0 -1
- package/assets/add-user-form-BJ0FsZYJ.js +0 -1
- package/assets/app-layout-DYsRFUuP.js +0 -1
- package/assets/app-shell-Dd9Eknik.js +0 -1
- package/assets/app-sidebar-BOmu6-Sl.js +0 -1
- package/assets/app-sidebar-header-CoXSzWxk.js +0 -11
- package/assets/breadcrumbs-BmAq4fHT.js +0 -1
- package/assets/button-C9B_5Jf_.js +0 -1
- package/assets/checkbox-Fg27sL_1.js +0 -1
- package/assets/compiler-runtime-hB6dAw2d.js +0 -9
- package/assets/dashboard-BACj996r.js +0 -3
- package/assets/dropdown-menu-Bhj17ENm.js +0 -1
- package/assets/form-BgWdwvz1.js +0 -1
- package/assets/form-DgtErfln.js +0 -1
- package/assets/home-CHntBHJa.js +0 -2
- package/assets/icon-Dt0vBgDO.js +0 -1
- package/assets/index-B8BS9wMC.js +0 -1
- package/assets/index-BC0yfOHo.js +0 -1
- package/assets/index-BKCgnGj_.js +0 -1
- package/assets/index-BbXEMx9n.js +0 -1
- package/assets/index-BykbU6Ee.js +0 -41
- package/assets/index-CaJgc5EZ.js +0 -1
- package/assets/index-DrWfGwtf.js +0 -1
- package/assets/init-user-JfCKJ5Ce.js +0 -1
- package/assets/input-CvRbIbk4.js +0 -1
- package/assets/input-error-DMK7cAt7.js +0 -1
- package/assets/label-CSLFe9Bz.js +0 -1
- package/assets/list-B2Oa5O_Q.js +0 -1
- package/assets/list-table-DA9MhywL.js +0 -62
- package/assets/login-DQwGtdis.js +0 -6
- package/assets/material-icon-BJg8o_fs.js +0 -1
- package/assets/module-DWXp59Vg.js +0 -1
- package/assets/nav-footer-Bs4dmN1d.js +0 -1
- package/assets/nav-main-Bq3IMk4C.js +0 -1
- package/assets/nav-user-CbB22J5O.js +0 -1
- package/assets/pagination-render-DuXDDbC_.js +0 -1
- package/assets/popover-DtoGI2b1.js +0 -1
- package/assets/register-BSogVF0h.js +0 -1
- package/assets/skeleton-COOcAA8f.js +0 -1
- package/assets/sonner-BI0IFOQN.js +0 -1
- package/assets/tooltip-DHwpLKOI.js +0 -1
- package/assets/use-appearance-DRfIqTgw.js +0 -1
- package/assets/use-window-size-h0Sh_NvX.js +0 -1
- package/assets/user-menu-content-DPXQdERj.js +0 -6
- package/assets/utils-DjqsqOe8.js +0 -1
- package/assets/welcome-B4WCIXKf.js +0 -1
- package/controllers/processInstallFinalize.d.ts +0 -1
- package/controllers/processInstallFinalize.js +0 -16
- package/controllers/processInstallStep.d.ts +0 -0
- package/controllers/processInstallStep.js +0 -122
- package/lib/catalog/Navigation.d.ts +0 -0
- package/lib/catalog/Navigation.js +0 -532
- package/lib/installStepper/InstallStepAbstract.d.ts +0 -52
- package/lib/installStepper/InstallStepAbstract.js +0 -69
- package/lib/installStepper/finalizeStep.d.ts +0 -21
- package/lib/installStepper/finalizeStep.js +0 -48
- package/lib/installStepper/installStepper.d.ts +0 -40
- package/lib/installStepper/installStepper.js +0 -195
- package/models/MediaManagerAP.d.ts +0 -62
- package/models/MediaManagerAP.js +0 -45
- package/models/MediaManagerAssociationsAP.d.ts +0 -38
- package/models/MediaManagerAssociationsAP.js +0 -27
- package/models/MediaManagerMetaAP.d.ts +0 -30
- package/models/MediaManagerMetaAP.js +0 -21
- package/system/bindInstallStepper.d.ts +0 -2
- package/system/bindInstallStepper.js +0 -23
- /package/lib/{catalog → v4/catalog}/CatalogHandler.d.ts +0 -0
- /package/lib/{catalog → v4/catalog}/CatalogHandler.js +0 -0
- /package/lib/{controls → v4/controls}/AbstractControls.js +0 -0
- /package/lib/{controls → v4/controls}/ControlsHandler.d.ts +0 -0
- /package/lib/{controls → v4/controls}/ControlsHandler.js +0 -0
- /package/lib/{controls → v4/controls}/codeEditor/MonacoEditor.js +0 -0
- /package/lib/{controls → v4/controls}/geojsoneditor/GeoEditor.js +0 -0
- /package/lib/{controls → v4/controls}/jsoneditor/JsonEditor.js +0 -0
- /package/lib/{controls → v4/controls}/markdown/ToastUiEditor.js +0 -0
- /package/lib/{controls → v4/controls}/table/Handsontable.js +0 -0
- /package/lib/{controls → v4/controls}/wysiwyg/CKeditor.js +0 -0
- /package/lib/{inertia → v4/inertia}/flash.d.ts +0 -0
- /package/lib/{inertia → v4/inertia}/flash.js +0 -0
- /package/lib/{inertia → v4/inertia}/inertiaAdapter.d.ts +0 -0
- /package/lib/{inertia → v4/inertia}/inertiaAdapter.js +0 -0
- /package/lib/{widgets → v4/widgets}/abstractAction.d.ts +0 -0
- /package/lib/{widgets → v4/widgets}/abstractAction.js +0 -0
- /package/lib/{widgets → v4/widgets}/abstractCustom.d.ts +0 -0
- /package/lib/{widgets → v4/widgets}/abstractCustom.js +0 -0
- /package/lib/{widgets → v4/widgets}/abstractInfo.d.ts +0 -0
- /package/lib/{widgets → v4/widgets}/abstractInfo.js +0 -0
- /package/lib/{widgets → v4/widgets}/abstractLink.js +0 -0
- /package/lib/{widgets → v4/widgets}/abstractSwitch.d.ts +0 -0
- /package/lib/{widgets → v4/widgets}/abstractSwitch.js +0 -0
- /package/lib/{widgets → v4/widgets}/abstractWidgetBase.js +0 -0
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "adminizer",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "4.1.
|
|
4
|
+
"version": "4.1.1",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
7
|
-
"test": "
|
|
7
|
+
"test": "vitest --reporter verbose",
|
|
8
8
|
"start": "cross-env NO_SEED_DATA=true ORM=sequelize tsx --tsconfig ./fixture/tsconfig.json ./fixture/index.ts",
|
|
9
9
|
"dev": "cross-env VITE_ENV=dev tsx watch --tsconfig ./fixture/tsconfig.json ./fixture/index.ts",
|
|
10
10
|
"dev:sequelize": "cross-env VITE_ENV=dev NO_SEED_DATA=true ORM=sequelize tsx watch --tsconfig ./fixture/tsconfig.json ./fixture/index.ts",
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"build": "npm run copy:backend && npm run compile:backend && npm run build:assets",
|
|
17
17
|
"build:module": "vite build --config modules/test/vite.config.module.ts",
|
|
18
18
|
"build:react-quill": "vite build --config modules/controls/wysiwyg/vite.config.react-quill.ts",
|
|
19
|
+
"build:catalog-modules": "vite build --config modules/testCatalog/vite.config.module.ts",
|
|
19
20
|
"copy:modules": "node copy-modules.js",
|
|
20
21
|
"build:assets:modules": "npm run build:assets && npm run copy:modules",
|
|
21
22
|
"start:seed": "cross-env ORM=sequelize tsx --tsconfig ./fixture/tsconfig.json ./fixture/index.ts",
|
|
@@ -27,9 +28,8 @@
|
|
|
27
28
|
"license": "MIT",
|
|
28
29
|
"description": "",
|
|
29
30
|
"dependencies": {
|
|
30
|
-
"@
|
|
31
|
-
"@radix-ui/react-
|
|
32
|
-
"@radix-ui/react-switch": "^1.2.4",
|
|
31
|
+
"@minoru/react-dnd-treeview": "^3.5.2",
|
|
32
|
+
"@radix-ui/react-context-menu": "^2.2.15",
|
|
33
33
|
"body-parser": "^1.20.3",
|
|
34
34
|
"chalk": "^5.4.1",
|
|
35
35
|
"cmdk": "^1.1.1",
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
"multer": "^1.4.5-lts.1",
|
|
46
46
|
"next-themes": "^0.4.6",
|
|
47
47
|
"password-hash": "^1.2.2",
|
|
48
|
+
"react-dnd": "^16.0.1",
|
|
48
49
|
"sharp": "^0.33.5",
|
|
49
50
|
"typeorm": "^0.3.20",
|
|
50
51
|
"uuid": "^11.0.5",
|
|
@@ -52,7 +53,10 @@
|
|
|
52
53
|
"winston": "^3.17.0"
|
|
53
54
|
},
|
|
54
55
|
"devDependencies": {
|
|
56
|
+
"isomorphic-webcrypto": "^2.3.8",
|
|
57
|
+
"@babel/plugin-proposal-decorators": "^7.27.1",
|
|
55
58
|
"@ckeditor/ckeditor5-react": "^9.5.0",
|
|
59
|
+
"@eslint/compat": "^1.2.9",
|
|
56
60
|
"@faker-js/faker": "^9.7.0",
|
|
57
61
|
"@handsontable/react": "^15.2.0",
|
|
58
62
|
"@inertiajs/react": "^2.0.0",
|
|
@@ -63,11 +67,14 @@
|
|
|
63
67
|
"@radix-ui/react-dialog": "^1.1.7",
|
|
64
68
|
"@radix-ui/react-dropdown-menu": "^2.1.6",
|
|
65
69
|
"@radix-ui/react-label": "^2.1.2",
|
|
70
|
+
"@radix-ui/react-menubar": "^1.1.12",
|
|
66
71
|
"@radix-ui/react-popover": "^1.1.7",
|
|
72
|
+
"@radix-ui/react-portal": "^1.1.6",
|
|
67
73
|
"@radix-ui/react-select": "^2.1.6",
|
|
68
74
|
"@radix-ui/react-separator": "^1.1.3",
|
|
69
75
|
"@radix-ui/react-slider": "^1.2.3",
|
|
70
76
|
"@radix-ui/react-slot": "^1.2.0",
|
|
77
|
+
"@radix-ui/react-switch": "^1.2.4",
|
|
71
78
|
"@radix-ui/react-tooltip": "^1.1.8",
|
|
72
79
|
"@tailwindcss/vite": "^4.0.15",
|
|
73
80
|
"@tanstack/react-table": "^8.21.2",
|
|
@@ -80,6 +87,7 @@
|
|
|
80
87
|
"@types/json-schema": "^7.0.15",
|
|
81
88
|
"@types/jsonwebtoken": "^9.0.9",
|
|
82
89
|
"@types/leaflet": "^1.9.17",
|
|
90
|
+
"@types/lodash": "^4.17.17",
|
|
83
91
|
"@types/lodash-es": "^4.17.12",
|
|
84
92
|
"@types/multer": "^1.4.12",
|
|
85
93
|
"@types/node": "^22.10.5",
|
|
@@ -90,12 +98,14 @@
|
|
|
90
98
|
"@types/sprintf-js": "^1.1.4",
|
|
91
99
|
"@types/uuid": "^10.0.0",
|
|
92
100
|
"@types/waterline": "^0.13.9",
|
|
101
|
+
"@typescript-eslint/eslint-plugin": "^8.32.1",
|
|
93
102
|
"@vitejs/plugin-react": "^4.3.4",
|
|
94
103
|
"babel-plugin-react-compiler": "^19.0.0-beta-e993439-20250405",
|
|
95
104
|
"ckeditor5": "^45.0.0",
|
|
96
105
|
"class-variance-authority": "^0.7.1",
|
|
97
106
|
"clsx": "^2.1.1",
|
|
98
107
|
"cross-env": "^7.0.3",
|
|
108
|
+
"eslint": "^9.26.0",
|
|
99
109
|
"handsontable": "^15.2.0",
|
|
100
110
|
"json-schema": "^0.4.0",
|
|
101
111
|
"leaflet": "^1.9.4",
|
|
@@ -127,6 +137,7 @@
|
|
|
127
137
|
"vanilla-jsoneditor": "^3.1.1",
|
|
128
138
|
"vite": "^6.1.0",
|
|
129
139
|
"vite-plugin-externals": "^0.6.2",
|
|
130
|
-
"vite-plugin-full-reload": "^1.2.0"
|
|
140
|
+
"vite-plugin-full-reload": "^1.2.0",
|
|
141
|
+
"vitest": "^3.0.7"
|
|
131
142
|
}
|
|
132
143
|
}
|
package/system/Router.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// import _processInstallStep from "../controllers/processInstallStep";
|
|
2
|
-
// import _processInstallFinalize from "../controllers/processInstallFinalize";
|
|
3
1
|
import _dashboard from "../controllers/dashboard";
|
|
4
2
|
import _welcome from "../controllers/welcome";
|
|
5
3
|
import _list from "../controllers/list";
|
|
@@ -30,6 +28,11 @@ export default class Router {
|
|
|
30
28
|
Adminizer.log.error(`This method allowed for run only one time`);
|
|
31
29
|
return;
|
|
32
30
|
}
|
|
31
|
+
if (typeof adminizer.defaultMiddleware === 'function' &&
|
|
32
|
+
adminizer.defaultMiddleware.length >= 3 &&
|
|
33
|
+
adminizer.defaultMiddleware.length <= 4) {
|
|
34
|
+
adminizer.app.use(adminizer.defaultMiddleware);
|
|
35
|
+
}
|
|
33
36
|
/**
|
|
34
37
|
* List or one policy that should be bound to actions
|
|
35
38
|
* @type {MiddlewareType[]}
|
|
@@ -59,12 +62,6 @@ export default class Router {
|
|
|
59
62
|
* Widgets Custom
|
|
60
63
|
*/
|
|
61
64
|
adminizer.app.all(`${adminizer.config.routePrefix}/widgets-action/:widgetId`, adminizer.policyManager.bindPolicies(policies, widgetCustomController));
|
|
62
|
-
// /**
|
|
63
|
-
// * Module Install Stepper
|
|
64
|
-
// * @deprecated
|
|
65
|
-
// * */
|
|
66
|
-
// adminizer.app.all(`/install/:id`, adminizer.policyManager.bindPolicies(policies, _processInstallStep));
|
|
67
|
-
// adminizer.app.all(`/install/:id/finalize`, adminizer.policyManager.bindPolicies(policies, _processInstallFinalize));
|
|
68
65
|
/**
|
|
69
66
|
* Edit form
|
|
70
67
|
* */
|
|
@@ -74,8 +71,8 @@ export default class Router {
|
|
|
74
71
|
/**
|
|
75
72
|
* Catalog
|
|
76
73
|
*/
|
|
77
|
-
adminizer.app.all(
|
|
78
|
-
adminizer.app.all(
|
|
74
|
+
adminizer.app.all(`${adminizer.config.routePrefix}/catalog/:slug/:id`, adminizer.policyManager.bindPolicies(policies, catalogController));
|
|
75
|
+
adminizer.app.all(`${adminizer.config.routePrefix}/catalog/:slug`, adminizer.policyManager.bindPolicies(policies, catalogController));
|
|
79
76
|
/**
|
|
80
77
|
* Media Manager
|
|
81
78
|
*/
|
|
@@ -154,7 +151,7 @@ export default class Router {
|
|
|
154
151
|
/**
|
|
155
152
|
* Create a default dashboard
|
|
156
153
|
*/
|
|
157
|
-
if (
|
|
154
|
+
if (adminizer.config.dashboard) {
|
|
158
155
|
adminizer.app.all(adminizer.config.routePrefix, adminizer.policyManager.bindPolicies(policies, _dashboard));
|
|
159
156
|
}
|
|
160
157
|
else {
|
|
@@ -55,10 +55,6 @@ export default async function bindAccessRights(adminizer) {
|
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
adminizer.accessRightsHelper.registerToken({
|
|
59
|
-
id: `process-install-step`, name: "Process install step",
|
|
60
|
-
description: "Access to '/processInstallStep' route", department: "Routes"
|
|
61
|
-
});
|
|
62
58
|
// Widgets
|
|
63
59
|
adminizer.accessRightsHelper.registerToken({
|
|
64
60
|
id: `widgets`, name: "Widgets",
|
package/system/bindControls.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { CKeditor } from "../lib/controls/wysiwyg/CKeditor";
|
|
2
|
-
import { ToastUiEditor } from "../lib/controls/markdown/ToastUiEditor";
|
|
3
|
-
import { Handsontable } from "../lib/controls/table/Handsontable";
|
|
4
|
-
import { JsonEditor } from "../lib/controls/jsoneditor/JsonEditor";
|
|
5
|
-
import { MonacoEditor } from "../lib/controls/codeEditor/MonacoEditor";
|
|
6
|
-
import { GeoEditor } from "../lib/controls/geojsoneditor/GeoEditor";
|
|
1
|
+
import { CKeditor } from "../lib/v4/controls/wysiwyg/CKeditor";
|
|
2
|
+
import { ToastUiEditor } from "../lib/v4/controls/markdown/ToastUiEditor";
|
|
3
|
+
import { Handsontable } from "../lib/v4/controls/table/Handsontable";
|
|
4
|
+
import { JsonEditor } from "../lib/v4/controls/jsoneditor/JsonEditor";
|
|
5
|
+
import { MonacoEditor } from "../lib/v4/controls/codeEditor/MonacoEditor";
|
|
6
|
+
import { GeoEditor } from "../lib/v4/controls/geojsoneditor/GeoEditor";
|
|
7
7
|
export function bindControls(adminizer) {
|
|
8
8
|
// bind wysiwyg
|
|
9
9
|
adminizer.controlsHandler.add(new CKeditor(adminizer));
|
package/system/bindDev.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export default function bindDev(adminizer) {
|
|
2
2
|
if (adminizer.config.models) {
|
|
3
3
|
Object.keys(adminizer.config.models).forEach((modelname) => {
|
|
4
|
+
// if(["userap", "groupap"].includes(modelname)) return;
|
|
4
5
|
if (typeof adminizer.config.models[modelname] !== "boolean") {
|
|
5
6
|
let modelName = adminizer.config.models[modelname].model;
|
|
6
7
|
adminizer.config.models[`dev-${modelName}`] = {
|
package/system/bindInertia.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import flash from "../lib/inertia/flash";
|
|
2
|
-
import inertia from "../lib/inertia/inertiaAdapter";
|
|
1
|
+
import flash from "../lib/v4/inertia/flash";
|
|
2
|
+
import inertia from "../lib/v4/inertia/inertiaAdapter";
|
|
3
3
|
import fs from "fs";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { InertiaMenuHelper } from "../helpers/inertiaMenuHelper";
|
|
@@ -110,9 +110,10 @@ export function bindInertia(adminizer) {
|
|
|
110
110
|
user: req.session.userPretended ?? req.user
|
|
111
111
|
},
|
|
112
112
|
menu: req.user ? menuHelper.getMenuItems(req) : null,
|
|
113
|
+
title: menuHelper.getBrandTitle(),
|
|
113
114
|
brand: menuHelper.getBrandTitle(),
|
|
114
115
|
logout: menuHelper.getLogoutUrl(),
|
|
115
|
-
logoutBtn: req.
|
|
116
|
+
logoutBtn: req.i18n.__("Log out"),
|
|
116
117
|
section: req.user ? [
|
|
117
118
|
{
|
|
118
119
|
title: req.i18n.__("Adminpanel"),
|
|
@@ -120,7 +121,11 @@ export function bindInertia(adminizer) {
|
|
|
120
121
|
link: req.adminizer.config.routePrefix,
|
|
121
122
|
icon: "rocket_launch",
|
|
122
123
|
},
|
|
123
|
-
...(req.adminizer.configHelper.getConfig().sections)
|
|
124
|
+
...((req.adminizer.configHelper.getConfig().sections || [])
|
|
125
|
+
.map((sec) => ({
|
|
126
|
+
...sec,
|
|
127
|
+
title: req.i18n.__(sec.title),
|
|
128
|
+
})))
|
|
124
129
|
] : null,
|
|
125
130
|
showVersion: req.adminizer.config.showVersion ?? false
|
|
126
131
|
});
|
package/system/bindModels.js
CHANGED
|
@@ -11,10 +11,11 @@ export default async function bindModels(adminizer) {
|
|
|
11
11
|
throw new Error("Default ORM adapter was not provided");
|
|
12
12
|
}
|
|
13
13
|
const systemModelsDir = path.resolve(import.meta.dirname, "../models");
|
|
14
|
-
|
|
14
|
+
// Фильтруем только .js и .ts файлы, исключая .d.ts
|
|
15
|
+
const systemModelsFiles = fs.readdirSync(systemModelsDir).filter(file => (file.endsWith(".js") || (file.endsWith(".ts") && !file.endsWith(".d.ts"))));
|
|
15
16
|
// Bind system models reading them from ../models and get the whole list of them for further checks
|
|
16
17
|
const systemModels = systemModelsFiles.map((file) => {
|
|
17
|
-
const modelName = path.basename(file,
|
|
18
|
+
const modelName = path.basename(file, path.extname(file)); // убираем .js/.ts
|
|
18
19
|
const ormAdapter = adminizer.getOrmAdapter(defaultOrmAdapter);
|
|
19
20
|
// Create model adapter instance and add it to model handler
|
|
20
21
|
const registeredModel = ormAdapter.getModel(modelName.toLowerCase());
|
|
@@ -22,21 +23,23 @@ export default async function bindModels(adminizer) {
|
|
|
22
23
|
adminizer.modelHandler.add(modelName, model);
|
|
23
24
|
return modelName.toLowerCase();
|
|
24
25
|
});
|
|
25
|
-
const modelsFromConfig = Object.
|
|
26
|
-
|
|
27
|
-
.map(item => item.model.toLowerCase());
|
|
26
|
+
const modelsFromConfig = Object.keys(adminizer.config.models);
|
|
27
|
+
Adminizer.log.debug(`Bind models > Models from config: ${modelsFromConfig}`);
|
|
28
28
|
// Bind project models using config
|
|
29
29
|
modelsFromConfig.forEach((modelName) => {
|
|
30
30
|
const modelConfig = Object.entries(adminizer.config.models)
|
|
31
31
|
.find(([key, value]) => value && typeof value !== "boolean" && value.model.toLowerCase() === modelName)?.[1];
|
|
32
32
|
if (!systemModels.includes(modelName)) {
|
|
33
|
-
const adapterName = typeof modelConfig !== "boolean" ? modelConfig
|
|
33
|
+
const adapterName = typeof modelConfig !== "boolean" ? modelConfig?.adapter || defaultOrmAdapter : defaultOrmAdapter;
|
|
34
34
|
const ormAdapter = adminizer.getOrmAdapter(adapterName);
|
|
35
35
|
if (!ormAdapter) {
|
|
36
36
|
throw new Error(`Adapter ${adapterName} was not found for model ${modelName}. Please check your configuration`);
|
|
37
37
|
}
|
|
38
38
|
// Create model adapter instance and add it to model handler
|
|
39
39
|
const registeredModel = ormAdapter.getModel(modelName);
|
|
40
|
+
if (!registeredModel) {
|
|
41
|
+
throw `Bind models > Model not found: ${modelName}`;
|
|
42
|
+
}
|
|
40
43
|
const model = new ormAdapter.Model(modelName, registeredModel);
|
|
41
44
|
adminizer.modelHandler.add(modelName, model);
|
|
42
45
|
}
|
package/system/bindNavigation.js
CHANGED
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
1
|
+
import { Navigation } from "../lib/v4/catalog/Navigation";
|
|
2
|
+
import { CatalogHandler } from "../lib/v4/catalog/CatalogHandler";
|
|
3
|
+
export default function bindNavigation(adminizer) {
|
|
4
|
+
adminizer.emitter.on("adminizer:loaded", async () => {
|
|
5
|
+
if (adminizer.config.navigation) {
|
|
6
|
+
try {
|
|
7
|
+
adminizer.config.navigation.model = adminizer.config.navigation.model ? adminizer.config.navigation.model : 'NavigationAP';
|
|
8
|
+
let navigation = new Navigation(adminizer, adminizer.config.navigation);
|
|
9
|
+
CatalogHandler.add(navigation);
|
|
10
|
+
adminizer.config.models[adminizer.config.navigation.model.toLowerCase()] = {
|
|
11
|
+
add: false,
|
|
12
|
+
edit: {
|
|
13
|
+
controller: '../controllers/navigation/edit',
|
|
14
|
+
},
|
|
15
|
+
fields: {
|
|
16
|
+
createdAt: false,
|
|
17
|
+
updatedAt: false
|
|
18
|
+
},
|
|
19
|
+
navbar: {
|
|
20
|
+
visible: true
|
|
21
|
+
},
|
|
22
|
+
icon: 'storage',
|
|
23
|
+
identifierField: "",
|
|
24
|
+
list: {
|
|
25
|
+
fields: {
|
|
26
|
+
tree: false,
|
|
27
|
+
id: false,
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
model: adminizer.config.navigation.model.toLowerCase(),
|
|
31
|
+
remove: false,
|
|
32
|
+
title: adminizer.config.navigation.model,
|
|
33
|
+
tools: [],
|
|
34
|
+
view: false
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
console.log('bindNavigation Error: ', e);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
@@ -33,7 +33,6 @@ export default function bindReqFunctions(adminizer) {
|
|
|
33
33
|
if (res.locals) {
|
|
34
34
|
req.i18n.registerMethods(res.locals, req);
|
|
35
35
|
}
|
|
36
|
-
// TODO: I made it quickly, you need to spread for architecture to different files, or re -ize this file to a girlfriend
|
|
37
36
|
// NOTE: This is here because inertia should receive data to routes
|
|
38
37
|
// JWT token
|
|
39
38
|
const cookies = parse(req.headers.cookie || '');
|
package/system/defaults.js
CHANGED
|
@@ -4,7 +4,7 @@ import timezones from "../lib/timezones";
|
|
|
4
4
|
/**
|
|
5
5
|
* Default admin config
|
|
6
6
|
*/
|
|
7
|
-
|
|
7
|
+
let adminpanelConfig = {
|
|
8
8
|
/** Default route prefix */
|
|
9
9
|
routePrefix: '/adminizer',
|
|
10
10
|
/**
|
|
@@ -29,10 +29,13 @@ var adminpanelConfig = {
|
|
|
29
29
|
* List of admin pages
|
|
30
30
|
*/
|
|
31
31
|
models: {
|
|
32
|
-
|
|
33
|
-
title: "Users
|
|
32
|
+
UserAP: {
|
|
33
|
+
title: "Users",
|
|
34
34
|
model: "userap",
|
|
35
35
|
icon: "people",
|
|
36
|
+
navbar: {
|
|
37
|
+
section: "System"
|
|
38
|
+
},
|
|
36
39
|
add: {
|
|
37
40
|
controller: "../controllers/addUser"
|
|
38
41
|
},
|
|
@@ -71,10 +74,13 @@ var adminpanelConfig = {
|
|
|
71
74
|
}
|
|
72
75
|
}
|
|
73
76
|
},
|
|
74
|
-
|
|
75
|
-
title: "Groups
|
|
77
|
+
GroupAP: {
|
|
78
|
+
title: "Groups",
|
|
76
79
|
model: "groupap",
|
|
77
80
|
icon: "group_add",
|
|
81
|
+
navbar: {
|
|
82
|
+
section: "System"
|
|
83
|
+
},
|
|
78
84
|
add: {
|
|
79
85
|
controller: "../controllers/addGroup"
|
|
80
86
|
},
|
|
@@ -126,7 +132,8 @@ var adminpanelConfig = {
|
|
|
126
132
|
confirmationRequired: true
|
|
127
133
|
},
|
|
128
134
|
auth: {
|
|
129
|
-
enable: false
|
|
135
|
+
enable: false,
|
|
136
|
+
captcha: true
|
|
130
137
|
}
|
|
131
138
|
};
|
|
132
139
|
export function setDefaultConfig(config) {
|
package/translations/ar.json
CHANGED
|
@@ -1,3 +1,72 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
2
|
+
"Action completed": "ﻞﻤﻌﻟﺍ ﻦﻣ ءﺎﻬﺘﻧﻻﺍ",
|
|
3
|
+
"Actions": "ﺕﺍءﺍﺮﺟﻹﺍ",
|
|
4
|
+
"All": "ﻊﻴﻤﺠﻟﺍ",
|
|
5
|
+
"Are you sure?": "؟ﺪﻛﺄﺘﻣ ﺖﻧﺃ ﻞﻫ",
|
|
6
|
+
"Back": "ﻒﻠﺧ",
|
|
7
|
+
"Back to Login": "ﻝﻮﺧﺪﻟﺍ ﻞﻴﺠﺴﺗ ﻰﻟﺇ ﺓﺩﻮﻌﻟﺍ",
|
|
8
|
+
"Clean": "Clean",
|
|
9
|
+
"Confirm Password": "ﺭﻭﺮﻤﻟﺍ ﺔﻤﻠﻛ ﺪﻴﻛﺄﺗ",
|
|
10
|
+
"Confirm Password*": "*ﺭﻭﺮﻤﻟﺍ ﺔﻤﻠﻛ ﺪﻴﻛﺄﺗ",
|
|
11
|
+
"Create": "ﻖﻠﺨﻳ",
|
|
12
|
+
"Create a new administrator": "ﺪﻳﺪﺟ ﻝﻭﺆﺴﻣ ءﺎﺸﻧﺇ",
|
|
13
|
+
"Create an Account": "ﺏﺎﺴﺣ ءﺎﺸﻧﺇ",
|
|
14
|
+
"Custom": "ﺺﺼﺨﻣ",
|
|
15
|
+
"Delete": "ﺢﺴﻤﻳ",
|
|
16
|
+
"E-mail": "ﻲﻧﻭﺮﺘﻜﻟﺇ ﺪﻳﺮﺑ",
|
|
17
|
+
"Edit": "ﺭﺮﺤﻳ",
|
|
18
|
+
"Email": "ﻲﻧﻭﺮﺘﻜﻟﺇ ﺪﻳﺮﺑ",
|
|
19
|
+
"Fast links": "ﺔﻌﻳﺮﺳ ﻂﺑﺍﻭﺭ",
|
|
20
|
+
"Full Name": "ﻞﻣﺎﻜﻟﺍ ﻢﺳﻻﺍ",
|
|
21
|
+
"Full name": "ﻞﻣﺎﻜﻟﺍ ﻢﺳﻻﺍ",
|
|
22
|
+
"Group description": "ﺔﻋﻮﻤﺠﻤﻟﺍ ﻒﺻﻭ",
|
|
23
|
+
"Group name": "ﺔﻋﻮﻤﺠﻤﻟﺍ ﻢﺳﺍ",
|
|
24
|
+
"Group settings": "ﺔﻋﻮﻤﺠﻤﻟﺍ ﺕﺍﺩﺍﺪﻋﺇ",
|
|
25
|
+
"Info": "ﺕﺎﻣﻮﻠﻌﻣ",
|
|
26
|
+
"Is Administrator": "ﻝﻭﺆﺴﻤﻟﺍ ﻮﻫ",
|
|
27
|
+
"Is confirmed": "ﺪﻴﻛﺄﺗ ﻢﺗ",
|
|
28
|
+
"Link": "ﺔﻠﺻﻭ",
|
|
29
|
+
"Locale": "ﺔﻐﻟ",
|
|
30
|
+
"Log in": "ﻝﻮﺧﺪﻟﺍ ﻞﻴﺠﺴﺗ",
|
|
31
|
+
"Login": "ﻝﻮﺧﺪﻟﺍ ﻞﻴﺠﺴﺗ",
|
|
32
|
+
"Members": "ءﺎﻀﻋﺃ",
|
|
33
|
+
"New record was created": "ﺪﻳﺪﺟ ﻞﺠﺳ ءﺎﺸﻧﺇ ﻢﺗ",
|
|
34
|
+
"No": "ﻻ",
|
|
35
|
+
"No records found !": "!ﺕﻼﺠﺳ ﻰﻠﻋ ﺭﻮﺜﻌﻟﺍ ﻢﺘﻳ ﻢﻟ",
|
|
36
|
+
"No widgets found": "ﻡﺪﺨﺘﺴﻤﻟﺍ ﺔﻬﺟﺍﻭ ﺮﺻﺎﻨﻋ ﻰﻠﻋ ﺭﻮﺜﻌﻟﺍ ﻢﺘﻳ ﻢﻟ",
|
|
37
|
+
"Not found": "ﺎﻬﻴﻠﻋ ﺭﻮﺜﻌﻟﺍ ﻢﺘﻳ ﻢﻟ",
|
|
38
|
+
"OR": "ﻭﺃ",
|
|
39
|
+
"Open in a new window": "ﺓﺪﻳﺪﺟ ﺓﺬﻓﺎﻧ ﻲﻓ ﺢﺘﻓﺍ",
|
|
40
|
+
"Password": "ﺭﻭﺮﻤﻟﺍ ﺔﻤﻠﻛ",
|
|
41
|
+
"Passwords do not match!": "!ﻖﺑﺎﻄﺘﺗ ﻻ ﺭﻭﺮﻤﻟﺍ ﺕﺎﻤﻠﻛ",
|
|
42
|
+
"Performing an action...": "... ﻞﻤﻌﻟﺍ ءﺍﺩﺃ",
|
|
43
|
+
"Please fill out the fields below": "ﻩﺎﻧﺩﺃ ﻝﻮﻘﺤﻟﺍ ءﻞﻣ ﻰﺟﺮﻳ",
|
|
44
|
+
"Pretend to be a user": "ﻡﺪﺨﺘﺴﻣ ﻪﻧﺄﺑ ﺮﻫﺎﻈﺘﻟﺍ",
|
|
45
|
+
"Profile expires": "ﻲﺼﺨﺸﻟﺍ ﻒﻠﻤﻟﺍ ﻲﻬﺘﻨﻳ",
|
|
46
|
+
"Quick actions": "ﺔﻌﻳﺮﺳ ﺕﺍءﺍﺮﺟﺇ",
|
|
47
|
+
"Record was not removed": "ﻞﺠﺴﻟﺍ ﺔﻟﺍﺯﺇ ﻢﺘﺗ ﻢﻟ",
|
|
48
|
+
"Record was removed successfully !": "!ﺡﺎﺠﻨﺑ ﻞﺠﺴﻟﺍ ﺔﻟﺍﺯﺇ ﺖﻤﺗ",
|
|
49
|
+
"Record was updated": "ﻞﺠﺴﻟﺍ ﺚﻳﺪﺤﺗ ﻢﺗ",
|
|
50
|
+
"Register": "ﻞﺠﺴﻳ",
|
|
51
|
+
"Repeat password": "ﺭﻭﺮﻤﻟﺍ ﺔﻤﻠﻛ ﺭﺮﻛ",
|
|
52
|
+
"Reset": "ﻂﺒﺿ ﺓﺩﺎﻋﺇ",
|
|
53
|
+
"Save": "ﻆﻔﺤﻳ",
|
|
54
|
+
"Search": "ﺚﺤﺒﻳ",
|
|
55
|
+
"Select": "ﺭﺎﺘﺨﻳ",
|
|
56
|
+
"Select Ids": "ﺕﺎﻓﺮﻌﻣ ﺩﺪﺣ",
|
|
57
|
+
"Select Item type": "ﺮﺼﻨﻌﻟﺍ ﻉﻮﻧ ﺩﺪﺣ",
|
|
58
|
+
"Select Items": "ﺮﺻﺎﻨﻌﻟﺍ ﺩﺪﺣ",
|
|
59
|
+
"Switcher": "ﻝﻮﺤﻤﻟﺍ",
|
|
60
|
+
"Timezone": "ﺔﻴﻨﻣﺰﻟﺍ ﺔﻘﻄﻨﻤﻟﺍ",
|
|
61
|
+
"Title": "ﻥﺍﻮﻨﻋ",
|
|
62
|
+
"Toggle to change the grid. To save the grid, turn it off.": ".ﺎﻬﺌﻔﻃﺃ ، ﺔﻜﺒﺸﻟﺍ ﻆﻔﺤﻟ .ﺔﻜﺒﺸﻟﺍ ﺮﻴﻴﻐﺘﻟ ﻞﻳﺪﺒﺗ",
|
|
63
|
+
"User groups": "ﻦﻴﻣﺪﺨﺘﺴﻤﻟﺍ ﺕﺎﻋﻮﻤﺠﻣ",
|
|
64
|
+
"User settings": "ﻡﺪﺨﺘﺴﻤﻟﺍ ﺕﺍﺩﺍﺪﻋﺇ",
|
|
65
|
+
"Values in \"password\" and \"repeatPassword\" fields should be the same": "ﺎﻬﺴﻔﻧ ﻲﻫ \"REPERPASSWORD\" ﻭ \"ﺭﻭﺮﻤﻟﺍ ﺔﻤﻠﻛ\" ﻲﻓ ﻢﻴﻘﻟﺍ ﻥﻮﻜﺗ ﻥﺃ ﺐﺠﻳ",
|
|
66
|
+
"View": "ﺮﻈﻨﻣ",
|
|
67
|
+
"Welcome": "ﺎًﺒﺣﺮﻣ",
|
|
68
|
+
"Yes": "ﻢﻌﻧ",
|
|
69
|
+
"You don't have any widgets selected yet. You can add them by clicking on the plus sign at the top right.": ".ﻦﻴﻤﻴﻟﺍ ﻰﻠﻋﺃ ﻲﻓ Plus ﺔﻣﻼﻋ ﻕﻮﻓ ﺮﻘﻨﻟﺎﺑ ﺎﻬﺘﻓﺎﺿﺇ ﻚﻨﻜﻤﻳ .ﻥﻵﺍ ﻰﺘﺣ ﺓﺩﺪﺤﻣ ﺓﺮﻐﺼﻣ ﻱﺃ ﻚﻳﺪ",
|
|
70
|
+
"create": "ﻖﻠﺨﻳ",
|
|
71
|
+
"create new": "ﺪﻳﺪﺟ ءﺎﺸﻧﺇ"
|
|
3
72
|
}
|
package/translations/cn.json
CHANGED
|
@@ -1,3 +1,72 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
2
|
+
"Action completed": "动作完成了",
|
|
3
|
+
"Actions": "动作",
|
|
4
|
+
"All": "全部",
|
|
5
|
+
"Are you sure?": "你确定吗?",
|
|
6
|
+
"Back": "后退",
|
|
7
|
+
"Back to Login": "返回登录",
|
|
8
|
+
"Clean": "干净的",
|
|
9
|
+
"Confirm Password": "确认密码",
|
|
10
|
+
"Confirm Password*": "确认密码*",
|
|
11
|
+
"Create": "创造",
|
|
12
|
+
"Create a new administrator": "创建一个新的管理员",
|
|
13
|
+
"Create an Account": "创建一个帐户",
|
|
14
|
+
"Custom": "风俗",
|
|
15
|
+
"Delete": "删除",
|
|
16
|
+
"E-mail": "电子邮件",
|
|
17
|
+
"Edit": "编辑",
|
|
18
|
+
"Email": "电子邮件",
|
|
19
|
+
"Fast links": "快速链接",
|
|
20
|
+
"Full Name": "姓名",
|
|
21
|
+
"Full name": "姓名",
|
|
22
|
+
"Group description": "小组描述",
|
|
23
|
+
"Group name": "组名",
|
|
24
|
+
"Group settings": "组设置",
|
|
25
|
+
"Info": "信息",
|
|
26
|
+
"Is Administrator": "是管理员",
|
|
27
|
+
"Is confirmed": "被确认",
|
|
28
|
+
"Link": "关联",
|
|
29
|
+
"Locale": "语言环境",
|
|
30
|
+
"Log in": "登录",
|
|
31
|
+
"Login": "登录",
|
|
32
|
+
"Members": "成员",
|
|
33
|
+
"New record was created": "创建了新记录",
|
|
34
|
+
"No": "不",
|
|
35
|
+
"No records found !": "找不到记录!",
|
|
36
|
+
"No widgets found": "找不到小部件",
|
|
37
|
+
"Not found": "未找到",
|
|
38
|
+
"OR": "或者",
|
|
39
|
+
"Open in a new window": "在新窗口中打开",
|
|
40
|
+
"Password": "密码",
|
|
41
|
+
"Passwords do not match!": "密码不匹配!",
|
|
42
|
+
"Performing an action...": "执行动作...",
|
|
43
|
+
"Please fill out the fields below": "请填写以下字段",
|
|
44
|
+
"Pretend to be a user": "假装是用户",
|
|
45
|
+
"Profile expires": "配置文件到期",
|
|
46
|
+
"Quick actions": "快速动作",
|
|
47
|
+
"Record was not removed": "记录没有删除",
|
|
48
|
+
"Record was removed successfully !": "记录成功地删除了!",
|
|
49
|
+
"Record was updated": "记录已更新",
|
|
50
|
+
"Register": "登记",
|
|
51
|
+
"Repeat password": "重复密码",
|
|
52
|
+
"Reset": "重置",
|
|
53
|
+
"Save": "节省",
|
|
54
|
+
"Search": "搜索",
|
|
55
|
+
"Select": "选择",
|
|
56
|
+
"Select Ids": "选择ID",
|
|
57
|
+
"Select Item type": "选择项目类型",
|
|
58
|
+
"Select Items": "选择项目",
|
|
59
|
+
"Switcher": "切换器",
|
|
60
|
+
"Timezone": "时区",
|
|
61
|
+
"Title": "标题",
|
|
62
|
+
"Toggle to change the grid. To save the grid, turn it off.": "切换以更改网格。要保存网格,请将其关闭。",
|
|
63
|
+
"User groups": "用户组",
|
|
64
|
+
"User settings": "用户设置",
|
|
65
|
+
"Values in \"password\" and \"repeatPassword\" fields should be the same": "“密码”和“重复通信”字段中的值应相同",
|
|
66
|
+
"View": "看法",
|
|
67
|
+
"Welcome": "欢迎",
|
|
68
|
+
"Yes": "是的",
|
|
69
|
+
"You don't have any widgets selected yet. You can add them by clicking on the plus sign at the top right.": "您还没有选择任何小部件。您可以通过单击右上角的加号来添加它们。",
|
|
70
|
+
"create": "创造",
|
|
71
|
+
"create new": "创建新"
|
|
3
72
|
}
|
package/translations/de.json
CHANGED
|
@@ -1,4 +1,72 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
"
|
|
4
|
-
|
|
2
|
+
"Action completed": "Aktion abgeschlossen",
|
|
3
|
+
"Actions": "Aktionen",
|
|
4
|
+
"All": "Alle",
|
|
5
|
+
"Are you sure?": "Bist du sicher?",
|
|
6
|
+
"Back": "Zurück",
|
|
7
|
+
"Back to Login": "Zurück zum Anmeldung",
|
|
8
|
+
"Clean": "Sauber",
|
|
9
|
+
"Confirm Password": "Passwort bestätigen",
|
|
10
|
+
"Confirm Password*": "Passwort bestätigen*",
|
|
11
|
+
"Create": "Erstellen",
|
|
12
|
+
"Create a new administrator": "Erstellen Sie einen neuen Administrator",
|
|
13
|
+
"Create an Account": "Ein Konto erstellen",
|
|
14
|
+
"Custom": "Brauch",
|
|
15
|
+
"Delete": "Löschen",
|
|
16
|
+
"E-mail": "E-Mail",
|
|
17
|
+
"Edit": "Bearbeiten",
|
|
18
|
+
"Email": "E-Mail",
|
|
19
|
+
"Fast links": "Schnelle Links",
|
|
20
|
+
"Full Name": "Vollständiger Name",
|
|
21
|
+
"Full name": "Vollständiger Name",
|
|
22
|
+
"Group description": "Gruppenbeschreibung",
|
|
23
|
+
"Group name": "Gruppenname",
|
|
24
|
+
"Group settings": "Gruppeneinstellungen",
|
|
25
|
+
"Info": "Info",
|
|
26
|
+
"Is Administrator": "Ist Administrator",
|
|
27
|
+
"Is confirmed": "Wird bestätigt",
|
|
28
|
+
"Link": "Link",
|
|
29
|
+
"Locale": "Gebietsschema",
|
|
30
|
+
"Log in": "Einloggen",
|
|
31
|
+
"Login": "Login",
|
|
32
|
+
"Members": "Mitglieder",
|
|
33
|
+
"New record was created": "Neuer Rekord wurde erstellt",
|
|
34
|
+
"No": "NEIN",
|
|
35
|
+
"No records found !": "Keine Aufzeichnungen gefunden!",
|
|
36
|
+
"No widgets found": "Keine Widgets gefunden",
|
|
37
|
+
"Not found": "Nicht gefunden",
|
|
38
|
+
"OR": "ODER",
|
|
39
|
+
"Open in a new window": "Öffnen Sie in einem neuen Fenster",
|
|
40
|
+
"Password": "Passwort",
|
|
41
|
+
"Passwords do not match!": "Passwörter stimmen nicht überein!",
|
|
42
|
+
"Performing an action...": "Eine Aktion ausführen ...",
|
|
43
|
+
"Please fill out the fields below": "Bitte füllen Sie die folgenden Felder aus",
|
|
44
|
+
"Pretend to be a user": "Vorgeben, Benutzer zu sein",
|
|
45
|
+
"Profile expires": "Profil läuft ab",
|
|
46
|
+
"Quick actions": "Schnelle Aktionen",
|
|
47
|
+
"Record was not removed": "Rekord wurde nicht entfernt",
|
|
48
|
+
"Record was removed successfully !": "Rekord wurde erfolgreich entfernt!",
|
|
49
|
+
"Record was updated": "Der Datensatz wurde aktualisiert",
|
|
50
|
+
"Register": "Registrieren",
|
|
51
|
+
"Repeat password": "Passwort wiederholen",
|
|
52
|
+
"Reset": "Zurücksetzen",
|
|
53
|
+
"Save": "Speichern",
|
|
54
|
+
"Search": "Suchen",
|
|
55
|
+
"Select": "Wählen",
|
|
56
|
+
"Select Ids": "IDS auswählen",
|
|
57
|
+
"Select Item type": "Wählen Sie den Elementtyp",
|
|
58
|
+
"Select Items": "Elemente auswählen",
|
|
59
|
+
"Switcher": "Schalter",
|
|
60
|
+
"Timezone": "Zeitzone",
|
|
61
|
+
"Title": "Titel",
|
|
62
|
+
"Toggle to change the grid. To save the grid, turn it off.": "Umschalten, um das Netz zu ändern. Um das Netz zu retten, schalten Sie es aus.",
|
|
63
|
+
"User groups": "Benutzergruppen",
|
|
64
|
+
"User settings": "Benutzereinstellungen",
|
|
65
|
+
"Values in \"password\" and \"repeatPassword\" fields should be the same": "Werte in \"Passwort\" und \"RepeatPassword\" -Feldern sollten gleich sein",
|
|
66
|
+
"View": "Sicht",
|
|
67
|
+
"Welcome": "Willkommen",
|
|
68
|
+
"Yes": "Ja",
|
|
69
|
+
"You don't have any widgets selected yet. You can add them by clicking on the plus sign at the top right.": "Sie haben noch keine Widgets ausgewählt. Sie können sie hinzufügen, indem Sie oben rechts auf das Pluszeichen klicken.",
|
|
70
|
+
"create": "erstellen",
|
|
71
|
+
"create new": "neu erstellen"
|
|
72
|
+
}
|