Oznámení

Provoz fóra byl ukončen

Vážný problém s diakritikou v komentářové referenci

před 12 lety

juneau
Člen | 166

Mám ve svém redakčním systému problém – v komentářích. Čtenář Žluťoučký kůň uloží komentář. Přijde Pepa, a hodlá reagovat na jeho komentář. Klikne na patřičný odkaz a do komentářového pole se vloží tradiční (např) [3].

Problémem je, že při ukládání komentáře a po zavolání reference handleru Texy nějak zatuhne a ve výsledném komentáři je uložena pouze část komentáře před odkazem na jiný komentář, jehož autorem je někdo s diakritikou ve jménu. Není-li diakritika, je vše ok.

Mam konfiguraci texy:

$texy = new Texy();
$texy->encoding = 'windows-1250';
$texy->addHandler('newReference', 'newReferenceHandler');
// + dalsi

function newReferenceHandler($parser, $refName)
    {
    global $komentare_jmena,$komentare_id; // z externiho kodu
    $names = $komentare_jmena;
    if (!isset($names[$refName])) return FALSE; // it's not my job
    $name = $names[$refName];  // some range checing
    $el = TexyHtml::el('a');
    $el->attrs['href'] = '#comm-' . $refName; // set link destination
    $el->attrs['class'][] = 'comment';        // set class name
    $el->attrs['rel'] = 'nofollow';           // enable rel="nofollow"
    $el->setText("[$refName] $name:"); // set link label (with Texy formatting)
    return $el;
    }

Celým handlerem projde jméno s diakritikou, bez problémů, ale z texy se již nic rozumného nevrátí. Dělá to od upgradu na v. @version 2.0 BETA 2 (Revision: 166, Date: 2007/08/23 03:02:24). Testováno na PHP5 i PHP4.

Editoval juneau (2. 12. 2007 21:37)

před 12 lety

juneau
Člen | 166

Jsa vědom toho, že problém způsobuje diakritika v proměnné $name ve zmíněné funkci reference (a tedy v nějaká následující funkci neočekávané znaky), provedl jsem toto znásilnění PHP:

$el->setText("[$refName] ".iconv('windows-1250','utf-8',$name).":");

Od té doby korektně funkční (+ otestování na nejnovější verzi Texy!). Každopádně si myslím, že je to bug a ne korektní chování.

před 12 lety

David Grudl
Nette Core | 6806

Celé Texy vnitřně pracuje v UTF-8. Nastavení $texy->encoding slouží jen k tomu, aby se při spuštění převodu text z uvedeného kódování do UTF-8 převedl a na konci zase převedl zpět. Takže i všechny handlery apod. musí být napsané v UTF-8.

před 12 lety

juneau
Člen | 166

Áha, to mě nenapadlo. Konfigurační soubor i s handlery je windows-1250. Takže se přizpůsobím.