Seite 1 von 3

HTML-Newsletter von 4.6.23 in 4.6.15

Verfasst: Do 27. Mär 2008, 11:15
von Lupus
Hallo zusammen!

Ist es möglich, ohne komplettes Upgrade, dieses Feature in eine bestehende 4.6.15 Installation zu übertragen?

Vielen Dank!

Verfasst: Do 27. Mär 2008, 12:38
von tono
Warum hast Du Angst vor dem Upgrade?

Es ist sicherlich möglich, aber viel aufwändiger und fehleranfälliger als das komplette Upgrade. Außerdem sind zwischenzeitlich viele Sicherheitslöcher gestopft worden, die das Upgrade quasi zur Pflicht machen.

Verfasst: Do 27. Mär 2008, 12:54
von Lupus
Das ist eine Installation mit 3 Mandanten und 2 davon mit massivem Content auf einem grottenlahmen Strato-Server und einer veralteten PHP-Version. Ich musste schon modifizieren, um die 4.6.15 an's Laufen zu bringen.
Bevor ich ohne Garantie upgraden würde, müsste ich ein Backup ziehen und da sehe ich definitiv schwarz.
Die Kundin wollte um's Zerplatzen nicht wechseln... :(

Verfasst: Do 27. Mär 2008, 14:26
von tono
Puh, also theoretisch müsste es möglich sein, ausprobiert habe ich es nicht. Und ich wüsste auch keinen ders hat.

Verfasst: Do 27. Mär 2008, 14:37
von Lupus
... ich habe bereits die neuen classes
class.newsletter.groups.php
class.newsletter.jobs.php
class.newsletter.logs.php
class.newsletter.php
class.newsletter.recipients.php
aus einer 4.6.23 Installation und die class.input.helper.php in die Alte einkopiert.
Das Modul ist auch angelegt und im Template eingebunden und konfiguriert.
Aber unter Extras/Newsletter wird mir nach wie vor die alte Maske angezeigt ... :cry:

Verfasst: Do 27. Mär 2008, 15:23
von tono
Du brauchst mindestens noch contenido/includes/include.newsletter_*.php und include.recipients_*.php. In diesen Dateien sind die Bearbeitungsmasken.

Was sonst noch fehlen könnte sollte HerrB besser wissen.

Verfasst: Do 27. Mär 2008, 15:44
von Lupus
Vielen Dank Tono!!!

gut, die beiden Buttons noch:
contenido/images/newsletter_dispatch_16.gif, newsletter_dispatch_16_off.gif, newsletter_sendtest_16.gif, newsletter_sendtest_16_off.gif

Läuft soweit schonmal, nur bei der Typauswahl habe ich bisher nur "Text only" stehen...
Schaue mal weiter ...

Verfasst: Do 27. Mär 2008, 19:34
von Lupus
So, die Übersetzung lag in der contenido/locale/de_DE/LC_MESSAGES/contenido.po

... und (Asche auf mein Haupt) die Auswahl funktioniert durch die Aktivierung unter "Einstellungen" nun auch... :oops:
Nun fehlt mir lediglich das horizontale Menü "Bearbeiten + Nachricht bearbeiten", was in der include.newsletter_subnav.php enthalten ist ...

Hat noch jemand einen Tipp ???

Verfasst: Do 27. Mär 2008, 22:21
von tono
in contenido/templates gibts noch Dateien die "newsletter" und "recipients" enthalten.

Verfasst: Do 27. Mär 2008, 22:31
von Lupus
Das war's leider auch nicht Tono ... trotzdem Danke !!!
Ich bin inzwischen bei der con_files gelandet, aber auch da haben die Ergänzungen nichts gebracht.
Zudem habe ich ein neues Problem entdeckt; die Typ-Auswahl (html oder Text) wird im Frame zwar nach dem Speichern (Aktualisieren) zwar übernommen, aber nach dem erneuten Aufruf über die Newsletterauswahl ist es wieder flöten gegangen.

Ist wohl doch etwas tiefergehend ... :cry:

Verfasst: Do 27. Mär 2008, 23:32
von HerrB
Ähm, ja.

Ich bin mir nicht sicher, ob ich selbst alles zusammenbekomme, aber ich kann es versuchen. Auf eigene Gefahr, keine Garantie, keine Zeit und ein Backup der Dateien und der DB ist eine unglaublich gute Idee. Und eine Dokumentation der Änderungen in der DB...

