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:

Beitrag von HerrB »

Nun, zumindest meine vorherige Frage kann ich nun selbst beantworten: Mit dbUpgradeTable ist die Größenänderung kein Problem...

Anbei die convert_recipient_keys.php (ein Meilenstein in der Entwicklung... :wink:):

Code: Alles auswählen

<?php
/**********************************************************************************
* File      :   $RCSfile: convert_recipient_keys.php,v $
* Project   :   Contenido
* Descr     :   Add/Update newsletter recipient key on upgrade from Contenido 4.4.x to 4.5 or later
*
* Author    :   $Author: HerrB $
*               
* Created   :   06.02.2005
* Modified  :   $Date: 2005/02/06 09:56:00 $
*
* © four for business AG, www.4fb.de
*
* This file is part of the Contenido Content Management System. 
*
* $Id: convert_recipient_keys.php,v 1.0 2005/02/06 09:56:00 HerrB Exp $
***********************************************************************************/

include_once ('../includes/startup.php');

cInclude ("includes", 'functions.general.php');

cInclude ("includes", 'functions.i18n.php');
cInclude ("includes", 'functions.api.php');
cInclude ("includes", 'functions.general.php');
cInclude ("includes", 'functions.forms.php');

cInclude ("includes", 'cfg_sql.inc.php');

cInclude ("classes", 'class.xml.php');
cInclude ("classes", 'class.navigation.php');
cInclude ("classes", 'class.template.php');
cInclude ("classes", 'class.backend.php');
cInclude ("classes", 'class.notification.php');
cInclude ("classes", 'class.area.php');
cInclude ("classes", 'class.action.php');
cInclude ("classes", 'contenido/class.module.php');
cInclude ("classes", 'class.layout.php');
cInclude ("classes", 'class.treeitem.php');
cInclude ("classes", 'class.user.php');
cInclude ("classes", 'class.group.php');
cInclude ("classes", 'class.cat.php');
cInclude ("classes", 'class.client.php');
cInclude ("classes", 'class.inuse.php');
cInclude ("classes", 'class.table.php');

cInclude("classes", "class.newsletter.recipients.php");

i18nInit($cfg["path"]["contenido"].$cfg["path"]["locale"], $belang);
cInclude ("includes", 'cfg_language_de.inc.php');

$recipients = new RecipientCollection;
$updatedrecipients = $recipients->updateKeys();

echo $updatedrecipients . " recipients, with no or incompatible key has been updated.";
echo "<br>All done. Please remove this script.";

?>
Das Kopieren der Spalten lastmodified nach modified und das Löschen der Spalte für z.B. con_news_rcp ist da noch nicht drin, weil ich noch auf die Annahme der Überarbeitung der dbUpgradeTable hoffe.

Und die Liste der Übersetzungen, zunächst für deutsch:

Code: Alles auswählen

msgid "Note: Hold <Ctrl> to<br>select multiple items."
msgstr "Hinweis: Halten Sie <Ctrl> gedr&uuml;ckt, um<br>mehrere Elemente auszuwählen."

msgid "Newsletter to "
msgstr "Der Newsletter an "

msgid " could not be sent."
msgstr " konnte nicht gesendet werden."

msgid "Sent successfully"
msgstr "Erfolgreich versendet"

msgid "No recipients found"
msgstr "Keine Empf&auml;nger gefunden"

msgid "-- new newsletter --"
msgstr "-- Neuer Newsletter --"

msgid "Could not set new newsletter name: name already exists"
msgstr "Name konnte nicht ge&auml;ndert werden: Ein Newsletter gleichen Namens existiert bereits."

msgid "Welcome-Newsletter"
msgstr "Willkommen-Newsletter"

msgid "Special message tags (will be replaced when sending)"
msgstr "Spezielle Tags (werden beim Senden ersetzt)"

msgid "Link to change the e-mail adress"
msgstr "Link, um die Empf&auml;nger-E-Mail-Adresse zu &auml;ndern"

msgid "Do you really want to delete the following newsletter:<br>"
msgstr "Sind Sie sicher, dass Sie den folgenden Newsletter l&ouml;schen m&ouml;chten:<br>"

msgid "Duplicate newsletter"
msgstr "Newsletter kopieren"

msgid "To whom do you want to send today?"
msgstr "An wen soll der Newsletter gesendet werden?"

msgid "Send to all recipients"
msgstr "An alle Empf&auml;nger senden"

msgid "Send to recipients in default group"
msgstr "Nur an Empf&auml;nger in der Standardgruppe senden"

msgid "Send to recipients in selected groups"
msgstr "An die Empf&auml;nger aus den gew&auml;hlten Gruppen senden"

msgid "Newsletter has been sent ..."
msgstr "Der Newsletter wurde an folgende Empf&auml;nger gesendet:"

