Newsletter-Überarbeitung CVS

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Newsletter-Überarbeitung CVS

Beitrag von HerrB » Mo 25. Okt 2004, 13:45

So, dann wollen wir mal. Anbei die notwendigen Änderungen gegenüber dem CVS com 26.11.2004.

Achtung: Dies ist für Entwicklung, only. Es ist noch nicht offiziell und es gibt (noch) keinen Support.

Für die Verwendung im CVS gibt es wie für V4.5.x zwei Files: source_base.zip und sourceCVS.zip (letzte getestete CVS-Version: 26.22.2004).

Beide Files gibt es hier: source_base sourceCVS

Die source_base ist für CVS und V4.5.x identisch - nur die sourceCVS enthält andere Files und insbesondere ein anderes SQL-Skript in der db_update.txt.

In der mitgelieferten DB-Update-Datei müssen die Datenbank- und Tabellennamen (Prefix) und ggf. die ID angepasst werden (wenn es bereits Actions, Files usw. mit den IDs gibt). Weitere Hinweise gibt es in der in source_base enthaltenen LiesMich.txt.

Folgende Dateien müssen i.A. manuell geändert werden:

class.genericdb.php:
Siehe Datei in sourceCVS, es wird die Funktion flexselect ergänzt.

cfg_language_de.inc.php:
Neue Zeilen:

Code: Alles auswählen

$lngAct["news"]["news_save"]                   			= i18n("Edit newsletter"); 		/* HerrB */
$lngAct["news"]["news_create"] 					= i18n("Create newsletter");		/* HerrB */
$lngAct["news"]["news_delete"]					= i18n("Delete newsletter");
$lngAct["news_send"]["news_send"]				= i18n("Send newsletter");
/* HerrB: Old, not used
$lngAct["news_rcp"]["news_activatedeactivaterecipient"] 	= i18n("Activate/Deactivate recipient"); */
$lngAct["recipients"]["recipients_save"] 			= i18n("Edit recipient"); 		/* HerrB */
$lngAct["recipients"]["recipients_create"] 			= i18n("Create recipient");		/* HerrB */
$lngAct["recipients"]["recipients_delete"] 			= i18n("Delete recipient");
$lngAct["recipientgroups"]["recipientgroup_delete"] 		= i18n("Delete recipient group");	/* HerrB */
$lngAct["recipientgroups"]["recipientgroup_create"] 		= i18n("Create recipient group");	/* HerrB */
$lngAct["recipientgroups"]["recipientgroup_recipient_delete"]	= i18n("Delete recipient from group");	/* HerrB */
$lngAct["recipientgroups"]["recipientgroup_save_group"] 	= i18n("Save recipient group");		/* HerrB */
Entfallene Zeilen:

Code: Alles auswählen

$lngAct["news_rcp"]["news_deleterecipient"]               = i18n("Delete recipient");
$lngAct["news_rcp"]["news_activatedeactivaterecipient"]               = i18n("Activate/Deactivate recipient");
$lngAct["news"]["news_editnewsletter"]                   = i18n("Edit newsletter");
$lngAct["news"]["news_createnewsletter"] = i18n("Create newsletter");
$lngAct["news"]["news_delete"]                  = i18n("Delete newsletter");
$lngAct["news_send"]["news_send"]              = i18n("Send newsletter");
cfg_sql.inc.php

Code: Alles auswählen

$cfg["tab"]["news_groups"]                     = $cfg['sql']['sqlprefix']."_news_groups"; /* HerrB */
$cfg["tab"]["news_groupmembers"]               = $cfg['sql']['sqlprefix']."_news_groupmembers"; /* HerrB */
xml:
Änderungen in allen XML-Dateien für neue Area recipientgroups:

Code: Alles auswählen

            <recipients>Empfänger</recipients>
            <recipientgroups>Empfänger-Gruppen</recipientgroups>
        </extra>


ToDo:
- Aktualisierte Module (in Arbeit)
- Umstellung auf phpmailer-Klasse (geplant)
- Wahl zwischen Text und HTML-Newsletter (geplant)
- Integration HTML-Editor für HTML-Newsletter (geplant)
- Link zu Frontend Users (in Arbeit)

