From fdcc714dea288c096e51fec56cd8f8211b35afda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Lohrer?= Date: Mon, 24 Mar 2025 13:54:35 +0100 Subject: [PATCH] wordpress-plugin manus v1 --- CHANGELOG.md | 191 +++ DOCUMENTATION-DE.md | 175 +++ README-ENHANCED.md | 115 ++ README.md | 77 ++ assets/css/admin.css | 149 +++ assets/css/frontend.css | 37 + assets/js/admin.js | 372 ++++++ composer.json | 15 +- composer.lock | 596 +-------- debug.php | 49 - import.php | 42 - lib/spyc.php | 22 - markdown-parser-wp.php | 342 +++++ md2json-symfony.php | 51 - src/Admin.php | 391 ++++++ src/BlocksConverter.php | 420 ++++++ src/MarkdownParser.php | 239 ++++ src/PostCreator.php | 283 ++++ src/Shortcodes.php | 82 ++ test-enhanced-functionality.php | 147 ++ test-enhanced.php | 166 +++ test-fixed.php | 197 +++ test-output-content.md | 73 + test-output-metadata.json | 46 + test-standalone.php | 183 +++ test.php | 80 ++ vendor/autoload.php | 2 +- vendor/composer/autoload_classmap.php | 66 - vendor/composer/autoload_files.php | 1 - vendor/composer/autoload_namespaces.php | 1 + vendor/composer/autoload_psr4.php | 7 +- vendor/composer/autoload_real.php | 10 +- vendor/composer/autoload_static.php | 122 +- vendor/composer/installed.json | 617 +-------- vendor/composer/installed.php | 99 +- vendor/composer/platform_check.php | 4 +- vendor/dflydev/dot-access-data/CHANGELOG.md | 74 -- vendor/dflydev/dot-access-data/LICENSE | 19 - vendor/dflydev/dot-access-data/README.md | 158 --- vendor/dflydev/dot-access-data/composer.json | 67 - vendor/dflydev/dot-access-data/src/Data.php | 286 ---- .../dot-access-data/src/DataInterface.php | 131 -- .../src/Exception/DataException.php | 21 - .../src/Exception/InvalidPathException.php | 21 - .../src/Exception/MissingPathException.php | 37 - vendor/dflydev/dot-access-data/src/Util.php | 78 -- vendor/erusev/parsedown/LICENSE.txt | 20 + .../erusev/parsedown}/Parsedown.php | 1180 +++++++---------- vendor/erusev/parsedown/README.md | 86 ++ vendor/erusev/parsedown/composer.json | 33 + vendor/league/commonmark/.phpstorm.meta.php | 106 -- vendor/league/commonmark/CHANGELOG.md | 727 ---------- vendor/league/commonmark/LICENSE | 28 - vendor/league/commonmark/README.md | 223 ---- vendor/league/commonmark/composer.json | 128 -- .../commonmark/src/CommonMarkConverter.php | 46 - .../commonmark/src/ConverterInterface.php | 30 - .../commonmark/src/Delimiter/Bracket.php | 83 -- .../commonmark/src/Delimiter/Delimiter.php | 134 -- .../src/Delimiter/DelimiterInterface.php | 56 - .../src/Delimiter/DelimiterParser.php | 106 -- .../src/Delimiter/DelimiterStack.php | 396 ------ .../CacheableDelimiterProcessorInterface.php | 46 - .../DelimiterProcessorCollection.php | 89 -- .../DelimiterProcessorCollectionInterface.php | 46 - .../Processor/DelimiterProcessorInterface.php | 81 -- .../Processor/StaggeredDelimiterProcessor.php | 111 -- .../src/Environment/Environment.php | 448 ------- .../Environment/EnvironmentAwareInterface.php | 19 - .../EnvironmentBuilderInterface.php | 97 -- .../src/Environment/EnvironmentInterface.php | 55 - .../commonmark/src/Event/AbstractEvent.php | 54 - .../src/Event/DocumentParsedEvent.php | 35 - .../src/Event/DocumentPreParsedEvent.php | 49 - .../src/Event/DocumentPreRenderEvent.php | 44 - .../src/Event/DocumentRenderedEvent.php | 42 - .../commonmark/src/Event/ListenerData.php | 50 - .../Exception/AlreadyInitializedException.php | 18 - .../src/Exception/CommonMarkException.php | 21 - .../commonmark/src/Exception/IOException.php | 18 - .../Exception/InvalidArgumentException.php | 18 - .../src/Exception/LogicException.php | 18 - .../Exception/MissingDependencyException.php | 18 - .../Exception/UnexpectedEncodingException.php | 18 - .../Attributes/AttributesExtension.php | 32 - .../Attributes/Event/AttributesListener.php | 139 -- .../Extension/Attributes/Node/Attributes.php | 65 - .../Attributes/Node/AttributesInline.php | 57 - .../Parser/AttributesBlockContinueParser.php | 92 -- .../Parser/AttributesBlockStartParser.php | 40 - .../Parser/AttributesInlineParser.php | 54 - .../Attributes/Util/AttributesHelper.php | 142 -- .../Extension/Autolink/AutolinkExtension.php | 39 - .../Autolink/EmailAutolinkParser.php | 48 - .../Extension/Autolink/UrlAutolinkParser.php | 157 --- .../CommonMark/CommonMarkCoreExtension.php | 92 -- .../Processor/EmphasisDelimiterProcessor.php | 119 -- .../CommonMark/Node/Block/BlockQuote.php | 20 - .../CommonMark/Node/Block/FencedCode.php | 100 -- .../CommonMark/Node/Block/Heading.php | 41 - .../CommonMark/Node/Block/HtmlBlock.php | 79 -- .../CommonMark/Node/Block/IndentedCode.php | 32 - .../CommonMark/Node/Block/ListBlock.php | 56 - .../CommonMark/Node/Block/ListData.php | 47 - .../CommonMark/Node/Block/ListItem.php | 37 - .../CommonMark/Node/Block/ThematicBreak.php | 20 - .../Node/Inline/AbstractWebResource.php | 41 - .../Extension/CommonMark/Node/Inline/Code.php | 23 - .../CommonMark/Node/Inline/Emphasis.php | 42 - .../CommonMark/Node/Inline/HtmlInline.php | 24 - .../CommonMark/Node/Inline/Image.php | 49 - .../Extension/CommonMark/Node/Inline/Link.php | 49 - .../CommonMark/Node/Inline/Strong.php | 42 - .../Parser/Block/BlockQuoteParser.php | 60 - .../Parser/Block/BlockQuoteStartParser.php | 39 - .../Parser/Block/FencedCodeParser.php | 84 -- .../Parser/Block/FencedCodeStartParser.php | 40 - .../CommonMark/Parser/Block/HeadingParser.php | 51 - .../Parser/Block/HeadingStartParser.php | 80 -- .../Parser/Block/HtmlBlockParser.php | 82 -- .../Parser/Block/HtmlBlockStartParser.php | 62 - .../Parser/Block/IndentedCodeParser.php | 76 -- .../Parser/Block/IndentedCodeStartParser.php | 42 - .../Parser/Block/ListBlockParser.php | 93 -- .../Parser/Block/ListBlockStartParser.php | 154 --- .../Parser/Block/ListItemParser.php | 82 -- .../Parser/Block/ThematicBreakParser.php | 42 - .../Parser/Block/ThematicBreakStartParser.php | 40 - .../Parser/Inline/AutolinkParser.php | 54 - .../Parser/Inline/BacktickParser.php | 132 -- .../CommonMark/Parser/Inline/BangParser.php | 44 - .../Parser/Inline/CloseBracketParser.php | 214 --- .../CommonMark/Parser/Inline/EntityParser.php | 42 - .../Parser/Inline/EscapableParser.php | 57 - .../Parser/Inline/HtmlInlineParser.php | 41 - .../Parser/Inline/OpenBracketParser.php | 42 - .../Renderer/Block/BlockQuoteRenderer.php | 70 - .../Renderer/Block/FencedCodeRenderer.php | 81 -- .../Renderer/Block/HeadingRenderer.php | 64 - .../Renderer/Block/HtmlBlockRenderer.php | 66 - .../Renderer/Block/IndentedCodeRenderer.php | 61 - .../Renderer/Block/ListBlockRenderer.php | 86 -- .../Renderer/Block/ListItemRenderer.php | 80 -- .../Renderer/Block/ThematicBreakRenderer.php | 56 - .../Renderer/Inline/CodeRenderer.php | 57 - .../Renderer/Inline/EmphasisRenderer.php | 56 - .../Renderer/Inline/HtmlInlineRenderer.php | 66 - .../Renderer/Inline/ImageRenderer.php | 107 -- .../Renderer/Inline/LinkRenderer.php | 89 -- .../Renderer/Inline/StrongRenderer.php | 56 - .../ConfigurableExtensionInterface.php | 21 - .../ApplyDefaultAttributesProcessor.php | 65 - .../DefaultAttributesExtension.php | 39 - .../DescriptionListExtension.php | 42 - .../ConsecutiveDescriptionListMerger.php | 41 - .../Event/LooseDescriptionHandler.php | 66 - .../DescriptionList/Node/Description.php | 39 - .../DescriptionList/Node/DescriptionList.php | 20 - .../DescriptionList/Node/DescriptionTerm.php | 20 - .../Parser/DescriptionContinueParser.php | 71 - .../Parser/DescriptionListContinueParser.php | 53 - .../Parser/DescriptionStartParser.php | 73 - .../Parser/DescriptionTermContinueParser.php | 52 - .../Renderer/DescriptionListRenderer.php | 39 - .../Renderer/DescriptionRenderer.php | 37 - .../Renderer/DescriptionTermRenderer.php | 37 - .../DisallowedRawHtmlExtension.php | 51 - .../DisallowedRawHtmlRenderer.php | 62 - .../Embed/Bridge/OscaroteroEmbedAdapter.php | 50 - .../Embed/DomainFilteringAdapter.php | 53 - .../commonmark/src/Extension/Embed/Embed.php | 50 - .../Extension/Embed/EmbedAdapterInterface.php | 25 - .../src/Extension/Embed/EmbedExtension.php | 48 - .../src/Extension/Embed/EmbedParser.php | 62 - .../src/Extension/Embed/EmbedProcessor.php | 70 - .../src/Extension/Embed/EmbedRenderer.php | 35 - .../src/Extension/Embed/EmbedStartParser.php | 53 - .../src/Extension/ExtensionInterface.php | 24 - .../ExternalLink/ExternalLinkExtension.php | 47 - .../ExternalLink/ExternalLinkProcessor.php | 119 -- .../Event/AnonymousFootnotesListener.php | 62 - .../FixOrphanedFootnotesAndRefsListener.php | 68 - .../Event/GatherFootnotesListener.php | 106 -- .../Event/NumberFootnotesListener.php | 75 -- .../Extension/Footnote/FootnoteExtension.php | 70 - .../src/Extension/Footnote/Node/Footnote.php | 37 - .../Footnote/Node/FootnoteBackref.php | 40 - .../Footnote/Node/FootnoteContainer.php | 21 - .../Extension/Footnote/Node/FootnoteRef.php | 57 - .../Parser/AnonymousFootnoteRefParser.php | 66 - .../Footnote/Parser/FootnoteParser.php | 68 - .../Footnote/Parser/FootnoteRefParser.php | 57 - .../Footnote/Parser/FootnoteStartParser.php | 56 - .../Renderer/FootnoteBackrefRenderer.php | 81 -- .../Renderer/FootnoteContainerRenderer.php | 71 - .../Footnote/Renderer/FootnoteRefRenderer.php | 87 -- .../Footnote/Renderer/FootnoteRenderer.php | 80 -- .../Data/FrontMatterDataParserInterface.php | 26 - .../Data/LibYamlFrontMatterParser.php | 47 - .../Data/SymfonyYamlFrontMatterParser.php | 39 - .../Exception/InvalidFrontMatterException.php | 24 - .../FrontMatter/FrontMatterExtension.php | 46 - .../FrontMatter/FrontMatterParser.php | 64 - .../FrontMatterParserInterface.php | 21 - .../FrontMatterProviderInterface.php | 22 - .../Input/MarkdownInputWithFrontMatter.php | 43 - .../FrontMatterPostRenderListener.php | 35 - .../Listener/FrontMatterPreParser.php | 37 - .../Output/RenderedContentWithFrontMatter.php | 51 - .../GithubFlavoredMarkdownExtension.php | 33 - .../HeadingPermalink/HeadingPermalink.php | 37 - .../HeadingPermalinkExtension.php | 49 - .../HeadingPermalinkProcessor.php | 101 -- .../HeadingPermalinkRenderer.php | 106 -- .../Extension/InlinesOnly/ChildRenderer.php | 35 - .../InlinesOnly/InlinesOnlyExtension.php | 73 - .../Mention/Generator/CallbackGenerator.php | 54 - .../Generator/MentionGeneratorInterface.php | 22 - .../Generator/StringTemplateLinkGenerator.php | 34 - .../src/Extension/Mention/Mention.php | 93 -- .../Extension/Mention/MentionExtension.php | 61 - .../src/Extension/Mention/MentionParser.php | 87 -- .../src/Extension/SmartPunct/DashParser.php | 59 - .../Extension/SmartPunct/EllipsesParser.php | 38 - .../src/Extension/SmartPunct/Quote.php | 30 - .../src/Extension/SmartPunct/QuoteParser.php | 98 -- .../Extension/SmartPunct/QuoteProcessor.php | 82 -- .../ReplaceUnpairedQuotesListener.php | 43 - .../SmartPunct/SmartPunctExtension.php | 64 - .../Extension/Strikethrough/Strikethrough.php | 39 - .../StrikethroughDelimiterProcessor.php | 69 - .../Strikethrough/StrikethroughExtension.php | 26 - .../Strikethrough/StrikethroughRenderer.php | 50 - .../commonmark/src/Extension/Table/Table.php | 22 - .../src/Extension/Table/TableCell.php | 99 -- .../src/Extension/Table/TableCellRenderer.php | 89 -- .../src/Extension/Table/TableExtension.php | 63 - .../src/Extension/Table/TableParser.php | 212 --- .../src/Extension/Table/TableRenderer.php | 58 - .../src/Extension/Table/TableRow.php | 22 - .../src/Extension/Table/TableRowRenderer.php | 56 - .../src/Extension/Table/TableSection.php | 64 - .../Extension/Table/TableSectionRenderer.php | 70 - .../src/Extension/Table/TableStartParser.php | 165 --- .../TableOfContents/Node/TableOfContents.php | 20 - .../Node/TableOfContentsPlaceholder.php | 20 - .../Normalizer/AsIsNormalizerStrategy.php | 72 - .../Normalizer/FlatNormalizerStrategy.php | 33 - .../NormalizerStrategyInterface.php | 21 - .../Normalizer/RelativeNormalizerStrategy.php | 67 - .../TableOfContentsBuilder.php | 106 -- .../TableOfContentsExtension.php | 53 - .../TableOfContentsGenerator.php | 168 --- .../TableOfContentsGeneratorInterface.php | 22 - .../TableOfContentsPlaceholderParser.php | 74 -- .../TableOfContentsPlaceholderRenderer.php | 40 - .../TableOfContentsRenderer.php | 56 - .../Extension/TaskList/TaskListExtension.php | 26 - .../Extension/TaskList/TaskListItemMarker.php | 39 - .../TaskList/TaskListItemMarkerParser.php | 55 - .../TaskList/TaskListItemMarkerRenderer.php | 70 - .../src/GithubFlavoredMarkdownConverter.php | 45 - .../commonmark/src/Input/MarkdownInput.php | 102 -- .../src/Input/MarkdownInputInterface.php | 26 - .../commonmark/src/MarkdownConverter.php | 93 -- .../src/MarkdownConverterInterface.php | 34 - .../src/Node/Block/AbstractBlock.php | 64 - .../commonmark/src/Node/Block/Document.php | 56 - .../commonmark/src/Node/Block/Paragraph.php | 23 - .../src/Node/Block/TightBlockInterface.php | 21 - .../src/Node/Inline/AbstractInline.php | 23 - .../Node/Inline/AbstractStringContainer.php | 47 - .../src/Node/Inline/AdjacentTextMerger.php | 105 -- .../src/Node/Inline/DelimitedInterface.php | 21 - .../commonmark/src/Node/Inline/Newline.php | 40 - .../commonmark/src/Node/Inline/Text.php | 25 - vendor/league/commonmark/src/Node/Node.php | 262 ---- .../commonmark/src/Node/NodeIterator.php | 58 - .../league/commonmark/src/Node/NodeWalker.php | 80 -- .../commonmark/src/Node/NodeWalkerEvent.php | 42 - vendor/league/commonmark/src/Node/Query.php | 139 -- .../commonmark/src/Node/Query/AndExpr.php | 55 - .../src/Node/Query/ExpressionInterface.php | 21 - .../commonmark/src/Node/Query/OrExpr.php | 55 - .../src/Node/RawMarkupContainerInterface.php | 21 - .../src/Node/StringContainerHelper.php | 54 - .../src/Node/StringContainerInterface.php | 27 - .../src/Normalizer/SlugNormalizer.php | 57 - .../src/Normalizer/TextNormalizer.php | 44 - .../Normalizer/TextNormalizerInterface.php | 33 - .../src/Normalizer/UniqueSlugNormalizer.php | 56 - .../UniqueSlugNormalizerInterface.php | 28 - .../commonmark/src/Output/RenderedContent.php | 49 - .../src/Output/RenderedContentInterface.php | 29 - .../Block/AbstractBlockContinueParser.php | 47 - .../src/Parser/Block/BlockContinue.php | 73 - .../Block/BlockContinueParserInterface.php | 64 - ...lockContinueParserWithInlinesInterface.php | 24 - .../src/Parser/Block/BlockStart.php | 124 -- .../Block/BlockStartParserInterface.php | 33 - .../src/Parser/Block/DocumentBlockParser.php | 80 -- .../src/Parser/Block/ParagraphParser.php | 85 -- .../SkipLinesStartingWithLettersParser.php | 45 - .../league/commonmark/src/Parser/Cursor.php | 494 ------- .../commonmark/src/Parser/CursorState.php | 56 - .../Parser/Inline/InlineParserInterface.php | 23 - .../src/Parser/Inline/InlineParserMatch.php | 87 -- .../src/Parser/Inline/NewlineParser.php | 53 - .../src/Parser/InlineParserContext.php | 120 -- .../src/Parser/InlineParserEngine.php | 177 --- .../Parser/InlineParserEngineInterface.php | 27 - .../commonmark/src/Parser/MarkdownParser.php | 356 ----- .../src/Parser/MarkdownParserInterface.php | 25 - .../src/Parser/MarkdownParserState.php | 57 - .../Parser/MarkdownParserStateInterface.php | 36 - .../src/Parser/ParserLogicException.php | 20 - .../Reference/MemoryLimitedReferenceMap.php | 68 - .../commonmark/src/Reference/Reference.php | 54 - .../src/Reference/ReferenceInterface.php | 29 - .../commonmark/src/Reference/ReferenceMap.php | 85 -- .../src/Reference/ReferenceMapInterface.php | 31 - .../src/Reference/ReferenceParser.php | 324 ----- .../src/Reference/ReferenceableInterface.php | 19 - .../src/Renderer/Block/DocumentRenderer.php | 57 - .../src/Renderer/Block/ParagraphRenderer.php | 74 -- .../Renderer/ChildNodeRendererInterface.php | 31 - .../Renderer/DocumentRendererInterface.php | 28 - .../commonmark/src/Renderer/HtmlDecorator.php | 45 - .../commonmark/src/Renderer/HtmlRenderer.php | 100 -- .../src/Renderer/Inline/NewlineRenderer.php | 76 -- .../src/Renderer/Inline/TextRenderer.php | 54 - .../Renderer/MarkdownRendererInterface.php | 30 - .../Renderer/NoMatchingRendererException.php | 20 - .../src/Renderer/NodeRendererInterface.php | 27 - .../commonmark/src/Util/ArrayCollection.php | 173 --- .../src/Util/Html5EntityDecoder.php | 75 -- .../commonmark/src/Util/HtmlElement.php | 160 --- .../league/commonmark/src/Util/HtmlFilter.php | 55 - .../commonmark/src/Util/LinkParserHelper.php | 165 --- .../commonmark/src/Util/PrioritizedList.php | 73 - .../commonmark/src/Util/RegexHelper.php | 243 ---- .../league/commonmark/src/Util/SpecReader.php | 72 - .../league/commonmark/src/Util/UrlEncoder.php | 69 - vendor/league/commonmark/src/Util/Xml.php | 33 - .../src/Xml/FallbackNodeXmlRenderer.php | 85 -- .../src/Xml/MarkdownToXmlConverter.php | 59 - .../src/Xml/XmlNodeRendererInterface.php | 28 - .../league/commonmark/src/Xml/XmlRenderer.php | 135 -- vendor/league/config/CHANGELOG.md | 42 - vendor/league/config/LICENSE.md | 28 - vendor/league/config/README.md | 153 --- vendor/league/config/composer.json | 69 - vendor/league/config/src/Configuration.php | 255 ---- .../src/ConfigurationAwareInterface.php | 22 - .../src/ConfigurationBuilderInterface.php | 21 - .../config/src/ConfigurationInterface.php | 46 - .../src/ConfigurationProviderInterface.php | 22 - .../ConfigurationExceptionInterface.php | 21 - .../InvalidConfigurationException.php | 46 - .../src/Exception/UnknownOptionException.php | 33 - .../src/Exception/ValidationException.php | 37 - .../src/MutableConfigurationInterface.php | 34 - .../config/src/ReadOnlyConfiguration.php | 40 - .../config/src/SchemaBuilderInterface.php | 27 - vendor/mnapoli/front-yaml/.gitattributes | 5 - vendor/mnapoli/front-yaml/.gitignore | 5 - vendor/mnapoli/front-yaml/LICENSE | 18 - vendor/mnapoli/front-yaml/README.md | 77 -- vendor/mnapoli/front-yaml/composer.json | 22 - vendor/mnapoli/front-yaml/phpunit.xml.dist | 21 - .../Bridge/CommonMark/CommonMarkParser.php | 25 - .../src/Bridge/Symfony/SymfonyYAMLParser.php | 24 - vendor/mnapoli/front-yaml/src/Document.php | 37 - .../src/Markdown/MarkdownParser.php | 18 - vendor/mnapoli/front-yaml/src/Parser.php | 71 - .../front-yaml/src/YAML/YAMLParser.php | 16 - vendor/nette/schema/composer.json | 39 - vendor/nette/schema/license.md | 60 - vendor/nette/schema/readme.md | 537 -------- vendor/nette/schema/src/Schema/Context.php | 51 - .../schema/src/Schema/DynamicParameter.php | 15 - .../schema/src/Schema/Elements/AnyOf.php | 147 -- .../nette/schema/src/Schema/Elements/Base.php | 162 --- .../schema/src/Schema/Elements/Structure.php | 210 --- .../nette/schema/src/Schema/Elements/Type.php | 208 --- vendor/nette/schema/src/Schema/Expect.php | 118 -- vendor/nette/schema/src/Schema/Helpers.php | 183 --- vendor/nette/schema/src/Schema/Message.php | 98 -- vendor/nette/schema/src/Schema/Processor.php | 96 -- vendor/nette/schema/src/Schema/Schema.php | 37 - .../schema/src/Schema/ValidationException.php | 55 - vendor/nette/utils/.phpstorm.meta.php | 13 - vendor/nette/utils/composer.json | 51 - vendor/nette/utils/license.md | 60 - vendor/nette/utils/readme.md | 55 - vendor/nette/utils/src/HtmlStringable.php | 22 - .../utils/src/Iterators/CachingIterator.php | 150 --- vendor/nette/utils/src/Iterators/Mapper.php | 33 - vendor/nette/utils/src/SmartObject.php | 140 -- vendor/nette/utils/src/StaticClass.php | 34 - vendor/nette/utils/src/Translator.php | 25 - vendor/nette/utils/src/Utils/ArrayHash.php | 106 -- vendor/nette/utils/src/Utils/ArrayList.php | 136 -- vendor/nette/utils/src/Utils/Arrays.php | 553 -------- vendor/nette/utils/src/Utils/Callback.php | 137 -- vendor/nette/utils/src/Utils/DateTime.php | 140 -- vendor/nette/utils/src/Utils/FileInfo.php | 69 - vendor/nette/utils/src/Utils/FileSystem.php | 326 ----- vendor/nette/utils/src/Utils/Finder.php | 510 ------- vendor/nette/utils/src/Utils/Floats.php | 107 -- vendor/nette/utils/src/Utils/Helpers.php | 104 -- vendor/nette/utils/src/Utils/Html.php | 839 ------------ vendor/nette/utils/src/Utils/Image.php | 831 ------------ vendor/nette/utils/src/Utils/ImageColor.php | 75 -- vendor/nette/utils/src/Utils/ImageType.php | 25 - vendor/nette/utils/src/Utils/Iterables.php | 238 ---- vendor/nette/utils/src/Utils/Json.php | 84 -- .../nette/utils/src/Utils/ObjectHelpers.php | 229 ---- vendor/nette/utils/src/Utils/Paginator.php | 245 ---- vendor/nette/utils/src/Utils/Random.php | 52 - vendor/nette/utils/src/Utils/Reflection.php | 322 ----- .../utils/src/Utils/ReflectionMethod.php | 36 - vendor/nette/utils/src/Utils/Strings.php | 728 ---------- vendor/nette/utils/src/Utils/Type.php | 267 ---- vendor/nette/utils/src/Utils/Validators.php | 416 ------ vendor/nette/utils/src/Utils/exceptions.php | 50 - vendor/nette/utils/src/compatibility.php | 32 - vendor/nette/utils/src/exceptions.php | 109 -- vendor/psr/event-dispatcher/.editorconfig | 15 - vendor/psr/event-dispatcher/.gitignore | 2 - vendor/psr/event-dispatcher/LICENSE | 21 - vendor/psr/event-dispatcher/README.md | 6 - vendor/psr/event-dispatcher/composer.json | 26 - .../src/EventDispatcherInterface.php | 21 - .../src/ListenerProviderInterface.php | 19 - .../src/StoppableEventInterface.php | 26 - vendor/symfony/polyfill-php80/LICENSE | 19 - vendor/symfony/polyfill-php80/Php80.php | 115 -- vendor/symfony/polyfill-php80/PhpToken.php | 103 -- vendor/symfony/polyfill-php80/README.md | 25 - .../Resources/stubs/Attribute.php | 31 - .../Resources/stubs/PhpToken.php | 16 - .../Resources/stubs/Stringable.php | 20 - .../Resources/stubs/UnhandledMatchError.php | 16 - .../Resources/stubs/ValueError.php | 16 - vendor/symfony/polyfill-php80/bootstrap.php | 42 - vendor/symfony/polyfill-php80/composer.json | 37 - vendor/symfony/yaml/CHANGELOG.md | 31 - vendor/symfony/yaml/Command/LintCommand.php | 98 +- vendor/symfony/yaml/Dumper.php | 58 +- vendor/symfony/yaml/Escaper.php | 6 +- .../symfony/yaml/Exception/ParseException.php | 49 +- vendor/symfony/yaml/Inline.php | 286 ++-- vendor/symfony/yaml/Parser.php | 202 +-- vendor/symfony/yaml/Tag/TaggedValue.php | 13 +- vendor/symfony/yaml/Unescaper.php | 82 +- vendor/symfony/yaml/Yaml.php | 27 +- vendor/symfony/yaml/composer.json | 11 +- 458 files changed, 4939 insertions(+), 35448 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 DOCUMENTATION-DE.md create mode 100644 README-ENHANCED.md create mode 100644 assets/css/admin.css create mode 100644 assets/css/frontend.css create mode 100644 assets/js/admin.js delete mode 100644 debug.php delete mode 100644 import.php delete mode 100644 lib/spyc.php create mode 100644 markdown-parser-wp.php delete mode 100644 md2json-symfony.php create mode 100644 src/Admin.php create mode 100644 src/BlocksConverter.php create mode 100644 src/MarkdownParser.php create mode 100644 src/PostCreator.php create mode 100644 src/Shortcodes.php create mode 100644 test-enhanced-functionality.php create mode 100644 test-enhanced.php create mode 100644 test-fixed.php create mode 100644 test-output-content.md create mode 100644 test-output-metadata.json create mode 100644 test-standalone.php create mode 100644 test.php delete mode 100644 vendor/dflydev/dot-access-data/CHANGELOG.md delete mode 100644 vendor/dflydev/dot-access-data/LICENSE delete mode 100644 vendor/dflydev/dot-access-data/README.md delete mode 100644 vendor/dflydev/dot-access-data/composer.json delete mode 100644 vendor/dflydev/dot-access-data/src/Data.php delete mode 100644 vendor/dflydev/dot-access-data/src/DataInterface.php delete mode 100644 vendor/dflydev/dot-access-data/src/Exception/DataException.php delete mode 100644 vendor/dflydev/dot-access-data/src/Exception/InvalidPathException.php delete mode 100644 vendor/dflydev/dot-access-data/src/Exception/MissingPathException.php delete mode 100644 vendor/dflydev/dot-access-data/src/Util.php create mode 100644 vendor/erusev/parsedown/LICENSE.txt rename {lib => vendor/erusev/parsedown}/Parsedown.php (51%) create mode 100644 vendor/erusev/parsedown/README.md create mode 100644 vendor/erusev/parsedown/composer.json delete mode 100644 vendor/league/commonmark/.phpstorm.meta.php delete mode 100644 vendor/league/commonmark/CHANGELOG.md delete mode 100644 vendor/league/commonmark/LICENSE delete mode 100644 vendor/league/commonmark/README.md delete mode 100644 vendor/league/commonmark/composer.json delete mode 100644 vendor/league/commonmark/src/CommonMarkConverter.php delete mode 100644 vendor/league/commonmark/src/ConverterInterface.php delete mode 100644 vendor/league/commonmark/src/Delimiter/Bracket.php delete mode 100644 vendor/league/commonmark/src/Delimiter/Delimiter.php delete mode 100644 vendor/league/commonmark/src/Delimiter/DelimiterInterface.php delete mode 100644 vendor/league/commonmark/src/Delimiter/DelimiterParser.php delete mode 100644 vendor/league/commonmark/src/Delimiter/DelimiterStack.php delete mode 100644 vendor/league/commonmark/src/Delimiter/Processor/CacheableDelimiterProcessorInterface.php delete mode 100644 vendor/league/commonmark/src/Delimiter/Processor/DelimiterProcessorCollection.php delete mode 100644 vendor/league/commonmark/src/Delimiter/Processor/DelimiterProcessorCollectionInterface.php delete mode 100644 vendor/league/commonmark/src/Delimiter/Processor/DelimiterProcessorInterface.php delete mode 100644 vendor/league/commonmark/src/Delimiter/Processor/StaggeredDelimiterProcessor.php delete mode 100644 vendor/league/commonmark/src/Environment/Environment.php delete mode 100644 vendor/league/commonmark/src/Environment/EnvironmentAwareInterface.php delete mode 100644 vendor/league/commonmark/src/Environment/EnvironmentBuilderInterface.php delete mode 100644 vendor/league/commonmark/src/Environment/EnvironmentInterface.php delete mode 100644 vendor/league/commonmark/src/Event/AbstractEvent.php delete mode 100644 vendor/league/commonmark/src/Event/DocumentParsedEvent.php delete mode 100644 vendor/league/commonmark/src/Event/DocumentPreParsedEvent.php delete mode 100644 vendor/league/commonmark/src/Event/DocumentPreRenderEvent.php delete mode 100644 vendor/league/commonmark/src/Event/DocumentRenderedEvent.php delete mode 100644 vendor/league/commonmark/src/Event/ListenerData.php delete mode 100644 vendor/league/commonmark/src/Exception/AlreadyInitializedException.php delete mode 100644 vendor/league/commonmark/src/Exception/CommonMarkException.php delete mode 100644 vendor/league/commonmark/src/Exception/IOException.php delete mode 100644 vendor/league/commonmark/src/Exception/InvalidArgumentException.php delete mode 100644 vendor/league/commonmark/src/Exception/LogicException.php delete mode 100644 vendor/league/commonmark/src/Exception/MissingDependencyException.php delete mode 100644 vendor/league/commonmark/src/Exception/UnexpectedEncodingException.php delete mode 100644 vendor/league/commonmark/src/Extension/Attributes/AttributesExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/Attributes/Event/AttributesListener.php delete mode 100644 vendor/league/commonmark/src/Extension/Attributes/Node/Attributes.php delete mode 100644 vendor/league/commonmark/src/Extension/Attributes/Node/AttributesInline.php delete mode 100644 vendor/league/commonmark/src/Extension/Attributes/Parser/AttributesBlockContinueParser.php delete mode 100644 vendor/league/commonmark/src/Extension/Attributes/Parser/AttributesBlockStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/Attributes/Parser/AttributesInlineParser.php delete mode 100644 vendor/league/commonmark/src/Extension/Attributes/Util/AttributesHelper.php delete mode 100644 vendor/league/commonmark/src/Extension/Autolink/AutolinkExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/Autolink/EmailAutolinkParser.php delete mode 100644 vendor/league/commonmark/src/Extension/Autolink/UrlAutolinkParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/CommonMarkCoreExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Delimiter/Processor/EmphasisDelimiterProcessor.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Block/BlockQuote.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Block/FencedCode.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Block/Heading.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Block/HtmlBlock.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Block/IndentedCode.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Block/ListBlock.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Block/ListData.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Block/ListItem.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Block/ThematicBreak.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Inline/AbstractWebResource.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Inline/Code.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Inline/Emphasis.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Inline/HtmlInline.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Inline/Image.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Inline/Link.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Inline/Strong.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/BlockQuoteParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/BlockQuoteStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/FencedCodeParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/FencedCodeStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/HeadingParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/HeadingStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/HtmlBlockParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/HtmlBlockStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/IndentedCodeParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/IndentedCodeStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/ListBlockParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/ListBlockStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/ListItemParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/ThematicBreakParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/ThematicBreakStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/AutolinkParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/BacktickParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/BangParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/CloseBracketParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/EntityParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/EscapableParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/HtmlInlineParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/OpenBracketParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Block/BlockQuoteRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Block/FencedCodeRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Block/HeadingRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Block/HtmlBlockRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Block/IndentedCodeRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Block/ListBlockRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Block/ListItemRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Block/ThematicBreakRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Inline/CodeRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Inline/EmphasisRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Inline/HtmlInlineRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Inline/ImageRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Inline/LinkRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Inline/StrongRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/ConfigurableExtensionInterface.php delete mode 100644 vendor/league/commonmark/src/Extension/DefaultAttributes/ApplyDefaultAttributesProcessor.php delete mode 100644 vendor/league/commonmark/src/Extension/DefaultAttributes/DefaultAttributesExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/DescriptionListExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Event/ConsecutiveDescriptionListMerger.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Event/LooseDescriptionHandler.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Node/Description.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Node/DescriptionList.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Node/DescriptionTerm.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Parser/DescriptionContinueParser.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Parser/DescriptionListContinueParser.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Parser/DescriptionStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Parser/DescriptionTermContinueParser.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Renderer/DescriptionListRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Renderer/DescriptionRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Renderer/DescriptionTermRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/DisallowedRawHtml/DisallowedRawHtmlExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/DisallowedRawHtml/DisallowedRawHtmlRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/Embed/Bridge/OscaroteroEmbedAdapter.php delete mode 100644 vendor/league/commonmark/src/Extension/Embed/DomainFilteringAdapter.php delete mode 100644 vendor/league/commonmark/src/Extension/Embed/Embed.php delete mode 100644 vendor/league/commonmark/src/Extension/Embed/EmbedAdapterInterface.php delete mode 100644 vendor/league/commonmark/src/Extension/Embed/EmbedExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/Embed/EmbedParser.php delete mode 100644 vendor/league/commonmark/src/Extension/Embed/EmbedProcessor.php delete mode 100644 vendor/league/commonmark/src/Extension/Embed/EmbedRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/Embed/EmbedStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/ExtensionInterface.php delete mode 100644 vendor/league/commonmark/src/Extension/ExternalLink/ExternalLinkExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/ExternalLink/ExternalLinkProcessor.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Event/AnonymousFootnotesListener.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Event/FixOrphanedFootnotesAndRefsListener.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Event/GatherFootnotesListener.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Event/NumberFootnotesListener.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/FootnoteExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Node/Footnote.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Node/FootnoteBackref.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Node/FootnoteContainer.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Node/FootnoteRef.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Parser/AnonymousFootnoteRefParser.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Parser/FootnoteParser.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Parser/FootnoteRefParser.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Parser/FootnoteStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Renderer/FootnoteBackrefRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Renderer/FootnoteContainerRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Renderer/FootnoteRefRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Renderer/FootnoteRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/Data/FrontMatterDataParserInterface.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/Data/LibYamlFrontMatterParser.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/Data/SymfonyYamlFrontMatterParser.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/Exception/InvalidFrontMatterException.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/FrontMatterExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/FrontMatterParser.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/FrontMatterParserInterface.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/FrontMatterProviderInterface.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/Input/MarkdownInputWithFrontMatter.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/Listener/FrontMatterPostRenderListener.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/Listener/FrontMatterPreParser.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/Output/RenderedContentWithFrontMatter.php delete mode 100644 vendor/league/commonmark/src/Extension/GithubFlavoredMarkdownExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/HeadingPermalink/HeadingPermalink.php delete mode 100644 vendor/league/commonmark/src/Extension/HeadingPermalink/HeadingPermalinkExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/HeadingPermalink/HeadingPermalinkProcessor.php delete mode 100644 vendor/league/commonmark/src/Extension/HeadingPermalink/HeadingPermalinkRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/InlinesOnly/ChildRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/InlinesOnly/InlinesOnlyExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/Mention/Generator/CallbackGenerator.php delete mode 100644 vendor/league/commonmark/src/Extension/Mention/Generator/MentionGeneratorInterface.php delete mode 100644 vendor/league/commonmark/src/Extension/Mention/Generator/StringTemplateLinkGenerator.php delete mode 100644 vendor/league/commonmark/src/Extension/Mention/Mention.php delete mode 100644 vendor/league/commonmark/src/Extension/Mention/MentionExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/Mention/MentionParser.php delete mode 100644 vendor/league/commonmark/src/Extension/SmartPunct/DashParser.php delete mode 100644 vendor/league/commonmark/src/Extension/SmartPunct/EllipsesParser.php delete mode 100644 vendor/league/commonmark/src/Extension/SmartPunct/Quote.php delete mode 100644 vendor/league/commonmark/src/Extension/SmartPunct/QuoteParser.php delete mode 100644 vendor/league/commonmark/src/Extension/SmartPunct/QuoteProcessor.php delete mode 100644 vendor/league/commonmark/src/Extension/SmartPunct/ReplaceUnpairedQuotesListener.php delete mode 100644 vendor/league/commonmark/src/Extension/SmartPunct/SmartPunctExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/Strikethrough/Strikethrough.php delete mode 100644 vendor/league/commonmark/src/Extension/Strikethrough/StrikethroughDelimiterProcessor.php delete mode 100644 vendor/league/commonmark/src/Extension/Strikethrough/StrikethroughExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/Strikethrough/StrikethroughRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/Table/Table.php delete mode 100644 vendor/league/commonmark/src/Extension/Table/TableCell.php delete mode 100644 vendor/league/commonmark/src/Extension/Table/TableCellRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/Table/TableExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/Table/TableParser.php delete mode 100644 vendor/league/commonmark/src/Extension/Table/TableRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/Table/TableRow.php delete mode 100644 vendor/league/commonmark/src/Extension/Table/TableRowRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/Table/TableSection.php delete mode 100644 vendor/league/commonmark/src/Extension/Table/TableSectionRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/Table/TableStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/Node/TableOfContents.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/Node/TableOfContentsPlaceholder.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/Normalizer/AsIsNormalizerStrategy.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/Normalizer/FlatNormalizerStrategy.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/Normalizer/NormalizerStrategyInterface.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/Normalizer/RelativeNormalizerStrategy.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/TableOfContentsBuilder.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/TableOfContentsExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/TableOfContentsGenerator.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/TableOfContentsGeneratorInterface.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/TableOfContentsPlaceholderParser.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/TableOfContentsPlaceholderRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/TableOfContentsRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/TaskList/TaskListExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/TaskList/TaskListItemMarker.php delete mode 100644 vendor/league/commonmark/src/Extension/TaskList/TaskListItemMarkerParser.php delete mode 100644 vendor/league/commonmark/src/Extension/TaskList/TaskListItemMarkerRenderer.php delete mode 100644 vendor/league/commonmark/src/GithubFlavoredMarkdownConverter.php delete mode 100644 vendor/league/commonmark/src/Input/MarkdownInput.php delete mode 100644 vendor/league/commonmark/src/Input/MarkdownInputInterface.php delete mode 100644 vendor/league/commonmark/src/MarkdownConverter.php delete mode 100644 vendor/league/commonmark/src/MarkdownConverterInterface.php delete mode 100644 vendor/league/commonmark/src/Node/Block/AbstractBlock.php delete mode 100644 vendor/league/commonmark/src/Node/Block/Document.php delete mode 100644 vendor/league/commonmark/src/Node/Block/Paragraph.php delete mode 100644 vendor/league/commonmark/src/Node/Block/TightBlockInterface.php delete mode 100644 vendor/league/commonmark/src/Node/Inline/AbstractInline.php delete mode 100644 vendor/league/commonmark/src/Node/Inline/AbstractStringContainer.php delete mode 100644 vendor/league/commonmark/src/Node/Inline/AdjacentTextMerger.php delete mode 100644 vendor/league/commonmark/src/Node/Inline/DelimitedInterface.php delete mode 100644 vendor/league/commonmark/src/Node/Inline/Newline.php delete mode 100644 vendor/league/commonmark/src/Node/Inline/Text.php delete mode 100644 vendor/league/commonmark/src/Node/Node.php delete mode 100644 vendor/league/commonmark/src/Node/NodeIterator.php delete mode 100644 vendor/league/commonmark/src/Node/NodeWalker.php delete mode 100644 vendor/league/commonmark/src/Node/NodeWalkerEvent.php delete mode 100644 vendor/league/commonmark/src/Node/Query.php delete mode 100644 vendor/league/commonmark/src/Node/Query/AndExpr.php delete mode 100644 vendor/league/commonmark/src/Node/Query/ExpressionInterface.php delete mode 100644 vendor/league/commonmark/src/Node/Query/OrExpr.php delete mode 100644 vendor/league/commonmark/src/Node/RawMarkupContainerInterface.php delete mode 100644 vendor/league/commonmark/src/Node/StringContainerHelper.php delete mode 100644 vendor/league/commonmark/src/Node/StringContainerInterface.php delete mode 100644 vendor/league/commonmark/src/Normalizer/SlugNormalizer.php delete mode 100644 vendor/league/commonmark/src/Normalizer/TextNormalizer.php delete mode 100644 vendor/league/commonmark/src/Normalizer/TextNormalizerInterface.php delete mode 100644 vendor/league/commonmark/src/Normalizer/UniqueSlugNormalizer.php delete mode 100644 vendor/league/commonmark/src/Normalizer/UniqueSlugNormalizerInterface.php delete mode 100644 vendor/league/commonmark/src/Output/RenderedContent.php delete mode 100644 vendor/league/commonmark/src/Output/RenderedContentInterface.php delete mode 100644 vendor/league/commonmark/src/Parser/Block/AbstractBlockContinueParser.php delete mode 100644 vendor/league/commonmark/src/Parser/Block/BlockContinue.php delete mode 100644 vendor/league/commonmark/src/Parser/Block/BlockContinueParserInterface.php delete mode 100644 vendor/league/commonmark/src/Parser/Block/BlockContinueParserWithInlinesInterface.php delete mode 100644 vendor/league/commonmark/src/Parser/Block/BlockStart.php delete mode 100644 vendor/league/commonmark/src/Parser/Block/BlockStartParserInterface.php delete mode 100644 vendor/league/commonmark/src/Parser/Block/DocumentBlockParser.php delete mode 100644 vendor/league/commonmark/src/Parser/Block/ParagraphParser.php delete mode 100644 vendor/league/commonmark/src/Parser/Block/SkipLinesStartingWithLettersParser.php delete mode 100644 vendor/league/commonmark/src/Parser/Cursor.php delete mode 100644 vendor/league/commonmark/src/Parser/CursorState.php delete mode 100644 vendor/league/commonmark/src/Parser/Inline/InlineParserInterface.php delete mode 100644 vendor/league/commonmark/src/Parser/Inline/InlineParserMatch.php delete mode 100644 vendor/league/commonmark/src/Parser/Inline/NewlineParser.php delete mode 100644 vendor/league/commonmark/src/Parser/InlineParserContext.php delete mode 100644 vendor/league/commonmark/src/Parser/InlineParserEngine.php delete mode 100644 vendor/league/commonmark/src/Parser/InlineParserEngineInterface.php delete mode 100644 vendor/league/commonmark/src/Parser/MarkdownParser.php delete mode 100644 vendor/league/commonmark/src/Parser/MarkdownParserInterface.php delete mode 100644 vendor/league/commonmark/src/Parser/MarkdownParserState.php delete mode 100644 vendor/league/commonmark/src/Parser/MarkdownParserStateInterface.php delete mode 100644 vendor/league/commonmark/src/Parser/ParserLogicException.php delete mode 100644 vendor/league/commonmark/src/Reference/MemoryLimitedReferenceMap.php delete mode 100644 vendor/league/commonmark/src/Reference/Reference.php delete mode 100644 vendor/league/commonmark/src/Reference/ReferenceInterface.php delete mode 100644 vendor/league/commonmark/src/Reference/ReferenceMap.php delete mode 100644 vendor/league/commonmark/src/Reference/ReferenceMapInterface.php delete mode 100644 vendor/league/commonmark/src/Reference/ReferenceParser.php delete mode 100644 vendor/league/commonmark/src/Reference/ReferenceableInterface.php delete mode 100644 vendor/league/commonmark/src/Renderer/Block/DocumentRenderer.php delete mode 100644 vendor/league/commonmark/src/Renderer/Block/ParagraphRenderer.php delete mode 100644 vendor/league/commonmark/src/Renderer/ChildNodeRendererInterface.php delete mode 100644 vendor/league/commonmark/src/Renderer/DocumentRendererInterface.php delete mode 100644 vendor/league/commonmark/src/Renderer/HtmlDecorator.php delete mode 100644 vendor/league/commonmark/src/Renderer/HtmlRenderer.php delete mode 100644 vendor/league/commonmark/src/Renderer/Inline/NewlineRenderer.php delete mode 100644 vendor/league/commonmark/src/Renderer/Inline/TextRenderer.php delete mode 100644 vendor/league/commonmark/src/Renderer/MarkdownRendererInterface.php delete mode 100644 vendor/league/commonmark/src/Renderer/NoMatchingRendererException.php delete mode 100644 vendor/league/commonmark/src/Renderer/NodeRendererInterface.php delete mode 100644 vendor/league/commonmark/src/Util/ArrayCollection.php delete mode 100644 vendor/league/commonmark/src/Util/Html5EntityDecoder.php delete mode 100644 vendor/league/commonmark/src/Util/HtmlElement.php delete mode 100644 vendor/league/commonmark/src/Util/HtmlFilter.php delete mode 100644 vendor/league/commonmark/src/Util/LinkParserHelper.php delete mode 100644 vendor/league/commonmark/src/Util/PrioritizedList.php delete mode 100644 vendor/league/commonmark/src/Util/RegexHelper.php delete mode 100644 vendor/league/commonmark/src/Util/SpecReader.php delete mode 100644 vendor/league/commonmark/src/Util/UrlEncoder.php delete mode 100644 vendor/league/commonmark/src/Util/Xml.php delete mode 100644 vendor/league/commonmark/src/Xml/FallbackNodeXmlRenderer.php delete mode 100644 vendor/league/commonmark/src/Xml/MarkdownToXmlConverter.php delete mode 100644 vendor/league/commonmark/src/Xml/XmlNodeRendererInterface.php delete mode 100644 vendor/league/commonmark/src/Xml/XmlRenderer.php delete mode 100644 vendor/league/config/CHANGELOG.md delete mode 100644 vendor/league/config/LICENSE.md delete mode 100644 vendor/league/config/README.md delete mode 100644 vendor/league/config/composer.json delete mode 100644 vendor/league/config/src/Configuration.php delete mode 100644 vendor/league/config/src/ConfigurationAwareInterface.php delete mode 100644 vendor/league/config/src/ConfigurationBuilderInterface.php delete mode 100644 vendor/league/config/src/ConfigurationInterface.php delete mode 100644 vendor/league/config/src/ConfigurationProviderInterface.php delete mode 100644 vendor/league/config/src/Exception/ConfigurationExceptionInterface.php delete mode 100644 vendor/league/config/src/Exception/InvalidConfigurationException.php delete mode 100644 vendor/league/config/src/Exception/UnknownOptionException.php delete mode 100644 vendor/league/config/src/Exception/ValidationException.php delete mode 100644 vendor/league/config/src/MutableConfigurationInterface.php delete mode 100644 vendor/league/config/src/ReadOnlyConfiguration.php delete mode 100644 vendor/league/config/src/SchemaBuilderInterface.php delete mode 100644 vendor/mnapoli/front-yaml/.gitattributes delete mode 100644 vendor/mnapoli/front-yaml/.gitignore delete mode 100644 vendor/mnapoli/front-yaml/LICENSE delete mode 100644 vendor/mnapoli/front-yaml/README.md delete mode 100644 vendor/mnapoli/front-yaml/composer.json delete mode 100644 vendor/mnapoli/front-yaml/phpunit.xml.dist delete mode 100644 vendor/mnapoli/front-yaml/src/Bridge/CommonMark/CommonMarkParser.php delete mode 100644 vendor/mnapoli/front-yaml/src/Bridge/Symfony/SymfonyYAMLParser.php delete mode 100644 vendor/mnapoli/front-yaml/src/Document.php delete mode 100644 vendor/mnapoli/front-yaml/src/Markdown/MarkdownParser.php delete mode 100644 vendor/mnapoli/front-yaml/src/Parser.php delete mode 100644 vendor/mnapoli/front-yaml/src/YAML/YAMLParser.php delete mode 100644 vendor/nette/schema/composer.json delete mode 100644 vendor/nette/schema/license.md delete mode 100644 vendor/nette/schema/readme.md delete mode 100644 vendor/nette/schema/src/Schema/Context.php delete mode 100644 vendor/nette/schema/src/Schema/DynamicParameter.php delete mode 100644 vendor/nette/schema/src/Schema/Elements/AnyOf.php delete mode 100644 vendor/nette/schema/src/Schema/Elements/Base.php delete mode 100644 vendor/nette/schema/src/Schema/Elements/Structure.php delete mode 100644 vendor/nette/schema/src/Schema/Elements/Type.php delete mode 100644 vendor/nette/schema/src/Schema/Expect.php delete mode 100644 vendor/nette/schema/src/Schema/Helpers.php delete mode 100644 vendor/nette/schema/src/Schema/Message.php delete mode 100644 vendor/nette/schema/src/Schema/Processor.php delete mode 100644 vendor/nette/schema/src/Schema/Schema.php delete mode 100644 vendor/nette/schema/src/Schema/ValidationException.php delete mode 100644 vendor/nette/utils/.phpstorm.meta.php delete mode 100644 vendor/nette/utils/composer.json delete mode 100644 vendor/nette/utils/license.md delete mode 100644 vendor/nette/utils/readme.md delete mode 100644 vendor/nette/utils/src/HtmlStringable.php delete mode 100644 vendor/nette/utils/src/Iterators/CachingIterator.php delete mode 100644 vendor/nette/utils/src/Iterators/Mapper.php delete mode 100644 vendor/nette/utils/src/SmartObject.php delete mode 100644 vendor/nette/utils/src/StaticClass.php delete mode 100644 vendor/nette/utils/src/Translator.php delete mode 100644 vendor/nette/utils/src/Utils/ArrayHash.php delete mode 100644 vendor/nette/utils/src/Utils/ArrayList.php delete mode 100644 vendor/nette/utils/src/Utils/Arrays.php delete mode 100644 vendor/nette/utils/src/Utils/Callback.php delete mode 100644 vendor/nette/utils/src/Utils/DateTime.php delete mode 100644 vendor/nette/utils/src/Utils/FileInfo.php delete mode 100644 vendor/nette/utils/src/Utils/FileSystem.php delete mode 100644 vendor/nette/utils/src/Utils/Finder.php delete mode 100644 vendor/nette/utils/src/Utils/Floats.php delete mode 100644 vendor/nette/utils/src/Utils/Helpers.php delete mode 100644 vendor/nette/utils/src/Utils/Html.php delete mode 100644 vendor/nette/utils/src/Utils/Image.php delete mode 100644 vendor/nette/utils/src/Utils/ImageColor.php delete mode 100644 vendor/nette/utils/src/Utils/ImageType.php delete mode 100644 vendor/nette/utils/src/Utils/Iterables.php delete mode 100644 vendor/nette/utils/src/Utils/Json.php delete mode 100644 vendor/nette/utils/src/Utils/ObjectHelpers.php delete mode 100644 vendor/nette/utils/src/Utils/Paginator.php delete mode 100644 vendor/nette/utils/src/Utils/Random.php delete mode 100644 vendor/nette/utils/src/Utils/Reflection.php delete mode 100644 vendor/nette/utils/src/Utils/ReflectionMethod.php delete mode 100644 vendor/nette/utils/src/Utils/Strings.php delete mode 100644 vendor/nette/utils/src/Utils/Type.php delete mode 100644 vendor/nette/utils/src/Utils/Validators.php delete mode 100644 vendor/nette/utils/src/Utils/exceptions.php delete mode 100644 vendor/nette/utils/src/compatibility.php delete mode 100644 vendor/nette/utils/src/exceptions.php delete mode 100644 vendor/psr/event-dispatcher/.editorconfig delete mode 100644 vendor/psr/event-dispatcher/.gitignore delete mode 100644 vendor/psr/event-dispatcher/LICENSE delete mode 100644 vendor/psr/event-dispatcher/README.md delete mode 100644 vendor/psr/event-dispatcher/composer.json delete mode 100644 vendor/psr/event-dispatcher/src/EventDispatcherInterface.php delete mode 100644 vendor/psr/event-dispatcher/src/ListenerProviderInterface.php delete mode 100644 vendor/psr/event-dispatcher/src/StoppableEventInterface.php delete mode 100644 vendor/symfony/polyfill-php80/LICENSE delete mode 100644 vendor/symfony/polyfill-php80/Php80.php delete mode 100644 vendor/symfony/polyfill-php80/PhpToken.php delete mode 100644 vendor/symfony/polyfill-php80/README.md delete mode 100644 vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php delete mode 100644 vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php delete mode 100644 vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php delete mode 100644 vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php delete mode 100644 vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php delete mode 100644 vendor/symfony/polyfill-php80/bootstrap.php delete mode 100644 vendor/symfony/polyfill-php80/composer.json diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..e49af7d --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,191 @@ +# Markdown Parser WP - Fehlerbehebungen + +## Übersicht der Korrekturen + +Dieses Update behebt die folgenden Probleme im Markdown Parser WP Plugin: + +1. **Tags-Mapping**: Tags werden jetzt korrekt erstellt und mit IDs verarbeitet +2. **Beitragsbilder**: Der Import und die Zuweisung von Beitragsbildern funktionieren jetzt zuverlässig +3. **Bild-Blöcke**: Die Konvertierung von Markdown-Bildern zu Gutenberg-Blöcken wurde verbessert + +## Detaillierte Änderungen + +### 1. Tags-Mapping + +Die `map_metadata_to_taxonomies`-Methode in der `MarkdownParser`-Klasse wurde überarbeitet, um: +- Zu überprüfen, ob Tags bereits existieren +- Neue Tags zu erstellen, wenn sie nicht existieren +- Die korrekten Tag-IDs zurückzugeben statt nur der Tag-Namen +- Die Tags korrekt mit dem Beitrag zu verknüpfen + +```php +public static function map_metadata_to_taxonomies($metadata) { + $taxonomies = []; + + // Map tags from keywords + if (isset($metadata['keywords']) && is_array($metadata['keywords'])) { + $tag_ids = []; + + foreach ($metadata['keywords'] as $keyword) { + $tag_name = sanitize_text_field($keyword); + + // Check if tag exists + $existing_tag = get_term_by('name', $tag_name, 'post_tag'); + + if ($existing_tag) { + // Use existing tag ID + $tag_ids[] = (int) $existing_tag->term_id; + } else { + // Create new tag and get its ID + $new_tag = wp_insert_term($tag_name, 'post_tag'); + if (!is_wp_error($new_tag)) { + $tag_ids[] = (int) $new_tag['term_id']; + } + } + } + + // Store tag IDs + $taxonomies['post_tag'] = $tag_ids; + } + + return $taxonomies; +} +``` + +### 2. Beitragsbilder + +Die Funktionalität zum Importieren und Setzen von Beitragsbildern wurde verbessert: + +- Die `set_featured_image`-Methode in der `PostCreator`-Klasse wurde überarbeitet, um relative URLs besser zu behandeln +- Eine neue `import_external_image`-Methode wurde direkt in der `PostCreator`-Klasse implementiert +- Die WordPress-Funktion `media_sideload_image` wird jetzt verwendet, mit einem Fallback auf eine manuelle Import-Methode +- Zusätzliche Metadaten werden gespeichert, um die Bild-URL und ID zu referenzieren + +```php +private static function set_featured_image($post_id, $metadata, $original_url = '') { + $image_url = null; + + // Check for image in metadata + if (isset($metadata['image'])) { + $image_url = $metadata['image']; + } elseif (isset($metadata['cover']) && isset($metadata['cover']['image'])) { + $image_url = $metadata['cover']['image']; + + // Handle relative URLs + if (isset($metadata['cover']['relative']) && $metadata['cover']['relative'] === true && !empty($original_url)) { + // Determine base URL from original URL + $base_url = dirname($original_url) . '/'; + $image_url = $base_url . $image_url; + } + } + + if ($image_url) { + // Make sure the image URL is valid + if (!filter_var($image_url, FILTER_VALIDATE_URL)) { + // Try to make it a valid URL if it's a relative path + if (strpos($image_url, 'http') !== 0 && !empty($original_url)) { + $base_url = dirname($original_url) . '/'; + $image_url = $base_url . ltrim($image_url, '/'); + } + } + + // Download and set featured image + $attachment_id = self::import_external_image($image_url, $post_id); + + if ($attachment_id && !is_wp_error($attachment_id)) { + // Set as featured image + set_post_thumbnail($post_id, $attachment_id); + + // Also store the attachment ID as post meta for reference + update_post_meta($post_id, '_markdown_parser_featured_image_id', $attachment_id); + update_post_meta($post_id, '_markdown_parser_featured_image_url', $image_url); + } + } +} +``` + +### 3. Bild-Blöcke + +Die Konvertierung von Markdown-Bildern zu Gutenberg-Blöcken wurde verbessert: + +- Die `create_image_block`-Methode in der `BlocksConverter`-Klasse wurde überarbeitet +- Bild-Dimensionen werden jetzt korrekt gesetzt +- Bildunterschriften werden unterstützt +- Die richtige CSS-Klasse wird für WordPress-Bilder gesetzt + +```php +private static function create_image_block($src, $alt = '', $attachment_id = '') { + $block_attrs = [ + 'url' => $src, + 'alt' => $alt + ]; + + if ($attachment_id) { + $block_attrs['id'] = (int) $attachment_id; + + // Get image dimensions if available + $image_meta = wp_get_attachment_metadata($attachment_id); + if ($image_meta && isset($image_meta['width']) && isset($image_meta['height'])) { + $block_attrs['width'] = $image_meta['width']; + $block_attrs['height'] = $image_meta['height']; + $block_attrs['sizeSlug'] = 'full'; + } + + // Get caption if available + $attachment = get_post($attachment_id); + if ($attachment && !empty($attachment->post_excerpt)) { + $block_attrs['caption'] = $attachment->post_excerpt; + } + } + + // Create the image block with proper figure and figcaption if needed + $figure_html = '
'; + + // Add image tag + $figure_html .= '' . esc_attr($alt) . ''; + + // Add caption if available + if (isset($block_attrs['caption'])) { + $figure_html .= '
' . esc_html($block_attrs['caption']) . '
'; + } + + $figure_html .= '
'; + + return '' . + $figure_html . + ''; +} +``` + +## Installation + +1. Deaktivieren Sie die vorherige Version des Plugins in WordPress +2. Löschen Sie das alte Plugin-Verzeichnis +3. Laden Sie die neue Zip-Datei `markdown-parser-wp-fixed.zip` hoch +4. Aktivieren Sie das Plugin wieder + +## Testergebnisse + +Die Korrekturen wurden umfassend getestet und funktionieren wie erwartet: + +- Tags werden korrekt erstellt und mit IDs verarbeitet +- Beitragsbilder werden korrekt importiert und gesetzt +- Bild-Blöcke werden korrekt konvertiert mit allen erforderlichen Attributen + +Bei Fragen oder Problemen stehe ich gerne zur Verfügung. diff --git a/DOCUMENTATION-DE.md b/DOCUMENTATION-DE.md new file mode 100644 index 0000000..94cebb5 --- /dev/null +++ b/DOCUMENTATION-DE.md @@ -0,0 +1,175 @@ +# Markdown Parser WP - Dokumentation der Aktualisierungen + +## Übersicht der Verbesserungen + +Diese Aktualisierung des Markdown Parser WP Plugins enthält folgende Verbesserungen: + +1. **Korrekte Behandlung relativer Bildpfade im Fließtext** +2. **Import von Bildern aus dem Fließtext in die WordPress-Mediathek** +3. **Konfigurierbare Feldzuordnung zwischen YAML/JSON und WordPress-Feldern** + +## 1. Relative Bildpfade im Fließtext + +### Problem +Bilder im Fließtext mit relativen Pfaden (z.B. `![Alt Text](bild.jpg)`) wurden nicht korrekt aufgelöst und importiert. + +### Lösung +Das Plugin löst jetzt relative Bildpfade korrekt auf, indem es den Pfad der Markdown-Datei als Basis verwendet. Beispiel: + +- Markdown-URL: `https://example.com/posts/artikel/index.md` +- Relatives Bild im Text: `![Alt Text](bild.jpg)` +- Aufgelöster Bildpfad: `https://example.com/posts/artikel/bild.jpg` + +### Implementierung +Die `BlocksConverter`-Klasse wurde aktualisiert, um relative Pfade zu erkennen und aufzulösen: + +```php +private static function process_images_in_html($html, $original_url = '') { + // ... + foreach ($images as $img) { + $src = $img->getAttribute('src'); + + // Handle relative URLs + if (!filter_var($src, FILTER_VALIDATE_URL) && !empty($original_url)) { + // If the src doesn't start with http/https, it's likely a relative path + if (strpos($src, 'http') !== 0) { + $base_url = dirname($original_url) . '/'; + $src = $base_url . ltrim($src, '/'); + } + } + + // Import external image + $attachment_id = PostCreator::import_external_image($src); + // ... + } + // ... +} +``` + +## 2. Import von Bildern aus dem Fließtext + +### Problem +Bilder im Fließtext wurden nicht in die WordPress-Mediathek importiert und als Gutenberg-Blöcke mit korrekten Attachment-IDs dargestellt. + +### Lösung +Das Plugin importiert jetzt alle Bilder aus dem Fließtext in die WordPress-Mediathek und erstellt korrekte Gutenberg-Bild-Blöcke mit den entsprechenden Attachment-IDs. + +### Implementierung +Die `BlocksConverter`-Klasse wurde verbessert, um Bilder zu importieren und korrekte Gutenberg-Blöcke zu erstellen: + +```php +private static function create_image_block($src, $alt = '', $attachment_id = '') { + $block_attrs = [ + 'url' => $src, + 'alt' => $alt + ]; + + if ($attachment_id) { + $block_attrs['id'] = (int) $attachment_id; + + // Get image dimensions if available + $image_meta = wp_get_attachment_metadata($attachment_id); + if ($image_meta && isset($image_meta['width']) && isset($image_meta['height'])) { + $block_attrs['width'] = $image_meta['width']; + $block_attrs['height'] = $image_meta['height']; + $block_attrs['sizeSlug'] = 'full'; + } + + // Get caption if available + $attachment = get_post($attachment_id); + if ($attachment && !empty($attachment->post_excerpt)) { + $block_attrs['caption'] = $attachment->post_excerpt; + } + } + + // Create the image block with proper figure and figcaption if needed + $figure_html = '
'; + + // Add image tag + $figure_html .= '' . esc_attr($alt) . ''; + + // Add caption if available + if (isset($block_attrs['caption'])) { + $figure_html .= '
' . esc_html($block_attrs['caption']) . '
'; + } + + $figure_html .= '
'; + + return '' . + $figure_html . + ''; +} +``` + +## 3. Konfigurierbare Feldzuordnung + +### Problem +Die Zuordnung zwischen YAML/JSON-Feldern und WordPress-Feldern war fest codiert und konnte nicht angepasst werden. + +### Lösung +Das Plugin bietet jetzt eine benutzerfreundliche Oberfläche, mit der Sie die Zuordnung zwischen YAML/JSON-Feldern und WordPress-Feldern konfigurieren können. Sie können sehen, welche Felder in der Markdown-Datei verfügbar sind und wie sie auf WordPress-Felder abgebildet werden. + +### Implementierung +Eine neue Benutzeroberfläche wurde hinzugefügt, die Folgendes ermöglicht: + +- Anzeige aller verfügbaren YAML/JSON-Felder +- Konfiguration der Zuordnung zu WordPress-Feldern +- Vorschau der Feldwerte vor dem Import +- Hinzufügen und Entfernen von Feldzuordnungen + +## Verwendung der neuen Funktionen + +### Relative Bildpfade und Bildimport + +Die Funktionen für relative Bildpfade und Bildimport sind automatisch aktiviert. Sie können den Bildimport über die Option "Bilder importieren" in der Benutzeroberfläche aktivieren oder deaktivieren. + +### Konfigurierbare Feldzuordnung + +1. Gehen Sie zu "Markdown Parser" im WordPress-Admin-Menü +2. Geben Sie die URL zu einer Markdown-Datei ein und klicken Sie auf "Markdown parsen" +3. Scrollen Sie zum Abschnitt "Feldzuordnung" +4. Hier sehen Sie die Standard-Feldzuordnungen: + - WordPress-Feld "Titel" → YAML-Feld "title" oder "name" + - WordPress-Feld "Auszug" → YAML-Feld "summary" oder "description" + - WordPress-Feld "Datum" → YAML-Feld "datePublished" + - WordPress-Feld "Slug" → YAML-Feld "url" + - WordPress-Feld "Schlagwörter" → YAML-Feld "keywords" +5. Sie können diese Zuordnungen ändern, indem Sie andere YAML-Felder aus den Dropdown-Menüs auswählen +6. Sie können weitere Feldzuordnungen hinzufügen, indem Sie auf "Weitere Feldzuordnung hinzufügen" klicken +7. Für jede Feldzuordnung wird eine Vorschau des Wertes angezeigt +8. Wenn Sie mit den Zuordnungen zufrieden sind, klicken Sie auf "Beitrag erstellen" + +## Technische Details + +### Dateistruktur + +- `src/BlocksConverter.php`: Enthält die Logik für die Konvertierung von Markdown zu Gutenberg-Blöcken und die Behandlung relativer Bildpfade +- `src/PostCreator.php`: Enthält die Logik für die Erstellung von WordPress-Beiträgen aus Markdown-Daten +- `src/Admin.php`: Enthält die Benutzeroberfläche und AJAX-Handler für die Feldzuordnung +- `assets/js/admin.js`: Enthält den JavaScript-Code für die dynamische Feldzuordnungs-UI +- `assets/css/admin.css`: Enthält die Styles für die Feldzuordnungs-UI + +### Hooks und Filter + +Das Plugin bietet folgende Hooks und Filter für Entwickler: + +- `markdown_parser_wp_field_mapping`: Filter zum Anpassen der Standard-Feldzuordnungen +- `markdown_parser_wp_before_import_image`: Action vor dem Import eines Bildes +- `markdown_parser_wp_after_import_image`: Action nach dem Import eines Bildes +- `markdown_parser_wp_blocks_converter_options`: Filter zum Anpassen der Optionen für die Konvertierung von Markdown zu Blocks diff --git a/README-ENHANCED.md b/README-ENHANCED.md new file mode 100644 index 0000000..67f3d43 --- /dev/null +++ b/README-ENHANCED.md @@ -0,0 +1,115 @@ +# Markdown Parser WP - Erweiterte Version + +## Übersicht + +Markdown Parser WP ist ein WordPress-Plugin, das YAML-Metadaten aus Markdown-Dateien extrahiert und in JSON konvertiert. Die erweiterte Version kann nun auch WordPress-Beiträge direkt aus Markdown-Dateien erstellen, wobei die YAML-Metadaten als Beitragsfelder (Titel, Auszug, Tags, Bild, Autor, etc.) verwendet werden und der Markdown-Inhalt in Gutenberg-Blöcke konvertiert wird. + +## Neue Funktionen + +Die erweiterte Version bietet folgende neue Funktionen: + +1. **Automatische Beitragserstellung**: Erstellen Sie WordPress-Beiträge direkt aus Markdown-Dateien mit YAML-Frontmatter +2. **Metadaten-Mapping**: YAML-Metadaten werden automatisch in WordPress-Beitragsfelder konvertiert: + - Titel (aus `title` oder `name`) + - Auszug (aus `summary` oder `description`) + - Veröffentlichungsdatum (aus `datePublished`) + - Slug/Permalink (aus `url`) + - Autor (wenn ein passender WordPress-Benutzer gefunden wird) +3. **Taxonomie-Mapping**: Tags werden automatisch aus `keywords` erstellt +4. **Gutenberg-Blöcke**: Markdown-Inhalt wird in native Gutenberg-Blöcke konvertiert: + - Überschriften + - Absätze + - Listen + - Bilder + - Zitate + - Code-Blöcke + - Tabellen +5. **Bild-Import**: Bilder werden automatisch in die WordPress-Mediathek importiert +6. **Beitragsbild**: Das Beitragsbild wird automatisch aus `image` oder `cover.image` gesetzt + +## Installation + +1. Laden Sie die Zip-Datei `markdown-parser-wp-enhanced.zip` herunter +2. Loggen Sie sich in Ihren WordPress-Admin-Bereich ein +3. Navigieren Sie zu "Plugins" > "Installieren" +4. Klicken Sie auf "Plugin hochladen" +5. Wählen Sie die heruntergeladene Zip-Datei aus und klicken Sie auf "Jetzt installieren" +6. Nach der Installation klicken Sie auf "Plugin aktivieren" + +## Verwendung + +### Beiträge aus Markdown erstellen + +1. Nach der Aktivierung finden Sie im WordPress-Admin-Menü einen neuen Eintrag "Markdown Parser" +2. Klicken Sie auf diesen Menüpunkt, um die Plugin-Oberfläche zu öffnen +3. Geben Sie die URL zu einer Markdown-Datei mit YAML-Frontmatter ein +4. Klicken Sie auf "Markdown parsen" +5. Die extrahierten JSON-Metadaten und der Markdown-Inhalt werden angezeigt +6. Im Abschnitt "WordPress-Beitrag erstellen" können Sie folgende Optionen wählen: + - Beitragstyp (Beitrag, Seite, etc.) + - Status (Entwurf, Veröffentlicht, Ausstehender Review) + - Kategorie + - Bilder importieren (ja/nein) +7. Klicken Sie auf "Beitrag erstellen", um den Beitrag zu erstellen +8. Nach erfolgreicher Erstellung wird ein Link zum Bearbeiten des Beitrags angezeigt + +### Metadaten-Mapping + +Das Plugin mappt YAML-Metadaten wie folgt auf WordPress-Beitragsfelder: + +| YAML-Feld | WordPress-Feld | +|-----------|----------------| +| title / name | post_title | +| summary / description | post_excerpt | +| datePublished | post_date | +| url | post_name (Slug) | +| keywords | Tags | +| image / cover.image | Beitragsbild | +| author / creator | Autor (wenn passender Benutzer gefunden wird) | + +Zusätzlich werden alle Metadaten als benutzerdefinierte Felder gespeichert, z.B.: +- `_markdown_parser_license` +- `_markdown_parser_original_id` +- `_markdown_parser_status` +- `_markdown_parser_type` +- `_markdown_parser_language` +- `_markdown_parser_date_published` +- `_markdown_parser_authors` + +### Markdown zu Gutenberg-Blöcken + +Das Plugin konvertiert Markdown-Elemente in entsprechende Gutenberg-Blöcke: + +- Überschriften (`# Titel`) → Überschriften-Block +- Absätze → Absatz-Block +- Listen (`- Element`) → Listen-Block +- Bilder (`![alt](url)`) → Bild-Block +- Links (`[text](url)`) → Links im Absatz-Block +- Zitate (`> Zitat`) → Zitat-Block +- Code-Blöcke (``` code ```) → Code-Block +- Tabellen → Tabellen-Block + +## Systemanforderungen + +- WordPress 5.0 oder höher +- PHP 7.2 oder höher +- PHP YAML-Erweiterung +- PHP Parsedown-Bibliothek (wird automatisch installiert) + +## Fehlerbehebung + +Wenn das Plugin nicht korrekt funktioniert, überprüfen Sie Folgendes: + +1. Stellen Sie sicher, dass die URL zu einer gültigen Markdown-Datei mit YAML-Frontmatter führt +2. Überprüfen Sie, ob die YAML-Syntax in der Markdown-Datei korrekt ist +3. Stellen Sie sicher, dass Ihr Server auf externe URLs zugreifen kann +4. Überprüfen Sie, ob die Berechtigungen zum Erstellen von Beiträgen vorhanden sind +5. Stellen Sie sicher, dass der Upload-Ordner beschreibbar ist (für Bild-Imports) + +## Support + +Bei Fragen oder Problemen wenden Sie sich bitte an den Plugin-Autor. + +--- + +Dieses Plugin wurde basierend auf dem bereitgestellten PHP-Code erstellt, der die Symfony YAML-Komponente verwendet. diff --git a/README.md b/README.md index e69de29..95b2513 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,77 @@ +# Markdown Parser WP - Installationsanleitung und Dokumentation + +## Übersicht + +Markdown Parser WP ist ein WordPress-Plugin, das YAML-Metadaten aus Markdown-Dateien extrahiert und in JSON konvertiert, während es gleichzeitig den Markdown-Inhalt ohne die Titelüberschrift bereitstellt. Das Plugin bietet sowohl eine Admin-Oberfläche als auch Shortcode-Funktionalität für die Verwendung in Beiträgen und Seiten. + +## Installation + +1. Laden Sie die Zip-Datei `markdown-parser-wp.zip` herunter +2. Loggen Sie sich in Ihren WordPress-Admin-Bereich ein +3. Navigieren Sie zu "Plugins" > "Installieren" +4. Klicken Sie auf "Plugin hochladen" +5. Wählen Sie die heruntergeladene Zip-Datei aus und klicken Sie auf "Jetzt installieren" +6. Nach der Installation klicken Sie auf "Plugin aktivieren" + +## Systemanforderungen + +- WordPress 5.0 oder höher +- PHP 7.2 oder höher +- PHP YAML-Erweiterung (wird automatisch installiert, wenn Composer verfügbar ist) + +## Verwendung + +### Admin-Oberfläche + +1. Nach der Aktivierung finden Sie im WordPress-Admin-Menü einen neuen Eintrag "Markdown Parser" +2. Klicken Sie auf diesen Menüpunkt, um die Plugin-Oberfläche zu öffnen +3. Geben Sie die URL zu einer Markdown-Datei mit YAML-Frontmatter ein +4. Klicken Sie auf "Markdown parsen" +5. Die extrahierten JSON-Metadaten und der Markdown-Inhalt werden angezeigt +6. Sie können die Ergebnisse kopieren oder herunterladen + +### Shortcode-Verwendung + +Sie können die geparsten Daten direkt in Ihren Beiträgen oder Seiten anzeigen, indem Sie den folgenden Shortcode verwenden: + +``` +[markdown_parser url="https://example.com/file.md" display="both"] +``` + +Parameter: +- `url`: URL zur Markdown-Datei (erforderlich) +- `display`: Was angezeigt werden soll: "json", "markdown" oder "both" (Standard: "both") + +## Funktionen + +- Extrahiert YAML-Metadaten aus Markdown-Dateien und konvertiert sie in JSON +- Extrahiert den Markdown-Inhalt ohne die Titelüberschrift +- Bietet eine benutzerfreundliche Admin-Oberfläche +- Ermöglicht das Kopieren und Herunterladen der Ergebnisse +- Stellt einen Shortcode für die Anzeige in Beiträgen und Seiten bereit +- Unterstützt mehrsprachige Übersetzungen + +## Fehlerbehebung + +Wenn das Plugin nicht korrekt funktioniert, überprüfen Sie Folgendes: + +1. Stellen Sie sicher, dass die URL zu einer gültigen Markdown-Datei mit YAML-Frontmatter führt +2. Überprüfen Sie, ob die YAML-Syntax in der Markdown-Datei korrekt ist +3. Stellen Sie sicher, dass Ihr Server auf externe URLs zugreifen kann + +## Entwicklerinformationen + +Das Plugin verwendet die Symfony YAML-Komponente zum Parsen von YAML-Daten. Wenn Sie das Plugin weiterentwickeln möchten, können Sie die folgenden Dateien bearbeiten: + +- `markdown-parser-wp.php`: Hauptplugin-Datei +- `src/MarkdownParser.php`: Kernfunktionalität zum Parsen von Markdown +- `src/Admin.php`: Admin-AJAX-Funktionalität +- `src/Shortcodes.php`: Shortcode-Funktionalität +- `assets/js/admin.js`: JavaScript für die Admin-Oberfläche +- `assets/css/admin.css`: CSS für die Admin-Oberfläche +- `assets/css/frontend.css`: CSS für die Frontend-Anzeige + + +--- + +Dieses Plugin wurde basierend auf dem bereitgestellten PHP-Code erstellt, der die Symfony YAML-Komponente verwendet. diff --git a/assets/css/admin.css b/assets/css/admin.css new file mode 100644 index 0000000..ed09c4e --- /dev/null +++ b/assets/css/admin.css @@ -0,0 +1,149 @@ +.markdown-parser-wp-admin { + max-width: 1200px; +} + +.markdown-parser-wp-section { + margin-bottom: 30px; + background: #fff; + padding: 20px; + border-radius: 5px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.markdown-parser-wp-form-row { + margin-bottom: 15px; +} + +.markdown-parser-wp-form-row label { + display: block; + margin-bottom: 5px; + font-weight: 600; +} + +.markdown-parser-wp-tabs { + margin-top: 20px; +} + +.markdown-parser-wp-tab-nav { + margin-bottom: 10px; + border-bottom: 1px solid #ddd; +} + +.markdown-parser-wp-tab-button { + background: #f7f7f7; + border: 1px solid #ddd; + border-bottom: none; + padding: 8px 15px; + margin-right: 5px; + border-radius: 5px 5px 0 0; + cursor: pointer; +} + +.markdown-parser-wp-tab-button.active { + background: #fff; + border-bottom: 1px solid #fff; + margin-bottom: -1px; +} + +.markdown-parser-wp-tab-content { + display: none; + background: #fff; + padding: 15px; + border: 1px solid #ddd; + border-top: none; +} + +.markdown-parser-wp-tab-content.active { + display: block; +} + +.markdown-parser-wp-actions { + margin-bottom: 10px; +} + +pre { + background: #f7f7f7; + padding: 15px; + border: 1px solid #ddd; + overflow: auto; + max-height: 400px; +} + +.markdown-parser-wp-message { + padding: 15px; + margin: 15px 0; + border-radius: 5px; +} + +.markdown-parser-wp-message.error { + background: #f8d7da; + border: 1px solid #f5c6cb; + color: #721c24; +} + +.markdown-parser-wp-message.info { + background: #d1ecf1; + border: 1px solid #bee5eb; + color: #0c5460; +} + +.markdown-parser-wp-message.success { + background: #d4edda; + border: 1px solid #c3e6cb; + color: #155724; +} + +/* Field mapping styles */ +#field-mapping-container { + margin-bottom: 15px; +} + +.field-mapping-row { + display: flex; + margin-bottom: 10px; + padding: 10px; + background: #f9f9f9; + border: 1px solid #eee; + border-radius: 4px; +} + +.field-mapping-wp, +.field-mapping-yaml, +.field-mapping-preview, +.field-mapping-actions { + padding: 0 10px; +} + +.field-mapping-wp, +.field-mapping-yaml { + width: 30%; +} + +.field-mapping-preview { + width: 30%; +} + +.field-mapping-actions { + width: 10%; + display: flex; + align-items: flex-end; +} + +.field-mapping-row label { + display: block; + margin-bottom: 5px; + font-weight: 600; +} + +.field-preview { + padding: 6px; + background: #fff; + border: 1px solid #ddd; + min-height: 30px; + border-radius: 4px; + word-break: break-word; +} + +.remove-field-mapping { + margin-bottom: 0; +} diff --git a/assets/css/frontend.css b/assets/css/frontend.css new file mode 100644 index 0000000..8e66826 --- /dev/null +++ b/assets/css/frontend.css @@ -0,0 +1,37 @@ +/* Frontend styles for Markdown Parser WP */ +.markdown-parser-output { + margin: 20px 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; +} + +.markdown-parser-output h3 { + font-size: 1.3em; + margin-bottom: 10px; + padding-bottom: 5px; + border-bottom: 1px solid #eee; +} + +.markdown-parser-json pre { + background: #f5f5f5; + padding: 15px; + border: 1px solid #ddd; + border-radius: 3px; + overflow: auto; + max-height: 400px; + font-family: monospace; + white-space: pre-wrap; + font-size: 13px; + line-height: 1.5; +} + +.markdown-parser-content { + margin-top: 20px; +} + +.markdown-parser-error { + color: #d63638; + padding: 10px; + background-color: #ffebe8; + border: 1px solid #c00; + border-radius: 3px; +} diff --git a/assets/js/admin.js b/assets/js/admin.js new file mode 100644 index 0000000..9a7739b --- /dev/null +++ b/assets/js/admin.js @@ -0,0 +1,372 @@ +jQuery(document).ready(function($) { + // Variables to store parsed data + let parsedData = null; + let yamlFields = []; + + // Parse Markdown URL + $('#parse-markdown-url').on('click', function() { + const url = $('#markdown-url').val(); + + if (!url) { + showMessage('error', markdownParserWp.i18n.parseError + ': ' + 'URL ist leer'); + return; + } + + // Show loading message + showMessage('info', markdownParserWp.i18n.loading); + + // Send AJAX request + $.ajax({ + url: markdownParserWp.ajaxUrl, + type: 'POST', + data: { + action: 'parse_markdown_url', + nonce: markdownParserWp.nonce, + url: url + }, + success: function(response) { + if (response.success) { + // Hide message + hideMessage(); + + // Store parsed data + parsedData = response.data; + + // Display JSON and Markdown content + $('#json-content').text(parsedData.json); + $('#markdown-content').text(parsedData.markdown); + + // Show results and create post sections + $('#markdown-parser-wp-results').show(); + $('#markdown-parser-wp-create-post').show(); + + // Extract YAML fields for field mapping + extractYamlFields(parsedData.metadata); + populateYamlFieldSelects(); + + // Set default field mappings + setDefaultFieldMappings(); + + // Update field previews + updateAllFieldPreviews(); + } else { + showMessage('error', markdownParserWp.i18n.parseError + ': ' + response.data.message); + } + }, + error: function() { + showMessage('error', markdownParserWp.i18n.parseError); + } + }); + }); + + // Extract YAML fields recursively + function extractYamlFields(obj, prefix = '') { + for (const key in obj) { + if (obj.hasOwnProperty(key)) { + const value = obj[key]; + const fieldPath = prefix ? prefix + '.' + key : key; + + if (typeof value === 'object' && value !== null && !Array.isArray(value)) { + // Recurse into nested objects + extractYamlFields(value, fieldPath); + } else { + // Add field path to list + yamlFields.push(fieldPath); + } + } + } + } + + // Populate YAML field selects + function populateYamlFieldSelects() { + $('.yaml-field-select').each(function() { + const select = $(this); + select.empty(); + + // Add empty option + select.append($('