Page 1 of 1

Verzeichnis in Text- u. Linkform

Posted: Fri Jan 29, 2010 2:17 pm
by dylan
Hallo,

ich suche nach einem Modul um ein Ärzteverzeichnis in Text- u. Linkform aufzubauen.
Das Verzeichnis sollte möglichst alphabetisch geordnet werden, bzw. sein.

Der Aufbau sollte so ähnlich aussehen:

Kategorien,
z.B. Augenheilkunde, Innere Medizin, Chirurgie, u.s.w.

In den Kategorien Ärzte mit
Dr. med. Name (als Link), Straße, Stadt, Telefon

Das ganze kann eine lange Liste sein, es muss nichts aufgeklappt, oder sonstige Effekte vorh. sein.

Welches Modul wäre dafür geeignet?

Re: Verzeichnis in Text- u. Linkform

Posted: Fri Jan 29, 2010 9:58 pm
by cyberman
Hast du dir schon mal CompanyDirectory angesehen?

Re: Verzeichnis in Text- u. Linkform

Posted: Sat Jan 30, 2010 9:25 am
by dylan
Hast du dir schon mal CompanyDirectory angesehen?
Hallo cyberman,
"Company Business List" u. drei andere habe ich unter CMSms 1.6.6 probiert, schmeißen haufenweise Fehlermeldungen raus. Wäre eine tolle Sache wenn Modul-Autoren zuk. einen Vermerk im FORGE hinzufügen, bis zu welcher Version Module lauffähig sind. Falls das zu diesem Zeitpunkt möglich ist, in die Zukunft zu gucken?, man könnte sich Zeit mit der Installation unkompatibler Module sparen?

"CompanyDirectory" ist genau wonach ich gesucht habe, tausend Dank!

Re: Verzeichnis in Text- u. Linkform

Posted: Sat Jan 30, 2010 1:40 pm
by dylan
Ich habe eine Frage zu den eingetr. E-Mail-Adressen des CompanyDirectory-Moduls.
E-Mail-Adressen werden lesbar mail@domain.com eingetragen, das wird vielen Ärzten nicht gefallen.

Gibts eine allg. Möglichkeit Mailadressen einer Domain zu schützen???

Re: Verzeichnis in Text- u. Linkform

Posted: Sat Jan 30, 2010 3:48 pm
by mike-r
Du könntest statt der Adressen ein Formular bauen. Zum Mailadressen schützen gibt es viele Ansätze, allerdings funktioniert keine zu 100%.

Re: Verzeichnis in Text- u. Linkform

Posted: Sat Jan 30, 2010 5:04 pm
by nockenfell
Ich habe mir für CMSms einen prefilter gebaut welcher die E-Mailadressen javascript mässig verschlüsselt. Zudem ersetzt er das @ in einer E-Mailadresse durch ein (at).

Erstelle die Datei prefilter.mailsecure.php:

Code: Select all

<?php
function smarty_cms_prefilter_mailsecure($tpl_source, &$smarty)
{
   return encrypt_content_email($tpl_source);
}

function myMailEncrypt($string,$back=0,$method=1) {
	$out = '';

	if ($method === 'ascii') {
		for ($a=0; $a<strlen($string); $a++) {
			$out .= '&#'.ord(substr($string, $a, 1)).';';
		}
	} else {
		for ($a=0; $a<strlen($string); $a++) {
			$charValue = ord(substr($string,$a,1));
			$charValue+= intval($method)*($back?-1:1);
			$out.= chr($charValue);
		}
	}
	return $out;
}

function encrypt_content_email($content) {

	// Attribute, ggf. aendern
	$atzeichen = "(at)"; // Ersatzzeichen fuer das @	
	
	// hier via regEx alle email-adressen heraussuchen
	preg_match_all("/(mailto:)?([a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4}|museum))/im",$content,$matches);
		
	// hier jetzt alle gefundenen durchgehen und ersetzen
	if ( isset ($matches[0][0]) and $matches[0][0] != '') {
		for ($m = 0; $m < count ($matches[0]); $m++) {
			$mystring = $matches[0][$m];
			$findme  = 'mailto:';
			$pos = strpos($mystring, $findme);
			$encrypted_email_address = ""; 
			if ($pos === false) {
				$encrypted_email_address .= str_replace("@",$atzeichen,$mystring);
			} else {
				$encrypted_email_address .= "javascript:linkTo_UnCryptMailto('".myMailEncrypt($mystring)."')";
			}
			$content = str_replace($matches[0][$m],$encrypted_email_address,$content);
		}
	}
	return $content;
}

?>
Diese Datei musst du in den Ordner ./plugins speichern.

In dein Template musst du folgendes JavaScript einbinden:

Code: Select all

{literal}
<__script__ type="text/javascript"> <!--
    function UnCryptMailto( s )
    {
        var n = 0;
        var r = "";
        for( var i = 0; i < s.length; i++)
        {
            n = s.charCodeAt( i );
            if( n >= 8364 )
            {
                n = 128;
            }
            r += String.fromCharCode( n - 1 );
        }
        return r;
    }

    function linkTo_UnCryptMailto( s )
    {
        location.href=UnCryptMailto( s );
    }
// --> 
</__script>
{/literal}



Damit hast du mal automatisch alle E-Mailadressen geschützt. Der Link wird dann jeweils in etwa so dargestellt:

Code: Select all

<a href="javascript:linkTo_UnCryptMailto('nbjmup;jogpAbsdbtq/psh')">email(at)domain.com</a>
Ich kann im Moment aber nicht sagen ob dies auch für das auch für Module funktioniert. Das habe ich noch nicht ausprobiert, da bei mir die E-Mailadressen in der Regel im Content zu finden sind.

Allerdings kannst du wahrscheinlich auch im Template des CompanyDirectory einen Schutz einbauen in dem du die Ausgabe der E-Mailadresse über eine Funktion verschlüsselst.

Re: Verzeichnis in Text- u. Linkform

Posted: Sun Jan 31, 2010 9:53 am
by dylan
Ich habe mir für CMSms einen prefilter gebaut welcher die E-Mailadressen javascript mässig verschlüsselt. Zudem ersetzt er das @ in einer E-Mailadresse durch ein (at).
Ich habs installiert. Es funktioniert wie beschrieben wunderbar bei vorh. Seitencontent.
Ich kann im Moment aber nicht sagen ob dies auch für das auch für Module funktioniert. Das habe ich noch nicht ausprobiert, da bei mir die E-Mailadressen in der Regel im Content zu finden sind.
Beim Modul funktioniert es nicht, die E-Mail-Adressen Übergabe wird davon nicht beeinflusst.


Im Modul-Template wird die Mailadresse so übergeben:

Code: Select all

{if $entry->contact_email ne ''}
<a href="mailto:{$entry->contact_email}">{$entry->contact_email}</a>
{/if}
Ich bin kein Programmierer - lässt sich der prefilter.mailsecure vielleicht im Modul-Template anwenden?
Ich vermute Nein?
Ich habe im CompanyDirectory - Ordner (.php + .tpl) dateiübergreifend nach dem Eintrag "mailto:" gesucht, konnte aber leider nichts finden. Wo hat Robert Campbell das "mailto:" untergebracht? Im {$entry->contact_email} habe ich doch keine Möglichkeit was zu ändern, oder?