Oznámení
Provoz fóra byl ukončen
Texy! greyboxHandler
Upozornění: Tohle vlákno je hodně staré.
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]
:-)