<!--
  Copyright 2021 The Go Authors. All rights reserved.
  Use of this source code is governed by a BSD-style
  license that can be found in the LICENSE file.
-->

{{define "main-styles"}}
  <link href="/static/frontend/vuln/entry/entry.min.css?version={{.AppVersionLabel}}" rel="stylesheet">
{{end}}

{{define "main-content"}}
  {{/* . is internal/frontend.VulnPage */}}
  <nav class="go-Breadcrumb" aria-label="Breadcrumb">
    <ol>
      <li>
        <a href="/vuln" data-gtmc="breadcrumb link">Vulnerability Database</a>
      </li>
      <li>
        <a href="/vuln/list" data-gtmc="breadcrumb link">All Reports</a>
      </li>
      <li>
        <a href="#" data-gtmc="breadcrumb link" aria-current="location">{{.Entry.ID}}</a>
      </li>
    </ol>
  </nav>
  <h1 class="Vuln-title">Vulnerability Report: {{.Entry.ID}}</h1>
  {{template "vuln-details" .Entry}}
  {{$numAdvs := subtract (len .AdvisoryLinks) 1}}
  {{with .AdvisoryLinks}}
    <p>
      For detailed information about this vulnerability, visit
      {{range $i, $v := . -}}
        {{- if gt $i 0}}
          {{- if not (eq $i $numAdvs)}},{{else}}{{if gt $i 1}},{{end}} or {{end -}}
        {{end}}
        <a href="{{$v.Href}}" target="_blank" rel="noopener">{{$v.Href}}</a>
      {{- end -}}.
    </p>
  {{end}}
  <div class="VulnEntry">
    {{template "affected" .AffectedPackages}}
    {{template "entry" .}}
  </div>
{{end}}

{{define "affected"}}
  <h2>Affected Packages</h2>
  <ul class="VulnEntryPackages VulnEntryPackages-container">
    <li class="VulnEntryPackages-item VulnEntryPackages-item-container">
      <div class="VulnEntryPackages-attr">Path</div>
      <div class="VulnEntryPackages-attr">Versions</div>
      <div class="VulnEntryPackages-attr">Symbols</div>
    </li>
    {{range .}}
    <li class="VulnEntryPackages-item VulnEntryPackages-item-container">
      <div class="VulnEntryPackages-attr" data-name="Path"><a href="/{{.PackagePath}}">{{.PackagePath}}</a></div>
      <div class="VulnEntryPackages-attr" data-name="Versions">{{if .Versions}}{{.Versions}}{{else}}all versions, no known fixed{{end}}</div>
      <div class="VulnEntryPackages-attr VulnEntryPackages-symbols" data-name="Symbols">
      {{if .Symbols}}{{ $length := len .Symbols}}
         {{ $vuln := . }}
         {{if lt $length 5}}<ul>{{range .Symbols}}<li><a href="/{{$vuln.PackagePath}}#{{.}}">{{.}}</a></li>{{end}}</ul>
         {{else}}<details><summary>{{len .Symbols}} affected symbols</summary>
         <ul class="VulnEntryPackages-detailsContent">{{range .Symbols}}<li><a href="/{{$vuln.PackagePath}}#{{.}}">{{.}}</a></li>{{end}}</ul></details>
         {{end}}
      {{else}}all symbols{{end}}
      </div>
    </li>
    {{end}}
  </ul>
{{end}}

{{define "entry"}}
  {{$e := .Entry}}
  {{if .AliasLinks}}
    <h2>Aliases</h2>
    <ul class="VulnEntry-aliases">
      {{range .AliasLinks}}<li>
        {{if .Href}}
          <a href="{{.Href}}" target="_blank" rel="noopener">{{.Body}}</a>
        {{else}}
          {{.Body}}
        {{end}}
      </li>{{end}}
    </ul>
  {{end}}
  {{if $e.References}}
    <h2>References</h2>
    <ul class="VulnEntry-referenceList">
      {{range $e.References}}<li><a href="{{.URL}}" target="_blank" rel="noopener">{{.URL}}</a></li>{{end}}
      <li>
        <a target="_blank" rel="noopener" href="https://vuln.go.dev/ID/{{.Entry.ID}}.json">
          https://vuln.go.dev/ID/{{.Entry.ID}}.json
        </a>
      </li>
    </ul>
  {{end}}
  {{with $e.Credits}}
    <h2>Credits</h2>
    <ul>
      <li>
        {{range $i, $v := .}}{{if gt $i 1}}, {{end}}{{$v.Name}}{{end}}
      </li>
    </ul>
  {{end}}
  <h2>Feedback</h2>
  <div>
    See anything missing or incorrect?
    <a target="_blank" rel="noopener" href="https://github.com/golang/vulndb/issues/new?assignees=&labels=Needs+Triage%2CSuggested+Edit&template=suggest_edit.yaml&title=x%2Fvulndb%3A+suggestion+regarding+{{$e.ID}}&report={{$e.ID}}">
      Suggest an edit to this report.
    </a>
  </div>
{{end}}