Dieser Code ist noch nicht fertig oder fehlerfrei. Bitte nicht verwenden, es gibt keinen Support, keine Hilfe, i.A. keine Antworten und der Code kann sich ständig ändern.
Er zeigt nur einen Zwischenstand und ist nur für V4.5 geeignet.
Alle Dateien gibt es hier: http://www.btech.de/temp/newsletter4.5/ ... 5_NEIN.zip
Auf geht's:
Classes:
Neu:
class.newsletter.recipients.php,
class.newsletter.php
class.newsletter.groups.php
Änderungen:
class.ui.php (die Änderung entspricht der Überarbeitung in nachfolgenden Versionen), da mit der vorhandenen Klasse keine "deaktivierten" Newsletter-Empfänger dargestellt werden konnten (roter Link):
Code: Alles auswählen
class Link
...
var $content;
var $attributes;
...
function updateAttributes ($attributes)
{
$this->attributes = $attributes;
}
...
function render ()
...
$alt = " ";
}
if (is_array($this->attributes))
{
foreach ($this->attributes as $key => $value)
{
$attributes .= " $key=\"$value\" ";
}
}
...
switch ($this->type)
{
case "link":
$link = '<a target="'.$target.'"'.$alt.'href="'.$this->link.'"'.$attributes.'>';
break;
case "clink":
$link = '<a target="'.$target.'"'.$alt.'href="main.php?area='.$this->targetarea.
'&frame='.$this->targetframe.
'&action='.$this->targetaction.$custom."&contenido=".$sess->id.
'"'.$attributes.'>';
break;
case "multilink":
$tmp_mstr = '<a '.$alt.'href="javascript:conMultiLink(\'%s\', \'%s\', \'%s\', \'%s\')"'.$attributes.'>';
$mstr = sprintf($tmp_mstr, 'right_top',
$sess->url("main.php?area=".$this->targetarea."&frame=".$this->targetframe."&action=".$this->targetaction.$custom),
'right_bottom',
$sess->url("main.php?area=".$this->targetarea2."&frame=".$this->targetframe2."&action=".$this->targetaction2.$custom));
$link = $mstr;
break;
}
...
Neu:
include.recipients.group.subnav.php,
include.recipients.group_edit.php,
include.recipients.group_menu.php
Änderungen:
cfg_language_de.inc.php,
cfg_sql.inc.php,
include.recipients_edit.php,
include.recipients_left_top.php,
include.recipients_menu.php,
include.newsletter_edit.php,
include.newsletter_left_top.php,
include.newsletter_menu.php,
include.newsletter_send.php
Die include.*-Dateien entsprechen mit keiner Zeile mehr dem alten Code, können also einfach überschrieben werden.
cfg_language_de.inc.php enthält die Texte für die neuen Actions und Änderungen in der Bezeichnung und Beschriftung:
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 */
Code: Alles auswählen
$cfg["tab"]["news_groups"] = $cfg['sql']['sqlprefix']."_news_groups"; /* HerrB */
$cfg["tab"]["news_groupmembers"] = $cfg['sql']['sqlprefix']."_news_groupmembers"; /* HerrB */
Änderungen in allen XML-Dateien für neue Area recipientgroups:
Code: Alles auswählen
<recipients>Empfänger</recipients>
<recipientgroups>Empfänger-Gruppen</recipientgroups>
</extra>
DB:
Änderungen in der DB sind in der db_update.txt angegeben. Im Skript muss der Datenbank-Name angepasst werden. Außerdem muss beachtet werden, ob die neuen DB-IDs stimmen. Es wurde nicht getestet, ob das ein lauffähiges Skript ist.
Neue Features:
- Komplette Umstellung des Newsletter-Bereichs auf Klassen,
- Newsletter können kopiert werden,
- Empfänger-Gruppen,
- Spezifizierung einer Standard-Empfänger-Gruppe möglich,
- Standard-Empfänger-Gruppe verfügt über * und steht am Anfang der Liste,
- Neue Empfänger werden autom. in Standard-Empfänger-Gruppe eingetragen,
- Übergabe der Newsletter-IDCatArt über Mandanteneingenschaft,
- Versenden des Newsletters an ausgewählte Gruppen,
- Löschen von alten, unbestätigten Empfängern ("purge"),
- Bestätigungsdatum wird erfasst,
- Willkommens-Newsletter-Eigenschaft wird in DB gespeichert,
- Willkommens-Newsletter verfügt über * und steht am Anfang der Liste,
- das nachträgliche Ändern der E-Mail-Adresse wäre möglich,
Korrekturen (Achtung!):
- MAIL_DATE und MAIL_TIME zeigen Sendedatum bzw. -zeit und nicht mehr das Datum, wann der Newsletter in der DB erzeugt wurde
- Die Newsletter werden nun nach Namen und nicht mehr nach Erstellung sortiert (Willkommens-Newsletter steht ggf. oben)
- Identifizierungs-Key kann nicht mehr geraten werden...
- Alter und neuer Key sind nicht identisch, neuer Key ist 30 Zeichen lang (damit ist die versehentliche Verwendung der alten Keys ohne Folgen)
- Als Speicherplatz für den Key wird die (z.Z. unbenutzte) Spalte 'hash' verwendet
- Für das Update (Setup von Contenido) muss eine Funktion ergänzt werden, die für alle Empfänger mit hash = NULL die folgende Funktion ausführt:
Code: Alles auswählen
$item->set("hash", substr(md5(rand()),0,17) . uniqid(""));
- Suchfunktion bei Empfängern
- Begrenzte Anzeige der Anzahl der angezeigten Empfänger (inkl. vor und zurück)
Erläuterung: Ist z.Z. mit der verwendeten UI-Klasse nicht machbar.
Damit ein Versenden eines Newsletters möglich ist, muss die idcatart der Blackbox-Modul-Seite als Mandanteneinstellung vorgenommen werden (Administration -> Mandanten -> Mandant wählen -> Mandanteneinstellungen):
Typ: Newsletter
Name: idcatart
Wert: <Die idcatart der Blackbox-Modul-Seite> (z.B. 45)
Ich hoffe, ich habe nix vergessen... Ach ja, die .po-Dateien müssen erweitert werden...
Gruß
HerrB