classes:

Code: Alles auswählen

class.newsletter.php
class.newsletter.groups.php
class.newsletter.jobs.php
class.newsletter.logs.php
class.newsletter.recipients.php
class.phpmailer.php
class.smtp.php
classes/contenido:

Code: Alles auswählen

class.clientslang.php
class.client.php
includes:

Code: Alles auswählen

include.clientsettings.php (weiß nicht, ob man in V4.6.15 schon sprachabhängige Mandanteneinstellungen machen konnte)
include.newsletter_edit.php
include.newsletter_edit_message.php
include.newsletter_jobs_subnav.php
include.newsletter_jobs_menu.php
include.newsletter_left_top.php
include.newsletter_jobs_details.php
include.newsletter_menu.php
include.newsletter_subnav.php
include.recipients_edit.php
include.recipients.group_edit.php
include.recipients_import.php (hier muss eine Korrektur durchgeführt werden, siehe unten)
include.recipients_menu.php
include.recipients.group_menu.php
include.recipients.group.subnav.php
images:

Code: Alles auswählen

newsletter_dispatch_16_off.gif
newsletter_sendtest_16_off.gif
newsletter_16_off.gif
newsletter_16.gif
Korrektur in include.recipients_import.php:
Statt

Code: Alles auswählen

$sGroupName = str_replace(str_split(" \t\n\r\0\x0B;"), "", $oRcpGroup->get("groupname"));
dies setzen:

Code: Alles auswählen

	$sGroupName = $oRcpGroup->get("groupname");
	$sGroupName = str_replace(" ", "", $sGroupName);
	$sGroupName = str_replace("\t", "", $sGroupName);
	$sGroupName = str_replace("\n", "", $sGroupName);
	$sGroupName = str_replace("\r", "", $sGroupName);
	$sGroupName = str_replace("\0", "", $sGroupName);
	$sGroupName = str_replace("\x0B;", "", $sGroupName);


Jetzt kommt der schwierige Teil, die DB-Aktualisierungen. Persönlich würde ich Dir empfehlen, die folgenden Zeilen in die angegebene Datei im Setup-Verzeichnis (eines V4.6.15-Setups!) einzufügen (und dabei ggf. vorhandene, ähnliche Einträge zu ersetzen! Die sind überall vertreuselt!) und das Setup mit "Upgrade" durchlaufen zu lassen. Ich erkläre auch unten nochmal was die Einträge bedeuten, aber das mit der Hand nachzuziehen, ist ... ähm ... anstrengend.

data/tables.txt:

Code: Alles auswählen

