PageRenderTime 41ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/gui/templates/usermanagement/userInfo.tpl

https://github.com/viglesiasce/testlink
Smarty Template | 251 lines | 217 code | 28 blank | 6 comment | 12 complexity | 6c6e7d56c1d427761986ebf24481cbfb MD5 | raw file
  1. {*
  2. Testlink: smarty template - Edit own account
  3. $Id: userInfo.tpl,v 1.20 2010/05/01 19:45:41 franciscom Exp $
  4. rev: 20080908 - franciscom - email validity check
  5. *}
  6. {assign var="cfg_section" value="login"}
  7. {config_load file="input_dimensions.conf" section=$cfg_section}
  8. {lang_get var='labels'
  9. s='title_account_settings,warning_empty_pwd,warning_different_pwd,never_logged,
  10. warning_enter_less1,warning_enter_at_least1,warning_enter_at_least2,
  11. warning_enter_less2,th_login,th_first_name,th_last_name,
  12. th_email,th_locale,btn_save,th_old_passwd,audit_login_history,none,
  13. th_new_passwd,th_new_passwd_again,btn_change_passwd,audit_last_failed_logins,
  14. your_password_is_external,user_api_key,btn_apikey_generate,empty_email_address,
  15. audit_last_succesful_logins,warning,warning_empty_first_name,no_good_email_address,
  16. warning_empty_last_name,passwd_dont_match,empty_old_passwd,show_event_history'}
  17. {assign var="action_mgmt" value="lib/usermanagement/userInfo.php"}
  18. {include file="inc_head.tpl" jsValidate="yes" openHead="yes"}
  19. {include file="inc_del_onclick.tpl"}
  20. {literal}
  21. <script type="text/javascript">
  22. {/literal}
  23. var warning_empty_pwd = "{$labels.warning_empty_pwd}";
  24. var warning_different_pwd = "{$labels.warning_different_pwd}";
  25. var warning_enter_less1 = "{$labels.warning_enter_less1}";
  26. var warning_enter_at_least1 = "{$labels.warning_enter_at_least1}";
  27. var warning_enter_at_least2 = "{$labels.warning_enter_at_least2}";
  28. var warning_enter_less2 = "{$labels.warning_enter_less2}";
  29. var names_max_len={#NAMES_MAXLEN#};
  30. var alert_box_title = "{$labels.warning}";
  31. var warning_empty_name = "{$labels.warning_empty_first_name}";
  32. var warning_empty_last = "{$labels.warning_empty_last_name}";
  33. var warning_passwd_dont_match = "{$labels.passwd_dont_match}";
  34. var warning_empty_old_password = "{$labels.empty_old_passwd}";
  35. var warning_empty_email_address = "{$labels.empty_email_address}";
  36. var warning_no_good_email_address = "{$labels.no_good_email_address}";
  37. {literal}
  38. function validatePersonalData(f)
  39. {
  40. var email_warning;
  41. var show_email_warning=false;
  42. if (isWhitespace(f.firstName.value))
  43. {
  44. alert_message(alert_box_title,warning_empty_name);
  45. selectField(f, 'firstName');
  46. return false;
  47. }
  48. if (isWhitespace(f.lastName.value))
  49. {
  50. alert_message(alert_box_title,warning_empty_last);
  51. selectField(f, 'lastName');
  52. return false;
  53. }
  54. if (isWhitespace(f.emailAddress.value))
  55. {
  56. show_email_warning=true;
  57. email_warning=warning_empty_email_address;
  58. }
  59. else
  60. {
  61. if (!/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(f.emailAddress.value))
  62. {
  63. show_email_warning=true;
  64. email_warning=warning_no_good_email_address;
  65. }
  66. }
  67. if( show_email_warning )
  68. {
  69. alert_message(alert_box_title,email_warning);
  70. selectField(f, 'emailAddress');
  71. return false;
  72. }
  73. return true;
  74. }
  75. function checkPasswords(oldp,newp,newp_check)
  76. {
  77. var oldvalue=document.getElementById(oldp).value;
  78. if (isWhitespace(oldvalue))
  79. {
  80. alert_message(alert_box_title,warning_empty_old_password);
  81. return false;
  82. }
  83. if( !validatePassword(newp,newp_check) )
  84. {
  85. alert_message(alert_box_title,warning_passwd_dont_match);
  86. return false;
  87. }
  88. return true;
  89. }
  90. </script>
  91. {/literal}
  92. </head>
  93. <body>
  94. <h1 class="title">{$labels.title_account_settings}</h1>
  95. {include file="inc_update.tpl" user_feedback=$user_feedback}
  96. <div class="workBack">
  97. <h2>{lang_get s="title_personal_data"}</h2>
  98. <form method="post" action="{$action_mgmt}"
  99. {if $tlCfg->demoMode}
  100. onsubmit="alert('{lang_get s="warn_demo"}'); return false;">
  101. {else}
  102. onsubmit="return validatePersonalData(this)">
  103. {/if}
  104. <input type="hidden" name="doAction" value="editUser" />
  105. <table class="common">
  106. <tr>
  107. <th>{$labels.th_login}</th>
  108. <td>{$user->login}</td>
  109. </tr>
  110. <tr>
  111. <th>{$labels.th_first_name}</th>
  112. <td><input type="text" name="firstName" value="{$user->firstName|escape}"
  113. size="{#NAMES_SIZE#}" maxlength="{#NAMES_MAXLEN#}" />
  114. {include file="error_icon.tpl" field="firstName"}
  115. </td>
  116. </tr>
  117. <tr>
  118. <th>{$labels.th_last_name}</th>
  119. <td><input type="text" name="lastName" value="{$user->lastName|escape}"
  120. size="{#NAMES_SIZE#}" maxlength="{#NAMES_MAXLEN#}" />
  121. {include file="error_icon.tpl" field="lastName"}
  122. </td>
  123. </tr>
  124. <tr>
  125. <th>{$labels.th_email}</th>
  126. <td><input type="text" name="emailAddress" value="{$user->emailAddress|escape}"
  127. size="{#EMAIL_SIZE#}" maxlength="{#EMAIL_MAXLEN#}" />
  128. {include file="error_icon.tpl" field="emailAddress"}
  129. </td>
  130. </tr>
  131. <tr>
  132. <th>{$labels.th_locale}</th>
  133. <td>
  134. <select name="locale">
  135. {html_options options=$optLocale selected=$user->locale}
  136. </select>
  137. </td>
  138. </tr>
  139. </table>
  140. <div class="groupBtn">
  141. <input type="submit" value="{$labels.btn_save}" />
  142. </div>
  143. </form>
  144. <hr />
  145. <h2>{lang_get s="title_personal_passwd"}</h2>
  146. {if $external_password_mgmt eq 0}
  147. <form name="changePass" method="post" action="{$action_mgmt}"
  148. {if $tlCfg->demoMode}
  149. onsubmit="alert('{lang_get s="warn_demo"}'); return false;">
  150. {else}
  151. onsubmit="return checkPasswords('oldpassword','newpassword','newpassword_check');">
  152. {/if}
  153. <input type="hidden" name="doAction" value="changePassword" />
  154. <table class="common">
  155. <tr><th>{$labels.th_old_passwd}</th>
  156. <td><input type="password" name="oldpassword" id="oldpassword"
  157. size="{#PASSWD_SIZE#}" maxlength="{#PASSWD_SIZE#}" /></td></tr>
  158. <tr><th>{$labels.th_new_passwd}</th>
  159. <td><input type="password" name="newpassword" id="newpassword"
  160. size="{#PASSWD_SIZE#}" maxlength="{#PASSWD_SIZE#}" /></td></tr>
  161. <tr><th>{$labels.th_new_passwd_again}</th>
  162. <td><input type="password" name="newpassword_check" id="newpassword_check"
  163. size="{#PASSWD_SIZE#}" maxlength="{#PASSWD_SIZE#}" /></td></tr>
  164. </table>
  165. <div class="groupBtn">
  166. <input type="submit" value="{$labels.btn_change_passwd}" />
  167. </div>
  168. </form>
  169. {else}
  170. <p>{$labels.your_password_is_external}<p>
  171. {/if}
  172. {if $tlCfg->api->enabled}
  173. <hr />
  174. <h2>{lang_get s="title_api_interface"}</h2>
  175. <div>
  176. <form name="genApi" method="post" action="{$action_mgmt}">
  177. <input type="hidden" name="doAction" value="genAPIKey" />
  178. <p>{$labels.user_api_key} = {$user->userApiKey|escape}</p>
  179. <div class="groupBtn">
  180. <input type="submit" value="{$labels.btn_apikey_generate}" />
  181. </div>
  182. </form>
  183. </div>
  184. {/if}
  185. <hr />
  186. <h2>{$labels.audit_login_history}
  187. {if $mgt_view_events == "yes"}
  188. <img style="margin-left:5px;" class="clickable" src="{$smarty.const.TL_THEME_IMG_DIR}/question.gif" onclick="showEventHistoryFor('{$user->dbID}','users')" alt="{$labels.show_event_history}" title="{$labels.show_event_history}"/>
  189. </h2>
  190. {/if}
  191. <div>
  192. <h3>{$labels.audit_last_succesful_logins}</h3>
  193. {if $loginHistory->ok != ''}
  194. {foreach from=$loginHistory->ok item=event}
  195. <span>{localize_timestamp ts=$event->timestamp}</span>
  196. <span>{$event->description|escape}</span>
  197. <br/>
  198. {/foreach}
  199. {else}
  200. {$labels.never_logged}
  201. {/if}
  202. </div>
  203. {if $loginHistory->failed != ''}
  204. <div>
  205. <h3>{$labels.audit_last_failed_logins}</h3>
  206. {foreach from=$loginHistory->failed item=event}
  207. <span>{localize_timestamp ts=$event->timestamp}</span>
  208. <span>{$event->description|escape}</span>
  209. <br/>
  210. {/foreach}
  211. </div>
  212. {/if}
  213. </div>
  214. {if $update_title_bar == 1}
  215. {literal}
  216. <script type="text/javascript">
  217. parent.titlebar.location.reload();
  218. </script>
  219. {/literal}
  220. {/if}
  221. </body>
  222. </html>