This commit was generated by cvs2svn to compensate for changes in r11022,
[freeside.git] / httemplate / edit / cust_main / first_pkg / select-part_pkg.html
1 <% include('/elements/xmlhttp.html',
2               'url'  => $url_prefix.'misc/svc_acct-domains.cgi',
3               'subs' => [ $opt{'prefix'}. 'get_domains' ],
4            )
5 %>
6
7 <% include('/elements/xmlhttp.html',
8               'url'  => $url_prefix.'misc/part_svc-columns.cgi',
9               'subs' => [ $opt{'prefix'}. 'get_part_svc' ],
10            )
11 %>
12
13 <INPUT TYPE="hidden" NAME="svcdb" VALUE="">
14
15 <SCRIPT TYPE="text/javascript">
16
17   function selopt(what,value,text,selected) {
18     var optionName = new Option(text, value, false, selected);
19     var length = what.length;
20     what.options[length] = optionName;
21   }
22
23   var pkgpart_svcpart2svcdb = {
24 %   foreach my $pkgpart ( map $_->pkgpart, @part_pkg ) {
25       "<% $pkgpart_svcpart{$pkgpart} %>":"<% $svcdb{$pkgpart} %>",
26 %   }
27     '':''
28   };
29
30   function <% $opt{'prefix'} %>pkgpart_svcpart_changed_too(what,selected) {
31
32     <% $opt{'onchange'} %>;
33
34     pkgpart_svcpart = what.options[what.selectedIndex].value;
35
36     var svcdb = pkgpart_svcpart2svcdb[pkgpart_svcpart];
37
38     what.form.svcdb.value = svcdb;
39
40     if ( svcdb == 'svc_acct' ) {
41
42       // go get the new domains
43       function <% $opt{'prefix'} %>update_domains(domains) {
44
45         // blank the current domain list
46         for ( var i = what.form.<% $opt{'prefix'} %>domsvc.length; i >= 0; i-- )
47             what.form.<% $opt{'prefix'} %>domsvc.options[i] = null;
48
49         // add the new domains
50         var domainArray = eval('(' + domains + ')' );
51         for ( var s = 0; s < domainArray.length; s=s+2 ) {
52             var domainLabel = domainArray[s+1];
53             if ( domainLabel == "" )
54                 domainLabel = '(n/a)';
55             selopt( what.form.<% $opt{'prefix'} %>domsvc,
56                     domainArray[s],
57                     domainLabel,
58                     (domainArray[s] == selected) ? true : false
59                   );
60         }
61
62       }
63
64       <% $opt{'prefix'} %>get_domains( pkgpart_svcpart,
65                                        <% $opt{'prefix'} %>update_domains
66                                      );
67
68     } else if ( svcdb == 'svc_phone' ) {
69
70       function <% $opt{'prefix'} %>update_svc_phone(part_svc_column) {
71         var colArray = eval('(' + part_svc_column + ')' );
72         for ( var s = 0; s < colArray.length; s=s+3 ) {
73           var name  = colArray[s];
74           var flag  = colArray[s+1];
75           var value = colArray[s+2];
76           var td_label = document.getElementById(name+'_label_td');
77           var td       = document.getElementById(name+'_td');
78           var input    = document.getElementById(name);
79           if ( flag == 'D' ) {
80             if ( ! input.value ) { input.value = value; }
81             td_label.style.display = ''
82             td.style.display = ''
83           } else if ( flag == 'F' ) {
84             input.value = value;
85             td_label.style.display = 'none'
86             td.style.display = 'none'
87           } else {
88             td_label.style.display = ''
89             td.style.display = ''
90           }
91         }
92       }
93
94       <% $opt{'prefix'} %>get_part_svc( pkgpart_svcpart,
95                                         <% $opt{'prefix'} %>update_svc_phone
96                                       );
97
98     }
99
100   }
101
102 </SCRIPT>
103
104 <% include( '/elements/selectlayers.html',
105               'field'        => $opt{'prefix'}. 'pkgpart_svcpart',
106               'curr_value'   => $opt{pkgpart_svcpart},
107               'options'      => \@options,
108               'labels'       => \%labels,
109               'html_between' => '</TD></TR></TABLE>',
110               #'onchange'     => $opt{'prefix'}. 'pkgpart_svcpart_changed(this,0);',
111               'onchange'     => $opt{'prefix'}. 'pkgpart_svcpart_changed_too(what,0)',
112
113               'layer_callback' => $layer_callback,
114               'layermap'       => \%layermap,
115           )
116 %>
117
118 <SCRIPT TYPE="text/javascript">
119   pkgpart_svcpart_changed_too( document.CustomerForm.pkgpart_svcpart,
120                                <% $opt{saved_domsvc} %>
121                              );
122 </SCRIPT>
123
124 <%init>
125
126 my %opt = @_;
127
128 foreach my $opt (qw( svc_part pkgparts saved_pkgpart saved_domsvc prefix)) {
129   $opt{$_} = '' unless exists($opt{$_}) && defined($opt{$_});
130 }
131 $opt{saved_domsvc} = 0 unless $opt{saved_domsvc};
132
133 my $url_prefix = $opt{'relurls'} ? '' : $p;
134
135 my @part_pkg  = @{ $opt{'part_pkg'}  };
136 my @first_svc = @{ $opt{'first_svc'} };
137
138 my %pkgpart_svcpart = ();
139 my %svcdb = ();
140 my %layermap = ();
141 foreach my $part_pkg ( @part_pkg ) {
142   my $pkgpart = $part_pkg->pkgpart;
143   my $pkgpart_svcpart         = $pkgpart. "_". $part_pkg->svcpart(\@first_svc);
144   $pkgpart_svcpart{$pkgpart}  = $pkgpart_svcpart;
145   $svcdb{$pkgpart}            = $part_pkg->part_svc(\@first_svc)->svcdb;
146   $layermap{$pkgpart_svcpart} = $svcdb{$pkgpart};
147 }
148
149 my @options = ();
150 push @options, '' unless $opt{'disable_empty'};
151 push @options, map $pkgpart_svcpart{ $_->pkgpart }, @part_pkg;
152 my %labels = ( '' => ( $opt{'empty_label'} || '(none)' ),
153                map { $pkgpart_svcpart{ $_->pkgpart } => $_->pkg_comment }
154                    @part_pkg
155              );
156
157 my $layer_callback = sub {
158   my $layer = shift;
159   #$layer_fields, $layer_values, $layer_prefix
160
161 #  my( $pkgpart, $svcpart ) = split('_', $layer);
162 #  my $svcdb = $svcdb{$pkgpart};
163   my $svcdb = $layer;
164
165   return '' unless $svcdb; #'<BR><BR><BR><BR><BR>'
166
167   #full path cause we're being slung around as a coderef (mason closures?)
168   include("/edit/cust_main/first_pkg/$svcdb.html", %opt, );
169 };
170
171 </%init>