Bekannte Probleme:
- Bei Extras -> Newsletter bleibt in Frame 1 eine weiße Fläche. Ist ein Bug, siehe unten (Antwort emergence)

- Bisher ist eine Erweiterung der genericdb notwendig, um die benötigten Abfragen verwenden zu können. Ich werde dazu noch einen eigenen Thread ergänzen. Sollte es auch anders gehen, bin ich für Hinweise dankbar.

- In die Contenido-Setup-Routine müsste für Upgrade neben dem SQL für zusätzliche Spalten oder umbenannte Elemente auch ein entsprechender Code intergriert werden, der für alle Empfänger mit Len(hash) <> 30 die folgende Funktion ausführt:

Code: Alles auswählen

$item->set("hash", substr(md5(rand()),0,17) . uniqid("")); /* Generating UID, 30 characters */
Diese Funktion ist nun bereits in source_base integriert, Hinweis in LiesMich.txt beachten (die Änderung beim Upgrade sollte aber trotzdem mal gemacht werden, wenn diese Änderungen in Contenido einfließen sollten).

Informationen zu den Übersetzungen:
Neue Texte (kann Dubletten enthalten, sorry...):
- No recipients found
- -- new newsletter --
- Could not set new newsletter name: name already exists
- Welcome-Newsletter
- Link to change the e-mail adress
- Duplicate newsletter
- To whom do you want to send today?
- Send to all recipients
- Send to recipients in default group
- Send to recipients in selected groups
- Newsletter has been send ...
- Could not set new group name: Group already exists
- Confirmed
- Recipient groups
- Recipients in group
- Add recipients
- No recipients are added to this group yet
- Delete recipient group
- Do you really want to delete the following newsletter recipient group:<br>
- -- new recipient --
- %d recipients, which hasn't been confirmed since more than %d days has been removed.
- Could not set new e-mail adress: Other recipient with same e-mail adress already exists
- Purge recipients
- Do you really want to remove recipients, which hasn't been confirmed since %d days and over?

Geänderte Texte*:
- Alt: Do you really want to send the following newsletter:<br><b>%s</b>
- Neu: Do you really want to send the following newsletter:<br>
- Alt: Do you really want to delete the following recipient:<br><b>%s</b>
- Neu: Do you really want to delete the following recipient:<br>

* In der bisher verwendeten Technik (z.B. in Frontend Users) steht der volle Text mit eingebettetem Namen in jeder Zeile im Javascript und macht die Seite unnötig groß. Im Bereich Newsletter und Empfänger wird nun nur der Name an die JS-Funktion übergeben, in die der angegebene Text einmalig intergriert ist.

Änderungswünsche:
- Bei der deutschen Übersetzung zu "Name of the recipient" fehlt ein n in Empfänger
- Es wäre schön, wenn die Übersetzung zu "Note: Hold ctrl to select multiple items." in "Note: Hold <Ctrl> to<br>select multiple items." und entsprechend auch in deutsch geändert werden könnte; z.Z. ist der Text länger, als die Box breit ist.

Ich hoffe, ich habe nichts vergessen. Module folgen.

Gruß
HerrB
Zuletzt geändert von HerrB am Di 18. Jan 2005, 18:49, insgesamt 3-mal geändert.

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Do 28. Okt 2004, 06:51

Bekannte Probleme (Hilfe!):
- Bei Extras -> Newsletter bleibt in Frame 1 eine weiße Fläche. Der entsprechende Code:
cInclude("classes", "widgets/class.widgets.page.php");

$page = new cPageLeftTop();
$page->render();
in include.newsletter_left_top.php funktioniert in V4.5, nicht jedoch im CVS.
in contenido/templates/template.generic_page.html

findet sich momentan folgendes

Code: Alles auswählen

<html>
<head>
    <title></title>
    <script type="text/javascript" src="scripts/rowMark.js"></script>
    <script type="text/javascript" src="scripts/infoBox.js"></script>
    <script type="text/javascript" src="scripts/general.js"></script>
	{SCRIPTS}
    <link rel="stylesheet" type="text/css" href="styles/contenido.css" />
