contact.html 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. {{ $ := .root }}
  2. {{ $page := .page }}
  3. {{ $autolink := default true $page.Params.autolink }}
  4. <!-- Contact widget -->
  5. <div class="row contact-widget">
  6. <div class="col-12 col-lg-4 section-heading">
  7. <h1>{{ with $page.Title }}{{ . | markdownify }}{{ end }}</h1>
  8. {{ with $page.Params.subtitle }}<p>{{ . | markdownify }}</p>{{ end }}
  9. </div>
  10. <div class="col-12 col-lg-8">
  11. {{ with $page.Content }}<p>{{ . | markdownify }}</p>{{ end }}
  12. {{ if $page.Params.email_form }}
  13. {{ $post_action := "" }}
  14. {{ if eq $page.Params.email_form 1 }}
  15. {{ $post_action = "netlify" }}
  16. {{ else }}
  17. {{ if not site.Params.email }}
  18. {{ errorf "Please set an email address for the contact form using the `email` parameter in `config.toml`. Otherwise, set `email_form = 0` to disable the contact form." }}
  19. {{ end }}
  20. {{ $post_action = printf "action=\"https://formspree.io/%s\"" site.Params.email }}
  21. {{end}}
  22. <div class="mb-3">
  23. <form name="contact" method="POST" {{ $post_action | safeHTMLAttr }}>
  24. <div class="form-group form-inline">
  25. <label class="sr-only" for="inputName">{{ i18n "contact_name" }}</label>
  26. <input type="text" name="name" class="form-control w-100" id="inputName" placeholder="{{ i18n "contact_name" | default "Name" }}" required>
  27. </div>
  28. <div class="form-group form-inline">
  29. <label class="sr-only" for="inputEmail">{{ i18n "contact_email" }}</label>
  30. <input type="email" name="email" class="form-control w-100" id="inputEmail" placeholder="{{ i18n "contact_email" | default "Email" }}" required>
  31. </div>
  32. <div class="form-group">
  33. <label class="sr-only" for="inputMessage">{{ i18n "contact_message" }}</label>
  34. <textarea name="message" class="form-control" id="inputMessage" rows="5" placeholder="{{ i18n "contact_message" | default "Message" }}" required></textarea>
  35. </div>
  36. <button type="submit" class="btn btn-outline-primary px-3 py-2">{{ i18n "contact_send" | default "Send" }}</button>
  37. </form>
  38. </div>
  39. {{end}}
  40. <ul class="fa-ul" itemscope>
  41. {{ if and site.Params.email (not $page.Params.email_form) }}
  42. <li>
  43. <i class="fa-li fas fa-envelope fa-2x" aria-hidden="true"></i>
  44. <span id="person-email" itemprop="email">
  45. {{- if $autolink }}<a href="mailto:{{ site.Params.email }}">{{ site.Params.email }}</a>{{ else }}{{ site.Params.email }}{{ end -}}
  46. </span>
  47. </li>
  48. {{ end }}
  49. {{ with site.Params.phone }}
  50. <li>
  51. <i class="fa-li fas fa-phone fa-2x" aria-hidden="true"></i>
  52. <span id="person-telephone" itemprop="telephone">
  53. {{- if $autolink }}<a href="tel:{{ . }}">{{ . }}</a>{{ else }}{{ . }}{{ end -}}
  54. </span>
  55. </li>
  56. {{ end }}
  57. {{ with site.Params.address }}
  58. <li>
  59. <i class="fa-li fas fa-map-marker fa-2x" aria-hidden="true"></i>
  60. <span id="person-address" itemprop="address">{{ . | markdownify | emojify }}</span>
  61. </li>
  62. {{ end }}
  63. {{ with site.Params.office_hours }}
  64. <li>
  65. <i class="fa-li fas fa-clock fa-2x" aria-hidden="true"></i>
  66. <span>{{ . | markdownify | emojify }}</span>
  67. </li>
  68. {{ end }}
  69. {{ with site.Params.appointment_url }}
  70. <li>
  71. <i class="fa-li fas fa-calendar-check fa-2x" aria-hidden="true"></i>
  72. <a href="{{ . }}" target="_blank" rel="noopener">{{ i18n "book_appointment" | default "Book an appointment" }}</a>
  73. </li>
  74. {{ end }}
  75. {{/* Contact links. */}}
  76. {{ range site.Params.contact_links }}
  77. {{ $pack := or .icon_pack "fas" }}
  78. {{ $pack_prefix := $pack }}
  79. {{ if in (slice "fab" "fas" "far" "fal") $pack }}
  80. {{ $pack_prefix = "fa" }}
  81. {{ end }}
  82. {{ $link := .link }}
  83. {{ $scheme := (urls.Parse $link).Scheme }}
  84. {{ $target := "" }}
  85. {{ if not $scheme }}
  86. {{ $link = .link | relLangURL }}
  87. {{ else if in (slice "http" "https") $scheme }}
  88. {{ $target = "target=\"_blank\" rel=\"noopener\"" }}
  89. {{ end }}
  90. <li>
  91. <i class="fa-li {{ $pack }} {{ $pack_prefix }}-{{ .icon }} fa-2x" aria-hidden="true"></i>
  92. <a href="{{ $link | safeURL }}" {{ $target | safeHTMLAttr }}>{{.name|markdownify|emojify|safeHTML}}</a>
  93. </li>
  94. {{ end }}
  95. </ul>
  96. {{ if site.Params.map }}
  97. <div class="d-none">
  98. <input id="map-provider" value="{{ site.Params.map }}">
  99. <input id="map-lat" value="{{ site.Params.latitude }}">
  100. <input id="map-lng" value="{{ site.Params.longitude }}">
  101. <input id="map-dir" value="{{ site.Params.address }}">
  102. <input id="map-zoom" value="{{ site.Params.zoom | default "15" }}">
  103. <input id="map-api-key" value="{{ site.Params.map_api_key }}">
  104. </div>
  105. <div id="map"></div>
  106. {{ end }}
  107. </div>
  108. </div>