====== Bild als Link ====== FIXME translate In der herkömmlichen Mediabox läßt sich lediglich Text optisch ansprechend als Link zur Funktion hinterlegen da dieser auch für die Bezeichnung innerhalb der Mediabox herangezogen wird. Verwendet man bspw. ein Bild wird dies ebenso als Caption eingebunden und zerreißt somit das Layout. Mit dieser Erweitertung ist es möglich über einen Contentpart ein Bild zu definieren das als Link zur Mediabox-Funktion herhält und gleichzeitig einen Text als Caption innerhalb der Mediabox zu definieren. ---- Forum: [[http://forum.phpwcms.org/viewtopic.php?f=1&t=21080&p=132318#p132318]] **Autor:** Robert/ q23.media \\ Tag: siehe Beschreibung \\ Dateiname: mediaboxAdvanced_pimped.php \\ Verzeichnis: template/inc_script/frontend_render/ \\ **Bedingung:** -> [[http://www.phpwcms-docu.de/confincphp_de.phtml|/config/phpwcms/conf.inc.php]] \\ * $phpwcms['allow_ext_render'] = 1; ===== Beschreibung ===== Basis TAG:\\ ##%%[MEDIABOX external|{IMAGE_HEIGHT} {IMAGE_WIDTH}|::[INFOHTML]{INFOHTML}[/INFOHTML]]{IMAGE_ABS}[/MEDIABOX]%%## \\ \\ TAG in einem CP-Template (Basis-Tag hier für imagespecial optimiert) ablegen und entsprechend fein justieren. Anstelle des img-tags kann auch ein replacement-tag verwendet werden. Wichtig ist hierbei alles hinter "**::**" da dies für die Caption gezogen wird. Ohne diesen Abtrenner wird wieder das Bild als Caption verwendet. ===== Code ===== 'mediaboxAdvBlack21.css', // default linktext 'linktext' => '@@More@@' ); // check if current JS Lib is MooTools 1.2 otherwise it will not load if(PHPWCMS_JSLIB != 'mootools-1.2' || ( strpos($content['all'], '[MEDIABOX') === false && strpos($content['all'], 'rel="lightbox') === false ) ) { // remove all [MEDIABOX] replacement tags $content['all'] = preg_replace( array('/\[MEDIABOX.*?\]/i', '/\[\/MEDIABOX\]/i'), '', $content['all'] ); } else { // unset Slimbox CCC and JS unset( $block['custom_htmlhead']['lightbox.css'], $block['custom_htmlhead']['slimbox.js'] ); // Set CSS color and/or More Text: // // // if(preg_match('//', $content['all'], $match)) { $match = explode('|', trim($match[1]), 2); $match[0] = trim($match[0]); if($match[0] == 'black') { $mediaBox['css'] = 'mediaboxAdvBlack21.css'; } elseif($match[0] != 'white') { $mediaBox['css'] = $match[0]; } else { $mediaBox['css'] = 'mediaboxAdvWhite21.css'; } $match[1] = empty($match[1]) ? '' : trim($match[1]); if($match[1]) { $mediaBox['linktext'] = $match[1]; } } initJSLIb(); // load mediaBox JavaScript and CSS set_css_link( 'lib/mediabox/css/'.$mediaBox['css'] ); initJSPlugin('Quickie-yui'); $block['custom_htmlhead']['mediabox.js'] = getJavaScriptSourceLink(TEMPLATE_PATH.'lib/mediabox/mediaboxAdv-yui.js'); $block['custom_htmlhead']['mediaboxvars.js'] = ' '; // parse and render MEDIABOX $content['all'] = preg_replace_callback('/\[MEDIABOX(.*?)\](.*?)\[\/MEDIABOX\]/is', 'renderMediaBox', $content['all']); } function renderMediaBox($match) { $types = array('twitter', 'social', 'flash', 'audio', 'inline', 'external', 'quicktime'); $set = trim($match[1]); $inner = trim($match[2]); $type = ''; $caption = ''; $url = ''; $linktext = ''; $html = ''; $size = ''; $lightbox = ''; // define type, size, caption - elements divided by pipe | $set = explode('|', $set, 3); foreach($set as $key => $item) { $item = trim($item); if($item == '') { continue; } if($type == '' && in_array(strtolower($item), $types)) { $type = strtolower($item); continue; } if(!$size && preg_match('/^([0-9]+).([0-9]+)$/', $item, $s)) { $size = intval($s[1]) . ' ' . intval($s[2]); continue; } $caption = $item; break; } // check inner elements - elements divided by pipe | // it is formatted this way: url | linktext $inner = explode('|', $inner, 2); $inner[0] = trim($inner[0]); $inner[1] = empty($inner[1]) ? '' : trim($inner[1]); if($inner[1]) { $linktext = $inner[1]; } elseif($caption) { $linktext = explode('::', $caption); $caption = trim($linktext[1]); $linktext = trim($linktext[0]); } if($linktext == '') { $linktext = $GLOBALS['mediaBox']['linktext']; } // test if first element is URL if( preg_match('/^http|https:\/\//i', $inner[0]) ) { $url = $inner[0]; } // test against .flv, .mp3, .mp4, .aac, .m4a if( preg_match('/(\.flv|\.mp3|\.mp4|\.m4a|\.aac|\.mov|\.m4v|\.aiff|\.avi|\.caf|\.dv|\.mid|\.m3u|\.mp2|\.qtz|\.f4v|\.f4p|\.f4a|\.f4b)$/i', $inner[0], $ext) ) { $ext = strtolower($ext[1]); $url = $inner[0]; // set type Flash (Video) if($ext === '.flv' || $ext === '.mp4' || $ext === '.m4v') { $type = 'flash'; } elseif($ext === '.mp3' || $ext === '.m4a' || $ext === '.aac' || $ext === '.f4a' || $ext === '.f4b') { $type = 'audio'; } else { $type = 'quicktime'; } } // what to do if URL is empty if($url == '') { $type = 'inline'; $html = $inner[0]; } if($type != 'inline') { if($type == 'audio' && $size == '') { $size = '350 20'; } $lightbox = ''; } else { $id = 'mb_inline_' . generic_string(6, 1); $lightbox = ''; $lightbox .= LF . ''; } return $lightbox; } ?> \\