]> git.sur5r.net Git - contagged/blobdiff - smarty/plugins/function.popup.php
Smarty update to 2.6.14
[contagged] / smarty / plugins / function.popup.php
index d1030a7a02f45aceccbcaa787ff5fa5fd4f48e9c..3a76b785a4e73f4f415d51bab0551b1a6b4faf0f 100644 (file)
  * 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");
@@ -30,56 +106,12 @@ function smarty_function_popup($params, &$smarty)
     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: */