contact.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. {% extends "layout.html" %}
  2. {% block title %}{% if contact.first_name.len() > 0 %}{{contact.first_name}} {{contact.last_name}}{%else%}Create
  3. Contact{% endif %}{% endblock %}
  4. {% block description %}{{contact.description}}{% endblock %}
  5. {% block head %}
  6. <style>
  7. </style>
  8. {% endblock %}
  9. {% block content %}
  10. <div class="container">
  11. <div class="row justified">
  12. <div class="backed col-sm-12 col-md-12 col-lg-12">
  13. <h1>{{contact.first_name}} {{contact.last_name}}</h1>
  14. {% if contact.key.to_string() != "00000000-0000-0000-0000-000000000000" %}
  15. <a class="button center" href="/note/add/Contact/{{contact.key}}">➕ Add Note</a>
  16. <a class="button center" href="/file/add/Contact/{{contact.key}}">➕ Attach File</a>
  17. <button id="delete" class="delete_button center">🗑️ Delete</button>
  18. {% endif %}
  19. <div class="row justified">
  20. <div class="content">
  21. <div class="tabbed">
  22. <input type="radio" id="tab1" name="css-tabs" checked>
  23. <input type="radio" id="tab3" name="css-tabs">
  24. <ul class="tabs">
  25. <li class="tab"><label for="tab1">Details</label></li>
  26. <li class="tab"><label for="tab3">Documents</label></li>
  27. </ul>
  28. <div class="tab-content">
  29. <form id="add_contact_form">
  30. <div>
  31. <div class="row">
  32. <div class="col-sm-12 col-md-8 col-lg-5">
  33. <label for="first_name">First</label>
  34. <input type="text" name="first_name" id="first_name" placeholder="First Name"
  35. value="{{contact.first_name}}" />
  36. </div>
  37. <div class="col-sm-12 col-md-4 col-lg-2">
  38. <label for="middle_initial">Initital</label>
  39. <input type="text" name="middle_initial" id="middle_initial" placeholder="Initial"
  40. value="{{contact.middle_initial}}" />
  41. </div>
  42. <div class="col-sm-12 col-md-12 col-lg-5">
  43. <label for="last_name">Last</label>
  44. <input type="text" name="last_name" id="last_name" placeholder="Last Name"
  45. value="{{contact.last_name}}" />
  46. </div>
  47. </div>
  48. </div>
  49. <div>
  50. <label for="description">Description</label>
  51. <textarea name="description" id="description" placeholder="Description"
  52. value="{{contact.description}}">{{contact.description}}</textarea>
  53. </div>
  54. <div>
  55. <label for="position">Position</label>
  56. <input type="text" name="position" id="position" placeholder="Position"
  57. value="{{contact.position}}" />
  58. </div>
  59. <div>
  60. <label for="email">Email</label>
  61. <input type="text" name="email" id="email" placeholder="Email" value="{{contact.email}}" />
  62. </div>
  63. <div>
  64. <label for="secondary_email">Secondary Email</label>
  65. <input type="text" name="secondary_email" id="secondary_email" placeholder="Email"
  66. value="{{contact.secondary_email}}" />
  67. </div>
  68. <div>
  69. <label for="phone">Phone</label>
  70. <input type="text" name="phone" id="phone" placeholder="Phone" value="{{contact.phone}}" />
  71. </div>
  72. <div>
  73. <label for="secondary_phone">Secondary Phone</label>
  74. <input type="text" name="secondary_phone" id="secondary_phone" placeholder="Phone"
  75. value="{{contact.secondary_phone}}" />
  76. </div>
  77. <div>
  78. <label for="matrix_user_id">Matrix User ID</label>
  79. <input type="text" name="matrix_user_id" id="matrix_user_id" placeholder="matrix_user_id"
  80. value="{{contact.matrix_user_id}}" />
  81. </div>
  82. <div>
  83. <label for="web_url">Web URL</label>
  84. <input type="text" name="web_url" id="web_url" placeholder="Web URL" value="{{contact.web_url}}" />
  85. </div>
  86. <div>
  87. <label for="avatar_url">avatar_url</label>
  88. <input type="text" name="avatar_url" id="avatar_url" placeholder="avatar_url"
  89. value="{{contact.avatar_url}}" />
  90. </div>
  91. <div>
  92. <label for="address_primary">Address</label>
  93. <input type="text" name="address_primary" id="address_primary" placeholder="Address"
  94. value="{{contact.address_primary}}" />
  95. </div>
  96. <div>
  97. <label for="address_unit">Unit</label>
  98. <input type="text" name="address_unit" id="address_unit" placeholder="Unit"
  99. value="{{contact.address_unit}}" />
  100. </div>
  101. <div>
  102. <label for="city">City</label>
  103. <input type="text" name="city" id="city" placeholder="City" value="{{contact.city}}" />
  104. </div>
  105. <div>
  106. <label for="state">State</label>
  107. <input type="text" name="state" id="state" placeholder="State" value="{{contact.state}}" />
  108. </div>
  109. <div>
  110. <label for="zip_code">Zip</label>
  111. <input type="text" name="zip_code" id="zip_code" placeholder="Zipcode" value="{{contact.zip_code}}" />
  112. </div>
  113. <div>
  114. <label for="country">Country</label>
  115. <input type="text" name="country" id="country" placeholder="Country" value="{{contact.country}}" />
  116. </div>
  117. <div>
  118. <input type="submit" class="add_button"
  119. value="{% if contact.first_name.len() == 0%}Create contact!{%else%}Update contact{% endif %}" />
  120. </div>
  121. </form>
  122. </div>
  123. <div class="tab-content">
  124. <div class="row justified ">
  125. <div class="col-sm-12 col-md-6 col-lg-6">
  126. {% if notes.len() > 0 %}
  127. <h3>Notes & Docs</h3>
  128. {% for note in notes %}
  129. <div class="white-backed bump col-sm-12 col-md-4 col-lg-3">
  130. <a href="/note/{{note.key}}">
  131. <p><b>{{note.title}}</b></p>
  132. </a>
  133. </div>
  134. {% endfor %}
  135. {%else%}
  136. <div class="white-backed">
  137. <div class="col-sm-12 col-md-12 col-lg-12">
  138. <h3>Add Your First Note</h3>
  139. <h4>Create a note at the project level, project onboarding, project style guides and any project
  140. notes that you want organized under this project</h4>
  141. </div>
  142. <div class="col-sm-12 col-md-12 col-lg-12">
  143. <a class="button" href="/note/add/Contact/{{contact.key}}">Add Note</a>
  144. </div>
  145. </div>
  146. {% endif %}
  147. </div>
  148. <div class="col-sm-12 col-md-6 col-lg-6">
  149. {% if files.len() > 0 %}
  150. <h3>Files</h3>
  151. {% for file in files %}
  152. <div class="white-backed bump col-sm-12 col-md-4 col-lg-3">
  153. <a href="/file/{{file.key}}">
  154. <p><b>{{file.name}}</b></p>
  155. <hr />
  156. <p>{{file.description}}</p>
  157. </a>
  158. </div>
  159. {% endfor %}
  160. {%else%}
  161. <div class="white-backed">
  162. <div class="col-sm-12 col-md-12 col-lg-12">
  163. <h3>Attach Your First File</h3>
  164. <h4>Attach a file to be visible for the project. Easily share and access files you store here.
  165. </h4>
  166. </div>
  167. <div class="col-sm-12 col-md-12 col-lg-12">
  168. <a class="button" href="/file/add/Contact/{{contact.key}}">Add File</a>
  169. </div>
  170. </div>
  171. {% endif %}
  172. </div>
  173. </div>
  174. </div>
  175. </div>
  176. </div>
  177. </div>
  178. </div>
  179. </div>
  180. <script>
  181. window.addEventListener('load', function () {
  182. {% if contact.key.to_string() != "00000000-0000-0000-0000-000000000000" %}
  183. send_delete("delete", "/contact/{{contact.key}}", (deleted, res) => {
  184. if (deleted) {
  185. window.location.href = `/entity/{{contact.entity_key}}`
  186. }
  187. })
  188. {% endif %}
  189. post_form("add_contact_form", "/contact", data => {
  190. const key = "{{contact.key}}"
  191. data.key = key == "" ? "00000000-0000-0000-0000-000000000000" : key
  192. data.organization_key = "{{user.organization_key}}"
  193. data.external_accounting_id = data.external_accounting_id || "{{contact.external_accounting_id}}"
  194. data.owner_key = "{{user.key}}"
  195. data.entity_key = "{{contact.entity_key}}"
  196. data.first_name = data.first_name || "";
  197. data.middle_initial = data.middle_initial || "";
  198. data.last_name = data.last_name || "";
  199. data.description = data.description || "";
  200. data.position = data.position || "";
  201. data.email = data.email || "";
  202. data.phone = data.phone || "";
  203. data.secondary_email = data.secondary_email || "";
  204. data.secondary_phone = data.secondary_phone || "";
  205. data.matrix_user_id = data.matrix_user_id || "";
  206. data.web_url = data.web_url || "";
  207. data.avatar_url = data.avatar_url || "";
  208. data.social_urls = data.social_urls || [];
  209. data.address_primary = data.address_primary || "";
  210. data.address_unit = data.address_unit || "";
  211. data.city = data.city || "";
  212. data.state = data.state || "";
  213. data.zip_code = data.zip_code || "";
  214. data.country = data.country || "";
  215. data.created = data.created || 0;
  216. data.updated = data.updated || 0;
  217. data.created = data.created || 0;
  218. data.updated = data.updated || 0;
  219. return data;
  220. }, (response_text) => {
  221. const object = JSON.parse(response_text);
  222. window.location.href = `/contact/${object.key}`
  223. });
  224. })
  225. </script>
  226. {% endblock %}