Improved the script that shows the Totals only checkbox.
[timetracker.git] / WEB-INF / templates / reports.tpl
index 7e4c90b..95b4a43 100644 (file)
@@ -27,7 +27,7 @@ var idx = 0;
   idx++;
 {/foreach}
 
-       
+
 // empty_label is the mandatory top option in the tasks dropdown.
 empty_label = '{$i18n.dropdown.all|escape:'javascript'}';
 
@@ -35,13 +35,13 @@ empty_label = '{$i18n.dropdown.all|escape:'javascript'}';
 function inArray(needle, haystack) {
   var length = haystack.length;
   for(var i = 0; i < length; i++) {
-       if(haystack[i] == needle) return true;
+    if(haystack[i] == needle) return true;
   }
   return false;
 }
-       
+
 // The fillTaskDropdown function populates the task combo box with
-// tasks associated with a selected project_id.    
+// tasks associated with a selected project_id.
 function fillTaskDropdown(project_id) {
   var str_task_ids;
   // Get a string of comma-separated task ids.
@@ -53,11 +53,11 @@ function fillTaskDropdown(project_id) {
     var task_ids = new Array(); // Array of task ids.
     task_ids = str_task_ids.split(",");
   }
-  
+
   var dropdown = document.getElementById("task");
   // Determine previously selected item.
   var selected_item = dropdown.options[dropdown.selectedIndex].value;
-  
+
   // Remove existing content.
   dropdown.length = 0;
   // Add mandatory top option.
@@ -77,7 +77,7 @@ function fillTaskDropdown(project_id) {
         dropdown.options[dropdown_idx+1] = new Option(task_names[i][1], task_names[i][0]);
         dropdown_idx++;
       }
-    } 
+    }
   }
 
   // If a previously selected item is still in dropdown - select it.
@@ -95,14 +95,14 @@ var assigned_projects = new Array();
 {if $assigned_projects}
   {foreach $assigned_projects as $user_id => $projects}
     assigned_projects[{$user_id}] = new Array();
-       {if $projects}
-         {foreach $projects as $idx => $project_id}
-           assigned_projects[{$user_id}][{$idx}] = {$project_id};
-         {/foreach}
+    {if $projects}
+      {foreach $projects as $idx => $project_id}
+        assigned_projects[{$user_id}][{$idx}] = {$project_id};
+      {/foreach}
     {/if}
   {/foreach}
 {/if}
-       
+
 // selectAssignedUsers is called when a project is changed in project dropdown.
 // It selects users on the form who are assigned to this project.
 function selectAssignedUsers(project_id) {
@@ -133,23 +133,36 @@ function selectAssignedUsers(project_id) {
   }
 }
 
-// handleCheckboxes - unmarks and disables the "Totals only" checkbox when
-// "no grouping" is selected in the associated dropdown.
-// In future we need to improve this function and hide not relevant elements completely.
+// handleCheckboxes - unmarks and hides the "Totals only" checkbox when
+// "no grouping" is selected in the associated group by dropdowns.
 function handleCheckboxes() {
   var totalsOnlyCheckbox = document.getElementById("chtotalsonly");
-  if ("no_grouping" == document.getElementById("group_by").value) {
-       // Unmark and disable the "Totals only" checkbox.
+  var totalsOnlyLabel = document.getElementById("totals_only_label");
+  var groupBy1 = document.getElementById("group_by1");
+  var groupBy2 = document.getElementById("group_by2");
+  var groupBy3 = document.getElementById("group_by3");
+  var grouping = false;
+  if ((groupBy1 != null && "no_grouping" != groupBy1.value) ||
+      (groupBy2 != null && "no_grouping" != groupBy2.value) ||
+      (groupBy3 != null && "no_grouping" != groupBy3.value)) {
+    grouping = true;
+  }
+  if (grouping) {
+    // Show the "Totals only" checkbox.
+    totalsOnlyCheckbox.style.visibility = "visible";
+    totalsOnlyLabel.style.visibility = "visible";
+  } else {
+    // Unmark and hide the "Totals only" checkbox.
     totalsOnlyCheckbox.checked = false;
-    totalsOnlyCheckbox.disabled = true;
-  } else
-       totalsOnlyCheckbox.disabled = false;
+    totalsOnlyCheckbox.style.visibility = "hidden";
+    totalsOnlyLabel.style.visibility = "hidden";
+  }
 }
 </script>
 
 {$forms.reportForm.open}
 <div style="padding: 0 0 10 0;">
-  <table border="0" bgcolor="#efefef" width="720">
+  <table border="0" class="divider">
     <tr>
       <td>
         <table cellspacing="1" cellpadding="3" border="0">