msgid "Confirmed"
msgstr "Best&auml;tigt"

msgid "Recipient groups"
msgstr "Empf&auml;nger-Gruppen"

msgid "Recipients in group"
msgstr "Empf&auml;nger in der Gruppe"

msgid "Add recipients"
msgstr "Empf&auml;nger hinzuf&uuml;gen"

msgid "No recipients are added to this group yet"
msgstr "Die Gruppe enth&auml;t z.Z. keine Empf&auml;nger"

msgid "Delete recipient group"
msgstr "Empf&auml;nger-Gruppe l&ouml;schen"

msgid "Do you really want to delete the following newsletter recipient group:<br>"
msgstr "Sind Sie sicher, dass Sie die folgende Gruppe l&ouml;schen m&ouml;chten:<br>"

msgid "-- new recipient --"
msgstr "-- Neuer Empf&auml;nger --"

msgid "%1$d recipients, which hasn't been confirmed since more than %2$d days has been removed."
msgstr "%1$d Empf&auml;nger, die ihre E-Mail-Adresse seit mehr als %2$d Tagen nicht best&auml;tigt haben, wurden gel&ouml;scht."

msgid "Could not set new e-mail adress: Other recipient with same e-mail adress already exists"
msgstr "E-Mail-Adresse konnte nicht ge&auml;ndert werden: Ein Empf&auml;nger mit der gleichen E-Mail-Adresse existiert bereits."

msgid "%d recipients, with no or incompatible key has been updated. Deactivate update function."
msgstr "%d Empf&auml;nger ohne bzw. mit inkompatiblen Schl&uuml;ssel wurden aktualisiert. Deaktivieren Sie die Update-Funktion."

msgid "Group:"
msgstr "Gruppe:"

msgid "Limit:"
msgstr "Limit:"

msgid "Back"
msgstr "Zur&uuml;ck"

msgid "Forward"
msgstr "Weiter"

msgid "Search:"
msgstr "Suche:"

msgid "Purge recipients"
msgstr "Empf&auml;nger aufr&auml;umen"

msgid "Save recipient group"
msgstr "&Auml;nderungen in Empf&auml;nger-Gruppe speichern"

msgid "Create recipient group"
msgstr "Empf&auml;nger-Gruppe erstellen"

msgid "Delete recipient from group"
msgstr "Empf&auml;nger aus Gruppe entfernen"

msgid "Do you really want to remove recipients, which hasn't been confirmed since %d days and over?"
msgstr "Wollen Sie wirklich alle Empf&auml;nger, die ihre E-Mail-Adresse seit mehr als %d Tagen nicht best&auml;tigt haben, l&ouml;schen?"

msgid "Do you really want to send the following newsletter:<br>"
msgstr "M&ouml;chten Sie wirklich den folgenden Newsletter versenden:<br>"

msgid "Do you really want to delete the following recipient:<br>"
msgstr "M&ouml;chten Sie wirklich den folgenden Empf&auml;nger l&ouml;schen:<br>"
Eigentlich braucht man für

Code: Alles auswählen

msgid "%1\\\$d recipients, which hasn't been confirmed since more than %2\\\$d days has been removed."
nicht drei \, jedoch hat es sonst nicht mit der Übersetzung funktioniert. "%1\\\$d recipients" wird mit i18n zu "%1\$d recipients" - ich hoffe, das geht so.

Zur Integration stellt nach wie vor emergence' Patch den letzten Stand dar, ich stelle noch ein Paket der geänderten Dateien zusammen, aber an DB und actions ändert sich nix mehr.

Gruß
HerrB
Zuletzt geändert von HerrB am Mo 14. Feb 2005, 02:04, insgesamt 4-mal geändert.
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

Ein paar Korrekturvorschlaege:
HerrB hat geschrieben: [...]

Code: Alles auswählen

msgid "To whom do you want to send today?"
msgstr "An wen soll der Newsletter gesendet werden?"
msgstr "An wen soll der Newsletter heute gesendet werden?"

Code: Alles auswählen

msgid "Send to all recipients"
msgstr "An alle Empf&auml;nger"
msgstr "An alle Empf&auml;nger senden"

Code: Alles auswählen

msgid "Send to recipients in default group"
msgstr "Nur an Empf&auml;nger in der Standardgruppe"
msgstr "Nur an Empf&auml;nger in der Standardgruppe senden"

[...]

Code: Alles auswählen

msgid "Add recipients"
msgstr "Empf&auml;nger hinzufügen"
msgstr "Empf&auml;nger hinzuf&uuml;gen"

Code: Alles auswählen

