projects.html 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. {{ $ := .root }}
  2. {{ $page := .page }}
  3. <!-- Projects widget -->
  4. <div class="row">
  5. <div class="col-12 col-lg-4 section-heading">
  6. <h1>{{ with $page.Title }}{{ . | markdownify }}{{ end }}</h1>
  7. {{ with $page.Params.subtitle }}<p>{{ . | markdownify }}</p>{{ end }}
  8. </div>
  9. <div class="col-12 col-lg-8">
  10. {{ with $page.Content }}<p>{{ . | markdownify }}</p>{{ end }}
  11. {{ if $page.Params.filter }}
  12. {{ $filter_default := default (int $page.Params.filter_default) 0 }}
  13. {{/* Parse default filter tag from front matter in the form of either tag name or CSS class name. */}}
  14. {{ $default_filter_tag_raw := (index $page.Params.filter ($filter_default)).tag }}
  15. {{ $default_filter_tag := printf ".%s" (urlize $default_filter_tag_raw) }}
  16. {{ if or (eq (substr $default_filter_tag_raw 0 1) "*") (eq (substr $default_filter_tag_raw 0 1) ".") }}
  17. {{ $default_filter_tag = $default_filter_tag_raw }}
  18. {{ end }}
  19. <span class="d-none default-project-filter">{{ $default_filter_tag }}</span>
  20. {{/* Only show filter buttons if there are multiple filters. */}}
  21. {{ if gt (len $page.Params.filter) 1 }}
  22. <div class="project-toolbar">
  23. <div class="project-filters">
  24. <div class="btn-toolbar">
  25. <div class="btn-group flex-wrap">
  26. {{ range $idx, $item := $page.Params.filter }}
  27. {{/* Parse filter tag from front matter in the form of either tag name or CSS class name. */}}
  28. {{ if or (eq (substr .tag 0 1) "*") (eq (substr .tag 0 1) ".") }}
  29. {{ $.Scratch.Set "tag" .tag }}
  30. {{ else }}
  31. {{ $.Scratch.Set "tag" (printf ".%s" (urlize .tag)) }}
  32. {{ end }}
  33. <a href="#" data-filter="{{ $.Scratch.Get "tag" }}" class="btn btn-primary btn-lg{{ if eq $idx $filter_default }} active{{ end }}">{{ .name }}</a>
  34. {{ end }}
  35. </div>
  36. </div>
  37. </div>
  38. </div>
  39. {{ end }}
  40. {{ end }}
  41. {{ if eq $page.Params.view 0 }}
  42. <div class="row isotope projects-container js-layout-row">
  43. {{ range where $.Site.RegularPages "Type" ($page.Params.folder | default "project") }}
  44. <div class="col-lg-12 project-item isotope-item {{ delimit (apply .Params.tags "urlize" ".") " " }}" itemscope itemtype="http://schema.org/CreativeWork">
  45. <i class="far fa-copy pub-icon" aria-hidden="true"></i>
  46. <span class="project-title">
  47. {{ if .Content }}
  48. <a href="{{ .RelPermalink }}">
  49. {{ else }}
  50. {{ with .Params.external_link }}<a href="{{ . }}" target="_blank" rel="noopener">{{ end }}
  51. {{ end }}
  52. {{ .Title }}
  53. {{ if .Content }}</a>{{ else }}{{ with .Params.external_link }}</a>{{ end }}{{ end }}
  54. </span>
  55. {{ with .Params.summary }}<p class="project-summary">{{ . | markdownify }}</p>{{ end }}
  56. </div>
  57. {{ end }}
  58. </div>
  59. {{ else }}
  60. <div class="row isotope projects-container js-layout-masonry">
  61. {{ range $project := where $.Site.RegularPages "Type" ($page.Params.folder | default "project") }}
  62. {{ $.Scratch.Set "project_url" $project.RelPermalink }}
  63. {{ $.Scratch.Set "target" "" }}
  64. {{ if $project.Params.external_link }}
  65. {{ $.Scratch.Set "project_url" $project.Params.external_link }}
  66. {{ $.Scratch.Set "target" "target=\"_blank\" rel=\"noopener\"" }}
  67. {{ end }}
  68. {{ $resource := ($project.Resources.ByType "image").GetMatch "*featured*" }}
  69. {{ $anchor := $project.Params.image.focal_point | default "Smart" }}
  70. <div class="col-12 col-md-6 col-lg-4 project-item isotope-item {{ delimit (apply .Params.tags "urlize" ".") " " }}">
  71. <div class="card">
  72. {{ with $resource }}
  73. {{ $image := .Fill (printf "550x550 q90 %s" $anchor) }}
  74. <a href="{{ $.Scratch.Get "project_url" }}" {{ $.Scratch.Get "target" | safeHTMLAttr }} class="card-image hover-overlay"
  75. {{ $.Scratch.Get "target" | safeHTMLAttr }}>
  76. <img src="{{ $image.RelPermalink }}" alt="" class="img-responsive">
  77. </a>
  78. {{ end }}
  79. <div class="card-text">
  80. <h4><a href="{{ $.Scratch.Get "project_url" }}" {{ $.Scratch.Get "target" | safeHTMLAttr }}>{{ .Title }}</a></h4>
  81. <div class="card-desription">
  82. {{ with $project.Params.summary }}<p>{{ . | markdownify }}</p>{{ end }}
  83. </div>
  84. </div>
  85. </div>
  86. </div>
  87. {{ end }}
  88. </div>
  89. {{ end }}
  90. </div>
  91. </div>