Oznámení

Provoz fóra byl ukončen

Texy! greyboxHandler

před 11 lety

bradley
Člen | 1

Zdravím, řešil jsem ve svém RS vkládání obrázků s greybox skriptem (obdoba lightboxu) a všemožná obcházení se mi zdála ne moc elegantní, proto onen handler. Snad se bude někomu hodit, při menší uprávě může sloužit i pro lightbox.

Tak tedy:

<?php
/**
     * greyboxHandler()
     *
     * Uzivatelsky handler pro greybox
     *
     * @param TexyHandlerInvocation $invocation
     * @param TexyImage $image
     * @param TexyLink $link
     * @return proceed
     */
    function greyboxHandler($invocation, $image, $link) {

        // pokud neni nastaven link obrazku, vyskocim
        if (!isset($link) || $link->type != 2) { return $invocation->proceed(); }

        // zjistime, zda skutecne chceme greybox
        if (preg_match('~(.*)#(greyboxSet|greybox)\%?([a-zA-Z0-9_\-]*)~ims', $link->URL, $flags)) {
            switch($flags[2]) {
                case 'greybox':
                    // nastavime rel u odkazu
                    $link->modifier->attrs['rel'] = 'gb_image[]';
                    // pokusime se nastavit titulek u odkazu
                    $link->modifier->title = (isset($image->modifier->attrs['title'])) ? $image->modifier->attrs['title'] : NULL;
                    // "vynulujeme" titulek u obrazku
                    $image->modifier->attrs['title'] = NULL;
                break;
                case 'greyboxSet':
                    // pokud neni zadan nazev skupiny, vyskocim
                    if (empty($flags[3])) { return $invocation->proceed(); }
                    // nastavime rel u odkazu
                    $link->modifier->attrs['rel'] = 'gb_imageset['. $flags[3] .']';
                    // pokusime se nastavit titulek u odkazu
                    $link->modifier->title = (isset($image->modifier->attrs['title'])) ? $image->modifier->attrs['title'] : NULL;
                    // "vynulujeme" titulek u obrazku
                    $image->modifier->attrs['title'] = NULL;
                break;
            }
            // nastavime "cisty" url odkazu
            $link->URL = $flags[1];
        }
        return $invocation->proceed();
    }
?>

zápis v Texy!: [ images/blob.jpg .(nejaky alt){title: titulek obrázku;} ]:[images/blob-orig.jpg#greyboxSet%jmeno_skupiny]

nebo samostatně: [ images/blob.jpg .(nejaky alt){title: titulek obrázku;} ]:[images/blob-orig.jpg#greybox]

:-)