From 82174afdea911d805a93f1f003381930ae4ee346 Mon Sep 17 00:00:00 2001 From: lexx Date: Tue, 27 Aug 2024 12:24:51 +0300 Subject: [PATCH] fixing multiple references --- UPGRADE.md | 32 + composer.json | 6 +- .../elements/ReferenceInlineButtons.svelte | 29 +- .../svelte/records/elements/RichEditor.svelte | 1 - front/package-lock.json | 675 ------------------ src/Commands/CompileSchemas.php | 12 +- src/Config/main.php | 15 + .../2014_10_12_000000_create_users_table.php | 3 + ...022_11_16_192907_create_sessions_table.php | 2 + .../migrations/2023_01_20_162322_records.php | 2 + .../2023_03_02_152122_revisions.php | 2 + ...2023_10_22_152122_generatedIndexColumn.php | 2 + .../2023_10_23_152122_RecordsUpdatedIndex.php | 7 +- src/Http/Controller/RecordController.php | 3 +- src/Schema/BlockUi/File.php | 54 -- src/Schema/BlockUi/Heading.php | 33 - src/Schema/BlockUi/Markdown.php | 33 - src/Schema/BlockUi/Reference.php | 54 -- src/Schema/BlockUi/Rich.php | 33 - src/Schema/BlockUi/Textarea.php | 33 - src/Schema/SchemaService.php | 35 +- src/Schema/Ui/Block.php | 46 -- src/Schema/Ui/Checkbox.php | 2 +- 23 files changed, 114 insertions(+), 1000 deletions(-) create mode 100644 UPGRADE.md delete mode 100644 src/Schema/BlockUi/File.php delete mode 100644 src/Schema/BlockUi/Heading.php delete mode 100644 src/Schema/BlockUi/Markdown.php delete mode 100644 src/Schema/BlockUi/Reference.php delete mode 100644 src/Schema/BlockUi/Rich.php delete mode 100644 src/Schema/BlockUi/Textarea.php delete mode 100644 src/Schema/Ui/Block.php diff --git a/UPGRADE.md b/UPGRADE.md new file mode 100644 index 0000000..f6afa77 --- /dev/null +++ b/UPGRADE.md @@ -0,0 +1,32 @@ +# Upgrade from 1.1.* to 1.2.0 + +## lucent.php config file + +There is now an array of commands, accepting more than one. + +from +```php +"generateCommand" => env("LUCENT_GENERATE_COMMAND", "generate:static"), +``` + +to +```php +"commands" => [ + "generate:static" => "Build Website", +], +``` +## config/filesystems.php + +Lucent has its own filesystem. + +You should now add: + +``` +'lucent' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + 'throw' => false, +], +``` \ No newline at end of file diff --git a/composer.json b/composer.json index 7d1347a..3482734 100644 --- a/composer.json +++ b/composer.json @@ -8,14 +8,14 @@ "ext-zip": "*", "ext-sqlite3": "*", "ext-imagick": "*", + "ext-pdo": "*", "php": "^8.3", "guzzlehttp/guzzle": "^7.2", "intervention/image": "^2.7", "phpoption/phpoption": "^1.9", "spatie/image-optimizer": "^1.6", - "staudenmeir/laravel-cte": "^1.0", - "ext-pdo": "*", - "mustache/mustache": "^2.14" + "staudenmeir/laravel-cte": "^1.0" + }, "require-dev": { "phpstan/phpstan": "^1.8", diff --git a/front/js/svelte/records/elements/ReferenceInlineButtons.svelte b/front/js/svelte/records/elements/ReferenceInlineButtons.svelte index 5dc4aa6..80911d8 100644 --- a/front/js/svelte/records/elements/ReferenceInlineButtons.svelte +++ b/front/js/svelte/records/elements/ReferenceInlineButtons.svelte @@ -43,6 +43,7 @@ function createInlineReference(e, schemaUId) { e.preventDefault(); + inLineCreateRecord = null; axios .get(channel.lucentUrl + "/records/newInline?schema=" + schemaUId) .then((response) => { @@ -59,27 +60,29 @@
- {#each schemas as schema} - -
- {schema.label} -
+ +
New
+ {#each schemas as schema} + {/each} + +
+ +
+ {#each schemas as schema} -
- {/each} + >{schema.name} + + {/each} + +
{:else}
diff --git a/front/js/svelte/records/elements/RichEditor.svelte b/front/js/svelte/records/elements/RichEditor.svelte index 4224a1a..fc577bf 100644 --- a/front/js/svelte/records/elements/RichEditor.svelte +++ b/front/js/svelte/records/elements/RichEditor.svelte @@ -2,7 +2,6 @@ import Tinymce from "../../libs/Tinymce.svelte"; import RichEditorFiles from "./RichEditorFiles.svelte"; import {getErrorMessage} from "./errorMessage"; - import TipTap from "../../libs/TipTap.svelte"; import Trix from "../../libs/Trix.svelte"; export let value; diff --git a/front/package-lock.json b/front/package-lock.json index 9a7c8cc..b01d1c5 100644 --- a/front/package-lock.json +++ b/front/package-lock.json @@ -10,29 +10,6 @@ "@codemirror/lang-markdown": "^6.2.5", "@codemirror/state": "^6.4.1", "@sveltejs/vite-plugin-svelte": "^3.1.1", - "@tiptap/core": "^2.6.6", - "@tiptap/extension-blockquote": "^2.6.6", - "@tiptap/extension-bold": "^2.6.6", - "@tiptap/extension-bullet-list": "^2.6.6", - "@tiptap/extension-code": "^2.6.6", - "@tiptap/extension-code-block": "^2.6.6", - "@tiptap/extension-document": "^2.6.6", - "@tiptap/extension-dropcursor": "^2.6.6", - "@tiptap/extension-hard-break": "^2.6.6", - "@tiptap/extension-heading": "^2.6.6", - "@tiptap/extension-history": "^2.6.6", - "@tiptap/extension-image": "^2.6.6", - "@tiptap/extension-italic": "^2.6.6", - "@tiptap/extension-list-item": "^2.6.6", - "@tiptap/extension-ordered-list": "^2.6.6", - "@tiptap/extension-paragraph": "^2.6.6", - "@tiptap/extension-strike": "^2.6.6", - "@tiptap/extension-table": "^2.6.6", - "@tiptap/extension-table-cell": "^2.6.6", - "@tiptap/extension-table-header": "^2.6.6", - "@tiptap/extension-table-row": "^2.6.6", - "@tiptap/extension-text": "^2.6.6", - "@tiptap/extension-underline": "^2.6.6", "axios": "^1.7.4", "codemirror": "^6.0.1", "date-fns": "^3.6.0", @@ -714,13 +691,6 @@ "@lezer/highlight": "^1.0.0" } }, - "node_modules/@remirror/core-constants": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-2.0.2.tgz", - "integrity": "sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==", - "dev": true, - "peer": true - }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.20.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz", @@ -968,340 +938,6 @@ "vite": "^5.0.0" } }, - "node_modules/@tiptap/core": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.6.6.tgz", - "integrity": "sha512-VO5qTsjt6rwworkuo0s5AqYMfDA0ZwiTiH6FHKFSu2G/6sS7HKcc/LjPq+5Legzps4QYdBDl3W28wGsGuS1GdQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/pm": "^2.6.6" - } - }, - "node_modules/@tiptap/extension-blockquote": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.6.6.tgz", - "integrity": "sha512-hAdsNlMfzzxld154hJqPqtWqO5i4/7HoDfuxmyqBxdMJ+e2UMaIGBGwoLRXG0V9UoRwJusjqlpyD7pIorxNlgA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.6.6" - } - }, - "node_modules/@tiptap/extension-bold": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.6.6.tgz", - "integrity": "sha512-CD6gBhdQtCoqYSmx8oAV8gvKtVOGZSyyvuNYo7by9eZ56DqLYnd7kbUj0RH7o9Ymf/iJTOUJ6XcvrsWwo4lubg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.6.6" - } - }, - "node_modules/@tiptap/extension-bullet-list": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.6.6.tgz", - "integrity": "sha512-WEKxbVSYuvmX2wkHWP8HXk5nzA7stYwtdaubwWH/R17kGI3IGScJuMQ9sEN82uzJU8bfgL9yCbH2bY8Fj/Q4Ow==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.6.6" - } - }, - "node_modules/@tiptap/extension-code": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.6.6.tgz", - "integrity": "sha512-JrEFKsZiLvfvOFhOnnrpA0TzCuJjDeysfbMeuKUZNV4+DhYOL28d39H1++rEtJAX0LcbBU60oC5/PrlU9SpvRQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.6.6" - } - }, - "node_modules/@tiptap/extension-code-block": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.6.6.tgz", - "integrity": "sha512-1YLp/zHMHSkE2xzht8nPR6T4sQJJ3ket798czxWuQEbetFv/l0U/mpiPpYSLObj6oTAoqYZ0kWXZj5eQSpPB8Q==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.6.6", - "@tiptap/pm": "^2.6.6" - } - }, - "node_modules/@tiptap/extension-document": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.6.6.tgz", - "integrity": "sha512-6qlH5VWzLHHRVeeciRC6C4ZHpMsAGPNG16EF53z0GeMSaaFD/zU3B239QlmqXmLsAl8bpf8Bn93N0t2ABUvScw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.6.6" - } - }, - "node_modules/@tiptap/extension-dropcursor": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.6.6.tgz", - "integrity": "sha512-O6CeKriA9uyHsg7Ui4z5ZjEWXQxrIL+1zDekffW0wenGC3G4LUsCzAiFS4LSrR9a3u7tnwqGApW10rdkmCGF4w==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.6.6", - "@tiptap/pm": "^2.6.6" - } - }, - "node_modules/@tiptap/extension-hard-break": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.6.6.tgz", - "integrity": "sha512-bsUuyYBrMDEiudx1dOQSr9MzKv13m0xHWrOK+DYxuIDYJb5g+c9un5cK7Js+et/HEYYSPOoH/iTW6h+4I5YeUg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.6.6" - } - }, - "node_modules/@tiptap/extension-heading": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.6.6.tgz", - "integrity": "sha512-bgx9vptVFi5yFkIw1OI53J7+xJ71Or3SOe/Q8eSpZv53DlaKpL/TzKw8Z54t1PrI2rJ6H9vrLtkvixJvBZH1Ug==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.6.6" - } - }, - "node_modules/@tiptap/extension-history": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.6.6.tgz", - "integrity": "sha512-tPTzAmPGqMX5Bd5H8lzRpmsaMvB9DvI5Dy2za/VQuFtxgXmDiFVgHRkRXIuluSkPTuANu84XBOQ0cBijqY8x4w==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.6.6", - "@tiptap/pm": "^2.6.6" - } - }, - "node_modules/@tiptap/extension-image": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-2.6.6.tgz", - "integrity": "sha512-dwJKvoqsr72B4tcTH8hXhfBJzUMs/jXUEE9MnfzYnSXf+CYALLjF8r/IkGYbxce62GP/bMDoj8BgpF8saeHtqA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.6.6" - } - }, - "node_modules/@tiptap/extension-italic": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.6.6.tgz", - "integrity": "sha512-t7ZPsXqa8nJZZ/6D0rQyZ/KsvzLaSihC6hBTjUQ77CeDGV9PhDWjIcBW4OrvwraJDBd12ETBeQ2CkULJOgH+lQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.6.6" - } - }, - "node_modules/@tiptap/extension-list-item": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.6.6.tgz", - "integrity": "sha512-k+oEzZu2cgVKqPqOP1HzASOKLpTEV9m7mRVPAbuaaX8mSyvIgD6f+JUx9PvgYv//D918wk98LMoRBFX53tDJ4w==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.6.6" - } - }, - "node_modules/@tiptap/extension-ordered-list": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.6.6.tgz", - "integrity": "sha512-AJwyfLXIi7iUGnK5twJbwdVVpQyh7fU6OK75h1AwDztzsOcoPcxtffDlZvUOd4ZtwuyhkzYqVkeI0f+abTWZTw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.6.6" - } - }, - "node_modules/@tiptap/extension-paragraph": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.6.6.tgz", - "integrity": "sha512-fD/onCr16UQWx+/xEmuFC2MccZZ7J5u4YaENh8LMnAnBXf78iwU7CAcmuc9rfAEO3qiLoYGXgLKiHlh2ZfD4wA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.6.6" - } - }, - "node_modules/@tiptap/extension-strike": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.6.6.tgz", - "integrity": "sha512-Ze8KhGk+wzSJSJRl5fbhTI6AvPu2LmcHYeO3pMEH8u4gV5WTXfmKJVStEIAzkoqvwEQVWzXvy8nDgsFQHiojPg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.6.6" - } - }, - "node_modules/@tiptap/extension-table": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/extension-table/-/extension-table-2.6.6.tgz", - "integrity": "sha512-Ay/IClmB9R8MjnLobGnA9tI0+7ev4GUwvNf/JA2razI8CeaMCJ7CcAzG6pnIp4d7I6ELWYmAt3vwxoRlsAZcEw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.6.6", - "@tiptap/pm": "^2.6.6" - } - }, - "node_modules/@tiptap/extension-table-cell": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/extension-table-cell/-/extension-table-cell-2.6.6.tgz", - "integrity": "sha512-XakU9qnlYAf/ux4q7zgiJs2pvkjOl9mVzQw5j55aQHYLiw0gXomEgUbrkn7jhA7N6WP9PlngS3quwIDfyoqLvw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.6.6" - } - }, - "node_modules/@tiptap/extension-table-header": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/extension-table-header/-/extension-table-header-2.6.6.tgz", - "integrity": "sha512-BX2cVTrOZzIQAAWrNjD2Dzk/RpCJWUqgdW2bh27x0nJwKfMWfqLPoplTTuCZ+J9yK7rlNj3jEhKewe/yR1Tudw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.6.6" - } - }, - "node_modules/@tiptap/extension-table-row": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/extension-table-row/-/extension-table-row-2.6.6.tgz", - "integrity": "sha512-VN8MwrEbq2hs/BE3cizbasFMLfh0F9I9MF7cmU8V1j1Zju0ONUIEXOscO4TNFfCB8lf5tTwIp1sr+fxYUUprhg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.6.6" - } - }, - "node_modules/@tiptap/extension-text": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.6.6.tgz", - "integrity": "sha512-e84uILnRzNzcwK1DVQNpXVmBG1Cq3BJipTOIDl1LHifOok7MBjhI/X+/NR0bd3N2t6gmDTWi63+4GuJ5EeDmsg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.6.6" - } - }, - "node_modules/@tiptap/extension-underline": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.6.6.tgz", - "integrity": "sha512-3A4HqsDM/AFb2VaeWACpGexjgI257kz0yU4jNV8uyydDR2KhqeinuEnoSoOmx9T3pL006TWfPg4vaQYPO3qvrQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.6.6" - } - }, - "node_modules/@tiptap/pm": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.6.6.tgz", - "integrity": "sha512-56FGLPn3fwwUlIbLs+BO21bYfyqP9fKyZQbQyY0zWwA/AG2kOwoXaRn7FOVbjP6CylyWpFJnpRRmgn694QKHEg==", - "dev": true, - "peer": true, - "dependencies": { - "prosemirror-changeset": "^2.2.1", - "prosemirror-collab": "^1.3.1", - "prosemirror-commands": "^1.5.2", - "prosemirror-dropcursor": "^1.8.1", - "prosemirror-gapcursor": "^1.3.2", - "prosemirror-history": "^1.4.1", - "prosemirror-inputrules": "^1.4.0", - "prosemirror-keymap": "^1.2.2", - "prosemirror-markdown": "^1.13.0", - "prosemirror-menu": "^1.2.4", - "prosemirror-model": "^1.22.2", - "prosemirror-schema-basic": "^1.2.3", - "prosemirror-schema-list": "^1.4.1", - "prosemirror-state": "^1.4.3", - "prosemirror-tables": "^1.4.0", - "prosemirror-trailing-node": "^2.0.9", - "prosemirror-transform": "^1.9.0", - "prosemirror-view": "^1.33.9" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - } - }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", @@ -1333,13 +969,6 @@ "node": ">= 8" } }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "peer": true - }, "node_modules/aria-query": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", @@ -1536,19 +1165,6 @@ "node": ">=6" } }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/esbuild": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", @@ -1587,19 +1203,6 @@ "@esbuild/win32-x64": "0.20.2" } }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", @@ -1796,16 +1399,6 @@ "vite": "^5.0.0" } }, - "node_modules/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", - "dev": true, - "peer": true, - "dependencies": { - "uc.micro": "^2.0.0" - } - }, "node_modules/locate-character": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", @@ -1827,37 +1420,12 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, - "node_modules/markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", - "dev": true, - "peer": true, - "dependencies": { - "argparse": "^2.0.1", - "entities": "^4.4.0", - "linkify-it": "^5.0.0", - "mdurl": "^2.0.0", - "punycode.js": "^2.3.1", - "uc.micro": "^2.1.0" - }, - "bin": { - "markdown-it": "bin/markdown-it.mjs" - } - }, "node_modules/mdn-data": { "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", "dev": true }, - "node_modules/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", - "dev": true, - "peer": true - }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -4473,13 +4041,6 @@ "inBundle": true, "license": "ISC" }, - "node_modules/orderedmap": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz", - "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==", - "dev": true, - "peer": true - }, "node_modules/periscopic": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", @@ -4537,234 +4098,12 @@ "node": "^10 || ^12 || >=14" } }, - "node_modules/prosemirror-changeset": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.2.1.tgz", - "integrity": "sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==", - "dev": true, - "peer": true, - "dependencies": { - "prosemirror-transform": "^1.0.0" - } - }, - "node_modules/prosemirror-collab": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz", - "integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==", - "dev": true, - "peer": true, - "dependencies": { - "prosemirror-state": "^1.0.0" - } - }, - "node_modules/prosemirror-commands": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.6.0.tgz", - "integrity": "sha512-xn1U/g36OqXn2tn5nGmvnnimAj/g1pUx2ypJJIe8WkVX83WyJVC5LTARaxZa2AtQRwntu9Jc5zXs9gL9svp/mg==", - "dev": true, - "peer": true, - "dependencies": { - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.0.0" - } - }, - "node_modules/prosemirror-dropcursor": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz", - "integrity": "sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==", - "dev": true, - "peer": true, - "dependencies": { - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.1.0", - "prosemirror-view": "^1.1.0" - } - }, - "node_modules/prosemirror-gapcursor": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz", - "integrity": "sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==", - "dev": true, - "peer": true, - "dependencies": { - "prosemirror-keymap": "^1.0.0", - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-view": "^1.0.0" - } - }, - "node_modules/prosemirror-history": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.4.1.tgz", - "integrity": "sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==", - "dev": true, - "peer": true, - "dependencies": { - "prosemirror-state": "^1.2.2", - "prosemirror-transform": "^1.0.0", - "prosemirror-view": "^1.31.0", - "rope-sequence": "^1.3.0" - } - }, - "node_modules/prosemirror-inputrules": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.4.0.tgz", - "integrity": "sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==", - "dev": true, - "peer": true, - "dependencies": { - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.0.0" - } - }, - "node_modules/prosemirror-keymap": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz", - "integrity": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==", - "dev": true, - "peer": true, - "dependencies": { - "prosemirror-state": "^1.0.0", - "w3c-keyname": "^2.2.0" - } - }, - "node_modules/prosemirror-markdown": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.13.0.tgz", - "integrity": "sha512-UziddX3ZYSYibgx8042hfGKmukq5Aljp2qoBiJRejD/8MH70siQNz5RB1TrdTPheqLMy4aCe4GYNF10/3lQS5g==", - "dev": true, - "peer": true, - "dependencies": { - "markdown-it": "^14.0.0", - "prosemirror-model": "^1.20.0" - } - }, - "node_modules/prosemirror-menu": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.4.tgz", - "integrity": "sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==", - "dev": true, - "peer": true, - "dependencies": { - "crelt": "^1.0.0", - "prosemirror-commands": "^1.0.0", - "prosemirror-history": "^1.0.0", - "prosemirror-state": "^1.0.0" - } - }, - "node_modules/prosemirror-model": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.22.3.tgz", - "integrity": "sha512-V4XCysitErI+i0rKFILGt/xClnFJaohe/wrrlT2NSZ+zk8ggQfDH4x2wNK7Gm0Hp4CIoWizvXFP7L9KMaCuI0Q==", - "dev": true, - "peer": true, - "dependencies": { - "orderedmap": "^2.0.0" - } - }, - "node_modules/prosemirror-schema-basic": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.3.tgz", - "integrity": "sha512-h+H0OQwZVqMon1PNn0AG9cTfx513zgIG2DY00eJ00Yvgb3UD+GQ/VlWW5rcaxacpCGT1Yx8nuhwXk4+QbXUfJA==", - "dev": true, - "peer": true, - "dependencies": { - "prosemirror-model": "^1.19.0" - } - }, - "node_modules/prosemirror-schema-list": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.4.1.tgz", - "integrity": "sha512-jbDyaP/6AFfDfu70VzySsD75Om2t3sXTOdl5+31Wlxlg62td1haUpty/ybajSfJ1pkGadlOfwQq9kgW5IMo1Rg==", - "dev": true, - "peer": true, - "dependencies": { - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.7.3" - } - }, - "node_modules/prosemirror-state": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz", - "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==", - "dev": true, - "peer": true, - "dependencies": { - "prosemirror-model": "^1.0.0", - "prosemirror-transform": "^1.0.0", - "prosemirror-view": "^1.27.0" - } - }, - "node_modules/prosemirror-tables": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.4.0.tgz", - "integrity": "sha512-fxryZZkQG12fSCNuZDrYx6Xvo2rLYZTbKLRd8rglOPgNJGMKIS8uvTt6gGC38m7UCu/ENnXIP9pEz5uDaPc+cA==", - "dev": true, - "peer": true, - "dependencies": { - "prosemirror-keymap": "^1.1.2", - "prosemirror-model": "^1.8.1", - "prosemirror-state": "^1.3.1", - "prosemirror-transform": "^1.2.1", - "prosemirror-view": "^1.13.3" - } - }, - "node_modules/prosemirror-trailing-node": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.9.tgz", - "integrity": "sha512-YvyIn3/UaLFlFKrlJB6cObvUhmwFNZVhy1Q8OpW/avoTbD/Y7H5EcjK4AZFKhmuS6/N6WkGgt7gWtBWDnmFvHg==", - "dev": true, - "peer": true, - "dependencies": { - "@remirror/core-constants": "^2.0.2", - "escape-string-regexp": "^4.0.0" - }, - "peerDependencies": { - "prosemirror-model": "^1.22.1", - "prosemirror-state": "^1.4.2", - "prosemirror-view": "^1.33.8" - } - }, - "node_modules/prosemirror-transform": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.10.0.tgz", - "integrity": "sha512-9UOgFSgN6Gj2ekQH5CTDJ8Rp/fnKR2IkYfGdzzp5zQMFsS4zDllLVx/+jGcX86YlACpG7UR5fwAXiWzxqWtBTg==", - "dev": true, - "peer": true, - "dependencies": { - "prosemirror-model": "^1.21.0" - } - }, - "node_modules/prosemirror-view": { - "version": "1.33.10", - "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.10.tgz", - "integrity": "sha512-wsKg9JeQkWlkXG8DDcloI/tbB9r3CysziubigoC8wTuE6zobN/9cl8bGRk1J1XjkUp7rxGBziOSxrhoILL84hg==", - "dev": true, - "peer": true, - "dependencies": { - "prosemirror-model": "^1.20.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.1.0" - } - }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, - "node_modules/punycode.js": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", - "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -4812,13 +4151,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/rope-sequence": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", - "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==", - "dev": true, - "peer": true - }, "node_modules/sass": { "version": "1.77.8", "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz", @@ -4918,13 +4250,6 @@ "integrity": "sha512-5pC4olCp7BwxTC8Joy1Kv33kDvSOApi9Tqf6c8wygqCgeCx9xPP5cxkZEhvKpMV+kjd9gszingd5fZo834+ktw==", "dev": true }, - "node_modules/uc.micro": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "dev": true, - "peer": true - }, "node_modules/uuid": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", diff --git a/src/Commands/CompileSchemas.php b/src/Commands/CompileSchemas.php index ceece05..652f48d 100644 --- a/src/Commands/CompileSchemas.php +++ b/src/Commands/CompileSchemas.php @@ -16,19 +16,13 @@ class CompileSchemas extends Command protected $description = 'Compiles schemas'; - public function __construct( - public SchemaService $schemaService - ) + public function handle(SchemaService $schemaService) { - parent::__construct(); - } - - public function handle() - { $configDir = base_path(config('lucent.schemas_path')); $schemasDirIterator = new DirectoryIterator($configDir); $schemas = []; + foreach ($schemasDirIterator as $file) { if ($file->getExtension() !== "json") { continue; @@ -46,7 +40,7 @@ class CompileSchemas extends Command $schemas = collect($schemas)->sortBy("label")->values(); $roles = $schemas - ->map([$this->schemaService, 'fromArray']) + ->map([$schemaService, 'fromArray']) ->whereIn("type", [Type::COLLECTION, Type::FILES]) ->reduce(fn($carry, Schema $schema) => array_merge( $carry, diff --git a/src/Config/main.php b/src/Config/main.php index d307376..ddd2302 100644 --- a/src/Config/main.php +++ b/src/Config/main.php @@ -31,4 +31,19 @@ return [ "canInvite" => ["admin"], "canBuild" => ["admin"], "systemUserId" => "", + "schemaFields" => [ + \Lucent\Schema\Ui\Checkbox::class, + \Lucent\Schema\Ui\Color::class, + \Lucent\Schema\Ui\Date::class, + \Lucent\Schema\Ui\Datetime::class, + \Lucent\Schema\Ui\File::class, + \Lucent\Schema\Ui\Json::class, + \Lucent\Schema\Ui\Markdown::class, + \Lucent\Schema\Ui\Number::class, + \Lucent\Schema\Ui\Reference::class, + \Lucent\Schema\Ui\Rich::class, + \Lucent\Schema\Ui\Slug::class, + \Lucent\Schema\Ui\Text::class, + \Lucent\Schema\Ui\Textarea::class + ] ]; diff --git a/src/Database/migrations/2014_10_12_000000_create_users_table.php b/src/Database/migrations/2014_10_12_000000_create_users_table.php index c0c44d5..1508f94 100644 --- a/src/Database/migrations/2014_10_12_000000_create_users_table.php +++ b/src/Database/migrations/2014_10_12_000000_create_users_table.php @@ -5,6 +5,9 @@ use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { + + protected $connection = 'lucentDb'; + /** * Run the migrations. * diff --git a/src/Database/migrations/2022_11_16_192907_create_sessions_table.php b/src/Database/migrations/2022_11_16_192907_create_sessions_table.php index 06c3e45..ed8c04b 100644 --- a/src/Database/migrations/2022_11_16_192907_create_sessions_table.php +++ b/src/Database/migrations/2022_11_16_192907_create_sessions_table.php @@ -6,6 +6,8 @@ use Illuminate\Support\Facades\Schema; return new class extends Migration { + protected $connection = 'lucentDb'; + /** * Run the migrations. * diff --git a/src/Database/migrations/2023_01_20_162322_records.php b/src/Database/migrations/2023_01_20_162322_records.php index 8f57648..e70a613 100644 --- a/src/Database/migrations/2023_01_20_162322_records.php +++ b/src/Database/migrations/2023_01_20_162322_records.php @@ -5,6 +5,8 @@ use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { + + protected $connection = 'lucentDb'; /** * Run the migrations. * diff --git a/src/Database/migrations/2023_03_02_152122_revisions.php b/src/Database/migrations/2023_03_02_152122_revisions.php index 392ae4b..e5982f3 100644 --- a/src/Database/migrations/2023_03_02_152122_revisions.php +++ b/src/Database/migrations/2023_03_02_152122_revisions.php @@ -5,6 +5,8 @@ use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { + + protected $connection = 'lucentDb'; /** * Run the migrations. * diff --git a/src/Database/migrations/2023_10_22_152122_generatedIndexColumn.php b/src/Database/migrations/2023_10_22_152122_generatedIndexColumn.php index f3a5a48..02fe933 100644 --- a/src/Database/migrations/2023_10_22_152122_generatedIndexColumn.php +++ b/src/Database/migrations/2023_10_22_152122_generatedIndexColumn.php @@ -5,6 +5,8 @@ use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { + + protected $connection = 'lucentDb'; /** * Run the migrations. * diff --git a/src/Database/migrations/2023_10_23_152122_RecordsUpdatedIndex.php b/src/Database/migrations/2023_10_23_152122_RecordsUpdatedIndex.php index 37e3af5..6f7c23f 100644 --- a/src/Database/migrations/2023_10_23_152122_RecordsUpdatedIndex.php +++ b/src/Database/migrations/2023_10_23_152122_RecordsUpdatedIndex.php @@ -5,6 +5,9 @@ use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { + + protected $connection = 'lucentDb'; + /** * Run the migrations. * @@ -14,7 +17,7 @@ return new class extends Migration { { Schema::table('records', function (Blueprint $table) { $table->dropIndex(['schema', 'status']); - $table->index(['schema', '_sys->updatedAt','status']); + $table->index(['schema', '_sys->updatedAt', 'status']); }); } @@ -27,7 +30,7 @@ return new class extends Migration { { Schema::table('records', function (Blueprint $table) { - $table->dropIndex(['schema', '_sys->updatedAt','status']); + $table->dropIndex(['schema', '_sys->updatedAt', 'status']); $table->index(['schema', 'status']); }); } diff --git a/src/Http/Controller/RecordController.php b/src/Http/Controller/RecordController.php index 60a6178..00b8900 100644 --- a/src/Http/Controller/RecordController.php +++ b/src/Http/Controller/RecordController.php @@ -165,7 +165,7 @@ class RecordController extends Controller $schema = $this->channelService->channel->schemas->where("name", $request->input("schema"))->first(); $recordHistory = $this->recordManager->fromSession($request->session())->getRecords(); - $record = $this->recordService->createEmpty($schema, $this->authService->currentUserId()); + $record = $this->recordService->createEmpty($schema); $queryRecord = QueryRecord::fromRecord($record); return $this->svelte->render( layout: "channel", @@ -200,6 +200,7 @@ class RecordController extends Controller "schema" => $schema, "record" => $queryRecord, "isCreateMode" => true, + "isWritable" => in_array($record->schema, $this->accountService->currentWritableSchemas()) ]; } diff --git a/src/Schema/BlockUi/File.php b/src/Schema/BlockUi/File.php deleted file mode 100644 index cee53fd..0000000 --- a/src/Schema/BlockUi/File.php +++ /dev/null @@ -1,54 +0,0 @@ -info = new FieldInfo("file", "File", FieldType::FILE); - } - - public function format(array $input, array $output): array - { - return $output; - } - - public function failMin(mixed $value): bool - { - if (is_null($value)) { - return false; - } - - return count($value) < $this->min; - } - - public function failMax(mixed $value): bool - { - if (is_null($value)) { - return false; - } - - return count($value) < $this->min; - } - -} - diff --git a/src/Schema/BlockUi/Heading.php b/src/Schema/BlockUi/Heading.php deleted file mode 100644 index c7ea69f..0000000 --- a/src/Schema/BlockUi/Heading.php +++ /dev/null @@ -1,33 +0,0 @@ -info = new FieldInfo("heading", "Heading", FieldType::STRING); - } - - public function format(array $input, array $output): array - { - $output[$this->name] = $input[$this->name] ?? ""; - return $output; - } - -} - diff --git a/src/Schema/BlockUi/Markdown.php b/src/Schema/BlockUi/Markdown.php deleted file mode 100644 index 0accf56..0000000 --- a/src/Schema/BlockUi/Markdown.php +++ /dev/null @@ -1,33 +0,0 @@ -info = new FieldInfo("markdown", "Markdown Editor", FieldType::STRING); - } - - public function format(array $input, array $output): array - { - $output[$this->name] = $input[$this->name] ?? ""; - return $output; - } - -} - diff --git a/src/Schema/BlockUi/Reference.php b/src/Schema/BlockUi/Reference.php deleted file mode 100644 index bf082cd..0000000 --- a/src/Schema/BlockUi/Reference.php +++ /dev/null @@ -1,54 +0,0 @@ -info = new FieldInfo("reference", "Reference", FieldType::REFERENCE); - } - - public function format(array $input, array $output): array - { - return $output; - } - - public function failMin(mixed $value): bool - { - if (is_null($value)) { - return false; - } - - return count($value) < $this->min; - } - - public function failMax(mixed $value): bool - { - if (is_null($value)) { - return false; - } - - return count($value) < $this->min; - } - -} - diff --git a/src/Schema/BlockUi/Rich.php b/src/Schema/BlockUi/Rich.php deleted file mode 100644 index 6744ba9..0000000 --- a/src/Schema/BlockUi/Rich.php +++ /dev/null @@ -1,33 +0,0 @@ -info = new FieldInfo("rich", "Rich Editor", FieldType::STRING); - } - - public function format(array $input, array $output): array - { - $output[$this->name] = $input[$this->name] ?? ""; - return $output; - } - -} - diff --git a/src/Schema/BlockUi/Textarea.php b/src/Schema/BlockUi/Textarea.php deleted file mode 100644 index 03754d6..0000000 --- a/src/Schema/BlockUi/Textarea.php +++ /dev/null @@ -1,33 +0,0 @@ -info = new FieldInfo("textarea", "Textarea", FieldType::STRING); - } - - public function format(array $input, array $output): array - { - $output[$this->name] = $input[$this->name] ?? ""; - return $output; - } - -} - diff --git a/src/Schema/SchemaService.php b/src/Schema/SchemaService.php index 2e8c089..390825c 100644 --- a/src/Schema/SchemaService.php +++ b/src/Schema/SchemaService.php @@ -2,6 +2,7 @@ namespace Lucent\Schema; +use Lucent\LucentException; use Lucent\Primitive\Collection; class SchemaService @@ -52,16 +53,32 @@ class SchemaService public function mapFields(array $field): FieldInterface { - $className = "\\Lucent\Schema\Ui\\" . ucfirst($field["ui"]); - unset($field["ui"]); - return new $className(...$field); + $schemaFields = [ + \Lucent\Schema\Ui\Checkbox::class, + \Lucent\Schema\Ui\Color::class, + \Lucent\Schema\Ui\Date::class, + \Lucent\Schema\Ui\Datetime::class, + \Lucent\Schema\Ui\File::class, + \Lucent\Schema\Ui\Json::class, + \Lucent\Schema\Ui\Markdown::class, + \Lucent\Schema\Ui\Number::class, + \Lucent\Schema\Ui\Reference::class, + \Lucent\Schema\Ui\Rich::class, + \Lucent\Schema\Ui\Slug::class, + \Lucent\Schema\Ui\Text::class, + \Lucent\Schema\Ui\Textarea::class, + ]; + $ui = collect($schemaFields)->filter(function ($className) use ($field) { + return str_ends_with(strtolower($className), "\\" . strtolower($field["ui"])); + })->first(); + + if (empty($ui)) { + throw new LucentException("Field UI " . $field["ui"] . " not found"); + } + + unset($field["ui"]); + return new $ui(...$field); } - public function mapBlockFields(array $field): FieldInterface - { - $className = "\\Lucent\Schema\BlockUi\\" . ucfirst($field["ui"]); - unset($field["ui"]); - return new $className(...$field); - } } diff --git a/src/Schema/Ui/Block.php b/src/Schema/Ui/Block.php deleted file mode 100644 index 1e0a86c..0000000 --- a/src/Schema/Ui/Block.php +++ /dev/null @@ -1,46 +0,0 @@ -info = new FieldInfo("block", "Block editor", FieldType::JSON); - } - - public function format(array $input, array $output): array - { - $value = $input[$this->name] ?? null; - - if (is_string($value)) { - $value = json_decode($value, true); - } - - $output[$this->name] = (new Nullable($this->nullable, $value, []))->value(); - return $output; - } - - public function failRequired(mixed $value): bool - { - return empty($value); - } -} diff --git a/src/Schema/Ui/Checkbox.php b/src/Schema/Ui/Checkbox.php index 6554556..faa2ad8 100644 --- a/src/Schema/Ui/Checkbox.php +++ b/src/Schema/Ui/Checkbox.php @@ -25,7 +25,7 @@ class Checkbox implements FieldInterface, RequiredInterface public string $group = "", ) { - $this->info = new FieldInfo("checkbox", "Block Checkbox", FieldType::BOOLEAN); + $this->info = new FieldInfo("checkbox", "Checkbox", FieldType::BOOLEAN); } public function format(array $input, array $output): array