idx++;
{/foreach}
-
+
// empty_label is the mandatory top option in the tasks dropdown.
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.
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.
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.
{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) {
}
}
-// 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">
<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> </td>{/if}
+ {if $user->isPluginEnabled('cl') && !($user->isClient() && $user->client_id)}<td><b>{$i18n.label.client}</b></td>{else}<td> </td>{/if}
<td> </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> </td>{/if}
</tr>
<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> </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)}
{/if}
</tr>
{/if}
-{if in_array('iv', explode(',', $user->plugins))}
+{if $user->isPluginEnabled('iv')}
<tr>
<td><b>{$i18n.form.time.billable}</b></td>
<td> </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> </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>
<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} {$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} {$i18n.label.invoice}</label></td>
+ {/if}
+ {if ($user->can('manage_invoices') && $user->isPluginEnabled('ps'))}
+ <td width="25%"><label>{$forms.reportForm.chpaid.control} {$i18n.label.paid}</label></td>
+ {/if}
+ {if $user->can('view_reports') || $user->can('view_all_reports')}
+ <td width="25%"><label>{$forms.reportForm.chip.control} {$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} {$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} {$i18n.label.start}</label>{/if}</td>
<td width="25%"><label>{$forms.reportForm.chduration.control} {$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} {$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} {$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} {$i18n.label.finish}</label>{/if}</td>
+ <td>{if ($smarty.const.MODE_PROJECTS_AND_TASKS == $user->tracking_mode)}<label>{$forms.reportForm.chtask.control} {$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} {$i18n.label.finish}</label>{/if}</td>
<td><label>{$forms.reportForm.chnote.control} {$i18n.label.note}</label></td>
{if ($custom_fields && $custom_fields->fields[0])}
- <td><label>{$forms.reportForm.chcf_1.control} {$custom_fields->fields[0]['label']|escape:'html'}</label></td>
+ <td><label>{$forms.reportForm.chcf_1.control} {$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} {$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">
</td>
</tr>
</table>
-{$forms.reportForm.close}
\ No newline at end of file
+{$forms.reportForm.close}