Neue CMS_x-Variable erstellen

Gesperrt
Caddata
Beiträge: 19
Registriert: Fr 28. Nov 2003, 13:42
Wohnort: Bremerhaven
Kontaktdaten:

Neue CMS_x-Variable erstellen

Beitrag von Caddata » Do 2. Sep 2004, 10:13

Hallo,

ich bin gerade dabei, eine CMS_EMAIL-Variable zu basteln.
Ich habe mir dazu den Code aus der Datei include.CMS_TEXT.php abgewandelt und aus dem Textarea ein Input-Feld gemacht.

Code: Alles auswählen

<?php


if ($doedit == "1") {
        consaveContentEntry($idartlang, "CMS_EMAIL", $typenr, $CMS_EMAIL);
        conGenerateCodeForArtInAllCategories($idart);
        header("Location:".$sess->url($cfgClient[$client]["path"]["htmlpath"]."front_content.php?area=$tmp_area&idart=$idart&idcat=$idcat&lang=$lang&changeview=edit")."");
}
?>
<html>
<head>
<title></title>
    <link rel="stylesheet" type="text/css" href="<?php print $cfg["path"]["contenido_fullhtml"] . $cfg["path"]["styles"] ?>contenido.css">
</head>
<body>
<table width="100%"  border=0 cellspacing="0" cellpadding="0" bgcolor="#ffffff">
  <tr>
    <td width="10" rowspan="4"><img src="<?php print $cfg["path"]["contenido_fullhtml"].$cfg["path"]["images"] ?>spacer.gif" width="10" height="10"></td>
    <td width="100%"><img src="<?php print $cfg["path"]["contenido_fullhtml"].$cfg["path"]["images"] ?>spacer.gif" width="10" height="10"></td>
    <td width="10" rowspan="4"><img src="<?php print $cfg["path"]["contenido_fullhtml"].$cfg["path"]["images"] ?>spacer.gif" width="10" height="10"></td>
  </tr>
  <tr>
    <td>

<?php
       getAvailableContentTypes($idartlang);
        
        echo "  <FORM name=\"editcontent\" method=\"post\" action=\"".$cfg["path"]["contenido_fullhtml"].$cfg["path"]["includes"]."include.backendedit.php\">";
        $sess->hidden_session();
        echo "  <INPUT type=hidden name=lang value=\"$lang\">";
//        echo "  <INPUT type=hidden name=submit value=\"editcontent\">";
        echo "  <INPUT type=hidden name=typenr value=\"$typenr\">";
        echo "  <INPUT type=hidden name=idart value=\"$idart\">";
        echo "  <INPUT type=hidden name=action value=\"10\">";
        echo "  <INPUT type=hidden name=type value=\"$type\">";
        echo "<INPUT type=hidden name=doedit value=1>";        
        echo "  <INPUT type=hidden name=idcat value=\"$idcat\">";
        echo "  <INPUT type=hidden name=idartlang value=\"$idartlang\">";
        echo "<INPUT type=hidden name=changeview value=\"edit\">";
        echo "  <TABLE cellpadding=$cellpadding cellspacing=$cellpadding border=0>";

        echo "  <TR><TD valign=top class=text_medium>&nbsp;".$typenr.".&nbsp;".$a_description[$type][$typenr].":&nbsp;</TD><TD class=content>";
        echo "  <input name=CMS_EMAIL value=\"".urldecode($a_content[$type][$typenr])."\" />";
        echo "  </TD></TR>";
        $tmp_area = "con_editcontent";
        echo "  <TR valign=top><TD colspan=2><br>
                      <a href=".$sess->url($cfgClient[$client]["path"]["htmlpath"]."front_content.php?area=$tmp_area&idart=$idart&idcat=$idcat&lang=$lang")."><img src=\"".$cfg["path"]["contenido_fullhtml"].$cfg["path"]["images"]."but_cancel.gif\" border=0></a>
                      <INPUT type=image name=submit value=editcontent src=\"".$cfg["path"]["contenido_fullhtml"].$cfg["path"]["images"]."but_ok.gif\" border=0>
                      </TD></TR>";

        echo "  </TABLE>
                      </FORM>";

?>






