You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

86 lines
4.1KB

  1. <% Flash().ShowErrorsIfPresent : Flash().ShowSuccessIfPresent %>
  2. <div class="d-flex justify-content-between align-items-center mb-3">
  3. <h1 class="h3 mb-0">Bulk log a contact</h1>
  4. </div>
  5. <form method="post" action="/bulk-log/preview" class="card shadow-sm" id="bulkForm">
  6. <div class="card-body">
  7. <input type="hidden" name="csrf" value="<%= H(csrf) %>" />
  8. <div class="mb-3">
  9. <label for="emails" class="form-label small mb-1">Email addresses</label>
  10. <textarea class="form-control" id="emails" name="emails" rows="4" required
  11. placeholder="jlkj@jkh.com;hjjkh@yoi.com"><%= H(emailsText) %></textarea>
  12. <div class="form-text">Separate addresses with semicolons, commas, spaces or new lines. Businesses with a matching email are updated; you review the matches before anything is saved.</div>
  13. </div>
  14. <div class="mb-3">
  15. <div class="btn-group" role="group" aria-label="How">
  16. <% Dim mth, oc
  17. For Each mth In Businesses_Methods() %>
  18. <input type="radio" class="btn-check" name="method" id="m_<%= mth(0) %>" value="<%= mth(0) %>" autocomplete="off"<% If mth(0) = method Then Response.Write " checked" %> />
  19. <label class="btn btn-outline-primary btn-sm" for="m_<%= mth(0) %>"><%= H(mth(1)) %></label>
  20. <% Next %>
  21. </div>
  22. </div>
  23. <div class="row g-2 mb-2">
  24. <div class="col-md-5">
  25. <label for="outcome" class="form-label small mb-1">Outcome</label>
  26. <select class="form-select form-select-sm" id="outcome" name="outcome">
  27. <option value="">&mdash;</option>
  28. <% For Each oc In Businesses_Outcomes()
  29. If oc(0) <> "remove" Then %>
  30. <option value="<%= oc(0) %>"<% If oc(0) = outcome Then Response.Write " selected" %>><%= H(oc(1)) %></option>
  31. <% End If
  32. Next %>
  33. </select>
  34. </div>
  35. <div class="col-6 col-md-3">
  36. <label for="contacted_at" class="form-label small mb-1">Date contacted</label>
  37. <input type="date" class="form-control form-control-sm" id="contacted_at" name="contacted_at" value="<%= H(contactedAt) %>" max="<%= Date_Iso(Date + 1) %>" required />
  38. </div>
  39. <div class="col-6 col-md-4">
  40. <label for="follow_up_date" class="form-label small mb-1">Contact again on</label>
  41. <input type="date" class="form-control form-control-sm" id="follow_up_date" name="follow_up_date" value="<%= H(followUp) %>" />
  42. </div>
  43. </div>
  44. <div class="mb-2 small">
  45. <span class="text-muted">Quick:</span>
  46. <button type="button" class="btn btn-link btn-sm p-0 me-2" data-days="3">3 days</button>
  47. <button type="button" class="btn btn-link btn-sm p-0 me-2" data-days="7">1 week</button>
  48. <button type="button" class="btn btn-link btn-sm p-0 me-2" data-days="14">2 weeks</button>
  49. <button type="button" class="btn btn-link btn-sm p-0 me-2" data-days="30">1 month</button>
  50. <button type="button" class="btn btn-link btn-sm p-0 text-secondary" data-days="0">clear</button>
  51. </div>
  52. <div class="mb-3">
  53. <label for="notes" class="form-label small mb-1">Notes (added to each business's history)</label>
  54. <textarea class="form-control form-control-sm" id="notes" name="notes" rows="3" maxlength="10000"><%= H(notes) %></textarea>
  55. </div>
  56. <button type="submit" class="btn btn-primary btn-sm"><i class="bi bi-search"></i> Find matches</button>
  57. </div>
  58. </form>
  59. <script>
  60. (function () {
  61. var contacted = document.getElementById('contacted_at');
  62. var followUp = document.getElementById('follow_up_date');
  63. function iso(d) {
  64. return d.getFullYear() + '-' + ('0' + (d.getMonth() + 1)).slice(-2) + '-' + ('0' + d.getDate()).slice(-2);
  65. }
  66. document.querySelectorAll('[data-days]').forEach(function (b) {
  67. b.addEventListener('click', function () {
  68. var days = parseInt(b.getAttribute('data-days'), 10);
  69. if (!days) { followUp.value = ''; return; }
  70. var base = contacted.value ? new Date(contacted.value + 'T00:00:00') : new Date();
  71. base.setDate(base.getDate() + days);
  72. followUp.value = iso(base);
  73. });
  74. });
  75. })();
  76. </script>

Powered by TurnKey Linux.