merging RT 4.0.6
authorIvan Kohler <ivan@freeside.biz>
Sat, 30 Jun 2012 08:03:13 +0000 (01:03 -0700)
committerIvan Kohler <ivan@freeside.biz>
Sat, 30 Jun 2012 08:03:13 +0000 (01:03 -0700)
1  2 
FS/FS/Mason.pm
httemplate/elements/menu.html

diff --combined FS/FS/Mason.pm
@@@ -122,7 -122,6 +122,7 @@@ if ( -e $addl_handler_use_file ) 
    use FS::UID qw( getotaker dbh datasrc driver_name );
    use FS::Record qw( qsearch qsearchs fields dbdef
                      str2time_sql str2time_sql_closing
 +                    midnight_sql
                     );
    use FS::Conf;
    use FS::CGI qw(header menubar table itable ntable idiot
    use FS::discount_plan;
    use FS::tower;
    use FS::tower_sector;
 +  use FS::sales;
 +  use FS::access_groupsales;
    use FS::contact_class;
 +  use FS::part_svc_class;
 +  use FS::ftp_target;
    # Sammath Naur
  
    if ( $FS::Mason::addl_handler_use ) {
@@@ -585,7 -580,7 +585,7 @@@ sub mason_interps 
                      },
      compiler     => HTML::Mason::Compiler::ToObject->new(
                        default_escape_flags => 'h',
-                       allow_globals        => [qw(%session)],
+                       allow_globals        => [qw(%session $DECODED_ARGS)],
                      ),
    );
  
@@@ -110,7 -110,8 +110,7 @@@ $report_customers{'List customers'} = 
  $report_customers{'Zip code distribution'}     = [ $fsurl. 'search/report_cust_main-zip.html', 'Zip codes by number of customers' ];
  $report_customers{'Customer signup report'}       = [ $fsurl. 'graph/report_cust_signup.html', 'New customer signups by date' ],
  $report_customers{'Advanced customer reports'} = [ $fsurl. 'search/report_cust_main.html', 'by status, signup date, agent, etc.' ]
 -  if    $curuser->access_right('List customers')
 -     && $curuser->access_right('List packages');
 +  if $curuser->access_right('Advanced customer search');
  
  tie my %report_invoices_open, 'Tie::IxHash',
    'All open invoices' => [ $fsurl.'search/cust_bill.html?OPEN_date', 'All invoices with an unpaid balance' ],
@@@ -200,10 -201,10 +200,10 @@@ foreach my $svcdb ( FS::part_svc->svc_t
        ];
    }
  
 -  if ( $svcdb =~ /^svc_(acct|broadband|hardware)$/ ) {
      $report_svc{"Advanced $lcsname reports"} = 
 -      [ $fsurl."search/report_$svcdb.html", '' ];
 -  }
 +        [ $fsurl."search/report_$svcdb.html", '' ]
 +      if $svcdb =~ /^svc_(acct|broadband|hardware)$/
 +      && $curuser->access_right("Services: $name: Advanced search");
  
    if ( $svcdb eq 'svc_phone' ) {
  
  
    }
  
 -  $report_services{$name} = [ \%report_svc, $longname ];
 +  $report_services{$name} = [ \%report_svc, $longname ]
 +    if $curuser->access_right("Services: $name");
  
  }
  