"news";"idnews";"int(10)";"";"PRI";"0";"";"1"
"news";"idclient";"int(10)";"";"";"0";"";""
"news";"idlang";"int(10)";"";"";"0";"";""
"news";"idart";"int(10)";"";"";"0";"";""
"news";"template_idart";"int(10)";"";"";"0";"";""
"news";"type";"varchar(10)";"";"";"text";"";""
"news";"name";"varchar(255)";"";"";"";"";""
"news";"subject";"text";"YES";"";"";"";""
"news";"message";"longtext";"YES";"";"";"";""
"news";"newsfrom";"varchar(255)";"";"";"";"";""
"news";"newsfromname";"varchar(255)";"YES";"";"";"";""
"news";"newsdate";"datetime";"YES";"";"";"";""
"news";"welcome";"tinyint(1)";"";"";"0";"";""
"news";"use_cronjob";"tinyint(1)";"";"";"0";"";""
"news";"send_to";"varchar(32)";"";"";"all";"";""
"news";"send_ids";"text";"YES";"";"";"";""
"news";"dispatch";"tinyint(1)";"";"";"0";"";""
"news";"dispatch_count";"int(5)";"";"";"50";"";""
"news";"dispatch_delay";"int(5)";"";"";"5";"";""
"news";"author";"varchar(32)";"";"";"";"";""
"news";"created";"datetime";"";"";"0000-00-00 00:00:00";"";""
"news";"modified";"datetime";"";"";"0000-00-00 00:00:00";"";""
"news";"modifiedby";"varchar(32)";"";"";"";"";""
"news_log";"idnewslog";"int(10)";"";"PRI";"0";"";"1"
"news_log";"idnewsjob";"int(10)";"";"";"0";"";""
"news_log";"idnewsrcp";"int(10)";"";"";"0";"";""
"news_log";"rcpname";"varchar(255)";"";"";"";"";""
"news_log";"rcpemail";"varchar(255)";"";"";"";"";""
"news_log";"rcphash";"varchar(32)";"";"";"";"";""
"news_log";"rcpnewstype";"tinyint(1)";"";"";"0";"";""
"news_log";"status";"varchar(255)";"";"";"";"";""
"news_log";"sent";"datetime";"";"";"0000-00-00 00:00:00";"";""
"news_log";"created";"datetime";"";"";"0000-00-00 00:00:00";"";""
"news_jobs";"idnewsjob";"int(10)";"";"PRI";"0";"";"1"
"news_jobs";"idclient";"int(10)";"";"";"0";"";""
"news_jobs";"idlang";"int(10)";"";"";"0";"";""
"news_jobs";"idnews";"int(10)";"";"";"0";"";""
"news_jobs";"status";"tinyint(1)";"";"";"0";"";""
"news_jobs";"use_cronjob";"tinyint(1)";"";"";"0";"";""
"news_jobs";"started";"datetime";"";"";"0000-00-00 00:00:00";"";""
"news_jobs";"finished";"datetime";"";"";"0000-00-00 00:00:00";"";""
"news_jobs";"name";"varchar(255)";"";"";"";"";""
"news_jobs";"type";"varchar(10)";"";"";"text";"";""
"news_jobs";"encoding";"varchar(32)";"";"";"iso-8859-1";"";""
"news_jobs";"newsfrom";"varchar(255)";"";"";"";"";""
"news_jobs";"newsfromname";"varchar(255)";"";"";"";"";""
"news_jobs";"newsdate";"datetime";"YES";"";"0000-00-00 00:00:00";"";""
"news_jobs";"subject";"text";"YES";"";"";"";""
"news_jobs";"idart";"int(10)";"";"";"0";"";""
"news_jobs";"message_text";"longtext";"";"";"";"";""
"news_jobs";"message_html";"longtext";"YES";"";"";"";""
"news_jobs";"send_to";"text";"";"";"";"";""
"news_jobs";"dispatch";"tinyint(1)";"";"";"0";"";""
"news_jobs";"dispatch_count";"int(5)";"";"";"50";"";""
"news_jobs";"dispatch_delay";"int(5)";"";"";"5";"";""
"news_jobs";"author";"varchar(32)";"";"";"";"";""
"news_jobs";"authorname";"varchar(32)";"";"";"";"";""
"news_jobs";"rcpcount";"int(10)";"";"";"0";"";""
"news_jobs";"sendcount";"int(10)";"";"";"0";"";""
"news_jobs";"created";"datetime";"";"";"0000-00-00 00:00:00";"";""
"news_jobs";"modified";"datetime";"";"";"0000-00-00 00:00:00";"";""
"news_jobs";"modifiedby";"varchar(32)";"";"";"";"";""
"news_groupmembers";"idnewsgroupmember";"int(10)";"";"PRI";"0";"";"1"
"news_groupmembers";"idnewsgroup";"int(10)";"";"";"0";"";""
"news_groupmembers";"idnewsrcp";"int(10)";"";"";"0";"";""
"news_groups";"idnewsgroup";"int(10)";"";"PRI";"0";"";"1"
"news_groups";"idclient";"int(10)";"";"";"0";"";""
"news_groups";"idlang";"int(10)";"";"";"0";"";""
"news_groups";"groupname";"varchar(32)";"";"";"";"";""
"news_groups";"defaultgroup";"tinyint(1)";"";"";"0";"";""
"news_rcp";"idnewsrcp";"int(10)";"";"PRI";"0";"";"1"
"news_rcp";"idclient";"int(10)";"";"";"0";"";""
"news_rcp";"idlang";"int(10)";"";"";"0";"";""
"news_rcp";"email";"varchar(255)";"YES";"";"";"";""
"news_rcp";"confirmed";"tinyint(1)";"";"";"0";"";""
"news_rcp";"confirmeddate";"datetime";"";"";"0000-00-00 00:00:00";"";""
"news_rcp";"lastaction";"varchar(32)";"YES";"";"";"";""
"news_rcp";"name";"varchar(255)";"YES";"";"";"";""
"news_rcp";"hash";"varchar(32)";"";"";"";"";""
"news_rcp";"deactivated";"tinyint(1)";"";"";"0";"";""
"news_rcp";"news_type";"tinyint(1)";"";"";"0";"";""
"news_rcp";"author";"varchar(32)";"";"";"";"";""
"news_rcp";"created";"datetime";"";"";"0000-00-00 00:00:00";"";""
"news_rcp";"lastmodified";"datetime";"";"";"0000-00-00 00:00:00";"";""
"news_rcp";"modifiedby";"varchar(32)";"";"";"";"";""
Für eine manuelle Anlage, z.B. via phpMyAdmin:
1. Eintrag: Name der Tabelle ohne Prefix
2. Eintrag: Name der Spalte
3. Eintrag: Typ und Größe
4. Eintrag: Null?
5. Eintrag: Primary Key?
6. Eintrag: Standardwert
Weitere: Ignorieren

