profile.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. <style>
  2. .profile-avatar-container {
  3. position:relative;
  4. width:100px;
  5. }
  6. .profile-avatar-container .profile-user-img{
  7. width:100px;
  8. height:100px;
  9. }
  10. .profile-avatar-container .profile-avatar-text {
  11. display:none;
  12. }
  13. .profile-avatar-container:hover .profile-avatar-text {
  14. display:block;
  15. position:absolute;
  16. height:100px;
  17. width:100px;
  18. background:#444;
  19. opacity: .6;
  20. color: #fff;
  21. top:0;
  22. left:0;
  23. line-height: 100px;
  24. text-align: center;
  25. }
  26. .profile-avatar-container button{
  27. position:absolute;
  28. top:0;left:0;width:100px;height:100px;opacity: 0;
  29. }
  30. </style>
  31. <div id="content-container" class="container">
  32. <div class="row">
  33. <div class="col-md-9">
  34. <div class="panel panel-default">
  35. <div class="panel-body">
  36. <h2 class="page-header">{:__('Profile')}</h2>
  37. <form id="profile-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="{:url('api/user/profile')}">
  38. {:token()}
  39. <input type="hidden" name="avatar" id="c-avatar" value="{:$user->getData('avatar')}" />
  40. <div class="form-group">
  41. <label class="control-label col-xs-12 col-sm-2"></label>
  42. <div class="col-xs-12 col-sm-4">
  43. <div class="profile-avatar-container">
  44. <img class="profile-user-img img-responsive img-circle" src="{$user.avatar|htmlentities|cdnurl}" alt="">
  45. <div class="profile-avatar-text img-circle">{:__('Click to edit')}</div>
  46. <button type="button" id="faupload-avatar" class="faupload" data-mimetype="png,jpg,jpeg,gif" data-input-id="c-avatar"><i class="fa fa-upload"></i> {:__('Upload')}</button>
  47. </div>
  48. </div>
  49. </div>
  50. <div class="form-group">
  51. <label class="control-label col-xs-12 col-sm-2">{:__('Username')}:</label>
  52. <div class="col-xs-12 col-sm-4">
  53. <input type="text" class="form-control" id="username" name="username" value="{$user.username|htmlentities}" data-rule="required;username;remote({:url('api/validate/check_username_available')}, id={$user.id})" placeholder="">
  54. </div>
  55. </div>
  56. <div class="form-group">
  57. <label class="control-label col-xs-12 col-sm-2">{:__('Nickname')}:</label>
  58. <div class="col-xs-12 col-sm-4">
  59. <input type="text" class="form-control" id="nickname" name="nickname" value="{$user.nickname|htmlentities}" data-rule="required;remote({:url('api/validate/check_nickname_available')}, id={$user.id})" placeholder="">
  60. </div>
  61. </div>
  62. <div class="form-group">
  63. <label for="c-bio" class="control-label col-xs-12 col-sm-2">{:__('Intro')}:</label>
  64. <div class="col-xs-12 col-sm-8">
  65. <input id="c-bio" data-rule="" data-tip="一句话介绍一下你自己" class="form-control" name="bio" type="text" value="{$user.bio|htmlentities}">
  66. </div>
  67. </div>
  68. <!-- <div class="form-group">-->
  69. <!-- <label for="c-email" class="control-label col-xs-12 col-sm-2">{:__('Email')}:</label>-->
  70. <!-- <div class="col-xs-12 col-sm-4">-->
  71. <!-- <div class="input-group">-->
  72. <!-- <input type="text" class="form-control" id="c-email" name="email" value="{$user.email|htmlentities}" disabled placeholder="">-->
  73. <!-- <span class="input-group-btn" style="padding:0;border:none;">-->
  74. <!-- <a href="javascript:;" class="btn btn-info btn-change" data-type="email">{:__('Change')}</a>-->
  75. <!-- </span>-->
  76. <!-- </div>-->
  77. <!-- </div>-->
  78. <!-- </div>-->
  79. <!-- <div class="form-group">-->
  80. <!-- <label for="c-mobile" class="control-label col-xs-12 col-sm-2">{:__('Mobile')}:</label>-->
  81. <!-- <div class="col-xs-12 col-sm-4">-->
  82. <!-- <div class="input-group">-->
  83. <!-- <input type="text" class="form-control" id="c-mobile" name="mobile" value="{$user.mobile|htmlentities}" disabled placeholder="">-->
  84. <!-- <span class="input-group-btn" style="padding:0;border:none;">-->
  85. <!-- <a href="javascript:;" class="btn btn-info btn-change" data-type="mobile">{:__('Change')}</a>-->
  86. <!-- </span>-->
  87. <!-- </div>-->
  88. <!-- </div>-->
  89. <!-- </div>-->
  90. <div class="form-group normal-footer">
  91. <label class="control-label col-xs-12 col-sm-2"></label>
  92. <div class="col-xs-12 col-sm-8">
  93. <button type="submit" class="btn btn-primary btn-embossed disabled">{:__('Ok')}</button>
  94. <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
  95. </div>
  96. </div>
  97. </form>
  98. </div>
  99. </div>
  100. </div>
  101. </div>
  102. </div>
  103. <script type="text/html" id="emailtpl">
  104. <form id="email-form" class="form-horizontal form-layer" method="POST" action="{:url('api/user/changeemail')}">
  105. <div class="form-body">
  106. <input type="hidden" name="action" value="changeemail" />
  107. <div class="form-group">
  108. <label class="control-label col-xs-12 col-sm-3">{:__('New Email')}:</label>
  109. <div class="col-xs-12 col-sm-8">
  110. <input type="text" class="form-control" id="email" name="email" value="" data-rule="required;email;remote({:url('api/validate/check_email_available')}, event=changeemail, id={$user.id})" placeholder="{:__('New email')}">
  111. <span class="msg-box"></span>
  112. </div>
  113. </div>
  114. <div class="form-group">
  115. <label class="control-label col-xs-12 col-sm-3">{:__('Captcha')}:</label>
  116. <div class="col-xs-12 col-sm-8">
  117. <div class="input-group">
  118. <input type="text" name="captcha" id="email-captcha" class="form-control" data-rule="required;length({$Think.config.captcha.length});digits;remote({:url('api/validate/check_ems_correct')}, event=changeemail, email:#email)" />
  119. <span class="input-group-btn" style="padding:0;border:none;">
  120. <a href="javascript:;" class="btn btn-info btn-captcha" data-url="{:url('api/ems/send')}" data-type="email" data-event="changeemail">获取验证码</a>
  121. </span>
  122. </div>
  123. <span class="msg-box"></span>
  124. </div>
  125. </div>
  126. </div>
  127. <div class="form-footer">
  128. <div class="form-group" style="margin-bottom:0;">
  129. <div class="col-xs-12 col-sm-8 col-sm-offset-3">
  130. <button type="submit" class="btn btn-md btn-primary">{:__('Submit')}</button>
  131. </div>
  132. </div>
  133. </div>
  134. </form>
  135. </script>
  136. <script type="text/html" id="mobiletpl">
  137. <form id="mobile-form" class="form-horizontal form-layer" method="POST" action="{:url('api/user/changemobile')}">
  138. <div class="form-body">
  139. <input type="hidden" name="action" value="changemobile" />
  140. <div class="form-group">
  141. <label for="c-mobile" class="control-label col-xs-12 col-sm-3">{:__('New mobile')}:</label>
  142. <div class="col-xs-12 col-sm-8">
  143. <input type="text" class="form-control" id="mobile" name="mobile" value="" data-rule="required;mobile;remote({:url('api/validate/check_mobile_available')}, event=changemobile, id={$user.id})" placeholder="{:__('New mobile')}">
  144. <span class="msg-box"></span>
  145. </div>
  146. </div>
  147. <div class="form-group">
  148. <label for="mobile-captcha" class="control-label col-xs-12 col-sm-3">{:__('Captcha')}:</label>
  149. <div class="col-xs-12 col-sm-8">
  150. <div class="input-group">
  151. <input type="text" name="captcha" id="mobile-captcha" class="form-control" data-rule="required;length({$Think.config.captcha.length});digits;remote({:url('api/validate/check_sms_correct')}, event=changemobile, mobile:#mobile)" />
  152. <span class="input-group-btn" style="padding:0;border:none;">
  153. <a href="javascript:;" class="btn btn-info btn-captcha" data-url="{:url('api/sms/send')}" data-type="mobile" data-event="changemobile">获取验证码</a>
  154. </span>
  155. </div>
  156. <span class="msg-box"></span>
  157. </div>
  158. </div>
  159. </div>
  160. <div class="form-footer">
  161. <div class="form-group" style="margin-bottom:0;">
  162. <div class="col-xs-12 col-sm-8 col-sm-offset-3">
  163. <button type="submit" class="btn btn-md btn-primary">{:__('Submit')}</button>
  164. </div>
  165. </div>
  166. </div>
  167. </form>
  168. </script>
  169. <style>
  170. .form-layer {height:100%;min-height:150px;min-width:300px;}
  171. .form-body {
  172. width:100%;
  173. overflow:auto;
  174. top:0;
  175. position:absolute;
  176. z-index:10;
  177. bottom:50px;
  178. padding:15px;
  179. }
  180. .form-layer .form-footer {
  181. height:50px;
  182. line-height:50px;
  183. background-color: #ecf0f1;
  184. width:100%;
  185. position:absolute;
  186. z-index:200;
  187. bottom:0;
  188. margin:0;
  189. }
  190. .form-footer .form-group{
  191. margin-left:0;
  192. margin-right:0;
  193. }
  194. </style>