</td></tr></table>
</body>
</HTML>
In der Datenbank habe ich den neuen Typ in der Tabelle con_type angelegt. Dabei habe ich im Feld code folgendes eingetragen:

Code: Alles auswählen

/**
 * CMS_EMAIL
 */
$tmp = $a_content["CMS_EMAIL"][$val];

$tmp = urldecode($tmp);

if ($edit) {$editbutton = "<A HREF=\"".$sess->url("front_content.php?action=10&idcat=$idcat&idart=$idart&idartlang=$idartlang&type=CMS_EMAIL&typenr=$val&lang=$lang")."\"><IMG SRC=\"".$cfg["path"]["contenido_fullhtml"].$cfg["path"]["images"]."but_editemail.gif\" border=0></A>";
$editbutton = AddSlashes(AddSlashes($editbutton));
$tmp = $tmp.$editbutton;}
Das ganze funktioniert auch sehr gut - die eMail-Adresse wird bisher halt als normaler Text angezeigt.

Wenn ich aber aus dem Text einen Link machen will,

Code: Alles auswählen

...
$tmp = '<a href="mailto:'.$tmp.'">'.$tmp.'</a>';
...
geht gar nichts mehr... :cry:

Was muss ich in der Datenbank einfügen, damit aus dem Text ein Mailto-Link gemacht wird?

Greets,
marco
Auch der längste Weg beginnt immer
mit einem kleinem Schritt!
Bild

Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix » Do 2. Sep 2004, 21:38

Hallo Marco,
$tmp = '<a href="mailto:'.$tmp.'">'.$tmp.'</a>';
die Zeile php Code kann nicht stimmen, da sind die " " und ' ' Zeichen falsch verschachtelt. (das '.$tmp schließt schon das Eingangs Hochkomma)
Leider bin ich im moment nicht richtig in PHP drin und finde es auf die Schnelle nicht, aber es gibt irgend ein Zeichen, um die Hochkomme nur als ASCII Zeichen zu verwerten. Vielleicht weißt du aber jetzt, wo du suchen mußt.
Viel Erfolg
Florian

Caddata
Beiträge: 19
Registriert: Fr 28. Nov 2003, 13:42
Wohnort: Bremerhaven
Kontaktdaten:

Beitrag von Caddata » Fr 3. Sep 2004, 06:51

HÄ?

Also die Zeile

Code: Alles auswählen

$tmp = '<a href="mailto:'.$tmp.'">'.$tmp.'</a>';
ist so eigentlich einwandfrei! Die einfachen Hochkommas markieren den String, die doppelten gehören zum String - nämlich die HTML-konforme Notation eines Attributwertes.

Teste mal folgendes und du wirst sehen:

Code: Alles auswählen

$tmp="Hallo";
$tmp = '<a href="mailto:'.$tmp.'">'.$tmp.'</a>';
echo $tmp;
Also, das wars dann wohl nicht!

//EDIT:

Code: Alles auswählen

...
$tmp=sprintf('<a href="mailto:%s">%s</a>',$tmp,$tmp);
...
geht auch nicht! Ich werd mal weiter tüfteln.... :wink:

//EDIT 2
Wenn ich den String, den ich eigentlich haben möchte per echo ausgeben lasse, wird ein ordentlicher eMail-Link generiert und angezeigt. Allerdings zeigt Contenido nur noch eine weisse Seite. Die Bearbeitung des Strings funktioniert bestens - die Seite wird nur nicht angezeigt.

Grüße,
Marco
Auch der längste Weg beginnt immer
mit einem kleinem Schritt!
Bild

drmax
Beiträge: 17
Registriert: Di 3. Jan 2006, 22:56
Kontaktdaten:

Beitrag von drmax » Do 5. Jan 2006, 22:44

hallo,

hat das mit dem CMS_EMAIL(x) geklappt?
suche ein modul, welches mir die email hans.muster@musterhausen.de zerlegt in

- alles links vor dem @, hier "hans.muster"
- alles rechts vor dem ersten ".", hier "de"
- alles zwischen drin, hier "musterhausen"

gibts sowas schon?
Contenido 4.6.4

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Do 5. Jan 2006, 23:15

drmax, dafuer brauchst du regulaere Ausdruecke. Sie sind in SELFHTML erklaert, aber wenn du emergence lieb bittest und er zufaellig auch gerade Zeit hat, schreibt er dir vielleicht den Ausdruck, den du brauchst.
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!

drmax
Beiträge: 17
Registriert: Di 3. Jan 2006, 22:56
Kontaktdaten:

Beitrag von drmax » Do 5. Jan 2006, 23:26

hallo halchteranerin,

werde mich wohl selbst mal in PHP versuchen.
mit strstr(), strpos() und strrpos() sollte das gehn... irgendwie ;-)

