stray closing /TABLE in the no-ticket case
[freeside.git] / httemplate / browse / reason_type.html
index 09f451c..e5f42e8 100644 (file)
@@ -1,53 +1,65 @@
-<% include( 'elements/browse.html',
-                 'title'       => ucfirst($classname) . " Reason Types",
-                 'menubar'     => [ ucfirst($classname) . " reasons" =>
-                                    $p.'browse/reason.html?class=' .  $class,
-                                  ],
-                 'html_init'   => $html_init,
-                 'name'        => $classname . " reason types",
-                 'query'       => { 'table'     => 'reason_type',
-                                    'hashref'   => {},
-                                    'extra_sql' => $where_clause .
-                                                  'ORDER BY typenum',
-                                  },
-                 'count_query' => $count_query,
-                 'header'      => [ '#',
-                                    ucfirst($classname) . ' Reason Type',
-                                    ucfirst($classname) . ' Reasons',
-                                  ],
-                 'fields'      => [ 'typenum',
-                                    'type',
-                                    $reasons_sub,
-                                  ],
-                 'links'       => [ $link,
-                                    $link,
-                                    '',
-                                  ],
-             )
-%>
+<& elements/browse.html,
+  'title'       => ucwords($classname) . " Reasons",
+  'html_init'   => $html_init,
+  'name'        => $classname . " reason types",
+  'query'       => { 'table'     => 'reason_type',
+                    'hashref'   => {},
+                    'extra_sql' => $where_clause .
+                                   'ORDER BY typenum',
+                  },
+  'count_query' => $count_query,
+  'header'      => [ '#',
+                    ucwords($classname) . ' Reason Type',
+                    ucwords($classname) . ' Reasons',
+                  ],
+  'fields'      => [ 'typenum',
+                    'type',
+                    $reasons_sub,
+                  ],
+  'links'       => [ $link,
+                    $link,
+                    '',
+                  ],
+  'disable_total' => 1,
+  'html_form'   => qq!<FORM ACTION="${p}misc/reason_merge.html" METHOD="POST">!,
+  'html_foot'   => $html_foot,
+&>
 <%init>
 
+sub ucwords {
+  join(' ', map ucfirst($_), split(/ /, shift));
+}
+
 die "access denied"
   unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
 
 $cgi->param('class') =~ /^(\w)$/ or die "illegal class";
 my $class=$1;
 
-my %classmap = ( 'C' => 'cancel',
-                 'S' => 'suspend',
-                );
+my $classname = ucfirst($FS::reason_type::class_name{$class});
 
-my $classname = $classmap{$class};
+my $html_init = 'Reasons: ' .
+  include('/elements/menubar.html',
+    map {
+      ucfirst($FS::reason_type::class_name{$_}),
+      $p.'browse/reason_type.html?class=' .  $_
+    } keys (%FS::reason_type::class_name)
+  );
 
-my $html_init = ucfirst($classname) .
-  " reason types allow groups of $classname reasons for reporting purposes." .
-  qq!<BR><BR><A HREF="${p}edit/reason_type.html?class=$class"><I>Add a ! .
-  $classname . " reason type</I></A><BR><BR>";
+$html_init .= include('/elements/init_overlib.html').
+  '<BR><P>' .
+  $classname . ' reasons ' .
+  $FS::reason_type::class_purpose{$class} .
+  '. Reason types allow reasons to be grouped for reporting purposes.' .
+  qq!<BR><BR><A HREF="${p}edit/reason_type.html?class=$class"><I>! .
+  ($classname =~ /^[aeiou]/i ? 'Add an ' : 'Add a ') .
+  lc($classname) . ' reason type</I></A>'.
+  '</P>';
 
 my $reasons_sub = sub {
   my $reason_type = shift;
 
-  [ map {
+  [ map {
           [
             {
               'data'  => $_->reason,
@@ -55,9 +67,22 @@ my $reasons_sub = sub {
               'link'  => $p. "edit/reason.html?class=$class&reasonnum=".
                              $_->reasonnum,
             },
+            {
+              'data'  => q!<INPUT TYPE="checkbox" NAME="reasonnum" VALUE="! . $_->reasonnum . q!">!,
+              'align' => 'right',
+            },
           ];
         }
-    $reason_type->enabled_reasons,
+    $reason_type->enabled_reasons ),
+    [
+      {
+        'data'  => '(add)',
+        'align' => 'left',
+        'link'  => $p. "edit/reason.html?class=$class",
+        'data_style' => 'i',
+      },
+      { 'data'  => '' },
+    ]
 
   ];
   
@@ -69,4 +94,13 @@ $count_query .= $where_clause;
 
 my $link = [ $p.'edit/reason_type.html?class='.$class.'&typenum=', 'typenum' ];
 
+my $html_foot = include('/search/elements/checkbox-foot.html',
+  onclick  => include( '/elements/popup_link_onclick.html',
+                js_action   => q!'! . "${p}misc/reason-merge.html?" . q!' + toCGIString()!,
+                actionlabel => 'Merge reasons',
+              ),
+  label    => 'merge selected reasons',
+  minboxes => 2,
+) . '</FORM>';
+
 </%init>