</head>
<body style="margin:{MARGIN}px; {EXTRA}">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td>
{CONTENT}
</td></tr>
</table>
</div>
</body>
</html>
sollte meiner meinung nach nur folgendes stehen...

Code: Alles auswählen

<html>
<head>
    <title></title>
    <script type="text/javascript" src="scripts/rowMark.js"></script>
    <script type="text/javascript" src="scripts/infoBox.js"></script>
    <script type="text/javascript" src="scripts/general.js"></script>
	{SCRIPTS}
    <link rel="stylesheet" type="text/css" href="styles/contenido.css" />
</head>
<body style="margin:{MARGIN}px; {EXTRA}">

{CONTENT}

</body>
</html>
und siehe da es ging ;-)
*** make your own tools (wishlist :: thx)

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Fr 29. Okt 2004, 12:32

Schmatz. Du willst gar nicht wissen, wie lange ich nach der Stelle gesucht habe...

Danke!

Gruß
HerrB

P.S.: Was uns natürlich zu der Frage bringt, warum das da drin ist/war... :wink:

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Fr 29. Okt 2004, 13:10

HerrB hat geschrieben:Was uns natürlich zu der Frage bringt, warum das da drin ist/war... :wink:
ich halte es schlichtweg für einen bug...
ich habs bei den anmerkungen zum snapshot ergänzt...
*** make your own tools (wishlist :: thx)

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Sa 4. Dez 2004, 16:34

Ich habe den ersten Text aktualisiert. Außerdem enthält er nun einen Hinweis auf die sourceCVS - falls jemand die Newsletter-Funktionen in aktuelleren Snapshots testen möchte.

Gruß
HerrB

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Do 6. Jan 2005, 15:55

HerrB hat geschrieben:Schmatz. Du willst gar nicht wissen, wie lange ich nach der Stelle gesucht habe...
Hmm da gab es einen guten Grund..und zwar irgendwie gab's nen Bug bei sowohl IE als auch Firefox...

Ausgangslage: Ein DIV im linken unteren Frame (Menü) wird auf 100% breite gesetzt. Wird das Frame resized, dann ist das DIV aber immer noch so breit wie das Frame vorher war - d.h. das DIV nimmt nur die Initialgröße an. Deshalb wurde ein Table drumherum gebaut, und schwupps - es ging...

Komisch ist nur, warum das bei euch weiß bleibt...

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Do 6. Jan 2005, 16:08

Das Problem tritt nur auf, wenn der Bereich kein Daten enthält (z.B. kein Icon, Link oder ähnliches).

Bei Statistik -> Zugriffe funktioniert es IMHO nur, weil dort noch die alte Template-Struktur verwendet wird.

Dieser Code wird für include.newsletter_left_top.php verwendet:

Code: Alles auswählen

cInclude("classes", "widgets/class.widgets.page.php");

$page = new cPageLeftTop();
$page->render();
Die entsprechende Funktion soll eigentlich eine leere, aber graue Fläche produzieren...

Dieser daraus resultierende HTML-Code funktioniert aber nicht (das /div am Ende ist aber raus):

Code: Alles auswählen

<!-- Generated by Contenido CVS_HEAD-->
<html>
<head>
    <title></title>
    <script type="text/javascript" src="http://www.btech.de/test/cCVS/contenido/scripts/rowMark.js"></script>
    <script type="text/javascript" src="http://www.btech.de/test/cCVS/contenido/scripts/infoBox.js"></script>
    <script type="text/javascript" src="http://www.btech.de/test/cCVS/contenido/scripts/general.js"></script>
	
    <link rel="stylesheet" type="text/css" href="http://www.btech.de/test/cCVS/contenido/styles/contenido.css" />
