<!--
  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}}
         {{if lt $length 5}}<ul>{{range .Symbols}}<li>{{.}}</li>{{end}}</ul>
         {{else}}<details><summary>{{len .Symbols}} affected symbols</summary><ul>{{range .Symbols}}<li>{{.}}</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}}
    </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}}