Es sind die kompletten Tabellendeklarationen angegeben - in den meisten Fällen genügt es, einzelne Spalten zu ergänzen.

Die folgenden Änderungen machen sich per Hand und mit phpMyAdmin ganz gut:
In _actions jeweils auf den zweiten Wert als Area filtern (z.B. 16, 50, etc.). Es muss folgende Einträge geben, fehlende ergänzen:

Code: Alles auswählen

'337', '16', '', 'news_save', '', '', '1'
'338', '16', '', 'news_create', '', '', '1'
'339', '16', '', 'news_delete', '', '', '1'
'434', '16', '', 'news_add_job', '', '', '1'
'435', '16', '', 'news_send_test', '', '', '0'
'439', '16', '', 'news_html_settings', '', '', '1'
'427', '16', '', 'news_duplicate', '', '', '0'
'341', '50', '', 'recipients_save', '', '', '1'
'342', '50', '', 'recipients_create', '', '', '1'
'343', '50', '', 'recipients_delete', '', '', '1'
'428', '50', '', 'recipients_purge', '', '', '0'
'422', '86', '', 'recipientgroup_delete', '', '', '1'
'423', '86', '', 'recipientgroup_create', '', '', '1'
'424', '86', '', 'recipientgroup_recipient_delete', '', '', '1'
'425', '86', '', 'recipientgroup_sa1ve_group', '', '', '1'
'436', '90', '', 'news_job_delete', '', '', '1'
'437', '90', '', 'news_job_details', '', '', '0'
'438', '90', '', 'news_job_detail_delete', '', '', '1'
'441', '90', '', 'news_job_run', '', '', '1'
'440', '91', '', 'recipients_import', '', '', '0'
'442', '91', '', 'recipients_import_exec', '', '', '0'
Bedauerlicherweise wirst Du Dich auf die erste hier angegebene Zahl nicht verlassen können, da es u.U. bereits entsprechende Actions in der DB gibt. Dann einfach die ID anhand der höchsten Zahl hochzählen (wenn Du Plugins verwendest, dann anhand der höchsten Zahl unter 10000 hochzählen).

In _area sicherstellen, dass folgende Areas existieren (hier müssen alle Angaben übereinstimmen, insbesondere die ID, erster Wert):

Code: Alles auswählen

'86', '0', 'recipientgroups', '1', '1', '0'
'90', 'news', 'news_jobs', '1', '1', '0'
'91', 'recipients', 'recipients_import', '1', '1', '0'
In _files diese Einträge prüfen und ggf. ergänzen:

Code: Alles auswählen

'114', '16', 'include.newsletter_subnav.php', 'main'
'189', '86', 'include.recipients.group_menu.php', 'main'
'190', '86', 'include.recipients.group.subnav.php', 'main'
'191', '86', 'include.recipients.group_edit.php', 'main'
'201', '90', 'include.newsletter_jobs_menu.php', 'main'
'202', '90', 'include.newsletter_jobs_details.php', 'main'
'203', '90', 'include.newsletter_jobs_subnav.php', 'main'
'204', '17', 'include.newsletter_edit_message.php', 'main'
'205', '91', 'include.recipients_import.php', 'main'
Es wäre wahnsinnig praktisch, wenn die IDs noch verfügbar wären (der erste Eintrag mit 114 müsste bereits vorhanden sein). Wenn nicht, wieder die IDs hochzählen - dieses Mal aber genau aufschreiben, für welche Datei welche ID verwendet wurde!

