finish up initial work on customer view tabs (ensure links back to customer view...
authorivan <ivan>
Wed, 17 Jun 2009 02:39:09 +0000 (02:39 +0000)
committerivan <ivan>
Wed, 17 Jun 2009 02:39:09 +0000 (02:39 +0000)
12 files changed:
FS/FS/Conf.pm
FS/FS/access_user.pm
httemplate/edit/process/REAL_cust_pkg.cgi
httemplate/edit/process/part_pkg.cgi
httemplate/edit/process/quick-cust_pkg.cgi
httemplate/elements/menubar.html
httemplate/misc/process/link.cgi
httemplate/pref/pref.html
httemplate/search/cust_event.html
httemplate/search/cust_main.cgi
httemplate/search/cust_pkg.cgi
httemplate/view/cust_main.cgi

index 0664c14..8065f3b 100644 (file)
@@ -2827,6 +2827,23 @@ worry that config_items is freeside-specific and icky.
     'type'        => 'textarea',
   },
 
+  {
+    'key'         => 'cust_main-default_view',
+    'section'     => 'UI',
+    'description' => 'Default customer view, for users who have not selected a default view in their preferences.',
+    'type'        => 'select',
+    'select_hash' => [
+      #false laziness w/view/cust_main.cgi and pref/pref.html
+      'basics'          => 'Basics',
+      'notes'           => 'Notes',
+      'tickets'         => 'Tickets',
+      'packages'        => 'Packages',
+      'payment_history' => 'Payment History',
+      #''                => 'Change History',
+      'jumbo'           => 'Jumbo',
+    ],
+  },
+
 );
 
 1;
index cf56fd8..e605c90 100644 (file)
@@ -1,7 +1,7 @@
 package FS::access_user;
 
 use strict;
-use vars qw( @ISA $DEBUG $me $htpasswd_file );
+use vars qw( @ISA $DEBUG $me $conf $htpasswd_file );
 use FS::UID;
 use FS::Conf;
 use FS::Record qw( qsearch qsearchs dbh );
@@ -19,7 +19,7 @@ $me = '[FS::access_user]';
 
 #kludge htpasswd for now (i hope this bootstraps okay)
 FS::UID->install_callback( sub {
-  my $conf = new FS::Conf;
+  $conf = new FS::Conf;
   $htpasswd_file = $conf->base_dir. '/htpasswd';
 } );
 
@@ -44,8 +44,8 @@ FS::access_user - Object methods for access_user records
 
 =head1 DESCRIPTION
 
-An FS::access_user object represents an internal access user.  FS::access_user inherits from
-FS::Record.  The following fields are currently supported:
+An FS::access_user object represents an internal access user.  FS::access_user
+inherits from FS::Record.  The following fields are currently supported:
 
 =over 4
 
