Page 8 of 8

Posted: Thu 5. Apr 2007, 14:11
by Kosse
Hi Marcus,

nice thing you've done here! :D
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

Posted: Thu 5. Apr 2007, 20:13
by marcus@localhorst
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:

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"]); 
    }
  }
}
?> 
on this line

Code: Select all

76: $replace = preg_replace($linkfind,$linkreplacer,$match[1][$i]);
the parser hangs. is that function complete?

greetings
marcus

Posted: Thu 5. Apr 2007, 20:21
by Kosse
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):

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"]);
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

Posted: Thu 12. Apr 2007, 11:01
by Kosse
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:

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"]);*/
    }
  }
}
?> 
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

Posted: Sun 15. Apr 2007, 11:22
by marcus@localhorst
(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

Posted: Sun 15. Apr 2007, 19:56
by Kosse
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
hey Marcus, thanks 4 checking, I think the preg_replace didn't work in ur code (I don't understand why though...)

ps: edited Philippe's email ;)

Cheers

Posted: Wed 18. Apr 2007, 12:19
by Nordlicht
culda_a wrote:I was thinking on something like this:

Image
Here we go...
LightboxEX with a slideshow and music.

Posted: Wed 18. Apr 2007, 21:02
by marcus@localhorst
should I update my package? :shock:
ok - comes soon 8)

Lightbox 2 Problem with Firefox?

Posted: Wed 25. Apr 2007, 20:27
by cbraun75
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

Posted: Wed 25. Apr 2007, 23:28
by marcus@localhorst
Hi,
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>
delete the first part (maybe you placed that in your template head?) and try it again...
best marcus

Thanxx a lot!!!

Posted: Thu 26. Apr 2007, 19:29
by cbraun75
Yes thats it! Thank you