summaryrefslogtreecommitdiff
path: root/httemplate/elements/popup_link_onclick.html
blob: b59720a3ace6c2cb905ccc7db0e041825e9aa127 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<%doc>

Example:

  include('/elements/init_overlib.html')

  include( '/elements/popup_link_onclick.html', { #hashref or a list, either way

    #required
    'action'         => 'content.html', # uri for content of popup

    #strongly recommended
    'actionlabel     => 'You clicked',  # popup title
   
    #alternately, use instead of action, values will be passed unquoted to overlib
    'js_action'      => 'url',          # javascript variable or expression
    'js_actionlabel' => 'actionlabel',  # javascript variable or expression   

    #opt
    'width'          => 540,
    'height'         => 336,
    'color'          => '#ff0000',
    'closetext'      => 'Go Away',      # the value '' removes the link
    'nocenter'       => 0, #bool, elminates centering the popup

    #uncommon opt
    'frame'          => 0, #bool
    'scrolling'      => 'yes', #scrollbars:
                               # 'auto' (default if omitted), 'yes' or 'no'.
    'nofalse'        => 0, #bool, eliminates "return false;"

  } )

</%doc>
% if ($action) { 
<% $onclick |n %>\
% }
<%init>

my( $action, $actionlabel, $frame ) = ( '', '', '' );
my( $width, $height ) = ( 540, 336 );
my $closetext = emt('Close');
my $color = '#333399';
my $scrolling = 'auto';

my $params;
if (ref($_[0]) eq 'HASH') {
  #$params = { %$params, %{ $_[0] } };
  $params = shift;
} else {
  #$params = { %$params, @_ };
  $params = { @_ };
}

$action      = q(') . $params->{'action'} . q(');
$action      = $params->{'js_action'}   if exists $params->{'js_action'};
$actionlabel = q(') . $params->{'actionlabel'} . q(');
$actionlabel = $params->{'js_actionlabel'} if exists $params->{'js_actionlabel'};
$width       = $params->{'width'}       if exists $params->{'width'};
$height      = $params->{'height'}      if exists $params->{'height'};
$color       = $params->{'color'}       if exists $params->{'color'};
$closetext   = $params->{'closetext'}   if exists $params->{'closetext'};
$frame       = $params->{'frame'}       if exists $params->{'frame'};
$scrolling   = $params->{'scrolling'}   if exists $params->{'scrolling'};

#stupid safari is caching the "location" of popup iframs, and submitting them
#instead of displaying them.  this should prevent that.
my $popup_name = 'popup-'.random_id();

my $onclick =
  "overlib( OLiframeContent($action, $width, $height, '$popup_name', 0, '$scrolling' ), ".
    "CAPTION, $actionlabel, STICKY, AUTOSTATUSCAP, ".
    ( $params->{'nocenter'} ? "" : "MIDX, 0, MIDY, 0, " ).
    "DRAGGABLE, CLOSECLICK, TEXTPADDING, 0, BASE, 0, ".
    "BGCOLOR, '$color', CGCOLOR, '$color', FGCOLOR, '#f8f8f8', ".
    "CLOSETEXT, '$closetext'".
    ( $frame ? ", FRAME, $frame" : '' ).
  ");";
  
$onclick .= " return false;"
  unless $params->{'nofalse'};

</%init>