WBCE CMS – Way Better Content Editing.
Du bist nicht angemeldet.
WBCE CMS 1.6.9 verfügbar / available - wichtiges Sicherheitsudate / important security update
Wie kann ich obigen Wunsch realisieren? Ich möchte auf einer normalen (nur für angemeldete Mitglieder sichtbaren) Frontend-Seite alle E-Mail-Adressen darstellen. Plain-Text deshalb, damit sie kopiert und in die Mail-Programme eingefügt werden können. Bei PHP und HTML bin ich ir nicht sicher, ob da Steuerzeichen mitkopiert würden.
Beim Modul Code2 müsste man alle anderen Wahlmöglichkeiten abschalten können, aber selbst der Text wird nur im Backend zugelassen.
Wisst ihr eine Möglichkeit oder ist meine Steuerzeichensorge unbegründet?
Die einfachste Variante wäre, erstelle eine versteckte WYSIWYG Seite, schreibe die E-Mail Adressen rein und weise dieser Seite in den Seiten-Einstellungen das whiteboard bzw. blank Theme zu.
Dann erstelle eine normale Seite und binde die versteckte WYSIWYG Seite über den Sectionpicker ein
Offline
Du legst einen Code2-Abschnitt an, wählst den Typ HTML und fügst da dann ein:
<textarea style="width:99%; height:300px">
adresse@domain.tld
andereadresse@anderswo@domain.tld
undso@weiter.sofort
</textarea>
Dann noch bei Admintools > Outputfilter den E-Mail-Filter "Filtere E-Mail Adressen im Text" deaktivieren, damit die Adressen nicht mit (at) und (dot) erscheinen.
Online
Danke euch beiden! An den Outputfilter habe ich gar nicht gedacht, aber abschalten darf ich ihn wegen der Adressen im Impressum wohl nicht. Das dürfte auch gegen die Lösung von colinax sprechen. Hmm, ich habe schon gegoogelt, aber außer einer jquery-Lösung nicht wirklich was gefunden. Was sagte mal einer: Schaun mer mal ...
jquery wird dir das nichts nützen. Der Outputfilter würde vermutlich auch da die E-Mail-Adressen umwandeln.
Mach es doch so, dass Du wie vorgeschlagen den E-Mail-Outputfilter deaktivierst und im Impressum die Mailadressen von Hand in die (at) / (dot) -Schreibweise änderst.
(Nebenbei bemerkt glaube ich ja nicht, dass diese Adressumschreibung überhaupt viel bringt. Das muss schon ein ziemlich dummer E-Mail-Harvester sein, der (at) und (dot) nicht als Muster erkennt.)
Online
Der Filter hat nichts mit dem PlainText zu tun und auch nichts mit den Browsern.
PlainText heißt ja nur dass du einen unformatierten Text haben möchtest ohne die Definierungen des Templates, das die E-Mails blau und anklickbar sind das macht der HTML parser im Browser, dass lässt sich nur verhindern, wenn man mit JS eingreift.
Offline
(Nebenbei bemerkt glaube ich ja nicht, dass diese Adressumschreibung überhaupt viel bringt. Das muss schon ein ziemlich dummer E-Mail-Harvester sein, der (at) und (dot) nicht als Muster erkennt.)
Dass ist ja das geniale am Filter, dieser greift quasi mit einem Override in den Parser ein und verschlüsselt(?) den anklickbaren Link mit JS über WBCE, siehe:
<a href="javascript:mdcr('elZrmdFfkdvxdvxdvvypspdgdgdtphdsffdpwsdfsdml','')">email-adresse(at)tld(dot)at</a></p>Aber Ja, Bots wie die von Google die jede Sprache beherrschen können das ausrechnen bzw. erkennen. Google erkennt dass man das verhindern will und hält sich auch daran, überhaupt wenn man einen Google Business Eintrag hat, da man da ja schon die E-Mail Adresse eingegeben hat.
Offline
Ich habe es über <iframe> und Textdatei in Google Drive lösen können. Klappt gut!
Noch eine Frage: Mit [[eventlist?section_id=107&kat=3&days=33&startnow=1]] zeige ich die Termin der nächsten 33 Tage an. Wenn kein Termin ansteht, bleibt die Meldung leer. Das sieht nicht gut aus, weil die Überschrift besagt "Die nächsten Termine sind:". Wie müsste eine wenn leer - dann "Keine Termine!"-Abfrage lauten?
Ich habe es über <iframe> und Textdatei in Google Drive lösen können. Klappt gut!
Hm, ob das datenschutzrechtlich in Ordnung ist ... naja... musst Du wissen.
Wie müsste eine wenn leer - dann "Keine Termine!"-Abfrage lauten?
im Droplet vor
return $mod_list."</table>";einfügen:
else {
$mod_list .= "<tr><td>Keine Termine!</td></tr>";
}Nicht getestet, müsste aber etwa so gehen.
Beitrag geändert von florian (04.03.2019 15:04:27)
Online
datenschutzrechtlich in Ordnung
Das ist interner Bereich. Und Google weiß sowieso schon alles
müsste aber etwa so gehen.
Nein, leider nicht. Habe auch versetzen der Klammern und anderes probiert, bekomme es aber nicht hin. Bin leider kein Coder.
Es kursieren ja diverse eventlist-Droplts, poste bitte mal den Code
Online
[== PHP ==]
//:eventlist_1_3
//:procal_1_3_droplets_151130
// usage: [[eventlist?section_id=<xx>&max=<xx>&kat=<xx>,<xx>&days=<xx>&year=<xx>&month=<xx>&startnow=1]]
// parameters:
// section_id : Section id from procalendar module
// on default all events of the current month are shown but you can custumize by using options:
// max (integer) : limits event list to max items (if no other limit is reached already)
// kat (integer) : only show defined kategories, kat ids can be found in prcalendar backend options
// more than one kategorie can be used by seperating ids with commas (no spaces)
// days (integer) : limits event list to items for <days> (if no other limit is reached already)
// year (integer) : year of start date
// month (integer) : month of start date
// dateformat (string): fomat of date representation as described in http://www.php.net/manual/en/function.date.php#refsect1-function.date-parameters
// startnow (0/1) : 0 or not set = show calendar month, 1 = start at current day
// archive (integer): if set, elapsed events are shown for $days, backward form now
global $database;
require_once(WB_PATH."/modules/procalendar/functions.php");
$startnow = isset($startnow) ? intval($startnow) : 0;
$max = isset($max) ? intval($max) : 10000;
$fixdays = isset($days);
$days = isset($days) ? intval($days) : 31;
$year = isset($year) ? intval ($year) : date('Y');
$month = isset($month) ? intval($month) : date('n');
$section_id = isset($section_id) ? intval($section_id) : 0 ;
// Set dateformat to suit your needs, add timeformat if needed
$dateformat = isset($dateformat) ? $dateformat : 'd.m.Y'; // Standard php date formats
// Fetch base page link
$page_id = 0;
$page_link ='';
if ($section_id<>0) {
$sql = "SELECT link FROM ".TABLE_PREFIX."sections AS s, ".TABLE_PREFIX."pages AS p WHERE s.section_id = '".$section_id."' AND s.page_id = p.page_id";
$page_link = WB_URL.PAGES_DIRECTORY.$database->get_one($sql).PAGE_EXTENSION;
}
// Set start- and end date for query
$datestart = $startnow ? date('Y-n-j') : "$year-$month-1";
$dateend = $startnow ? date('Y-n-j', strtotime("+".($days-1)." day")) : $fixdays ? date('Y-n-j', strtotime($datestart." + ".($days-1)." day")) : "$year-$month-".($days < cal_days_in_month(CAL_GREGORIAN, $month,$year) ? $days : cal_days_in_month(CAL_GREGORIAN, $month,$year));
if (isset($archive)) {
$dateend = date('Y-n-j');
$datestart = date('Y-n-j', strtotime("-".($days-1)." day"));
}
$mod_list = '<table style="border-collapse: collapse;">';
// Fetch the items
if (!isset($actions) || empty($actions))
$actions = fillActionArray($datestart, $dateend, $section_id);
if (is_array($actions)){
foreach($actions as $row){
if ($max > 0) {
if (!isset($kat) || (isset($kat) && in_array($row["acttype"], explode(',',$kat)))) {
$max--;
$ds = $row['date_start']." ".substr($row['time_start'],0,5);
$de = $row['date_end']." ".substr($row['time_end'],0,5);
// Build url like : pages/kalendar.php?year=1900&month=01&day=03&id=2&detail=1
$page_url = $page_link.'?year='.(substr($ds,0,4)).'&month='.(substr($ds,5,2)).'&day='.(substr($ds,8,2)).'&id='.$row['id'].'&detail=1';
$datetime_start = mktime(substr($ds,11,2),substr($ds,14,2),0,substr($ds,5,2),substr($ds,8,2),substr($ds,0,4));
$datetime_end = mktime(substr($de,11,2),substr($de,14,2),0,substr($de,5,2),substr($de,8,2),substr($de,0,4));
if ($datetime_start<> $datetime_end) {
$mod_list .= '<tr style="background-color: '.$row["act_format"].'"><td><span class="c_date">'.date($dateformat,$datetime_start).' - '.date($dateformat,$datetime_end) .'</span> </td> ';
} else {
$mod_list .= '<tr style="background-color: '.$row["act_format"].'"><td><span class="c_date">'.date($dateformat,$datetime_start).'</span> </td> ';
}
$mod_list .= '<td><a href="'.$page_url.'"><span class="c_name"><b>'.$row["name"].'</b></span></a></td>';
// $mod_list .= '<td><div class="c_desc">'.$row["custom1"].'</div></td>';
$mod_list .= "</tr>";
}
}
}
}
return $mod_list."</table>";So, nicht schön, aber selten...
//:eventlist_1_3
//:procal_1_3_droplets_151130
// usage: [[eventlist?section_id=<xx>&max=<xx>&kat=<xx>,<xx>&days=<xx>&year=<xx>&month=<xx>&startnow=1]]
// parameters:
// section_id : Section id from procalendar module
// on default all events of the current month are shown but you can custumize by using options:
// max (integer) : limits event list to max items (if no other limit is reached already)
// kat (integer) : only show defined kategories, kat ids can be found in prcalendar backend options
// more than one kategorie can be used by seperating ids with commas (no spaces)
// days (integer) : limits event list to items for <days> (if no other limit is reached already)
// year (integer) : year of start date
// month (integer) : month of start date
// dateformat (string): fomat of date representation as described in http://www.php.net/manual/en/function.date.php#refsect1-function.date-parameters
// startnow (0/1) : 0 or not set = show calendar month, 1 = start at current day
// archive (integer): if set, elapsed events are shown for $days, backward form now
global $database;
require_once(WB_PATH."/modules/procalendar/functions.php");
$startnow = isset($startnow) ? intval($startnow) : 0;
$max = isset($max) ? intval($max) : 10000;
$fixdays = isset($days);
$days = isset($days) ? intval($days) : 31;
$year = isset($year) ? intval ($year) : date('Y');
$month = isset($month) ? intval($month) : date('n');
$section_id = isset($section_id) ? intval($section_id) : 0 ;
$entryfound = false;
// Set dateformat to suit your needs, add timeformat if needed
$dateformat = isset($dateformat) ? $dateformat : 'd.m.Y'; // Standard php date formats
// Fetch base page link
$page_id = 0;
$page_link ='';
if ($section_id<>0) {
$sql = "SELECT link FROM ".TABLE_PREFIX."sections AS s, ".TABLE_PREFIX."pages AS p WHERE s.section_id = '".$section_id."' AND s.page_id = p.page_id";
$page_link = WB_URL.PAGES_DIRECTORY.$database->get_one($sql).PAGE_EXTENSION;
}
// Set start- and end date for query
$datestart = $startnow ? date('Y-n-j') : "$year-$month-1";
$dateend = $startnow ? date('Y-n-j', strtotime("+".($days-1)." day")) : $fixdays ? date('Y-n-j', strtotime($datestart." + ".($days-1)." day")) : "$year-$month-".($days < cal_days_in_month(CAL_GREGORIAN, $month,$year) ? $days : cal_days_in_month(CAL_GREGORIAN, $month,$year));
if (isset($archive)) {
$dateend = date('Y-n-j');
$datestart = date('Y-n-j', strtotime("-".($days-1)." day"));
}
$mod_list = '<table style="border-collapse: collapse;">';
// Fetch the items
if (!isset($actions) || empty($actions))
$actions = fillActionArray($datestart, $dateend, $section_id);
if (is_array($actions)){
foreach($actions as $row){
if ($max > 0) {
if (!isset($kat) || (isset($kat) && in_array($row["acttype"], explode(',',$kat)))) {
$entryfound = true;
$max--;
$ds = $row['date_start']." ".substr($row['time_start'],0,5);
$de = $row['date_end']." ".substr($row['time_end'],0,5);
// Build url like : pages/kalendar.php?year=1900&month=01&day=03&id=2&detail=1
$page_url = $page_link.'?year='.(substr($ds,0,4)).'&month='.(substr($ds,5,2)).'&day='.(substr($ds,8,2)).'&id='.$row['id'].'&detail=1';
$datetime_start = mktime(substr($ds,11,2),substr($ds,14,2),0,substr($ds,5,2),substr($ds,8,2),substr($ds,0,4));
$datetime_end = mktime(substr($de,11,2),substr($de,14,2),0,substr($de,5,2),substr($de,8,2),substr($de,0,4));
if ($datetime_start<> $datetime_end) {
$mod_list .= '<tr style="background-color: '.$row["act_format"].'"><td><span class="c_date">'.date($dateformat,$datetime_start).' - '.date($dateformat,$datetime_end) .'</span> </td> ';
} else {
$mod_list .= '<tr style="background-color: '.$row["act_format"].'"><td><span class="c_date">'.date($dateformat,$datetime_start).'</span> </td> ';
}
$mod_list .= '<td><a href="'.$page_url.'"><span class="c_name"><b>'.$row["name"].'</b></span></a></td>';
// $mod_list .= '<td><div class="c_desc">'.$row["custom1"].'</div></td>';
$mod_list .= "</tr>";
}
}
}
}
if ($entryfound==false) { $mod_list.="<tr><td>Keine Termine!</td></tr>"; }
return $mod_list."</table>";Ich habe in Z. 25 eine zusätzliche Variable entryfound definiert (Boolean, Standardwert false). In Zeile 50 wird deren Wert auf true gesetzt, wobei diese Schleife nur ausgeführt wird, wenn ein auszugebender Termin gefunden wurde. Bleibt entryfound auf false, wird in Zeile 71 an den Ausgabestring der HTML-Code <tr><td>Nichts gefunden!</td></tr> angefügt (in tr/td, weil drumherum <table></table> immer ausgegeben wird.)
Beitrag geändert von florian (04.03.2019 17:50:18)
Online
Herzlichen Dank, es funktioniert!
Allerdings taucht im Frontend unerklärlich die Zahl 3 auf, siehe Anlagen. Keine Ahnung, wo die 3 jetzt auf einmal herkommt.
Sorry, mein Fehler, da war noch ein Test drin. Die Zeile
$mod_list.= sizeof($actions);muss raus. (Ziemlich weit am Ende, oben hab ich's schon korrigiert)
Online
Danke!!!