[pmwiki-users] Sanity check of first recipe
Jan Erik Moström
lists at mostrom.pp.se
Sun Apr 27 06:56:12 CDT 2008
Thanks to the answers yesterday I've managed to cobble something
together that seem to do what I want. But since this is my first
PHP code and of course my first attempt of doing something
pmwiki I've probably broken a lot of rules etc.
So I would be very grateful if someone could take a look at the
code below and see if I've done something stupid (it seem to
produce the correct HTML).
What I want to do is to be able to insert markup like this
(:jpl src="path|45|10" pop="path|12|15" capt="bla bla bla":)
(:jpr src="path|45|10" pop="path|12|15" capt="bla bla bla":)
(:jpc src="path|45|10" pop="path|12|15" capt="bla bla bla":)
and it should generate some code for displaying photos (I'm
going to use this markup in other places also, I will place the
same text there so that's why I'm not using the standard image
commands in pmwiki). The 'pop' and 'capt' arguments are optional.
Here is my recipe
<?php
Markup("jPhoto",
'inline',
"/\\(:jp(l|r|c) src=\"(.+?)\|(\d+)\|(\d+)\"(.+?):\\)/se",
"Keep(jpFixMarkup('$1','$2','$3','$4',PSS('$5')))"
);
function jpFixMarkup( $type, $image, $iwidth, $iheight,
$tagstring )
{
$pops = array();
$popfound = preg_match("/pop=\"(.+?)\\|(\\d+)\\|(\\d+)\"/",$tagstring,$pops);
$capts = array();
$captfound = preg_match("/capt=\"(.*?)\"/",$tagstring,$capts);
if($type='l'){
$imlink = "<div class=\"jPhotoLeft\">";
} elseif ($type='r'){
$imlink = "<div class=\"jPhotoRight\">";
} else {
$imlink = "<div class=\"jPhoto\">";
}
if($popfound){
$imlink .= "<a href=\"{$pops[1]}\" width=\"{$pops[2]}\" height=\"{$pops[2]}\">";
}
$imlink .= "<img src=\"$image\" width=\"$iwidth\"
height=\"$iheight\" />";
if($popfound){
$imlink .= "</a>";
}
if($captfound){
$imlink .= "<p>{$capts[1]}</p>";
}
return $imlink . '</div>';
}
?>
What should I do differently?
--
Jan Erik Moström, www.mostrom.pp.se
More information about the pmwiki-users
mailing list