</head>
<body style="margin:px; ">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td>
<!-- Generated by Contenido CVS_HEAD-->
<table width="100%" height="100%" cellspacing="0" cellpadding="0" border="0">

    <tr valign="top">
        <td style="empty-cells: show; border:0px; border-bottom: 1px;border-style: solid; border-color: #747488;" bgcolor="#C6C6D5">
			<span id="m1" style="position: absolute; top: 0px; right: 0px;"><a id="m3" onclick="var doit = true; try { var i = get_registered_parameters() } catch (e) { doit = false; }; if (doit == true) { this.href += i; }" href="javascript:parent.parent.frameResize.toggle()"><img id="m2" alt="foo" title="foo" onmouseout="this.style.backgroundColor='#C6C6D5';this.style.borderColor = '#E8E8EE #747488 #747488 #E8E8EE';" onmousedown="this.style.backgroundColor='#A7A7B3';this.style.borderColor = '#747488 #E8E8EE #E8E8EE #747488';" onmouseup="this.style.backgroundColor='#C6C6D5';this.style.borderColor = '#E8E8EE #747488 #747488 #E8E8EE';" style="margin: 0px;padding: 0px;border: 0px;border-style: solid;border-color: #E8E8EE #747488 #747488 #E8E8EE;" src="http://www.btech.de/test/cCVS/contenido/images/toggle_frame_left.gif" border="0"></a></span>
        </td>
    </tr>

</table>
</td></tr>
</table>
</body>
</html>
Gruß
HerrB

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Do 6. Jan 2005, 16:22

hast du eine Ahnung warum das HTML nicht funktioniert?

Weil auf den ersten Blick kann ich da nichts erkennen...

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Do 6. Jan 2005, 16:31

ähm entweder man wirft die erste tabelle raus wie oben angegeben...

oder man müsste bei der ersten tabelle height="100%" ergänzen...
denk ich mir zumindestens...
*** make your own tools (wishlist :: thx)

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Do 6. Jan 2005, 18:52

ähm entweder man wirft die erste tabelle raus wie oben angegeben...
Geht!
oder man müsste bei der ersten tabelle height="100%" ergänzen...
Geht ... nicht. Löst zwar das eigentliche Problem, aber alle Daten im Frame links unten werden vertikal zentriert (also auf der Mitte der Seite) ausgegeben.

Tja, also ich bin für Lösung a) :wink:

Code: Alles auswählen

<html>
<head>
    <title></title>
    <script type="text/javascript" src="scripts/rowMark.js"></script>
    <script type="text/javascript" src="scripts/infoBox.js"></script>
    <script type="text/javascript" src="scripts/general.js"></script>
	{SCRIPTS}
    <link rel="stylesheet" type="text/css" href="styles/contenido.css" />
</head>
<body style="margin:{MARGIN}px; {EXTRA}">
{CONTENT}
</body>
</html>
(übrigens in contenido\templates\standard\template.generic_page.html...)

Gruß
HerrB

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Do 6. Jan 2005, 18:55

HerrB hat geschrieben:Geht ... nicht. Löst zwar das eigentliche Problem, aber alle Daten im Frame links unten werden vertikal zentriert (also auf der Mitte der Seite) ausgegeben.
Und wenn man beim ersten <td> im Template align="left" hineinschreibt?

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Do 6. Jan 2005, 18:56

Ich probiere es mal mit valign="top" (vertikal, nicht horizontal). Augenblick.

Please wait...loading...

Gruß
HerrB

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Do 6. Jan 2005, 19:01

achso, klar, vertikal...

das müsste dann funktionieren.

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Do 6. Jan 2005, 19:01

Geht!

Code: Alles auswählen

<html>
<head>
    <title></title>
    <script type="text/javascript" src="scripts/rowMark.js"></script>
    <script type="text/javascript" src="scripts/infoBox.js"></script>
    <script type="text/javascript" src="scripts/general.js"></script>
	{SCRIPTS}
    <link rel="stylesheet" type="text/css" href="styles/contenido.css" />
</head>
<table width="100%" height=100%" border="0" cellspacing="0" cellpadding="0"> 
<tr><td valign="top">
<body style="margin:{MARGIN}px; {EXTRA}">
{CONTENT}
</td></tr> 
</table>
</body>
</html>
Gruß
HerrB

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Do 6. Jan 2005, 19:04

OK, ist eingebaut und morgen im Snapshot dann auch drin.

Antworten