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 »

Hui!
[Key-Erzeugung] das über das setup zu machen ist etwas problematisch... was passiert wenn man dann nochmal ein upgrade aufruft etc...
Es ist nur dann ein 30-stelliger-Schlüssel zu erzeugen, wenn die hash-Spalte leer oder einen Nicht-30-stelligen-Schlüssel aufweist. Nachträgliche Upgrades betreffen diese Zeilen dann nicht.

Und es ist sogar sehr einfach: Die Klasse class.newsletter.recipients.php enthält bereits die Methode updateKeys, d.h.

Code: Alles auswählen

cInclude("classes", "class.newsletter.recipients.php");
$recipients = new RecipientCollection;
$recipients->updateKeys();
ist alles, was beim Update ausgeführt werden muss... (gut, gell?)
ich hab soweit ich das gesehen habe keine möglichkeit das
zb AFTER `confirmed` oder AFTER `idlang` zu berücksichtigen
Das ist nur optisch und IMHO nicht so wichtig...
genauso wenig gibt es die möglichkeit ein bestehendes feld umzubenennen... oder hab ich da was übersehen...

wie auch immer das mit dem umbennen wäre glaube ich einfacher wenn man es komplett läßt, vielleicht gibts ja mal die möglichkeit das zu machen.. Wink

nun ja mit einer umbenennung der feldernamen in modified sehen die einträge in tools/upgrade.php so aus
Ähm ... jetzt bin ich verwirrt ... Welche Feldnamen sollte ich jetzt verwenden, die geänderten oder die ursprünglichen?
die 0 am schluss sorgt dafür das das recht nicht unter bereiche gelistet wird (ist das so beabsichtigt ?)
Ja, ich brauche nur die Actions - eine zusätzliche Berechtigung ist (noch) nicht nötig (für news_duplicate genügt z.B. news_edit).

Auf jeden Fall Danke. Wie bekommt man eigentlich die Texte in die .po-Dateien?

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 »

HerrB hat geschrieben:Ähm ... jetzt bin ich verwirrt ... Welche Feldnamen sollte ich jetzt verwenden, die geänderten oder die ursprünglichen?
die die du bis jetzt verwendest hast...
ich hab da nichts verändert...

das zipfile beinhaltet alles damit man eine lauffähige version auf der basis des cvs_head hat.

der offene punkt:
deine dbupdate.sql versucht die umbenennung des feldes lastmodified in modified -> das geht leider nicht (sprich man kann es momentan nicht automatisieren) somit hab ich das auch nicht gemacht -> es wird nur das tabellen feld modified angelegt...

d.h wenn nun ein upgrade gemacht wird existieren in der db tabelle zwei felder lastmodified und modified !

und dann wäre noch die generierung des schlüsselwerts

ne möglich lösung wäre nun eine seperate datei nach dem muster der convert_startarticle.php zu erstellen die diese beiden punkte ausräumt.
diese datei müsste man einmal direkt aufrufen.

es direkt ins setup mit reinzubauen ist wie gesagt ne schlechte idee...

zuerst müsste kontrolliert werden ob das feld lastmodified existiert
wenn ja das feld modified löschen und last modified umbenennen auf modified... dann müsste dieser part richtig sein...

der zweite schritt wäre dann nur mehr der aufruf um

Code: Alles auswählen

cInclude("classes", "class.newsletter.recipients.php");
$recipients = new RecipientCollection;
$recipients->updateKeys();
auszuführen...

ich hoffe du weisst worauf ich hinaus will...
*** make your own tools (wishlist :: thx)
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

HerrB hat geschrieben:Wie bekommt man eigentlich die Texte in die .po-Dateien?
nen alten thread
-> http://contenido.org/forum/viewtopic.ph ... ght=poedit
hauptproblem ist eigentlich nur das man poedit so konfiguriert das die geänderten dateien mit indiziert werden...
es gibt in der zwischenzeit ne relativ stabile version von poedit, da einzige was sich noch nicht geändert hat, ist die konfiguration... die ist noch immer s***
ich habs bis jetzt zb noch nicht geschaft *.js dateien zu durchsuchen...
warum auch immer...

na egal

die andere methode ist einfach
einfach die strings in der *.po datei ergänzen (wie bei den anderen)
diese po datei dann öffnen und
gleich wieder speichern... (voraussetzung ist natürlich das po edit installiert ist)
die mo datei wird dabei erzeugt ohne das man sich um die pfade kümmern muss...
die # blabla sind egal sind nur kommentar zeilen...
*** make your own tools (wishlist :: thx)
timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo »

HerrB hat geschrieben:Es wäre herzallerliebst, wenn ihr in der classes\class.frontend.users.php unter function loadItem { ... } den folgenden Code ergänzen könntet:
Ich habe es etwas geändert eingebaut:

