{"action":"created","issue":{"url":"https://api.github.com/repos/redaxo/redaxo/issues/248","repository_url":"https://api.github.com/repos/redaxo/redaxo","labels_url":"https://api.github.com/repos/redaxo/redaxo/issues/248/labels{/name}","comments_url":"https://api.github.com/repos/redaxo/redaxo/issues/248/comments","events_url":"https://api.github.com/repos/redaxo/redaxo/issues/248/events","html_url":"https://github.com/redaxo/redaxo/pull/248","id":12043617,"number":248,"title":"Zentrale rex_markup Klasse","user":{"login":"gharlan","id":330436,"avatar_url":"https://avatars.githubusercontent.com/u/330436?v=3","gravatar_id":"","url":"https://api.github.com/users/gharlan","html_url":"https://github.com/gharlan","followers_url":"https://api.github.com/users/gharlan/followers","following_url":"https://api.github.com/users/gharlan/following{/other_user}","gists_url":"https://api.github.com/users/gharlan/gists{/gist_id}","starred_url":"https://api.github.com/users/gharlan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gharlan/subscriptions","organizations_url":"https://api.github.com/users/gharlan/orgs","repos_url":"https://api.github.com/users/gharlan/repos","events_url":"https://api.github.com/users/gharlan/events{/privacy}","received_events_url":"https://api.github.com/users/gharlan/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/redaxo/redaxo/labels/Awaiting%20feedback","name":"Awaiting feedback","color":"3835FF"},{"url":"https://api.github.com/repos/redaxo/redaxo/labels/Feature","name":"Feature","color":"00BC09"}],"state":"open","locked":false,"assignee":{"login":"gharlan","id":330436,"avatar_url":"https://avatars.githubusercontent.com/u/330436?v=3","gravatar_id":"","url":"https://api.github.com/users/gharlan","html_url":"https://github.com/gharlan","followers_url":"https://api.github.com/users/gharlan/followers","following_url":"https://api.github.com/users/gharlan/following{/other_user}","gists_url":"https://api.github.com/users/gharlan/gists{/gist_id}","starred_url":"https://api.github.com/users/gharlan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gharlan/subscriptions","organizations_url":"https://api.github.com/users/gharlan/orgs","repos_url":"https://api.github.com/users/gharlan/repos","events_url":"https://api.github.com/users/gharlan/events{/privacy}","received_events_url":"https://api.github.com/users/gharlan/received_events","type":"User","site_admin":false},"milestone":null,"comments":17,"created_at":"2013-03-14T23:07:32Z","updated_at":"2016-05-20T09:14:25Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/redaxo/redaxo/pulls/248","html_url":"https://github.com/redaxo/redaxo/pull/248","diff_url":"https://github.com/redaxo/redaxo/pull/248.diff","patch_url":"https://github.com/redaxo/redaxo/pull/248.patch"},"body":"## Basis\r\n\r\nIch habe die Idee, eine zentrale Klasse für das Parsen von Markupsprachen (Textile, Markdown etc.) einzuführen. Für die Klasse selbst habe ich schon mal einen ersten Vorschlag erstellt, so wird glaube ich am besten deutlich, wie ich mir das vorstelle.\r\n\r\nWenn ich jetzt zum Beispiel Markdown parsen möchte, rufe ich das auf:\r\n\r\n```php\r\necho rex_markup::parse('**Fetter Markdown Text**', 'markdown');\r\n```\r\n\r\nWurde ein Parser für Markdown registriert, wird der Text geparst. Ansonsten muss man eben mit dem ungeparsten Text leben. (Mit `rex_markup::isRegistered` kann man auch checken, ob ein Parser registriert wurde.)\r\n\r\nEin neuer Parser wird zum Beispiel so registriert:\r\n\r\n```php\r\nrex_markup::register(['md', 'markdown'], 'rex_markdown::parse');\r\n```\r\n\r\nEin Vorteil dieser Klasse ist, dass man eine zentrale Anlaufstelle hat, um Markup zu parsen. So kann zum Beispiel jemand ein alternatives Textile-Addon erstellen, mit ganz anderer interner Klassenstruktur, und anderem Addonnamen. Bisher wird ja in der Regel direkt geprüft, ob das Addon \"textile\" verfügbar ist, und dann deren Api verwendet.\r\n\r\n## REX_VALUE mit Markup-Parsing\r\n\r\nDadurch, dass die Klasse direkt im Core ist, kann man auch für REX_VALUE ein Markup-Argument hinzufügen:\r\n\r\n```\r\nREX_VALUE[id=1 markup=textile]\r\n```\r\n\r\nVorteil davon ist zum Beispiel, dass der bereits geparste Inhalt gecacht wird. Bisher wird ja bei jedem Aufruf geparst.\r\n\r\n## Markdown-Dateien in Packages\r\n\r\nDie help.php wird in Packages sehr wenig genutzt. Durch GitHub haben aber immer mehr Addons eine README-Datei.\r\nDaher würde ich vorschlagen, dass falls keine help.php vorhanden ist, nach einer Readme geschaut wird, und die stattdessen angezeigt wird. Die Datei wird dann an `rex_markup::parseFile` überreicht, sodass eben zum Beispiel Markdown oder Textile geparst wird, falls der entsprechende Parser vorhanden ist.\r\nMeist wird für die Readme Markdown verwendet, was ich für solche Dateien auch deutlich geeigneter halte als Textile. Daher sollten wir dann am besten noch ein Markdown-Addon anbieten, oder vielleicht sogar analog zu YAML als festen Bestandteil in den Core aufnehmen, um die Verwendung noch mehr zu forcieren.\r\n\r\nEs scheint außerdem immer mehr Standard zu werden, dass es zusätzlich noch eine CHANGELOG(.md/.textile)-Datei gibt. Daher könnte man die dann auch noch (falls vorhanden) auf der Help-Page des Addons anzeigen, unterhalb der Readme oder so.\r\n\r\n------\r\n\r\nWas meint ihr zu dem Ganzen?\r\n\r\nPS: Ist ein bisschen viel für ein Issue, wusste aber nicht, wie ich es anders machen soll, weil ja alles aufeinander aufbaut."},"comment":{"url":"https://api.github.com/repos/redaxo/redaxo/issues/comments/220556185","html_url":"https://github.com/redaxo/redaxo/pull/248#issuecomment-220556185","issue_url":"https://api.github.com/repos/redaxo/redaxo/issues/248","id":220556185,"user":{"login":"gharlan","id":330436,"avatar_url":"https://avatars.githubusercontent.com/u/330436?v=3","gravatar_id":"","url":"https://api.github.com/users/gharlan","html_url":"https://github.com/gharlan","followers_url":"https://api.github.com/users/gharlan/followers","following_url":"https://api.github.com/users/gharlan/following{/other_user}","gists_url":"https://api.github.com/users/gharlan/gists{/gist_id}","starred_url":"https://api.github.com/users/gharlan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gharlan/subscriptions","organizations_url":"https://api.github.com/users/gharlan/orgs","repos_url":"https://api.github.com/users/gharlan/repos","events_url":"https://api.github.com/users/gharlan/events{/privacy}","received_events_url":"https://api.github.com/users/gharlan/received_events","type":"User","site_admin":false},"created_at":"2016-05-20T09:14:25Z","updated_at":"2016-05-20T09:14:25Z","body":"Ich schließe hier.\r\n\r\nEs kommt ein neuer PR mit einer reinen Markdown-Integration."}}
{"actor":{"display_login":"gharlan"}}