ThWboard Support-Forum (Archiv)

Ort: / Boardübersicht / Vorschläge / Begriffserklärungen


Seite 1 von 1

PhoenixDH schrieb am 21.06.2005 um 09:25 Uhr

Auf vielen Seiten ist mit mittlerweile aufgefallen, das direkt hinter manchen Stichworten Javascripts eingebettet sind, die beim Mouseover ein kleines Info Fenster anzeigen um den Begriff zu erklären !

Wäre sowas auch für das THWB zu realisieren ?

Denke mal das sich dadurch das Board arg verlangsamen wird oder ?, denn der Post müsste ja erst nach den Begriffen, die z.B. in einer Datenbank mit Erklärung gespeichert sind, gescant werden !

theDon schrieb am 21.06.2005 um 12:11 Uhr

Man koennte die Badwords-Liste dafuer missbrauchen.
Das geht btw auch ohne Javascript, wenn man die <acronym>-Tags benutzt.

PhoenixDH schrieb am 21.06.2005 um 12:48 Uhr

Du meinst einfach die Badwordliste quasi umdrehen, das die Begriffe da darin vorkommen als zu erklärende Begriffe genutzt werden ?

<acronym> Tag ? noch nie gehört ! Ber eben mal danach gegoogelt, sieht gut aus !

Wo wird die check_banned Funktion aufgerufen ? In der functions.inc.php hab ich sie gefunden, aber z.B. in der showtopic nicht !

theDon schrieb am 21.06.2005 um 13:04 Uhr

Die muesste in reply.php aufgerufen werden. Du wirst dann vermutlich noch ein [acronym="foobar"]foo[/acronym]-tag einbauen muessen.

PhoenixDH schrieb am 21.06.2005 um 13:36 Uhr

Achso !
Hät mir eigentlich in den Sinn kommen müssen, denn wenn erst wenn der Post angezeigt wird das ganze zensiert wird wär das ja sehr aufwendig !

Für was steht das [acronym="foobar"]foo[/acronym] ?

------

Achso klar ! Jetzt hats geklickt !

Zweeper schrieb am 21.06.2005 um 14:57 Uhr

wär cool wenn das ein öffentlicher Hack werden würd :)

PhoenixDH schrieb am 24.06.2005 um 18:33 Uhr

Hab da jetzt mal angefangen, doch leider komme ich bei der Funktion nicht mehr weiter. Hab mich wie theDon gesagt hat an der banned Funktion angelehnt und diese umgeschrieben, doch leider funktioniert das noch nicht wirklich. Hier mal der Code, vielleicht wisst ihr was da nicht stimmt !

// Funktion zum Hinzufügen der Erklärungen
function check_synonyms($text)
{

    global $pref;
    
    $r_synonym = thwb_query("SELECT syn, syn_description FROM $pref"."synonyms");
    if( mysql_num_rows($r_synonym) != 0 )
    {
        $syns = array();
        $descs = array();
        while( list($syn, $desc) = mysql_fetch_row($r_synonym) )
        {
            $syns[] = $syn;
            $descs[] = "[acronym=\"".$syn."\"]".$desc."[/acronym]";
        }
        mysql_free_result($r_synonym);
        $text = preg_replace($syns, $descs, $text);
    }

    return $text;
}

PhoenixDH schrieb am 26.06.2005 um 22:53 Uhr

Kann keiner helfen ?

PhoenixDH schrieb am 29.06.2005 um 15:33 Uhr

Ich hab das ghanze mit der Funktion jetzt hinbekommen, nur hab ich noch ein Problem, es soll wirklich nur der Begriff im ganzen genommen werden,

d.h. SD != ESD != eSD !

Wie kann ich das in dem folgenden Code machen ?

function check_synonyms($text)
{

    global $pref;
    
    $r_synonym = thwb_query("SELECT syn, syn_description FROM $pref"."synonyms");
    if( mysql_num_rows($r_synonym) != 0 )
    {
        while( $synonym = mysql_fetch_array($r_synonym) )
        {
            if ( strstr($text, $synonym[syn] ) )
            {
            $desc = "[acronym=\"".$synonym[syn]."\"]".$synonym[syn_description]."[/acronym]";
            $text = str_replace($synonym[syn], $desc, $text);
            }
        }
    }

    return $text;
}

