From 9d888405bd4b8761a6a8bc21b3b0dfbb4bcd4400 Mon Sep 17 00:00:00 2001 From: Alexander Walther Date: Sat, 16 Dec 2023 19:01:52 +0100 Subject: [PATCH 1/6] Anleitung zur Migration von News Manager zu Neues MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Erstellt eine finale Version des News Managers, die sich nur in Kombination mit `neues` installieren lässt. Beim Update werden alle Daten des News Managers (Einträge und Kategorien mit Ausnahme der Autoren) in die Struktur von Neues migriert. Eine umfangreiche Anleitung und Feature-Vergleich hilft bei der Entscheidung. Beim Release sollten diese Informationen ebenfalls in die Release Notes, um im Installer darüber zu informieren. --- README.md | 245 +++++++++++++++++++++----------------------------- migration.sql | 39 ++++++++ package.yml | 12 +-- update.php | 4 + 4 files changed, 152 insertions(+), 148 deletions(-) create mode 100644 migration.sql diff --git a/README.md b/README.md index 43b6759..fe78abe 100755 --- a/README.md +++ b/README.md @@ -1,144 +1,109 @@ -News-Manager -============ +# News-Manager + +> Der News-Manager wird nicht mehr weiterentwickelt. Nutze stattdessen das Nachfolge-Addon [Neues für REDAXO 5](https://github.com/friendsofredaxo/neues/). + +## Migration von News-Manager zu Neues + +### Warum der Wechsel? + +Das FOR-Addon News-Manager befindet sich nicht mehr in aktiver Entwicklung. Es wurde nur noch bis Ende 2022 gewartet. Potentielle Sicherheitslücken werden nicht mehr geschlossen. + +Um die Lücke zu schließen, wird das Addon `Neues` von @alexplus_de zu FriendsOfREDAXO gespendet. Die Weiterentwicklung des Neues ist gesichert. Es wird ständig an die neuesten REDAXO-Versionen angepasst und erweitert. + +Ein wesentlicher Vorteil gegenüber dem News Manager ist die Unterstützung von YForm. Damit lassen sich die News-Einträge und Kategorien komfortabel verwalten und erweitern, viele Funktionen von YForm und YOrm können genutzt werden. + +Wir danken Alex für die Bereitschaft, das Addon in die Hände von FriendsOfREDAXO zu geben, Alex bleibt Projekt-Lead des Addons. Sowie @schorschy @skerbis und @eace für die Unterstützung bei der Entwicklung. + +### Funktions-Parität und Unterschiede + +Was | News Manager `3.0.3` | Neues `^4.0` +--- | --- | --- +Letzte Weiterentwicklung und Wartung | ❌ 28. Dez. 2022 | ✅ aktuell +REDAXO Core-Version | ab `^5.4` | ab `^5.15` +PHP-Version | ab `^5.6` | ab `^7.2` +Addon-Abhängigkeiten | URL ab `^2` | URL ab `^2`, YForm ab `^4`, YForm Field ab `^2` +Position im Backend | `Addons > News Manager` | `Aktuelles` (oben) +News-Übersicht | ✅ `News Manager > "News anlegen"` | ✅ `Aktuelles > Einträge` +Kategorien | ✅ `News Manager > "Kategorien"` | ✅ `Aktuelles > Kategorien` +Kommentare | ✅ als Plugin: `News Manager > "Kommentare"` | ❌ nein +Autoren | ❌ nein | `Aktuelles > Autoren` +Mehrsprachigkeit | ✅ `News Manager > (Sprache auswählen)` | ✅ `Aktuelles > Sprachen` +Dokumentation | ✅ als Plugin | ✅ `Aktuelles > Hilfe` +Einstellungen | ❌ nein | ✅ `Aktuelles > Einstellungen` +WYSIWYG-Editor | ✅ ausschließlich `redactor2` | ✅ frei wählbar (`cke5`, `redactor`, `markitup`, `tinymce`) +Backend-Sprachen | `de,en,es,se` | `de,en,es,se` +RSS | ✅ ja | 🚧 in Arbeit +Fertige Fragmente | ✅ ja | 🚧 in Arbeit +Multi-Domain-Unterstützung | ❌ über Umwege | ✅ ja +YOrm-Model | ❌ nein | ✅ ja (News-Einträge, Kategorien, Autoren, Sprachen) +CSV-Import | ❌ nein | ✅ ja (via YForm) +CSV-Export | ❌ nein | ✅ ja (via YForm) +RESTful API | ❌ nein | ✅ ja (via YForm) + +### Automatische Daten-Migration von News Manager zu Neues 4 + +Es gibt einen eine automatische Migration von News Manager-Einträgen zu Neues 4. + +Diese werden bei Installation dieser finalen Version des News Managers ausgeführt. Alternativ müssen folgenden Schritte erfolgen: + +### Manuelle Daten-Migration von News Manager zu Neues 4 + +1. Backup der Datenbank und des Dateisystems +2. `Neues` installieren (`YForm`, `YForm Field`, `URL` müssen bereits installiert und aktiviert sein) +3. Bestehende News-Einträge und Kategorien in Neues importieren +4. Module, Templates und URL-Profile anpassen +5. `News Manager` deinstallieren. + +#### SQL-Befehle zur Migration der Daten + +> Hinweis: Die Autoren müssen manuell oder mit eigenen Anpassungen übertragen werden, da es hierfür eine eigene Tabelle gibt. + +```SQL +INSERT INTO rex_neues_category + (id, name, image, status, createuser, createdate, updateuser, updatedate) +SELECT + pid, + name, + '', + '1', + createuser, + createdate, + updateuser, + updatedate +FROM rex_newsmanager_categories; + +INSERT INTO rex_neues_entry + (id, status, name, teaser, description, domain_ids, lang_id, publishdate, author_id, url, image, images, createdate, createuser, updatedate, updateuser) +SELECT + pid, + IF(status=1, '1', '0'), + title, + subtitle, + richtext, + '', + clang_id, + createdate, + 0, + seo_canonical, + '', + images, + createdate, + createuser, + updatedate, + updateuser +FROM rex_newsmanager; + +INSERT INTO rex_neues_entry_category_rel (entry_id, category_id) +SELECT rex_newsmanager.pid , rex_newsmanager_categories.id +FROM rex_newsmanager +INNER JOIN rex_newsmanager_categories +ON FIND_IN_SET(rex_newsmanager_categories.id, REPLACE(REPLACE(rex_newsmanager.newsmanager_category_id, '|', ','), ' ', '')) > 0; +``` ![Screenshot](https://raw.githubusercontent.com/FriendsOfREDAXO/newsmanager/assets/screenshot.png) Dieses AddOn stellt eine einfache Newsverwaltung bereit. Dabei werden die Beiträge in einer eigenen Tabelle abgelegt. -## Beschreibung - -Die Kernfunktion ist die Verwaltung von Newsartikeln. Man kann Kategorien festlegen und die Artikel dann einer oder mehreren Kategorien zuordenen. - -Für eine einfache Ausgabe der Artikel und Artikellisten sind einige Funktionen vorhanden. Man kann aber die Ausgabe auch über Datenbankabfragen realisieren. - -Alle zukünftige Funktionen werden über Plugins eingebunden. Das erste Plugin realisiert eine Kommentarfunktioalität. - -**Derzeitige Funktionen:** - -* Kategorien -* Mehrsprachigkeit -* RSS Feed -* Kommentare (via Plugin) - -### Installation - -Einfach das AddOn nach `/redaxo/src/addons/` kopieren und im AddOns-Bereich installieren. - -**Das AddOn benötigt folgende AddOns:** - -* [redaxo_url V.2](https://github.com/tbaddade/redaxo_url) (für "sprechende" URLs) -* [redactor2](https://github.com/FriendsOfREDAXO/redactor2) (optional, macht aber Sinn wenn man Richtext im Artikel verwenden will). - -Das AddOn enthält eine Einstellungsseite. Hier sollten Sie die Kategorie auswählen, in welcher im Startartikel die Artikelliste und die Artikelansicht ausgegben wird. Beim Klick auf "Einstellungen speichern" wird (falls vorhanden) ein Profil für das redactor2-AddOn sowie die Einstellungen für das url-AddOn angelegt. - -### Template anpassen - -Man kann natürlich einfach eine entsprechende Datenbank Abfrage machen und sich selbst um die Ausgabe kümmern. Wie das geht, kann man in der REDAXO Doku nachlesen. - -Es gibt aber auch Funktionen, die sich um die Ausgabe kümmern. Hier ein paar Beispiele für die Verwendung dieser Klassenfunktionen (Listen- und Singleansicht in einem einzigen Template): - - -**Headerbereich:** - -```php -$newsmanager = new NewsManager(); - -// Mit aktiviertem Kommentarplugin: -// $newsmanager = new NewsManagerWithComments(); - -// Laden des JS falls mit Kommentarfuntion (and Ende des ) -isAvailable()) && (get_class($newsmanager) == 'NewsManagerWithComments')) { - echo $newsmanager->getCommentJavaScript(); - } -?> - -// --------------------------- - - -$news_id = $newsmanager->getNewsIdParameter(); - -if ($news_id) { - - // Artikel-Ansicht - - $article_post = $newsmanager->getArticleById($news_id); - - echo $article_post->getSEOTitleTag(); - echo $article_post->getDescriptionTag(); - echo $article_post->getCanonicalUrlTag($this->getValue('article_id')); - echo $article_post->getHrefLangTag ($article_post->getId()); - -} else { - - // Artikel-Listenansicht - - $seo = new rex_yrewrite_seo(); - - echo $seo->getTitleTag(); - echo $seo->getDescriptionTag(); - echo $seo->getRobotsTag(); - echo $seo->getHreflangTags(); - echo $seo->getCanonicalUrlTag(); - -} -``` - -RSS Link (falls gewünscht): - -```php -echo $newsmanager->getRssHeaderLink(); -``` - -**Artikel-Ansicht und Artikel-Listenansicht** - -```php -if ($news_id) { - - // Artikel-Ansicht - - echo $newsmanager->printSingleView($article_post); - // Mit aktiviertem Kommentarplugin: - // echo $newsmanager->getCommentList($article_post->getPid()); - // echo $newsmanager->getCommentForm($article_post->getPid()); - -} else { - - // Artikel-Listenansicht - - echo '

