stray closing /TABLE in the no-ticket case
[freeside.git] / httemplate / browse / reason_type.html
index a8ccbdc..e5f42e8 100644 (file)
-%
-%$cgi->param('class') =~ /^(\w)$/ or die "illegal class";
-%my $class=$1;
-%
-%my %classmap = ( 'C' => 'cancel',
-%                 'S' => 'suspend',
-%                );
-%
-%my $classname = $classmap{$class};
-%
-%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>";
-%
-%my $reasons_sub = sub {
-%  my $reason_type = shift;
-%
-%  [ map {
-%          [
-%            {
-%              'data'  => $_->reason,
-%              'align' => 'left',
-%              'link'  => $p. "edit/reason.html?class=$class&reasonnum=".
-%                             $_->reasonnum,
-%            },
-%          ];
-%        }
-%    $reason_type->enabled_reasons,
-%
-%  ];
-%  
-%};
-%
-%my $where_clause = "WHERE class='$class'";
-%my $count_query = 'SELECT COUNT(*) FROM reason_type ';
-%$count_query .= $where_clause;
-%
-%my $link = [ $p.'edit/reason_type.html?class='.$class.'&typenum=', 'typenum' ];
-%
-%
-<% 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 $classname = ucfirst($FS::reason_type::class_name{$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)
+  );
+
+$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 {
+          [
+            {
+              'data'  => $_->reason,
+              'align' => 'left',
+              '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 ),
+    [
+      {
+        'data'  => '(add)',
+        'align' => 'left',
+        'link'  => $p. "edit/reason.html?class=$class",
+        'data_style' => 'i',
+      },
+      { 'data'  => '' },
+    ]
+
+  ];
+  
+};
+
+my $where_clause = "WHERE class='$class'";
+my $count_query = 'SELECT COUNT(*) FROM reason_type ';
+$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>