account.html 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <html>
  2. <head>
  3. <title>User Account</title>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0 user-scalable=no">
  6. <link rel="stylesheet" href="../../script/semantic/semantic.min.css">
  7. <script type="text/javascript" src="../../script/jquery.min.js"></script>
  8. <script type="text/javascript" src="../../script/semantic/semantic.min.js"></script>
  9. </head>
  10. <body>
  11. <div class="ui container">
  12. <div class="ui basic segment">
  13. <div class="ui header">
  14. <i class="user circle icon"></i>
  15. <div class="content">
  16. My Account
  17. <div class="sub header">Manage your account information and password</div>
  18. </div>
  19. </div>
  20. </div>
  21. <div class="ui stackable grid">
  22. <div class="six wide column">
  23. <div class="ui card">
  24. <div class="image">
  25. <img id="profileIcon" src="../users/img/noprofileicon.png">
  26. </div>
  27. <div class="content">
  28. <a id="username" class="header"></a>
  29. <div class="meta">
  30. <span id="usergroup" class="date"></span>
  31. </div>
  32. </div>
  33. </div>
  34. </div>
  35. <div class="ten wide column">
  36. <h4 class="ui header">
  37. Change Profile Picture
  38. </h4>
  39. <button class="ui button" onclick="handleProfilePic();">Upload</button>
  40. <div class="ui divider"></div>
  41. <h4 class="ui header">
  42. Change Password
  43. </h4>
  44. <form class="ui form" onsubmit="handleSubmit(event);">
  45. <div class="field">
  46. <label>Old Password</label>
  47. <input id="opw" type="password" placeholder="Old Password">
  48. </div>
  49. <div class="field">
  50. <label>New password</label>
  51. <input id="npw" type="password" placeholder="New Password">
  52. </div>
  53. <div class="field">
  54. <label>Confirm New Password</label>
  55. <input id="cpw" type="password" placeholder="Confirm New Password">
  56. </div>
  57. <button class="ui button" type="submit">Update</button>
  58. </form>
  59. <div id="msgbox" class="ui message" style="display:none;">
  60. <i class="close icon"></i>
  61. <div class="header">
  62. Welcome back!
  63. </div>
  64. <p class="message">This is a special notification which you can dismiss if you're bored with it.</p>
  65. </div>
  66. </div>
  67. </div>
  68. </div>
  69. <script>
  70. //Initiate user information
  71. $.get("../../system/users/userinfo",function(data){
  72. if (data.error !== undefined){
  73. //Not logged in?
  74. }else{
  75. if (data.Icondata == ""){
  76. $("#profileIcon").attr('src', "../users/img/noprofileicon.png");
  77. }else{
  78. $("#profileIcon").attr('src', data.Icondata);
  79. }
  80. $("#username").text(data.Username);
  81. console.log(data.Usergroup);
  82. $("#usergroup").text(data.Usergroup.join("/"));
  83. }
  84. });
  85. //Handle change password form submit
  86. function handleSubmit(event){
  87. event.preventDefault();
  88. //Check if new password and confirm matches
  89. var oldPassword = $("#opw").val();
  90. var newPassword = $("#npw").val();
  91. var confirmPassword = $("#cpw").val();
  92. if (newPassword != confirmPassword){
  93. $("#cpw").parent().addClass("error");
  94. return;
  95. }else{
  96. $("#cpw").parent().removeClass("error");
  97. }
  98. //OK to proceed.
  99. $.ajax({
  100. url: "../../system/users/userinfo",
  101. method: "POST",
  102. data: {opr: "changepw", oldpw: oldPassword, newpw: newPassword},
  103. success: function(data){
  104. if (data.error != undefined){
  105. msgbox("Update Failed", data.error);
  106. }else{
  107. //Updated suceed.
  108. msgbox("Update Succeed", "Your password has been updated.");
  109. }
  110. }
  111. });
  112. }
  113. function handleProfilePic(){
  114. ao_module_selectFiles(function(files){
  115. if (FileReader && files && files.length) {
  116. var fr = new FileReader();
  117. fr.onload = function () {
  118. //Update the database for the new image
  119. var fullImageDatapath = fr.result;
  120. $.ajax({
  121. url: "../../system/users/userinfo",
  122. method: "POST",
  123. data: {opr: "changeprofilepic", picdata: fullImageDatapath},
  124. success: function(data){
  125. if (data.error !== undefined){
  126. console.log(data.error);
  127. }else{
  128. //Load the image into the src div
  129. document.getElementById("profileIcon").src = fullImageDatapath;
  130. }
  131. }
  132. })
  133. }
  134. fr.readAsDataURL(files[0]);
  135. }
  136. },"file", ".png",false);
  137. }
  138. function msgbox(header, message){
  139. $("#msgbox").fadeIn('fast');
  140. $("#msgbox").find(".header").text(header);
  141. $("#msgbox").find(".message").text(message);
  142. }
  143. //Hook close msgbox event
  144. $('.message .close')
  145. .on('click', function() {
  146. $(this).parent().fadeOut('fast');
  147. });
  148. </script>
  149. </body>
  150. </html>