[pmwiki-users] popup window recipe do not work in PHP 8.2

Piotr Dybczyński piotr at dybczynski.pl
Sun Jun 18 06:55:30 PDT 2023


Hi Gregor,

thanks a lot!

Quick tests showed it works.

Thanks again,

regards,
Piotr
-- 
/************************************************************************
                          dr Piotr A. Dybczyński
  homepage: https://www.dybczynski.pl/Piotr   e-mail: piotr at dybczynski.pl
******************************************************************PAD***/

W dniu 17.06.2023 o 19:48, Gregor Klarič pisze:

> Here is the modified code, not sure, if it works in all cases because I don't know exactly what it should do:

> <?php if (!defined('PmWiki')) exit();
>      /* popupwindow.php, a module written for pmwiki 2
>      for creating popup windows.
>      copyright 2007 Hans Bracker.
> 
>      This program is free software; you can redistribute it and/or modify
>      it under the terms of the GNU General Public License as published
>      by the Free Software Foundation; either version 2 of the License, or
>      (at your option) any later version.
> 
>      Simple syntax: %popwin%[[Group/PageName]] or 
> %popwin%[[Group/PageName| Title]]
>      Syntax with some parameters: %popwin height=300 width=400 top=20 
> left=20%[[link]]
>      See list of available parameters below under $defaults
>      For multiple popup-window links, each with some different parameters,
>      add id= parameter, for instance id=1, id=2 etc.
> 
>      Additional markup:
>      (:popclose Close Window:) creates a link for closing the popup window,
>      replace "Close Window" with whatever label text.
>      (:input closewindow 'Close Window':) creates a 'Close Window' button.
>      replace "Close Window" with whatever label text.
>      add ?action=popopen to the %popwin%link
>          %popwin%[[PageName?action=popopen| link text]]
>      opens the popup and sets a page variable {$PopOpen}.
>      Use it in the popup page in conditionals to trim side menus etc:
>      (:if equal {$PopOpen} 1:)(:noleft:)(:popclose Close Window:)(:ifend:)
>      */
> $RecipeInfo['PopupWindow']['Version'] = '2023-06-17';
> 
> Markup('popwin1','<links','/%popwin\\s*(.*?)%\\[\\[(.*?)\\]\\]/i',
>    "PopupWindow");
> 
> Markup('popwin2','<popwin1',
>    
> "/%popwin\\s*(.*?)%(?>\\[\\[([^|\\]]*)\\|\\s*)(.*?)\\s*\\]\\]($SuffixPattern)/i",
>    "PopupWindow");
> 
> function PopupWindow ($m) {
>     global $LinkPopupFmt, $FmtPV, $PopupLinkPage;
>     $opts=$m[1];
>     $tgt=$m[2];
>     $lbl=$m[3];
>     $sfx=$m[4];
>     extract($GLOBALS['MarkupToHTML']);
> 
>     static $cnt = 0; $cnt++;
>     $defaults = array(
>        'id' => '0',
>        'width' => 500,
>        'height' => 300,
>        'left' => 'center',
>        'top' => 'center',
>        'resizable' => 1,
>        'scrollbars' => 1,
>        'toolbar' => 0,
>        'location' => 0,
>        'directories' => 0,
>        'statusbar' => 0,
>        'menubar' => 0,
>        );
>     $opt = array_merge($defaults, ParseArgs($opts));
> 
>     $FmtV['$PopupLinkPage'] = $PopupLinkPage = $pagename;
>     $FmtPV['$PopupLinkPage'] = '$GLOBALS["PopupLinkPage"]';
> 
>     $LinkPopupFmt = "<a href='\$LinkUrl' onclick=\"return 
> popWin('\$LinkUrl','popup".$opt['id'].
>                  
> "','".$opt['width']."','".$opt['height']."','".$opt['left']."','".$opt['top'].
>                  
> "','".$opt['resizable']."','".$opt['scrollbars']."','".$opt['toolbar'].
>                  
> "','".$opt['location']."','".$opt['directories']."','".$opt['statusbar'].
>                  "','".$opt['menubar']."')\">\$LinkText</a>".
>     ($cnt==1 ? "\n       <script language='javascript' 
> type='text/javascript'><!--
>       function popWin(url,id,px,py,pl,pt,rs,sb,tb,lo,di,st,mb) {
>       if(pl=='center') var pl = (screen.width-px)/2; if(pt=='center') 
> var pt = (screen.height-py)/2;
>   newwindow=window.open(url,id,'toolbar='+tb+',scrollbars='+sb+',location='+lo+',statusbar='+st+',menubar='+mb+',directories='+di+',resizable='+rs+',width='+px+',height='+py+',left='+pl+',top='+pt+'');
>       if (window.focus) {newwindow.focus()} return false;} // -->
>         </script>" : "");
>     return 
> Keep(MakeLink($pagename,$tgt,$lbl,$sfx,$GLOBALS['LinkPopupFmt']),'L');
> }
> 
> # set PV {$PopOpen} with action=popopen
> $HandleActions['popopen'] = 'PopOpenHandle';
> function PopOpenHandle($pagename) {
>      global $FmtPV;
>      $FmtPV['$PopOpen'] = '"1"';
>      HandleBrowse($pagename);
> }
> 
> # create link for closing popup with (:popclose Close Window:)
> Markup('popclose','directives','/\\(:popclose\\s*(.*?):\\)/i',
>         "PopCloseMarkup");
> function PopCloseMarkup($pagename, $label='Close Window') {
>    if(strlen($m[1] < 1)){
>      $label='Close Window';
>    }else{
>      $label=$m[1] ;
>    }
>    extract($GLOBALS['MarkupToHTML']);
> 
> $out = "<a href=\"$PageUrl?action=popclose\" 
> onclick=\"self.close()\">$label</a>";
> return Keep($out);
> }
> 
> # add markup (:input closewindow 'Close Window':)
> SDVA($InputTags['closewindow'], array(
>    ':args' => array('value'),
>    'value' => XL('Close Window'),
>    ':html' => "<input type='button' class='inputbutton' \$InputFormArgs 
> onClick='window.close()' />",
>    ));
> 



More information about the pmwiki-users mailing list