/Samples/outlook-set-signature/src/taskpane/Js/taskpane_render.js

https://github.com/OfficeDev/PnP-OfficeAddins · JavaScript · 193 lines · 160 code · 31 blank · 2 comment · 10 complexity · c8a055611e24cffb0dcd388674ddfa84 MD5 · raw file

  1. // Copyright (c) Microsoft Corporation.
  2. // Licensed under the MIT License.
  3. let _display_name;
  4. let _job_title;
  5. let _phone_number;
  6. let _email_id;
  7. let _greeting_text;
  8. let _preferred_pronoun;
  9. let _message;
  10. Office.initialize = function(reason)
  11. {
  12. on_initialization_complete();
  13. }
  14. function on_initialization_complete()
  15. {
  16. $(document).ready
  17. (
  18. function()
  19. {
  20. _output = $("textarea#output");
  21. _display_name = $("input#display_name");
  22. _email_id = $("input#email_id");
  23. _job_title = $("input#job_title");
  24. _phone_number = $("input#phone_number");
  25. _greeting_text = $("input#greeting_text");
  26. _preferred_pronoun = $("input#preferred_pronoun");
  27. _message = $("p#message");
  28. prepopulate_from_userprofile();
  29. load_saved_user_info();
  30. }
  31. );
  32. }
  33. function prepopulate_from_userprofile()
  34. {
  35. _display_name.val(Office.context.mailbox.userProfile.displayName);
  36. _email_id.val(Office.context.mailbox.userProfile.emailAddress);
  37. }
  38. function load_saved_user_info()
  39. {
  40. let user_info_str = localStorage.getItem('user_info');
  41. if (!user_info_str)
  42. {
  43. user_info_str = Office.context.roamingSettings.get('user_info');
  44. }
  45. if (user_info_str)
  46. {
  47. const user_info = JSON.parse(user_info_str);
  48. _display_name.val(user_info.name);
  49. _email_id.val(user_info.email);
  50. _job_title.val(user_info.job);
  51. _phone_number.val(user_info.phone);
  52. _greeting_text.val(user_info.greeting);
  53. let pronoun = user_info.pronoun;
  54. if (pronoun && pronoun.length >= 3)
  55. {
  56. _preferred_pronoun.val(pronoun.substring(1, pronoun.length - 1));
  57. }
  58. }
  59. }
  60. function display_message(msg)
  61. {
  62. _message.text(msg);
  63. }
  64. function clear_message()
  65. {
  66. _message.text("");
  67. }
  68. function is_not_valid_text(text)
  69. {
  70. return text.length <= 0;
  71. }
  72. function is_not_valid_email_address(email_address)
  73. {
  74. let email_address_regex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
  75. return is_not_valid_text(email_address) || !(email_address_regex.test(email_address));
  76. }
  77. function form_has_valid_data(name, email)
  78. {
  79. if (is_not_valid_text(name))
  80. {
  81. display_message("Please enter a valid name.");
  82. return false;
  83. }
  84. if (is_not_valid_email_address(email))
  85. {
  86. display_message("Please enter a valid email address.");
  87. return false;
  88. }
  89. return true;
  90. }
  91. function navigate_to_taskpane_assignsignature()
  92. {
  93. window.location.href = 'assignsignature.html';
  94. }
  95. function create_user_info()
  96. {
  97. let name = _display_name.val().trim();
  98. let email = _email_id.val().trim();
  99. clear_message();
  100. if (form_has_valid_data(name, email))
  101. {
  102. clear_message();
  103. let user_info = {};
  104. user_info.name = name;
  105. user_info.email = email;
  106. user_info.job = _job_title.val().trim();
  107. user_info.phone = _phone_number.val().trim();
  108. user_info.greeting = _greeting_text.val().trim();
  109. user_info.pronoun = _preferred_pronoun.val().trim();
  110. if (user_info.pronoun !== "")
  111. {
  112. user_info.pronoun = "(" + user_info.pronoun + ")";
  113. }
  114. console.log(user_info);
  115. localStorage.setItem('user_info', JSON.stringify(user_info));
  116. navigate_to_taskpane_assignsignature();
  117. }
  118. }
  119. function clear_all_fields()
  120. {
  121. _display_name.val("");
  122. _email_id.val("");
  123. _job_title.val("");
  124. _phone_number.val("");
  125. _greeting_text.val("");
  126. _preferred_pronoun.val("");
  127. }
  128. function clear_all_localstorage_data()
  129. {
  130. localStorage.removeItem('user_info');
  131. localStorage.removeItem('newMail');
  132. localStorage.removeItem('reply');
  133. localStorage.removeItem('forward');
  134. localStorage.removeItem('override_olk_signature');
  135. }
  136. function clear_roaming_settings()
  137. {
  138. Office.context.roamingSettings.remove('user_info');
  139. Office.context.roamingSettings.remove('newMail');
  140. Office.context.roamingSettings.remove('reply');
  141. Office.context.roamingSettings.remove('forward');
  142. Office.context.roamingSettings.remove('override_olk_signature');
  143. Office.context.roamingSettings.saveAsync
  144. (
  145. function (asyncResult)
  146. {
  147. console.log("clear_roaming_settings - " + JSON.stringify(asyncResult));
  148. let message = "All settings reset successfully! This add-in won't insert any signatures. You can close this pane now.";
  149. if (asyncResult.status === Office.AsyncResultStatus.Failed)
  150. {
  151. message = "Failed to reset. Please try again.";
  152. }
  153. display_message(message);
  154. }
  155. );
  156. }
  157. function reset_all_configuration()
  158. {
  159. clear_all_fields();
  160. clear_all_localstorage_data();
  161. clear_roaming_settings();
  162. }