Seite 1 von 2

Mit eigenen Layouts/Templates kein Edit/Speichern v. Artikel

Verfasst: Fr 14. Mai 2004, 20:32
von KemIpp
Eingesetzte contenido-Version: 4.4.4

Beschreibung der Erscheinung:
Selbsterstellte oder aus den Standards abgeleiteten Layouts/Templates funktionieren zwar, ein Editieren oder Speichern von Artikeln ist aber mit ihnen nicht möglich. Die Original-Layouts/Templates funktionieren dagegen wie erwartet. Wenn man einen Artikel mit einem "funktionierenden" Layout/Template fertigstellt und anschließend das Template (und damit auch das Layout) auf ein "nicht funktionierendes" wechselt, werden die Seiten mit allen Inhalten wie gewollt dargestellt. Editierbar/Speicherbar sind sie aber nicht, bis man das Template wieder wechselt.

Nach ein paar Tagen des Pausierens gelang es auf Anhieb, genau ein funktionierendes Layout zu erzeugen, auf dem mehrere Templates basieren. (Layout und Templates sind anhaltend beliebig modifizierbar.) Seitdem konnte ich kein weiteres funktionierendes Template, das auf einem neuen/abgeleiteten Layouts basiert, erzeugen.

Maßnahmen:
Ich habe versucht festzustellen, ob ein Fehler im HTML-Code des Layouts die Ursache sein könnte. Auch GoLive konnte keinen Syntax-Fehler im Code feststellen. Dies müsste auch deshalb auszuschließen sein, da neue Layouts mit 1:1 dupliziertem Original-Layout-Code ebenfalls das Editieren/Speichern von Artikeln nicht zulassen.

Folglich müsste in den Zuweisungen der Templates der Fehler stecken. Um das auszuprobieren, habe ich mehrere Templatepaare angelegt, bei denen die
Zuweisungen gleich sind, die aber auf den unterschiedlichen Layouts basieren. - Jeweils beim O-Layout funktionierte das Template, beim abgeleiteten funktionierte es nicht.

An den Modulen dürfte es auch nicht liegen, denn sie funktionieren unter dem Original-Standard-Layout.

Fragen:
Gibt es nicht dokumentierte Regeln für die Erstellung von Templates (oder Einschränkungen im HTML-Befehlssatz für Layouts) - oder wird einfach
die Benutzung eines anderen HTML-Editors empfohlen?

Verfasst: Fr 14. Mai 2004, 22:16
von Beleuchtfix
Hi, hast du schon einmal versucht die tabelle con_code (direkt in mysql) zu leeren!!!!, nicht löschen!
Dies wurde immer mal wieder vorgeschlagen, wenn sich contenido bei neuen templates eigenartig verhällt.

Siehe http://www.thilo-sommer.de/PHPMyFAQ/ind ... =1&lang=de

Mehr fällt mir nicht ein.

Gruß Florian

Verfasst: Mo 17. Mai 2004, 09:14
von KemIpp
Hallo!

Danke für den Tipp, aber das Leeren hat leider keine Veränderung bewirkt.

Gruß
KemIpp

Verfasst: Mo 17. Mai 2004, 09:21
von Halchteranerin
steht in der errorlog.txt etwas?

Re: Mit eigenen Layouts/Templates kein Edit/Speichern v. Art

Verfasst: Mo 17. Mai 2004, 09:43
von timo
KemIpp hat geschrieben: Beschreibung der Erscheinung:
Selbsterstellte oder aus den Standards abgeleiteten Layouts/Templates funktionieren zwar, ein Editieren oder Speichern von Artikeln ist aber mit ihnen nicht möglich.
Was heißt "nicht möglich"?

Wichtig ist, daß dein Layout korrekt ist. Wenn du das Layout hier einmal postest, kann man versuchen, den Fehler zu reproduzieren.

Verfasst: Mo 17. Mai 2004, 11:38
von KemIpp
Also:

Unter Administration -> Logs steht "keine Resultate".

Unter Administration -> System steht in der Tabelle "Contenido Error Log": "Keine errorlog-Datei gefunden."

Unter Administration -> System steht in Tabelle "Contenido Upgrade Error Log": 2004-Apr-Wed 16:54:08: error 1068 (Multiple primary key defined) - Invalid SQL: ALTER TABLE con_template CHANGE COLUMN idtpl idtpl int(10) NOT NULL DEFAULT '0' PRIMARY KEY<br><br>

*