' . $this->getValue("name") . '

'; - - // Ausgabe 10 Artikel, alle weiteren paginiert - - echo $newsmanager->printListView($this->getValue('article_id'), 10); - -} -``` - -**Kategorie Menü** - -```php -echo $newsmanager->printCategoryMenu(); -``` - -### Ausgabe anpassen - -Den Quellcode für die Ausgabe kann man auch anpassen. -Es gibt dafür sog. Views, also HTML/PHP Schnipsel die in `/redaxo/data/addons/newsmanager/views/` bzw. für die Kommentare -unter `/redaxo/data/addons/newsmanager/views/comments/views/` abgelegt sind. - -**Ausgabe als Modul** - -Zum Beispiel Teaser der letzten drei Artikel: - -```php -// Ausgabe der Newsartikel -$newsmanager = ''; -$newsmanager = new NewsManager(); -// Listenansicht -echo $newsmanager->printTeaserListView($this->getValue('article_id'), 3); -``` - ## Lizenz siehe [LICENSE](https://github.com/FriendsOfREDAXO/newsmanager/blob/master/LICENSE) @@ -147,9 +112,5 @@ siehe [LICENSE](https://github.com/FriendsOfREDAXO/newsmanager/blob/master/LICEN **Friends Of REDAXO** -* https://www.redaxo.org -* https://github.com/FriendsOfREDAXO - -**Projekt-Lead** - -[Tizian Bauer](https://github.com/ansichtsache) +* +* diff --git a/migration.sql b/migration.sql new file mode 100644 index 0000000..bc4cecd --- /dev/null +++ b/migration.sql @@ -0,0 +1,39 @@ +INSERT INTO rex_neues_category + (id, name, image, status, createuser, createdate, updateuser, updatedate) +SELECT + pid, + name, + '', + '1', + createuser, + createdate, + updateuser, + updatedate +FROM rex_newsmanager_categories; + +INSERT INTO rex_neues_entry + (id, status, name, teaser, description, domain_ids, lang_id, publishdate, author_id, url, image, images, createdate, createuser, updatedate, updateuser) +SELECT + pid, + IF(status=1, '1', '0'), + title, + subtitle, + richtext, + '', + clang_id, + createdate, + 0, + seo_canonical, + '', + images, + createdate, + createuser, + updatedate, + updateuser +FROM rex_newsmanager; + +INSERT INTO rex_neues_entry_category_rel (entry_id, category_id) +SELECT rex_newsmanager.pid , rex_newsmanager_categories.id +FROM rex_newsmanager +INNER JOIN rex_newsmanager_categories +ON FIND_IN_SET(rex_newsmanager_categories.id, REPLACE(REPLACE(rex_newsmanager.newsmanager_category_id, '|', ','), ' ', '')) > 0; diff --git a/package.yml b/package.yml index 1e9685a..f2f6ee1 100755 --- a/package.yml +++ b/package.yml @@ -1,7 +1,5 @@ -# Alle hier gesetzten Werte können über $addon->getProperty($key) abgefragt werden - package: newsmanager -version: '3.0.3' +version: '3.1.0' author: Friends Of REDAXO supportpage: https://github.com/FriendsOfREDAXO/newsmanager/ @@ -15,11 +13,13 @@ page: settings: { perm: 'newsmanagersettings[]', title: 'translate:settings', icon: rex-icon fa-wrench } requires: - redaxo: '^5.4' # benötigt mindestens REDAXO 5.4 + redaxo: '^5.15' packages: - url: '>1.0.0' # benötig Addon redaxo_url V.2 + neues: '^4' + url: '^2' + yform: '^4' php: - version: '>=5.6' # benötigt mindestens PHP 5.6 + version: '>=7.3' conflicts: packages: url: '<=2.0.0' diff --git a/update.php b/update.php index cfff674..00ed8c4 100755 --- a/update.php +++ b/update.php @@ -31,3 +31,7 @@ ->ensureColumn(new rex_sql_column('updatedate', 'datetime')) ->setPrimaryKey('pid') ->ensure(); + +/* Migrate data from newsmanager to friendsofredaxo\neues */ +$query = rex_file::get(rex_path::addon('newsmanager', 'migration.sql')); +rex_sql::factory()->setQuery($query); From f53a5e2420cafce0986bf272e7293d5896ea1d61 Mon Sep 17 00:00:00 2001 From: Alexander Walther Date: Sun, 17 Dec 2023 14:59:34 +0100 Subject: [PATCH 2/6] Update README.md --- README.md | 47 ++++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index fe78abe..c5986da 100755 --- a/README.md +++ b/README.md @@ -16,29 +16,30 @@ Wir danken Alex für die Bereitschaft, das Addon in die Hände von FriendsOfREDA ### Funktions-Parität und Unterschiede -Was | News Manager `3.0.3` | Neues `^4.0` ---- | --- | --- -Letzte Weiterentwicklung und Wartung | ❌ 28. Dez. 2022 | ✅ aktuell -REDAXO Core-Version | ab `^5.4` | ab `^5.15` -PHP-Version | ab `^5.6` | ab `^7.2` -Addon-Abhängigkeiten | URL ab `^2` | URL ab `^2`, YForm ab `^4`, YForm Field ab `^2` -Position im Backend | `Addons > News Manager` | `Aktuelles` (oben) -News-Übersicht | ✅ `News Manager > "News anlegen"` | ✅ `Aktuelles > Einträge` -Kategorien | ✅ `News Manager > "Kategorien"` | ✅ `Aktuelles > Kategorien` -Kommentare | ✅ als Plugin: `News Manager > "Kommentare"` | ❌ nein -Autoren | ❌ nein | `Aktuelles > Autoren` -Mehrsprachigkeit | ✅ `News Manager > (Sprache auswählen)` | ✅ `Aktuelles > Sprachen` -Dokumentation | ✅ als Plugin | ✅ `Aktuelles > Hilfe` -Einstellungen | ❌ nein | ✅ `Aktuelles > Einstellungen` -WYSIWYG-Editor | ✅ ausschließlich `redactor2` | ✅ frei wählbar (`cke5`, `redactor`, `markitup`, `tinymce`) -Backend-Sprachen | `de,en,es,se` | `de,en,es,se` -RSS | ✅ ja | 🚧 in Arbeit -Fertige Fragmente | ✅ ja | 🚧 in Arbeit -Multi-Domain-Unterstützung | ❌ über Umwege | ✅ ja -YOrm-Model | ❌ nein | ✅ ja (News-Einträge, Kategorien, Autoren, Sprachen) -CSV-Import | ❌ nein | ✅ ja (via YForm) -CSV-Export | ❌ nein | ✅ ja (via YForm) -RESTful API | ❌ nein | ✅ ja (via YForm) +| Was | News Manager `3.0.3` | Neues `^4.0` | +| ------------------------------------ | ------------------------------------------- | ---------------------------------------------------------- | +| Letzte Weiterentwicklung und Wartung | ❌ 28. Dez. 2022 | ✅ aktuell | +| REDAXO Core-Version | ab `^5.4` | ab `^5.15` | +| PHP-Version | ab `^5.6` | ab `^7.2` | +| Addon-Abhängigkeiten | URL ab `^2` | URL ab `^2`, YForm ab `^4`, YForm Field ab `^2` | +| Position im Backend | `Addons > News Manager` | `Aktuelles` (oben) | +| News-Übersicht | ✅ `News Manager > "News anlegen"` | ✅ `Aktuelles > Einträge` | +| Kategorien | ✅ `News Manager > "Kategorien"` | ✅ `Aktuelles > Kategorien` | +| Kommentare | ✅ als Plugin: `News Manager > "Kommentare"` | ❌ nein | +| Autoren | ❌ nein | ✅ `Aktuelles > Autoren` | +| Beiträge zeitgesteuert veröffentlichen | ❌ nein | ✅ ja | +| Mehrsprachigkeit | ✅ `News Manager > (Sprache auswählen)` | ✅ `Aktuelles > Sprachen` | +| Dokumentation | ✅ als Plugin | ✅ `Aktuelles > Hilfe` | +| Einstellungen | ❌ nein | ✅ `Aktuelles > Einstellungen` | +| WYSIWYG-Editor | ✅ ausschließlich `redactor2` | ✅ frei wählbar (`cke5`, `redactor`, `markitup`, `tinymce`) | +| Backend-Sprachen | ✅`de,en,es,se` | ✅ `de,en,es,se,fr,it` | +| RSS | ✅ ja | 🚧 in Arbeit | +| Fertige Fragmente | ✅ ja | 🚧 in Arbeit | +| Multi-Domain-Unterstützung | ❌ über Umwege | ✅ ja | +| YOrm-Model | ❌ nein | ✅ ja (News-Einträge, Kategorien, Autoren, Sprachen) | +| CSV-Import | ❌ nein | ✅ ja (via YForm) | +| CSV-Export | ❌ nein | ✅ ja (via YForm) | +| RESTful API | ❌ nein | ✅ ja (via YForm) | ### Automatische Daten-Migration von News Manager zu Neues 4 From 123f9a88bed92a29f1db35816714df3d872938b6 Mon Sep 17 00:00:00 2001 From: Alexander Walther Date: Sun, 17 Dec 2023 15:23:51 +0100 Subject: [PATCH 3/6] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c5986da..f9f5040 100755 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ Wir danken Alex für die Bereitschaft, das Addon in die Hände von FriendsOfREDA | Autoren | ❌ nein | ✅ `Aktuelles > Autoren` | | Beiträge zeitgesteuert veröffentlichen | ❌ nein | ✅ ja | | Mehrsprachigkeit | ✅ `News Manager > (Sprache auswählen)` | ✅ `Aktuelles > Sprachen` | +| Eigene Felder hinzufügen | ❌ nein | ✅ ja (via YForm) | | Dokumentation | ✅ als Plugin | ✅ `Aktuelles > Hilfe` | | Einstellungen | ❌ nein | ✅ `Aktuelles > Einstellungen` | | WYSIWYG-Editor | ✅ ausschließlich `redactor2` | ✅ frei wählbar (`cke5`, `redactor`, `markitup`, `tinymce`) | From 09186fc5eb9a8c87d4a7f935f780cea874a803ef Mon Sep 17 00:00:00 2001 From: Alexander Walther Date: Sun, 17 Dec 2023 16:44:53 +0100 Subject: [PATCH 4/6] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f9f5040..dcdb3ab 100755 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ INSERT INTO rex_neues_entry (id, status, name, teaser, description, domain_ids, lang_id, publishdate, author_id, url, image, images, createdate, createuser, updatedate, updateuser) SELECT pid, - IF(status=1, '1', '0'), + IF(status=1, '1', '-1'), title, subtitle, richtext, From ce98f7c97167a345c7416c62a6067e00228fa0f8 Mon Sep 17 00:00:00 2001 From: Alexander Walther Date: Sun, 17 Dec 2023 16:45:08 +0100 Subject: [PATCH 5/6] Update migration.sql --- migration.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/migration.sql b/migration.sql index bc4cecd..bafc3aa 100644 --- a/migration.sql +++ b/migration.sql @@ -15,7 +15,7 @@ INSERT INTO rex_neues_entry (id, status, name, teaser, description, domain_ids, lang_id, publishdate, author_id, url, image, images, createdate, createuser, updatedate, updateuser) SELECT pid, - IF(status=1, '1', '0'), + IF(status=1, '1', '-1'), title, subtitle, richtext, From da72cc3e9f84479d44c9d8e3e8bfe2d420a4fb38 Mon Sep 17 00:00:00 2001 From: Alexander Walther Date: Sun, 17 Dec 2023 16:45:43 +0100 Subject: [PATCH 6/6] Update package.yml --- package.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/package.yml b/package.yml index f2f6ee1..72c1d4a 100755 --- a/package.yml +++ b/package.yml @@ -23,6 +23,7 @@ requires: conflicts: packages: url: '<=2.0.0' + neues: '<4.0.1' installer_ignore: - .git - .github