Code: Alles auswählen

	/**
     * Checks if a specific user already exists
     * @param $sUsername string specifies the username to search for
     */	
	function userExists ($sUsername)
	{
		global $client;
		
		$oFrontendUserCollection = new FrontendUserCollection;
		
		$oFrontendUserCollection->setWhere("idclient", $client);	
		$oFrontendUserCollection->setWhere("username", strtolower($sUsername));
		$oFrontendUserCollection->query();
		
		if ($oItem = $oFrontendUserCollection->next())
		{
			return ($oItem);
		} else {
			return false;	
		}
		
	}
Erklärungen:
- Die FrontendUserCollection wird erneut instanziiert, damit bestehende Schleifen (queries) nicht beeinflusst werden
- Die Methoden setWhere und query berücksichtigen automatisch die in- und outFilter
- Das ganze ist besser verständlich ;)
Ähm, wenn man das mit dem str_replace besser mit $_arrInFilters = array('urlencode', 'htmlspecialchars', 'addslashes'); und $mangledUserName = $feuser->_inFilter($username); machen sollte, bitte ich um Nachricht... (warum ist _inFilter eigentlich keine globale Funktion, sondern ein Methode der ItemCollection... ohne Objekt wäre IMHO praktischer und schneller
Das liegt daran, daß einige Tabellen in Contenido mit Filtern arbeiten und andere ohne...damit man aber trotzdem die GenericDB überall einsetzen kann, wurde das so gelöst, d.h. pro Objekttyp (=pro Tabelle) lassen sich unterschiedliche Filter verwenden.


... außerdem habe ich _inFilter noch nicht so verstanden, glaube ich: was passiert, wenn der _arrInFilters-Array nicht definiert wird? Aber das kann ich mir auch mal alleine ansehen...). Ich versuche es dann umgehend zu korrigieren und zu testen.
Dann passiert gar nichts...d.h. der Input für set sowie die neuen setWhere und query-Methoden wird genauso übergeben wie früher, d.h. man muß sich an jeder Stelle um die entsprechende Kodierung kümmern.
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

d.h. man muß sich an jeder Stelle um die entsprechende Kodierung kümmern.
Gut, dass Du das sagst. Die Änderungen für userExist übernehme ich auch für die Newsletter-Dateien (da gibt es ein checkEMail).

Zu den .po-Dateien: Danke, emergence. Da habe ich mich mal ein wenig dumm gestellt (mit poEdit habe ich mal testweise angefangen, aber das Durchsuchen hatte irgendwie nicht funktioniert - das versuche ich dann nochmal). Meine eigentliche Frage war, wie die Änderungen in die Contenido-.po-Dateien kommen (poste ich das Ergebnis auf Basis irgendeines Snapshots oder nur einen Ausschnitt oder ...).

For your convenience:

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%" height="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td valign="top">
{CONTENT}
</td></tr>
</table>
</body>
</html>
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 »

@timo
sag mal hast du jetzt alle änderungen in den cvs gebaut ?
*** make your own tools (wishlist :: thx)
timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo »

die Änderung mit dem userExists schon, aber den Newsletter noch nicht...oder sind da noch andere Änderungen, die ich übersehen habe?
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

HerrB hat geschrieben:Meine eigentliche Frage war, wie die Änderungen in die Contenido-.po-Dateien kommen (poste ich das Ergebnis auf Basis irgendeines Snapshots oder nur einen Ausschnitt oder ...).
als basis hmm... das weiss ich leider nicht genau welche die aktuellsten .po files sind
ich geh einfach mal davon aus das es die vom aktuellen snapshot sind.

aber an sich reicht es in der art von

Code: Alles auswählen

msgid "Contact Client Administrators"
msgstr "Kontakt Mandantenadministrator(en)"
postest bzw ergänzt
*** make your own tools (wishlist :: thx)
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

timo hat geschrieben:die Änderung mit dem userExists schon, aber den Newsletter noch nicht...oder sind da noch andere Änderungen, die ich übersehen habe?
ich hab dir nen patch mit allen änderungen zusammen gestellt...
die classes\class.frontend.users.php kannst du aus dem zip dann löschen...
-> http://dayside.net/newsletter_cvs-2005-01-18.zip
*** make your own tools (wishlist :: thx)
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Ähm, ich habe mir jetzt die Setup-Funktion nicht angesehen, habe aber trotzdem 'ne Frage: Wie werden die actions bei vorhandenen Versionen aktualisiert, wenn ein Update-SQL-Statement im Setup nicht möglich ist?

Beitrag emergence: http://www.contenido.org/forum/viewtopi ... 8909#38909

(Änderung der base.sql z.B. für recipient_save)

Heisst das nicht, dass für die Upgrader auch für die Actions eine convertXY.sql zur Verfügung gestellt werden muss?

Ich bitte meine fehlende Recherche zu entschuldigen, aber kann man nicht im Rahmen der Upgrade-Funktion aus dem Setup heraus ein allgemeine "Upgrade.php" ausführen, die z.B. convert_startarticle.php und andere Änderungen durchführt?

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 »