@@@ -253,17 -253,14 +253,17 @@@ tie my %report_inventory, 'Tie::IxHash'
    'Inventory activity' => [ $fsurl.'search/report_h_inventory_item.html', '' ],
  ;
  
 -tie my %report_rating, 'Tie::IxHash',
 -  'RADIUS sessions' => [ $fsurl.'search/sqlradius.html', '' ],
 -  'Call Detail Records (CDRs)' => [ $fsurl.'search/report_cdr.html', '' ],
 -  'Unrateable CDRs' => [ $fsurl.'search/cdr.html?freesidestatus=failed'.
 -                                               ';cdrbatchnum=_ALL_' ],
 -  'Time worked' => [ $fsurl.'search/report_rt_transaction.html', '' ],
 -  'Time worked summary' => [ $fsurl.'search/report_rt_ticket.html', '' ],
 -;
 +tie my %report_rating, 'Tie::IxHash';
 +$report_rating{'RADIUS sessions'} = [ $fsurl.'search/sqlradius.html', '' ]
 +  if $curuser->access_right("Usage: RADIUS sessions");
 +$report_rating{'Call Detail Records (CDRs)'} = [ $fsurl.'search/report_cdr.html', '' ]
 +  if $curuser->access_right("Usage: Call Detail Records (CDRs)");
 +$report_rating{'Unrateable CDRs'} = [ $fsurl.'search/cdr.html?freesidestatus=failed;cdrbatchnum=_ALL_' ]
 +  if $curuser->access_right("Usage: Unrateable CDRs");
 +if ( $curuser->access_right("Usage: Time worked") ) {
 +  $report_rating{'Time worked'} = [ $fsurl.'search/report_rt_transaction.html', '' ];
 +  $report_rating{'Time worked summary'} = [ $fsurl.'search/report_rt_ticket.html', '' ];
 +}
  
  tie my %report_ticketing_statistics, 'Tie::IxHash',
    'Tickets per day per Queue'         => [ $fsurl.'rt/RTx/Statistics/CallsQueueDay', 'View the number of tickets created, resolved or deleted in a specific Queue, over the requested period of days' ],
  ;
  
  tie my %report_ticketing, 'Tie::IxHash',
-   'Resolved by owner'       => [ $fsurl.'rt/Tools/Reports/ResolvedByOwner.html', '' ],
-   'Resolved in date range'  => [ $fsurl.'rt/Tools/Reports/ResolvedByDates.html', '' ],
-   'Created in date range'   => [ $fsurl.'rt/Tools/Reports/CreatedByDates.html', '' ],
-   'separator'               => '',
+ # fix TimeToResolve extension?  or redo in a more modern way?
+ #  'Resolved by owner'       => [ $fsurl.'rt/Tools/Reports/ResolvedByOwner.html', '' ],
+ #  'Resolved in date range'  => [ $fsurl.'rt/Tools/Reports/ResolvedByDates.html', '' ],
+ #  'Created in date range'   => [ $fsurl.'rt/Tools/Reports/CreatedByDates.html', '' ],
+ #  'separator'               => '',
    'Statistics'              => [ \%report_ticketing_statistics, '' ],
    'separator2'              => '',
    'Advanced ticket reports' => [ $fsurl.'rt/Search/Build.html', 'List tickets by any criteria' ],
@@@ -390,10 -388,18 +391,18 @@@ tie my %tools_exporting, 'Tie::IxHash'
    'Download database dump' => [ $fsurl. 'misc/dump.cgi', '' ],
  ;
  
+ tie my %tools_ticketing_articles, 'Tie::IxHash',
+   'Overview' => [ $fsurl.'rt/Articles/index.html', '' ],
+   'Search'   => [ $fsurl.'rt/Articles/Article/Search.html', '' ],
+   'Topics'   => [ $fsurl.'rt/Articles/Topics.html', '' ],
+ ;
  tie my %tools_ticketing, 'Tie::IxHash',
-   'Offline'      => [ $fsurl.'rt/Tools/Offline.html', '' ],
+   'Articles'     => [ \%tools_ticketing_articles, '' ],
    'My Day'       => [ $fsurl.'rt/Tools/MyDay.html', '' ],
-   'My Approvals' => [ $fsurl.'rt/Approvals/', '' ],
+   'My Reminders' => [ $fsurl.'rt/Tools/MyReminders.html', '' ],
+   'Offline'      => [ $fsurl.'rt/Tools/Offline.html', '' ],
+   'Approval'     => [ $fsurl.'rt/Approvals/', '' ],
  ;
  $tools_ticketing{'Cron Tool'} = [ $fsurl.'rt/Developer/CronTool/', '' ]
    if $conf->exists('rt-crontool');
@@@ -456,7 -462,6 +465,7 @@@ tie my %config_radius, 'Tie::IxHash'
  tie my %config_export_svc, 'Tie::IxHash', ();
  if ( $curuser->access_right('Configuration') ) {
    $config_export_svc{'Service definitions'} = [ $fsurl.'browse/part_svc.cgi', 'Services are items you offer to your customers' ];
 +  $config_export_svc{'Service classes'} = [ $fsurl.'browse/part_svc_class.html', 'Services classes are user-defined, informational types for services' ];
    $config_export_svc{'Provisioning exports'} = [ $fsurl.'browse/part_export.cgi', 'Provisioning services to external machines, databases and APIs' ];
  }
  $config_export_svc{'Dialup'}  = [ \%config_dialup, ''    ]