@@ -274,6 +274,9 @@ sub name {
 
 =item access_usergroup
 
+Returns links to the the groups this user is a part of, as FS::access_usergroup
+objects (see L<FS::access_usergroup).
+
 =cut
 
 sub access_usergroup {
@@ -467,6 +470,23 @@ sub access_right {
 
 }
 
+=item default_customer_view
+
+Returns the default customer view for this user, from the 
+"default_customer_view" user preference, the "cust_main-default_view" config,
+or the hardcoded default, "jumbo" (may change to "basics" in the near future).
+
+=cut
+
+sub default_customer_view {
+  my $self = shift;
+
+  $self->option('default_customer_view')
+    || $conf->config('cust_main-default_view')
+    || 'jumbo'; #'basics' in 1.9.1?
+
+}
+
 =back
 
 =head1 BUGS
index ebcb7e4..c99ddc2 100755 (executable)
@@ -3,12 +3,18 @@
 <% $cgi->redirect(popurl(2). "REAL_cust_pkg.cgi?". $cgi->query_string ) %>
 %} else { 
 %  my $custnum = $new->custnum;
-<% $cgi->redirect(popurl(3). "view/cust_main.cgi?$custnum#cust_pkg$pkgnum" ) %>
+%  my $show = $curuser->default_customer_view =~ /^(jumbo|packages)$/
+%               ? ''
+%               : ';show=packages';
+%  my $frag = "cust_pkg$pkgnum"; #hack for IE ignoring real #fragment
+<% $cgi->redirect(popurl(3). "view/cust_main.cgi?custnum=$custnum$show;fragment=$frag#$frag" ) %>
 %}
 <%init>
 
+my $curuser = $FS::CurrentUser::CurrentUser;
+
 die "access denied"
-  unless $FS::CurrentUser::CurrentUser->access_right('Edit customer package dates');
+  unless $curuser->access_right('Edit customer package dates');
 
 my $pkgnum = $cgi->param('pkgnum') or die;
 my $old = qsearchs('cust_pkg',{'pkgnum'=>$pkgnum});
index 96c5b36..3116b7b 100755 (executable)
@@ -134,7 +134,13 @@ my $args_callback = sub {
 my $redirect_callback = sub {
   #my( $cgi, $new ) = @_;
   return '' unless $custnum;
-  popurl(3). "view/cust_main.cgi?keywords=$custnum;dummy=";
+  my $show = $curuser->default_customer_view =~ /^(jumbo|packages)$/
+               ? ''
+               : ';show=packages';
+  #my $frag = "cust_pkg$pkgnum"; #hack for IE ignoring real #fragment
+  #can we link back to the specific customized package?  it would be nice...
+  popurl(3). "view/cust_main.cgi?custnum=$custnum$show;dummy=";
 };
 
 #these should probably move to @args above and be processed by part_pkg.pm...
index 9c24743..57c696e 100644 (file)
@@ -3,12 +3,15 @@
 <% $cgi->redirect(popurl(3). 'misc/order_pkg.html?'. $cgi->query_string ) %>
 %} else {
 %  my $frag = "cust_pkg". $cust_pkg->pkgnum;
+%  my $show = $curuser->default_customer_view =~ /^(jumbo|packages)$/
+%               ? ''
+%               : ';show=packages';
 <% header('Package ordered') %>
   <SCRIPT TYPE="text/javascript">
     // XXX fancy ajax rebuild table at some point, but a page reload will do for now
 
     // XXX chop off trailing #target and replace... ?
-    window.top.location = '<% popurl(3). "view/cust_main.cgi?keywords=$custnum;fragment=$frag#$frag" %>';
+    window.top.location = '<% popurl(3). "view/cust_main.cgi?custnum=$custnum$show;fragment=$frag#$frag" %>';
 
   </SCRIPT>
 
 %}
 <%init>
 
+my $curuser = $FS::CurrentUser::CurrentUser;
+
 die "access denied"
-  unless $FS::CurrentUser::CurrentUser->access_right('Order customer package');
+  unless $curuser->access_right('Order customer package');
 
 #untaint custnum (probably not necessary, searching for it is escape enough)
 $cgi->param('custnum') =~ /^(\d+)$/
index 4d2700c..46f61b3 100644 (file)
@@ -5,7 +5,9 @@ Example:
   include( '/elements/menubar.html',
            
            #options hashref (optional)
-           { 'newstyle' => 1, #may become the default at some point
+           { 'newstyle' => 1,  #may become the default at some point
+             'url_base' => '', #prepended to menubar URLs, for convenience
+             'selected' => '', #currently selected label
            },
 
            #menubar entries (required)
index df15dca..77546f3 100755 (executable)
@@ -1,14 +1,20 @@
 %unless ($error) {
 %  #no errors, so let's view this customer.
 %  my $custnum = $new->cust_pkg->custnum;
-<% $cgi->redirect(popurl(3). "view/cust_main.cgi?$custnum#cust_pkg$pkgnum" ) %>
+%  my $show = $curuser->default_customer_view =~ /^(jumbo|packages)$/
+%               ? ''
+%               : ';show=packages';
+%  my $frag = "cust_pkg$pkgnum"; #hack for IE ignoring real #fragment
+<% $cgi->redirect(popurl(3). "view/cust_main.cgi?custnum=$custnum$show;fragment=$frag#$frag" ) %>
 %} else {
 % errorpage($error);
 %}
 <%init>
 
+my $curuser = $FS::CurrentUser::CurrentUser;
+
 die "access denied"
-  unless $FS::CurrentUser::CurrentUser->access_right('View/link unlinked services');
+  unless $curuser->access_right('View/link unlinked services');
 
 my $DEBUG = 0;
 
index 81800bf..8bdf6c0 100644 (file)
@@ -126,7 +126,7 @@ Vonage integration (see <a href="https://secure.click2callu.com/">Click2Call</a>
 <% include('/elements/footer.html') %>
 <%once>
 
-  #false laziness w/view/cust_main.cgi
+  #false laziness w/view/cust_main.cgi and Conf.pm (cust_main-default_view)
 
   tie my %customer_views, 'Tie::IxHash',
     'Basics'          => 'basics',
index d55b5c6..e8164c2 100644 (file)
@@ -124,7 +124,12 @@ my $trigger_link = sub {
   my $eventtable = $cust_event->eventtable;
   if ( $eventtable eq 'cust_pkg' ) {
     my $custnum = $cust_event->cust_main_custnum;
-    [ "${p}view/cust_main.cgi?$custnum#cust_pkg", 'tablenum' ];
+    my $show = $FS::CurrentUser::CurrentUser->default_customer_view =~ /^(jumbo|packages)$/
+                 ? ''
+                 : ';show=packages';
+    my $pkgnum = $cust_event->tablenum;
+    my $frag = "cust_pkg$pkgnum"; #hack for IE ignoring real #fragment
+    [ "${p}view/cust_main.cgi?custnum=$custnum$show;fragment=$frag#cust_pkg", 'tablenum' ];
   } else {
     [ "${p}view/$eventtable.cgi?", 'tablenum' ];
   }
index 36e4374..658069b 100755 (executable)
@@ -1,5 +1,7 @@
+%my $curuser = $FS::CurrentUser::CurrentUser;
+%
 %die "access denied"
-%  unless $FS::CurrentUser::CurrentUser->access_right('List customers');
+%  unless $curuser->access_right('List customers');
 %
 %my $conf = new FS::Conf;
 %my $maxrecords = $conf->config('maxsearchrecordsperpage');
 %
 %      my $pkg = $part_pkg->pkg;
 %      my $comment = $part_pkg->comment;
-%      my $pkgview = "${p}view/cust_main.cgi?$custnum#cust_pkg$pkgnum";
+%      my $show = $curuser->default_customer_view =~ /^(jumbo|packages)$/
+%                   ? ''
+%                   : ';show=packages';
+%      my $frag = "cust_pkg$pkgnum"; #hack for IE ignoring real #fragment
+%      my $pkgview = "${p}view/cust_main.cgi?custnum=$custnum$show;fragment=$frag#$frag";
 %      my @cust_svc = @{shift @lol_cust_svc};
 %      #my(@cust_svc) = qsearch( 'cust_svc', { 'pkgnum' => $_->pkgnum } );
 %      my $rowspan = scalar(@cust_svc) || 1;
index e797e35..2a70280 100755 (executable)
 %>
 <%init>
 
+my $curuser = $FS::CurrentUser::CurrentUser;
+
 die "access denied"
-  unless $FS::CurrentUser::CurrentUser->access_right('List packages');
+  unless $curuser->access_right('List packages');
 
 my $conf = new FS::Conf;
 my $money_char = $conf->config('money_char') || '$';
@@ -192,8 +194,17 @@ foreach my $field (qw( setup last_bill bill adjourn susp expire cancel )) {
 my $sql_query = FS::cust_pkg->search_sql(\%search_hash);
 my $count_query = delete($sql_query->{'count_query'});
 
+my $show = $curuser->default_customer_view =~ /^(jumbo|packages)$/
+             ? ''
+             : ';show=packages';
+
 my $link = sub {
-  [ "${p}view/cust_main.cgi?".shift->custnum.'#cust_pkg', 'pkgnum' ];
+  my $self = shift;
+  my $frag = 'cust_pkg'. $self->pkgnum; #hack for IE ignoring real #fragment
+  [ "${p}view/cust_main.cgi?custnum=".$self->custnum.
+                           "$show;fragment=$frag#cust_pkg",
+    'pkgnum'
+  ];
 };
 
 my $clink = sub {
index 00856a0..88fd037 100755 (executable)
@@ -207,7 +207,7 @@ my $cust_main = qsearchs( {
 });
 die "Customer not found!" unless $cust_main;
 
-#false laziness w/pref/pref.html
+#false laziness w/pref/pref.html and Conf.pm (cust_main-default_view)
 tie my %views, 'Tie::IxHash',
        'Basics'           => 'basics',
        'Notes'            => 'notes', #notes and files?
@@ -222,9 +222,6 @@ $views{'Jumbo'}           =  'jumbo';
 
 my %viewname = reverse %views;
 
-
-my $view =  $cgi->param('show')
-         || $curuser->option('default_customer_view')
-         || 'jumbo'; #'Basics' in 1.9.1?
+my $view =  $cgi->param('show') || $curuser->default_customer_view;
 
 </%init>