@@ -167,9 +180,9 @@ function handleCheckboxes() {
   <tr>
     <td valign="top" colspan="2" align="center">
       <table border="0" cellpadding="3">
-{if ((in_array('cl', explode(',', $user->plugins)) && !($user->isClient() && $user->client_id)) || ($custom_fields && $custom_fields->fields[0] && $custom_fields->fields[0]['type'] == CustomFields::TYPE_DROPDOWN))}          
+{if (($user->isPluginEnabled('cl') && !($user->isClient() && $user->client_id)) || ($custom_fields && $custom_fields->fields[0] && $custom_fields->fields[0]['type'] == CustomFields::TYPE_DROPDOWN))}
         <tr>
-  {if in_array('cl', explode(',', $user->plugins)) && !($user->isClient() && $user->client_id)}<td><b>{$i18n.label.client}</b></td>{else}<td>&nbsp;</td>{/if}
+  {if $user->isPluginEnabled('cl') && !($user->isClient() && $user->client_id)}<td><b>{$i18n.label.client}</b></td>{else}<td>&nbsp;</td>{/if}
           <td>&nbsp;</td>
   {if ($custom_fields && $custom_fields->fields[0] && $custom_fields->fields[0]['type'] == CustomFields::TYPE_DROPDOWN)}<td><b>{$i18n.label.option}</b></td>{else}<td>&nbsp;</td>{/if}
         </tr>
@@ -179,13 +192,13 @@ function handleCheckboxes() {
           <td>{$forms.reportForm.option.control}</td>
         </tr>
 {/if}
-{if ($smarty.const.MODE_PROJECTS == $user->tracking_mode || $smarty.const.MODE_PROJECTS_AND_TASKS == $user->tracking_mode)}      
+{if ($smarty.const.MODE_PROJECTS == $user->tracking_mode || $smarty.const.MODE_PROJECTS_AND_TASKS == $user->tracking_mode)}
         <tr>
           <td><b>{$i18n.label.project}</b></td>
           <td>&nbsp;</td>
   {if ($smarty.const.MODE_PROJECTS_AND_TASKS == $user->tracking_mode)}
           <td><b>{$i18n.label.task}</b></td>
-  {/if}           
+  {/if}
         </tr>
 {/if}
 {if ($smarty.const.MODE_PROJECTS == $user->tracking_mode || $smarty.const.MODE_PROJECTS_AND_TASKS == $user->tracking_mode)}
@@ -197,19 +210,31 @@ function handleCheckboxes() {
   {/if}
         </tr>
 {/if}
-{if in_array('iv', explode(',', $user->plugins))} 
+{if $user->isPluginEnabled('iv')}
         <tr>
           <td><b>{$i18n.form.time.billable}</b></td>
           <td>&nbsp;</td>
+  {if $user->can('manage_invoices')}
           <td><b>{$i18n.label.invoice}</b></td>
+  {/if}
         </tr>
         <tr valign="top">
           <td>{$forms.reportForm.include_records.control}</td>
           <td>&nbsp;</td>
+  {if $user->can('manage_invoices')}
           <td>{$forms.reportForm.invoice.control}</td>
         </tr>
+  {/if}
 {/if}
-{if $user->canManageTeam() || $user->isClient()}
+{if ($user->can('manage_invoices') && $user->isPluginEnabled('ps'))}
+        <tr>
+          <td><b>{$i18n.label.paid_status}</b></td>
+        </tr>
+        <tr>
+          <td>{$forms.reportForm.paid_status.control}</td>
+        </tr>
+{/if}
+{if $user->can('view_reports') || $user->can('view_all_reports') || $user->isClient()}
         <tr>
           <td colspan="3"><b>{$i18n.label.users}</b></td>
         </tr>
@@ -236,49 +261,68 @@ function handleCheckboxes() {
         <tr>
           <td colspan="3">
             <table border="0" width="100%">
-{if in_array('cl', explode(',', $user->plugins)) || in_array('iv', explode(',', $user->plugins))}          
+{if $user->can('view_reports') || $user->can('view_all_reports') || $user->isPluginEnabled('cl') || $user->isPluginEnabled('iv') || $user->isPluginEnabled('ps')}
               <tr>
-  {if in_array('cl', explode(',', $user->plugins))}
+  {if $user->isPluginEnabled('cl')}
                 <td width="25%"><label>{$forms.reportForm.chclient.control}&nbsp;{$i18n.label.client}</label></td>
   {/if}
-  {if ($user->canManageTeam() || $user->isClient()) && in_array('iv', explode(',', $user->plugins))}
+  {if ($user->can('manage_invoices') || $user->isClient()) && $user->isPluginEnabled('iv')}
                 <td width="25%"><label>{$forms.reportForm.chinvoice.control}&nbsp;{$i18n.label.invoice}</label></td>
+  {/if}
+  {if ($user->can('manage_invoices') && $user->isPluginEnabled('ps'))}
+                <td width="25%"><label>{$forms.reportForm.chpaid.control}&nbsp;{$i18n.label.paid}</label></td>
+  {/if}
+  {if $user->can('view_reports') || $user->can('view_all_reports')}
+                <td width="25%"><label>{$forms.reportForm.chip.control}&nbsp;{$i18n.label.ip}</label></td>
   {/if}
               </tr>
-{/if}            
+{/if}
               <tr>
                 <td width="25%">{if ($smarty.const.MODE_PROJECTS == $user->tracking_mode || $smarty.const.MODE_PROJECTS_AND_TASKS == $user->tracking_mode)}<label>{$forms.reportForm.chproject.control}&nbsp;{$i18n.label.project}</label>{/if}</td>
                 <td width="25%">{if (($smarty.const.TYPE_START_FINISH == $user->record_type) || ($smarty.const.TYPE_ALL == $user->record_type))}<label>{$forms.reportForm.chstart.control}&nbsp;{$i18n.label.start}</label>{/if}</td>
                 <td width="25%"><label>{$forms.reportForm.chduration.control}&nbsp;{$i18n.label.duration}</label></td>
-{if ((($user->canManageTeam() || $user->isClient()) || in_array('ex', explode(',', $user->plugins))) && defined('COST_ON_REPORTS') && isTrue($smarty.const.COST_ON_REPORTS))}
+{if ($user->can('manage_invoices') || $user->isClient()) || $user->isPluginEnabled('ex')}
                   <td width="25%"><label>{$forms.reportForm.chcost.control}&nbsp;{$i18n.label.cost}</label></td>
 {else}
                   <td></td>
 {/if}
               </tr>
               <tr>
-               <td>{if ($smarty.const.MODE_PROJECTS_AND_TASKS == $user->tracking_mode)}<label>{$forms.reportForm.chtask.control}&nbsp;{$i18n.label.task}</label>{/if}</td>
-               <td>{if (($smarty.const.TYPE_START_FINISH == $user->record_type) || ($smarty.const.TYPE_ALL == $user->record_type))}<label>{$forms.reportForm.chfinish.control}&nbsp;{$i18n.label.finish}</label>{/if}</td>
+                <td>{if ($smarty.const.MODE_PROJECTS_AND_TASKS == $user->tracking_mode)}<label>{$forms.reportForm.chtask.control}&nbsp;{$i18n.label.task}</label>{/if}</td>
+                <td>{if (($smarty.const.TYPE_START_FINISH == $user->record_type) || ($smarty.const.TYPE_ALL == $user->record_type))}<label>{$forms.reportForm.chfinish.control}&nbsp;{$i18n.label.finish}</label>{/if}</td>
                 <td><label>{$forms.reportForm.chnote.control}&nbsp;{$i18n.label.note}</label></td>
 {if ($custom_fields && $custom_fields->fields[0])}
-                <td><label>{$forms.reportForm.chcf_1.control}&nbsp;{$custom_fields->fields[0]['label']|escape:'html'}</label></td>
+                <td><label>{$forms.reportForm.chcf_1.control}&nbsp;{$custom_fields->fields[0]['label']|escape}</label></td>
 {else}
                 <td></td>
 {/if}
               </tr>
+{if $user->isPluginEnabled('wu')}
+              <tr>
+                <td></td>
+                <td></td>
+                <td width="25%"><label>{$forms.reportForm.chunits.control}&nbsp;{$i18n.label.work_units}</label></td>
+                <td></td>
+              </tr>
+{/if}
             </table>
           </td>
         </tr>
         <tr>
-          <td><b>{$i18n.form.reports.group_by}</b></td>
+            <td><b>{$i18n.form.reports.group_by}</b></td>
         </tr>
         <tr valign="top">
-          <td>{$forms.reportForm.group_by.control} <label>{$forms.reportForm.chtotalsonly.control} {$i18n.form.reports.totals_only}</label></td>
+          <td>{$forms.reportForm.group_by1.control}</td>
+          <td>{$forms.reportForm.group_by2.control}</td>
+          <td>{$forms.reportForm.group_by3.control}</td>
+        </tr>
+        <tr>
+            <td><span id="totals_only_label"><label>{$forms.reportForm.chtotalsonly.control} {$i18n.label.totals_only}</label></span></td>
         </tr>
       </table>
-      
+
 <div style="padding: 10 0 10 0;">
-  <table border="0" bgcolor="#efefef" width="720">
+  <table border="0" class="divider">
     <tr>
       <td align="center">
         <table cellspacing="1" cellpadding="3" border="0">
@@ -298,4 +342,4 @@ function handleCheckboxes() {
     </td>
   </tr>
 </table>
-{$forms.reportForm.close}
\ No newline at end of file
+{$forms.reportForm.close}