Browse Source

Editor styles

imwald
Nuša Pukšič 5 months ago
parent
commit
808f8b8330
  1. 13
      assets/controllers/nostr_publish_controller.js
  2. 6
      assets/controllers/quill_controller.js
  3. 14
      assets/styles/form.css
  4. 10
      src/Form/EditorType.php
  5. 3
      templates/pages/editor.html.twig

13
assets/controllers/nostr_publish_controller.js

@ -9,16 +9,10 @@ export default class extends Controller { @@ -9,16 +9,10 @@ export default class extends Controller {
connect() {
console.log('Nostr publish controller connected');
// Helpful debug to verify values are wired from Twig
try {
console.debug('[nostr-publish] publishUrl:', this.publishUrlValue || '(none)');
console.debug('[nostr-publish] has csrfToken:', Boolean(this.csrfTokenValue));
} catch (_) {}
// Provide a sensible fallback if not passed via values
if (!this.hasPublishUrlValue || !this.publishUrlValue) {
this.publishUrlValue = '/api/article/publish';
}
}
async publish(event) {
@ -87,11 +81,7 @@ export default class extends Controller { @@ -87,11 +81,7 @@ export default class extends Controller {
const formData = new FormData(form);
// Get content from Quill editor if available
const quillEditor = document.querySelector('.ql-editor');
let content = formData.get('editor[content]') || '';
// Convert HTML to markdown (basic conversion)
content = this.htmlToMarkdown(content);
const title = formData.get('editor[title]') || '';
@ -124,7 +114,7 @@ export default class extends Controller { @@ -124,7 +114,7 @@ export default class extends Controller {
// Create tags array
const tags = [
['d', formData.slug], // NIP-33 replaceable event identifier
['d', formData.slug],
['title', formData.title],
['published_at', Math.floor(Date.now() / 1000).toString()]
];
@ -191,7 +181,6 @@ export default class extends Controller { @@ -191,7 +181,6 @@ export default class extends Controller {
markdown = markdown.replace(/<b[^>]*>(.*?)<\/b>/gi, '**$1**');
markdown = markdown.replace(/<em[^>]*>(.*?)<\/em>/gi, '*$1*');
markdown = markdown.replace(/<i[^>]*>(.*?)<\/i>/gi, '*$1*');
markdown = markdown.replace(/<u[^>]*>(.*?)<\/u>/gi, '_$1_');
// Convert links
markdown = markdown.replace(/<a[^>]*href="([^"]*)"[^>]*>(.*?)<\/a>/gi, '[$2]($1)');

6
assets/controllers/quill_controller.js

@ -9,9 +9,9 @@ export default class extends Controller { @@ -9,9 +9,9 @@ export default class extends Controller {
connect() {
const toolbarOptions = [
['bold', 'italic', 'underline', 'strike'],
['bold', 'italic', 'strike'],
['link', 'blockquote', 'code-block', 'image'],
[{ 'header': 1 }, { 'header': 2 }],
[{ 'header': 1 }, { 'header': 2 }, { 'header': 3 }],
[{ list: 'ordered' }, { list: 'bullet' }],
];
@ -36,4 +36,4 @@ export default class extends Controller { @@ -36,4 +36,4 @@ export default class extends Controller {
});
}
}
}

14
assets/styles/form.css

@ -54,4 +54,16 @@ input:focus, textarea:focus { @@ -54,4 +54,16 @@ input:focus, textarea:focus {
.image-with-preview input {
flex-grow: 1;
}
}
textarea, input {
font-family: var(--font-family), sans-serif;
}
.quill {
border: 2px solid var(--color-border);
}
#editor {
margin: 0;
}

10
src/Form/EditorType.php

@ -22,16 +22,16 @@ class EditorType extends AbstractType @@ -22,16 +22,16 @@ class EditorType extends AbstractType
// create a form with a title field, a QuillType content field and a submit button
$builder
->add('title', TextType::class, [
'required' => false,
'required' => true,
'sanitize_html' => true,
'attr' => ['placeholder' => 'Awesome article', 'class' => 'form-control']])
'attr' => ['placeholder' => 'Awesome title', 'class' => 'form-control']])
->add('summary', TextareaType::class, [
'required' => false,
'sanitize_html' => true,
'attr' => ['class' => 'form-control']])
->add('content', QuillType::class, [
'required' => false,
'attr' => ['placeholder' => 'Enter content', 'class' => 'form-control']])
'required' => true,
'attr' => ['placeholder' => 'Write content', 'class' => 'form-control']])
->add('image', UrlType::class, [
'required' => false,
'label' => 'Cover image URL',
@ -40,7 +40,7 @@ class EditorType extends AbstractType @@ -40,7 +40,7 @@ class EditorType extends AbstractType
'required' => false,
'sanitize_html' => true,
'help' => 'Separate tags with commas, skip #',
'attr' => ['placeholder' => 'Enter tags', 'class' => 'form-control']]);
'attr' => ['placeholder' => 'Add tags', 'class' => 'form-control']]);
// Apply the custom transformer
$builder->get('topics')

3
templates/pages/editor.html.twig

@ -23,16 +23,13 @@ @@ -23,16 +23,13 @@
{{ form_start(form) }}
<!-- Override the submit button to use Nostr publishing -->
{{ form_row(form.title) }}
{{ form_row(form.summary) }}
{{ form_row(form.content) }}
{{ form_row(form.image) }}
{{ form_row(form.topics) }}
<!-- Custom actions section with Nostr publish button -->
<div class="actions">
<!-- Replace the default submit button with Nostr publish button -->
<button type="button"
class="btn btn-primary"
data-nostr-publish-target="publishButton"

Loading…
Cancel
Save