msgid "%d recipients, with no or incompatible key has been updated. Deactivate update function."
msgstr "%d Empf&auml;nger, ohne bzw. mit inkompatiblen Schl&uuml;ssel wurden aktualisiert. Dekativieren Sie die Update-Funktion."
msgid "%d recipients, with no or incompatible key has been updated. Deactivate update function."
msgstr "%d Empf&auml;nger ohne bzw. mit inkompatiblen Schl&uuml;ssel wurden aktualisiert. Deaktivieren Sie die Update-Funktion."

Code: Alles auswählen

msgid "Back"
msgstr "Zurück"
msgstr "Zur&uuml;ck"

Code: Alles auswählen

msgid "Do you really want to remove recipients, which hasn't been confirmed since %d days and over?"
msgstr "Wollen Sie wirklich alle Empf&auml;nger, die ihre E-Mail-Adresse seit mehr als %d Tagen nicht best&auml;tigt haben, löschen?"
msgstr "Wollen Sie wirklich alle Empf&auml;nger, die ihre E-Mail-Adresse seit mehr als %d Tagen nicht best&auml;tigt haben, l&ouml;schen?"
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

msgstr "An wen soll der Newsletter heute gesendet werden?"
Nee, nee, die Frage lautet schon ganz richtig "An wen soll der Newsletter gesendet werden?". Die Formulierung im Englischen ist ein kleiner Seitenhieb auf einen bekannten Werbespruch eines großen Software-Unternehmens: "What Do You Want To Do Today?" :wink:

Kleiner Scherz des Entwicklers...

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

HerrB hat geschrieben:Die Formulierung im Englischen ist ein kleiner Seitenhieb auf einen bekannten Werbespruch eines großen Software-Unternehmens: "What Do You Want To Do Today?" :wink:
Na, das ist aber nicht schoen, dass der Entwickler grosse Softwareunternehmen auf die Schippe nimmt. :wink:

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

Beitrag von HerrB »

Ich habe den Beitrag oben korrigiert und ergänzt, die Übersetzung dürfte jetzt vollständig sein.

Leider bestehen noch ein paar Probleme:
Die Zeile

Code: Alles auswählen

msgid "%1$d recipients, which hasn't been confirmed since more than %2$d days has been removed."
sollte eigentlich

Code: Alles auswählen

msgid "%1\$d recipients, which hasn't been confirmed since more than %2\$d days has been removed."
lauten. Leider wird es so nicht in die .po bzw. .mo-Dateien aufgenommen.

Laut Hilfe zu gettext soll die i18n-Komponente die Syntax kennen und beachten (d.h. aus %1$d sollte wieder %1\$d werden), aber das hat man ihr wohl noch nicht gesagt - es geht halt nicht. Jemand eine Idee?

Außerdem tritt bei Tooltips zu Empfänger und Empfänger-Gruppen der Text Empf&auml;nger bzw. Empf&auml;nger-Gruppen auf.

Ursache ist, dass der Code einmal zu oft kodiert wird. Aus "Empf&auml;nger" wird "Empf&auml;nger" im Javascript-Code, was dann auch den härtesteten Browser schafft. Ich habe mich mal durch ein paar Klassen gewühlt, habe aber die entscheidende Stelle nicht gefunden. Auch hier jemand ein Tipp, wie man das Problem lösen könnte?

Das gleiche Problem ergibt sich bei einem neuen Empfänger - aus "-- Neuer Empf&auml;nger --" (Erzeugung und Speicherung in der DB via Code) wird "-- Neuer Empf&auml;nger --" im HTML-Code beim Bearbeiten des Empfängers, d.h. es wird "-- Neuer Empf&auml;nger --" im Eingabefeld angezeigt, nun ja...

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Ähm, da das Problem auch bei Modulen und Menüs auftritt, hat dafür
Außerdem tritt bei Tooltips zu Empfänger und Empfänger-Gruppen der Text Empf&auml;nger bzw. Empf&auml;nger-Gruppen auf.

Ursache ist, dass der Code einmal zu oft kodiert wird. Aus "Empf&auml;nger" wird "Empf&auml;nger" im Javascript-Code, was dann auch den härtesteten Browser schafft. Ich habe mich mal durch ein paar Klassen gewühlt, habe aber die entscheidende Stelle nicht gefunden. Auch hier jemand ein Tipp, wie man das Problem lösen könnte?
jemand einen Hinweis (d.h. das & wird codiert)? Bin für jeden Hinweis dankbar.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

ich hab den code jetzt nicht so im kopf
innerhalb des moduls sieht der aufruf wie aus ?
vielleicht in etwa so:

Code: Alles auswählen

echo sprintf (mi18n ("1\$d recipients, which hasn't been confirmed since more than %2\$d days has been removed.") ,$num , $days);
ich hab mich noch nicht so genau damit beschäftigt, aber sollte anstelle von
\1$d nicht ein %d reichen ?