"Nicht möglich" äußert sich darin, dass beim Artikeleditieren die Schaltfläche "Headline", "Headline", "Text Html" und 3 x "speichern" zwar mit einem Link hinterlegt sind, aber nach dem Anklicken sich nichts ereignet. Änderungen im Text gehen nach dem Verlassen der des Artikels verloren. Der Spaw-Editor öffnet sich nicht.


***

Neue Erkenntnis:

Es gibt einen Zusammenhang mit dem Modul Newsletter: Wenn es im Template einem Container zugeordnet ist, tritt die Erscheinung bei allen (auch bei O-Layout!) auf. Wenn das Modul keinem Container zugewiesen wird, funktionieren alle Layouts/Templates.

Ich habe am Newslettermodul wissentlich lediglich in Zeile 220 und 223 - class="news" - eingefügt.
Hier der Code:

<?php

/* Workflow is as follows:
*
* - Each action needs to be confirmed by the user
* - The action "subscribe" subscribes an user
* - The action "unsubscribe" unsubscribes an user
* - The action "stop" temporarly removes delivery to the user
* - The action "goon" resumes the newsletter delivery to that user
*/

/* Der Workflow funktioniert folgendermaßen:
*
* - Jede Aktion muß vom Benutzer bestätigt werden
* - Die Aktion "subscribe" meldet einen Benutzer an
* - Die Aktion "unsubscribe" meldet einen Benutzer ab
* - Die Aktion "stop" deaktiviert die Newsletterverteilung an den Benutzer
* - Die Aktion "goon" nimmt die Newsletterverteilung an den Benutzer wieder auf
*/

$_news_lang["nosuchlastaction"] = "Konnte gewählte Newsletter-Aktion nicht ausführen.";
$_news_lang["hashdoesntmatch"] = "Hash stimmt nicht überein. Bitte Newsletter-Aktion erneut ausführen.";
$_news_lang["subscribe"] = "Sie wurden in den Newsletterverteiler eingetragen.";
$_news_lang["unsubscribe"] = "Sie wurden aus dem Newsletterverteiler entfernt.";
$_news_lang["stop"] = "Sie wurden temporär aus dem Newsletterverteiler entfernt, können sich aber jederzeit wieder anmelden.";
$_news_lang["goon"] = "Sie wurden wieder in den Newsletterverteiler eingetragen.";
$_news_lang["alreadyexists"] = "Diese E-Mail-Addresse ist bereits für den Newsletter eingetragen.";
$_news_lang["confirm"]["subject"] = "Newsletter-Bestätigung";
$_news_lang["confirm"]["couldnotsend"] = "Konnte Bestätigung nicht versenden.";
$_news_lang["confirm"]["confirmsent"] = "Bestätigung versendet. Bitte rufen Sie die E-Mail ab und klicken Sie auf den Bestätigungslink.";
$_news_lang["confirm"]["alreadyconfirmed"] = "Diese E-Mail-Addresse wurde bereits bestätigt.";
$_news_lang["confirm"]["subscribe"] =
"Sehr geehrter Interessent,\n\n
Sie möchten sich für unseren Newsletter eintragen. Hierzu benötigen wir\n
eine Bestätigung, die Sie mit dem Klick auf folgenden Link ausführen:\n\n
%s\n\n
Sollte der Link nicht funktionieren, kopieren Sie diesen bitte komplett\n
in die Addressleiste Ihres Browsers.";
$_news_lang["confirm"]["stop"] =
"Sehr geehrter Newsletter-Abonnent,\n\n
Sie möchten sich vorrübergehend für unseren Newsletter abmelden.\n
Bitte klicken Sie auf folgenden Link, um diese Aktion zu bestätigen:\n\n
%s\n\n
Sollte der Link nicht funktionieren, kopieren Sie diesen bitte komplett\n
in die Addressleiste Ihres Browsers.";
$_news_lang["confirm"]["goon"] =
"Sehr geehrter Newsletter-Abonnent,\n\n
Sie möchten unseren Newsletter wieder beziehen.\n
Bitte klicken Sie auf folgenden Link, um diese Aktion zu bestätigen:\n\n
%s\n\n
Sollte der Link nicht funktionieren, kopieren Sie diesen bitte komplett\n
in die Addressleiste Ihres Browsers.";
$_news_lang["confirm"]["unsubscribe"] =
"Sehr geehrter Newsletter-Abonnent,\n\n
Sie möchten unseren Newsletter abmelden.\n
Bitte klicken Sie auf folgenden Link, um diese Aktion zu bestätigen:\n\n
%s\n\n
Sollte der Link nicht funktionieren, kopieren Sie diesen bitte komplett\n
in die Addressleiste Ihres Browsers.";
$_news_lang["subscribtion"] = "Newsletteranmeldung";

