2 // Prepare an array of available roles. We need it for "is_client" property.
3 // It is used to selectively display client selector for client roles.
6 {foreach $active_roles as $active_role}
7 roles[idx] = new Array({$active_role.id}, '{$active_role.is_client}');
11 // Prepare an array of rates.
12 // Format: project_rates[0] = Array(100, '25.00'), project_rates[1] = Array(120, '30.00'), etc...
13 // First element = project_id, second element = rate for project. Quotes needed for string representation of rates.
14 project_rates = new Array();
16 {foreach $rates as $rate}
17 project_rates[idx] = new Array({$rate.id}, '{$rate.rate}');
21 // getRate - returns a rate for the project. If rate was set for user previously we'll get this old rate
22 // if project time entries for user exists. Otherwise return user default rate.
23 function getRate(project_id) {
24 var length = project_rates.length;
25 for(var i = 0; i < length; i++) {
26 if(project_rates[i][0] == project_id) {
27 return project_rates[i][1];
30 var default_rate = document.userForm.rate.value;
34 // The setRate function sets / unsets user rate for a project when a corresponding checkbox is ticked.
35 function setRate(element) {
36 var default_rate = document.userForm.rate.value;
37 if (default_rate == '') {
38 // No default rate, nothing to do!
41 // Iterate through elements of the form to find and set the project rate.
42 for (var i = 0; i < userForm.elements.length; i++) {
43 if ((userForm.elements[i].type == 'text') && (userForm.elements[i].name == ('rate_'+element.value))) {
44 if (element.checked) {
45 userForm.elements[i].value = getRate(element.value);
47 userForm.elements[i].value = '';
49 break; // Element is found and set, nothing more to do, break out of the loop.
54 // handleClientControl - controls visibility of the client dropdown depending on the selected user role,
55 // also hides and unselects projects when "Client" user role is selected.
56 function handleClientControl() {
57 var selectedRoleId = document.getElementById("role").value;
58 var clientControl = document.getElementById("client");
59 var nonClientBlock = document.getElementById("non_client_block");
60 var projectsControl = document.getElementById("projects_control");
62 var len = roles.length;
63 for (var i = 0; i < len; i++) {
64 if (selectedRoleId == roles[i][0]) {
65 var isClient = roles[i][1];
67 clientControl.style.visibility = "visible";
68 nonClientBlock.style.display = "none";
69 projectsControl.style.display = "none";
71 // Uncheck all project checkboxes.
72 var checkboxes = document.getElementsByName("projects[]");
74 for (j = 0; j < checkboxes.length; j++) {
75 checkboxes[j].checked = false;
78 clientControl.value = "";
79 clientControl.style.visibility = "hidden";
80 nonClientBlock.style.display = "";
81 projectsControl.style.display = "";
89 {$forms.userForm.open}
90 <table cellspacing="4" cellpadding="7" border="0">
91 <table cellspacing="1" cellpadding="2" border="0">
93 <td align="right">{$i18n.label.person_name} (*):</td>
94 <td>{$forms.userForm.name.control}</td>
97 <td align="right">{$i18n.label.login} (*):</td>
98 <td>{$forms.userForm.login.control}</td>
102 <td align="right">{$i18n.label.password} (*):</td>
103 <td>{$forms.userForm.pas1.control}</td>
106 <td align="right">{$i18n.label.confirm_password} (*):</td>
107 <td>{$forms.userForm.pas2.control}</td>
111 <td align="right" nowrap>{$i18n.label.email}:</td>
112 <td>{$forms.userForm.email.control}</td>
114 {if $user->id != $user_id}
116 <td align="right">{$i18n.form.users.role}:</td>
117 <td>{$forms.userForm.role.control} {$forms.userForm.client.control}</td>
120 <td align="right">{$i18n.label.status}:</td>
121 <td>{$forms.userForm.status.control}</td>
124 {if $user->id == $user_id}
126 <td align="right">{$i18n.form.users.role}:</td>
127 <td>{$user->role_name} {if $can_swap}<a href="swap_roles.php">{$i18n.form.user_edit.swap_roles}</a>{/if}</td>
130 <tbody id="non_client_block">
133 <td align="right">{$i18n.label.quota} (%):</td>
134 <td>{$forms.userForm.quota_percent.control} <a href="https://www.anuko.com/lp/tt_27.htm" target="_blank">{$i18n.label.what_is_it}</a></td>
138 <td align="right">{$i18n.form.users.default_rate} (0{$user->getDecimalMark()}00):</td>
139 <td>{$forms.userForm.rate.control}</td>
143 <tbody id="projects_control">
144 <tr><td> </td></tr>
146 <td align="right">{$i18n.label.projects}:</td>
147 <td>{$forms.userForm.projects.control}</td>
152 <td colspan="2" align="center">{$i18n.label.required_fields}</td>
155 <td colspan="2" align="center" height="50">{$forms.userForm.btn_submit.control}</td>
159 {$forms.userForm.close}