con_actions und con_area einträge werden bei jedem setup bzw upgrade komplett neu in die db geschrieben
ausgenommen ids > 10000

d.h
wenn du eine action umbenennst, wird diese korrekt bei einem upgrade eingetragen...
ein umbennenungsscript oder ähnliches wird nicht benötigt...
die änderungen/ergänzungen finden nur in der base.sql statt
*** make your own tools (wishlist :: thx)
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Ah, das erklärt es, super.

Und wie ist es mit:
... kann man nicht im Rahmen der Upgrade-Funktion aus dem Setup heraus ein allgemeine "Upgrade.php" ausführen, die z.B. convert_startarticle.php und andere Änderungen durchführt?
Wenn ich es richtig verstanden habe, muss der Nutzer ja z.Z. die Upgrade-Installation fahren und trotzdem noch die convert_startarcticle.php aufrufen...

Aber ich mache auch gerne eine convert_recipients.php fertig.

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 »

HerrB hat geschrieben: Wenn ich es richtig verstanden habe, muss der Nutzer ja z.Z. die Upgrade-Installation fahren und trotzdem noch die convert_startarcticle.php aufrufen...

Aber ich mache auch gerne eine convert_recipients.php fertig.
letzteres wäre meiner meinung nach die sauberste methode...

vielleicht sollte man im setup am ende eine art run additional script option anbieten... oder einen ordner in dem einfach alle vorhandenen php files ausgeführt werden... in deinem fall convert_recipients.php
*** make your own tools (wishlist :: thx)
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Stand der Dinge: 90%

Habe jetzt für Empfänger diverse Funktionen integriert, die entweder in den alten Versionen enthalten waren oder in anderen Bereichen eingeführt wurden (Danke für das Beispiel bei Frontend Users).

Das Ganze sieht so aus:
Bild

Leider sieht der Code für den Funktionsbereich (auch in Frontend Users) nicht so berauschend aus:

Code: Alles auswählen

$sFunctions  = '<table width="100%" cellspacing="0" cellpadding="0" style="border: none">'.chr(10);
$sFunctions .= '   <tr>'.chr(10);

<Hier Gruppen-Select zusammenbasteln>

$sFunctions .= '      <td align="left" class="text_medium" style="padding-left: 5px">'.i18n("Group:").'</td>'.chr(10);
$sFunctions .= '      <td align="left" class="text_medium">'.$select->render().'</td>'.chr(10);
$sFunctions .= '   </tr>'.chr(10);
$sFunctions .= '   <tr>'.chr(10);

<Hier Limitierungs-Select zusammenbasteln>

$sFunctions .= '      <td align="left" class="text_medium" style="padding-left: 5px">'.i18n("Limit:").'</td>'.chr(10);
$sFunctions .= '      <td align="left" class="text_medium">'.$select->render().'</td>'.chr(10);
$sFunctions .= '   </tr>'.chr(10);

/* Search */
$sFunctions .= '   <tr>'.chr(10);
$sFunctions .= '      <td align="left" class="text_medium" style="padding-left: 5px">'.i18n("Search:").'</td>'.chr(10);
$search = new cHTMLTextbox("search", $FORM['search'], 18, 100);
$search->setEvent("onkeyup", "if (event.keyCode == 13) {
window.location='$location&restrictgroup=".
$FORM['restrictgroup']."&restrictmax=".$FORM['restrictmax']."&start=".$FORM['start']."&search='+this.value;}");
$sFunctions .= '      <td align="left" class="text_medium">'.$search->render().'</td>'.chr(10);
$sFunctions .= '   </tr>'.chr(10);
$sFunctions .= '</table>'.chr(10);

...

$page->setMargin(0);
$page->setContent($sFunctions.$notis.$menu->render(false).$markscript);
$page->render();
Ich musste eine Tabelle einfügen, da es sonst aufgrund der Verschiebungen nicht akzeptabel war. Sie wird sukzessive in der Variable $sFunction zusammengebaut - nicht so elegant (bei Frontend Users wird ist es mit <p>-</p> gelöst - auch nett so prickelnd...).

Ich habe es über die HTMLElements-Klasse versucht, aber das Ergebnis war bescheiden. Gibt es ein Beispiel, wie man mit den cHTMLTable-, cHTMLRow- und cHTMLData-Komponenten eine Tabelle mit drei Zeilen und zwei Spalten erzeugt? 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
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Noch eine Frage: Für die Frontend-Link-Funktion müsste die Spalte name für die FrontendUser max. 255 Zeichen aufnehmen können (analog Spalte E-Mail für Newsletter Empfänger).

Z.Z. passen 32 Zeichen in die FrontendUser-Namens-Spalte.

a) Könnte das ein Problem bei der sonstigen Frontend User-Verwaltung geben?
b) Müsste diese Änderung auch in eine convert_xy-Datei für Upgrades?

Wie man die HTMLTable-Klassen usw. verwendet, muss ich dann wohl im Selbstversuch testen bzw. lasse ich es zunächst so...

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
Antworten