function _news_confirm ($hash, $email)
{
global $db, $client, $lang, $_news_lang, $cfg;

/* Check if the hashcode matches the db one */
$sql = "SELECT idnewsrcp, lastaction, hash FROM ".$cfg["tab"]["news_rcp"]."
WHERE email='$email' AND idclient='$client' AND idlang='$lang'";
$db->query($sql);

if ($db->next_record())
{
if ($db->f("hash") != $hash)
{
echo $_news_lang["hashdoesntmatch"];

} else {
$idnewsrcp = $db->f("idnewsrcp");

if ($db->f("lastaction") == "")
{
echo $_news_lang["confirm"]["alreadyconfirmed"];
return;
}

switch ($db->f("lastaction"))
{
case "subscribe":
$sql = "UPDATE ".$cfg["tab"]["news_rcp"]." SET deactivated='0', confirmed='1', lastaction='' WHERE idnewsrcp = '$idnewsrcp'";
break;
case "unsubscribe":
$sql = "DELETE FROM ".$cfg["tab"]["news_rcp"]." WHERE idnewsrcp = '$idnewsrcp'";
break;
case "stop":
$sql = "UPDATE ".$cfg["tab"]["news_rcp"]." SET deactivated='1', confirmed='1', lastaction='' WHERE idnewsrcp = '$idnewsrcp'";
break;
case "goon":
$sql = "UPDATE ".$cfg["tab"]["news_rcp"]." SET deactivated='0', confirmed='1', lastaction='' WHERE idnewsrcp = '$idnewsrcp'";
break;
default:
$sql = "";
}

$db->query($sql);

echo $_news_lang[$db->f("lastaction")];


}

} else {
echo $_news_lang["nosuchlastaction"];
}
//switch ($action)
}


function _news_createconfirm ($idnewsrcp, $action)
{
global $db, $lang, $client, $_news_lang, $cfg, $cfgClient;

$sql = "SELECT email, hash FROM ".$cfg["tab"]["news_rcp"]." WHERE idnewsrcp = '$idnewsrcp'";
$db->query($sql);

if (!$db->next_record())
{
return;
}

$hash = $db->f("hash");
$email = $db->f("email");

$path = $cfgClient[$client]["path"]["htmlpath"]."news.php?mode=confirm&hash=$hash&email=$email";

$sql = "UPDATE ".$cfg["tab"]["news_rcp"]." SET lastaction='$action' WHERE idnewsrcp = '$idnewsrcp'";
$db->query($sql);

$mailtext = sprintf($_news_lang["confirm"][$action], $path);

if (!mail($db->f("email"), $_news_lang["confirm"]["subject"], $mailtext, "X-Mailer: Contenido [PHP/" . phpversion())) {
echo $_news_lang["confirm"]["couldnotsend"];
} else {
echo $_news_lang["confirm"]["confirmsent"];
}
}

if ($mode == "subscribe")
{
/* Check if the recipient already exists */
$sql = "SELECT idnewsrcp FROM ".$cfg["tab"]["news_rcp"]." WHERE idclient='$client' and idlang='$lang' and email='$email'";
$db->query($sql);

if ($db->next_record())
{
echo $_news_lang["alreadyexists"];
} else {
$newsrcpid = $db->nextid($cfg["tab"]["news_rcp"]);
$timestamp = date("Y-m-d H:i:s");

/* Create a new hash */
for ($i=0;$i<10;$i++)
{
$r .= rand();
}

$hash = md5($r);

if ($name == "")
{
$name = $email;
}

$sql = 'INSERT INTO
'.$cfg["tab"]["news_rcp"].'
SET
name="'.$name.'",
email="'.$email.'",
deactivated="0",
created="'.$timestamp.'",
lastmodified="'.$timestamp.'",
idclient="'.$client.'",
confirmed="0",
idlang="'.$lang.'",
hash="'.$hash.'",
idnewsrcp = "'.$newsrcpid.'"';

$db->query($sql);

_news_createconfirm($newsrcpid, "subscribe");

}
}

if ($mode == "stop" || $mode == "goon" || $mode == "unsubscribe")
{
$sql = "SELECT idnewsrcp FROM ".$cfg["tab"]["news_rcp"]." WHERE email='$email' and idclient='$client' and idlang='$lang'";
$db->query($sql);

if ($db->next_record())
{
$idnewsrcp = $db->f("idnewsrcp");

_news_createconfirm($idnewsrcp, $mode);
}
}

if ($mode == "confirm")
{
_news_confirm($hash, $email);
}