PhoenixDH schrieb am 11.07.2005 um 19:22 Uhr

Hab das Ding soweit eigentlich stehen, nur hab ich ein Probelm, das in den Abkürzungen auch Punkte oder - drin sein können, die akzeptiert meine Abfrage nicht. Weiß wer wie ich die ändern muss ?

if (preg_match("/\b{$synonym[syn]}\b/",$text))

FSI schrieb am 08.08.2005 um 12:29 Uhr

beitrag 14 ist aktuell

PhoenixDH schrieb am 08.08.2005 um 14:35 Uhr

Mir ist beim Testen aber was aufgefallen !

Wenn man einen Beitrag zitiert, dann wird der Tag nochmal drumgelegt, das sollte bedacht werden ! Habs aber noch net gelöst !

FSI schrieb am 09.08.2005 um 09:18 Uhr

alles komplett in beitrag 14

PhoenixDH schrieb am 09.08.2005 um 17:48 Uhr

Hab das Problem jetzt auch gelöst, aber mir ist schon das nächste eingefallen !
Wenn in einem Link. z.B. http://www.wikipedia.de/VHS/, wenn man das VHS drin hat, dann wandelt der das in dem Link ja auch um ! und das sollte nicht sein !

FSI schrieb am 09.08.2005 um 18:25 Uhr

siehe beitrag 16.

PhoenixDH schrieb am 09.08.2005 um 22:35 Uhr

Klar kommt da was von mir, aber erst wenns ohne Fehler läuft !
Aber wie gesagt, ich regle das über ne eigene Tabelle !
Also nicht über die BW-Protektion !

Deswegen würd ich sagen, macht mal net großartig weiter, denn bei mir läuft bisher alles einwandfrei bis auf das mit den Tags in URLs oder IMGs !

Oder ist das bisher gelöst mit dem IMG und URL ? Wenn ja wo ? Dann bau ich das bei mir mal ein !

Chso, habs grad gesehen, aber das ist nicht das was ich meine, ich meinte wenn in einem Link oder Bild-Link ein Wort aus der Tabelle enthalten ist, das das nicht ersetzt wird, da ist der Quote ja schon integriert dann !

FSI schrieb am 10.08.2005 um 19:22 Uhr

- keine Tags in Datenbank, Reply & Edit
- Gloss-Words in -Tags werden umgangen

Glossar & Badword-Protection in einer Datenbank
-----------------------------------------------

ThWboard-Version: 2.84/2.85

in thwbcode.inc.php (zeile 74)

unter
[code]array('tag' => '[color=', 'replace' => '<span style="color: $2 !important;">$1</span>', 'container' => true),
[/code] das einfügen
[code]array('tag' => '[a=', 'replace' => '<a title="$2"><u>$1</u></a>', 'container' => true),
[/code] Greift die badword-protection bei editierten Beiträgen? NEIN!
AddOn:

showtopic.php
in Zeile 348

unter
[code]// remove image tags for quotes
$post['posttext'] = str_replace(array('', ''), array('', ''), $post['posttext']);
[/code] das einfügen
[code]$r_gloss = thwb_query("SELECT modword FROM ".$pref."bannedwords");

while ($gloss = mysql_fetch_array($r_gloss))
{
$post['posttext'] = str_replace(array("[a=\"".$gloss['modword']."\"]", "[/a]"), array('', ''), $post['posttext']);
}
[/code] danach kommt dann der alte Code wieder und beginnt mit
[code]$post['posttext'] = htmlspecialchars($post['posttext']);
[/code] in der functions.inc.php Zeile 794

die check_banned-Funktion komplett ersetzen mit

