Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 10. März 2012 12:15

irrlicht
hat von CMS/ms gehört
Registriert: 10. März 2012
Beiträge: 5

[GELÖST] Newsbeiträge kopieren?

Hallo liebe Leute,

ich bastel seit einiger Zeit an einer Homepage für unsere Schule herum. Vieles funktioniert schon, doch wir würden gerne die Möglichkeit haben, einen Beitrag im Newsmodul zu kopieren, um ihn dann zu verändern und ihm eine andere Kategorie zuzuweisen. Oft sollen z.B. ganz ähnliche, aber nicht gleiche Beiträge für mehrere Klassen (=Kategorien) erstellt werden.

Ich weiß, dass das Blog-Modul mehre Kategorien für Einträge erlaubt, aber das ist nicht das Ziel.
Die Einträge sollen vielmehr kopiert werden, so dass sie dann möglicherweise im Text leicht verändert und einer anderen Kategorie zugeordnet werden können.

Per module_custom die admin-Ausgabe des news-Moduls umzuschreiben, traue ich mir zu (z.B. um einen Button mit entsprechendem Funktionsaufruf einzubauen), aber die für diese Aufgabe benötigten Funktionen, die ja sicher auf die Datenbank zugreifen müssen, sind für mich (noch) ein Buch mit sieben Siegeln.

Hat jemand von euch (wie ich) einen ausgeprägten Spieltrieb und (im Gegensatz zu mir) eine Idee? :-)

Beste Grüße!

Beitrag geändert von irrlicht (14. März 2012 18:28)

Offline

#2 10. März 2012 14:40

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: [GELÖST] Newsbeiträge kopieren?

Das ist nicht ganz so einfach wie Du denkst.
Einen Artikel zu kopieren bedeutet im Prinzip, eine neue Modulaktion zu schreiben.
Und das wiederum bedeutet, das News Modul so zu modifizieren, dass es nicht mehr Update-fähig ist bzw. man bei jedem Update wieder erneut Hand anlegen muss.

Ansatz:
In der Datei action.defaultadmin.php muss ein Kopierlink erstellt und an Smarty übergeben werden. Dieser Link übergibt die Artikel-ID an eine Modulaktion namens z.B. 'copyarticle'.
Im Template articlelist.tpl muss in der Tabelle eine weitere Spalte hinzugefügt werden wo dann für jeden Artikel der Kopierlink reinkommt.
Dann braucht man eine neue Datei action.copyarticle.php in der mit Hilfe der Artikel-ID die Daten des Artikels, die Kategorie und alle zugehörigen benutzerdefinierten Felder aus der Datenbank ausgelesen werden. Aus diesen Daten wird dann ein Parameter-Array erstellt welches einfach an die Aktion 'addarticle' übergeben wird. Somit wird ein neuer Artikel erstellt, der aber bereits die Daten des zu kopierenden Artikels enthält.

Bleibt die Frage, ob sich der Aufwand wirklich lohnt.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#3 10. März 2012 14:55

nicmare
Server-Pate
Registriert: 15. Dezember 2010
Beiträge: 1.314
Webseite

Re: [GELÖST] Newsbeiträge kopieren?

NaN, ich denke mal laut:
kann man das nicht vielleicht über einen Umweg machen. Man legt die Kopierbuttons im template an und diese verweisen lediglich auf "neuen artikel" anlegen. dabei wird die ID des Artikels mit übergeben. nun sind ja alle felder erstmal leer (logisch). kann man vielleicht mit xajax oder sonstwas auf die Datenbank zugreifen und die Felder mittels der ID des ursprünglichen Artikels füllen?

Offline

#4 10. März 2012 15:29

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: [GELÖST] Newsbeiträge kopieren?

oder sonstwas

Das gefällt mir!
So machen wir's!

Wenn es derartige Schnittstellen gäbe, wäre das vielleicht auch eine Möglichkeit. Gibt es aber leider nicht. Die bloße Präsenz von Xajax im Backend bringt uns da nicht weiter. Denn es gibt auf dem Server keine Funktion, die einen Datensatz aus der Datenbank ausliest und in der Form zurückgibt, dass man daraus im Template mit Javascript irgendwas sinnvolles machen könnte.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#5 10. März 2012 18:42

irrlicht
hat von CMS/ms gehört
Registriert: 10. März 2012
Beiträge: 5

Re: [GELÖST] Newsbeiträge kopieren?

Vielen Dank für die Antworten!

Tja, wenn der Weg über das template ausscheidet, wird es, wie du geschrieben hast, NaN, natürlich umfangreich. Ob der Aufwand sich lohnt, muss ich sehen, aber probieren würde ich es gerne.

Du schreibst von der neuen Funktion in action.copyarticle.php -dazu wäre meine Frage: Wie bekomme ich die Datenbankeinträge in ein solches Array? Die wiki-Informationen zum Arbeiten mit Datenbanken haben mich eher verwirrt als geholfen.

Offline

#6 10. März 2012 18:56

nicmare
Server-Pate
Registriert: 15. Dezember 2010
Beiträge: 1.314
Webseite

Re: [GELÖST] Newsbeiträge kopieren?

du kannst mal den programmierer calguy1000 um ein payed feature request fragen. ich habe mal eine kopierfunktion in company directory modul kostenpflichtig einfügen lassen. wenn du das CGblog modul statt dem news modul benutzt, könnte es dann was werden. für calguy wäre das ja keine riesen sache. ich glaube da ersparst du dir ne menge stress, wenn die funktion wirklich haben willst.

Offline

#7 11. März 2012 17:35

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: [GELÖST] Newsbeiträge kopieren?

In etwa so müsste das ganze aussehen:
News-mod-copyarticle.zip

PS: hab übrigens im AjaxTools Plugin (SVN) eine Funktion zum direkten Abfragen von DB Daten eingebaut wink


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#8 14. März 2012 18:24

irrlicht
hat von CMS/ms gehört
Registriert: 10. März 2012
Beiträge: 5

Re: [GELÖST] Newsbeiträge kopieren?

Wahnsinn!
Du bist super! Es funktioniert (fast) einwandfrei - vielen, vielen Dank!
PN checken... :-)

Einziger Bug: Datum und Zeit werden nicht richtig gesetzt, sondern es wird -unabhängig vom Datum im Original-  immer der 3. März genommen. Mh, der 3.3.... -> Habe das %D in action.copyarticle.php in Verdacht, mit %d geht es (%D=%m/%d/%y).

Für alle, die die Funktion ebenfalls interessiert:
Habe es zudem verändert, so dass die Kopie nicht das aktuelle Datum, sondern das Datum des Original-Eintrags trägt.
Dazu

durch

$postdate = $db->UnixTimeStamp($row['news_date']);

ersetzen.

All credits to NaN! Das ist echt großartig! Ohne deine Hilfe wär das nichts geworden.

Offline