Put a swap roles link on user_edit.php.
[timetracker.git] / WEB-INF / templates / user_edit.tpl
index 5fa9869..15bf3fe 100644 (file)
@@ -1,4 +1,13 @@
 <script>
+// Prepare an array of available roles. We need it for "is_client" property.
+// It is used to selectively display client selector for client roles.
+roles = new Array();
+var idx = 0;
+{foreach $active_roles as $active_role}
+roles[idx] = new Array({$active_role.id}, '{$active_role.is_client}');
+idx++;
+{/foreach}
+
 // Prepare an array of rates.
 // Format: project_rates[0] = Array(100, '25.00'), project_rates[1] = Array(120, '30.00'), etc...
 // First element = project_id, second element = rate for project. Quotes needed for string representation of rates.
@@ -14,9 +23,9 @@ idx++;
 function getRate(project_id) {
   var length = project_rates.length;
   for(var i = 0; i < length; i++) {
-       if(project_rates[i][0] == project_id) {
-         return project_rates[i][1];
-       }
+    if(project_rates[i][0] == project_id) {
+      return project_rates[i][1];
+    }
   }
   var default_rate = document.userForm.rate.value;
   return default_rate;
@@ -33,7 +42,7 @@ function setRate(element) {
   for (var i = 0; i < userForm.elements.length; i++) {
     if ((userForm.elements[i].type == 'text') && (userForm.elements[i].name == ('rate_'+element.value))) {
       if (element.checked) {
-       userForm.elements[i].value = getRate(element.value);
+        userForm.elements[i].value = getRate(element.value);
       } else {
         userForm.elements[i].value = '';
       }
@@ -45,11 +54,19 @@ function setRate(element) {
 // handleClientControl - controls visibility of the client dropdown depending on the selected user role.
 // We need to show it only when the "Client" user role is selected.
 function handleClientControl() {
+  var selectedRoleId = document.getElementById("role").value;
   var clientControl = document.getElementById("client");
-  if ("16" == document.getElementById("role").value)
-       clientControl.style.visibility = "visible";
-  else
-       clientControl.style.visibility = "hidden";
+  var len = roles.length;
+  for (var i = 0; i < len; i++) {
+    if (selectedRoleId == roles[i][0]) {
+      var isClient = roles[i][1];
+      if (isClient == 1)
+        clientControl.style.visibility = "visible";
+      else
+        clientControl.style.visibility = "hidden";
+      break;
+    }
+  }
 }
 </script>
 
@@ -78,18 +95,21 @@ function handleClientControl() {
       <td align="right" nowrap>{$i18n.label.email}:</td>
       <td>{$forms.userForm.email.control}</td>
     </tr>
-{if $user->isManager() && ($user->id != $user_id)}
+{if $user->id != $user_id}
     <tr>
       <td align="right">{$i18n.form.users.role}:</td>
       <td>{$forms.userForm.role.control} {$forms.userForm.client.control}</td>
     </tr>
-{/if}
-{* Prohibit deactivating team manager. Deactivating others is ok. *}
-{if $user->canManageTeam() && !($user->isManager() && $user->id == $user_id)}
     <tr>
       <td align="right">{$i18n.label.status}:</td>
       <td>{$forms.userForm.status.control}</td>
     </tr>
+{/if}
+{if $user->id == $user_id}
+      <tr>
+      <td align="right">{$i18n.form.users.role}:</td>
+      <td>{$user->role_name} {if $user->can('swap_roles')}<a href="swap_roles.php">{$i18n.form.profile.swap_roles}</a>{/if}</td>
+    </tr>
 {/if}
     <tr>
       <td align="right">{$i18n.form.users.default_rate}&nbsp;(0{$user->decimal_mark}00):</td>
@@ -109,4 +129,4 @@ function handleClientControl() {
     </tr>
   </table>
 </table>
-{$forms.userForm.close}
\ No newline at end of file
+{$forms.userForm.close}