#1 8. 6. 2008 11:33

_rasel^
Člen
Místo: Košice [SR]
Registrovaný: 11. 10. 2005
Příspěvky: 19
Web

Ľahšia tvorba Handlerov (TexyCode)

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)


[w] by _rasel^ | „A man can't avoid what he's meant to do, when he's meant to do it, even if he doesn't really want to.“

Offline

 

Zápatí

Reklama: Školení PHP | Magento