Seite 1 von 1

hilfe bei angepasstem newsletter modul

Verfasst: Mi 10. Mär 2004, 15:50
von mcange
halli hallo,

ich möchte gern das newsletter modul der version 4.4.4 anpassen. ich habe bis jetzt zwei kleine änderungen vorgenommen (javascript/link mit css formatiert - im formular).
mein problem ist, dass wenn der submit button gedrückt wird, gibt das modul je nach situation verschiedene antwortssätze zurück (z.b.: "Sie wurden in den Newsletterverteiler eingetragen."). dabei wird der inhalt des containers allerdings überschrieben. ich habe gestern versucht das script dahin gehend zu verändern, dass der antwortssatz unter dem bereits vorhandenen inhalt geschrieben wird.
ich bin leider script-technisch noch ein newbie und bekam auch direkt eine fehlermeldung.
siehe: http://www.contenido.de/forum/viewtopic.php?t=3591
dieses problem ist nun gelöst -thx @emergence.
meine bitte wäre folgende; kann mir jemand unter die arme greifen? sprich: kennt jemand das modul, so dass er/sie mir sagt wo ich welche änderungen vornehmen muss um meine vorstellung zu verwirklichen?

vielen dank im voraus

mfg
mcange

ps.: technische daten:

Serverbetriebssystem
Apache/1.3.28 (Unix) Resin/2.1.3 mod_gzip/1.3.19.1a FrontPage/5.0.2.2510 mod_ssl/2.8.15 OpenSSL/0.9.6g

MySQL Serverversion 3.23.58

Installierte PHP-Version 4.3.3


auszug aus dem modul-script - mit meinen änderungen

... ?>

<!-- *********AUSGABE DES DATUM UND LINK ZUM IMPRESSUM*********** -->

<h2>
<script type="text/javascript">
<!--
document.write(dt+",&nbsp;"+tag+".&nbsp;"+dm+"&nbsp;"+dj);
//-->
</script>
<br><a href="#" title="Impressum/Kontakt des GETAWAY!.">Impressum</a>

<!-- ************************************************************* -->

<form action="front_content.php" method="post">
<input type="hidden" name="idcatart" value="<?php echo $idcatart; ?>">
<input type="hidden" name="mode" value="subscribe">
<?php echo $_news_lang["subscribtion"];?>&nbsp;
<input name="email" type="text" value="deine@email.xyz" size="14" maxlength="80">&nbsp;
<input type="submit"> <-- stelle des antwortsatzes -->
</form>
</h2>
<?php
}
?>

Verfasst: Sa 13. Mär 2004, 13:42
von emergence
irgendwie hab ich ein problem dich zu verstehen...
kenne das modul nicht, aber poste mal das ganze modul... (input und output)

Verfasst: Mo 15. Mär 2004, 12:18
von mcange
hallo emergence,

hier das ganze script:

standard newsletter modul version 4.4.4

modul input: bleibt leer
modul output:

Code: Alles auswählen

<?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
*/


/* DIREKTE ANTWORT, WIRD IN HTML-ZELLE GESCHRIEBEN */

$_news_lang["nosuchlastaction"] = "<h3>Konnte gewählte Newsletter-Aktion nicht ausführen.</h3>";
$_news_lang["hashdoesntmatch"] = "<h3>Hash stimmt nicht überein. Bitte Newsletter-Aktion erneut ausführen.</h3>";
$_news_lang["subscribe"] = "<h3>Sie wurden in den Newsletterverteiler eingetragen.</h3>";
$_news_lang["unsubscribe"] = "<h3>Sie wurden aus dem Newsletterverteiler entfernt.</h3>";
$_news_lang["stop"] = "<h3>Sie wurden temporär aus dem Newsletterverteiler entfernt, können sich aber jederzeit wieder anmelden.</h3>";
$_news_lang["goon"] = "<h3>Sie wurden wieder in den Newsletterverteiler eingetragen.</h3>";
$_news_lang["alreadyexists"] = "<h3>Diese E-Mail-Addresse ist bereits für den Newsletter eingetragen.</h3>";
$_news_lang["confirm"]["subject"] = "<h3>Newsletter-Bestätigung</h3>";
$_news_lang["confirm"]["couldnotsend"] = "<h3>Konnte Bestätigung nicht versenden.</h3>";
$_news_lang["confirm"]["confirmsent"] = "<h3>Bestätigung versendet. Bitte rufen Sie die E-Mail ab und klicken Sie auf den Bestätigungslink.</h3>";
$_news_lang["confirm"]["alreadyconfirmed"] = "<h3>Diese E-Mail-Addresse wurde bereits bestätigt.</h3>";


/* MÖGLICHE EMAIL-ANTWORTEN. */