In _frame_files folgende Einträge prüfen (jetzt wird es hakelig):

Code: Alles auswählen

'196', '86', '2', '189'
'197', '86', '3', '190'
'198', '86', '4', '191'
'209', '90', '2', '201'
'210', '90', '4', '202'
'211', '90', '3', '203'
'212', '17', '4', '204'
'213', '91', '4', '205'
Die letzte Zahl entspricht dabei jeweils der ID aus der _files-Tabelle, die erste ID kann - wenn es nicht schon einen entsprechenden Eintrag mit der gleichen Area (zweiter Wert), Frame (dritter Wert) und Datei-ID (vierter Wert) gibt - beliebig hochgezählt werden.

Außerdem diesen Eintrag korrigieren (für den Eintrag in der Tabelle, der idarea = 16 und frame = 3 hat, idfile in 114 ändern):

Code: Alles auswählen

'118', '16', '3', '114'
In _nav_sub folgende Einträge prüfen:

Code: Alles auswählen

'81', '3', '86', '1', 'navigation/extra/recipientgroups', '1'
Und schon sind wir fertig...

(Neue Module einsetzen!)

Gruß
HerrB

Verfasst: Fr 28. Mär 2008, 12:15
von Lupus
Vielen Dank HerrB !!!!!!

Eben mal eine super Anleitung aus dem Gedächtnis gezaubert :)
Das ist wirklich ein klasse Forum !!!!

Ich setze mich gleich dran und berichte, wie es gelaufen ist!

LG, Lupus

Verfasst: Fr 28. Mär 2008, 13:07
von Lupus
Hab' schon ein Problemchen:

In der include.recipients_import.php finde ich nur diesen String:

Code: Alles auswählen

	$aFields[$sField]					= strtolower(htmlentities(trim(i18n("Group") . "_" . str_replace(str_split(" \t\n\r\0\x0B;"), "", $oRcpGroup->get("groupname")))));
statt diesen:

Code: Alles auswählen

$sGroupName = str_replace(str_split(" \t\n\r\0\x0B;"), "", $oRcpGroup->get("groupname"));
Ihr seht mich als :?:

Verfasst: Fr 28. Mär 2008, 17:55
von Lupus
Misst, ich habe alles bis auf die obere Geschichte durch, doch nun ist das Backend komplett in englisch und das Submenü ist nach wie vor nicht vorhanden. Aber zumindest wird die Typauswahl nun beibehalten.

Folgender Error:

Code: Alles auswählen

[28-Mar-2008 16:50:16] /cms/front_content.php?idcat=1&changelang=2&client=1 MySQL error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.public, 
                        C.idcatlang 
               
SELECT 
                            A.idcat, 
                            C.name 
                        C.public, 
                        C.idcatlang 
                        FROM 
                            con_cat_tree AS A, 
                            con_cat AS B, 
                            con_cat_lang AS C 
                        WHERE 
                            A.idcat     = B.idcat   AND 
                            B.idcat     = C.idcat   AND 
                            B.idclient  = '1' AND 
                            C.idlang    = '2'   AND 
                            C.visible   = '1'       AND 
                            B.parentid  = '0' 
                        ORDER 
                            BY A.idtree
[28-Mar-2008 16:50:16] /cms/front_content.php?idcat=1&changelang=2&client=1 next_record called with no query pending in Module ID 49. 
Mir wachsen graue Haare ... :cry:

Verfasst: Fr 28. Mär 2008, 18:08
von tono
Zum ersten Problem:
Füge das:

Code: Alles auswählen

   $sGroupName = $oRcpGroup->get("groupname");
   $sGroupName = str_replace(" ", "", $sGroupName);
   $sGroupName = str_replace("\t", "", $sGroupName);
   $sGroupName = str_replace("\n", "", $sGroupName);
   $sGroupName = str_replace("\r", "", $sGroupName);
   $sGroupName = str_replace("\0", "", $sGroupName);
   $sGroupName = str_replace("\x0B;", "", $sGroupName);
vor dem ein:

Code: Alles auswählen

   $aFields[$sField]               = strtolower(htmlentities(trim(i18n("Group") . "_" . str_replace(str_split(" \t\n\r\0\x0B;"), "", $oRcpGroup->get("groupname")))));
@HerrB: Das war in der 4.6.23 wohl noch nicht drin.