@@@ -510,10 -515,6 +519,10 @@@ tie my %config_agent, 'Tie::IxHash'
    'Agent payment gateways'         => [ $fsurl.'browse/payment_gateway.html', 'Credit card and electronic check processors for agent overrides' ];
  ;
  
 +tie my %config_sales, 'Tie::IxHash',
 +  'Sales'      => [ $fsurl.'browse/sales.cgi', 'Sales bring in new business.' ],
 +;
 +
  tie my %config_billing_rates, 'Tie::IxHash',
    'Rate plans' => [ $fsurl.'browse/rate.cgi', 'Manage rate plans' ],
    'Regions and prefixes' => [ $fsurl.'browse/rate_region.html', 'Manage regions and prefixes' ],
@@@ -549,12 -550,44 +558,44 @@@ if ( $curuser->access_right('Configurat
    $config_billing{'Credit reason types'}  = [ $fsurl.'browse/reason_type.html?class=R', 'Credit reason types define groups of reasons.' ];
  }
  
+ #XXX also to be unified
+ tie my %config_ticketing_groups, 'Tie::IxHash',
+   'Select' => [ $fsurl.'rt/Admin/Groups', '' ],
+   'Create' => [ $fsurl.'rt/Admin/Groups/Modify.html?Create=1', '' ],
+ ;
+ tie my %config_ticketing_queues, 'Tie::IxHash',
+   'Select' => [ $fsurl.'rt/Admin/Queues', '' ],
+   'Create' => [ $fsurl.'rt/Admin/Queues/Modify.html?Create=1', '' ],
+ ;
+ tie my %config_ticketing_customfields, 'Tie::IxHash',
+   'Select' => [ $fsurl.'rt/Admin/CustomFields', '' ],
+   'Create' => [ $fsurl.'rt/Admin/CustomFields/Modify.html?Create=1', '' ],
+ ;
+ tie my %config_ticketing_articles_classes, 'Tie::IxHash',
+   'Select' => [ $fsurl.'rt/Admin/Articles/Classes/', '' ],
+   'Create' => [ $fsurl.'rt/Admin/Articles/Classes/Modify.html?Create=1', '' ],
+ ;
+ tie my %config_ticketing_articles_customfields, 'Tie::IxHash',
+   'Select' => [ $fsurl.'rt/Admin/CustomFields/index.html?type=RT%3A%3AClass-RT%3A%3AArticle', '' ],
+   'Create' => [ $fsurl.'rt/Admin/CustomFields/Modify.html?Create=1&LookupType=RT%3A%3AClass-RT%3A%3AArticle', '' ],
+ ;
+ tie my %config_ticketing_articles, 'Tie::IxHash',
+   'Classes'       => [ \%config_ticketing_articles_classes, '' ],
+   'Custom Fields' => [ \%config_ticketing_articles_customfields, '' ],
+ ;
  tie my %config_ticketing, 'Tie::IxHash',
-   'Ticketing Users'      => [ $fsurl.'rt/Admin/Users', 'View/Edit ticketing users' ], #XXX to be unified
-   'Ticketing Groups'     => [ $fsurl.'rt/Admin/Groups', 'View/Edit ticketing groups and group membership' ], #XXX to be unified
-   'Ticketing Queues'     => [ $fsurl.'rt/Admin/Queues', 'View/Edit ticketing queues and queue-specific properties' ], 
-   'Ticket Custom Fields' => [ $fsurl.'rt/Admin/CustomFields', 'View/Edit ticketing custom fields' ], 
-   'Ticketing Global'     => [ $fsurl.'rt/Admin/Global', 'View/Edit ticketing configuration applicable to all queues' ], 
+   'Ticketing Users'      => [ $fsurl.'rt/Admin/Users', 'Edit ticketing users' ], #XXX to be unified
+   'Ticketing Groups'     => [ \%config_ticketing_groups, 'View/Edit ticketing groups and group membership' ], #XXX to be unified
+   'Ticketing Queues'     => [ \%config_ticketing_queues, 'View/Edit ticketing queues and queue-specific properties' ], 
+   'Ticket Custom Fields' => [ \%config_ticketing_customfields, 'View/Edit ticketing custom fields' ], 
+   'Ticketing Global'     => [ $fsurl.'rt/Admin/Global', 'View/Edit ticketing configuration applicable to all queues' ], #XXX the individual items
+   'Ticketing Articles'   => [ \%config_ticketing_articles, '' ],
    #"System Configuraiton"?  useless, just makes people report errors about missing Module::Versions::Report #'Ticketing Tools'     => [ $fsurl.'rt/Admin/Tools', '' ], 
  ;
  
@@@ -564,8 -597,9 +605,8 @@@ tie my %config_nms, 'Tie::IxHash'
  
  tie my %config_misc, 'Tie::IxHash';
  $config_misc{'Message templates'} = [ $fsurl.'browse/msg_template.html', 'Templates for customer notices' ]
 -  if $curuser->access_right('Edit templates')
 -  || $curuser->access_right('Edit global templates')
 -  || $curuser->access_right('Configuration');
 +  if $curuser->access_right(['View templates', 'View global templates',
 +                             'Edit templates', 'Edit global templates', ]);
  $config_misc{'Advertising sources'} = [ $fsurl.'browse/part_referral.html', 'Where a customer heard about your service.' ]
    if $curuser->access_right('Edit advertising sources')
    || $curuser->access_right('Edit global advertising sources');
@@@ -578,9 -612,6 +619,9 @@@ $config_misc{'Inventory classes and inv
    || $curuser->access_right('Edit global inventory')
    || $curuser->access_right('Configuration');
  
 +$config_misc{'FTP targets'} = [ $fsurl.'browse/ftp_target.html', 'FTP servers for billing and payment processing' ]
 +  if $curuser->access_right('Configuration');
 +
  tie my %config_menu, 'Tie::IxHash';
  if ( $curuser->access_right('Configuration' ) ) {
    %config_menu = (
      'separator'     => '', #its a separator!
      'Employees'     => [ \%config_employees, '' ],
      'Resellers'     => [ \%config_agent, '' ],
 +    'Sales People'  => [ \%config_sales, '' ],
      'separator2'    => '', #its a separator!
      'Customers'     => [ \%config_cust, '' ],
      #or this? 'Customers and Contacts' => [ \%config_cust, '' ],
@@@ -633,18 -663,18 +674,18 @@@ my $doc_link = $conf->config('support-k
  eval "use RT;"
    if $conf->config('ticket_system') eq 'RT_Internal';
  
 -tie my %help_menu, 'Tie::IxHash', 'Billing documentation' => [ $doc_link, 'Freeside documentation' ];
 -$help_menu{'Ticketing documentation'} = [ 'http://wiki.bestpractical.com/', 'Request Tracker Wiki' ]
 -  if $conf->config('ticket_system') eq 'RT_Internal';
 -$help_menu{'Networking monitoring documentation'} = [ 'http://torrus.org/userguide.pod.html', 'Torrus User Guide' ]
 -  if $conf->config('network_monitoring_system') eq 'Torrus_Internal';
 -$help_menu{'separator'} = '';
 -
 +tie my %help_menu, 'Tie::IxHash';
  my $agentnum = $conf->config('brand-agent');
  if ( $agentnum ) {
    my $company_name = $conf->config('company_name', $agentnum);
    $help_menu{"About $company_name"} = [ "javascript:about_freeside()", '' ];
  } else {
 +  $help_menu{'Billing documentation'} = [ $doc_link, 'Freeside documentation' ];
 +  $help_menu{'Ticketing documentation'} = [ 'http://wiki.bestpractical.com/', 'Request Tracker Wiki' ]
 +    if $conf->config('ticket_system') eq 'RT_Internal';
 +  $help_menu{'Networking monitoring documentation'} = [ 'http://torrus.org/userguide.pod.html', 'Torrus User Guide' ]
 +    if $conf->config('network_monitoring_system') eq 'Torrus_Internal';
 +  $help_menu{'separator'} = '';
    $help_menu{"About Freeside v$FS::VERSION"} = [ "javascript:about_freeside()", '' ];
    $help_menu{"About RT v$RT::VERSION"} = [ 'http://www.bestpractical.com/rt', 'Request Tracker Homepage' ]
      if $conf->config('ticket_system') eq 'RT_Internal';