if ($mode == "")
{
?>
<form action="front_content.php" method="post">
<input type="hidden" name="idcatart" value="<?php echo $idcatart; ?>">
<input type="hidden" name="mode" value="subscribe">
<table border="0">
<tr>
<td class="news"> <?php echo $_news_lang["subscribtion"]; ?></td>
</tr>
<tr>
<td class="news">E-Mail: <input type="text" name="email" value=""></td>
</tr>
<tr>
<td><input type="submit"></td>
</tr>
</table>
<?php
}
?>

artikel editieren mit Newsletter modul nicht möglich

Verfasst: Fr 28. Mai 2004, 01:10
von anjin san
Hallo;
Habe oben beschriebenes Problem auch.
Kann den Artikel wo das Newslettermodul eingebunden ist nicht bearbeiten.

IE 6 sagt in der Statuszeile: Fehler auf der Seite
Firefox0.8 sagt nix und speichert nix.
Wenn ich das Newslettermodul aus dem Template rausnehme ist editieren des Artikels möglich.
Es handelt sich um Standarmodul der Contenidoversion 4.4.4
Im Errorlog findet sich folgende Fehlermeldung:
[[28-Mai-2004 01:48:38] PHP Parse error: parse error in /kunden/marosnet.com/hosting/13522/miraproject.at/contenido/includes/functions.mod.php(155) : eval()'d code on line 232
[28-Mai-2004 01:48:39] PHP Parse error: parse error in /kunden/marosnet.com/hosting/13522/miraproject.at/contenido/includes/functions.mod.php(155) : eval()'d code on line 232

Verfasst: Fr 28. Mai 2004, 07:49
von KemIpp
Hallo.

An anderer Stelle waren Hinweise auf Probleme mit dem Standard NL-Modul-Code zu lesen. Gibt es einen Thread/Download mit dem die Probleme beseitigt werden und damit mglw. auch das Problem dieses Threads?

DANKE!

Verfasst: Mo 31. Mai 2004, 19:02
von clipboard
Hallo

Ich habe genau das gleiche Problem und kann es mehrmals nachvollziehen.
Leider bis jetzt noch keine Lösung gefunden.

Verfasst: Mi 2. Jun 2004, 16:03
von JSommer
stimmt, das Problem habe ich jetzt auch. Ich will in einem Template, in dem das Newslettermodul in einem Container sitzt, eine Headline reinschreiben, aber geht nix ... IE meldet mir folgenden Fehler: siehe Screenshot - hat jemand eine Idee? Sonst kann man den ganzen Newsletter ja trashen :-(

Bild[/img]

Verfasst: Mi 2. Jun 2004, 17:14
von Halchteranerin
KemIpp hat geschrieben:Gibt es einen Thread/Download mit dem die Probleme beseitigt werden und damit mglw. auch das Problem dieses Threads?
Ja. Suchen musst Du aber selbst, weil ich auch nicht aus dem Kopf weiss, wo das ist. Von HerrB stammte aber die Korrektur, nur damit Du weisst, wonach Du suchst.

Gruss
Christa

Verfasst: Do 3. Jun 2004, 06:32
von HerrB
Der Thread befindet sich unter Module. Contenido-Versionsnummer beachten!

Siehe http://www.contenido.de/forum/viewtopic.php?t=4302

Gruß
HerrB

Verfasst: Fr 4. Jun 2004, 20:42
von KemIpp
Danke!!
Mit diesen Änderungen ist das Problem tatsächlich beseitigt! Und der NL funktioniert nun auch. - Bleibt die Frage, ob nach einem Contenido-update abgelegte NL und Empfängerliste weiter nutzbar bleiben...

Gruß!
KemIpp

Verfasst: Sa 5. Jun 2004, 11:36
von HerrB
Bleibt die Frage, ob nach einem Contenido-update abgelegte NL und Empfängerliste weiter nutzbar bleiben...
Per se ja, denn sie sind in der DB gespeichert. Sofern das urlencode/decode nicht in den regulären Contenido-Code integriert wird, werde ich für die neue Version angepassten Code zur Verfügung stellen.

Mit der neuen Contenido-Version wird es sowieso ein neues Newsletter-Modul geben, da sich die Übergabe der Newsletter-Artikel-ID und Mehrsprachigkeit in der neuen Version bei weitem eleganter lösen lässt.

Gruß
HerrB

Verfasst: Mo 7. Jun 2004, 09:56
von JSommer
hm seltsam, nach dem update wie beschrieben taucht bei mir nix mehr im zugewiesenen container auf - also kein newslettermodul im frontend ... hm ?!