@opengis/cms 0.0.16 → 0.0.18
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 +96 -3
- package/dist/assets/AddUser-CX-McfRW.js +1 -0
- package/dist/assets/ApiKeys-DSv1exYv.js +16 -0
- package/dist/assets/Appearance-DDtOUvCV.js +6 -0
- package/dist/assets/ArticlesPage-D6B3cZsl.js +6 -0
- package/dist/assets/BuilderPage-CCeSMVWe.js +1 -0
- package/dist/assets/CollectionsBreadcrumb.vue_vue_type_script_setup_true_lang-DVYVfYF4.js +1 -0
- package/dist/assets/CollectionsPage-CHk8Cn5k.js +1 -0
- package/dist/assets/Dashboard-Bs7sXO6h.js +11 -0
- package/dist/assets/EditCollectionPage-gPuLJrN8.js +41 -0
- package/dist/assets/EmailPage-DhlWsPxk.js +1 -0
- package/dist/assets/EmptyData-Ct-xQv_N.js +1 -0
- package/dist/assets/FeedbackPage-DtaOncVv.js +1 -0
- package/dist/assets/Logs-CZ5klHNK.js +1 -0
- package/dist/assets/MediaBreadcrumb-BpOxt5PK.js +11 -0
- package/dist/assets/MediaPage-DqRcZFlO.js +16 -0
- package/dist/assets/MenuAddPage-BLcoVgrS.js +1 -0
- package/dist/assets/MenuItemPage-B2otXqkz.js +20 -0
- package/dist/assets/MenuPage-C00m4Fc_.js +1 -0
- package/dist/assets/MonacoEditor.vue_vue_type_script_setup_true_lang-CjoEsC67.js +3 -0
- package/dist/assets/PermissionsPage-LtqcCJ14.js +1 -0
- package/dist/assets/Settings-BHH6RoBP.js +1 -0
- package/dist/assets/SettingsTable-CY5pZx1z.js +1 -0
- package/dist/assets/SettingsTitle-t4WJBFxZ.js +1 -0
- package/dist/assets/SingletonsPage-Bn2Ypjhs.js +6 -0
- package/dist/assets/TagsPage-DAiakEth.js +1 -0
- package/dist/assets/UniversalTable.vue_vue_type_script_setup_true_lang-BQ5m4aZd.js +11 -0
- package/dist/assets/UniversalTablePagination.vue_vue_type_script_setup_true_lang-DppVBws0.js +1 -0
- package/dist/assets/Users-CMH5j0db.js +1 -0
- package/dist/assets/UsersPage-CDGreEib.js +1 -0
- package/dist/assets/arrow-up-DCe0WsrM.js +16 -0
- package/dist/assets/{calendar-hsWc4yH-.js → calendar-o9t4MkD2.js} +1 -1
- package/dist/assets/chevron-left-WFftVS9c.js +6 -0
- package/dist/assets/chevron-right-BiiSb3Be.js +6 -0
- package/dist/assets/contentForm-unZQhjCu.js +6 -0
- package/dist/assets/en-BDx3Svx8.js +1 -0
- package/dist/assets/eye-Dijywc6g.js +6 -0
- package/dist/assets/file-B_duymIT.js +6 -0
- package/dist/assets/general-CkN_0qIV.js +1 -0
- package/dist/assets/index-BIp7eSXk.js +1 -0
- package/dist/assets/index-DCW2e4Az.js +9 -0
- package/dist/assets/index-DGweaj24.js +1 -0
- package/dist/assets/index-W-qQIppj-BDlsxaGB.js +1 -0
- package/dist/assets/index-W-qQIppj-BsopI3Hz-BIZR-dhy.js +1 -0
- package/dist/assets/index-oQz9FOqL.css +1 -0
- package/dist/assets/index-yMJAVBXk.js +290 -0
- package/dist/assets/list-CXRbSNky.js +6 -0
- package/dist/assets/pencil-CwnPP4IJ.js +6 -0
- package/dist/assets/{plus-D9etvrM2.js → plus-DLR44m6p.js} +1 -1
- package/dist/assets/save-FeDrOUOd.js +6 -0
- package/dist/assets/{search-BI-hqhq6.js → search-C4-fHihx.js} +1 -1
- package/dist/assets/{square-pen-61CkyXzK.js → square-pen-xVs4e8Yb.js} +1 -1
- package/dist/assets/{trash-2-CJSl_r88.js → trash-2-BGXMNU3d.js} +1 -1
- package/dist/assets/uk-BA7DIKEL.js +1 -0
- package/dist/assets/useDebounce-DFq3rxAW.js +1 -0
- package/dist/assets/vs-form-reletion-link-C-xrdHDl.js +20 -0
- package/dist/assets/vs-form-reletion-link-bk-9ZkDH.css +1 -0
- package/dist/assets/vue.-sixQ7xP-CUPNuJcq.js +1 -0
- package/dist/assets/vuedraggable.umd-W_2WTF6i.js +14 -0
- package/dist/assets/{x-BNquQe5y.js → x-D2t-wfBe.js} +1 -1
- package/dist/index.html +14 -9
- package/module/cms/card/cms.content.table/index.yml +17 -0
- package/module/cms/card/cms.content.table/main_info.hbs +26 -0
- package/module/cms/card/cms.menu.table/content_info.hbs +16 -0
- package/module/cms/card/cms.menu.table/index.yml +18 -0
- package/module/cms/card/cms.menu.table/main_info.hbs +22 -0
- package/module/cms/card/cms.settings.table/index.yml +13 -0
- package/module/cms/card/cms.settings.table/main_info.hbs +20 -0
- package/module/cms/cls/content.status.json +18 -0
- package/module/cms/cls/user_type.json +10 -0
- package/module/cms/form/admin.users.form.json +78 -0
- package/module/cms/form/cms.content.form.json +79 -0
- package/module/cms/form/cms.menu.form.json +69 -0
- package/module/cms/form/cms.settings.form.json +32 -0
- package/module/cms/menu.json +24 -0
- package/module/cms/router.js +154 -0
- package/module/cms/select/cms.page_type.sql +2 -0
- package/module/cms/select/collection.sql +1 -0
- package/module/cms/select/locale.sql +17 -0
- package/module/cms/select/news_tag_id.sql +12 -0
- package/module/cms/select/tag_id.sql +1 -0
- package/module/cms/table/admin.users.table.json +54 -0
- package/module/cms/table/cms.content.table.json +106 -0
- package/module/cms/table/cms.menu.table.json +73 -0
- package/module/cms/table/cms.settings.table.json +57 -0
- package/module/cms/table/collection.default.table.json +102 -0
- package/module/cms/table/single.default.table.json +115 -0
- package/package.json +36 -31
- package/plugin.js +63 -23
- package/server/app.js +20 -3
- package/server/functions/getDraftKey.js +22 -0
- package/server/index.js +2 -3
- package/server/migrations/fixes.sql +124 -0
- package/server/migrations/site.sql +338 -249
- package/server/plugins/adminHook.js +2 -2
- package/server/plugins/hook.js +53 -61
- package/server/plugins/vite.js +5 -5
- package/server/routes/cms/controllers/cmsStat.js +56 -0
- package/server/routes/cms/controllers/cmsSuggest.js +58 -0
- package/server/routes/cms/controllers/deleteContent.js +114 -59
- package/server/routes/cms/controllers/deleteMedia.js +75 -46
- package/server/routes/cms/controllers/downloadMedia.js +48 -48
- package/server/routes/cms/controllers/getContent.js +110 -95
- package/server/routes/cms/controllers/getContentBySlug.js +95 -0
- package/server/routes/cms/controllers/getPermissions.js +15 -15
- package/server/routes/cms/controllers/insertContent.js +218 -68
- package/server/routes/cms/controllers/listMedia.js +93 -72
- package/server/routes/cms/controllers/metadataMedia.js +38 -37
- package/server/routes/cms/controllers/properties.get.js +53 -0
- package/server/routes/cms/controllers/properties.post.js +99 -0
- package/server/routes/cms/controllers/searchContent.js +205 -0
- package/server/routes/cms/controllers/setPermissions.js +49 -49
- package/server/routes/cms/controllers/translate.js +90 -0
- package/server/routes/cms/controllers/updateContent.js +238 -111
- package/server/routes/cms/controllers/uploadMedia.js +78 -65
- package/server/routes/cms/index.mjs +81 -12
- package/server/routes/cms/utils/additionalData.js +36 -0
- package/server/routes/cms/utils/getCollection.js +82 -0
- package/server/routes/cms/utils/getSingle.js +188 -0
- package/server/routes/cms/utils/insertContentLocalization.js +87 -0
- package/server/routes/cms/utils/requestTranslation.js +85 -0
- package/server/routes/cms/utils/updateLocalization.js +48 -0
- package/server/routes/cmsSpace/controllers/deleteSpace.js +26 -0
- package/server/routes/cmsSpace/controllers/getSpaces.js +28 -0
- package/server/routes/cmsSpace/controllers/insertSpace.js +22 -0
- package/server/routes/cmsSpace/controllers/updateSpace.js +24 -0
- package/server/routes/cmsSpace/index.mjs +20 -0
- package/server/routes/contentType/controllers/addContentType.js +162 -0
- package/server/routes/contentType/controllers/contentTypeList.js +54 -0
- package/server/routes/contentType/controllers/delContentType.js +75 -0
- package/server/routes/contentType/controllers/editContentType.js +61 -0
- package/server/routes/contentType/controllers/getContentType.js +37 -0
- package/server/routes/contentType/index.mjs +29 -19
- package/server/routes/contentType/utils/updateContents.js +29 -0
- package/server/routes/contentType/utils/updateCustomContentTable.js +56 -0
- package/server/routes/feedback/controllers/email.list.js +25 -0
- package/server/routes/feedback/controllers/feedback.js +49 -0
- package/server/routes/feedback/controllers/feedback.list.js +38 -0
- package/server/routes/feedback/controllers/news.subscriptions.js +44 -0
- package/server/routes/feedback/index.mjs +72 -0
- package/server/routes/logs/controllers/export.user.logs.js +78 -0
- package/server/routes/logs/controllers/user.logs.js +45 -0
- package/server/routes/logs/index.mjs +9 -0
- package/server/routes/menu/controllers/addMenu.js +38 -0
- package/server/routes/menu/controllers/delMenu.js +32 -0
- package/server/routes/menu/controllers/editMenu.js +42 -0
- package/server/routes/menu/controllers/getMenu.js +43 -0
- package/server/routes/menu/index.mjs +13 -0
- package/server/routes/migration/controllers/collectionToCustom.js +137 -0
- package/server/routes/migration/index.mjs +8 -0
- package/server/routes/tags/controllers/add.tags.js +25 -0
- package/server/routes/tags/controllers/del.tags.js +20 -0
- package/server/routes/tags/controllers/edit.tags.js +26 -0
- package/server/routes/tags/controllers/get.tags.js +16 -0
- package/server/routes/tags/index.mjs +14 -0
- package/server/templates/page/login.html +73 -5
- package/server/templates/select/core.user_mentioned.sql +2 -0
- package/src/index.ts +122 -0
- package/dist/assets/ArticlesPage-BveM4q3g.js +0 -11
- package/dist/assets/CollectionsPage-D5td-UBm.js +0 -1
- package/dist/assets/ContentBlock.vue_vue_type_script_setup_true_lang-BwF6D-yB.js +0 -30
- package/dist/assets/CreateCollectionPage-Cu0RW5ui.js +0 -76
- package/dist/assets/Dashboard-faSjwmB8.js +0 -11
- package/dist/assets/EditCollectionPage-K5oPPzCd.js +0 -1
- package/dist/assets/MediaPage-BoW3aWgN.js +0 -1
- package/dist/assets/PermissionsPage-DGy5fha2.js +0 -1
- package/dist/assets/SingletonsPage-C1X2xkQE.js +0 -1
- package/dist/assets/UniversalTable.vue_vue_type_script_setup_true_lang-DUqfWJcy.js +0 -6
- package/dist/assets/contentForm-DMVC4vho.js +0 -1
- package/dist/assets/database-BTxZQzYy.js +0 -6
- package/dist/assets/index-9GY17iSP.css +0 -1
- package/dist/assets/index-DYyZmLWO.js +0 -2138
- package/dist/assets/index-xsH4HHeE.js +0 -6
- package/dist/assets/save-C2B6th9J.js +0 -11
- package/dist/assets/settings-DbyDiH2g.js +0 -6
- package/dist/assets/vue.-sixQ7xP-DwXf3zRn.js +0 -1
- package/dist/assets/x-circle-C3q70RMH.js +0 -16
- package/server/routes/contentType/controllers/cms.type.delete.js +0 -22
- package/server/routes/contentType/controllers/cms.type.get.js +0 -22
- package/server/routes/contentType/controllers/cms.type.list.js +0 -25
- package/server/routes/contentType/controllers/cms.type.post.js +0 -22
- package/server/routes/contentType/controllers/cms.type.put.js +0 -24
- package/server/routes/contentType/utils/builderCache.js +0 -58
- package/server/routes/fileContent/data/deleteContent.js +0 -34
- package/server/routes/fileContent/data/deleteMedia.js +0 -28
- package/server/routes/fileContent/data/downloadMedia.js +0 -41
- package/server/routes/fileContent/data/getContent.js +0 -32
- package/server/routes/fileContent/data/insertContent.js +0 -37
- package/server/routes/fileContent/data/listMedia.js +0 -47
- package/server/routes/fileContent/data/metadataMedia.js +0 -38
- package/server/routes/fileContent/data/updateContent.js +0 -40
- package/server/routes/fileContent/data/uploadMedia.js +0 -49
- package/server/routes/fileContent/index.mjs +0 -54
- package/server/routes/fileContent/type/contentTypeList.js +0 -7
- package/server/routes/fileContent/type/createContentType.js +0 -31
- package/server/routes/fileContent/type/deleteContentType.js +0 -29
- package/server/routes/fileContent/type/getContentType.js +0 -15
- package/server/routes/fileContent/type/updateContentType.js +0 -40
- package/server/routes/fileContent/utils/astroBuilderCache.js +0 -47
- package/server/routes/fileContent/utils/contentDir.js +0 -12
- package/server/routes/fileContent/utils/contentTypeExists.js +0 -15
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
{
|
|
2
|
+
"style": {
|
|
3
|
+
"navigation": true
|
|
4
|
+
},
|
|
5
|
+
"schema": {
|
|
6
|
+
"d0": {
|
|
7
|
+
"type": "HTML",
|
|
8
|
+
"title": "Загальна інформація",
|
|
9
|
+
"text": "<h2 class='text-xl font-bold text-left'>Загальна інформація про контент</h2>",
|
|
10
|
+
"col": 12
|
|
11
|
+
},
|
|
12
|
+
"title": {
|
|
13
|
+
"ua": "Назва",
|
|
14
|
+
"col": 12,
|
|
15
|
+
"type": "Text",
|
|
16
|
+
"validators": [
|
|
17
|
+
"required"
|
|
18
|
+
]
|
|
19
|
+
},
|
|
20
|
+
"slug": {
|
|
21
|
+
"ua": "Slug",
|
|
22
|
+
"col": 12,
|
|
23
|
+
"type": "Text",
|
|
24
|
+
"parent": "title",
|
|
25
|
+
"validators": [
|
|
26
|
+
"required"
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
"content_type_id": {
|
|
30
|
+
"ua": "Тип контенту",
|
|
31
|
+
"col": 6,
|
|
32
|
+
"type": "Autocomplete",
|
|
33
|
+
"data": "collection",
|
|
34
|
+
"validators": [
|
|
35
|
+
"required"
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
"status": {
|
|
39
|
+
"ua": "Статус",
|
|
40
|
+
"col": 6,
|
|
41
|
+
"type": "Select",
|
|
42
|
+
"data": "content.status",
|
|
43
|
+
"validators": [
|
|
44
|
+
"required"
|
|
45
|
+
]
|
|
46
|
+
},
|
|
47
|
+
"published_at": {
|
|
48
|
+
"ua": "Дата публікації",
|
|
49
|
+
"col": 6,
|
|
50
|
+
"type": "Date",
|
|
51
|
+
"mode": "datetime",
|
|
52
|
+
"validators": [
|
|
53
|
+
"required"
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
"locale": {
|
|
57
|
+
"ua": "Локаль",
|
|
58
|
+
"col": 6,
|
|
59
|
+
"type": "Select",
|
|
60
|
+
"defaultValue": "uk",
|
|
61
|
+
"options": [
|
|
62
|
+
{
|
|
63
|
+
"id": "uk",
|
|
64
|
+
"text": "Українська"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"id": "en",
|
|
68
|
+
"text": "English"
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
"main_image": {
|
|
73
|
+
"ua": "Головне зображення",
|
|
74
|
+
"col": 12,
|
|
75
|
+
"type": "File"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"style": {
|
|
3
|
+
"navigation": true
|
|
4
|
+
},
|
|
5
|
+
"schema": {
|
|
6
|
+
"d0": {
|
|
7
|
+
"type": "HTML",
|
|
8
|
+
"title": "Загальна інформація",
|
|
9
|
+
"text": "<h2 class='text-xl font-bold text-left'>Загальна інформація про меню</h2>",
|
|
10
|
+
"col": 12
|
|
11
|
+
},
|
|
12
|
+
"name": {
|
|
13
|
+
"ua": "Назва меню",
|
|
14
|
+
"col": 12,
|
|
15
|
+
"type": "Text",
|
|
16
|
+
"validators": [
|
|
17
|
+
"required"
|
|
18
|
+
],
|
|
19
|
+
"i": "Унікальна назва меню"
|
|
20
|
+
},
|
|
21
|
+
"locale": {
|
|
22
|
+
"ua": "Локаль",
|
|
23
|
+
"col": 6,
|
|
24
|
+
"type": "Select",
|
|
25
|
+
"defaultValue": "uk",
|
|
26
|
+
"options": [
|
|
27
|
+
{
|
|
28
|
+
"id": "uk",
|
|
29
|
+
"text": "Українська"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "en",
|
|
33
|
+
"text": "English"
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"validators": [
|
|
37
|
+
"required"
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
"description": {
|
|
41
|
+
"ua": "Опис",
|
|
42
|
+
"col": 12,
|
|
43
|
+
"type": "TextArea",
|
|
44
|
+
"i": "Опис меню для адміністратора"
|
|
45
|
+
},
|
|
46
|
+
"d1": {
|
|
47
|
+
"type": "HTML",
|
|
48
|
+
"title": "Структура меню",
|
|
49
|
+
"text": "<h2 class='text-xl font-bold text-left'>Структура меню</h2>",
|
|
50
|
+
"col": 12
|
|
51
|
+
},
|
|
52
|
+
"content": {
|
|
53
|
+
"ua": "Контент меню (YAML)",
|
|
54
|
+
"col": 12,
|
|
55
|
+
"type": "TextArea",
|
|
56
|
+
"syntax": "yaml",
|
|
57
|
+
"i": "Структура меню у форматі YAML"
|
|
58
|
+
},
|
|
59
|
+
"items": {
|
|
60
|
+
"ua": "Елементи меню (JSON)",
|
|
61
|
+
"col": 12,
|
|
62
|
+
"type": "TextArea",
|
|
63
|
+
"syntax": "json",
|
|
64
|
+
"i": "Структура меню у форматі JSON",
|
|
65
|
+
"hidden": true
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"style": {
|
|
3
|
+
"navigation": true
|
|
4
|
+
},
|
|
5
|
+
"schema": {
|
|
6
|
+
"d0": {
|
|
7
|
+
"type": "HTML",
|
|
8
|
+
"title": "Налаштування",
|
|
9
|
+
"text": "<h2 class='text-xl font-bold text-left'>Налаштування системи</h2>",
|
|
10
|
+
"col": 12
|
|
11
|
+
},
|
|
12
|
+
"key": {
|
|
13
|
+
"ua": "Ключ",
|
|
14
|
+
"col": 12,
|
|
15
|
+
"type": "Text",
|
|
16
|
+
"validators": [
|
|
17
|
+
"required"
|
|
18
|
+
],
|
|
19
|
+
"i": "Унікальний ключ налаштування"
|
|
20
|
+
},
|
|
21
|
+
"value": {
|
|
22
|
+
"ua": "Значення",
|
|
23
|
+
"col": 12,
|
|
24
|
+
"type": "TextArea",
|
|
25
|
+
"validators": [
|
|
26
|
+
"required"
|
|
27
|
+
],
|
|
28
|
+
"i": "Значення налаштування"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"order": 1,
|
|
4
|
+
"ua": "CMS",
|
|
5
|
+
"menu": [
|
|
6
|
+
{
|
|
7
|
+
"path": "cms.content",
|
|
8
|
+
"table": "cms.content.table",
|
|
9
|
+
"ua": "Контент"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"path": "cms.menu",
|
|
13
|
+
"table": "cms.menu.table",
|
|
14
|
+
"ua": "Меню"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"path": "cms.settings",
|
|
18
|
+
"table": "cms.settings.table",
|
|
19
|
+
"ua": "Налаштування"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CMS Module Router Configuration
|
|
3
|
+
*
|
|
4
|
+
* This file provides router routes for CMS module (content, menu, settings).
|
|
5
|
+
* Uses existing CMS components from the project.
|
|
6
|
+
*
|
|
7
|
+
* Usage in your project:
|
|
8
|
+
* ```js
|
|
9
|
+
* import { cmsRoutes } from './module/cms/router.js';
|
|
10
|
+
* import { createRouter, createWebHistory } from 'vue-router';
|
|
11
|
+
*
|
|
12
|
+
* const router = createRouter({
|
|
13
|
+
* history: createWebHistory(),
|
|
14
|
+
* routes: [
|
|
15
|
+
* ...cmsRoutes,
|
|
16
|
+
* // your other routes
|
|
17
|
+
* ]
|
|
18
|
+
* });
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
export const cmsRoutes = [
|
|
23
|
+
// Table routes - display list of items
|
|
24
|
+
{
|
|
25
|
+
path: '/cms.content',
|
|
26
|
+
component: () => import('../../src/pages/collections/ArticlesPage.vue'),
|
|
27
|
+
name: 'cms-content',
|
|
28
|
+
meta: {
|
|
29
|
+
title: 'navigation.collections',
|
|
30
|
+
table: 'cms.content.table'
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
path: '/cms.menu',
|
|
35
|
+
component: () => import('../../src/pages/menu/MenuPage.vue'),
|
|
36
|
+
name: 'cms-menu',
|
|
37
|
+
meta: {
|
|
38
|
+
title: 'menu.title',
|
|
39
|
+
table: 'cms.menu.table'
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
path: '/cms.settings',
|
|
44
|
+
component: () => import('../../src/pages/settings/Settings.vue'),
|
|
45
|
+
name: 'cms-settings',
|
|
46
|
+
meta: {
|
|
47
|
+
title: 'settings.title',
|
|
48
|
+
table: 'cms.settings.table'
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
// Card routes - display detailed view (using contentForm for content)
|
|
52
|
+
{
|
|
53
|
+
path: '/cms.content/:id',
|
|
54
|
+
component: () => import('../../src/pages/collections/contentForm.vue'),
|
|
55
|
+
name: 'cms-content-card',
|
|
56
|
+
meta: {
|
|
57
|
+
title: 'articles.title',
|
|
58
|
+
type: 'articles',
|
|
59
|
+
table: 'cms.content.table',
|
|
60
|
+
card: 'cms.content.table'
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
path: '/cms.menu/:id',
|
|
65
|
+
component: () => import('../../src/pages/menu/MenuItemPage.vue'),
|
|
66
|
+
name: 'cms-menu-card',
|
|
67
|
+
meta: {
|
|
68
|
+
title: 'menu.editMenu',
|
|
69
|
+
type: 'single',
|
|
70
|
+
table: 'cms.menu.table',
|
|
71
|
+
card: 'cms.menu.table'
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
path: '/cms.settings/:id',
|
|
76
|
+
component: () => import('../../src/pages/settings/general.vue'),
|
|
77
|
+
name: 'cms-settings-card',
|
|
78
|
+
meta: {
|
|
79
|
+
title: 'settings.general.general',
|
|
80
|
+
table: 'cms.settings.table',
|
|
81
|
+
card: 'cms.settings.table'
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
// Add routes - create new item
|
|
85
|
+
{
|
|
86
|
+
path: '/cms.content/add',
|
|
87
|
+
component: () => import('../../src/pages/collections/contentForm.vue'),
|
|
88
|
+
name: 'cms-content-add',
|
|
89
|
+
meta: {
|
|
90
|
+
title: 'articles.createArticle',
|
|
91
|
+
type: 'articles',
|
|
92
|
+
table: 'cms.content.table',
|
|
93
|
+
form: 'cms.content.form'
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
path: '/cms.menu/add',
|
|
98
|
+
component: () => import('../../src/pages/menu/MenuAddPage.vue'),
|
|
99
|
+
name: 'cms-menu-add',
|
|
100
|
+
meta: {
|
|
101
|
+
title: 'menu.menuAdd',
|
|
102
|
+
type: 'single',
|
|
103
|
+
table: 'cms.menu.table',
|
|
104
|
+
form: 'cms.menu.form'
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
path: '/cms.settings/add',
|
|
109
|
+
component: () => import('../../src/pages/settings/general.vue'),
|
|
110
|
+
name: 'cms-settings-add',
|
|
111
|
+
meta: {
|
|
112
|
+
title: 'settings.general.general',
|
|
113
|
+
table: 'cms.settings.table',
|
|
114
|
+
form: 'cms.settings.form'
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
// Edit routes - edit existing item
|
|
118
|
+
{
|
|
119
|
+
path: '/cms.content/edit/:id',
|
|
120
|
+
component: () => import('../../src/pages/collections/contentForm.vue'),
|
|
121
|
+
name: 'cms-content-edit',
|
|
122
|
+
meta: {
|
|
123
|
+
title: 'articles.title',
|
|
124
|
+
type: 'articles',
|
|
125
|
+
table: 'cms.content.table',
|
|
126
|
+
form: 'cms.content.form'
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
path: '/cms.menu/edit/:id',
|
|
131
|
+
component: () => import('../../src/pages/menu/MenuItemPage.vue'),
|
|
132
|
+
name: 'cms-menu-edit',
|
|
133
|
+
meta: {
|
|
134
|
+
title: 'menu.editMenu',
|
|
135
|
+
type: 'single',
|
|
136
|
+
table: 'cms.menu.table',
|
|
137
|
+
form: 'cms.menu.form'
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
path: '/cms.settings/edit/:id',
|
|
142
|
+
component: () => import('../../src/pages/settings/general.vue'),
|
|
143
|
+
name: 'cms-settings-edit',
|
|
144
|
+
meta: {
|
|
145
|
+
title: 'settings.general.general',
|
|
146
|
+
table: 'cms.settings.table',
|
|
147
|
+
form: 'cms.settings.form'
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
];
|
|
151
|
+
|
|
152
|
+
// Export default for direct router creation (optional)
|
|
153
|
+
export default cmsRoutes;
|
|
154
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
SELECT content_type_id, name FROM site.content_types where type='collection'
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
SELECT DISTINCT locale as id,
|
|
2
|
+
CASE
|
|
3
|
+
WHEN locale = 'uk' THEN 'Українська'
|
|
4
|
+
WHEN locale = 'en' THEN 'English'
|
|
5
|
+
ELSE locale
|
|
6
|
+
END as text
|
|
7
|
+
FROM site.contents
|
|
8
|
+
UNION
|
|
9
|
+
SELECT DISTINCT locale as id,
|
|
10
|
+
CASE
|
|
11
|
+
WHEN locale = 'uk' THEN 'Українська'
|
|
12
|
+
WHEN locale = 'en' THEN 'English'
|
|
13
|
+
ELSE locale
|
|
14
|
+
END as text
|
|
15
|
+
FROM site.menus
|
|
16
|
+
ORDER BY id
|
|
17
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
select a.id, a.title, tags from data.news a
|
|
2
|
+
left join lateral(select array_agg(tag_id) as tags from site.tag_data b where a.id=b.data_id)b on 1=1
|
|
3
|
+
|
|
4
|
+
where
|
|
5
|
+
case when '{{parent}}'<> ''
|
|
6
|
+
then '{{parent}}'=any(b.tags)
|
|
7
|
+
else true
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
and status='published'
|
|
11
|
+
|
|
12
|
+
order by a.updated_at
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
select tag_id, value from site.tags order by value
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"ua": "Користувачі",
|
|
3
|
+
"key": "uid",
|
|
4
|
+
"order": "cdate desc",
|
|
5
|
+
"access": "admin",
|
|
6
|
+
"sqlColumns": "*",
|
|
7
|
+
"form": "admin.users.form",
|
|
8
|
+
"table": "admin.users",
|
|
9
|
+
"sql": [
|
|
10
|
+
{
|
|
11
|
+
"name": "social_auth_sql",
|
|
12
|
+
"sql": "select social_auth_obj,social_auth_date from admin.users_social_auth where uid=t.uid limit 1"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"sql": "SELECT coalesce(sur_name, '') || ' ' || coalesce(user_name, '') || ' ' || coalesce(father_name, '') as full_name FROM admin.users WHERE uid = t.uid",
|
|
16
|
+
"name": "full_name_sql"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"columns": [
|
|
20
|
+
{
|
|
21
|
+
"ua": "ПІБ",
|
|
22
|
+
"name": "full_name",
|
|
23
|
+
"format": "select",
|
|
24
|
+
"data": "full_name_sql"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"ua": "Тип користувача",
|
|
28
|
+
"name": "user_type_text",
|
|
29
|
+
"format": "select",
|
|
30
|
+
"data": "user_type_text"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"ua": "Статус доступу",
|
|
34
|
+
"name": "enabled"
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"filters": [
|
|
38
|
+
{
|
|
39
|
+
"label": "Тип користувача",
|
|
40
|
+
"type": "Check",
|
|
41
|
+
"name": "user_type",
|
|
42
|
+
"data": "user_type"
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
"meta": {
|
|
46
|
+
"title": "full_name",
|
|
47
|
+
"search": "user_name,user_rnokpp"
|
|
48
|
+
},
|
|
49
|
+
"actions": [
|
|
50
|
+
"edit",
|
|
51
|
+
"del",
|
|
52
|
+
"add"
|
|
53
|
+
]
|
|
54
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "content_id",
|
|
3
|
+
"table": "site.contents",
|
|
4
|
+
"public": true,
|
|
5
|
+
"actions": [
|
|
6
|
+
"add",
|
|
7
|
+
"edit",
|
|
8
|
+
"del"
|
|
9
|
+
],
|
|
10
|
+
"controls": [
|
|
11
|
+
"search",
|
|
12
|
+
"list",
|
|
13
|
+
"add"
|
|
14
|
+
],
|
|
15
|
+
"access": "user",
|
|
16
|
+
"order": "published_at desc, created_at desc",
|
|
17
|
+
"meta": {
|
|
18
|
+
"title": "title",
|
|
19
|
+
"search": "title,slug"
|
|
20
|
+
},
|
|
21
|
+
"title": "Контент",
|
|
22
|
+
"form": "cms.content.form",
|
|
23
|
+
"sqlColumns": "*",
|
|
24
|
+
"columns": [
|
|
25
|
+
{
|
|
26
|
+
"ua": "Назва",
|
|
27
|
+
"meta": "title",
|
|
28
|
+
"name": "title",
|
|
29
|
+
"format": "slot",
|
|
30
|
+
"slot": "<div><p>{{data?.title}}</p><p class='text-xs text-gray-500'>{{data?.slug}}</p></div>",
|
|
31
|
+
"link": "/collections/{content_type_id}/{content_id}"
|
|
32
|
+
"width": 400
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"ua": "Тип контенту",
|
|
36
|
+
"name": "content_type_id",
|
|
37
|
+
"data": "collection",
|
|
38
|
+
"format": "badge",
|
|
39
|
+
"width": 200
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"ua": "Статус",
|
|
43
|
+
"name": "status",
|
|
44
|
+
"data": "content.status",
|
|
45
|
+
"format": "badge",
|
|
46
|
+
"edit": true,
|
|
47
|
+
"width": 150
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"ua": "Дата публікації",
|
|
51
|
+
"name": "published_at",
|
|
52
|
+
"format": "datetime",
|
|
53
|
+
"width": 180
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"ua": "Створено",
|
|
57
|
+
"name": "created_at",
|
|
58
|
+
"format": "datetime",
|
|
59
|
+
"width": 180
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"ua": "Оновлено",
|
|
63
|
+
"name": "updated_at",
|
|
64
|
+
"format": "datetime",
|
|
65
|
+
"width": 180,
|
|
66
|
+
"hidden": true
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"ua": "Slug",
|
|
70
|
+
"name": "slug",
|
|
71
|
+
"format": "text",
|
|
72
|
+
"width": 250,
|
|
73
|
+
"hidden": true
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"filterList": [
|
|
77
|
+
{
|
|
78
|
+
"ua": "Пошук",
|
|
79
|
+
"name": "search",
|
|
80
|
+
"type": "Text"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"ua": "Тип контенту",
|
|
84
|
+
"type": "Check",
|
|
85
|
+
"name": "content_type_id",
|
|
86
|
+
"data": "collection"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"ua": "Статус",
|
|
90
|
+
"name": "status",
|
|
91
|
+
"data": "content.status",
|
|
92
|
+
"type": "Check"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"ua": "Дата публікації",
|
|
96
|
+
"name": "published_at",
|
|
97
|
+
"type": "Date"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"ua": "Дата створення",
|
|
101
|
+
"name": "created_at",
|
|
102
|
+
"type": "Date"
|
|
103
|
+
}
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "menu_id",
|
|
3
|
+
"table": "site.menus",
|
|
4
|
+
"public": true,
|
|
5
|
+
"actions": [
|
|
6
|
+
"add",
|
|
7
|
+
"edit",
|
|
8
|
+
"del"
|
|
9
|
+
],
|
|
10
|
+
"controls": [
|
|
11
|
+
"search",
|
|
12
|
+
"list",
|
|
13
|
+
"add"
|
|
14
|
+
],
|
|
15
|
+
"access": "user",
|
|
16
|
+
"order": "created_at desc",
|
|
17
|
+
"meta": {
|
|
18
|
+
"title": "name",
|
|
19
|
+
"search": "name,description"
|
|
20
|
+
},
|
|
21
|
+
"title": "Меню",
|
|
22
|
+
"form": "cms.menu.form",
|
|
23
|
+
"sqlColumns": "*",
|
|
24
|
+
"columns": [
|
|
25
|
+
{
|
|
26
|
+
"ua": "Назва",
|
|
27
|
+
"meta": "title",
|
|
28
|
+
"name": "name",
|
|
29
|
+
"format": "slot",
|
|
30
|
+
"slot": "<div><p>{{data?.name}}</p><p class='text-xs text-gray-500'>{{data?.description}}</p></div>",
|
|
31
|
+
"link": "/menu/{menu_id}",
|
|
32
|
+
"width": 300
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"ua": "Локаль",
|
|
36
|
+
"name": "locale",
|
|
37
|
+
"format": "badge",
|
|
38
|
+
"width": 100
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"ua": "Опис",
|
|
42
|
+
"name": "description",
|
|
43
|
+
"format": "text",
|
|
44
|
+
"width": 300,
|
|
45
|
+
"hidden": true
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"ua": "Створено",
|
|
49
|
+
"name": "created_at",
|
|
50
|
+
"format": "datetime",
|
|
51
|
+
"width": 180
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"ua": "Оновлено",
|
|
55
|
+
"name": "updated_at",
|
|
56
|
+
"format": "datetime",
|
|
57
|
+
"width": 180
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"filterList": [
|
|
61
|
+
{
|
|
62
|
+
"ua": "Пошук",
|
|
63
|
+
"name": "search",
|
|
64
|
+
"type": "Text"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"ua": "Локаль",
|
|
68
|
+
"name": "locale",
|
|
69
|
+
"type": "Check"
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "id",
|
|
3
|
+
"table": "site.settings",
|
|
4
|
+
"public": false,
|
|
5
|
+
"actions": [
|
|
6
|
+
"edit"
|
|
7
|
+
],
|
|
8
|
+
"controls": [
|
|
9
|
+
"search",
|
|
10
|
+
"list"
|
|
11
|
+
],
|
|
12
|
+
"access": "admin",
|
|
13
|
+
"order": "key asc",
|
|
14
|
+
"meta": {
|
|
15
|
+
"title": "key",
|
|
16
|
+
"search": "key,value"
|
|
17
|
+
},
|
|
18
|
+
"title": "Налаштування",
|
|
19
|
+
"form": "cms.settings.form",
|
|
20
|
+
"sqlColumns": "*",
|
|
21
|
+
"columns": [
|
|
22
|
+
{
|
|
23
|
+
"ua": "Ключ",
|
|
24
|
+
"meta": "title",
|
|
25
|
+
"name": "key",
|
|
26
|
+
"format": "text",
|
|
27
|
+
"width": 250
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"ua": "Значення",
|
|
31
|
+
"name": "value",
|
|
32
|
+
"format": "text",
|
|
33
|
+
"width": 400
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"ua": "Створено",
|
|
37
|
+
"name": "created_at",
|
|
38
|
+
"format": "datetime",
|
|
39
|
+
"width": 180,
|
|
40
|
+
"hidden": true
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"ua": "Оновлено",
|
|
44
|
+
"name": "updated_at",
|
|
45
|
+
"format": "datetime",
|
|
46
|
+
"width": 180
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"filterList": [
|
|
50
|
+
{
|
|
51
|
+
"ua": "Пошук",
|
|
52
|
+
"name": "search",
|
|
53
|
+
"type": "Text"
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
|