Revert "Embed Safe 2.07 into Vend::Safe to avoid various problems with recent version...
[interchange.git] / code / SystemTag / checked.coretag
1 # Copyright 2002-2007 Interchange Development Group and others
2
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 2 of the License, or
6 # (at your option) any later version.  See the LICENSE file for details.
7
8 # $Id: checked.coretag,v 1.9 2007-03-30 23:40:49 pajamian Exp $
9
10 UserTag checked             Order        name value
11 UserTag checked             addAttr
12 UserTag checked             Implicit     multiple multiple
13 UserTag checked             Implicit     default default
14 UserTag checked             PosNumber    2
15 UserTag checked             Version      $Revision: 1.9 $
16 UserTag checked             Routine      <<EOR
17 sub {
18         my ($field,$value,$opt) = @_;
19
20         $value = 'on' unless defined $value;
21
22         my $ref = $opt->{cgi} ? $CGI::values{$field} : $::Values->{$field};
23         return ' checked="checked"' if ! length($ref) and $opt->{default};
24
25         if(! $opt->{case}) {
26                 $ref = lc($ref);
27                 $value = lc($value);
28         }
29
30         return ' checked="checked"' if $ref eq $value;
31
32         if ($opt->{delimiter}) {
33                 $opt->{multiple} = 1;
34         }
35
36         if ($opt->{multiple}) {
37             
38             my $be;
39             my $ee;
40             $opt->{delimiter} = "\0" unless defined $opt->{delimiter};
41
42             if (length $opt->{delimiter}) {
43                 my $del = Vend::Interpolate::get_joiner($opt->{delimiter}, "\0");
44                 $be = '(?:^|' . $del . ')'; ;
45                 $ee = '(?:$|' . $del . ')'; ;
46             }
47             else {
48                 $be = '';
49                 $ee = '';
50             }
51
52             my $regex = qr/$be\Q$value\E$ee/;
53             return ' checked="checked"' if $ref =~ $regex;
54         }
55         return '';
56 }
57 EOR