* Purpose: make text pop up in windows via overlib
* @link http://smarty.php.net/manual/en/language.function.popup.php {popup}
* (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
* @param array
* @param Smarty
* @return string
*/
function smarty_function_popup($params, &$smarty)
{
- extract($params);
+ $append = '';
+ foreach ($params as $_key=>$_value) {
+ switch ($_key) {
+ case 'text':
+ case 'trigger':
+ case 'function':
+ case 'inarray':
+ $$_key = (string)$_value;
+ if ($_key == 'function' || $_key == 'inarray')
+ $append .= ',' . strtoupper($_key) . ",'$_value'";
+ break;
+
+ case 'caption':
+ case 'closetext':
+ case 'status':
+ $append .= ',' . strtoupper($_key) . ",'" . str_replace("'","\'",$_value) . "'";
+ break;
+
+ case 'fgcolor':
+ case 'bgcolor':
+ case 'textcolor':
+ case 'capcolor':
+ case 'closecolor':
+ case 'textfont':
+ case 'captionfont':
+ case 'closefont':
+ case 'fgbackground':
+ case 'bgbackground':
+ case 'caparray':
+ case 'capicon':
+ case 'background':
+ case 'frame':
+ $append .= ',' . strtoupper($_key) . ",'$_value'";
+ break;
+
+ case 'textsize':
+ case 'captionsize':
+ case 'closesize':
+ case 'width':
+ case 'height':
+ case 'border':
+ case 'offsetx':
+ case 'offsety':
+ case 'snapx':
+ case 'snapy':
+ case 'fixx':
+ case 'fixy':
+ case 'padx':
+ case 'pady':
+ case 'timeout':
+ case 'delay':
+ $append .= ',' . strtoupper($_key) . ",$_value";
+ break;
+
+ case 'sticky':
+ case 'left':
+ case 'right':
+ case 'center':
+ case 'above':
+ case 'below':
+ case 'noclose':
+ case 'autostatus':
+ case 'autostatuscap':
+ case 'fullhtml':
+ case 'hauto':
+ case 'vauto':
+ case 'mouseoff':
+ case 'followmouse':
+ case 'closeclick':
+ if ($_value) $append .= ',' . strtoupper($_key);
+ break;
+
+ default:
+ $smarty->trigger_error("[popup] unknown parameter $_key", E_USER_WARNING);
+ }
+ }
if (empty($text) && !isset($inarray) && empty($function)) {
$smarty->trigger_error("overlib: attribute 'text' or 'inarray' or 'function' required");
if (empty($trigger)) { $trigger = "onmouseover"; }
$retval = $trigger . '="return overlib(\''.preg_replace(array("!'!","![\r\n]!"),array("\'",'\r'),$text).'\'';
- if ($sticky) { $retval .= ",STICKY"; }
- if (!empty($caption)) { $retval .= ",CAPTION,'".str_replace("'","\'",$caption)."'"; }
- if (!empty($fgcolor)) { $retval .= ",FGCOLOR,'$fgcolor'"; }
- if (!empty($bgcolor)) { $retval .= ",BGCOLOR,'$bgcolor'"; }
- if (!empty($textcolor)) { $retval .= ",TEXTCOLOR,'$textcolor'"; }
- if (!empty($capcolor)) { $retval .= ",CAPCOLOR,'$capcolor'"; }
- if (!empty($closecolor)) { $retval .= ",CLOSECOLOR,'$closecolor'"; }
- if (!empty($textfont)) { $retval .= ",TEXTFONT,'$textfont'"; }
- if (!empty($captionfont)) { $retval .= ",CAPTIONFONT,'$captionfont'"; }
- if (!empty($closefont)) { $retval .= ",CLOSEFONT,'$closefont'"; }
- if (!empty($textsize)) { $retval .= ",TEXTSIZE,$textsize"; }
- if (!empty($captionsize)) { $retval .= ",CAPTIONSIZE,$captionsize"; }
- if (!empty($closesize)) { $retval .= ",CLOSESIZE,$closesize"; }
- if (!empty($width)) { $retval .= ",WIDTH,$width"; }
- if (!empty($height)) { $retval .= ",HEIGHT,$height"; }
- if (!empty($left)) { $retval .= ",LEFT"; }
- if (!empty($right)) { $retval .= ",RIGHT"; }
- if (!empty($center)) { $retval .= ",CENTER"; }
- if (!empty($above)) { $retval .= ",ABOVE"; }
- if (!empty($below)) { $retval .= ",BELOW"; }
- if (isset($border)) { $retval .= ",BORDER,$border"; }
- if (isset($offsetx)) { $retval .= ",OFFSETX,$offsetx"; }
- if (isset($offsety)) { $retval .= ",OFFSETY,$offsety"; }
- if (!empty($fgbackground)) { $retval .= ",FGBACKGROUND,'$fgbackground'"; }
- if (!empty($bgbackground)) { $retval .= ",BGBACKGROUND,'$bgbackground'"; }
- if (!empty($closetext)) { $retval .= ",CLOSETEXT,'".str_replace("'","\'",$closetext)."'"; }
- if (!empty($noclose)) { $retval .= ",NOCLOSE"; }
- if (!empty($status)) { $retval .= ",STATUS,'".str_replace("'","\'",$status)."'"; }
- if (!empty($autostatus)) { $retval .= ",AUTOSTATUS"; }
- if (!empty($autostatuscap)) { $retval .= ",AUTOSTATUSCAP"; }
- if (isset($inarray)) { $retval .= ",INARRAY,'$inarray'"; }
- if (isset($caparray)) { $retval .= ",CAPARRAY,'$caparray'"; }
- if (!empty($capicon)) { $retval .= ",CAPICON,'$capicon'"; }
- if (!empty($snapx)) { $retval .= ",SNAPX,$snapx"; }
- if (!empty($snapy)) { $retval .= ",SNAPY,$snapy"; }
- if (isset($fixx)) { $retval .= ",FIXX,$fixx"; }
- if (isset($fixy)) { $retval .= ",FIXY,$fixy"; }
- if (!empty($background)) { $retval .= ",BACKGROUND,'$background'"; }
- if (!empty($padx)) { $retval .= ",PADX,$padx"; }
- if (!empty($pady)) { $retval .= ",PADY,$pady"; }
- if (!empty($fullhtml)) { $retval .= ",FULLHTML"; }
- if (!empty($frame)) { $retval .= ",FRAME,'$frame'"; }
- if (isset($timeout)) { $retval .= ",TIMEOUT,$timeout"; }
- if (!empty($function)) { $retval .= ",FUNCTION,'$function'"; }
- if (isset($delay)) { $retval .= ",DELAY,$delay"; }
- if (!empty($hauto)) { $retval .= ",HAUTO"; }
- if (!empty($vauto)) { $retval .= ",VAUTO"; }
- $retval .= ');" onmouseout="nd();"';
-
- return $retval;
+ $retval .= $append . ');"';
+ if ($trigger == 'onmouseover')
+ $retval .= ' onmouseout="nd();"';
+
+
+ return $retval;
}
/* vim: set expandtab: */