Oznámení

Provoz fóra byl ukončen

Ľahšia tvorba Handlerov (TexyCode)

před 11 lety

_rasel^
Člen | 44

Texy syntax je veľmi intuitívny a naopak tvorba handlerov je pre menej skúseného užívateľa už väčší problém…

Handlery by sa vo všeobecnosti dali rozdeliť do dvoch skupín:

  • tie ktoré potrebujú terajší spôsob ich tvorby,
  • primitívne handlery, ktoré by potrebovali zjednodušiť.

Zišiel by sa nejaký unifikovaný spôsob na pridávanie jednoduchých handlerov podobným spôsobom ako jednoducho sa teraz pridávajú smajlíky. Pomocou jednoduchého syntaxu, by ste tak mali nový TexyCode hotový doslova za pár sekúnd a to bez akýchkoľvek znalostí PHP (templaty na handlery).

Určite poznáte YouTube handler, ktorý možno pužívate a v Texy vyzerá takto:

function imageHandler($invocation, $image, $link)
{
    $parts = explode(':', $image->URL);
    if (count($parts) !== 2) return $invocation->proceed();
    switch ($parts[0]) {
    case 'youtube':
        $video = htmlSpecialChars($parts[1]);
        $dimensions = 'width="'.($image->width ? $image->width : 425).'" height="'.($image->height ? $image->height : 350).'"';
        $code = '<div><object '.$dimensions.'>'
            . '<param name="movie" value="http://www.youtube.com/v/'.$video.'" /><param name="wmode" value="transparent" />'
            . '<embed src="http://www.youtube.com/v/'.$video.'" type="application/x-shockwave-flash" wmode="transparent" '.$dimensions.' /></object></div>';
        $texy = $invocation->getTexy();
        return $texy->protect($code, Texy::CONTENT_BLOCK);
    }
    return $invocation->proceed();
}

Čo ak by sa tento Handler (TexyCode) riešil takto:

$texy->addTexyCode('youtube:{TEXT}', '<div class="youtube"><object width="480" height="395">
    <param name="movie" value="http://www.youtube.com/v/{TEXT}">
    <param name="wmode" value="transparent">
    <embed src="http://www.youtube.com/v/H_XkyTLtveM" type="application/x-shockwave-flash" wmode="transparent" width="480" height="395"></object>
</div>');

A pridával by sa klasicky Texy syntaxom [* youtube:{TEXT} *]. :)

Čiže:

$texy->addTexyCode('NazovTexyCode:{TEXT}', 'nejaky html kod a niekde v nom {TEXT}');

[* NazovTexyCode:{TEXT} *]

Stojí táto features na zaradenie do worklistu? Je to taký základný návrh. Určite by sa to dalo rozvíjať pekne divokým smerom. :)

Editoval _rasel^ (8. 6. 2008 11:41)