ACL for hardware class config, RT#85057
[freeside.git] / httemplate / elements / menu.html
index 9220073..f6fc254 100644 (file)
 % }
 
 % unless ( $opt{'nocss'} ) {
-  <link href="<%$fsurl%>elements/freeside.css" type="text/css" rel="stylesheet">
-  <link href="<%$fsurl%>elements/freeside-print.css" type="text/css" rel="stylesheet" media="print">
+  <link href="<%$fsurl%>elements/freeside.css?v=<% $FS::VERSION %>" type="text/css" rel="stylesheet">
+  <link href="<%$fsurl%>elements/freeside-print.css?v=<% $FS::VERSION %>" type="text/css" rel="stylesheet" media="print">
 % }
-<link href="<%$fsurl%>elements/freeside-menu.css" type="text/css" rel="stylesheet">
+<link href="<%$fsurl%>elements/freeside-menu.css?v=<% $FS::VERSION %>" type="text/css" rel="stylesheet">
 
 <SCRIPT TYPE="text/javascript">
 
@@ -274,6 +274,25 @@ foreach my $svcdb ( FS::part_svc->svc_tables() ) {
 
 }
 
+## adding export test reports
+tie my %report_exports, 'Tie::IxHash';
+my $exports = FS::part_export::export_info();
+my $exportname;
+tie my %export_list, 'Tie::IxHash',
+  '' => '',
+  map { $_ => "$_ - ". $exports->{$_}{desc} }
+  sort { $a cmp $b }
+  keys %$exports;
+;
+
+foreach my $export (keys %export_list) {
+  $report_exports{"$export export test"} =
+    [ $fsurl. 'search/report_svc_export_test.cgi?export='.$export,
+      "Report of invalid service setup for services tied to $export export",
+    ] if "FS::part_export::$export"->can('test_export_report');
+}
+$report_services{'exports'} = [ \%report_exports, "Exports" ];
+
 tie my %report_packages, 'Tie::IxHash';
 $report_packages{'Package definitions (by # active)'} =  [ $fsurl.'browse/part_pkg.cgi?active=1', 'Package definitions by number of active packages' ]
   if    $curuser->access_right('Edit package definitions')
@@ -501,7 +520,7 @@ $report_menu{'SQL Query'}      = [ $fsurl.'search/report_sql.html', 'SQL Query']
 tie my %tools_customers, 'Tie::IxHash', ();
 $tools_customers{'Appointments'} = [ $fsurl.'rt/Search/Schedule.html?LengthMin=0', 'View appointment schedule' ]
   if $curuser->access_right('View appointments');
-$tools_customers{'Attachments'} = [ $fsurl.'browse/cust_attachment.html', 'View customer attachments' ]
+$tools_customers{'Attachments'} = [ $fsurl.'search/report_cust_attachment.html', 'View customer attachments' ]
   if !$conf->config('disable_cust_attachment') and $curuser->access_right('View attachments') and $curuser->access_right('Browse attachments');
 $tools_customers{'Customer email settings'} = [ $fsurl.'misc/manage_cust_email.html' ]
   if $curuser->access_right('Edit customer');
@@ -674,7 +693,7 @@ $config_export_svc{'Circuits'} = [ \%config_circuit, '' ]
 $config_export_svc{'Fiber'} = [ \%config_fiber, '' ]
   if $curuser->access_right('Configuration');
 $config_export_svc{'Hardware types'} = [ $fsurl.'browse/hardware_class.html', 'Set up hardware type catalog' ]
-  if $curuser->access_right('Configuration');
+  if $curuser->access_right('Edit hardware classes and types');
 
 tie my %config_pkg_reason, 'Tie::IxHash',
   'Cancel reasons' => [ $fsurl.'browse/reason_type.html?class=C', 'Cancel reasons explain why a service was cancelled.' ],
@@ -934,6 +953,7 @@ if ( $agentnum ) {
     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{'Developer documentation'} = [ "${fsurl}docs/library/FS.html", 'Developer documentation' ];
   $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' ]