better locale support in message template UI, #24659
authorMark Wells <mark@freeside.biz>
Fri, 23 Aug 2013 00:13:49 +0000 (17:13 -0700)
committerMark Wells <mark@freeside.biz>
Fri, 23 Aug 2013 00:13:49 +0000 (17:13 -0700)
FS/FS/Locales.pm
httemplate/browse/msg_template.html
httemplate/edit/msg_template.html
httemplate/misc/delete-template_content.html [new file with mode: 0644]

index 10bf72a..bf10990 100644 (file)
@@ -37,6 +37,9 @@ tie our %locales, 'Tie::IxHash',
   'iw_IL', { name => 'Hebrew',         country => 'Israel', rtl=>1, },
 ;
 
+$_->{label} = $_->{name} . ' (' . $_->{country} . ')'
+  foreach values %locales;
+
 sub locales {
   keys %locales;
 }
index 50afc28..bb5ac94 100644 (file)
@@ -36,7 +36,7 @@ my (@locales, @locale_links);
 foreach my $l ( FS::Locales->locales ) {
   push @locales, sub {
     exists ( $_[0]->content_locales->{$l} )
-    ? +{ FS::Locales->locale_info($l) }->{'name'} 
+    ? +{ FS::Locales->locale_info($l) }->{'label'} 
     : '';
   };
   push @locale_links, sub {
index 115032a..7205ba8 100644 (file)
                              'msgname'   => 'Template name',
                              'from_addr' => 'From: ',
                              'bcc_addr'  => 'Bcc: ',
-                             'locale'    => 'Language',
+                             'locale'    => 'Locale',
                              'subject'   => 'Subject: ',
                              'body'      => 'Message body',
                            },
      'edit_callback'    => \&edit_callback,
      'error_callback'   => \&edit_callback,
      'html_bottom'      => '</DIV>',
+     'html_table_bottom'=> \&html_table_bottom,
      'html_foot'        => ( $no_submit ? '' : "</TD>$sidebar</TR></TABLE>" ),
      'no_submit'        => $no_submit,
 &>
@@ -120,11 +121,12 @@ sub edit_callback {
 
     # make a list of available locales
     my $content_locales = $object->content_locales;
-    my @locales = grep { !exists($content_locales->{$_}) } FS::Locales->locales;
+    my @locales = grep { !exists($content_locales->{$_}) } 
+                         FS::Conf->new->config('available-locales');
     my %labels;
     foreach (@locales) {
       my %info = FS::Locales->locale_info($_);
-      $labels{$_} = $info{'name'}; # ignoring country for now
+      $labels{$_} = $info{'label'};
     }
     unshift @locales, 'new';
     $labels{'new'} = 'Select language';
@@ -145,7 +147,7 @@ sub edit_callback {
       curr_value  => 'new',
       onchange    => $onchange_locale,
     );
-  } # else it's already set up correctly
+  }
 }
 
 sub menubar_opt_callback {
@@ -159,10 +161,10 @@ sub menubar_opt_callback {
   foreach my $l (FS::Locales->locales) {
     if ( exists $object->content_locales->{$l} ) {
       my %info = FS::Locales->locale_info($l);
-      push @tabs,
-           $info{'name'},
+      push @tabs, 
+           $info{'label'},
            ';locale='.$l;
-      $selected = $info{'name'} if $object->locale eq $l;
+      $selected = $info{'label'} if $object->locale eq $l;
     }
     else {
       $display_new = 1; # there is at least one unused locale left
@@ -329,6 +331,11 @@ function insertHtml(what) {
   var oEditor = FCKeditorAPI.GetInstance("body");
   oEditor.InsertHtml(what);
 };
+
+function areyousure(url, message) {
+  if (confirm(message))
+    window.location.href = url;
+}
 </SCRIPT>
 <TD valign="top"><FORM name="dummy">
 Substitutions: '
@@ -340,4 +347,22 @@ Substitutions: '
 </FONT></TD>
 ';
 
+sub html_table_bottom {
+  my $object = shift;
+  $cgi->param('locale') =~ /^(\w+)$/;
+  my $locale = $1;
+  my $html;
+  if ( $locale and $locale ne 'new' ) {
+    # set up a delete link
+    my $msgnum = $object->msgnum;
+    my $url = $p."misc/delete-template_content.html?msgnum=$msgnum;locale=$1";
+    my $link = qq!<A HREF="javascript:areyousure('$url','Really delete this template?')">! .
+      'Delete this template' .
+      '</A>';
+    $html = qq!<TR><TD></TD>
+      <TD STYLE="font-style: italic; font-size: small">$link</TD></TR>!;
+  }
+  $html;
+}
+
 </%init>
diff --git a/httemplate/misc/delete-template_content.html b/httemplate/misc/delete-template_content.html
new file mode 100644 (file)
index 0000000..e77878c
--- /dev/null
@@ -0,0 +1,18 @@
+<%init>
+die "access denied"
+  unless $FS::CurrentUser::CurrentUser->access_right(['Edit templates', 'Edit global templates']);
+
+my ($msgnum, $locale);
+$cgi->param('msgnum') =~ /^(\d+)$/ or die "bad msgnum";
+$msgnum = $1;
+$cgi->param('locale') =~ /^(\w+)$/ or die "bad locale";
+$locale = $1;
+my $content = qsearchs('template_content',
+              { msgnum => $msgnum, locale => $locale })
+  or die "couldn't find $locale version of template #$msgnum";
+
+my $error = $content->delete;
+my $url = $p.'edit/msg_template.html?msgnum='.$msgnum;
+$url .= ";locale=$locale;error=$error" if $error;
+</%init>
+<% $cgi->redirect($url) %>