na wie auch immer
wie sieht denn die zeile in contenido.po aus ? ist das dort mit & korrekt, falls ja müsste der fehler in der functions.i18n.php function mi18n
zu finden sein...
eine sonstige codierung mit htmlspecialchars dürfte sonst nirgends statt finden...
*** make your own tools (wishlist :: thx)
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

innerhalb des moduls sieht der aufruf wie aus ?
Es ist kein Modul, das ist ja das tragische. Es ist Contenido selbst...

Es erscheint "Empf&auml;nger" beim Tooltipp bei Extras -> Empfänger, der Code sieht so aus (Ausschnitt):

Code: Alles auswählen

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

$userlink = new cHTMLLink;
$userlink->setCLink("recipients", 2, "");

$grouplink = new cHTMLLink;
$grouplink->setCLink("recipientgroups", 2, "");

$items = array( array(	$cfg["path"]["images"]."users.gif", i18n("Recipients"), $userlink->getHref()),
		array(	$cfg["path"]["images"]."groups.gif", i18n("Recipient groups"), $grouplink->getHref())
		);
$page = new cPageLeftTopMultiPane($items);
$page->render();
Daraus wird ein JS-Code, der beim Überfahren der Buttons für Empfänger bzw. Empfänger-Gruppen entsprechend "Empfänger" oder "Empfänger-Gruppen" ausgeben soll. Aus i18n("Recipients") wird natürlich "Empf&auml;nger" - nur kommt das so nicht auf der Webseite an. Stattdessen wird "Empf&auml;nger" vor der Ausgabe an den Browser nochmal codiert, so dass im JS-Code "Empf&auml;nger" steht.

Code: Alles auswählen

echo sprintf (mi18n ("%1\$d recipients, which hasn't been confirmed since more than %2\$d days has been removed.") ,$num , $days);
ich hab mich noch nicht so genau damit beschäftigt, aber sollte anstelle von
\1$d nicht ein %d reichen ?
Es wäre eine Möglichkeit, aber in anderen Sprache könnte die Anzahl der Empfänger (%1\$d) und die Anzahl der Tage (%2\$d) vertauscht werden müssen - wird nur %d verwendet, ist keine exakte Zuordnung mehr möglich (genau dafür gibt es die %-Syntax). Aber das Ding kannste ignorieren, da lasse ich mir noch was zu einfallen (muss ich eben $d durch \$d ersetzen).

Trotzdem danke.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

hmm dann kann es ja mehr nur an dem hier liegen:

Code: Alles auswählen

$page = new cPageLeftTopMultiPane($items); 
$page->render();
schreib mal davor

Code: Alles auswählen

print_r($items);
hin, da müsste das noch stimmen oder ?

wenn ich mir das recht überlege könnte das sogar aus der pear klasse kommen...
pear/HTML/Common.php

ich hab mich mit den widgets noch nicht genauer beschäftigt, da ich für meine speziallösungen gleich immer was neues gebaut habe...
*** make your own tools (wishlist :: thx)
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Danke, teste ich morgen, muss jetzt Oscar-Nacht nachgucken...

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Tja, das Problem steckt wohl im render();. Die Angabe von print_r wie angegeben ergibt:
Array
(
[0] => Array
(
[0] => images/users.gif
[1] => Empf&auml;nger
[2] => main.php?area=recipients&frame=2&action=&contenido=187c5bd37bed55418ddb107e66cf3341
)

[1] => Array
(
[0] => images/groups.gif
[1] => Empf&auml;nger-Gruppen
[2] => main.php?area=recipientgroups&frame=2&action=&contenido=187c5bd37bed55418ddb107e66cf3341
)
)
Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Mal abgesehen von den Beschriftungen, wäre der Newsletter-Bereich soweit fertig.

Alle geänderten Dateien (inkl. SQL-Änderungen, dbUpgradeTable) gibt es hier: http://www.btech.de/temp/newsletter4.5/ ... ionCVS.zip

Für die Änderungen in der (deutschen) .po-Datei liegt auch eine Datei bei. Ach ja, für die Verknüpfung Empfänger <> Frontend User wurde es notwendig, die Feldgröße für den Fronten User-Namen auf 255 Zeichen zu erweitern, dies ist in der beiligenden dbUpgrade.php bereits berücksichtigt.

Die Dateien können - so wie sie sind - über den Snapshot vom 04.03.2005 gebügelt werden.

Der Bug mit der weißen Fläche bei Extras -> Newsletter ist noch im Snaphot drin (siehe:
http://www.contenido.org/forum/viewtopi ... 8999#38999).

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

integrationCVS.zip wurde für aktuellen Snapshot aktualisiert (contenido-cvs-2005-04-22.tar.bz2, contenido-cvs-2005-04-29.tar.bz2).

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo »

den Newsletter habe ich jetzt integriert, ich hoffe, es ist alles richtig.
Antworten