Make Lightbox 1.0 simple enhancement for phpwcms contentpart
Hi Marcus,
nice thing you've done here!
I tried to test it, but got an error, I think I followed all your instructions,
could you point me in the right direction? Dunno if it's a bug or I did somethig wrong
Here is the test link: http://www.exil.be/index.php?fr_exil click on top right link "Infos pratiques" > I get the following result: http://www.exil.be/index.php?fr_info
Error talks about unexpected T_STRING. I use charset=iso-8859-15, anything to do with it... ?? Dunno were I messed up
Thanks for your input!
Cheers
nice thing you've done here!
I tried to test it, but got an error, I think I followed all your instructions,
could you point me in the right direction? Dunno if it's a bug or I did somethig wrong
Here is the test link: http://www.exil.be/index.php?fr_exil click on top right link "Infos pratiques" > I get the following result: http://www.exil.be/index.php?fr_info
Error talks about unexpected T_STRING. I use charset=iso-8859-15, anything to do with it... ?? Dunno were I messed up
Thanks for your input!
Cheers
1.3 out, testing, testing...
Sponsoring 4 phpwcms Blog and Usermanagement
Sponsoring 4 phpwcms Blog and Usermanagement
- marcus@localhorst
- Posts: 815
- Joined: Fri 28. May 2004, 11:31
- Location: localhorst
- Contact:
mmh, sorry - I've can't find any error in my script (i've installed the script today on a new phpwcms-installation and got no probs)
looks your function same like this:
on this line
the parser hangs. is that function complete?
greetings
marcus
looks your function same like this:
Code: Select all
<?php
// MAKE LIGHTBOX v1.0.1
// marcus@localhorst (m.o.) 03.04.2007
//
// ------------------------------------
// The red lights mean you're leaving
// The white ones mean returning
// Tell me how this story ends
// And I'll keep them fires burning
// --------------------- ARCADE FIRE --
//
# \|/
# --o--
# /|\
$template_default_article_imagelist_table_class = $template_default['article']['imagelist_table_class'];
$template_default_article_imagelist_class = $template_default["article"]["imagelist_class"];
$template_default_article_imagelist_caption_class = $template_default["article"]["imagelist_caption_class"];
//echo "<pre>";print_r($GLOBALS["phpwcms"]);echo "</pre>";
// change the following only if required!
function makelightbox($img,$thumb,$caption="",$pos="gallery_0") {
$img = base64_decode($img);
$thumb = stripslashes($thumb); // holds the pure orginal htmlcode for displaying the thumbimage
// $caption = convert_to_anything($caption); //maybe you need to check the caption for something illegal ;-)
list($img, $width_height) = explode('?', $img);
$img = $GLOBALS["phpwcms"]["content_path"].$GLOBALS['phpwcms']['cimage_path'].$img;
// #------------------------------------------------------------------------------
// if you use phpwcms version 1.1 use this line!
// $img = $GLOBALS["phpwcms"]["file_tmp"]."".$GLOBALS["phpwcms"]["dir_preview"]."".$img;
// #------------------------------------------------------------------------------
// if you want to use an other presentation methode or an other script you can change the linkage here.
$image ="<a href=\"".$img."\" rel=\"lightbox[".$pos."]\" title=\"".$caption."\">".$thumb."</a>";
return $image;
}
// first search for given css class $template_default_article_imagelist_class to seperate each gallery-table
$searchcp ='#<table.*[^>]class="'.$template_default_article_imagelist_table_class.'">(.*)<\/table>#Us'; // U = ungreedy
preg_match_all($searchcp,$content["all"],$matchcp, PREG_PATTERN_ORDER);
// if found one or more picture tables loop through then and replace for each.
foreach($matchcp[0] as $mypos => $piccp) {
if (!$mypos > 0) {
$block["htmlhead"] .="<!-- Lightbox 2.02 -->\n";
$block["htmlhead"] .="<script type=\"text/javascript\" src=\"".$phpwcms['templates']."inc_app/lightbox/js/prototype.js\"></script>\n";
$block["htmlhead"] .="<script type=\"text/javascript\" src=\"".$phpwcms['templates']."inc_app/lightbox/js/scriptaculous.js?load=effects\"></script>\n";
$block["htmlhead"] .="<script type=\"text/javascript\" src=\"".$phpwcms['templates']."inc_app/lightbox/js/lightbox.js\"></script>\n";
$block["htmlhead"] .="<link href=\"".$phpwcms['templates']."/inc_app/lightbox/css/lightbox.css\" rel=\"stylesheet\" type=\"text/css\" />\n";
$block["htmlhead"] .="<!-- //Lightbox 2.02 -->\n";
}
$pos = "gallery_".$mypos; // this give unique names for the gallery slideshow.
// search for imagelisttd which describe the image table
$search ='#<td class="'.$template_default_article_imagelist_class.'">(.*)<\/td>#U'; // U = ungreedy
preg_match_all($search,$matchcp[0][$mypos],$match, PREG_PATTERN_ORDER);
//print_r($match);
// search for .imglistcaption class to grab the caption
$searchcapt ='#<td class="'.$template_default_article_imagelist_caption_class.'">(.*)<\/td>#U'; // U = ungreedy
preg_match_all($searchcapt,$matchcp[0][$mypos],$matchcapt, PREG_PATTERN_ORDER);
if(is_array($match[1])) {
// now loop through the matches and replace them with the custom code from function makelightbox
foreach($match[1] as $i => $imgcell) {
$caption=$matchcapt[1][$i]; // get image caption if available - if not, it's empty
$linkfind ='#<a href="image_zoom.php\?show=(.*)".*[^>]>(.*)</a>#Ue';
$linkreplacer ="makelightbox('$1','$2','$caption','$pos')";
$replace = preg_replace($linkfind,$linkreplacer,$match[1][$i]);
// last thing is replace the exact strings with the new one
$content["all"] = str_replace($match[1][$i], $replace, $content["all"]);
}
}
}
?>
Code: Select all
76: $replace = preg_replace($linkfind,$linkreplacer,$match[1][$i]);
greetings
marcus
Hi Marcus,
thx for fast reply and ... sadly yes just replaced my file with yours (was the same) and same result... strange ?
I commented line 76 and look what it gives (seems ok to me so far):
Maybe a path to the solution? It's strange that the parser hangs on the preg_replace...
Anyway, if someone has a clue, help is welcome.
Cheers
thx for fast reply and ... sadly yes just replaced my file with yours (was the same) and same result... strange ?
I commented line 76 and look what it gives (seems ok to me so far):
Code: Select all
nav_table_struct($content["struct"], $content["cat_id"], "$1", $template_default["nav_table_struct"]);
nav_table_struct($content["struct"], $content["cat_id"], "$1", $template_default["nav_table_struct"]);
nav_table_struct($content["struct"], $content["cat_id"], "$1", $template_default["nav_table_struct"]);
nav_table_struct($content["struct"], $content["cat_id"], "$1", $template_default["nav_table_struct"]);
nav_table_struct($content["struct"], $content["cat_id"], "$1", $template_default["nav_table_struct"]);
nav_table_struct($content["struct"], $content["cat_id"], "$1", $template_default["nav_table_struct"]);
nav_table_struct($content["struct"], $content["cat_id"], "$1", $template_default["nav_table_struct"]);
nav_table_struct($content["struct"], $content["cat_id"], "$1", $template_default["nav_table_struct"]);
nav_table_struct($content["struct"], $content["cat_id"], "$1", $template_default["nav_table_struct"]);
nav_table_struct($content["struct"], $content["cat_id"], "$1", $template_default["nav_table_struct"]);
nav_table_struct($content["struct"], $content["cat_id"], "$1", $template_default["nav_table_struct"]);
nav_table_struct($content["struct"], $content["cat_id"], "$1", $template_default["nav_table_struct"]);
Anyway, if someone has a clue, help is welcome.
Cheers
1.3 out, testing, testing...
Sponsoring 4 phpwcms Blog and Usermanagement
Sponsoring 4 phpwcms Blog and Usermanagement
Hey marcus,
we changed a bit the lightbox.php file and now it works, you can see results at http://www.exil.be/index.php?fr_info
It was the preg_replace he (he as in 'the server') didn't like, don't know why, apparently the $1 in $linkreplacer was a problem...
Here is the modified lightbox:
Philippe (vow), who did the coding says he didn't check it thouroughly so it might not be very 'clean' or even secure, can you tell me what you think about it?
Thanks for your help,
Cheers
we changed a bit the lightbox.php file and now it works, you can see results at http://www.exil.be/index.php?fr_info
It was the preg_replace he (he as in 'the server') didn't like, don't know why, apparently the $1 in $linkreplacer was a problem...
Here is the modified lightbox:
Code: Select all
<?php
// MAKE LIGHTBOX v1.0.1
// marcus@localhorst (m.o.) 03.04.2007
//
// ------------------------------------
// The red lights mean you're leaving
// The white ones mean returning
// Tell me how this story ends
// And I'll keep them fires burning
// --------------------- ARCADE FIRE --
//
# \|/
# --o--
# /|\
$template_default_article_imagelist_table_class = $template_default['article']['imagelist_table_class'];
$template_default_article_imagelist_class = $template_default["article"]["imagelist_class"];
$template_default_article_imagelist_caption_class = $template_default["article"]["imagelist_caption_class"];
//echo "<pre>";print_r($GLOBALS["phpwcms"]);echo "</pre>";
// change the following only if required!
function makelightbox($img,$thumb,$caption="",$pos="gallery_0") {
$img = base64_decode($img);
$thumb = stripslashes($thumb); // holds the pure orginal htmlcode for displaying the thumbimage
// $caption = convert_to_anything($caption); //maybe you need to check the caption for something illegal ;-)
list($img, $width_height) = explode('?', $img);
$img = $GLOBALS["phpwcms"]["content_path"].$GLOBALS['phpwcms']['cimage_path'].$img;
// #------------------------------------------------------------------------------
// if you use phpwcms version 1.1 use this line!
// $img = $GLOBALS["phpwcms"]["file_tmp"]."".$GLOBALS["phpwcms"]["dir_preview"]."".$img;
// #------------------------------------------------------------------------------
// if you want to use an other presentation methode or an other script you can change the linkage here.
$image ="<a href=\"".$img."\" rel=\"lightbox[".$pos."]\" title=\"".$caption."\">".$thumb."</a>";
return $image;
}
// first search for given css class $template_default_article_imagelist_class to seperate each gallery-table
$searchcp ='#<table.*[^>]class="'.$template_default_article_imagelist_table_class.'">(.*)<\/table>#Us'; // U = ungreedy
preg_match_all($searchcp,$content["all"],$matchcp, PREG_PATTERN_ORDER);
// if found one or more picture tables loop through then and replace for each.
foreach($matchcp[0] as $mypos => $piccp) {
if (!$mypos > 0) {
$block["htmlhead"] .="<!-- Lightbox 2.02 -->\n";
$block["htmlhead"] .="<script type=\"text/javascript\" src=\"".$phpwcms['templates']."inc_app/lightbox/js/prototype.js\"></script>\n";
$block["htmlhead"] .="<script type=\"text/javascript\" src=\"".$phpwcms['templates']."inc_app/lightbox/js/scriptaculous.js?load=effects\"></script>\n";
$block["htmlhead"] .="<script type=\"text/javascript\" src=\"".$phpwcms['templates']."inc_app/lightbox/js/lightbox.js\"></script>\n";
$block["htmlhead"] .="<link href=\"".$phpwcms['templates']."/inc_app/lightbox/css/lightbox.css\" rel=\"stylesheet\" type=\"text/css\" />\n";
$block["htmlhead"] .="<!-- //Lightbox 2.02 -->\n";
}
$pos = "gallery_".$mypos; // this give unique names for the gallery slideshow.
// search for imagelisttd which describe the image table
$search ='#<td class="'.$template_default_article_imagelist_class.'">(.*)<\/td>#U'; // U = ungreedy
preg_match_all($search,$matchcp[0][$mypos],$match, PREG_PATTERN_ORDER);
//print_r($match);
// search for .imglistcaption class to grab the caption
$searchcapt ='#<td class="'.$template_default_article_imagelist_caption_class.'">(.*)<\/td>#U'; // U = ungreedy
preg_match_all($searchcapt,$matchcp[0][$mypos],$matchcapt, PREG_PATTERN_ORDER);
if(is_array($match[1])) {
// now loop through the matches and replace them with the custom code from function makelightbox
// var_dump($match[1]);
foreach($match[1] as $i => $imgcell) {
// begin philippe at piezo (or ple AT alter DOT be)
// just a hack, not secure, but works as possible
$pletabtemp = split('<a href=',$imgcell);
if(count($pletabtemp)>1){
$pletabtemp2=split("show=",$pletabtemp[1]);
$pletabtemp3=split("%3D%3D",$pletabtemp2[1]);
$ple_img_code =$pletabtemp3[0];
$ple_img_decode =base64_decode($pletabtemp3[0]);
$pletabtemp5 = split("\?",$ple_img_decode);
$ple_img_decode = $pletabtemp5[0];
$pletabtemp4 = split('\" ',$match[1][$i]);
$ple_vars = $pletabtemp4[2].'" '.$pletabtemp4[3].'" '.$pletabtemp4[4].'" '.$pletabtemp4[5].'" '.$pletabtemp4[6].'" ';
$ple_img_src = '<img src="'.$GLOBALS["phpwcms"]["content_path"].$GLOBALS['phpwcms']['cimage_path'].$ple_img_decode.'"'.$ple_vars.'/>';
$linkreplacer =makelightbox($ple_img_code,$ple_img_src,'','$pos');
//echo $ple_img_src;
//$caption=$matchcapt[1][$i]; // get image caption if available - if not, it's empty
//$linkfind ='#<a href="image_zoom.php\?show=(.*)".*[^>]>(.*)</a>#Ue';
$content["all"] = str_replace($match[1][$i], $linkreplacer, $content["all"]);
}
// end philippe
/*$caption=$matchcapt[1][$i]; // get image caption if available - if not, it's empty
$linkfind ='#<a href="image_zoom.php\?show=(.*)".*[^>]>(.*)</a>#Ue';
$linkreplacer ="makelightbox('$1','$2','$caption','$pos')";
$replace = preg_replace($linkfind,$linkreplacer,$match[1][$i]);
// last thing is replace the exact strings with the new one
//$content["all"] = str_replace($match[1][$i], $linkreplacer, $content["all"]);*/
}
}
}
?>
Thanks for your help,
Cheers
Last edited by Kosse on Sun 15. Apr 2007, 19:53, edited 1 time in total.
1.3 out, testing, testing...
Sponsoring 4 phpwcms Blog and Usermanagement
Sponsoring 4 phpwcms Blog and Usermanagement
- marcus@localhorst
- Posts: 815
- Joined: Fri 28. May 2004, 11:31
- Location: localhorst
- Contact:
hey Marcus, thanks 4 checking, I think the preg_replace didn't work in ur code (I don't understand why though...)marcus@localhorst wrote:(take out phillipes mailadress from the example above - or I will put it to my spam database hehe
Is there no preg_replace working on your server? that cannot be?! maybe it works with the backreference //1 (?) (just an idea that I get now)
or doesn't it work in only my code?
greetings marcus
ps: edited Philippe's email
Cheers
1.3 out, testing, testing...
Sponsoring 4 phpwcms Blog and Usermanagement
Sponsoring 4 phpwcms Blog and Usermanagement
Here we go...culda_a wrote:I was thinking on something like this:
LightboxEX with a slideshow and music.
- marcus@localhorst
- Posts: 815
- Joined: Fri 28. May 2004, 11:31
- Location: localhorst
- Contact:
Lightbox 2 Problem with Firefox?
Hi just one Question, I have implemented the lightbox -> works fine with IE but not with the firefox. I have only implemented the multilanguage for poor men nothing more. But in Firefox only the existing side comes with the big picture and the real site is gone.
Has somebody an idea?
Site which you can test it is http://www.galerie-geiger.de
Thanxx
Has somebody an idea?
Site which you can test it is http://www.galerie-geiger.de
Thanxx
- marcus@localhorst
- Posts: 815
- Joined: Fri 28. May 2004, 11:31
- Location: localhorst
- Contact:
Hi,
I've noticed, that you include the JS Code of lightbox twice. maybe that's it?
delete the first part (maybe you placed that in your template head?) and try it again...
best marcus
I've noticed, that you include the JS Code of lightbox twice. maybe that's it?
Code: Select all
<META name="pragma" content="no-cache">
<script type="text/javascript" src="template/inc_app/lightbox/js/prototype.js"></script>
<script type="text/javascript" src="template/inc_app/lightbox/js/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="template/inc_app/lightbox/js/lightbox.js"></script>
<link rel="stylesheet" href="template/inc_app/lightbox/css/lightbox.css" type="text/css" media="screen" />
<script type="text/javascript" src="template/multilang/languages.js"></script>
<style type="text/css">.invisibleonload {visibility:hidden}</style>
<!-- Lightbox 2.02 -->
<script type="text/javascript" src="/template/inc_app/lightbox/js/prototype.js"></script>
<script type="text/javascript" src="/template/inc_app/lightbox/js/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="/template/inc_app/lightbox/js/lightbox.js"></script>
<link href="/template//inc_app/lightbox/css/lightbox.css" rel="stylesheet" type="text/css" />
<!-- //Lightbox 2.02 -->
</head>
best marcus
Thanxx a lot!!!
Yes thats it! Thank you