import torrus 1.0.9
[freeside.git] / httemplate / edit / msg_template.html
index 6632d02..8e859e6 100644 (file)
 <% include( 'elements/edit.html',  
+              'html_init'     => '<TABLE id="outerTable"><TR><TD>',
               'name_singular' => 'template',
               'table'         => 'msg_template',
               'viewall_dir'   => 'browse',
+              'agent_virt'    => 1,
+              'agent_null'    => 1,
+              'agent_null_right' => ['Edit global templates', 'Configuration'],
+
               'fields' => [ 'msgname',
-                            { field=>'body', type=>'htmlarea' },
+                            { field=>'from_addr', size=>60, },
+                            { field=>'bcc_addr',  size=>60, },
+                            { field=>'subject',   size=>80, },
+                            { field=>'body', type=>'htmlarea', width=>763 },
                           ],
+              'labels' => { 'msgnum'    => 'Template',
+                            'msgname'   => 'Template name',
+                            'from_addr' => 'From: ',
+                            'bcc_addr'  => 'Bcc: ',
+                            'subject'   => 'Subject: ',
+                            'body'      => 'Message template',
+                          },
+              'html_foot' => "</TD>$sidebar</TR></TABLE>",
           )
 %>
 <%init>
 
 die "access denied"
   unless $FS::CurrentUser::CurrentUser->access_right('Edit templates')
