PHPTAL og funktioner
Hej EksperterJeg har kigget lind på PHPTAL og synes rigtigt godt om hvad jeg ser.
Dog falder jeg over en ting der absolut ikke tiltaler mig.
Idag har jeg lavet nogle php funktioner til at "outputte" submitbuttons, links, knapper, iconer mm.
Dette gør at genereringen af knapper med både post og get data er UTROLIG NEM.
Jeg kan ikke lige overskue hvordan jeg får samme koncept overført til PHPTAL.
Lydder måske som sort snak, men her er et eksempel
<?
# Sættes til
$icondir = "http://www.multipumpen.mine.nu/ipcam/icons";
# Åbner alle tags i en string eks. tag='test'
function oTagS($input,$dataout="both",$tStart=" ",$tMiddle="='",$tEnd="' ",$custom_search="\w+"){
# Laver ekstra mellemrum i inputtet
$input = preg_replace('/\s{1}/',' ',$input);
# Finder alle tags
preg_match_all("|$tStart($custom_search)$tMiddle(.*?)$tEnd|si"," ".$input." ",$tags);
# Udskriver alle tags til et dobbelt array
$i=0;
foreach($tags[1] as $tag) {
if($dataout=="both") {
$out[trim($tags[1][$i])][0] = " ".preg_replace('/\s+/',' ',trim($tags[0][$i]));
$out[trim($tags[1][$i])][1] = preg_replace('/\s+/',' ',trim($tags[2][$i]));
}
if($dataout=="tag") $out[trim($tags[1][$i])] = " ".preg_replace('/\s+/',' ',trim($tags[0][$i]));
if($dataout=="value") $out[trim($tags[1][$i])] = preg_replace('/\s+/',' ',trim($tags[2][$i]));
$i++;
}
# Returnere arrayet
return $out;
}
function CompressHTML($out,$debug="true"){
# Sletter tomme tags
$out = preg_replace("/ (\w+)=''/",'',$out);
# outputter formen læseligt eller sammenfoldet
if($debug=="true") return $out;
else return preg_replace('/\s+/',' ',$out);
}
# Generere et billede output fra ikonbiblioteket
function icon($name,$height,$width,$class="",$alt="") {
global $icondir;
#$icondir = $wwwroot."/icons"; // http://www.dinURL.dk/mappe/til/ikoner
# Outputter billedet
$out = "<img height='$height' width='$width' class='$class' src='$icondir/$name' border='0' alt='$alt'>";
# Sletter tomme tags og fjerne dobbelt mellemrum
$out = preg_replace("/ (\w+)=''/",'',$out);
$out = preg_replace('/\s+/',' ',$out);
return $out;
}
function btn($string) {
# Åbner tags
$tag = oTagS($string); // oTagS ligger i regexp.php
# Laver clases
if(isset($tag['class'][1])) {
$class['div'] = $tag['class'][1];
$class['a'] = $tag['class'][1] . "_a";
$class['img'] = $tag['class'][1] . "_img";
$class['button'] = $tag['class'][1] . "_button";
$class['input'] = $tag['class'][1] . "_input";
}
# laver form navn hvis ikke angivet
if($tag['form'][1]=="auto") $tag['form'][1] = "btn" . preg_replace("/[^0-9]/", "", microtime(true));
# Laver linket, hvis intet indsat, linker siden til sig selv
if(substr($tag['href'][1],0,1)=="?" OR !isset($tag['href'][1])) $tag['href'][1] = $_SERVER['PHP_SELF'] . $tag['href'][1];
# Laver JS confirms, Laver submit eller link, Insætter også confirm såfremt dette er nødvendigt
if(isset($tag['form'][1])) $js_href = "document['".$tag['form'][1]."'].submit();";
elseif(isset($tag['form_name'][1])) $js_href = "document['".$tag['form_name'][1]."'].submit();";
else $js_href = "parent.location='".$tag['href'][1]."';";
if(isset($tag['cf'][1])) $js = "onclick=\"if(confirm('".$tag['cf'][1]."')){$js_href}\"";
else $js = "onclick=\"$js_href\"";
# Henter icon hvis dette er sat
if(isset($tag['icon'][1])) $icon = icon($tag['icon'][1],$tag['icon_h'][1],$tag['icon_w'][1],$class['img'],$tag['title'][1]);
# Sammensætter alle fælles tags
$shared_tags = $tag['title'][0]." ".$tag['id'][0]." ".$js;
# Generere koden til outputtet
# Åbner form
if(isset($tag['form'])) $out .= "\n<form name='".$tag['form'][1]."' style='display: inline;' method='post' action='".$tag['href'][1]."'>\n";
# Åbner div
$out .= " <div".$class['div']." style='display: inline;'>\n";
# Generere post data
if(isset($tag['post'])) {
$posts = explode(",",$tag['post'][1]);
foreach($posts as $post) {
$postname = explode("=",$post);
$postvalue = substr($post,strlen($postname[0])+1);
$out .= " <input type='hidden' name='$postname[0]' value='$postvalue'>\n";
}
}
# Opretter inputfelt
if(!isset($tag['input_size'][1])) $tag['input_size'][1] = 15;
$input_tags = "value='".$tag['input_value'][1]."' class='".$class['input'][1]."' id='".$tag['input_id'][1]."' size='".$tag['input_size'][1]."'";
if(isset($tag['input'])) $out .= " <input type='text' name='".$tag['input'][1]."' $input_tags>\n";
# Laver linket, knappen, ikonet
if(isset($tag['icon'][1])) $out .= " <a href='#' class='".$class['a']."' $shared_tags>$icon</a>\n";
elseif(isset($tag['submit'][1])) $out .= " <input type='button' class='".$class['button']."' value='".$tag['submit'][1]."' $shared_tags>\n";
elseif(isset($tag['link'][1])) $out .= " <a href='#' class='".$class['a']."' $shared_tags>".$tag['link'][1]."</a>\n";
# lukker div
$out .= " </div>\n";
# Lukker formen hvis den er åben
if(isset($tag['form'])) $out .= "</form>\n";
return CompressHTML($out,$tag['debug'][1]);
}
# Eksempler
# Delete icon med confirm og post data
echo btn("form='auto' href='$PHP_SELF' icon='delete.png' icon_h='15' title='Slet' post='id=test,slet=true' debug='true' cf='Vil du slette navn?'");
echo "<br /><br />";
# Delete icon uden confirm og post data
echo btn("form='auto' href='$PHP_SELF' icon='delete.png' icon_h='15' title='Slet' post='id=test,slet=true' debug='true'");
echo "<br /><br />";
# Delete icon med confirm og get data
echo btn("form='auto' href='$PHP_SELF?id=test&slet=true' icon='delete.png' icon_h='15' title='Slet' debug='true' cf='Vil du slette navn?'");
echo "<br /><br />";
# submitter en form
echo "<form name='TEST' style='display: inline;' method='get'>
<input type='test' name='test' value='tester'>";
echo btn("form_name='TEST' href='$PHP_SELF' icon='edit.png' icon_h='15' title='Slet' post='id=test,slet=true' debug='true' cf='Vil du slette navn?'");
/*
Eksempel på brug
echo btn(" form='auto'
href='kurv.php'
/icon='edit.png'
/icon_w='15'
/icon_h='15'
/link='Køb'
submit='".BYE."'
title='".PRODUKTSIDE_STOCK_BASKET_HINT."'
input='antal'
input_value='1'
input_size='3'
post='action=insert,varenr=$varenr,page=$this_url'
class='kob'
/debug='true'
/cf='Er du sikke på at du vil købe varen'
");
*/
?>
Håber der er en der forstår spørgsmålet, synes det er lidt svært at forklare