ich könnte auch das @ und den letzten punkt durch ein " " ersetzen und den string dann in ein array spliten.
Contenido 4.6.4

stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese » Fr 6. Jan 2006, 01:51

Code: Alles auswählen

<?php

$arr_email = array();
$str_email = 'max.mustermann@musterhausen.info';

preg_match ( "/([^@]+)@([^.]+).(.*)/",$str_email, $arr_results);

if ( is_array($arr_results) && count($arr_results)> 1) {
   $arr_email["name"] = $arr_results[1];
   $arr_email["domain"] = $arr_results[2];
   $arr_email["suffix"] = $arr_results[3];
}

print_r ( $arr_email);

?>
funktioniert nicht mit subdomain emails (á la max.mustermann@subdomain.domain.de )

drmax
Beiträge: 17
Registriert: Di 3. Jan 2006, 22:56
Kontaktdaten:

Beitrag von drmax » Fr 6. Jan 2006, 08:28

super, danke!

werde es gleich mal in meinem modul implementieren.
Contenido 4.6.4

drmax
Beiträge: 17
Registriert: Di 3. Jan 2006, 22:56
Kontaktdaten:

Beitrag von drmax » Fr 6. Jan 2006, 23:47

so, hab jetzt alles mal zusammengeschustert. funktioniert auch schon fast.

so sieht der code aus:

Code: Alles auswählen

<TD vAlign=top align=left>

<?php 

if ($edit) 
{ 
echo "CMS_HTMLHEAD[5]"; 
} 


$arr_email = array(); 
$str_email = "CMS_HTMLHEAD[2]"; 

preg_match ( "/([^@]+)@([^.]+).(.*)/",$str_email, $arr_results); 

if ( is_array($arr_results) && count($arr_results)> 1) { 
   $arr_email["name"] = $arr_results[1]; 
   $arr_email["domain"] = $arr_results[2]; 
   $arr_email["suffix"] = $arr_results[3]; 
} 

/* print_r ( $arr_email); */

?>

<SCRIPT type=text/javascript>email("<?php echo $arr_email["name"]?>","<?php echo $arr_email["domain"]?>","<?php echo $arr_email["suffix"]?>","Email an  <?php echo "CMS_HTMLHEAD[1] "; ?>");</SCRIPT> 
</TD>
das heisst, ich kann die emailadresse normal eingeben, z.b. hans.muster@musterhausen.de.

durch die...

Code: Alles auswählen

if ($edit) 
{ 
echo "CMS_HTMLHEAD[5]"; 
} 
... ist die emailadresse dann auch nur im editor und nicht in der vorschau sichtbar. leider werden jetzt aber die emailbestandteile (name, domain, suffix) in der vorschau nicht mehr zusammengesetz da nicht mehr vorhanden.

so sieht der quelltext aus dem editor aus:

Code: Alles auswählen

<SCRIPT type=text/javascript>email("","","","Email an  Martin Gschend");</SCRIPT>
als ich den code mit der if ($edit) - abfrage noch nicht drin hatte, hat das noch funktioniert. leider war dann in der vorschau auch die volle emailadresse sichtbar. was ich ja zu verhindern suchte.

muss ich den wert von CMS_HTMLHEAD[2] irgendwo temporär zwischenspeichern?
Contenido 4.6.4

stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese » Fr 6. Jan 2006, 23:54

ich schätze mal du hast nen zahlendreher drinnen ...

du gibst per echo CMS_HTMLHEAD[5] aus, weist der
variabeln $str_email aber den wert CMS_HTMLHEAD[2] zu

Gesperrt