-  ||     $FS::CurrentUser::CurrentUser->access_right('Edit global templates');
+  ||     $FS::CurrentUser::CurrentUser->access_right('Edit global templates')
+  ||     $FS::CurrentUser::CurrentUser->access_right('Configuration');
+
+# Create hints pane
+
+my %substitutions = (
+  'cust_main' => [
+    '$display_custnum'=> 'Customer#',
+    '$agentnum'       => 'Agent#',
+    '$agent_name'     => 'Agent name',
+    '$payby'          => 'Payment method',
+    '$paymask'        => 'Card/account# (masked)',
+    '$payname'        => 'Name on card/bank name',
+    '$paytype'        => 'Account type',
+    '$payip'          => 'IP address used to submit payment info',
+    '$num_ncancelled_pkgs'  => '# of active packages',
+    '$num_cancelled_pkgs'   => '# of cancelled packages',
+    '$num_pkgs'       => '# of packages',
+    '$classname'      => 'Customer class',
+    '$categoryname'   => 'Customer category',
+    '$balance'        => 'Current balance',
+    '$credit_limit'   => 'Credit limit',
+    '$invoicing_list_emailonly' => 'Billing email address',
+    '$cust_status'    => 'Status',
+    '$ucfirst_cust_status'  => 'Status, capitalized',
+    '$cust_statuscolor'     => 'Status color code',
+    '$company_name'   => 'Our company name',
+    '$company_address'=> 'Our company address',
+  ],
+  'contact' => [ # duplicate this for shipping
+    '$name'           => 'Company and contact name',
+    '$name_short'     => 'Company or contact name',
+    '$company'        => 'Company name',
+    '$contact'        => 'Contact name (last, first)',
+    '$contact_firstlast'=> 'Contact name (first last)',
+    '$first'          => 'First name',
+    '$last'           => 'Last name',
+    '$address1'       => 'Address line 1',
+    '$address2'       => 'Address line 2',
+    '$city'           => 'City',
+    '$county'         => 'County',
+    '$state'          => 'State',
+    '$zip'            => 'Zip',
+    '$country'        => 'Country',
+    '$daytime'        => 'Day phone',
+    '$night'          => 'Night phone',
+    '$fax'            => 'Fax',
+  ],
+  'cust_bill' => [
+    '$invnum'         => 'Invoice#',
+  ],
+  'cust_pkg' => [
+    '$pkgnum'         => 'Package#',
+    '$pkg'            => 'Package description',
+    '$pkg_label'      => 'Description + comment',
+    '$status'         => 'Status',
+    '$statuscolor'    => 'Status color code',
+    '$start_ymd'      => 'Start date',
+    '$setup_ymd'      => 'Setup date',
+    '$last_bill_ymd'  => 'Last bill date',
+    '$next_bill_ymd'  => 'Next bill date',
+    '$susp_ymd'       => 'Suspended on date',
+    '$cancel_ymd'     => 'Canceled on date',
+    '$adjourn_ymd'    => 'Adjournment date',
+    '$expire_ymd'     => 'Expiration date',
+    '$labels_short'   => 'Service labels',
+    '$location_label' => 'Service location',
+  ],
+  'svc_acct'  => [
+    '$svcnum'         => 'Service#',
+    '$username'       => 'Login name',
+    '$password'       => 'Password',
+    '$domain'         => 'Domain name',
+  ],
+  'svc_domain' => [
+    '$svcnum'         => 'Service#',
+    '$domain'         => 'Domain name',
+    '$registrar'      => 'Registrar name',
+    '$catchall'       => 'Catchall email',
+  ],
+  'svc_phone' => [
+    '$svcnum'         => 'Service#',
+    '$phonenum'       => 'Phone number',
+    '$countrycode'    => 'Country code',
+    '$domain'         => 'Domain name'
+  ],
+  'svc_broadband' => [
+    '$svcnum'         => 'Service#',
+    '$ip_addr'        => 'IP address',
+    '$mac_addr'       => 'MAC address',
+    '$speed_up'       => 'Upstream speed',
+    '$speed_down'     => 'Downstream speed',
+  ],
+  'cust_pay'  => [
+    '$paynum'         => 'Payment#',
+    '$paid'           => 'Amount',
+    '$payby'          => 'Payment method',
+    '$date'           => 'Payment date',
+    '$payinfo'        => 'Card/account# (masked)',
+    '$error'          => 'Decline reason',
+  ],
+);
+my @c = @{ $substitutions{'contact'} };
+for (my $i=0; $i<scalar(@c); $i += 2) {
+  $c[$i] =~ s/\$(.*)/\$ship_$1/;
+}
+$substitutions{'shipping'} = \@c;
+
+tie my %sections, 'Tie::IxHash', (
+'contact'   => 'Name and contact info (billing)',
+'shipping'  => 'Name and contact info (shipping)',
+'cust_main' => 'Customer status and payment info',
+'cust_pkg'  => 'Package fields',
+'cust_bill' => 'Invoice fields',
+'cust_pay'  => 'Payment fields',
+'svc_acct'  => 'Login service fields',
+'svc_domain'=> 'Domain service fields',
+'svc_phone' => 'Phone service fields',
+'svc_broadband' => 'Broadband service fields',
+);
+
+my $widget = new HTML::Widgets::SelectLayers(
+  'options'   => \%sections,
+  'form_name' => 'dummy',
+  'html_between'=>'</FORM><FONT SIZE=-1>',
+  'selected_layer'=>(keys(%sections))[0],
+  'layer_callback' => sub {
+    my $section = shift;
+    my $html = include('/elements/table-grid.html');
+    my @hints = @{ $substitutions{$section} };
+    while(@hints) {
+      my $key = shift @hints;
+      $html .= qq!\n<TR><TD><A href="javascript:insertHtml('{$key}')">$key</A></TD>!;
+      $html .= "\n<TD>".shift(@hints).'</TD></TR>';
+    }
+    $html .= "\n</TABLE>";
+    return $html;
+  },
+);
+
+my $sidebar = '
+<SCRIPT TYPE="text/javascript">
+function insertHtml(what) {
+  var oEditor = FCKeditorAPI.GetInstance("body");
+  oEditor.InsertHtml(what);
+};
+</SCRIPT>
+<TD valign="top"><FORM name="dummy">
+Substitutions: '
+. $widget->html .
+'<BR>Click links to insert.
+<BR>Enclose substitutions and other Perl expressions in braces:
+<BR>{ $name } = ExampleCo (Smith, John)
+<BR>{ time2str("%D", time) } = '.time2str("%D", time).'
+</FONT></TD>
+';
 
 </%init>