diff --git a/src/core/Controller/Editor/EditorJsController.php b/src/core/Controller/Editor/EditorJsController.php new file mode 100644 index 0000000..95394e3 --- /dev/null +++ b/src/core/Controller/Editor/EditorJsController.php @@ -0,0 +1,52 @@ +query->get('url'), FILTER_VALIDATE_URL); + $datas = []; + + if (!$url) { + $data['success'] = 0; + } else { + try { + $consumer = new Consumer(); + $response = $client->request('GET', $url); + $openGraph = $consumer->loadHtml($response->getContent()); + + $data = [ + 'success' => 1, + 'link' => $openGraph->url, + 'meta' => [ + 'title' => $openGraph->title, + 'description' => $openGraph->description, + ], + ]; + + if (isset($openGraph->images[0])) { + $data['meta']['image']['url'] = $openGraph->images[0]->url; + } + } catch (\Exception $e) { + $data['success'] = 0; + } + } + + return $this->json($data); + } +} diff --git a/src/core/Resources/assets/js/modules/editorjs.js b/src/core/Resources/assets/js/modules/editorjs.js index 5587d6f..b3a15b3 100644 --- a/src/core/Resources/assets/js/modules/editorjs.js +++ b/src/core/Resources/assets/js/modules/editorjs.js @@ -1,11 +1,15 @@ const $ = require('jquery') const EditorJS = require('@editorjs/editorjs') const InlineTools = require('editorjs-inline-tool') +const Routing = require('../../../../../../../../friendsofsymfony/jsrouting-bundle/Resources/public/js/router.min.js') +const routes = require('../../../../../../../../../public/js/fos_js_routes.json') const UnderlineInlineTool = InlineTools.UnderlineInlineTool const StrongInlineTool = InlineTools.StrongInlineTool const ItalicInlineTool = InlineTools.ItalicInlineTool +Routing.setRoutingData(routes) + const tools = { header: { class: require('@editorjs/header'), @@ -41,7 +45,9 @@ const tools = { }, link: { class: require('@editorjs/link'), - inlineToolbar: true + config: { + endpoint: Routing.generate('admin_editor_editorjs_fetch_url') + } }, table: { class: require('@editorjs/table'), @@ -67,10 +73,6 @@ const tools = { class: require('@editorjs/underline'), inlineToolbar: true }, - linkAutocomplete: { - class: require('@editorjs/link-autocomplete'), - inlineToolbar: true - }, image: { class: require('../components/editorjs/image-tool.js') } diff --git a/src/core/Resources/views/editorjs/image.html.twig b/src/core/Resources/views/editorjs/image.html.twig index e60d86f..285a142 100644 --- a/src/core/Resources/views/editorjs/image.html.twig +++ b/src/core/Resources/views/editorjs/image.html.twig @@ -1,3 +1,3 @@ {%- block render -%} - {{ caption }} +

{{ caption }}

{%- endblock -%} diff --git a/src/core/Resources/views/editorjs/link.html.twig b/src/core/Resources/views/editorjs/link.html.twig new file mode 100644 index 0000000..c5eb5e7 --- /dev/null +++ b/src/core/Resources/views/editorjs/link.html.twig @@ -0,0 +1,7 @@ +{%- block render -%} +

{{- meta.title -}}

+ + {%- if meta.description -%} +

{{- meta.description -}}

+ {%- endif -%} +{%- endblock -%} diff --git a/src/core/Twig/Extension/EditorJsExtension.php b/src/core/Twig/Extension/EditorJsExtension.php index d94a12b..406fcd4 100644 --- a/src/core/Twig/Extension/EditorJsExtension.php +++ b/src/core/Twig/Extension/EditorJsExtension.php @@ -25,6 +25,7 @@ class EditorJsExtension extends AbstractExtension 'code', 'raw', 'image', + 'link', ]; public function __construct(Environment $twig, ParameterBagInterface $params)