$_news_lang["confirm"]["subscribe"] = 
"Hallo GETAWAY! Besucher,\n\n
Du möchtest dich für unseren Newsletter eintragen. Hierzu benötigen wir\n
eine Bestätigung, die Du mit dem Klick auf folgenden Link ausführst:\n\n
%s\n\n
Sollte der Link nicht funktionieren, kopiere diesen Link bitte komplett\n
in die Addressleiste Deines Browsers.";

$_news_lang["confirm"]["stop"] = 
"Hallo GETAWAY! Besucher,\n\n
Du möchtest dich vorrübergehend von unserem Newsletter abmelden.\n
Bitte klicke auf folgenden Link, um diese Aktion zu bestätigen:\n\n
%s\n\n
Sollte der Link nicht funktionieren, kopiere diesen Link bitte komplett\n
in die Addressleiste Deines Browsers."; 

$_news_lang["confirm"]["goon"] = 
"Hallo GETAWAY! Besucher,\n\n
Du möchtest unseren Newsletter wieder beziehen.\n
Bitte klicke auf folgenden Link, um diese Aktion zu bestätigen:\n\n
%s\n\n
Sollte der Link nicht funktionieren, kopiere diesen Link bitte komplett\n
in die Addressleiste Deines Browsers."; 

$_news_lang["confirm"]["unsubscribe"] = 
"Hallo GETAWAY! Besucher,\n\n
Du möchtest unseren Newsletter abmelden.\n
Bitte klicke 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"] = "News?";

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 == "")
{
	?>
<h2>
<form action="front_content.php" method="post">
<input type="hidden" name="idcatart" value="<?php echo $idcatart; ?>">
<input type="hidden" name="mode" value="subscribe">
<?php echo $_news_lang["subscribtion"];?>&nbsp;
<input name="email" type="text" value="deine@email.xyz" size="14" maxlength="80">&nbsp;
<input type="submit" value="Senden!">

<!-- *********AUSGABE DES DATUM UND LINK ZUM IMPRESSUM*********** -->
<script type="text/javascript">
<!-- 
document.write(dt+",&nbsp;"+tag+".&nbsp;"+dm+"&nbsp;"+dj); 
-->
</script>
<br><a href="#" title="Impressum/Kontakt des GETAWAY!.">Impressum</a>
</h2>
	<?php	
}
?>
meine änderungen ab dem kommentar: AUSGABE DES DATUM UND LINK ZUM IMPRESSUM. die machen keine probleme.

hoffe es hilft weiter!

mfg
mcange

Verfasst: Mo 15. Mär 2004, 12:28
von emergence
ach so, meinst du vielleicht, dass wenn eine meldung erscheint, das formular nicht mehr angezeigt wird ?

Verfasst: Di 16. Mär 2004, 10:24
von mcange
emergence hat geschrieben:ach so, meinst du vielleicht, dass wenn eine meldung erscheint, das formular nicht mehr angezeigt wird ?
hallo emergence,

ganz genau!

mfg
mcange

Verfasst: Di 16. Mär 2004, 11:55
von Snoopy
Hi, schau Dir mal folgenden Thread an:

http://contenido.de/forum/viewtopic.php?p=17760#17760

Du kannst dir das Layout auf http://www.thilo-sommer.de anschauen.

Das Modul ist das gleiche, ich habe zusätzlich einen Check auf E-Mail Richtigkeit und die Eingabe
des Namens eingebaut, Das Modul ist getestet, und Funktioniert, bis auf den im oben genannten
Thread beschriebenen Fehler. Ich hoffe auf Hilfe, wenn ich dann diesen letzten Fehler bseitigt habe,
werde ich das Modul dann Posten.

Übrigens in dem Modul taucht immer wiedeer ein typischer Prfogrammierer Fehler auf:
Addresse sollte man mit einem "D" schreiben.

Verfasst: Di 16. Mär 2004, 16:20
von mcange
hallo snoopy,

danke für den tipp. habe aber direkt ein problem.

folgendermaßen: ich habe das komplette 4.4.2 paket entpackt und auf den server kopiert, eine neue db eingerichtet und wollte mit dem setup beginnen (um später das modul aus der db zu kopieren und in meine "richtige" db einzufügen -> myphp). darauf kommt eine fehlermeldung mit der aussage, dass ich keine zugriffsberechtigung habe. ich tippe einfachmal, dass sich zwei contenido versionen nicht vertragen. würdest du mir das modul-script posten, ich würde es dann in meine "richtige" db kopieren.

danke im voraus!

mfg
mcange

ps:beim versuch mir deine seite zu betrachten bekomme ich einen 404 :( .

pss:der fehler mit der adresse (bestehtigungsmail) ist auch in version4.4.4.