[code]// Funktion zur Erklärung von gelisteten Wörtern (groß/klein egal)
function check_banned($text)
{
global $pref;

$r_bwords = thwb_query("SELECT banword, modword FROM $pref"."bannedwords");
if( mysql_num_rows($r_bwords) != 0 )
{
$bwords = array();
$mwords = array();
while( list($bword, $mword) = mysql_fetch_row($r_bwords) )
{
if( strpos($text, $bword) < strpos($text, "
", $bword+strlen($bword)) )
{
$bwords[] = "/([a-z])*(" . $bword . ")([a-z])*/i";
$mwords[] = $bword;
}
else
{
$bwords[] = "/([a-z])*(" . $bword . ")([a-z])*/i";
$mwords[] = "[a=\"".$mword."\"]".$bword.""."-";
}
}
mysql_free_result($r_bwords);
$text = preg_replace($bwords, $mwords, $text);
}

return $text;
}
[/code] edit.php Zeile 78 nach

$post['threadtopic'] = htmlspecialchars($thread['threadtopic']);

das einfügen

$r_gloss = thwb_query("SELECT modword FROM ".$pref."bannedwords");

while ($gloss = mysql_fetch_array($r_gloss))
    {
        $post['posttext'] = str_replace(array("[a=\"".$gloss['modword']."\"]", "[/a]"), array('', ''), $post['posttext']);
    }

danach geht's mit dem alten code weiter

$post['posttext'] = htmlspecialchars($post['posttext']);

--------------------------------------------------------------------------------------------

Die Werte in der Badword-Protection werden ganz normal im AdminCenter in die Badword-Protection
eingegeben:

Badword: das zu erklärende Wort z. B. php
Replacement: die Erklärung z. B. Programmiersprache

Im Beitrag wird dann das Wort "php" unterstrichen dargestellt.. bei einem Mouseover
erscheint die Beschreibung "Programmiersprache".

-------------------------------------------------------------------------------------------

Vorschläge:

1. komplett neue Funktion & Feld in der Tabelle tb_bannedwords (bw oder gloss) erstellen,
damit die BW-Protection erhalten bleibt
2. Liste/Übersicht mit allen Beschreibungen aus dem Glossar
3. Title-Tag wird abgeschnitten, wenn dieser zu lang ist;
bei Klick erscheint ein Popup mit umfangreicher Erklärung
4. andere Formatierung (besseres Fenster für die Erklärung)

PhoenixDH schrieb am 10.08.2005 um 23:17 Uhr

Ok, ich habe den Part mal eingebaut um den es geht, das in IMG oder URL nicht übersetzt wird, das ganze funktioniert eigentlich auch soweit, das einzigste was war, das Begriffe, die in der Datenbank stehen und direkt Nach einem IMG oder URL Tag kommen, nicht übersetzt werden, meine Funktion hier mal wie sie im Moment aussieht !

// Funktion zum Hinzufügen der Erklärungen
function check_synonyms($text)
{

    global $pref;
    
    $r_synonym = thwb_query("SELECT syn, syn_description FROM $pref"."synonyms ORDER BY syn ASC");
    if( mysql_num_rows($r_synonym) != 0 )
    {
        while( $synonym = mysql_fetch_array($r_synonym) )
        {
            if (preg_match("/\b{$synonym[syn]}\b/",$text)) 
            {
                        if( strpos($text, $synonym[syn]) < strpos($text, "[/url]", $synonym[syn]+strlen($synonym[syn])) || strpos($text, $synonym[syn]) < strpos($text, "[/img]", $synonym[syn]+strlen($synonym[syn])))
                        {
                }
                else
                {
                    $desc = "[acronym=\"".$synonym[syn]."\"]".$synonym[syn_description]."[/acronym]";
                    $text = preg_replace("/\b$synonym[syn]\b/", $desc, $text);
                }
            }
        }
    }

    return $text;
}

Mannie schrieb am 12.08.2005 um 09:53 Uhr

Hat das einer mit 2.81 schon getestet?

PhoenixDH schrieb am 19.08.2005 um 07:35 Uhr

Ich werde wenn ich am Wochenende Zeit habe, die ganzen Schnipsel zusammensuchen und veröffentlichen, dann kann man gemeinsam noch nach Verbesserungen kucken !

Seite 1 von 1